Mugetsu
Mugetsu2y ago

Meta - unable to create default meta

Trying to follow https://trpc.io/docs/server/metadata#default-meta-chaining-and-shallow-merging I set the type of the meta add it to the builder and want to set default but seems there is no typing for the meta in the create to set the default. Am I missing something ?
"@trpc/client": "10.16.0",
"@trpc/react-query": "10.16.0",
"@trpc/server": "10.16.0",
"@trpc/client": "10.16.0",
"@trpc/react-query": "10.16.0",
"@trpc/server": "10.16.0",
type CreateContextOptions = {
req: express.Request
res: express.Response
currentSchema: any
}

type MetaOptions = {
roles: string[]
}

export const createInnerTRPCContext = async (opts: CreateContextOptions) => ({
req: opts.req,
res: opts.res,
currentSchema: opts.currentSchema,
})

export const createTRPCContext = async (
opts: trpcExpress.CreateExpressContextOptions,
) => {
const { req, res } = opts
const currentSchema =
req.locationSchemas?.find(({ id }) => id === req.schemaId) || {}

return createInnerTRPCContext({
req,
res,
currentSchema,
})
}

const t = initTRPC
.context<typeof createTRPCContext>()
.meta<MetaOptions>()
.create({
/// defaultMeta <------------------------- MISSING TYPING
transformer: superjson,
errorFormatter({ shape, ctx }) {
const { data, ...rest } = shape

return {
...rest,
data: {
...data,
traceId: ctx?.req?.traceId,
schemaId: ctx?.req?.schemaId,
},
}
},
})
type CreateContextOptions = {
req: express.Request
res: express.Response
currentSchema: any
}

type MetaOptions = {
roles: string[]
}

export const createInnerTRPCContext = async (opts: CreateContextOptions) => ({
req: opts.req,
res: opts.res,
currentSchema: opts.currentSchema,
})

export const createTRPCContext = async (
opts: trpcExpress.CreateExpressContextOptions,
) => {
const { req, res } = opts
const currentSchema =
req.locationSchemas?.find(({ id }) => id === req.schemaId) || {}

return createInnerTRPCContext({
req,
res,
currentSchema,
})
}

const t = initTRPC
.context<typeof createTRPCContext>()
.meta<MetaOptions>()
.create({
/// defaultMeta <------------------------- MISSING TYPING
transformer: superjson,
errorFormatter({ shape, ctx }) {
const { data, ...rest } = shape

return {
...rest,
data: {
...data,
traceId: ctx?.req?.traceId,
schemaId: ctx?.req?.schemaId,
},
}
},
})
11 Replies
Nick
Nick2y ago
Have you reloaded your language server since upgrading? the defaultMeta key should be there whether you set .meta<>() or not, so this is a weird one unless you just need to reload
Mugetsu
MugetsuOP2y ago
Yeah, I've restarted TS, Invalidated all cache and restarted IDE. Doesn't seem to pick it up I can't even find any definition in source code about defaultMeta
Nick
Nick2y ago
In the source code in node modules, what’s the package.json version?
Mugetsu
MugetsuOP2y ago
Mugetsu
MugetsuOP2y ago
10.16.0 And yeah if I even define it it seems not working meta is undefined
{
type: 'query',
path: 'locations.searchLocations',
rawInput: {
search: '',
limit: 10,
offset: 0,
'filter:type': undefined,
'filter:storeFormat': undefined,
'filter:tradingStatus': undefined,
'filter:region': undefined
},
meta: undefined,
input: undefined
}
-----------------------END-----------------------
{
type: 'query',
path: 'locations.searchLocations',
rawInput: {
search: '',
limit: 10,
offset: 0,
'filter:type': undefined,
'filter:storeFormat': undefined,
'filter:tradingStatus': undefined,
'filter:region': undefined
},
meta: undefined,
input: undefined
}
-----------------------END-----------------------
Nick
Nick2y ago
Oh you know what I don’t think we released that yet
Mugetsu
MugetsuOP2y ago
Aaaa I seee 😄
Nick
Nick2y ago
Let me ping Alex
Mugetsu
MugetsuOP2y ago
sure no worries
Nick
Nick2y ago
Thanks for flagging it, I think there was an internal issue after the release last week so probably this got forgotten Looks like 10.17 is out now 🙂
Mugetsu
MugetsuOP2y ago
Sweet. Will chceck in a moment Nice. Working as expected now. Thanks !