Mugetsu
Mugetsu15mo 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
Nick15mo 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
Mugetsu15mo 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
Nick15mo ago
In the source code in node modules, what’s the package.json version?
Mugetsu
Mugetsu15mo ago
Mugetsu
Mugetsu15mo 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
Nick15mo ago
Oh you know what I don’t think we released that yet
Mugetsu
Mugetsu15mo ago
Aaaa I seee 😄
Nick
Nick15mo ago
Let me ping Alex
Mugetsu
Mugetsu15mo ago
sure no worries
Nick
Nick15mo 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
Mugetsu15mo ago
Sweet. Will chceck in a moment Nice. Working as expected now. Thanks !