[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-trpc-adapter-fastify":3,"mdc--yz7kb0-key":40,"related-org-trpc-adapter-fastify":3569,"related-repo-trpc-adapter-fastify":3726},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":35,"sourceUrl":38,"mdContent":39},"adapter-fastify","mount tRPC as a Fastify plugin","Mount tRPC as a Fastify plugin with fastifyTRPCPlugin from @trpc\u002Fserver\u002Fadapters\u002Ffastify. Configure prefix, trpcOptions (router, createContext, onError). Enable WebSocket subscriptions with useWSS and @fastify\u002Fwebsocket. Set routerOptions.maxParamLength for batch requests. Requires Fastify v5+. FastifyTRPCPluginOptions for type-safe onError. CreateFastifyContextOptions provides req, res.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"trpc","tRPC","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftrpc.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"Backend","backend","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Fastify","fastify",{"name":21,"slug":22,"type":15},"API Development","api-development",40424,"https:\u002F\u002Fgithub.com\u002Ftrpc\u002Ftrpc","2026-07-18T05:46:53.746621",null,1636,[29,30,31,32,33,34],"api","next","nextjs","prisma","react","typescript",{"repoUrl":24,"stars":23,"forks":27,"topics":36,"description":37},[29,30,31,32,33,34],"🧙‍♀️  Move Fast and Break Nothing. End-to-end typesafe APIs made easy. ","https:\u002F\u002Fgithub.com\u002Ftrpc\u002Ftrpc\u002Ftree\u002FHEAD\u002Fpackages\u002Fserver\u002Fskills\u002Fadapter-fastify","---\nname: adapter-fastify\ndescription: >\n  Mount tRPC as a Fastify plugin with fastifyTRPCPlugin from\n  @trpc\u002Fserver\u002Fadapters\u002Ffastify. Configure prefix, trpcOptions (router,\n  createContext, onError). Enable WebSocket subscriptions with useWSS and\n  @fastify\u002Fwebsocket. Set routerOptions.maxParamLength for batch requests.\n  Requires Fastify v5+. FastifyTRPCPluginOptions for type-safe onError.\n  CreateFastifyContextOptions provides req, res.\ntype: core\nlibrary: trpc\nlibrary_version: '11.16.0'\nrequires:\n  - server-setup\nsources:\n  - www\u002Fdocs\u002Fserver\u002Fadapters\u002Ffastify.md\n  - examples\u002Ffastify-server\u002F\n---\n\n# tRPC — Adapter: Fastify\n\n## Setup\n\n```ts\n\u002F\u002F server.ts\nimport { initTRPC } from '@trpc\u002Fserver';\nimport {\n  fastifyTRPCPlugin,\n  FastifyTRPCPluginOptions,\n} from '@trpc\u002Fserver\u002Fadapters\u002Ffastify';\nimport type { CreateFastifyContextOptions } from '@trpc\u002Fserver\u002Fadapters\u002Ffastify';\nimport fastify from 'fastify';\nimport { z } from 'zod';\n\nfunction createContext({ req, res }: CreateFastifyContextOptions) {\n  return { req, res };\n}\ntype Context = Awaited\u003CReturnType\u003Ctypeof createContext>>;\n\nconst t = initTRPC.context\u003CContext>().create();\n\nconst appRouter = t.router({\n  greet: t.procedure\n    .input(z.object({ name: z.string() }))\n    .query(({ input }) => ({ greeting: `Hello, ${input.name}!` })),\n});\n\nexport type AppRouter = typeof appRouter;\n\nconst server = fastify({\n  routerOptions: {\n    maxParamLength: 5000,\n  },\n});\n\nserver.register(fastifyTRPCPlugin, {\n  prefix: '\u002Ftrpc',\n  trpcOptions: {\n    router: appRouter,\n    createContext,\n    onError({ path, error }) {\n      console.error(`Error in tRPC handler on path '${path}':`, error);\n    },\n  } satisfies FastifyTRPCPluginOptions\u003CAppRouter>['trpcOptions'],\n});\n\n(async () => {\n  try {\n    await server.listen({ port: 3000 });\n    console.log('Listening on http:\u002F\u002Flocalhost:3000');\n  } catch (err) {\n    server.log.error(err);\n    process.exit(1);\n  }\n})();\n```\n\n## Core Patterns\n\n### WebSocket subscriptions with @fastify\u002Fwebsocket\n\n```ts\nimport ws from '@fastify\u002Fwebsocket';\nimport {\n  fastifyTRPCPlugin,\n  FastifyTRPCPluginOptions,\n} from '@trpc\u002Fserver\u002Fadapters\u002Ffastify';\nimport fastify from 'fastify';\nimport { createContext } from '.\u002Fcontext';\nimport { appRouter, type AppRouter } from '.\u002Frouter';\n\nconst server = fastify({\n  routerOptions: { maxParamLength: 5000 },\n});\n\n\u002F\u002F Register @fastify\u002Fwebsocket BEFORE the tRPC plugin\nserver.register(ws);\n\nserver.register(fastifyTRPCPlugin, {\n  prefix: '\u002Ftrpc',\n  useWSS: true,\n  trpcOptions: {\n    router: appRouter,\n    createContext,\n    keepAlive: {\n      enabled: true,\n      pingMs: 30000,\n      pongWaitMs: 5000,\n    },\n  } satisfies FastifyTRPCPluginOptions\u003CAppRouter>['trpcOptions'],\n});\n\nserver.listen({ port: 3000 });\n```\n\nInstall: `npm install @fastify\u002Fwebsocket` (minimum version 3.11.0)\n\n### Type-safe onError with satisfies\n\n```ts\nserver.register(fastifyTRPCPlugin, {\n  prefix: '\u002Ftrpc',\n  trpcOptions: {\n    router: appRouter,\n    createContext,\n    onError({ path, error, type, input }) {\n      console.error(`[${type}] ${path}:`, error.message);\n    },\n  } satisfies FastifyTRPCPluginOptions\u003CAppRouter>['trpcOptions'],\n});\n```\n\nDue to Fastify plugin type inference limitations, use `satisfies FastifyTRPCPluginOptions\u003CAppRouter>['trpcOptions']` to get correct types on `onError` and other callbacks.\n\n### Limiting batch size with maxBatchSize\n\n```ts\nserver.register(fastifyTRPCPlugin, {\n  prefix: '\u002Ftrpc',\n  trpcOptions: {\n    router: appRouter,\n    createContext,\n    maxBatchSize: 10,\n  } satisfies FastifyTRPCPluginOptions\u003CAppRouter>['trpcOptions'],\n});\n```\n\nRequests batching more than `maxBatchSize` operations are rejected with a `400 Bad Request` error. Set `maxItems` on your client's `httpBatchLink` to the same value to avoid exceeding the limit.\n\n## Common Mistakes\n\n### HIGH Registering @fastify\u002Fwebsocket after tRPC plugin\n\nWrong:\n\n```ts\nserver.register(fastifyTRPCPlugin, {\n  useWSS: true,\n  trpcOptions: { router: appRouter, createContext },\n});\nserver.register(ws); \u002F\u002F too late!\n```\n\nCorrect:\n\n```ts\nserver.register(ws); \u002F\u002F register FIRST\nserver.register(fastifyTRPCPlugin, {\n  useWSS: true,\n  trpcOptions: { router: appRouter, createContext },\n});\n```\n\nThe WebSocket plugin must be registered before the tRPC plugin. Reverse order causes WebSocket routes to not be recognized.\n\nSource: www\u002Fdocs\u002Fserver\u002Fadapters\u002Ffastify.md\n\n### HIGH Missing maxParamLength for batch requests\n\nWrong:\n\n```ts\nconst server = fastify();\n```\n\nCorrect:\n\n```ts\nconst server = fastify({\n  routerOptions: { maxParamLength: 5000 },\n});\n```\n\nFastify defaults to `maxParamLength: 100`. Batch requests from `httpBatchLink` encode multiple procedure names in the URL path parameter, which easily exceeds 100 characters and returns a 404.\n\nSource: www\u002Fdocs\u002Fserver\u002Fadapters\u002Ffastify.md\n\n### CRITICAL Using Fastify v4 with tRPC v11\n\nWrong:\n\n```json\n{ \"dependencies\": { \"fastify\": \"^4.0.0\" } }\n```\n\nCorrect:\n\n```json\n{ \"dependencies\": { \"fastify\": \"^5.0.0\" } }\n```\n\ntRPC v11 requires Fastify v5+. Fastify v4 may return empty responses without errors due to incompatible response handling.\n\nSource: www\u002Fdocs\u002Fserver\u002Fadapters\u002Ffastify.md\n\n## See Also\n\n- **server-setup** -- `initTRPC.create()`, router\u002Fprocedure definition, context\n- **subscriptions** -- async generator subscriptions, `tracked()`, `keepAlive`\n- **adapter-standalone** -- simpler adapter when Fastify features are not needed\n- Fastify docs: https:\u002F\u002Ffastify.dev\u002Fdocs\u002Flatest\u002F\n",{"data":41,"body":49},{"name":4,"description":6,"type":42,"library":8,"library_version":43,"requires":44,"sources":46},"core","11.16.0",[45],"server-setup",[47,48],"www\u002Fdocs\u002Fserver\u002Fadapters\u002Ffastify.md","examples\u002Ffastify-server\u002F",{"type":50,"children":51},"root",[52,61,68,1577,1583,1590,2266,2280,2286,2601,2622,2628,2821,2858,2864,2870,2875,3014,3019,3154,3159,3164,3170,3174,3208,3212,3292,3312,3316,3322,3326,3403,3407,3478,3483,3487,3493,3563],{"type":53,"tag":54,"props":55,"children":57},"element","h1",{"id":56},"trpc-adapter-fastify",[58],{"type":59,"value":60},"text","tRPC — Adapter: Fastify",{"type":53,"tag":62,"props":63,"children":65},"h2",{"id":64},"setup",[66],{"type":59,"value":67},"Setup",{"type":53,"tag":69,"props":70,"children":75},"pre",{"className":71,"code":72,"language":73,"meta":74,"style":74},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F server.ts\nimport { initTRPC } from '@trpc\u002Fserver';\nimport {\n  fastifyTRPCPlugin,\n  FastifyTRPCPluginOptions,\n} from '@trpc\u002Fserver\u002Fadapters\u002Ffastify';\nimport type { CreateFastifyContextOptions } from '@trpc\u002Fserver\u002Fadapters\u002Ffastify';\nimport fastify from 'fastify';\nimport { z } from 'zod';\n\nfunction createContext({ req, res }: CreateFastifyContextOptions) {\n  return { req, res };\n}\ntype Context = Awaited\u003CReturnType\u003Ctypeof createContext>>;\n\nconst t = initTRPC.context\u003CContext>().create();\n\nconst appRouter = t.router({\n  greet: t.procedure\n    .input(z.object({ name: z.string() }))\n    .query(({ input }) => ({ greeting: `Hello, ${input.name}!` })),\n});\n\nexport type AppRouter = typeof appRouter;\n\nconst server = fastify({\n  routerOptions: {\n    maxParamLength: 5000,\n  },\n});\n\nserver.register(fastifyTRPCPlugin, {\n  prefix: '\u002Ftrpc',\n  trpcOptions: {\n    router: appRouter,\n    createContext,\n    onError({ path, error }) {\n      console.error(`Error in tRPC handler on path '${path}':`, error);\n    },\n  } satisfies FastifyTRPCPluginOptions\u003CAppRouter>['trpcOptions'],\n});\n\n(async () => {\n  try {\n    await server.listen({ port: 3000 });\n    console.log('Listening on http:\u002F\u002Flocalhost:3000');\n  } catch (err) {\n    server.log.error(err);\n    process.exit(1);\n  }\n})();\n","ts","",[76],{"type":53,"tag":77,"props":78,"children":79},"code",{"__ignoreMap":74},[80,92,145,158,172,185,215,261,295,337,347,403,433,442,490,498,567,575,616,644,717,826,842,850,886,894,924,941,964,973,989,997,1028,1058,1075,1096,1109,1144,1213,1222,1281,1297,1305,1331,1344,1401,1444,1475,1516,1551,1560],{"type":53,"tag":81,"props":82,"children":85},"span",{"class":83,"line":84},"line",1,[86],{"type":53,"tag":81,"props":87,"children":89},{"style":88},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[90],{"type":59,"value":91},"\u002F\u002F server.ts\n",{"type":53,"tag":81,"props":93,"children":95},{"class":83,"line":94},2,[96,102,108,114,119,124,129,135,140],{"type":53,"tag":81,"props":97,"children":99},{"style":98},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[100],{"type":59,"value":101},"import",{"type":53,"tag":81,"props":103,"children":105},{"style":104},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[106],{"type":59,"value":107}," {",{"type":53,"tag":81,"props":109,"children":111},{"style":110},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[112],{"type":59,"value":113}," initTRPC",{"type":53,"tag":81,"props":115,"children":116},{"style":104},[117],{"type":59,"value":118}," }",{"type":53,"tag":81,"props":120,"children":121},{"style":98},[122],{"type":59,"value":123}," from",{"type":53,"tag":81,"props":125,"children":126},{"style":104},[127],{"type":59,"value":128}," '",{"type":53,"tag":81,"props":130,"children":132},{"style":131},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[133],{"type":59,"value":134},"@trpc\u002Fserver",{"type":53,"tag":81,"props":136,"children":137},{"style":104},[138],{"type":59,"value":139},"'",{"type":53,"tag":81,"props":141,"children":142},{"style":104},[143],{"type":59,"value":144},";\n",{"type":53,"tag":81,"props":146,"children":148},{"class":83,"line":147},3,[149,153],{"type":53,"tag":81,"props":150,"children":151},{"style":98},[152],{"type":59,"value":101},{"type":53,"tag":81,"props":154,"children":155},{"style":104},[156],{"type":59,"value":157}," {\n",{"type":53,"tag":81,"props":159,"children":161},{"class":83,"line":160},4,[162,167],{"type":53,"tag":81,"props":163,"children":164},{"style":110},[165],{"type":59,"value":166},"  fastifyTRPCPlugin",{"type":53,"tag":81,"props":168,"children":169},{"style":104},[170],{"type":59,"value":171},",\n",{"type":53,"tag":81,"props":173,"children":175},{"class":83,"line":174},5,[176,181],{"type":53,"tag":81,"props":177,"children":178},{"style":110},[179],{"type":59,"value":180},"  FastifyTRPCPluginOptions",{"type":53,"tag":81,"props":182,"children":183},{"style":104},[184],{"type":59,"value":171},{"type":53,"tag":81,"props":186,"children":188},{"class":83,"line":187},6,[189,194,198,202,207,211],{"type":53,"tag":81,"props":190,"children":191},{"style":104},[192],{"type":59,"value":193},"}",{"type":53,"tag":81,"props":195,"children":196},{"style":98},[197],{"type":59,"value":123},{"type":53,"tag":81,"props":199,"children":200},{"style":104},[201],{"type":59,"value":128},{"type":53,"tag":81,"props":203,"children":204},{"style":131},[205],{"type":59,"value":206},"@trpc\u002Fserver\u002Fadapters\u002Ffastify",{"type":53,"tag":81,"props":208,"children":209},{"style":104},[210],{"type":59,"value":139},{"type":53,"tag":81,"props":212,"children":213},{"style":104},[214],{"type":59,"value":144},{"type":53,"tag":81,"props":216,"children":218},{"class":83,"line":217},7,[219,223,228,232,237,241,245,249,253,257],{"type":53,"tag":81,"props":220,"children":221},{"style":98},[222],{"type":59,"value":101},{"type":53,"tag":81,"props":224,"children":225},{"style":98},[226],{"type":59,"value":227}," type",{"type":53,"tag":81,"props":229,"children":230},{"style":104},[231],{"type":59,"value":107},{"type":53,"tag":81,"props":233,"children":234},{"style":110},[235],{"type":59,"value":236}," CreateFastifyContextOptions",{"type":53,"tag":81,"props":238,"children":239},{"style":104},[240],{"type":59,"value":118},{"type":53,"tag":81,"props":242,"children":243},{"style":98},[244],{"type":59,"value":123},{"type":53,"tag":81,"props":246,"children":247},{"style":104},[248],{"type":59,"value":128},{"type":53,"tag":81,"props":250,"children":251},{"style":131},[252],{"type":59,"value":206},{"type":53,"tag":81,"props":254,"children":255},{"style":104},[256],{"type":59,"value":139},{"type":53,"tag":81,"props":258,"children":259},{"style":104},[260],{"type":59,"value":144},{"type":53,"tag":81,"props":262,"children":264},{"class":83,"line":263},8,[265,269,274,279,283,287,291],{"type":53,"tag":81,"props":266,"children":267},{"style":98},[268],{"type":59,"value":101},{"type":53,"tag":81,"props":270,"children":271},{"style":110},[272],{"type":59,"value":273}," fastify ",{"type":53,"tag":81,"props":275,"children":276},{"style":98},[277],{"type":59,"value":278},"from",{"type":53,"tag":81,"props":280,"children":281},{"style":104},[282],{"type":59,"value":128},{"type":53,"tag":81,"props":284,"children":285},{"style":131},[286],{"type":59,"value":19},{"type":53,"tag":81,"props":288,"children":289},{"style":104},[290],{"type":59,"value":139},{"type":53,"tag":81,"props":292,"children":293},{"style":104},[294],{"type":59,"value":144},{"type":53,"tag":81,"props":296,"children":298},{"class":83,"line":297},9,[299,303,307,312,316,320,324,329,333],{"type":53,"tag":81,"props":300,"children":301},{"style":98},[302],{"type":59,"value":101},{"type":53,"tag":81,"props":304,"children":305},{"style":104},[306],{"type":59,"value":107},{"type":53,"tag":81,"props":308,"children":309},{"style":110},[310],{"type":59,"value":311}," z",{"type":53,"tag":81,"props":313,"children":314},{"style":104},[315],{"type":59,"value":118},{"type":53,"tag":81,"props":317,"children":318},{"style":98},[319],{"type":59,"value":123},{"type":53,"tag":81,"props":321,"children":322},{"style":104},[323],{"type":59,"value":128},{"type":53,"tag":81,"props":325,"children":326},{"style":131},[327],{"type":59,"value":328},"zod",{"type":53,"tag":81,"props":330,"children":331},{"style":104},[332],{"type":59,"value":139},{"type":53,"tag":81,"props":334,"children":335},{"style":104},[336],{"type":59,"value":144},{"type":53,"tag":81,"props":338,"children":340},{"class":83,"line":339},10,[341],{"type":53,"tag":81,"props":342,"children":344},{"emptyLinePlaceholder":343},true,[345],{"type":59,"value":346},"\n",{"type":53,"tag":81,"props":348,"children":350},{"class":83,"line":349},11,[351,357,363,368,374,379,384,389,394,399],{"type":53,"tag":81,"props":352,"children":354},{"style":353},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[355],{"type":59,"value":356},"function",{"type":53,"tag":81,"props":358,"children":360},{"style":359},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[361],{"type":59,"value":362}," createContext",{"type":53,"tag":81,"props":364,"children":365},{"style":104},[366],{"type":59,"value":367},"({",{"type":53,"tag":81,"props":369,"children":371},{"style":370},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[372],{"type":59,"value":373}," req",{"type":53,"tag":81,"props":375,"children":376},{"style":104},[377],{"type":59,"value":378},",",{"type":53,"tag":81,"props":380,"children":381},{"style":370},[382],{"type":59,"value":383}," res",{"type":53,"tag":81,"props":385,"children":386},{"style":104},[387],{"type":59,"value":388}," }:",{"type":53,"tag":81,"props":390,"children":392},{"style":391},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[393],{"type":59,"value":236},{"type":53,"tag":81,"props":395,"children":396},{"style":104},[397],{"type":59,"value":398},")",{"type":53,"tag":81,"props":400,"children":401},{"style":104},[402],{"type":59,"value":157},{"type":53,"tag":81,"props":404,"children":406},{"class":83,"line":405},12,[407,412,416,420,424,428],{"type":53,"tag":81,"props":408,"children":409},{"style":98},[410],{"type":59,"value":411},"  return",{"type":53,"tag":81,"props":413,"children":414},{"style":104},[415],{"type":59,"value":107},{"type":53,"tag":81,"props":417,"children":418},{"style":110},[419],{"type":59,"value":373},{"type":53,"tag":81,"props":421,"children":422},{"style":104},[423],{"type":59,"value":378},{"type":53,"tag":81,"props":425,"children":426},{"style":110},[427],{"type":59,"value":383},{"type":53,"tag":81,"props":429,"children":430},{"style":104},[431],{"type":59,"value":432}," };\n",{"type":53,"tag":81,"props":434,"children":436},{"class":83,"line":435},13,[437],{"type":53,"tag":81,"props":438,"children":439},{"style":104},[440],{"type":59,"value":441},"}\n",{"type":53,"tag":81,"props":443,"children":445},{"class":83,"line":444},14,[446,451,456,461,466,471,476,481,485],{"type":53,"tag":81,"props":447,"children":448},{"style":353},[449],{"type":59,"value":450},"type",{"type":53,"tag":81,"props":452,"children":453},{"style":391},[454],{"type":59,"value":455}," Context",{"type":53,"tag":81,"props":457,"children":458},{"style":104},[459],{"type":59,"value":460}," =",{"type":53,"tag":81,"props":462,"children":463},{"style":391},[464],{"type":59,"value":465}," Awaited",{"type":53,"tag":81,"props":467,"children":468},{"style":104},[469],{"type":59,"value":470},"\u003C",{"type":53,"tag":81,"props":472,"children":473},{"style":391},[474],{"type":59,"value":475},"ReturnType",{"type":53,"tag":81,"props":477,"children":478},{"style":104},[479],{"type":59,"value":480},"\u003Ctypeof",{"type":53,"tag":81,"props":482,"children":483},{"style":110},[484],{"type":59,"value":362},{"type":53,"tag":81,"props":486,"children":487},{"style":104},[488],{"type":59,"value":489},">>;\n",{"type":53,"tag":81,"props":491,"children":493},{"class":83,"line":492},15,[494],{"type":53,"tag":81,"props":495,"children":496},{"emptyLinePlaceholder":343},[497],{"type":59,"value":346},{"type":53,"tag":81,"props":499,"children":501},{"class":83,"line":500},16,[502,507,512,517,521,526,531,535,540,545,550,554,559,563],{"type":53,"tag":81,"props":503,"children":504},{"style":353},[505],{"type":59,"value":506},"const",{"type":53,"tag":81,"props":508,"children":509},{"style":110},[510],{"type":59,"value":511}," t ",{"type":53,"tag":81,"props":513,"children":514},{"style":104},[515],{"type":59,"value":516},"=",{"type":53,"tag":81,"props":518,"children":519},{"style":110},[520],{"type":59,"value":113},{"type":53,"tag":81,"props":522,"children":523},{"style":104},[524],{"type":59,"value":525},".",{"type":53,"tag":81,"props":527,"children":528},{"style":359},[529],{"type":59,"value":530},"context",{"type":53,"tag":81,"props":532,"children":533},{"style":104},[534],{"type":59,"value":470},{"type":53,"tag":81,"props":536,"children":537},{"style":391},[538],{"type":59,"value":539},"Context",{"type":53,"tag":81,"props":541,"children":542},{"style":104},[543],{"type":59,"value":544},">",{"type":53,"tag":81,"props":546,"children":547},{"style":110},[548],{"type":59,"value":549},"()",{"type":53,"tag":81,"props":551,"children":552},{"style":104},[553],{"type":59,"value":525},{"type":53,"tag":81,"props":555,"children":556},{"style":359},[557],{"type":59,"value":558},"create",{"type":53,"tag":81,"props":560,"children":561},{"style":110},[562],{"type":59,"value":549},{"type":53,"tag":81,"props":564,"children":565},{"style":104},[566],{"type":59,"value":144},{"type":53,"tag":81,"props":568,"children":570},{"class":83,"line":569},17,[571],{"type":53,"tag":81,"props":572,"children":573},{"emptyLinePlaceholder":343},[574],{"type":59,"value":346},{"type":53,"tag":81,"props":576,"children":578},{"class":83,"line":577},18,[579,583,588,592,597,601,606,611],{"type":53,"tag":81,"props":580,"children":581},{"style":353},[582],{"type":59,"value":506},{"type":53,"tag":81,"props":584,"children":585},{"style":110},[586],{"type":59,"value":587}," appRouter ",{"type":53,"tag":81,"props":589,"children":590},{"style":104},[591],{"type":59,"value":516},{"type":53,"tag":81,"props":593,"children":594},{"style":110},[595],{"type":59,"value":596}," t",{"type":53,"tag":81,"props":598,"children":599},{"style":104},[600],{"type":59,"value":525},{"type":53,"tag":81,"props":602,"children":603},{"style":359},[604],{"type":59,"value":605},"router",{"type":53,"tag":81,"props":607,"children":608},{"style":110},[609],{"type":59,"value":610},"(",{"type":53,"tag":81,"props":612,"children":613},{"style":104},[614],{"type":59,"value":615},"{\n",{"type":53,"tag":81,"props":617,"children":619},{"class":83,"line":618},19,[620,626,631,635,639],{"type":53,"tag":81,"props":621,"children":623},{"style":622},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[624],{"type":59,"value":625},"  greet",{"type":53,"tag":81,"props":627,"children":628},{"style":104},[629],{"type":59,"value":630},":",{"type":53,"tag":81,"props":632,"children":633},{"style":110},[634],{"type":59,"value":596},{"type":53,"tag":81,"props":636,"children":637},{"style":104},[638],{"type":59,"value":525},{"type":53,"tag":81,"props":640,"children":641},{"style":110},[642],{"type":59,"value":643},"procedure\n",{"type":53,"tag":81,"props":645,"children":647},{"class":83,"line":646},20,[648,653,658,663,667,672,676,681,686,690,694,698,703,708,712],{"type":53,"tag":81,"props":649,"children":650},{"style":104},[651],{"type":59,"value":652},"    .",{"type":53,"tag":81,"props":654,"children":655},{"style":359},[656],{"type":59,"value":657},"input",{"type":53,"tag":81,"props":659,"children":660},{"style":110},[661],{"type":59,"value":662},"(z",{"type":53,"tag":81,"props":664,"children":665},{"style":104},[666],{"type":59,"value":525},{"type":53,"tag":81,"props":668,"children":669},{"style":359},[670],{"type":59,"value":671},"object",{"type":53,"tag":81,"props":673,"children":674},{"style":110},[675],{"type":59,"value":610},{"type":53,"tag":81,"props":677,"children":678},{"style":104},[679],{"type":59,"value":680},"{",{"type":53,"tag":81,"props":682,"children":683},{"style":622},[684],{"type":59,"value":685}," name",{"type":53,"tag":81,"props":687,"children":688},{"style":104},[689],{"type":59,"value":630},{"type":53,"tag":81,"props":691,"children":692},{"style":110},[693],{"type":59,"value":311},{"type":53,"tag":81,"props":695,"children":696},{"style":104},[697],{"type":59,"value":525},{"type":53,"tag":81,"props":699,"children":700},{"style":359},[701],{"type":59,"value":702},"string",{"type":53,"tag":81,"props":704,"children":705},{"style":110},[706],{"type":59,"value":707},"() ",{"type":53,"tag":81,"props":709,"children":710},{"style":104},[711],{"type":59,"value":193},{"type":53,"tag":81,"props":713,"children":714},{"style":110},[715],{"type":59,"value":716},"))\n",{"type":53,"tag":81,"props":718,"children":720},{"class":83,"line":719},21,[721,725,730,734,738,743,748,753,758,762,767,771,776,781,786,790,794,799,803,808,813,817,822],{"type":53,"tag":81,"props":722,"children":723},{"style":104},[724],{"type":59,"value":652},{"type":53,"tag":81,"props":726,"children":727},{"style":359},[728],{"type":59,"value":729},"query",{"type":53,"tag":81,"props":731,"children":732},{"style":110},[733],{"type":59,"value":610},{"type":53,"tag":81,"props":735,"children":736},{"style":104},[737],{"type":59,"value":367},{"type":53,"tag":81,"props":739,"children":740},{"style":370},[741],{"type":59,"value":742}," input",{"type":53,"tag":81,"props":744,"children":745},{"style":104},[746],{"type":59,"value":747}," })",{"type":53,"tag":81,"props":749,"children":750},{"style":353},[751],{"type":59,"value":752}," =>",{"type":53,"tag":81,"props":754,"children":755},{"style":110},[756],{"type":59,"value":757}," (",{"type":53,"tag":81,"props":759,"children":760},{"style":104},[761],{"type":59,"value":680},{"type":53,"tag":81,"props":763,"children":764},{"style":622},[765],{"type":59,"value":766}," greeting",{"type":53,"tag":81,"props":768,"children":769},{"style":104},[770],{"type":59,"value":630},{"type":53,"tag":81,"props":772,"children":773},{"style":104},[774],{"type":59,"value":775}," `",{"type":53,"tag":81,"props":777,"children":778},{"style":131},[779],{"type":59,"value":780},"Hello, ",{"type":53,"tag":81,"props":782,"children":783},{"style":104},[784],{"type":59,"value":785},"${",{"type":53,"tag":81,"props":787,"children":788},{"style":110},[789],{"type":59,"value":657},{"type":53,"tag":81,"props":791,"children":792},{"style":104},[793],{"type":59,"value":525},{"type":53,"tag":81,"props":795,"children":796},{"style":110},[797],{"type":59,"value":798},"name",{"type":53,"tag":81,"props":800,"children":801},{"style":104},[802],{"type":59,"value":193},{"type":53,"tag":81,"props":804,"children":805},{"style":131},[806],{"type":59,"value":807},"!",{"type":53,"tag":81,"props":809,"children":810},{"style":104},[811],{"type":59,"value":812},"`",{"type":53,"tag":81,"props":814,"children":815},{"style":104},[816],{"type":59,"value":118},{"type":53,"tag":81,"props":818,"children":819},{"style":110},[820],{"type":59,"value":821},"))",{"type":53,"tag":81,"props":823,"children":824},{"style":104},[825],{"type":59,"value":171},{"type":53,"tag":81,"props":827,"children":829},{"class":83,"line":828},22,[830,834,838],{"type":53,"tag":81,"props":831,"children":832},{"style":104},[833],{"type":59,"value":193},{"type":53,"tag":81,"props":835,"children":836},{"style":110},[837],{"type":59,"value":398},{"type":53,"tag":81,"props":839,"children":840},{"style":104},[841],{"type":59,"value":144},{"type":53,"tag":81,"props":843,"children":845},{"class":83,"line":844},23,[846],{"type":53,"tag":81,"props":847,"children":848},{"emptyLinePlaceholder":343},[849],{"type":59,"value":346},{"type":53,"tag":81,"props":851,"children":853},{"class":83,"line":852},24,[854,859,863,868,872,877,882],{"type":53,"tag":81,"props":855,"children":856},{"style":98},[857],{"type":59,"value":858},"export",{"type":53,"tag":81,"props":860,"children":861},{"style":353},[862],{"type":59,"value":227},{"type":53,"tag":81,"props":864,"children":865},{"style":391},[866],{"type":59,"value":867}," AppRouter",{"type":53,"tag":81,"props":869,"children":870},{"style":104},[871],{"type":59,"value":460},{"type":53,"tag":81,"props":873,"children":874},{"style":104},[875],{"type":59,"value":876}," typeof",{"type":53,"tag":81,"props":878,"children":879},{"style":110},[880],{"type":59,"value":881}," appRouter",{"type":53,"tag":81,"props":883,"children":884},{"style":104},[885],{"type":59,"value":144},{"type":53,"tag":81,"props":887,"children":889},{"class":83,"line":888},25,[890],{"type":53,"tag":81,"props":891,"children":892},{"emptyLinePlaceholder":343},[893],{"type":59,"value":346},{"type":53,"tag":81,"props":895,"children":897},{"class":83,"line":896},26,[898,902,907,911,916,920],{"type":53,"tag":81,"props":899,"children":900},{"style":353},[901],{"type":59,"value":506},{"type":53,"tag":81,"props":903,"children":904},{"style":110},[905],{"type":59,"value":906}," server ",{"type":53,"tag":81,"props":908,"children":909},{"style":104},[910],{"type":59,"value":516},{"type":53,"tag":81,"props":912,"children":913},{"style":359},[914],{"type":59,"value":915}," fastify",{"type":53,"tag":81,"props":917,"children":918},{"style":110},[919],{"type":59,"value":610},{"type":53,"tag":81,"props":921,"children":922},{"style":104},[923],{"type":59,"value":615},{"type":53,"tag":81,"props":925,"children":927},{"class":83,"line":926},27,[928,933,937],{"type":53,"tag":81,"props":929,"children":930},{"style":622},[931],{"type":59,"value":932},"  routerOptions",{"type":53,"tag":81,"props":934,"children":935},{"style":104},[936],{"type":59,"value":630},{"type":53,"tag":81,"props":938,"children":939},{"style":104},[940],{"type":59,"value":157},{"type":53,"tag":81,"props":942,"children":944},{"class":83,"line":943},28,[945,950,954,960],{"type":53,"tag":81,"props":946,"children":947},{"style":622},[948],{"type":59,"value":949},"    maxParamLength",{"type":53,"tag":81,"props":951,"children":952},{"style":104},[953],{"type":59,"value":630},{"type":53,"tag":81,"props":955,"children":957},{"style":956},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[958],{"type":59,"value":959}," 5000",{"type":53,"tag":81,"props":961,"children":962},{"style":104},[963],{"type":59,"value":171},{"type":53,"tag":81,"props":965,"children":967},{"class":83,"line":966},29,[968],{"type":53,"tag":81,"props":969,"children":970},{"style":104},[971],{"type":59,"value":972},"  },\n",{"type":53,"tag":81,"props":974,"children":976},{"class":83,"line":975},30,[977,981,985],{"type":53,"tag":81,"props":978,"children":979},{"style":104},[980],{"type":59,"value":193},{"type":53,"tag":81,"props":982,"children":983},{"style":110},[984],{"type":59,"value":398},{"type":53,"tag":81,"props":986,"children":987},{"style":104},[988],{"type":59,"value":144},{"type":53,"tag":81,"props":990,"children":992},{"class":83,"line":991},31,[993],{"type":53,"tag":81,"props":994,"children":995},{"emptyLinePlaceholder":343},[996],{"type":59,"value":346},{"type":53,"tag":81,"props":998,"children":1000},{"class":83,"line":999},32,[1001,1006,1010,1015,1020,1024],{"type":53,"tag":81,"props":1002,"children":1003},{"style":110},[1004],{"type":59,"value":1005},"server",{"type":53,"tag":81,"props":1007,"children":1008},{"style":104},[1009],{"type":59,"value":525},{"type":53,"tag":81,"props":1011,"children":1012},{"style":359},[1013],{"type":59,"value":1014},"register",{"type":53,"tag":81,"props":1016,"children":1017},{"style":110},[1018],{"type":59,"value":1019},"(fastifyTRPCPlugin",{"type":53,"tag":81,"props":1021,"children":1022},{"style":104},[1023],{"type":59,"value":378},{"type":53,"tag":81,"props":1025,"children":1026},{"style":104},[1027],{"type":59,"value":157},{"type":53,"tag":81,"props":1029,"children":1031},{"class":83,"line":1030},33,[1032,1037,1041,1045,1050,1054],{"type":53,"tag":81,"props":1033,"children":1034},{"style":622},[1035],{"type":59,"value":1036},"  prefix",{"type":53,"tag":81,"props":1038,"children":1039},{"style":104},[1040],{"type":59,"value":630},{"type":53,"tag":81,"props":1042,"children":1043},{"style":104},[1044],{"type":59,"value":128},{"type":53,"tag":81,"props":1046,"children":1047},{"style":131},[1048],{"type":59,"value":1049},"\u002Ftrpc",{"type":53,"tag":81,"props":1051,"children":1052},{"style":104},[1053],{"type":59,"value":139},{"type":53,"tag":81,"props":1055,"children":1056},{"style":104},[1057],{"type":59,"value":171},{"type":53,"tag":81,"props":1059,"children":1061},{"class":83,"line":1060},34,[1062,1067,1071],{"type":53,"tag":81,"props":1063,"children":1064},{"style":622},[1065],{"type":59,"value":1066},"  trpcOptions",{"type":53,"tag":81,"props":1068,"children":1069},{"style":104},[1070],{"type":59,"value":630},{"type":53,"tag":81,"props":1072,"children":1073},{"style":104},[1074],{"type":59,"value":157},{"type":53,"tag":81,"props":1076,"children":1078},{"class":83,"line":1077},35,[1079,1084,1088,1092],{"type":53,"tag":81,"props":1080,"children":1081},{"style":622},[1082],{"type":59,"value":1083},"    router",{"type":53,"tag":81,"props":1085,"children":1086},{"style":104},[1087],{"type":59,"value":630},{"type":53,"tag":81,"props":1089,"children":1090},{"style":110},[1091],{"type":59,"value":881},{"type":53,"tag":81,"props":1093,"children":1094},{"style":104},[1095],{"type":59,"value":171},{"type":53,"tag":81,"props":1097,"children":1099},{"class":83,"line":1098},36,[1100,1105],{"type":53,"tag":81,"props":1101,"children":1102},{"style":110},[1103],{"type":59,"value":1104},"    createContext",{"type":53,"tag":81,"props":1106,"children":1107},{"style":104},[1108],{"type":59,"value":171},{"type":53,"tag":81,"props":1110,"children":1112},{"class":83,"line":1111},37,[1113,1118,1122,1127,1131,1136,1140],{"type":53,"tag":81,"props":1114,"children":1115},{"style":622},[1116],{"type":59,"value":1117},"    onError",{"type":53,"tag":81,"props":1119,"children":1120},{"style":104},[1121],{"type":59,"value":367},{"type":53,"tag":81,"props":1123,"children":1124},{"style":370},[1125],{"type":59,"value":1126}," path",{"type":53,"tag":81,"props":1128,"children":1129},{"style":104},[1130],{"type":59,"value":378},{"type":53,"tag":81,"props":1132,"children":1133},{"style":370},[1134],{"type":59,"value":1135}," error",{"type":53,"tag":81,"props":1137,"children":1138},{"style":104},[1139],{"type":59,"value":747},{"type":53,"tag":81,"props":1141,"children":1142},{"style":104},[1143],{"type":59,"value":157},{"type":53,"tag":81,"props":1145,"children":1147},{"class":83,"line":1146},38,[1148,1153,1157,1162,1166,1170,1175,1179,1184,1188,1193,1197,1201,1205,1209],{"type":53,"tag":81,"props":1149,"children":1150},{"style":110},[1151],{"type":59,"value":1152},"      console",{"type":53,"tag":81,"props":1154,"children":1155},{"style":104},[1156],{"type":59,"value":525},{"type":53,"tag":81,"props":1158,"children":1159},{"style":359},[1160],{"type":59,"value":1161},"error",{"type":53,"tag":81,"props":1163,"children":1164},{"style":622},[1165],{"type":59,"value":610},{"type":53,"tag":81,"props":1167,"children":1168},{"style":104},[1169],{"type":59,"value":812},{"type":53,"tag":81,"props":1171,"children":1172},{"style":131},[1173],{"type":59,"value":1174},"Error in tRPC handler on path '",{"type":53,"tag":81,"props":1176,"children":1177},{"style":104},[1178],{"type":59,"value":785},{"type":53,"tag":81,"props":1180,"children":1181},{"style":110},[1182],{"type":59,"value":1183},"path",{"type":53,"tag":81,"props":1185,"children":1186},{"style":104},[1187],{"type":59,"value":193},{"type":53,"tag":81,"props":1189,"children":1190},{"style":131},[1191],{"type":59,"value":1192},"':",{"type":53,"tag":81,"props":1194,"children":1195},{"style":104},[1196],{"type":59,"value":812},{"type":53,"tag":81,"props":1198,"children":1199},{"style":104},[1200],{"type":59,"value":378},{"type":53,"tag":81,"props":1202,"children":1203},{"style":110},[1204],{"type":59,"value":1135},{"type":53,"tag":81,"props":1206,"children":1207},{"style":622},[1208],{"type":59,"value":398},{"type":53,"tag":81,"props":1210,"children":1211},{"style":104},[1212],{"type":59,"value":144},{"type":53,"tag":81,"props":1214,"children":1216},{"class":83,"line":1215},39,[1217],{"type":53,"tag":81,"props":1218,"children":1219},{"style":104},[1220],{"type":59,"value":1221},"    },\n",{"type":53,"tag":81,"props":1223,"children":1225},{"class":83,"line":1224},40,[1226,1231,1236,1241,1245,1250,1254,1259,1263,1268,1272,1277],{"type":53,"tag":81,"props":1227,"children":1228},{"style":104},[1229],{"type":59,"value":1230},"  }",{"type":53,"tag":81,"props":1232,"children":1233},{"style":98},[1234],{"type":59,"value":1235}," satisfies",{"type":53,"tag":81,"props":1237,"children":1238},{"style":391},[1239],{"type":59,"value":1240}," FastifyTRPCPluginOptions",{"type":53,"tag":81,"props":1242,"children":1243},{"style":104},[1244],{"type":59,"value":470},{"type":53,"tag":81,"props":1246,"children":1247},{"style":391},[1248],{"type":59,"value":1249},"AppRouter",{"type":53,"tag":81,"props":1251,"children":1252},{"style":104},[1253],{"type":59,"value":544},{"type":53,"tag":81,"props":1255,"children":1256},{"style":110},[1257],{"type":59,"value":1258},"[",{"type":53,"tag":81,"props":1260,"children":1261},{"style":104},[1262],{"type":59,"value":139},{"type":53,"tag":81,"props":1264,"children":1265},{"style":131},[1266],{"type":59,"value":1267},"trpcOptions",{"type":53,"tag":81,"props":1269,"children":1270},{"style":104},[1271],{"type":59,"value":139},{"type":53,"tag":81,"props":1273,"children":1274},{"style":110},[1275],{"type":59,"value":1276},"]",{"type":53,"tag":81,"props":1278,"children":1279},{"style":104},[1280],{"type":59,"value":171},{"type":53,"tag":81,"props":1282,"children":1284},{"class":83,"line":1283},41,[1285,1289,1293],{"type":53,"tag":81,"props":1286,"children":1287},{"style":104},[1288],{"type":59,"value":193},{"type":53,"tag":81,"props":1290,"children":1291},{"style":110},[1292],{"type":59,"value":398},{"type":53,"tag":81,"props":1294,"children":1295},{"style":104},[1296],{"type":59,"value":144},{"type":53,"tag":81,"props":1298,"children":1300},{"class":83,"line":1299},42,[1301],{"type":53,"tag":81,"props":1302,"children":1303},{"emptyLinePlaceholder":343},[1304],{"type":59,"value":346},{"type":53,"tag":81,"props":1306,"children":1308},{"class":83,"line":1307},43,[1309,1313,1318,1323,1327],{"type":53,"tag":81,"props":1310,"children":1311},{"style":110},[1312],{"type":59,"value":610},{"type":53,"tag":81,"props":1314,"children":1315},{"style":353},[1316],{"type":59,"value":1317},"async",{"type":53,"tag":81,"props":1319,"children":1320},{"style":104},[1321],{"type":59,"value":1322}," ()",{"type":53,"tag":81,"props":1324,"children":1325},{"style":353},[1326],{"type":59,"value":752},{"type":53,"tag":81,"props":1328,"children":1329},{"style":104},[1330],{"type":59,"value":157},{"type":53,"tag":81,"props":1332,"children":1334},{"class":83,"line":1333},44,[1335,1340],{"type":53,"tag":81,"props":1336,"children":1337},{"style":98},[1338],{"type":59,"value":1339},"  try",{"type":53,"tag":81,"props":1341,"children":1342},{"style":104},[1343],{"type":59,"value":157},{"type":53,"tag":81,"props":1345,"children":1347},{"class":83,"line":1346},45,[1348,1353,1358,1362,1367,1371,1375,1380,1384,1389,1393,1397],{"type":53,"tag":81,"props":1349,"children":1350},{"style":98},[1351],{"type":59,"value":1352},"    await",{"type":53,"tag":81,"props":1354,"children":1355},{"style":110},[1356],{"type":59,"value":1357}," server",{"type":53,"tag":81,"props":1359,"children":1360},{"style":104},[1361],{"type":59,"value":525},{"type":53,"tag":81,"props":1363,"children":1364},{"style":359},[1365],{"type":59,"value":1366},"listen",{"type":53,"tag":81,"props":1368,"children":1369},{"style":622},[1370],{"type":59,"value":610},{"type":53,"tag":81,"props":1372,"children":1373},{"style":104},[1374],{"type":59,"value":680},{"type":53,"tag":81,"props":1376,"children":1377},{"style":622},[1378],{"type":59,"value":1379}," port",{"type":53,"tag":81,"props":1381,"children":1382},{"style":104},[1383],{"type":59,"value":630},{"type":53,"tag":81,"props":1385,"children":1386},{"style":956},[1387],{"type":59,"value":1388}," 3000",{"type":53,"tag":81,"props":1390,"children":1391},{"style":104},[1392],{"type":59,"value":118},{"type":53,"tag":81,"props":1394,"children":1395},{"style":622},[1396],{"type":59,"value":398},{"type":53,"tag":81,"props":1398,"children":1399},{"style":104},[1400],{"type":59,"value":144},{"type":53,"tag":81,"props":1402,"children":1404},{"class":83,"line":1403},46,[1405,1410,1414,1419,1423,1427,1432,1436,1440],{"type":53,"tag":81,"props":1406,"children":1407},{"style":110},[1408],{"type":59,"value":1409},"    console",{"type":53,"tag":81,"props":1411,"children":1412},{"style":104},[1413],{"type":59,"value":525},{"type":53,"tag":81,"props":1415,"children":1416},{"style":359},[1417],{"type":59,"value":1418},"log",{"type":53,"tag":81,"props":1420,"children":1421},{"style":622},[1422],{"type":59,"value":610},{"type":53,"tag":81,"props":1424,"children":1425},{"style":104},[1426],{"type":59,"value":139},{"type":53,"tag":81,"props":1428,"children":1429},{"style":131},[1430],{"type":59,"value":1431},"Listening on http:\u002F\u002Flocalhost:3000",{"type":53,"tag":81,"props":1433,"children":1434},{"style":104},[1435],{"type":59,"value":139},{"type":53,"tag":81,"props":1437,"children":1438},{"style":622},[1439],{"type":59,"value":398},{"type":53,"tag":81,"props":1441,"children":1442},{"style":104},[1443],{"type":59,"value":144},{"type":53,"tag":81,"props":1445,"children":1447},{"class":83,"line":1446},47,[1448,1452,1457,1461,1466,1471],{"type":53,"tag":81,"props":1449,"children":1450},{"style":104},[1451],{"type":59,"value":1230},{"type":53,"tag":81,"props":1453,"children":1454},{"style":98},[1455],{"type":59,"value":1456}," catch",{"type":53,"tag":81,"props":1458,"children":1459},{"style":622},[1460],{"type":59,"value":757},{"type":53,"tag":81,"props":1462,"children":1463},{"style":110},[1464],{"type":59,"value":1465},"err",{"type":53,"tag":81,"props":1467,"children":1468},{"style":622},[1469],{"type":59,"value":1470},") ",{"type":53,"tag":81,"props":1472,"children":1473},{"style":104},[1474],{"type":59,"value":615},{"type":53,"tag":81,"props":1476,"children":1478},{"class":83,"line":1477},48,[1479,1484,1488,1492,1496,1500,1504,1508,1512],{"type":53,"tag":81,"props":1480,"children":1481},{"style":110},[1482],{"type":59,"value":1483},"    server",{"type":53,"tag":81,"props":1485,"children":1486},{"style":104},[1487],{"type":59,"value":525},{"type":53,"tag":81,"props":1489,"children":1490},{"style":110},[1491],{"type":59,"value":1418},{"type":53,"tag":81,"props":1493,"children":1494},{"style":104},[1495],{"type":59,"value":525},{"type":53,"tag":81,"props":1497,"children":1498},{"style":359},[1499],{"type":59,"value":1161},{"type":53,"tag":81,"props":1501,"children":1502},{"style":622},[1503],{"type":59,"value":610},{"type":53,"tag":81,"props":1505,"children":1506},{"style":110},[1507],{"type":59,"value":1465},{"type":53,"tag":81,"props":1509,"children":1510},{"style":622},[1511],{"type":59,"value":398},{"type":53,"tag":81,"props":1513,"children":1514},{"style":104},[1515],{"type":59,"value":144},{"type":53,"tag":81,"props":1517,"children":1519},{"class":83,"line":1518},49,[1520,1525,1529,1534,1538,1543,1547],{"type":53,"tag":81,"props":1521,"children":1522},{"style":110},[1523],{"type":59,"value":1524},"    process",{"type":53,"tag":81,"props":1526,"children":1527},{"style":104},[1528],{"type":59,"value":525},{"type":53,"tag":81,"props":1530,"children":1531},{"style":359},[1532],{"type":59,"value":1533},"exit",{"type":53,"tag":81,"props":1535,"children":1536},{"style":622},[1537],{"type":59,"value":610},{"type":53,"tag":81,"props":1539,"children":1540},{"style":956},[1541],{"type":59,"value":1542},"1",{"type":53,"tag":81,"props":1544,"children":1545},{"style":622},[1546],{"type":59,"value":398},{"type":53,"tag":81,"props":1548,"children":1549},{"style":104},[1550],{"type":59,"value":144},{"type":53,"tag":81,"props":1552,"children":1554},{"class":83,"line":1553},50,[1555],{"type":53,"tag":81,"props":1556,"children":1557},{"style":104},[1558],{"type":59,"value":1559},"  }\n",{"type":53,"tag":81,"props":1561,"children":1563},{"class":83,"line":1562},51,[1564,1568,1573],{"type":53,"tag":81,"props":1565,"children":1566},{"style":104},[1567],{"type":59,"value":193},{"type":53,"tag":81,"props":1569,"children":1570},{"style":110},[1571],{"type":59,"value":1572},")()",{"type":53,"tag":81,"props":1574,"children":1575},{"style":104},[1576],{"type":59,"value":144},{"type":53,"tag":62,"props":1578,"children":1580},{"id":1579},"core-patterns",[1581],{"type":59,"value":1582},"Core Patterns",{"type":53,"tag":1584,"props":1585,"children":1587},"h3",{"id":1586},"websocket-subscriptions-with-fastifywebsocket",[1588],{"type":59,"value":1589},"WebSocket subscriptions with @fastify\u002Fwebsocket",{"type":53,"tag":69,"props":1591,"children":1593},{"className":71,"code":1592,"language":73,"meta":74,"style":74},"import ws from '@fastify\u002Fwebsocket';\nimport {\n  fastifyTRPCPlugin,\n  FastifyTRPCPluginOptions,\n} from '@trpc\u002Fserver\u002Fadapters\u002Ffastify';\nimport fastify from 'fastify';\nimport { createContext } from '.\u002Fcontext';\nimport { appRouter, type AppRouter } from '.\u002Frouter';\n\nconst server = fastify({\n  routerOptions: { maxParamLength: 5000 },\n});\n\n\u002F\u002F Register @fastify\u002Fwebsocket BEFORE the tRPC plugin\nserver.register(ws);\n\nserver.register(fastifyTRPCPlugin, {\n  prefix: '\u002Ftrpc',\n  useWSS: true,\n  trpcOptions: {\n    router: appRouter,\n    createContext,\n    keepAlive: {\n      enabled: true,\n      pingMs: 30000,\n      pongWaitMs: 5000,\n    },\n  } satisfies FastifyTRPCPluginOptions\u003CAppRouter>['trpcOptions'],\n});\n\nserver.listen({ port: 3000 });\n",[1594],{"type":53,"tag":77,"props":1595,"children":1596},{"__ignoreMap":74},[1597,1630,1641,1652,1663,1690,1721,1761,1813,1820,1847,1880,1895,1902,1910,1934,1941,1968,1995,2017,2032,2051,2062,2078,2098,2119,2139,2146,2197,2212,2219],{"type":53,"tag":81,"props":1598,"children":1599},{"class":83,"line":84},[1600,1604,1609,1613,1617,1622,1626],{"type":53,"tag":81,"props":1601,"children":1602},{"style":98},[1603],{"type":59,"value":101},{"type":53,"tag":81,"props":1605,"children":1606},{"style":110},[1607],{"type":59,"value":1608}," ws ",{"type":53,"tag":81,"props":1610,"children":1611},{"style":98},[1612],{"type":59,"value":278},{"type":53,"tag":81,"props":1614,"children":1615},{"style":104},[1616],{"type":59,"value":128},{"type":53,"tag":81,"props":1618,"children":1619},{"style":131},[1620],{"type":59,"value":1621},"@fastify\u002Fwebsocket",{"type":53,"tag":81,"props":1623,"children":1624},{"style":104},[1625],{"type":59,"value":139},{"type":53,"tag":81,"props":1627,"children":1628},{"style":104},[1629],{"type":59,"value":144},{"type":53,"tag":81,"props":1631,"children":1632},{"class":83,"line":94},[1633,1637],{"type":53,"tag":81,"props":1634,"children":1635},{"style":98},[1636],{"type":59,"value":101},{"type":53,"tag":81,"props":1638,"children":1639},{"style":104},[1640],{"type":59,"value":157},{"type":53,"tag":81,"props":1642,"children":1643},{"class":83,"line":147},[1644,1648],{"type":53,"tag":81,"props":1645,"children":1646},{"style":110},[1647],{"type":59,"value":166},{"type":53,"tag":81,"props":1649,"children":1650},{"style":104},[1651],{"type":59,"value":171},{"type":53,"tag":81,"props":1653,"children":1654},{"class":83,"line":160},[1655,1659],{"type":53,"tag":81,"props":1656,"children":1657},{"style":110},[1658],{"type":59,"value":180},{"type":53,"tag":81,"props":1660,"children":1661},{"style":104},[1662],{"type":59,"value":171},{"type":53,"tag":81,"props":1664,"children":1665},{"class":83,"line":174},[1666,1670,1674,1678,1682,1686],{"type":53,"tag":81,"props":1667,"children":1668},{"style":104},[1669],{"type":59,"value":193},{"type":53,"tag":81,"props":1671,"children":1672},{"style":98},[1673],{"type":59,"value":123},{"type":53,"tag":81,"props":1675,"children":1676},{"style":104},[1677],{"type":59,"value":128},{"type":53,"tag":81,"props":1679,"children":1680},{"style":131},[1681],{"type":59,"value":206},{"type":53,"tag":81,"props":1683,"children":1684},{"style":104},[1685],{"type":59,"value":139},{"type":53,"tag":81,"props":1687,"children":1688},{"style":104},[1689],{"type":59,"value":144},{"type":53,"tag":81,"props":1691,"children":1692},{"class":83,"line":187},[1693,1697,1701,1705,1709,1713,1717],{"type":53,"tag":81,"props":1694,"children":1695},{"style":98},[1696],{"type":59,"value":101},{"type":53,"tag":81,"props":1698,"children":1699},{"style":110},[1700],{"type":59,"value":273},{"type":53,"tag":81,"props":1702,"children":1703},{"style":98},[1704],{"type":59,"value":278},{"type":53,"tag":81,"props":1706,"children":1707},{"style":104},[1708],{"type":59,"value":128},{"type":53,"tag":81,"props":1710,"children":1711},{"style":131},[1712],{"type":59,"value":19},{"type":53,"tag":81,"props":1714,"children":1715},{"style":104},[1716],{"type":59,"value":139},{"type":53,"tag":81,"props":1718,"children":1719},{"style":104},[1720],{"type":59,"value":144},{"type":53,"tag":81,"props":1722,"children":1723},{"class":83,"line":217},[1724,1728,1732,1736,1740,1744,1748,1753,1757],{"type":53,"tag":81,"props":1725,"children":1726},{"style":98},[1727],{"type":59,"value":101},{"type":53,"tag":81,"props":1729,"children":1730},{"style":104},[1731],{"type":59,"value":107},{"type":53,"tag":81,"props":1733,"children":1734},{"style":110},[1735],{"type":59,"value":362},{"type":53,"tag":81,"props":1737,"children":1738},{"style":104},[1739],{"type":59,"value":118},{"type":53,"tag":81,"props":1741,"children":1742},{"style":98},[1743],{"type":59,"value":123},{"type":53,"tag":81,"props":1745,"children":1746},{"style":104},[1747],{"type":59,"value":128},{"type":53,"tag":81,"props":1749,"children":1750},{"style":131},[1751],{"type":59,"value":1752},".\u002Fcontext",{"type":53,"tag":81,"props":1754,"children":1755},{"style":104},[1756],{"type":59,"value":139},{"type":53,"tag":81,"props":1758,"children":1759},{"style":104},[1760],{"type":59,"value":144},{"type":53,"tag":81,"props":1762,"children":1763},{"class":83,"line":263},[1764,1768,1772,1776,1780,1784,1788,1792,1796,1800,1805,1809],{"type":53,"tag":81,"props":1765,"children":1766},{"style":98},[1767],{"type":59,"value":101},{"type":53,"tag":81,"props":1769,"children":1770},{"style":104},[1771],{"type":59,"value":107},{"type":53,"tag":81,"props":1773,"children":1774},{"style":110},[1775],{"type":59,"value":881},{"type":53,"tag":81,"props":1777,"children":1778},{"style":104},[1779],{"type":59,"value":378},{"type":53,"tag":81,"props":1781,"children":1782},{"style":98},[1783],{"type":59,"value":227},{"type":53,"tag":81,"props":1785,"children":1786},{"style":110},[1787],{"type":59,"value":867},{"type":53,"tag":81,"props":1789,"children":1790},{"style":104},[1791],{"type":59,"value":118},{"type":53,"tag":81,"props":1793,"children":1794},{"style":98},[1795],{"type":59,"value":123},{"type":53,"tag":81,"props":1797,"children":1798},{"style":104},[1799],{"type":59,"value":128},{"type":53,"tag":81,"props":1801,"children":1802},{"style":131},[1803],{"type":59,"value":1804},".\u002Frouter",{"type":53,"tag":81,"props":1806,"children":1807},{"style":104},[1808],{"type":59,"value":139},{"type":53,"tag":81,"props":1810,"children":1811},{"style":104},[1812],{"type":59,"value":144},{"type":53,"tag":81,"props":1814,"children":1815},{"class":83,"line":297},[1816],{"type":53,"tag":81,"props":1817,"children":1818},{"emptyLinePlaceholder":343},[1819],{"type":59,"value":346},{"type":53,"tag":81,"props":1821,"children":1822},{"class":83,"line":339},[1823,1827,1831,1835,1839,1843],{"type":53,"tag":81,"props":1824,"children":1825},{"style":353},[1826],{"type":59,"value":506},{"type":53,"tag":81,"props":1828,"children":1829},{"style":110},[1830],{"type":59,"value":906},{"type":53,"tag":81,"props":1832,"children":1833},{"style":104},[1834],{"type":59,"value":516},{"type":53,"tag":81,"props":1836,"children":1837},{"style":359},[1838],{"type":59,"value":915},{"type":53,"tag":81,"props":1840,"children":1841},{"style":110},[1842],{"type":59,"value":610},{"type":53,"tag":81,"props":1844,"children":1845},{"style":104},[1846],{"type":59,"value":615},{"type":53,"tag":81,"props":1848,"children":1849},{"class":83,"line":349},[1850,1854,1858,1862,1867,1871,1875],{"type":53,"tag":81,"props":1851,"children":1852},{"style":622},[1853],{"type":59,"value":932},{"type":53,"tag":81,"props":1855,"children":1856},{"style":104},[1857],{"type":59,"value":630},{"type":53,"tag":81,"props":1859,"children":1860},{"style":104},[1861],{"type":59,"value":107},{"type":53,"tag":81,"props":1863,"children":1864},{"style":622},[1865],{"type":59,"value":1866}," maxParamLength",{"type":53,"tag":81,"props":1868,"children":1869},{"style":104},[1870],{"type":59,"value":630},{"type":53,"tag":81,"props":1872,"children":1873},{"style":956},[1874],{"type":59,"value":959},{"type":53,"tag":81,"props":1876,"children":1877},{"style":104},[1878],{"type":59,"value":1879}," },\n",{"type":53,"tag":81,"props":1881,"children":1882},{"class":83,"line":405},[1883,1887,1891],{"type":53,"tag":81,"props":1884,"children":1885},{"style":104},[1886],{"type":59,"value":193},{"type":53,"tag":81,"props":1888,"children":1889},{"style":110},[1890],{"type":59,"value":398},{"type":53,"tag":81,"props":1892,"children":1893},{"style":104},[1894],{"type":59,"value":144},{"type":53,"tag":81,"props":1896,"children":1897},{"class":83,"line":435},[1898],{"type":53,"tag":81,"props":1899,"children":1900},{"emptyLinePlaceholder":343},[1901],{"type":59,"value":346},{"type":53,"tag":81,"props":1903,"children":1904},{"class":83,"line":444},[1905],{"type":53,"tag":81,"props":1906,"children":1907},{"style":88},[1908],{"type":59,"value":1909},"\u002F\u002F Register @fastify\u002Fwebsocket BEFORE the tRPC plugin\n",{"type":53,"tag":81,"props":1911,"children":1912},{"class":83,"line":492},[1913,1917,1921,1925,1930],{"type":53,"tag":81,"props":1914,"children":1915},{"style":110},[1916],{"type":59,"value":1005},{"type":53,"tag":81,"props":1918,"children":1919},{"style":104},[1920],{"type":59,"value":525},{"type":53,"tag":81,"props":1922,"children":1923},{"style":359},[1924],{"type":59,"value":1014},{"type":53,"tag":81,"props":1926,"children":1927},{"style":110},[1928],{"type":59,"value":1929},"(ws)",{"type":53,"tag":81,"props":1931,"children":1932},{"style":104},[1933],{"type":59,"value":144},{"type":53,"tag":81,"props":1935,"children":1936},{"class":83,"line":500},[1937],{"type":53,"tag":81,"props":1938,"children":1939},{"emptyLinePlaceholder":343},[1940],{"type":59,"value":346},{"type":53,"tag":81,"props":1942,"children":1943},{"class":83,"line":569},[1944,1948,1952,1956,1960,1964],{"type":53,"tag":81,"props":1945,"children":1946},{"style":110},[1947],{"type":59,"value":1005},{"type":53,"tag":81,"props":1949,"children":1950},{"style":104},[1951],{"type":59,"value":525},{"type":53,"tag":81,"props":1953,"children":1954},{"style":359},[1955],{"type":59,"value":1014},{"type":53,"tag":81,"props":1957,"children":1958},{"style":110},[1959],{"type":59,"value":1019},{"type":53,"tag":81,"props":1961,"children":1962},{"style":104},[1963],{"type":59,"value":378},{"type":53,"tag":81,"props":1965,"children":1966},{"style":104},[1967],{"type":59,"value":157},{"type":53,"tag":81,"props":1969,"children":1970},{"class":83,"line":577},[1971,1975,1979,1983,1987,1991],{"type":53,"tag":81,"props":1972,"children":1973},{"style":622},[1974],{"type":59,"value":1036},{"type":53,"tag":81,"props":1976,"children":1977},{"style":104},[1978],{"type":59,"value":630},{"type":53,"tag":81,"props":1980,"children":1981},{"style":104},[1982],{"type":59,"value":128},{"type":53,"tag":81,"props":1984,"children":1985},{"style":131},[1986],{"type":59,"value":1049},{"type":53,"tag":81,"props":1988,"children":1989},{"style":104},[1990],{"type":59,"value":139},{"type":53,"tag":81,"props":1992,"children":1993},{"style":104},[1994],{"type":59,"value":171},{"type":53,"tag":81,"props":1996,"children":1997},{"class":83,"line":618},[1998,2003,2007,2013],{"type":53,"tag":81,"props":1999,"children":2000},{"style":622},[2001],{"type":59,"value":2002},"  useWSS",{"type":53,"tag":81,"props":2004,"children":2005},{"style":104},[2006],{"type":59,"value":630},{"type":53,"tag":81,"props":2008,"children":2010},{"style":2009},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[2011],{"type":59,"value":2012}," true",{"type":53,"tag":81,"props":2014,"children":2015},{"style":104},[2016],{"type":59,"value":171},{"type":53,"tag":81,"props":2018,"children":2019},{"class":83,"line":646},[2020,2024,2028],{"type":53,"tag":81,"props":2021,"children":2022},{"style":622},[2023],{"type":59,"value":1066},{"type":53,"tag":81,"props":2025,"children":2026},{"style":104},[2027],{"type":59,"value":630},{"type":53,"tag":81,"props":2029,"children":2030},{"style":104},[2031],{"type":59,"value":157},{"type":53,"tag":81,"props":2033,"children":2034},{"class":83,"line":719},[2035,2039,2043,2047],{"type":53,"tag":81,"props":2036,"children":2037},{"style":622},[2038],{"type":59,"value":1083},{"type":53,"tag":81,"props":2040,"children":2041},{"style":104},[2042],{"type":59,"value":630},{"type":53,"tag":81,"props":2044,"children":2045},{"style":110},[2046],{"type":59,"value":881},{"type":53,"tag":81,"props":2048,"children":2049},{"style":104},[2050],{"type":59,"value":171},{"type":53,"tag":81,"props":2052,"children":2053},{"class":83,"line":828},[2054,2058],{"type":53,"tag":81,"props":2055,"children":2056},{"style":110},[2057],{"type":59,"value":1104},{"type":53,"tag":81,"props":2059,"children":2060},{"style":104},[2061],{"type":59,"value":171},{"type":53,"tag":81,"props":2063,"children":2064},{"class":83,"line":844},[2065,2070,2074],{"type":53,"tag":81,"props":2066,"children":2067},{"style":622},[2068],{"type":59,"value":2069},"    keepAlive",{"type":53,"tag":81,"props":2071,"children":2072},{"style":104},[2073],{"type":59,"value":630},{"type":53,"tag":81,"props":2075,"children":2076},{"style":104},[2077],{"type":59,"value":157},{"type":53,"tag":81,"props":2079,"children":2080},{"class":83,"line":852},[2081,2086,2090,2094],{"type":53,"tag":81,"props":2082,"children":2083},{"style":622},[2084],{"type":59,"value":2085},"      enabled",{"type":53,"tag":81,"props":2087,"children":2088},{"style":104},[2089],{"type":59,"value":630},{"type":53,"tag":81,"props":2091,"children":2092},{"style":2009},[2093],{"type":59,"value":2012},{"type":53,"tag":81,"props":2095,"children":2096},{"style":104},[2097],{"type":59,"value":171},{"type":53,"tag":81,"props":2099,"children":2100},{"class":83,"line":888},[2101,2106,2110,2115],{"type":53,"tag":81,"props":2102,"children":2103},{"style":622},[2104],{"type":59,"value":2105},"      pingMs",{"type":53,"tag":81,"props":2107,"children":2108},{"style":104},[2109],{"type":59,"value":630},{"type":53,"tag":81,"props":2111,"children":2112},{"style":956},[2113],{"type":59,"value":2114}," 30000",{"type":53,"tag":81,"props":2116,"children":2117},{"style":104},[2118],{"type":59,"value":171},{"type":53,"tag":81,"props":2120,"children":2121},{"class":83,"line":896},[2122,2127,2131,2135],{"type":53,"tag":81,"props":2123,"children":2124},{"style":622},[2125],{"type":59,"value":2126},"      pongWaitMs",{"type":53,"tag":81,"props":2128,"children":2129},{"style":104},[2130],{"type":59,"value":630},{"type":53,"tag":81,"props":2132,"children":2133},{"style":956},[2134],{"type":59,"value":959},{"type":53,"tag":81,"props":2136,"children":2137},{"style":104},[2138],{"type":59,"value":171},{"type":53,"tag":81,"props":2140,"children":2141},{"class":83,"line":926},[2142],{"type":53,"tag":81,"props":2143,"children":2144},{"style":104},[2145],{"type":59,"value":1221},{"type":53,"tag":81,"props":2147,"children":2148},{"class":83,"line":943},[2149,2153,2157,2161,2165,2169,2173,2177,2181,2185,2189,2193],{"type":53,"tag":81,"props":2150,"children":2151},{"style":104},[2152],{"type":59,"value":1230},{"type":53,"tag":81,"props":2154,"children":2155},{"style":98},[2156],{"type":59,"value":1235},{"type":53,"tag":81,"props":2158,"children":2159},{"style":391},[2160],{"type":59,"value":1240},{"type":53,"tag":81,"props":2162,"children":2163},{"style":104},[2164],{"type":59,"value":470},{"type":53,"tag":81,"props":2166,"children":2167},{"style":391},[2168],{"type":59,"value":1249},{"type":53,"tag":81,"props":2170,"children":2171},{"style":104},[2172],{"type":59,"value":544},{"type":53,"tag":81,"props":2174,"children":2175},{"style":110},[2176],{"type":59,"value":1258},{"type":53,"tag":81,"props":2178,"children":2179},{"style":104},[2180],{"type":59,"value":139},{"type":53,"tag":81,"props":2182,"children":2183},{"style":131},[2184],{"type":59,"value":1267},{"type":53,"tag":81,"props":2186,"children":2187},{"style":104},[2188],{"type":59,"value":139},{"type":53,"tag":81,"props":2190,"children":2191},{"style":110},[2192],{"type":59,"value":1276},{"type":53,"tag":81,"props":2194,"children":2195},{"style":104},[2196],{"type":59,"value":171},{"type":53,"tag":81,"props":2198,"children":2199},{"class":83,"line":966},[2200,2204,2208],{"type":53,"tag":81,"props":2201,"children":2202},{"style":104},[2203],{"type":59,"value":193},{"type":53,"tag":81,"props":2205,"children":2206},{"style":110},[2207],{"type":59,"value":398},{"type":53,"tag":81,"props":2209,"children":2210},{"style":104},[2211],{"type":59,"value":144},{"type":53,"tag":81,"props":2213,"children":2214},{"class":83,"line":975},[2215],{"type":53,"tag":81,"props":2216,"children":2217},{"emptyLinePlaceholder":343},[2218],{"type":59,"value":346},{"type":53,"tag":81,"props":2220,"children":2221},{"class":83,"line":991},[2222,2226,2230,2234,2238,2242,2246,2250,2254,2258,2262],{"type":53,"tag":81,"props":2223,"children":2224},{"style":110},[2225],{"type":59,"value":1005},{"type":53,"tag":81,"props":2227,"children":2228},{"style":104},[2229],{"type":59,"value":525},{"type":53,"tag":81,"props":2231,"children":2232},{"style":359},[2233],{"type":59,"value":1366},{"type":53,"tag":81,"props":2235,"children":2236},{"style":110},[2237],{"type":59,"value":610},{"type":53,"tag":81,"props":2239,"children":2240},{"style":104},[2241],{"type":59,"value":680},{"type":53,"tag":81,"props":2243,"children":2244},{"style":622},[2245],{"type":59,"value":1379},{"type":53,"tag":81,"props":2247,"children":2248},{"style":104},[2249],{"type":59,"value":630},{"type":53,"tag":81,"props":2251,"children":2252},{"style":956},[2253],{"type":59,"value":1388},{"type":53,"tag":81,"props":2255,"children":2256},{"style":104},[2257],{"type":59,"value":118},{"type":53,"tag":81,"props":2259,"children":2260},{"style":110},[2261],{"type":59,"value":398},{"type":53,"tag":81,"props":2263,"children":2264},{"style":104},[2265],{"type":59,"value":144},{"type":53,"tag":2267,"props":2268,"children":2269},"p",{},[2270,2272,2278],{"type":59,"value":2271},"Install: ",{"type":53,"tag":77,"props":2273,"children":2275},{"className":2274},[],[2276],{"type":59,"value":2277},"npm install @fastify\u002Fwebsocket",{"type":59,"value":2279}," (minimum version 3.11.0)",{"type":53,"tag":1584,"props":2281,"children":2283},{"id":2282},"type-safe-onerror-with-satisfies",[2284],{"type":59,"value":2285},"Type-safe onError with satisfies",{"type":53,"tag":69,"props":2287,"children":2289},{"className":71,"code":2288,"language":73,"meta":74,"style":74},"server.register(fastifyTRPCPlugin, {\n  prefix: '\u002Ftrpc',\n  trpcOptions: {\n    router: appRouter,\n    createContext,\n    onError({ path, error, type, input }) {\n      console.error(`[${type}] ${path}:`, error.message);\n    },\n  } satisfies FastifyTRPCPluginOptions\u003CAppRouter>['trpcOptions'],\n});\n",[2290],{"type":53,"tag":77,"props":2291,"children":2292},{"__ignoreMap":74},[2293,2320,2347,2362,2381,2392,2439,2528,2535,2586],{"type":53,"tag":81,"props":2294,"children":2295},{"class":83,"line":84},[2296,2300,2304,2308,2312,2316],{"type":53,"tag":81,"props":2297,"children":2298},{"style":110},[2299],{"type":59,"value":1005},{"type":53,"tag":81,"props":2301,"children":2302},{"style":104},[2303],{"type":59,"value":525},{"type":53,"tag":81,"props":2305,"children":2306},{"style":359},[2307],{"type":59,"value":1014},{"type":53,"tag":81,"props":2309,"children":2310},{"style":110},[2311],{"type":59,"value":1019},{"type":53,"tag":81,"props":2313,"children":2314},{"style":104},[2315],{"type":59,"value":378},{"type":53,"tag":81,"props":2317,"children":2318},{"style":104},[2319],{"type":59,"value":157},{"type":53,"tag":81,"props":2321,"children":2322},{"class":83,"line":94},[2323,2327,2331,2335,2339,2343],{"type":53,"tag":81,"props":2324,"children":2325},{"style":622},[2326],{"type":59,"value":1036},{"type":53,"tag":81,"props":2328,"children":2329},{"style":104},[2330],{"type":59,"value":630},{"type":53,"tag":81,"props":2332,"children":2333},{"style":104},[2334],{"type":59,"value":128},{"type":53,"tag":81,"props":2336,"children":2337},{"style":131},[2338],{"type":59,"value":1049},{"type":53,"tag":81,"props":2340,"children":2341},{"style":104},[2342],{"type":59,"value":139},{"type":53,"tag":81,"props":2344,"children":2345},{"style":104},[2346],{"type":59,"value":171},{"type":53,"tag":81,"props":2348,"children":2349},{"class":83,"line":147},[2350,2354,2358],{"type":53,"tag":81,"props":2351,"children":2352},{"style":622},[2353],{"type":59,"value":1066},{"type":53,"tag":81,"props":2355,"children":2356},{"style":104},[2357],{"type":59,"value":630},{"type":53,"tag":81,"props":2359,"children":2360},{"style":104},[2361],{"type":59,"value":157},{"type":53,"tag":81,"props":2363,"children":2364},{"class":83,"line":160},[2365,2369,2373,2377],{"type":53,"tag":81,"props":2366,"children":2367},{"style":622},[2368],{"type":59,"value":1083},{"type":53,"tag":81,"props":2370,"children":2371},{"style":104},[2372],{"type":59,"value":630},{"type":53,"tag":81,"props":2374,"children":2375},{"style":110},[2376],{"type":59,"value":881},{"type":53,"tag":81,"props":2378,"children":2379},{"style":104},[2380],{"type":59,"value":171},{"type":53,"tag":81,"props":2382,"children":2383},{"class":83,"line":174},[2384,2388],{"type":53,"tag":81,"props":2385,"children":2386},{"style":110},[2387],{"type":59,"value":1104},{"type":53,"tag":81,"props":2389,"children":2390},{"style":104},[2391],{"type":59,"value":171},{"type":53,"tag":81,"props":2393,"children":2394},{"class":83,"line":187},[2395,2399,2403,2407,2411,2415,2419,2423,2427,2431,2435],{"type":53,"tag":81,"props":2396,"children":2397},{"style":622},[2398],{"type":59,"value":1117},{"type":53,"tag":81,"props":2400,"children":2401},{"style":104},[2402],{"type":59,"value":367},{"type":53,"tag":81,"props":2404,"children":2405},{"style":370},[2406],{"type":59,"value":1126},{"type":53,"tag":81,"props":2408,"children":2409},{"style":104},[2410],{"type":59,"value":378},{"type":53,"tag":81,"props":2412,"children":2413},{"style":370},[2414],{"type":59,"value":1135},{"type":53,"tag":81,"props":2416,"children":2417},{"style":104},[2418],{"type":59,"value":378},{"type":53,"tag":81,"props":2420,"children":2421},{"style":370},[2422],{"type":59,"value":227},{"type":53,"tag":81,"props":2424,"children":2425},{"style":104},[2426],{"type":59,"value":378},{"type":53,"tag":81,"props":2428,"children":2429},{"style":370},[2430],{"type":59,"value":742},{"type":53,"tag":81,"props":2432,"children":2433},{"style":104},[2434],{"type":59,"value":747},{"type":53,"tag":81,"props":2436,"children":2437},{"style":104},[2438],{"type":59,"value":157},{"type":53,"tag":81,"props":2440,"children":2441},{"class":83,"line":217},[2442,2446,2450,2454,2458,2462,2466,2470,2474,2478,2483,2487,2491,2495,2499,2503,2507,2511,2515,2520,2524],{"type":53,"tag":81,"props":2443,"children":2444},{"style":110},[2445],{"type":59,"value":1152},{"type":53,"tag":81,"props":2447,"children":2448},{"style":104},[2449],{"type":59,"value":525},{"type":53,"tag":81,"props":2451,"children":2452},{"style":359},[2453],{"type":59,"value":1161},{"type":53,"tag":81,"props":2455,"children":2456},{"style":622},[2457],{"type":59,"value":610},{"type":53,"tag":81,"props":2459,"children":2460},{"style":104},[2461],{"type":59,"value":812},{"type":53,"tag":81,"props":2463,"children":2464},{"style":131},[2465],{"type":59,"value":1258},{"type":53,"tag":81,"props":2467,"children":2468},{"style":104},[2469],{"type":59,"value":785},{"type":53,"tag":81,"props":2471,"children":2472},{"style":110},[2473],{"type":59,"value":450},{"type":53,"tag":81,"props":2475,"children":2476},{"style":104},[2477],{"type":59,"value":193},{"type":53,"tag":81,"props":2479,"children":2480},{"style":131},[2481],{"type":59,"value":2482},"] ",{"type":53,"tag":81,"props":2484,"children":2485},{"style":104},[2486],{"type":59,"value":785},{"type":53,"tag":81,"props":2488,"children":2489},{"style":110},[2490],{"type":59,"value":1183},{"type":53,"tag":81,"props":2492,"children":2493},{"style":104},[2494],{"type":59,"value":193},{"type":53,"tag":81,"props":2496,"children":2497},{"style":131},[2498],{"type":59,"value":630},{"type":53,"tag":81,"props":2500,"children":2501},{"style":104},[2502],{"type":59,"value":812},{"type":53,"tag":81,"props":2504,"children":2505},{"style":104},[2506],{"type":59,"value":378},{"type":53,"tag":81,"props":2508,"children":2509},{"style":110},[2510],{"type":59,"value":1135},{"type":53,"tag":81,"props":2512,"children":2513},{"style":104},[2514],{"type":59,"value":525},{"type":53,"tag":81,"props":2516,"children":2517},{"style":110},[2518],{"type":59,"value":2519},"message",{"type":53,"tag":81,"props":2521,"children":2522},{"style":622},[2523],{"type":59,"value":398},{"type":53,"tag":81,"props":2525,"children":2526},{"style":104},[2527],{"type":59,"value":144},{"type":53,"tag":81,"props":2529,"children":2530},{"class":83,"line":263},[2531],{"type":53,"tag":81,"props":2532,"children":2533},{"style":104},[2534],{"type":59,"value":1221},{"type":53,"tag":81,"props":2536,"children":2537},{"class":83,"line":297},[2538,2542,2546,2550,2554,2558,2562,2566,2570,2574,2578,2582],{"type":53,"tag":81,"props":2539,"children":2540},{"style":104},[2541],{"type":59,"value":1230},{"type":53,"tag":81,"props":2543,"children":2544},{"style":98},[2545],{"type":59,"value":1235},{"type":53,"tag":81,"props":2547,"children":2548},{"style":391},[2549],{"type":59,"value":1240},{"type":53,"tag":81,"props":2551,"children":2552},{"style":104},[2553],{"type":59,"value":470},{"type":53,"tag":81,"props":2555,"children":2556},{"style":391},[2557],{"type":59,"value":1249},{"type":53,"tag":81,"props":2559,"children":2560},{"style":104},[2561],{"type":59,"value":544},{"type":53,"tag":81,"props":2563,"children":2564},{"style":110},[2565],{"type":59,"value":1258},{"type":53,"tag":81,"props":2567,"children":2568},{"style":104},[2569],{"type":59,"value":139},{"type":53,"tag":81,"props":2571,"children":2572},{"style":131},[2573],{"type":59,"value":1267},{"type":53,"tag":81,"props":2575,"children":2576},{"style":104},[2577],{"type":59,"value":139},{"type":53,"tag":81,"props":2579,"children":2580},{"style":110},[2581],{"type":59,"value":1276},{"type":53,"tag":81,"props":2583,"children":2584},{"style":104},[2585],{"type":59,"value":171},{"type":53,"tag":81,"props":2587,"children":2588},{"class":83,"line":339},[2589,2593,2597],{"type":53,"tag":81,"props":2590,"children":2591},{"style":104},[2592],{"type":59,"value":193},{"type":53,"tag":81,"props":2594,"children":2595},{"style":110},[2596],{"type":59,"value":398},{"type":53,"tag":81,"props":2598,"children":2599},{"style":104},[2600],{"type":59,"value":144},{"type":53,"tag":2267,"props":2602,"children":2603},{},[2604,2606,2612,2614,2620],{"type":59,"value":2605},"Due to Fastify plugin type inference limitations, use ",{"type":53,"tag":77,"props":2607,"children":2609},{"className":2608},[],[2610],{"type":59,"value":2611},"satisfies FastifyTRPCPluginOptions\u003CAppRouter>['trpcOptions']",{"type":59,"value":2613}," to get correct types on ",{"type":53,"tag":77,"props":2615,"children":2617},{"className":2616},[],[2618],{"type":59,"value":2619},"onError",{"type":59,"value":2621}," and other callbacks.",{"type":53,"tag":1584,"props":2623,"children":2625},{"id":2624},"limiting-batch-size-with-maxbatchsize",[2626],{"type":59,"value":2627},"Limiting batch size with maxBatchSize",{"type":53,"tag":69,"props":2629,"children":2631},{"className":71,"code":2630,"language":73,"meta":74,"style":74},"server.register(fastifyTRPCPlugin, {\n  prefix: '\u002Ftrpc',\n  trpcOptions: {\n    router: appRouter,\n    createContext,\n    maxBatchSize: 10,\n  } satisfies FastifyTRPCPluginOptions\u003CAppRouter>['trpcOptions'],\n});\n",[2632],{"type":53,"tag":77,"props":2633,"children":2634},{"__ignoreMap":74},[2635,2662,2689,2704,2723,2734,2755,2806],{"type":53,"tag":81,"props":2636,"children":2637},{"class":83,"line":84},[2638,2642,2646,2650,2654,2658],{"type":53,"tag":81,"props":2639,"children":2640},{"style":110},[2641],{"type":59,"value":1005},{"type":53,"tag":81,"props":2643,"children":2644},{"style":104},[2645],{"type":59,"value":525},{"type":53,"tag":81,"props":2647,"children":2648},{"style":359},[2649],{"type":59,"value":1014},{"type":53,"tag":81,"props":2651,"children":2652},{"style":110},[2653],{"type":59,"value":1019},{"type":53,"tag":81,"props":2655,"children":2656},{"style":104},[2657],{"type":59,"value":378},{"type":53,"tag":81,"props":2659,"children":2660},{"style":104},[2661],{"type":59,"value":157},{"type":53,"tag":81,"props":2663,"children":2664},{"class":83,"line":94},[2665,2669,2673,2677,2681,2685],{"type":53,"tag":81,"props":2666,"children":2667},{"style":622},[2668],{"type":59,"value":1036},{"type":53,"tag":81,"props":2670,"children":2671},{"style":104},[2672],{"type":59,"value":630},{"type":53,"tag":81,"props":2674,"children":2675},{"style":104},[2676],{"type":59,"value":128},{"type":53,"tag":81,"props":2678,"children":2679},{"style":131},[2680],{"type":59,"value":1049},{"type":53,"tag":81,"props":2682,"children":2683},{"style":104},[2684],{"type":59,"value":139},{"type":53,"tag":81,"props":2686,"children":2687},{"style":104},[2688],{"type":59,"value":171},{"type":53,"tag":81,"props":2690,"children":2691},{"class":83,"line":147},[2692,2696,2700],{"type":53,"tag":81,"props":2693,"children":2694},{"style":622},[2695],{"type":59,"value":1066},{"type":53,"tag":81,"props":2697,"children":2698},{"style":104},[2699],{"type":59,"value":630},{"type":53,"tag":81,"props":2701,"children":2702},{"style":104},[2703],{"type":59,"value":157},{"type":53,"tag":81,"props":2705,"children":2706},{"class":83,"line":160},[2707,2711,2715,2719],{"type":53,"tag":81,"props":2708,"children":2709},{"style":622},[2710],{"type":59,"value":1083},{"type":53,"tag":81,"props":2712,"children":2713},{"style":104},[2714],{"type":59,"value":630},{"type":53,"tag":81,"props":2716,"children":2717},{"style":110},[2718],{"type":59,"value":881},{"type":53,"tag":81,"props":2720,"children":2721},{"style":104},[2722],{"type":59,"value":171},{"type":53,"tag":81,"props":2724,"children":2725},{"class":83,"line":174},[2726,2730],{"type":53,"tag":81,"props":2727,"children":2728},{"style":110},[2729],{"type":59,"value":1104},{"type":53,"tag":81,"props":2731,"children":2732},{"style":104},[2733],{"type":59,"value":171},{"type":53,"tag":81,"props":2735,"children":2736},{"class":83,"line":187},[2737,2742,2746,2751],{"type":53,"tag":81,"props":2738,"children":2739},{"style":622},[2740],{"type":59,"value":2741},"    maxBatchSize",{"type":53,"tag":81,"props":2743,"children":2744},{"style":104},[2745],{"type":59,"value":630},{"type":53,"tag":81,"props":2747,"children":2748},{"style":956},[2749],{"type":59,"value":2750}," 10",{"type":53,"tag":81,"props":2752,"children":2753},{"style":104},[2754],{"type":59,"value":171},{"type":53,"tag":81,"props":2756,"children":2757},{"class":83,"line":217},[2758,2762,2766,2770,2774,2778,2782,2786,2790,2794,2798,2802],{"type":53,"tag":81,"props":2759,"children":2760},{"style":104},[2761],{"type":59,"value":1230},{"type":53,"tag":81,"props":2763,"children":2764},{"style":98},[2765],{"type":59,"value":1235},{"type":53,"tag":81,"props":2767,"children":2768},{"style":391},[2769],{"type":59,"value":1240},{"type":53,"tag":81,"props":2771,"children":2772},{"style":104},[2773],{"type":59,"value":470},{"type":53,"tag":81,"props":2775,"children":2776},{"style":391},[2777],{"type":59,"value":1249},{"type":53,"tag":81,"props":2779,"children":2780},{"style":104},[2781],{"type":59,"value":544},{"type":53,"tag":81,"props":2783,"children":2784},{"style":110},[2785],{"type":59,"value":1258},{"type":53,"tag":81,"props":2787,"children":2788},{"style":104},[2789],{"type":59,"value":139},{"type":53,"tag":81,"props":2791,"children":2792},{"style":131},[2793],{"type":59,"value":1267},{"type":53,"tag":81,"props":2795,"children":2796},{"style":104},[2797],{"type":59,"value":139},{"type":53,"tag":81,"props":2799,"children":2800},{"style":110},[2801],{"type":59,"value":1276},{"type":53,"tag":81,"props":2803,"children":2804},{"style":104},[2805],{"type":59,"value":171},{"type":53,"tag":81,"props":2807,"children":2808},{"class":83,"line":263},[2809,2813,2817],{"type":53,"tag":81,"props":2810,"children":2811},{"style":104},[2812],{"type":59,"value":193},{"type":53,"tag":81,"props":2814,"children":2815},{"style":110},[2816],{"type":59,"value":398},{"type":53,"tag":81,"props":2818,"children":2819},{"style":104},[2820],{"type":59,"value":144},{"type":53,"tag":2267,"props":2822,"children":2823},{},[2824,2826,2832,2834,2840,2842,2848,2850,2856],{"type":59,"value":2825},"Requests batching more than ",{"type":53,"tag":77,"props":2827,"children":2829},{"className":2828},[],[2830],{"type":59,"value":2831},"maxBatchSize",{"type":59,"value":2833}," operations are rejected with a ",{"type":53,"tag":77,"props":2835,"children":2837},{"className":2836},[],[2838],{"type":59,"value":2839},"400 Bad Request",{"type":59,"value":2841}," error. Set ",{"type":53,"tag":77,"props":2843,"children":2845},{"className":2844},[],[2846],{"type":59,"value":2847},"maxItems",{"type":59,"value":2849}," on your client's ",{"type":53,"tag":77,"props":2851,"children":2853},{"className":2852},[],[2854],{"type":59,"value":2855},"httpBatchLink",{"type":59,"value":2857}," to the same value to avoid exceeding the limit.",{"type":53,"tag":62,"props":2859,"children":2861},{"id":2860},"common-mistakes",[2862],{"type":59,"value":2863},"Common Mistakes",{"type":53,"tag":1584,"props":2865,"children":2867},{"id":2866},"high-registering-fastifywebsocket-after-trpc-plugin",[2868],{"type":59,"value":2869},"HIGH Registering @fastify\u002Fwebsocket after tRPC plugin",{"type":53,"tag":2267,"props":2871,"children":2872},{},[2873],{"type":59,"value":2874},"Wrong:",{"type":53,"tag":69,"props":2876,"children":2878},{"className":71,"code":2877,"language":73,"meta":74,"style":74},"server.register(fastifyTRPCPlugin, {\n  useWSS: true,\n  trpcOptions: { router: appRouter, createContext },\n});\nserver.register(ws); \u002F\u002F too late!\n",[2879],{"type":53,"tag":77,"props":2880,"children":2881},{"__ignoreMap":74},[2882,2909,2928,2970,2985],{"type":53,"tag":81,"props":2883,"children":2884},{"class":83,"line":84},[2885,2889,2893,2897,2901,2905],{"type":53,"tag":81,"props":2886,"children":2887},{"style":110},[2888],{"type":59,"value":1005},{"type":53,"tag":81,"props":2890,"children":2891},{"style":104},[2892],{"type":59,"value":525},{"type":53,"tag":81,"props":2894,"children":2895},{"style":359},[2896],{"type":59,"value":1014},{"type":53,"tag":81,"props":2898,"children":2899},{"style":110},[2900],{"type":59,"value":1019},{"type":53,"tag":81,"props":2902,"children":2903},{"style":104},[2904],{"type":59,"value":378},{"type":53,"tag":81,"props":2906,"children":2907},{"style":104},[2908],{"type":59,"value":157},{"type":53,"tag":81,"props":2910,"children":2911},{"class":83,"line":94},[2912,2916,2920,2924],{"type":53,"tag":81,"props":2913,"children":2914},{"style":622},[2915],{"type":59,"value":2002},{"type":53,"tag":81,"props":2917,"children":2918},{"style":104},[2919],{"type":59,"value":630},{"type":53,"tag":81,"props":2921,"children":2922},{"style":2009},[2923],{"type":59,"value":2012},{"type":53,"tag":81,"props":2925,"children":2926},{"style":104},[2927],{"type":59,"value":171},{"type":53,"tag":81,"props":2929,"children":2930},{"class":83,"line":147},[2931,2935,2939,2943,2948,2952,2956,2960,2965],{"type":53,"tag":81,"props":2932,"children":2933},{"style":622},[2934],{"type":59,"value":1066},{"type":53,"tag":81,"props":2936,"children":2937},{"style":104},[2938],{"type":59,"value":630},{"type":53,"tag":81,"props":2940,"children":2941},{"style":104},[2942],{"type":59,"value":107},{"type":53,"tag":81,"props":2944,"children":2945},{"style":622},[2946],{"type":59,"value":2947}," router",{"type":53,"tag":81,"props":2949,"children":2950},{"style":104},[2951],{"type":59,"value":630},{"type":53,"tag":81,"props":2953,"children":2954},{"style":110},[2955],{"type":59,"value":881},{"type":53,"tag":81,"props":2957,"children":2958},{"style":104},[2959],{"type":59,"value":378},{"type":53,"tag":81,"props":2961,"children":2962},{"style":110},[2963],{"type":59,"value":2964}," createContext ",{"type":53,"tag":81,"props":2966,"children":2967},{"style":104},[2968],{"type":59,"value":2969},"},\n",{"type":53,"tag":81,"props":2971,"children":2972},{"class":83,"line":160},[2973,2977,2981],{"type":53,"tag":81,"props":2974,"children":2975},{"style":104},[2976],{"type":59,"value":193},{"type":53,"tag":81,"props":2978,"children":2979},{"style":110},[2980],{"type":59,"value":398},{"type":53,"tag":81,"props":2982,"children":2983},{"style":104},[2984],{"type":59,"value":144},{"type":53,"tag":81,"props":2986,"children":2987},{"class":83,"line":174},[2988,2992,2996,3000,3004,3009],{"type":53,"tag":81,"props":2989,"children":2990},{"style":110},[2991],{"type":59,"value":1005},{"type":53,"tag":81,"props":2993,"children":2994},{"style":104},[2995],{"type":59,"value":525},{"type":53,"tag":81,"props":2997,"children":2998},{"style":359},[2999],{"type":59,"value":1014},{"type":53,"tag":81,"props":3001,"children":3002},{"style":110},[3003],{"type":59,"value":1929},{"type":53,"tag":81,"props":3005,"children":3006},{"style":104},[3007],{"type":59,"value":3008},";",{"type":53,"tag":81,"props":3010,"children":3011},{"style":88},[3012],{"type":59,"value":3013}," \u002F\u002F too late!\n",{"type":53,"tag":2267,"props":3015,"children":3016},{},[3017],{"type":59,"value":3018},"Correct:",{"type":53,"tag":69,"props":3020,"children":3022},{"className":71,"code":3021,"language":73,"meta":74,"style":74},"server.register(ws); \u002F\u002F register FIRST\nserver.register(fastifyTRPCPlugin, {\n  useWSS: true,\n  trpcOptions: { router: appRouter, createContext },\n});\n",[3023],{"type":53,"tag":77,"props":3024,"children":3025},{"__ignoreMap":74},[3026,3054,3081,3100,3139],{"type":53,"tag":81,"props":3027,"children":3028},{"class":83,"line":84},[3029,3033,3037,3041,3045,3049],{"type":53,"tag":81,"props":3030,"children":3031},{"style":110},[3032],{"type":59,"value":1005},{"type":53,"tag":81,"props":3034,"children":3035},{"style":104},[3036],{"type":59,"value":525},{"type":53,"tag":81,"props":3038,"children":3039},{"style":359},[3040],{"type":59,"value":1014},{"type":53,"tag":81,"props":3042,"children":3043},{"style":110},[3044],{"type":59,"value":1929},{"type":53,"tag":81,"props":3046,"children":3047},{"style":104},[3048],{"type":59,"value":3008},{"type":53,"tag":81,"props":3050,"children":3051},{"style":88},[3052],{"type":59,"value":3053}," \u002F\u002F register FIRST\n",{"type":53,"tag":81,"props":3055,"children":3056},{"class":83,"line":94},[3057,3061,3065,3069,3073,3077],{"type":53,"tag":81,"props":3058,"children":3059},{"style":110},[3060],{"type":59,"value":1005},{"type":53,"tag":81,"props":3062,"children":3063},{"style":104},[3064],{"type":59,"value":525},{"type":53,"tag":81,"props":3066,"children":3067},{"style":359},[3068],{"type":59,"value":1014},{"type":53,"tag":81,"props":3070,"children":3071},{"style":110},[3072],{"type":59,"value":1019},{"type":53,"tag":81,"props":3074,"children":3075},{"style":104},[3076],{"type":59,"value":378},{"type":53,"tag":81,"props":3078,"children":3079},{"style":104},[3080],{"type":59,"value":157},{"type":53,"tag":81,"props":3082,"children":3083},{"class":83,"line":147},[3084,3088,3092,3096],{"type":53,"tag":81,"props":3085,"children":3086},{"style":622},[3087],{"type":59,"value":2002},{"type":53,"tag":81,"props":3089,"children":3090},{"style":104},[3091],{"type":59,"value":630},{"type":53,"tag":81,"props":3093,"children":3094},{"style":2009},[3095],{"type":59,"value":2012},{"type":53,"tag":81,"props":3097,"children":3098},{"style":104},[3099],{"type":59,"value":171},{"type":53,"tag":81,"props":3101,"children":3102},{"class":83,"line":160},[3103,3107,3111,3115,3119,3123,3127,3131,3135],{"type":53,"tag":81,"props":3104,"children":3105},{"style":622},[3106],{"type":59,"value":1066},{"type":53,"tag":81,"props":3108,"children":3109},{"style":104},[3110],{"type":59,"value":630},{"type":53,"tag":81,"props":3112,"children":3113},{"style":104},[3114],{"type":59,"value":107},{"type":53,"tag":81,"props":3116,"children":3117},{"style":622},[3118],{"type":59,"value":2947},{"type":53,"tag":81,"props":3120,"children":3121},{"style":104},[3122],{"type":59,"value":630},{"type":53,"tag":81,"props":3124,"children":3125},{"style":110},[3126],{"type":59,"value":881},{"type":53,"tag":81,"props":3128,"children":3129},{"style":104},[3130],{"type":59,"value":378},{"type":53,"tag":81,"props":3132,"children":3133},{"style":110},[3134],{"type":59,"value":2964},{"type":53,"tag":81,"props":3136,"children":3137},{"style":104},[3138],{"type":59,"value":2969},{"type":53,"tag":81,"props":3140,"children":3141},{"class":83,"line":174},[3142,3146,3150],{"type":53,"tag":81,"props":3143,"children":3144},{"style":104},[3145],{"type":59,"value":193},{"type":53,"tag":81,"props":3147,"children":3148},{"style":110},[3149],{"type":59,"value":398},{"type":53,"tag":81,"props":3151,"children":3152},{"style":104},[3153],{"type":59,"value":144},{"type":53,"tag":2267,"props":3155,"children":3156},{},[3157],{"type":59,"value":3158},"The WebSocket plugin must be registered before the tRPC plugin. Reverse order causes WebSocket routes to not be recognized.",{"type":53,"tag":2267,"props":3160,"children":3161},{},[3162],{"type":59,"value":3163},"Source: www\u002Fdocs\u002Fserver\u002Fadapters\u002Ffastify.md",{"type":53,"tag":1584,"props":3165,"children":3167},{"id":3166},"high-missing-maxparamlength-for-batch-requests",[3168],{"type":59,"value":3169},"HIGH Missing maxParamLength for batch requests",{"type":53,"tag":2267,"props":3171,"children":3172},{},[3173],{"type":59,"value":2874},{"type":53,"tag":69,"props":3175,"children":3177},{"className":71,"code":3176,"language":73,"meta":74,"style":74},"const server = fastify();\n",[3178],{"type":53,"tag":77,"props":3179,"children":3180},{"__ignoreMap":74},[3181],{"type":53,"tag":81,"props":3182,"children":3183},{"class":83,"line":84},[3184,3188,3192,3196,3200,3204],{"type":53,"tag":81,"props":3185,"children":3186},{"style":353},[3187],{"type":59,"value":506},{"type":53,"tag":81,"props":3189,"children":3190},{"style":110},[3191],{"type":59,"value":906},{"type":53,"tag":81,"props":3193,"children":3194},{"style":104},[3195],{"type":59,"value":516},{"type":53,"tag":81,"props":3197,"children":3198},{"style":359},[3199],{"type":59,"value":915},{"type":53,"tag":81,"props":3201,"children":3202},{"style":110},[3203],{"type":59,"value":549},{"type":53,"tag":81,"props":3205,"children":3206},{"style":104},[3207],{"type":59,"value":144},{"type":53,"tag":2267,"props":3209,"children":3210},{},[3211],{"type":59,"value":3018},{"type":53,"tag":69,"props":3213,"children":3215},{"className":71,"code":3214,"language":73,"meta":74,"style":74},"const server = fastify({\n  routerOptions: { maxParamLength: 5000 },\n});\n",[3216],{"type":53,"tag":77,"props":3217,"children":3218},{"__ignoreMap":74},[3219,3246,3277],{"type":53,"tag":81,"props":3220,"children":3221},{"class":83,"line":84},[3222,3226,3230,3234,3238,3242],{"type":53,"tag":81,"props":3223,"children":3224},{"style":353},[3225],{"type":59,"value":506},{"type":53,"tag":81,"props":3227,"children":3228},{"style":110},[3229],{"type":59,"value":906},{"type":53,"tag":81,"props":3231,"children":3232},{"style":104},[3233],{"type":59,"value":516},{"type":53,"tag":81,"props":3235,"children":3236},{"style":359},[3237],{"type":59,"value":915},{"type":53,"tag":81,"props":3239,"children":3240},{"style":110},[3241],{"type":59,"value":610},{"type":53,"tag":81,"props":3243,"children":3244},{"style":104},[3245],{"type":59,"value":615},{"type":53,"tag":81,"props":3247,"children":3248},{"class":83,"line":94},[3249,3253,3257,3261,3265,3269,3273],{"type":53,"tag":81,"props":3250,"children":3251},{"style":622},[3252],{"type":59,"value":932},{"type":53,"tag":81,"props":3254,"children":3255},{"style":104},[3256],{"type":59,"value":630},{"type":53,"tag":81,"props":3258,"children":3259},{"style":104},[3260],{"type":59,"value":107},{"type":53,"tag":81,"props":3262,"children":3263},{"style":622},[3264],{"type":59,"value":1866},{"type":53,"tag":81,"props":3266,"children":3267},{"style":104},[3268],{"type":59,"value":630},{"type":53,"tag":81,"props":3270,"children":3271},{"style":956},[3272],{"type":59,"value":959},{"type":53,"tag":81,"props":3274,"children":3275},{"style":104},[3276],{"type":59,"value":1879},{"type":53,"tag":81,"props":3278,"children":3279},{"class":83,"line":147},[3280,3284,3288],{"type":53,"tag":81,"props":3281,"children":3282},{"style":104},[3283],{"type":59,"value":193},{"type":53,"tag":81,"props":3285,"children":3286},{"style":110},[3287],{"type":59,"value":398},{"type":53,"tag":81,"props":3289,"children":3290},{"style":104},[3291],{"type":59,"value":144},{"type":53,"tag":2267,"props":3293,"children":3294},{},[3295,3297,3303,3305,3310],{"type":59,"value":3296},"Fastify defaults to ",{"type":53,"tag":77,"props":3298,"children":3300},{"className":3299},[],[3301],{"type":59,"value":3302},"maxParamLength: 100",{"type":59,"value":3304},". Batch requests from ",{"type":53,"tag":77,"props":3306,"children":3308},{"className":3307},[],[3309],{"type":59,"value":2855},{"type":59,"value":3311}," encode multiple procedure names in the URL path parameter, which easily exceeds 100 characters and returns a 404.",{"type":53,"tag":2267,"props":3313,"children":3314},{},[3315],{"type":59,"value":3163},{"type":53,"tag":1584,"props":3317,"children":3319},{"id":3318},"critical-using-fastify-v4-with-trpc-v11",[3320],{"type":59,"value":3321},"CRITICAL Using Fastify v4 with tRPC v11",{"type":53,"tag":2267,"props":3323,"children":3324},{},[3325],{"type":59,"value":2874},{"type":53,"tag":69,"props":3327,"children":3331},{"className":3328,"code":3329,"language":3330,"meta":74,"style":74},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"dependencies\": { \"fastify\": \"^4.0.0\" } }\n","json",[3332],{"type":53,"tag":77,"props":3333,"children":3334},{"__ignoreMap":74},[3335],{"type":53,"tag":81,"props":3336,"children":3337},{"class":83,"line":84},[3338,3342,3347,3352,3357,3361,3365,3369,3373,3377,3381,3385,3390,3394,3398],{"type":53,"tag":81,"props":3339,"children":3340},{"style":104},[3341],{"type":59,"value":680},{"type":53,"tag":81,"props":3343,"children":3344},{"style":104},[3345],{"type":59,"value":3346}," \"",{"type":53,"tag":81,"props":3348,"children":3349},{"style":353},[3350],{"type":59,"value":3351},"dependencies",{"type":53,"tag":81,"props":3353,"children":3354},{"style":104},[3355],{"type":59,"value":3356},"\"",{"type":53,"tag":81,"props":3358,"children":3359},{"style":104},[3360],{"type":59,"value":630},{"type":53,"tag":81,"props":3362,"children":3363},{"style":104},[3364],{"type":59,"value":107},{"type":53,"tag":81,"props":3366,"children":3367},{"style":104},[3368],{"type":59,"value":3346},{"type":53,"tag":81,"props":3370,"children":3371},{"style":391},[3372],{"type":59,"value":19},{"type":53,"tag":81,"props":3374,"children":3375},{"style":104},[3376],{"type":59,"value":3356},{"type":53,"tag":81,"props":3378,"children":3379},{"style":104},[3380],{"type":59,"value":630},{"type":53,"tag":81,"props":3382,"children":3383},{"style":104},[3384],{"type":59,"value":3346},{"type":53,"tag":81,"props":3386,"children":3387},{"style":131},[3388],{"type":59,"value":3389},"^4.0.0",{"type":53,"tag":81,"props":3391,"children":3392},{"style":104},[3393],{"type":59,"value":3356},{"type":53,"tag":81,"props":3395,"children":3396},{"style":104},[3397],{"type":59,"value":118},{"type":53,"tag":81,"props":3399,"children":3400},{"style":104},[3401],{"type":59,"value":3402}," }\n",{"type":53,"tag":2267,"props":3404,"children":3405},{},[3406],{"type":59,"value":3018},{"type":53,"tag":69,"props":3408,"children":3410},{"className":3328,"code":3409,"language":3330,"meta":74,"style":74},"{ \"dependencies\": { \"fastify\": \"^5.0.0\" } }\n",[3411],{"type":53,"tag":77,"props":3412,"children":3413},{"__ignoreMap":74},[3414],{"type":53,"tag":81,"props":3415,"children":3416},{"class":83,"line":84},[3417,3421,3425,3429,3433,3437,3441,3445,3449,3453,3457,3461,3466,3470,3474],{"type":53,"tag":81,"props":3418,"children":3419},{"style":104},[3420],{"type":59,"value":680},{"type":53,"tag":81,"props":3422,"children":3423},{"style":104},[3424],{"type":59,"value":3346},{"type":53,"tag":81,"props":3426,"children":3427},{"style":353},[3428],{"type":59,"value":3351},{"type":53,"tag":81,"props":3430,"children":3431},{"style":104},[3432],{"type":59,"value":3356},{"type":53,"tag":81,"props":3434,"children":3435},{"style":104},[3436],{"type":59,"value":630},{"type":53,"tag":81,"props":3438,"children":3439},{"style":104},[3440],{"type":59,"value":107},{"type":53,"tag":81,"props":3442,"children":3443},{"style":104},[3444],{"type":59,"value":3346},{"type":53,"tag":81,"props":3446,"children":3447},{"style":391},[3448],{"type":59,"value":19},{"type":53,"tag":81,"props":3450,"children":3451},{"style":104},[3452],{"type":59,"value":3356},{"type":53,"tag":81,"props":3454,"children":3455},{"style":104},[3456],{"type":59,"value":630},{"type":53,"tag":81,"props":3458,"children":3459},{"style":104},[3460],{"type":59,"value":3346},{"type":53,"tag":81,"props":3462,"children":3463},{"style":131},[3464],{"type":59,"value":3465},"^5.0.0",{"type":53,"tag":81,"props":3467,"children":3468},{"style":104},[3469],{"type":59,"value":3356},{"type":53,"tag":81,"props":3471,"children":3472},{"style":104},[3473],{"type":59,"value":118},{"type":53,"tag":81,"props":3475,"children":3476},{"style":104},[3477],{"type":59,"value":3402},{"type":53,"tag":2267,"props":3479,"children":3480},{},[3481],{"type":59,"value":3482},"tRPC v11 requires Fastify v5+. Fastify v4 may return empty responses without errors due to incompatible response handling.",{"type":53,"tag":2267,"props":3484,"children":3485},{},[3486],{"type":59,"value":3163},{"type":53,"tag":62,"props":3488,"children":3490},{"id":3489},"see-also",[3491],{"type":59,"value":3492},"See Also",{"type":53,"tag":3494,"props":3495,"children":3496},"ul",{},[3497,3516,3540,3550],{"type":53,"tag":3498,"props":3499,"children":3500},"li",{},[3501,3506,3508,3514],{"type":53,"tag":3502,"props":3503,"children":3504},"strong",{},[3505],{"type":59,"value":45},{"type":59,"value":3507}," -- ",{"type":53,"tag":77,"props":3509,"children":3511},{"className":3510},[],[3512],{"type":59,"value":3513},"initTRPC.create()",{"type":59,"value":3515},", router\u002Fprocedure definition, context",{"type":53,"tag":3498,"props":3517,"children":3518},{},[3519,3524,3526,3532,3534],{"type":53,"tag":3502,"props":3520,"children":3521},{},[3522],{"type":59,"value":3523},"subscriptions",{"type":59,"value":3525}," -- async generator subscriptions, ",{"type":53,"tag":77,"props":3527,"children":3529},{"className":3528},[],[3530],{"type":59,"value":3531},"tracked()",{"type":59,"value":3533},", ",{"type":53,"tag":77,"props":3535,"children":3537},{"className":3536},[],[3538],{"type":59,"value":3539},"keepAlive",{"type":53,"tag":3498,"props":3541,"children":3542},{},[3543,3548],{"type":53,"tag":3502,"props":3544,"children":3545},{},[3546],{"type":59,"value":3547},"adapter-standalone",{"type":59,"value":3549}," -- simpler adapter when Fastify features are not needed",{"type":53,"tag":3498,"props":3551,"children":3552},{},[3553,3555],{"type":59,"value":3554},"Fastify docs: ",{"type":53,"tag":3556,"props":3557,"children":3561},"a",{"href":3558,"rel":3559},"https:\u002F\u002Ffastify.dev\u002Fdocs\u002Flatest\u002F",[3560],"nofollow",[3562],{"type":59,"value":3558},{"type":53,"tag":3564,"props":3565,"children":3566},"style",{},[3567],{"type":59,"value":3568},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3570,"total":852},[3571,3584,3597,3604,3624,3636,3650,3664,3676,3690,3700,3712],{"slug":3572,"name":3572,"fn":3573,"description":3574,"org":3575,"tags":3576,"stars":23,"repoUrl":24,"updatedAt":3583},"adapter-aws-lambda","deploy tRPC APIs on AWS Lambda","Deploy tRPC on AWS Lambda with awsLambdaRequestHandler() from @trpc\u002Fserver\u002Fadapters\u002Faws-lambda for API Gateway v1 (REST, APIGatewayProxyEvent) and v2 (HTTP, APIGatewayProxyEventV2), and Lambda Function URLs. Enable response streaming with awsLambdaStreamingRequestHandler() wrapped in awslambda.streamifyResponse(). CreateAWSLambdaContextOptions provides event and context for context creation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3577,3578,3581,3582],{"name":21,"slug":22,"type":15},{"name":3579,"slug":3580,"type":15},"AWS","aws",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-18T05:47:05.451869",{"slug":3585,"name":3585,"fn":3586,"description":3587,"org":3588,"tags":3589,"stars":23,"repoUrl":24,"updatedAt":3596},"adapter-express","mount tRPC as Express middleware","Mount tRPC as Express middleware with createExpressMiddleware() from @trpc\u002Fserver\u002Fadapters\u002Fexpress. Access Express req\u002Fres in createContext via CreateExpressContextOptions. Mount at a path prefix like app.use('\u002Ftrpc', ...). Avoid global express.json() conflicting with tRPC body parsing for FormData.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3590,3591,3592,3595],{"name":21,"slug":22,"type":15},{"name":13,"slug":14,"type":15},{"name":3593,"slug":3594,"type":15},"Express","express",{"name":9,"slug":8,"type":15},"2026-07-18T05:46:53.274248",{"slug":4,"name":4,"fn":5,"description":6,"org":3598,"tags":3599,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3600,3601,3602,3603],{"name":21,"slug":22,"type":15},{"name":13,"slug":14,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"slug":3605,"name":3605,"fn":3606,"description":3607,"org":3608,"tags":3609,"stars":23,"repoUrl":24,"updatedAt":3623},"adapter-fetch","deploy tRPC on edge runtimes","Deploy tRPC on WinterCG-compliant edge runtimes with fetchRequestHandler() from @trpc\u002Fserver\u002Fadapters\u002Ffetch. Supports Cloudflare Workers, Deno Deploy, Vercel Edge Runtime, Astro, Remix, SolidStart. FetchCreateContextFnOptions provides req (Request) and resHeaders (Headers) for context creation. The endpoint option must match the URL path prefix where the handler is mounted.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3610,3613,3616,3619,3620],{"name":3611,"slug":3612,"type":15},"Cloudflare","cloudflare",{"name":3614,"slug":3615,"type":15},"Deployment","deployment",{"name":3617,"slug":3618,"type":15},"Edge","edge",{"name":9,"slug":8,"type":15},{"name":3621,"slug":3622,"type":15},"Vercel","vercel","2026-07-18T05:46:50.548228",{"slug":3547,"name":3547,"fn":3625,"description":3626,"org":3627,"tags":3628,"stars":23,"repoUrl":24,"updatedAt":3635},"mount tRPC on Node.js servers","Mount tRPC on Node.js built-in HTTP server with createHTTPServer() from @trpc\u002Fserver\u002Fadapters\u002Fstandalone, createHTTPHandler() for custom http.createServer, createHTTP2Handler() for HTTP\u002F2 with TLS. Configure basePath to slice URL prefix, CORS via the cors npm package passed as middleware option. CreateHTTPContextOptions provides req and res for context creation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3629,3630,3631,3634],{"name":21,"slug":22,"type":15},{"name":13,"slug":14,"type":15},{"name":3632,"slug":3633,"type":15},"Node.js","node-js",{"name":9,"slug":8,"type":15},"2026-07-18T05:46:58.093869",{"slug":3637,"name":3637,"fn":3638,"description":3639,"org":3640,"tags":3641,"stars":23,"repoUrl":24,"updatedAt":3649},"auth","implement authentication in tRPC applications","Implement JWT\u002Fcookie authentication and authorization in tRPC using createContext for user extraction, t.middleware with opts.next({ ctx }) for context narrowing to non-null user, protectedProcedure base pattern, client-side Authorization headers via httpBatchLink headers(), WebSocket connectionParams, and SSE auth via cookies or EventSource polyfill custom headers.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3642,3644,3647,3648],{"name":3643,"slug":3637,"type":15},"Auth",{"name":3645,"slug":3646,"type":15},"Authentication","authentication",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-18T05:46:45.347628",{"slug":3651,"name":3651,"fn":3652,"description":3653,"org":3654,"tags":3655,"stars":23,"repoUrl":24,"updatedAt":3663},"caching","configure HTTP caching for tRPC queries","Set HTTP cache headers on tRPC query responses via responseMeta callback for CDN and browser caching. Configure Cache-Control, s-maxage, stale-while-revalidate. Handle caching with batching and authenticated requests. Avoid caching mutations, errors, and authenticated responses.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3656,3657,3659,3662],{"name":13,"slug":14,"type":15},{"name":3658,"slug":3651,"type":15},"Caching",{"name":3660,"slug":3661,"type":15},"Performance","performance",{"name":9,"slug":8,"type":15},"2026-07-18T05:46:45.86443",{"slug":3665,"name":3665,"fn":3666,"description":3667,"org":3668,"tags":3669,"stars":23,"repoUrl":24,"updatedAt":3675},"client-setup","set up vanilla tRPC clients","Create a vanilla tRPC client with createTRPCClient\u003CAppRouter>(), configure link chain with httpBatchLink\u002FhttpLink, dynamic headers for auth, transformer on links (not client constructor). Infer types with inferRouterInputs and inferRouterOutputs. AbortController signal support. TRPCClientError typing.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3670,3671,3674],{"name":21,"slug":22,"type":15},{"name":3672,"slug":3673,"type":15},"Frontend","frontend",{"name":9,"slug":8,"type":15},"2026-07-18T05:48:11.437946",{"slug":3677,"name":3677,"fn":3678,"description":3679,"org":3680,"tags":3681,"stars":23,"repoUrl":24,"updatedAt":3689},"error-handling","implement typed error handling in tRPC","Throw typed errors with TRPCError and error codes (NOT_FOUND, UNAUTHORIZED, BAD_REQUEST, INTERNAL_SERVER_ERROR), configure errorFormatter for client-side Zod error display, handle errors globally with onError callback, map tRPC errors to HTTP status codes with getHTTPStatusCodeFromError().\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3682,3683,3686,3687],{"name":13,"slug":14,"type":15},{"name":3684,"slug":3685,"type":15},"Debugging","debugging",{"name":9,"slug":8,"type":15},{"name":3688,"slug":34,"type":15},"TypeScript","2026-07-18T05:46:52.798151",{"slug":3691,"name":3691,"fn":3692,"description":3693,"org":3694,"tags":3695,"stars":23,"repoUrl":24,"updatedAt":3699},"links","configure tRPC client link chains","Configure the tRPC client link chain: httpLink, httpBatchLink, httpBatchStreamLink, splitLink, loggerLink, wsLink, createWSClient, httpSubscriptionLink, unstable_localLink, retryLink. Choose the right terminating link. Route subscriptions via splitLink. Build custom links for SOA routing. Link options: url, headers, transformer, maxURLLength, maxItems, connectionParams, EventSource ponyfill.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3696,3697,3698],{"name":21,"slug":22,"type":15},{"name":3672,"slug":3673,"type":15},{"name":9,"slug":8,"type":15},"2026-07-18T05:47:06.847309",{"slug":3701,"name":3701,"fn":3702,"description":3703,"org":3704,"tags":3705,"stars":23,"repoUrl":24,"updatedAt":3711},"middlewares","compose middleware for tRPC procedures","Create and compose tRPC middleware with t.procedure.use(), extend context via opts.next({ ctx }), build reusable middleware with .concat() and .unstable_pipe(), define base procedures like publicProcedure and authedProcedure. Access raw input with getRawInput(). Logging, timing, OTEL tracing patterns.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3706,3707,3710],{"name":13,"slug":14,"type":15},{"name":3708,"slug":3709,"type":15},"Middleware","middleware",{"name":9,"slug":8,"type":15},"2026-07-18T05:46:49.132255",{"slug":3713,"name":3713,"fn":3714,"description":3715,"org":3716,"tags":3717,"stars":23,"repoUrl":24,"updatedAt":3725},"nextjs-app-router","implement tRPC in Next.js App Router","Full end-to-end tRPC setup for Next.js App Router. Covers route handler with fetchRequestHandler (GET + POST exports), TRPCProvider with QueryClientProvider, createTRPCOptionsProxy for RSC prefetching, HydrateClient\u002FHydrationBoundary for hydration, useSuspenseQuery for Suspense, and server-side callers.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3718,3719,3720,3723,3724],{"name":13,"slug":14,"type":15},{"name":3672,"slug":3673,"type":15},{"name":3721,"slug":3722,"type":15},"Next.js","next-js",{"name":9,"slug":8,"type":15},{"name":3688,"slug":34,"type":15},"2026-07-18T05:47:10.468453",{"items":3727,"total":852},[3728,3735,3742,3749,3757,3764,3771],{"slug":3572,"name":3572,"fn":3573,"description":3574,"org":3729,"tags":3730,"stars":23,"repoUrl":24,"updatedAt":3583},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3731,3732,3733,3734],{"name":21,"slug":22,"type":15},{"name":3579,"slug":3580,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"slug":3585,"name":3585,"fn":3586,"description":3587,"org":3736,"tags":3737,"stars":23,"repoUrl":24,"updatedAt":3596},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3738,3739,3740,3741],{"name":21,"slug":22,"type":15},{"name":13,"slug":14,"type":15},{"name":3593,"slug":3594,"type":15},{"name":9,"slug":8,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":3743,"tags":3744,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3745,3746,3747,3748],{"name":21,"slug":22,"type":15},{"name":13,"slug":14,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"slug":3605,"name":3605,"fn":3606,"description":3607,"org":3750,"tags":3751,"stars":23,"repoUrl":24,"updatedAt":3623},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3752,3753,3754,3755,3756],{"name":3611,"slug":3612,"type":15},{"name":3614,"slug":3615,"type":15},{"name":3617,"slug":3618,"type":15},{"name":9,"slug":8,"type":15},{"name":3621,"slug":3622,"type":15},{"slug":3547,"name":3547,"fn":3625,"description":3626,"org":3758,"tags":3759,"stars":23,"repoUrl":24,"updatedAt":3635},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3760,3761,3762,3763],{"name":21,"slug":22,"type":15},{"name":13,"slug":14,"type":15},{"name":3632,"slug":3633,"type":15},{"name":9,"slug":8,"type":15},{"slug":3637,"name":3637,"fn":3638,"description":3639,"org":3765,"tags":3766,"stars":23,"repoUrl":24,"updatedAt":3649},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3767,3768,3769,3770],{"name":3643,"slug":3637,"type":15},{"name":3645,"slug":3646,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"slug":3651,"name":3651,"fn":3652,"description":3653,"org":3772,"tags":3773,"stars":23,"repoUrl":24,"updatedAt":3663},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3774,3775,3776,3777],{"name":13,"slug":14,"type":15},{"name":3658,"slug":3651,"type":15},{"name":3660,"slug":3661,"type":15},{"name":9,"slug":8,"type":15}]