[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-tanstack-server-routes":3,"mdc--qkyzy3-key":50,"related-org-tanstack-server-routes":4775,"related-repo-tanstack-server-routes":4919},{"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":45,"sourceUrl":48,"mdContent":49},"server-routes","create server-side API routes","Server-side API endpoints using the server property on createFileRoute, HTTP method handlers (GET, POST, PUT, DELETE), createHandlers for per-handler middleware, handler context (request, params, context), request body parsing, response helpers, file naming for API routes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"tanstack","TanStack","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftanstack.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Backend","backend","tag",{"name":17,"slug":18,"type":15},"REST API","rest-api",{"name":20,"slug":21,"type":15},"API Development","api-development",{"name":9,"slug":8,"type":15},14787,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Frouter","2026-07-30T05:27:18.540978",null,1761,[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"framework","fullstack","javascript","react","route","router","routing","rpc","search","searchparams","server-functions","ssr","state-management","typesafe","typescript","url",{"repoUrl":24,"stars":23,"forks":27,"topics":46,"description":47},[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"🤖 A client-first, server-capable, fully type-safe router and full-stack framework for the web (React and more).","https:\u002F\u002Fgithub.com\u002FTanStack\u002Frouter\u002Ftree\u002FHEAD\u002Fpackages\u002Fstart-client-core\u002Fskills\u002Fstart-core\u002Fserver-routes","---\nname: server-routes\ndescription: >-\n  Server-side API endpoints using the server property on\n  createFileRoute, HTTP method handlers (GET, POST, PUT, DELETE),\n  createHandlers for per-handler middleware, handler context\n  (request, params, context), request body parsing, response\n  helpers, file naming for API routes.\nmetadata:\n  type: sub-skill\n  library: tanstack-start\n  library_version: '1.170.14'\nrequires:\n  - start-core\nsources:\n  - TanStack\u002Frouter:docs\u002Fstart\u002Fframework\u002Freact\u002Fguide\u002Fserver-routes.md\n---\n\n# Server Routes\n\nServer routes are API endpoints defined alongside app routes in the `src\u002Froutes` directory. They use the `server` property on `createFileRoute` and handle raw HTTP requests.\n\nUse server routes when callers need an HTTP contract. For data used only by the Start application, prefer a server function and call it directly from the loader. A route loader runs during SSR and client navigation, so `fetch('\u002Fapi\u002F...')` is not a portable loader pattern.\n\n## Basic Server Route\n\n```ts\n\u002F\u002F src\u002Froutes\u002Fapi\u002Fhello.ts\nimport { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Fapi\u002Fhello')({\n  server: {\n    handlers: {\n      GET: async ({ request }) => {\n        return new Response('Hello, World!')\n      },\n    },\n  },\n})\n```\n\n## Combining Server Route and App Route\n\nThe same file can define both a server route and a UI route:\n\n```tsx\n\u002F\u002F src\u002Froutes\u002Fhello.tsx\nimport { createFileRoute } from '@tanstack\u002Freact-router'\nimport { useState } from 'react'\n\nexport const Route = createFileRoute('\u002Fhello')({\n  server: {\n    handlers: {\n      POST: async ({ request }) => {\n        const body = await request.json()\n        return Response.json({ message: `Hello, ${body.name}!` })\n      },\n    },\n  },\n  component: HelloComponent,\n})\n\nfunction HelloComponent() {\n  const [reply, setReply] = useState('')\n  return (\n    \u003Cbutton\n      onClick={() => {\n        fetch('\u002Fhello', {\n          method: 'POST',\n          headers: { 'Content-Type': 'application\u002Fjson' },\n          body: JSON.stringify({ name: 'Tanner' }),\n        })\n          .then((res) => res.json())\n          .then((data) => setReply(data.message))\n      }}\n    >\n      Say Hello {reply && `- ${reply}`}\n    \u003C\u002Fbutton>\n  )\n}\n```\n\nThe relative `fetch('\u002Fhello')` above is safe because it runs only in a browser click handler.\n\n## Sharing Data with a Start Route\n\nDo not make the SSR loader call its own server route. Put the business operation in a server-only service, then expose it through both boundaries when both are required:\n\n```tsx\n\u002F\u002F src\u002Fserver\u002Fissues.server.ts\nexport function listIssues() {\n  return db.issues.findMany()\n}\n\n\u002F\u002F src\u002Froutes\u002Fapi\u002Fissues.ts\nexport const Route = createFileRoute('\u002Fapi\u002Fissues')({\n  server: {\n    handlers: {\n      GET: async () => Response.json(await listIssues()),\n    },\n  },\n})\n\n\u002F\u002F src\u002Froutes\u002Fissues.tsx\nconst getIssues = createServerFn({ method: 'GET' }).handler(() => {\n  return listIssues()\n})\n\nexport const Route = createFileRoute('\u002Fissues')({\n  loader: () => getIssues(),\n})\n```\n\nThis keeps SSR independent of URL resolution and keeps one source of business logic.\n\n## File Route Conventions\n\nServer routes follow TanStack Router file-based routing conventions:\n\n| File                        | Route                         |\n| --------------------------- | ----------------------------- |\n| `routes\u002Fusers.ts`           | `\u002Fusers`                      |\n| `routes\u002Fusers\u002F$id.ts`       | `\u002Fusers\u002F$id`                  |\n| `routes\u002Fusers\u002F$id\u002Fposts.ts` | `\u002Fusers\u002F$id\u002Fposts`            |\n| `routes\u002Fapi\u002Ffile\u002F$.ts`      | `\u002Fapi\u002Ffile\u002F$` (splat)         |\n| `routes\u002Fmy-script[.]js.ts`  | `\u002Fmy-script.js` (escaped dot) |\n\n## Unique Route Paths\n\nEach route can only have a single handler file. These would conflict:\n\n- `routes\u002Fusers.ts`\n- `routes\u002Fusers.index.ts`\n- `routes\u002Fusers\u002Findex.ts`\n\n## Handler Context\n\nEach handler receives:\n\n- `request` — the incoming [Request](https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FRequest) object\n- `params` — dynamic path parameters\n- `context` — context from middleware\n- `pathname` — the matched pathname\n- `next` — call to fall through to SSR (returns a `Response`)\n\n## Dynamic Path Params\n\n```ts\n\u002F\u002F routes\u002Fusers\u002F$id.ts\nimport { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Fusers\u002F$id')({\n  server: {\n    handlers: {\n      GET: async ({ params }) => {\n        return new Response(`User ID: ${params.id}`)\n      },\n    },\n  },\n})\n```\n\n## Splat\u002FWildcard Params\n\n```ts\n\u002F\u002F routes\u002Ffile\u002F$.ts\nimport { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Ffile\u002F$')({\n  server: {\n    handlers: {\n      GET: async ({ params }) => {\n        return new Response(`File: ${params._splat}`)\n      },\n    },\n  },\n})\n```\n\n## Request Body Handling\n\n```ts\nexport const Route = createFileRoute('\u002Fapi\u002Fusers')({\n  server: {\n    handlers: {\n      POST: async ({ request }) => {\n        const body = await request.json()\n        return Response.json({ created: body.name })\n      },\n    },\n  },\n})\n```\n\nOther body methods: `request.text()`, `request.formData()`.\n\n## JSON Responses\n\n```ts\n\u002F\u002F Using Response.json helper\nhandlers: {\n  GET: async () => {\n    return Response.json({ message: 'Hello!' })\n  },\n}\n```\n\n## Status Codes and Headers\n\n```ts\nhandlers: {\n  GET: async ({ params }) => {\n    const user = await findUser(params.id)\n    if (!user) {\n      return new Response('Not found', { status: 404 })\n    }\n    return Response.json(user)\n  },\n}\n```\n\n```ts\nhandlers: {\n  GET: async () => {\n    return new Response('Hello', {\n      headers: { 'Content-Type': 'text\u002Fplain' },\n    })\n  },\n}\n```\n\n## Middleware on Server Routes\n\n### All handlers\n\n```tsx\nexport const Route = createFileRoute('\u002Fapi\u002Fadmin')({\n  server: {\n    middleware: [authMiddleware, loggerMiddleware],\n    handlers: {\n      GET: async ({ context }) => Response.json(context.user),\n      POST: async ({ request, context }) => {\n        \u002F* ... *\u002F\n      },\n    },\n  },\n})\n```\n\n### Specific handlers with createHandlers\n\n```tsx\nexport const Route = createFileRoute('\u002Fapi\u002Fdata')({\n  server: {\n    handlers: ({ createHandlers }) =>\n      createHandlers({\n        GET: async () => Response.json({ public: true }),\n        POST: {\n          middleware: [authMiddleware],\n          handler: async ({ context }) => {\n            return Response.json({ user: context.session.user })\n          },\n        },\n      }),\n  },\n})\n```\n\n### Combined route-level and handler-specific\n\n```tsx\nexport const Route = createFileRoute('\u002Fapi\u002Fposts')({\n  server: {\n    middleware: [authMiddleware], \u002F\u002F runs first for all\n    handlers: ({ createHandlers }) =>\n      createHandlers({\n        GET: async () => Response.json([]),\n        POST: {\n          middleware: [validationMiddleware], \u002F\u002F runs after auth, POST only\n          handler: async ({ request }) => {\n            const body = await request.json()\n            return Response.json({ created: true })\n          },\n        },\n      }),\n  },\n})\n```\n\n## Common Mistakes\n\n### 1. CRITICAL: Protecting the page but not the server route\n\nEvery handler that reads or writes private data must authenticate and authorize the request through route middleware, handler middleware, or an in-handler check. A router `beforeLoad` redirect does not protect `\u002Fapi\u002F...`. Test the handler directly without cookies and assert that no private payload is returned.\n\n### 2. MEDIUM: Duplicate route paths\n\n```text\n# WRONG — both resolve to \u002Fusers, causes error\nroutes\u002Fusers.ts\nroutes\u002Fusers\u002Findex.ts\n\n# CORRECT — pick one\nroutes\u002Fusers.ts\n```\n\n### 3. MEDIUM: Forgetting to await request body methods\n\n```ts\n\u002F\u002F WRONG — body is a Promise, not the actual data\nconst body = request.json()\n\n\u002F\u002F CORRECT — await the promise\nconst body = await request.json()\n```\n\n### 4. HIGH: Trusting TypeScript as response-schema validation\n\nValidate request input and test the serialized `Response` output. A typed service can still be projected or serialized without a newly added field. For schema changes, assert `await response.json()` at the server-route boundary.\n\n## Cross-References\n\n- [start-core\u002Fmiddleware](..\u002Fmiddleware\u002FSKILL.md) — middleware for server routes\n- [start-core\u002Fserver-functions](..\u002Fserver-functions\u002FSKILL.md) — alternative for RPC-style calls\n",{"data":51,"body":60},{"name":4,"description":6,"metadata":52,"requires":56,"sources":58},{"type":53,"library":54,"library_version":55},"sub-skill","tanstack-start","1.170.14",[57],"start-core",[59],"TanStack\u002Frouter:docs\u002Fstart\u002Fframework\u002Freact\u002Fguide\u002Fserver-routes.md",{"type":61,"children":62},"root",[63,71,102,115,122,423,429,434,1379,1392,1398,1403,1885,1890,1896,1901,2038,2044,2049,2080,2086,2091,2167,2173,2428,2434,2689,2695,2938,2958,2964,3095,3101,3352,3516,3522,3529,3789,3795,4169,4175,4560,4566,4572,4593,4599,4609,4615,4712,4718,4738,4744,4769],{"type":64,"tag":65,"props":66,"children":67},"element","h1",{"id":4},[68],{"type":69,"value":70},"text","Server Routes",{"type":64,"tag":72,"props":73,"children":74},"p",{},[75,77,84,86,92,94,100],{"type":69,"value":76},"Server routes are API endpoints defined alongside app routes in the ",{"type":64,"tag":78,"props":79,"children":81},"code",{"className":80},[],[82],{"type":69,"value":83},"src\u002Froutes",{"type":69,"value":85}," directory. They use the ",{"type":64,"tag":78,"props":87,"children":89},{"className":88},[],[90],{"type":69,"value":91},"server",{"type":69,"value":93}," property on ",{"type":64,"tag":78,"props":95,"children":97},{"className":96},[],[98],{"type":69,"value":99},"createFileRoute",{"type":69,"value":101}," and handle raw HTTP requests.",{"type":64,"tag":72,"props":103,"children":104},{},[105,107,113],{"type":69,"value":106},"Use server routes when callers need an HTTP contract. For data used only by the Start application, prefer a server function and call it directly from the loader. A route loader runs during SSR and client navigation, so ",{"type":64,"tag":78,"props":108,"children":110},{"className":109},[],[111],{"type":69,"value":112},"fetch('\u002Fapi\u002F...')",{"type":69,"value":114}," is not a portable loader pattern.",{"type":64,"tag":116,"props":117,"children":119},"h2",{"id":118},"basic-server-route",[120],{"type":69,"value":121},"Basic Server Route",{"type":64,"tag":123,"props":124,"children":129},"pre",{"className":125,"code":126,"language":127,"meta":128,"style":128},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F src\u002Froutes\u002Fapi\u002Fhello.ts\nimport { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Fapi\u002Fhello')({\n  server: {\n    handlers: {\n      GET: async ({ request }) => {\n        return new Response('Hello, World!')\n      },\n    },\n  },\n})\n","ts","",[130],{"type":64,"tag":78,"props":131,"children":132},{"__ignoreMap":128},[133,145,193,203,262,282,299,342,383,392,401,410],{"type":64,"tag":134,"props":135,"children":138},"span",{"class":136,"line":137},"line",1,[139],{"type":64,"tag":134,"props":140,"children":142},{"style":141},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[143],{"type":69,"value":144},"\u002F\u002F src\u002Froutes\u002Fapi\u002Fhello.ts\n",{"type":64,"tag":134,"props":146,"children":148},{"class":136,"line":147},2,[149,155,161,167,172,177,182,188],{"type":64,"tag":134,"props":150,"children":152},{"style":151},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[153],{"type":69,"value":154},"import",{"type":64,"tag":134,"props":156,"children":158},{"style":157},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[159],{"type":69,"value":160}," {",{"type":64,"tag":134,"props":162,"children":164},{"style":163},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[165],{"type":69,"value":166}," createFileRoute",{"type":64,"tag":134,"props":168,"children":169},{"style":157},[170],{"type":69,"value":171}," }",{"type":64,"tag":134,"props":173,"children":174},{"style":151},[175],{"type":69,"value":176}," from",{"type":64,"tag":134,"props":178,"children":179},{"style":157},[180],{"type":69,"value":181}," '",{"type":64,"tag":134,"props":183,"children":185},{"style":184},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[186],{"type":69,"value":187},"@tanstack\u002Freact-router",{"type":64,"tag":134,"props":189,"children":190},{"style":157},[191],{"type":69,"value":192},"'\n",{"type":64,"tag":134,"props":194,"children":196},{"class":136,"line":195},3,[197],{"type":64,"tag":134,"props":198,"children":200},{"emptyLinePlaceholder":199},true,[201],{"type":69,"value":202},"\n",{"type":64,"tag":134,"props":204,"children":206},{"class":136,"line":205},4,[207,212,218,223,228,233,238,243,248,252,257],{"type":64,"tag":134,"props":208,"children":209},{"style":151},[210],{"type":69,"value":211},"export",{"type":64,"tag":134,"props":213,"children":215},{"style":214},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[216],{"type":69,"value":217}," const",{"type":64,"tag":134,"props":219,"children":220},{"style":163},[221],{"type":69,"value":222}," Route ",{"type":64,"tag":134,"props":224,"children":225},{"style":157},[226],{"type":69,"value":227},"=",{"type":64,"tag":134,"props":229,"children":231},{"style":230},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[232],{"type":69,"value":166},{"type":64,"tag":134,"props":234,"children":235},{"style":163},[236],{"type":69,"value":237},"(",{"type":64,"tag":134,"props":239,"children":240},{"style":157},[241],{"type":69,"value":242},"'",{"type":64,"tag":134,"props":244,"children":245},{"style":184},[246],{"type":69,"value":247},"\u002Fapi\u002Fhello",{"type":64,"tag":134,"props":249,"children":250},{"style":157},[251],{"type":69,"value":242},{"type":64,"tag":134,"props":253,"children":254},{"style":163},[255],{"type":69,"value":256},")(",{"type":64,"tag":134,"props":258,"children":259},{"style":157},[260],{"type":69,"value":261},"{\n",{"type":64,"tag":134,"props":263,"children":265},{"class":136,"line":264},5,[266,272,277],{"type":64,"tag":134,"props":267,"children":269},{"style":268},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[270],{"type":69,"value":271},"  server",{"type":64,"tag":134,"props":273,"children":274},{"style":157},[275],{"type":69,"value":276},":",{"type":64,"tag":134,"props":278,"children":279},{"style":157},[280],{"type":69,"value":281}," {\n",{"type":64,"tag":134,"props":283,"children":285},{"class":136,"line":284},6,[286,291,295],{"type":64,"tag":134,"props":287,"children":288},{"style":268},[289],{"type":69,"value":290},"    handlers",{"type":64,"tag":134,"props":292,"children":293},{"style":157},[294],{"type":69,"value":276},{"type":64,"tag":134,"props":296,"children":297},{"style":157},[298],{"type":69,"value":281},{"type":64,"tag":134,"props":300,"children":302},{"class":136,"line":301},7,[303,308,312,317,322,328,333,338],{"type":64,"tag":134,"props":304,"children":305},{"style":230},[306],{"type":69,"value":307},"      GET",{"type":64,"tag":134,"props":309,"children":310},{"style":157},[311],{"type":69,"value":276},{"type":64,"tag":134,"props":313,"children":314},{"style":214},[315],{"type":69,"value":316}," async",{"type":64,"tag":134,"props":318,"children":319},{"style":157},[320],{"type":69,"value":321}," ({",{"type":64,"tag":134,"props":323,"children":325},{"style":324},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[326],{"type":69,"value":327}," request",{"type":64,"tag":134,"props":329,"children":330},{"style":157},[331],{"type":69,"value":332}," })",{"type":64,"tag":134,"props":334,"children":335},{"style":214},[336],{"type":69,"value":337}," =>",{"type":64,"tag":134,"props":339,"children":340},{"style":157},[341],{"type":69,"value":281},{"type":64,"tag":134,"props":343,"children":345},{"class":136,"line":344},8,[346,351,356,361,365,369,374,378],{"type":64,"tag":134,"props":347,"children":348},{"style":151},[349],{"type":69,"value":350},"        return",{"type":64,"tag":134,"props":352,"children":353},{"style":157},[354],{"type":69,"value":355}," new",{"type":64,"tag":134,"props":357,"children":358},{"style":230},[359],{"type":69,"value":360}," Response",{"type":64,"tag":134,"props":362,"children":363},{"style":268},[364],{"type":69,"value":237},{"type":64,"tag":134,"props":366,"children":367},{"style":157},[368],{"type":69,"value":242},{"type":64,"tag":134,"props":370,"children":371},{"style":184},[372],{"type":69,"value":373},"Hello, World!",{"type":64,"tag":134,"props":375,"children":376},{"style":157},[377],{"type":69,"value":242},{"type":64,"tag":134,"props":379,"children":380},{"style":268},[381],{"type":69,"value":382},")\n",{"type":64,"tag":134,"props":384,"children":386},{"class":136,"line":385},9,[387],{"type":64,"tag":134,"props":388,"children":389},{"style":157},[390],{"type":69,"value":391},"      },\n",{"type":64,"tag":134,"props":393,"children":395},{"class":136,"line":394},10,[396],{"type":64,"tag":134,"props":397,"children":398},{"style":157},[399],{"type":69,"value":400},"    },\n",{"type":64,"tag":134,"props":402,"children":404},{"class":136,"line":403},11,[405],{"type":64,"tag":134,"props":406,"children":407},{"style":157},[408],{"type":69,"value":409},"  },\n",{"type":64,"tag":134,"props":411,"children":413},{"class":136,"line":412},12,[414,419],{"type":64,"tag":134,"props":415,"children":416},{"style":157},[417],{"type":69,"value":418},"}",{"type":64,"tag":134,"props":420,"children":421},{"style":163},[422],{"type":69,"value":382},{"type":64,"tag":116,"props":424,"children":426},{"id":425},"combining-server-route-and-app-route",[427],{"type":69,"value":428},"Combining Server Route and App Route",{"type":64,"tag":72,"props":430,"children":431},{},[432],{"type":69,"value":433},"The same file can define both a server route and a UI route:",{"type":64,"tag":123,"props":435,"children":439},{"className":436,"code":437,"language":438,"meta":128,"style":128},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F src\u002Froutes\u002Fhello.tsx\nimport { createFileRoute } from '@tanstack\u002Freact-router'\nimport { useState } from 'react'\n\nexport const Route = createFileRoute('\u002Fhello')({\n  server: {\n    handlers: {\n      POST: async ({ request }) => {\n        const body = await request.json()\n        return Response.json({ message: `Hello, ${body.name}!` })\n      },\n    },\n  },\n  component: HelloComponent,\n})\n\nfunction HelloComponent() {\n  const [reply, setReply] = useState('')\n  return (\n    \u003Cbutton\n      onClick={() => {\n        fetch('\u002Fhello', {\n          method: 'POST',\n          headers: { 'Content-Type': 'application\u002Fjson' },\n          body: JSON.stringify({ name: 'Tanner' }),\n        })\n          .then((res) => res.json())\n          .then((data) => setReply(data.message))\n      }}\n    >\n      Say Hello {reply && `- ${reply}`}\n    \u003C\u002Fbutton>\n  )\n}\n","tsx",[440],{"type":64,"tag":78,"props":441,"children":442},{"__ignoreMap":128},[443,451,486,522,529,577,592,607,643,685,773,780,787,795,818,830,838,860,915,929,943,965,998,1028,1080,1150,1163,1216,1275,1284,1293,1343,1362,1371],{"type":64,"tag":134,"props":444,"children":445},{"class":136,"line":137},[446],{"type":64,"tag":134,"props":447,"children":448},{"style":141},[449],{"type":69,"value":450},"\u002F\u002F src\u002Froutes\u002Fhello.tsx\n",{"type":64,"tag":134,"props":452,"children":453},{"class":136,"line":147},[454,458,462,466,470,474,478,482],{"type":64,"tag":134,"props":455,"children":456},{"style":151},[457],{"type":69,"value":154},{"type":64,"tag":134,"props":459,"children":460},{"style":157},[461],{"type":69,"value":160},{"type":64,"tag":134,"props":463,"children":464},{"style":163},[465],{"type":69,"value":166},{"type":64,"tag":134,"props":467,"children":468},{"style":157},[469],{"type":69,"value":171},{"type":64,"tag":134,"props":471,"children":472},{"style":151},[473],{"type":69,"value":176},{"type":64,"tag":134,"props":475,"children":476},{"style":157},[477],{"type":69,"value":181},{"type":64,"tag":134,"props":479,"children":480},{"style":184},[481],{"type":69,"value":187},{"type":64,"tag":134,"props":483,"children":484},{"style":157},[485],{"type":69,"value":192},{"type":64,"tag":134,"props":487,"children":488},{"class":136,"line":195},[489,493,497,502,506,510,514,518],{"type":64,"tag":134,"props":490,"children":491},{"style":151},[492],{"type":69,"value":154},{"type":64,"tag":134,"props":494,"children":495},{"style":157},[496],{"type":69,"value":160},{"type":64,"tag":134,"props":498,"children":499},{"style":163},[500],{"type":69,"value":501}," useState",{"type":64,"tag":134,"props":503,"children":504},{"style":157},[505],{"type":69,"value":171},{"type":64,"tag":134,"props":507,"children":508},{"style":151},[509],{"type":69,"value":176},{"type":64,"tag":134,"props":511,"children":512},{"style":157},[513],{"type":69,"value":181},{"type":64,"tag":134,"props":515,"children":516},{"style":184},[517],{"type":69,"value":32},{"type":64,"tag":134,"props":519,"children":520},{"style":157},[521],{"type":69,"value":192},{"type":64,"tag":134,"props":523,"children":524},{"class":136,"line":205},[525],{"type":64,"tag":134,"props":526,"children":527},{"emptyLinePlaceholder":199},[528],{"type":69,"value":202},{"type":64,"tag":134,"props":530,"children":531},{"class":136,"line":264},[532,536,540,544,548,552,556,560,565,569,573],{"type":64,"tag":134,"props":533,"children":534},{"style":151},[535],{"type":69,"value":211},{"type":64,"tag":134,"props":537,"children":538},{"style":214},[539],{"type":69,"value":217},{"type":64,"tag":134,"props":541,"children":542},{"style":163},[543],{"type":69,"value":222},{"type":64,"tag":134,"props":545,"children":546},{"style":157},[547],{"type":69,"value":227},{"type":64,"tag":134,"props":549,"children":550},{"style":230},[551],{"type":69,"value":166},{"type":64,"tag":134,"props":553,"children":554},{"style":163},[555],{"type":69,"value":237},{"type":64,"tag":134,"props":557,"children":558},{"style":157},[559],{"type":69,"value":242},{"type":64,"tag":134,"props":561,"children":562},{"style":184},[563],{"type":69,"value":564},"\u002Fhello",{"type":64,"tag":134,"props":566,"children":567},{"style":157},[568],{"type":69,"value":242},{"type":64,"tag":134,"props":570,"children":571},{"style":163},[572],{"type":69,"value":256},{"type":64,"tag":134,"props":574,"children":575},{"style":157},[576],{"type":69,"value":261},{"type":64,"tag":134,"props":578,"children":579},{"class":136,"line":284},[580,584,588],{"type":64,"tag":134,"props":581,"children":582},{"style":268},[583],{"type":69,"value":271},{"type":64,"tag":134,"props":585,"children":586},{"style":157},[587],{"type":69,"value":276},{"type":64,"tag":134,"props":589,"children":590},{"style":157},[591],{"type":69,"value":281},{"type":64,"tag":134,"props":593,"children":594},{"class":136,"line":301},[595,599,603],{"type":64,"tag":134,"props":596,"children":597},{"style":268},[598],{"type":69,"value":290},{"type":64,"tag":134,"props":600,"children":601},{"style":157},[602],{"type":69,"value":276},{"type":64,"tag":134,"props":604,"children":605},{"style":157},[606],{"type":69,"value":281},{"type":64,"tag":134,"props":608,"children":609},{"class":136,"line":344},[610,615,619,623,627,631,635,639],{"type":64,"tag":134,"props":611,"children":612},{"style":230},[613],{"type":69,"value":614},"      POST",{"type":64,"tag":134,"props":616,"children":617},{"style":157},[618],{"type":69,"value":276},{"type":64,"tag":134,"props":620,"children":621},{"style":214},[622],{"type":69,"value":316},{"type":64,"tag":134,"props":624,"children":625},{"style":157},[626],{"type":69,"value":321},{"type":64,"tag":134,"props":628,"children":629},{"style":324},[630],{"type":69,"value":327},{"type":64,"tag":134,"props":632,"children":633},{"style":157},[634],{"type":69,"value":332},{"type":64,"tag":134,"props":636,"children":637},{"style":214},[638],{"type":69,"value":337},{"type":64,"tag":134,"props":640,"children":641},{"style":157},[642],{"type":69,"value":281},{"type":64,"tag":134,"props":644,"children":645},{"class":136,"line":385},[646,651,656,661,666,670,675,680],{"type":64,"tag":134,"props":647,"children":648},{"style":214},[649],{"type":69,"value":650},"        const",{"type":64,"tag":134,"props":652,"children":653},{"style":163},[654],{"type":69,"value":655}," body",{"type":64,"tag":134,"props":657,"children":658},{"style":157},[659],{"type":69,"value":660}," =",{"type":64,"tag":134,"props":662,"children":663},{"style":151},[664],{"type":69,"value":665}," await",{"type":64,"tag":134,"props":667,"children":668},{"style":163},[669],{"type":69,"value":327},{"type":64,"tag":134,"props":671,"children":672},{"style":157},[673],{"type":69,"value":674},".",{"type":64,"tag":134,"props":676,"children":677},{"style":230},[678],{"type":69,"value":679},"json",{"type":64,"tag":134,"props":681,"children":682},{"style":268},[683],{"type":69,"value":684},"()\n",{"type":64,"tag":134,"props":686,"children":687},{"class":136,"line":394},[688,692,696,700,704,708,713,718,722,727,732,737,742,746,751,755,760,765,769],{"type":64,"tag":134,"props":689,"children":690},{"style":151},[691],{"type":69,"value":350},{"type":64,"tag":134,"props":693,"children":694},{"style":163},[695],{"type":69,"value":360},{"type":64,"tag":134,"props":697,"children":698},{"style":157},[699],{"type":69,"value":674},{"type":64,"tag":134,"props":701,"children":702},{"style":230},[703],{"type":69,"value":679},{"type":64,"tag":134,"props":705,"children":706},{"style":268},[707],{"type":69,"value":237},{"type":64,"tag":134,"props":709,"children":710},{"style":157},[711],{"type":69,"value":712},"{",{"type":64,"tag":134,"props":714,"children":715},{"style":268},[716],{"type":69,"value":717}," message",{"type":64,"tag":134,"props":719,"children":720},{"style":157},[721],{"type":69,"value":276},{"type":64,"tag":134,"props":723,"children":724},{"style":157},[725],{"type":69,"value":726}," `",{"type":64,"tag":134,"props":728,"children":729},{"style":184},[730],{"type":69,"value":731},"Hello, ",{"type":64,"tag":134,"props":733,"children":734},{"style":157},[735],{"type":69,"value":736},"${",{"type":64,"tag":134,"props":738,"children":739},{"style":163},[740],{"type":69,"value":741},"body",{"type":64,"tag":134,"props":743,"children":744},{"style":157},[745],{"type":69,"value":674},{"type":64,"tag":134,"props":747,"children":748},{"style":163},[749],{"type":69,"value":750},"name",{"type":64,"tag":134,"props":752,"children":753},{"style":157},[754],{"type":69,"value":418},{"type":64,"tag":134,"props":756,"children":757},{"style":184},[758],{"type":69,"value":759},"!",{"type":64,"tag":134,"props":761,"children":762},{"style":157},[763],{"type":69,"value":764},"`",{"type":64,"tag":134,"props":766,"children":767},{"style":157},[768],{"type":69,"value":171},{"type":64,"tag":134,"props":770,"children":771},{"style":268},[772],{"type":69,"value":382},{"type":64,"tag":134,"props":774,"children":775},{"class":136,"line":403},[776],{"type":64,"tag":134,"props":777,"children":778},{"style":157},[779],{"type":69,"value":391},{"type":64,"tag":134,"props":781,"children":782},{"class":136,"line":412},[783],{"type":64,"tag":134,"props":784,"children":785},{"style":157},[786],{"type":69,"value":400},{"type":64,"tag":134,"props":788,"children":790},{"class":136,"line":789},13,[791],{"type":64,"tag":134,"props":792,"children":793},{"style":157},[794],{"type":69,"value":409},{"type":64,"tag":134,"props":796,"children":798},{"class":136,"line":797},14,[799,804,808,813],{"type":64,"tag":134,"props":800,"children":801},{"style":268},[802],{"type":69,"value":803},"  component",{"type":64,"tag":134,"props":805,"children":806},{"style":157},[807],{"type":69,"value":276},{"type":64,"tag":134,"props":809,"children":810},{"style":163},[811],{"type":69,"value":812}," HelloComponent",{"type":64,"tag":134,"props":814,"children":815},{"style":157},[816],{"type":69,"value":817},",\n",{"type":64,"tag":134,"props":819,"children":821},{"class":136,"line":820},15,[822,826],{"type":64,"tag":134,"props":823,"children":824},{"style":157},[825],{"type":69,"value":418},{"type":64,"tag":134,"props":827,"children":828},{"style":163},[829],{"type":69,"value":382},{"type":64,"tag":134,"props":831,"children":833},{"class":136,"line":832},16,[834],{"type":64,"tag":134,"props":835,"children":836},{"emptyLinePlaceholder":199},[837],{"type":69,"value":202},{"type":64,"tag":134,"props":839,"children":841},{"class":136,"line":840},17,[842,847,851,856],{"type":64,"tag":134,"props":843,"children":844},{"style":214},[845],{"type":69,"value":846},"function",{"type":64,"tag":134,"props":848,"children":849},{"style":230},[850],{"type":69,"value":812},{"type":64,"tag":134,"props":852,"children":853},{"style":157},[854],{"type":69,"value":855},"()",{"type":64,"tag":134,"props":857,"children":858},{"style":157},[859],{"type":69,"value":281},{"type":64,"tag":134,"props":861,"children":863},{"class":136,"line":862},18,[864,869,874,879,884,889,894,898,902,906,911],{"type":64,"tag":134,"props":865,"children":866},{"style":214},[867],{"type":69,"value":868},"  const",{"type":64,"tag":134,"props":870,"children":871},{"style":157},[872],{"type":69,"value":873}," [",{"type":64,"tag":134,"props":875,"children":876},{"style":163},[877],{"type":69,"value":878},"reply",{"type":64,"tag":134,"props":880,"children":881},{"style":157},[882],{"type":69,"value":883},",",{"type":64,"tag":134,"props":885,"children":886},{"style":163},[887],{"type":69,"value":888}," setReply",{"type":64,"tag":134,"props":890,"children":891},{"style":157},[892],{"type":69,"value":893},"]",{"type":64,"tag":134,"props":895,"children":896},{"style":157},[897],{"type":69,"value":660},{"type":64,"tag":134,"props":899,"children":900},{"style":230},[901],{"type":69,"value":501},{"type":64,"tag":134,"props":903,"children":904},{"style":268},[905],{"type":69,"value":237},{"type":64,"tag":134,"props":907,"children":908},{"style":157},[909],{"type":69,"value":910},"''",{"type":64,"tag":134,"props":912,"children":913},{"style":268},[914],{"type":69,"value":382},{"type":64,"tag":134,"props":916,"children":918},{"class":136,"line":917},19,[919,924],{"type":64,"tag":134,"props":920,"children":921},{"style":151},[922],{"type":69,"value":923},"  return",{"type":64,"tag":134,"props":925,"children":926},{"style":268},[927],{"type":69,"value":928}," (\n",{"type":64,"tag":134,"props":930,"children":932},{"class":136,"line":931},20,[933,938],{"type":64,"tag":134,"props":934,"children":935},{"style":157},[936],{"type":69,"value":937},"    \u003C",{"type":64,"tag":134,"props":939,"children":940},{"style":268},[941],{"type":69,"value":942},"button\n",{"type":64,"tag":134,"props":944,"children":946},{"class":136,"line":945},21,[947,952,957,961],{"type":64,"tag":134,"props":948,"children":949},{"style":214},[950],{"type":69,"value":951},"      onClick",{"type":64,"tag":134,"props":953,"children":954},{"style":157},[955],{"type":69,"value":956},"={()",{"type":64,"tag":134,"props":958,"children":959},{"style":214},[960],{"type":69,"value":337},{"type":64,"tag":134,"props":962,"children":963},{"style":157},[964],{"type":69,"value":281},{"type":64,"tag":134,"props":966,"children":968},{"class":136,"line":967},22,[969,974,978,982,986,990,994],{"type":64,"tag":134,"props":970,"children":971},{"style":230},[972],{"type":69,"value":973},"        fetch",{"type":64,"tag":134,"props":975,"children":976},{"style":268},[977],{"type":69,"value":237},{"type":64,"tag":134,"props":979,"children":980},{"style":157},[981],{"type":69,"value":242},{"type":64,"tag":134,"props":983,"children":984},{"style":184},[985],{"type":69,"value":564},{"type":64,"tag":134,"props":987,"children":988},{"style":157},[989],{"type":69,"value":242},{"type":64,"tag":134,"props":991,"children":992},{"style":157},[993],{"type":69,"value":883},{"type":64,"tag":134,"props":995,"children":996},{"style":157},[997],{"type":69,"value":281},{"type":64,"tag":134,"props":999,"children":1001},{"class":136,"line":1000},23,[1002,1007,1011,1015,1020,1024],{"type":64,"tag":134,"props":1003,"children":1004},{"style":268},[1005],{"type":69,"value":1006},"          method",{"type":64,"tag":134,"props":1008,"children":1009},{"style":157},[1010],{"type":69,"value":276},{"type":64,"tag":134,"props":1012,"children":1013},{"style":157},[1014],{"type":69,"value":181},{"type":64,"tag":134,"props":1016,"children":1017},{"style":184},[1018],{"type":69,"value":1019},"POST",{"type":64,"tag":134,"props":1021,"children":1022},{"style":157},[1023],{"type":69,"value":242},{"type":64,"tag":134,"props":1025,"children":1026},{"style":157},[1027],{"type":69,"value":817},{"type":64,"tag":134,"props":1029,"children":1031},{"class":136,"line":1030},24,[1032,1037,1041,1045,1049,1054,1058,1062,1066,1071,1075],{"type":64,"tag":134,"props":1033,"children":1034},{"style":268},[1035],{"type":69,"value":1036},"          headers",{"type":64,"tag":134,"props":1038,"children":1039},{"style":157},[1040],{"type":69,"value":276},{"type":64,"tag":134,"props":1042,"children":1043},{"style":157},[1044],{"type":69,"value":160},{"type":64,"tag":134,"props":1046,"children":1047},{"style":157},[1048],{"type":69,"value":181},{"type":64,"tag":134,"props":1050,"children":1051},{"style":268},[1052],{"type":69,"value":1053},"Content-Type",{"type":64,"tag":134,"props":1055,"children":1056},{"style":157},[1057],{"type":69,"value":242},{"type":64,"tag":134,"props":1059,"children":1060},{"style":157},[1061],{"type":69,"value":276},{"type":64,"tag":134,"props":1063,"children":1064},{"style":157},[1065],{"type":69,"value":181},{"type":64,"tag":134,"props":1067,"children":1068},{"style":184},[1069],{"type":69,"value":1070},"application\u002Fjson",{"type":64,"tag":134,"props":1072,"children":1073},{"style":157},[1074],{"type":69,"value":242},{"type":64,"tag":134,"props":1076,"children":1077},{"style":157},[1078],{"type":69,"value":1079}," },\n",{"type":64,"tag":134,"props":1081,"children":1083},{"class":136,"line":1082},25,[1084,1089,1093,1098,1102,1107,1111,1115,1120,1124,1128,1133,1137,1141,1146],{"type":64,"tag":134,"props":1085,"children":1086},{"style":268},[1087],{"type":69,"value":1088},"          body",{"type":64,"tag":134,"props":1090,"children":1091},{"style":157},[1092],{"type":69,"value":276},{"type":64,"tag":134,"props":1094,"children":1095},{"style":163},[1096],{"type":69,"value":1097}," JSON",{"type":64,"tag":134,"props":1099,"children":1100},{"style":157},[1101],{"type":69,"value":674},{"type":64,"tag":134,"props":1103,"children":1104},{"style":230},[1105],{"type":69,"value":1106},"stringify",{"type":64,"tag":134,"props":1108,"children":1109},{"style":268},[1110],{"type":69,"value":237},{"type":64,"tag":134,"props":1112,"children":1113},{"style":157},[1114],{"type":69,"value":712},{"type":64,"tag":134,"props":1116,"children":1117},{"style":268},[1118],{"type":69,"value":1119}," name",{"type":64,"tag":134,"props":1121,"children":1122},{"style":157},[1123],{"type":69,"value":276},{"type":64,"tag":134,"props":1125,"children":1126},{"style":157},[1127],{"type":69,"value":181},{"type":64,"tag":134,"props":1129,"children":1130},{"style":184},[1131],{"type":69,"value":1132},"Tanner",{"type":64,"tag":134,"props":1134,"children":1135},{"style":157},[1136],{"type":69,"value":242},{"type":64,"tag":134,"props":1138,"children":1139},{"style":157},[1140],{"type":69,"value":171},{"type":64,"tag":134,"props":1142,"children":1143},{"style":268},[1144],{"type":69,"value":1145},")",{"type":64,"tag":134,"props":1147,"children":1148},{"style":157},[1149],{"type":69,"value":817},{"type":64,"tag":134,"props":1151,"children":1153},{"class":136,"line":1152},26,[1154,1159],{"type":64,"tag":134,"props":1155,"children":1156},{"style":157},[1157],{"type":69,"value":1158},"        }",{"type":64,"tag":134,"props":1160,"children":1161},{"style":268},[1162],{"type":69,"value":382},{"type":64,"tag":134,"props":1164,"children":1166},{"class":136,"line":1165},27,[1167,1172,1177,1181,1185,1190,1194,1198,1203,1207,1211],{"type":64,"tag":134,"props":1168,"children":1169},{"style":157},[1170],{"type":69,"value":1171},"          .",{"type":64,"tag":134,"props":1173,"children":1174},{"style":230},[1175],{"type":69,"value":1176},"then",{"type":64,"tag":134,"props":1178,"children":1179},{"style":268},[1180],{"type":69,"value":237},{"type":64,"tag":134,"props":1182,"children":1183},{"style":157},[1184],{"type":69,"value":237},{"type":64,"tag":134,"props":1186,"children":1187},{"style":324},[1188],{"type":69,"value":1189},"res",{"type":64,"tag":134,"props":1191,"children":1192},{"style":157},[1193],{"type":69,"value":1145},{"type":64,"tag":134,"props":1195,"children":1196},{"style":214},[1197],{"type":69,"value":337},{"type":64,"tag":134,"props":1199,"children":1200},{"style":163},[1201],{"type":69,"value":1202}," res",{"type":64,"tag":134,"props":1204,"children":1205},{"style":157},[1206],{"type":69,"value":674},{"type":64,"tag":134,"props":1208,"children":1209},{"style":230},[1210],{"type":69,"value":679},{"type":64,"tag":134,"props":1212,"children":1213},{"style":268},[1214],{"type":69,"value":1215},"())\n",{"type":64,"tag":134,"props":1217,"children":1219},{"class":136,"line":1218},28,[1220,1224,1228,1232,1236,1241,1245,1249,1253,1257,1261,1265,1270],{"type":64,"tag":134,"props":1221,"children":1222},{"style":157},[1223],{"type":69,"value":1171},{"type":64,"tag":134,"props":1225,"children":1226},{"style":230},[1227],{"type":69,"value":1176},{"type":64,"tag":134,"props":1229,"children":1230},{"style":268},[1231],{"type":69,"value":237},{"type":64,"tag":134,"props":1233,"children":1234},{"style":157},[1235],{"type":69,"value":237},{"type":64,"tag":134,"props":1237,"children":1238},{"style":324},[1239],{"type":69,"value":1240},"data",{"type":64,"tag":134,"props":1242,"children":1243},{"style":157},[1244],{"type":69,"value":1145},{"type":64,"tag":134,"props":1246,"children":1247},{"style":214},[1248],{"type":69,"value":337},{"type":64,"tag":134,"props":1250,"children":1251},{"style":230},[1252],{"type":69,"value":888},{"type":64,"tag":134,"props":1254,"children":1255},{"style":268},[1256],{"type":69,"value":237},{"type":64,"tag":134,"props":1258,"children":1259},{"style":163},[1260],{"type":69,"value":1240},{"type":64,"tag":134,"props":1262,"children":1263},{"style":157},[1264],{"type":69,"value":674},{"type":64,"tag":134,"props":1266,"children":1267},{"style":163},[1268],{"type":69,"value":1269},"message",{"type":64,"tag":134,"props":1271,"children":1272},{"style":268},[1273],{"type":69,"value":1274},"))\n",{"type":64,"tag":134,"props":1276,"children":1278},{"class":136,"line":1277},29,[1279],{"type":64,"tag":134,"props":1280,"children":1281},{"style":157},[1282],{"type":69,"value":1283},"      }}\n",{"type":64,"tag":134,"props":1285,"children":1287},{"class":136,"line":1286},30,[1288],{"type":64,"tag":134,"props":1289,"children":1290},{"style":157},[1291],{"type":69,"value":1292},"    >\n",{"type":64,"tag":134,"props":1294,"children":1296},{"class":136,"line":1295},31,[1297,1302,1306,1311,1316,1320,1325,1329,1333,1338],{"type":64,"tag":134,"props":1298,"children":1299},{"style":163},[1300],{"type":69,"value":1301},"      Say Hello ",{"type":64,"tag":134,"props":1303,"children":1304},{"style":157},[1305],{"type":69,"value":712},{"type":64,"tag":134,"props":1307,"children":1308},{"style":163},[1309],{"type":69,"value":1310},"reply ",{"type":64,"tag":134,"props":1312,"children":1313},{"style":157},[1314],{"type":69,"value":1315},"&&",{"type":64,"tag":134,"props":1317,"children":1318},{"style":157},[1319],{"type":69,"value":726},{"type":64,"tag":134,"props":1321,"children":1322},{"style":184},[1323],{"type":69,"value":1324},"- ",{"type":64,"tag":134,"props":1326,"children":1327},{"style":157},[1328],{"type":69,"value":736},{"type":64,"tag":134,"props":1330,"children":1331},{"style":163},[1332],{"type":69,"value":878},{"type":64,"tag":134,"props":1334,"children":1335},{"style":157},[1336],{"type":69,"value":1337},"}`",{"type":64,"tag":134,"props":1339,"children":1340},{"style":157},[1341],{"type":69,"value":1342},"}\n",{"type":64,"tag":134,"props":1344,"children":1346},{"class":136,"line":1345},32,[1347,1352,1357],{"type":64,"tag":134,"props":1348,"children":1349},{"style":157},[1350],{"type":69,"value":1351},"    \u003C\u002F",{"type":64,"tag":134,"props":1353,"children":1354},{"style":268},[1355],{"type":69,"value":1356},"button",{"type":64,"tag":134,"props":1358,"children":1359},{"style":157},[1360],{"type":69,"value":1361},">\n",{"type":64,"tag":134,"props":1363,"children":1365},{"class":136,"line":1364},33,[1366],{"type":64,"tag":134,"props":1367,"children":1368},{"style":268},[1369],{"type":69,"value":1370},"  )\n",{"type":64,"tag":134,"props":1372,"children":1374},{"class":136,"line":1373},34,[1375],{"type":64,"tag":134,"props":1376,"children":1377},{"style":157},[1378],{"type":69,"value":1342},{"type":64,"tag":72,"props":1380,"children":1381},{},[1382,1384,1390],{"type":69,"value":1383},"The relative ",{"type":64,"tag":78,"props":1385,"children":1387},{"className":1386},[],[1388],{"type":69,"value":1389},"fetch('\u002Fhello')",{"type":69,"value":1391}," above is safe because it runs only in a browser click handler.",{"type":64,"tag":116,"props":1393,"children":1395},{"id":1394},"sharing-data-with-a-start-route",[1396],{"type":69,"value":1397},"Sharing Data with a Start Route",{"type":64,"tag":72,"props":1399,"children":1400},{},[1401],{"type":69,"value":1402},"Do not make the SSR loader call its own server route. Put the business operation in a server-only service, then expose it through both boundaries when both are required:",{"type":64,"tag":123,"props":1404,"children":1406},{"className":436,"code":1405,"language":438,"meta":128,"style":128},"\u002F\u002F src\u002Fserver\u002Fissues.server.ts\nexport function listIssues() {\n  return db.issues.findMany()\n}\n\n\u002F\u002F src\u002Froutes\u002Fapi\u002Fissues.ts\nexport const Route = createFileRoute('\u002Fapi\u002Fissues')({\n  server: {\n    handlers: {\n      GET: async () => Response.json(await listIssues()),\n    },\n  },\n})\n\n\u002F\u002F src\u002Froutes\u002Fissues.tsx\nconst getIssues = createServerFn({ method: 'GET' }).handler(() => {\n  return listIssues()\n})\n\nexport const Route = createFileRoute('\u002Fissues')({\n  loader: () => getIssues(),\n})\n",[1407],{"type":64,"tag":78,"props":1408,"children":1409},{"__ignoreMap":128},[1410,1418,1443,1477,1484,1491,1499,1547,1562,1577,1635,1642,1649,1660,1667,1675,1760,1775,1786,1793,1841,1874],{"type":64,"tag":134,"props":1411,"children":1412},{"class":136,"line":137},[1413],{"type":64,"tag":134,"props":1414,"children":1415},{"style":141},[1416],{"type":69,"value":1417},"\u002F\u002F src\u002Fserver\u002Fissues.server.ts\n",{"type":64,"tag":134,"props":1419,"children":1420},{"class":136,"line":147},[1421,1425,1430,1435,1439],{"type":64,"tag":134,"props":1422,"children":1423},{"style":151},[1424],{"type":69,"value":211},{"type":64,"tag":134,"props":1426,"children":1427},{"style":214},[1428],{"type":69,"value":1429}," function",{"type":64,"tag":134,"props":1431,"children":1432},{"style":230},[1433],{"type":69,"value":1434}," listIssues",{"type":64,"tag":134,"props":1436,"children":1437},{"style":157},[1438],{"type":69,"value":855},{"type":64,"tag":134,"props":1440,"children":1441},{"style":157},[1442],{"type":69,"value":281},{"type":64,"tag":134,"props":1444,"children":1445},{"class":136,"line":195},[1446,1450,1455,1459,1464,1468,1473],{"type":64,"tag":134,"props":1447,"children":1448},{"style":151},[1449],{"type":69,"value":923},{"type":64,"tag":134,"props":1451,"children":1452},{"style":163},[1453],{"type":69,"value":1454}," db",{"type":64,"tag":134,"props":1456,"children":1457},{"style":157},[1458],{"type":69,"value":674},{"type":64,"tag":134,"props":1460,"children":1461},{"style":163},[1462],{"type":69,"value":1463},"issues",{"type":64,"tag":134,"props":1465,"children":1466},{"style":157},[1467],{"type":69,"value":674},{"type":64,"tag":134,"props":1469,"children":1470},{"style":230},[1471],{"type":69,"value":1472},"findMany",{"type":64,"tag":134,"props":1474,"children":1475},{"style":268},[1476],{"type":69,"value":684},{"type":64,"tag":134,"props":1478,"children":1479},{"class":136,"line":205},[1480],{"type":64,"tag":134,"props":1481,"children":1482},{"style":157},[1483],{"type":69,"value":1342},{"type":64,"tag":134,"props":1485,"children":1486},{"class":136,"line":264},[1487],{"type":64,"tag":134,"props":1488,"children":1489},{"emptyLinePlaceholder":199},[1490],{"type":69,"value":202},{"type":64,"tag":134,"props":1492,"children":1493},{"class":136,"line":284},[1494],{"type":64,"tag":134,"props":1495,"children":1496},{"style":141},[1497],{"type":69,"value":1498},"\u002F\u002F src\u002Froutes\u002Fapi\u002Fissues.ts\n",{"type":64,"tag":134,"props":1500,"children":1501},{"class":136,"line":301},[1502,1506,1510,1514,1518,1522,1526,1530,1535,1539,1543],{"type":64,"tag":134,"props":1503,"children":1504},{"style":151},[1505],{"type":69,"value":211},{"type":64,"tag":134,"props":1507,"children":1508},{"style":214},[1509],{"type":69,"value":217},{"type":64,"tag":134,"props":1511,"children":1512},{"style":163},[1513],{"type":69,"value":222},{"type":64,"tag":134,"props":1515,"children":1516},{"style":157},[1517],{"type":69,"value":227},{"type":64,"tag":134,"props":1519,"children":1520},{"style":230},[1521],{"type":69,"value":166},{"type":64,"tag":134,"props":1523,"children":1524},{"style":163},[1525],{"type":69,"value":237},{"type":64,"tag":134,"props":1527,"children":1528},{"style":157},[1529],{"type":69,"value":242},{"type":64,"tag":134,"props":1531,"children":1532},{"style":184},[1533],{"type":69,"value":1534},"\u002Fapi\u002Fissues",{"type":64,"tag":134,"props":1536,"children":1537},{"style":157},[1538],{"type":69,"value":242},{"type":64,"tag":134,"props":1540,"children":1541},{"style":163},[1542],{"type":69,"value":256},{"type":64,"tag":134,"props":1544,"children":1545},{"style":157},[1546],{"type":69,"value":261},{"type":64,"tag":134,"props":1548,"children":1549},{"class":136,"line":344},[1550,1554,1558],{"type":64,"tag":134,"props":1551,"children":1552},{"style":268},[1553],{"type":69,"value":271},{"type":64,"tag":134,"props":1555,"children":1556},{"style":157},[1557],{"type":69,"value":276},{"type":64,"tag":134,"props":1559,"children":1560},{"style":157},[1561],{"type":69,"value":281},{"type":64,"tag":134,"props":1563,"children":1564},{"class":136,"line":385},[1565,1569,1573],{"type":64,"tag":134,"props":1566,"children":1567},{"style":268},[1568],{"type":69,"value":290},{"type":64,"tag":134,"props":1570,"children":1571},{"style":157},[1572],{"type":69,"value":276},{"type":64,"tag":134,"props":1574,"children":1575},{"style":157},[1576],{"type":69,"value":281},{"type":64,"tag":134,"props":1578,"children":1579},{"class":136,"line":394},[1580,1584,1588,1592,1597,1601,1605,1609,1613,1617,1622,1626,1631],{"type":64,"tag":134,"props":1581,"children":1582},{"style":230},[1583],{"type":69,"value":307},{"type":64,"tag":134,"props":1585,"children":1586},{"style":157},[1587],{"type":69,"value":276},{"type":64,"tag":134,"props":1589,"children":1590},{"style":214},[1591],{"type":69,"value":316},{"type":64,"tag":134,"props":1593,"children":1594},{"style":157},[1595],{"type":69,"value":1596}," ()",{"type":64,"tag":134,"props":1598,"children":1599},{"style":214},[1600],{"type":69,"value":337},{"type":64,"tag":134,"props":1602,"children":1603},{"style":163},[1604],{"type":69,"value":360},{"type":64,"tag":134,"props":1606,"children":1607},{"style":157},[1608],{"type":69,"value":674},{"type":64,"tag":134,"props":1610,"children":1611},{"style":230},[1612],{"type":69,"value":679},{"type":64,"tag":134,"props":1614,"children":1615},{"style":163},[1616],{"type":69,"value":237},{"type":64,"tag":134,"props":1618,"children":1619},{"style":151},[1620],{"type":69,"value":1621},"await",{"type":64,"tag":134,"props":1623,"children":1624},{"style":230},[1625],{"type":69,"value":1434},{"type":64,"tag":134,"props":1627,"children":1628},{"style":163},[1629],{"type":69,"value":1630},"())",{"type":64,"tag":134,"props":1632,"children":1633},{"style":157},[1634],{"type":69,"value":817},{"type":64,"tag":134,"props":1636,"children":1637},{"class":136,"line":403},[1638],{"type":64,"tag":134,"props":1639,"children":1640},{"style":157},[1641],{"type":69,"value":400},{"type":64,"tag":134,"props":1643,"children":1644},{"class":136,"line":412},[1645],{"type":64,"tag":134,"props":1646,"children":1647},{"style":157},[1648],{"type":69,"value":409},{"type":64,"tag":134,"props":1650,"children":1651},{"class":136,"line":789},[1652,1656],{"type":64,"tag":134,"props":1653,"children":1654},{"style":157},[1655],{"type":69,"value":418},{"type":64,"tag":134,"props":1657,"children":1658},{"style":163},[1659],{"type":69,"value":382},{"type":64,"tag":134,"props":1661,"children":1662},{"class":136,"line":797},[1663],{"type":64,"tag":134,"props":1664,"children":1665},{"emptyLinePlaceholder":199},[1666],{"type":69,"value":202},{"type":64,"tag":134,"props":1668,"children":1669},{"class":136,"line":820},[1670],{"type":64,"tag":134,"props":1671,"children":1672},{"style":141},[1673],{"type":69,"value":1674},"\u002F\u002F src\u002Froutes\u002Fissues.tsx\n",{"type":64,"tag":134,"props":1676,"children":1677},{"class":136,"line":832},[1678,1683,1688,1692,1697,1701,1705,1710,1714,1718,1723,1727,1731,1735,1739,1744,1748,1752,1756],{"type":64,"tag":134,"props":1679,"children":1680},{"style":214},[1681],{"type":69,"value":1682},"const",{"type":64,"tag":134,"props":1684,"children":1685},{"style":163},[1686],{"type":69,"value":1687}," getIssues ",{"type":64,"tag":134,"props":1689,"children":1690},{"style":157},[1691],{"type":69,"value":227},{"type":64,"tag":134,"props":1693,"children":1694},{"style":230},[1695],{"type":69,"value":1696}," createServerFn",{"type":64,"tag":134,"props":1698,"children":1699},{"style":163},[1700],{"type":69,"value":237},{"type":64,"tag":134,"props":1702,"children":1703},{"style":157},[1704],{"type":69,"value":712},{"type":64,"tag":134,"props":1706,"children":1707},{"style":268},[1708],{"type":69,"value":1709}," method",{"type":64,"tag":134,"props":1711,"children":1712},{"style":157},[1713],{"type":69,"value":276},{"type":64,"tag":134,"props":1715,"children":1716},{"style":157},[1717],{"type":69,"value":181},{"type":64,"tag":134,"props":1719,"children":1720},{"style":184},[1721],{"type":69,"value":1722},"GET",{"type":64,"tag":134,"props":1724,"children":1725},{"style":157},[1726],{"type":69,"value":242},{"type":64,"tag":134,"props":1728,"children":1729},{"style":157},[1730],{"type":69,"value":171},{"type":64,"tag":134,"props":1732,"children":1733},{"style":163},[1734],{"type":69,"value":1145},{"type":64,"tag":134,"props":1736,"children":1737},{"style":157},[1738],{"type":69,"value":674},{"type":64,"tag":134,"props":1740,"children":1741},{"style":230},[1742],{"type":69,"value":1743},"handler",{"type":64,"tag":134,"props":1745,"children":1746},{"style":163},[1747],{"type":69,"value":237},{"type":64,"tag":134,"props":1749,"children":1750},{"style":157},[1751],{"type":69,"value":855},{"type":64,"tag":134,"props":1753,"children":1754},{"style":214},[1755],{"type":69,"value":337},{"type":64,"tag":134,"props":1757,"children":1758},{"style":157},[1759],{"type":69,"value":281},{"type":64,"tag":134,"props":1761,"children":1762},{"class":136,"line":840},[1763,1767,1771],{"type":64,"tag":134,"props":1764,"children":1765},{"style":151},[1766],{"type":69,"value":923},{"type":64,"tag":134,"props":1768,"children":1769},{"style":230},[1770],{"type":69,"value":1434},{"type":64,"tag":134,"props":1772,"children":1773},{"style":268},[1774],{"type":69,"value":684},{"type":64,"tag":134,"props":1776,"children":1777},{"class":136,"line":862},[1778,1782],{"type":64,"tag":134,"props":1779,"children":1780},{"style":157},[1781],{"type":69,"value":418},{"type":64,"tag":134,"props":1783,"children":1784},{"style":163},[1785],{"type":69,"value":382},{"type":64,"tag":134,"props":1787,"children":1788},{"class":136,"line":917},[1789],{"type":64,"tag":134,"props":1790,"children":1791},{"emptyLinePlaceholder":199},[1792],{"type":69,"value":202},{"type":64,"tag":134,"props":1794,"children":1795},{"class":136,"line":931},[1796,1800,1804,1808,1812,1816,1820,1824,1829,1833,1837],{"type":64,"tag":134,"props":1797,"children":1798},{"style":151},[1799],{"type":69,"value":211},{"type":64,"tag":134,"props":1801,"children":1802},{"style":214},[1803],{"type":69,"value":217},{"type":64,"tag":134,"props":1805,"children":1806},{"style":163},[1807],{"type":69,"value":222},{"type":64,"tag":134,"props":1809,"children":1810},{"style":157},[1811],{"type":69,"value":227},{"type":64,"tag":134,"props":1813,"children":1814},{"style":230},[1815],{"type":69,"value":166},{"type":64,"tag":134,"props":1817,"children":1818},{"style":163},[1819],{"type":69,"value":237},{"type":64,"tag":134,"props":1821,"children":1822},{"style":157},[1823],{"type":69,"value":242},{"type":64,"tag":134,"props":1825,"children":1826},{"style":184},[1827],{"type":69,"value":1828},"\u002Fissues",{"type":64,"tag":134,"props":1830,"children":1831},{"style":157},[1832],{"type":69,"value":242},{"type":64,"tag":134,"props":1834,"children":1835},{"style":163},[1836],{"type":69,"value":256},{"type":64,"tag":134,"props":1838,"children":1839},{"style":157},[1840],{"type":69,"value":261},{"type":64,"tag":134,"props":1842,"children":1843},{"class":136,"line":945},[1844,1849,1853,1857,1861,1866,1870],{"type":64,"tag":134,"props":1845,"children":1846},{"style":230},[1847],{"type":69,"value":1848},"  loader",{"type":64,"tag":134,"props":1850,"children":1851},{"style":157},[1852],{"type":69,"value":276},{"type":64,"tag":134,"props":1854,"children":1855},{"style":157},[1856],{"type":69,"value":1596},{"type":64,"tag":134,"props":1858,"children":1859},{"style":214},[1860],{"type":69,"value":337},{"type":64,"tag":134,"props":1862,"children":1863},{"style":230},[1864],{"type":69,"value":1865}," getIssues",{"type":64,"tag":134,"props":1867,"children":1868},{"style":163},[1869],{"type":69,"value":855},{"type":64,"tag":134,"props":1871,"children":1872},{"style":157},[1873],{"type":69,"value":817},{"type":64,"tag":134,"props":1875,"children":1876},{"class":136,"line":967},[1877,1881],{"type":64,"tag":134,"props":1878,"children":1879},{"style":157},[1880],{"type":69,"value":418},{"type":64,"tag":134,"props":1882,"children":1883},{"style":163},[1884],{"type":69,"value":382},{"type":64,"tag":72,"props":1886,"children":1887},{},[1888],{"type":69,"value":1889},"This keeps SSR independent of URL resolution and keeps one source of business logic.",{"type":64,"tag":116,"props":1891,"children":1893},{"id":1892},"file-route-conventions",[1894],{"type":69,"value":1895},"File Route Conventions",{"type":64,"tag":72,"props":1897,"children":1898},{},[1899],{"type":69,"value":1900},"Server routes follow TanStack Router file-based routing conventions:",{"type":64,"tag":1902,"props":1903,"children":1904},"table",{},[1905,1924],{"type":64,"tag":1906,"props":1907,"children":1908},"thead",{},[1909],{"type":64,"tag":1910,"props":1911,"children":1912},"tr",{},[1913,1919],{"type":64,"tag":1914,"props":1915,"children":1916},"th",{},[1917],{"type":69,"value":1918},"File",{"type":64,"tag":1914,"props":1920,"children":1921},{},[1922],{"type":69,"value":1923},"Route",{"type":64,"tag":1925,"props":1926,"children":1927},"tbody",{},[1928,1950,1971,1992,2015],{"type":64,"tag":1910,"props":1929,"children":1930},{},[1931,1941],{"type":64,"tag":1932,"props":1933,"children":1934},"td",{},[1935],{"type":64,"tag":78,"props":1936,"children":1938},{"className":1937},[],[1939],{"type":69,"value":1940},"routes\u002Fusers.ts",{"type":64,"tag":1932,"props":1942,"children":1943},{},[1944],{"type":64,"tag":78,"props":1945,"children":1947},{"className":1946},[],[1948],{"type":69,"value":1949},"\u002Fusers",{"type":64,"tag":1910,"props":1951,"children":1952},{},[1953,1962],{"type":64,"tag":1932,"props":1954,"children":1955},{},[1956],{"type":64,"tag":78,"props":1957,"children":1959},{"className":1958},[],[1960],{"type":69,"value":1961},"routes\u002Fusers\u002F$id.ts",{"type":64,"tag":1932,"props":1963,"children":1964},{},[1965],{"type":64,"tag":78,"props":1966,"children":1968},{"className":1967},[],[1969],{"type":69,"value":1970},"\u002Fusers\u002F$id",{"type":64,"tag":1910,"props":1972,"children":1973},{},[1974,1983],{"type":64,"tag":1932,"props":1975,"children":1976},{},[1977],{"type":64,"tag":78,"props":1978,"children":1980},{"className":1979},[],[1981],{"type":69,"value":1982},"routes\u002Fusers\u002F$id\u002Fposts.ts",{"type":64,"tag":1932,"props":1984,"children":1985},{},[1986],{"type":64,"tag":78,"props":1987,"children":1989},{"className":1988},[],[1990],{"type":69,"value":1991},"\u002Fusers\u002F$id\u002Fposts",{"type":64,"tag":1910,"props":1993,"children":1994},{},[1995,2004],{"type":64,"tag":1932,"props":1996,"children":1997},{},[1998],{"type":64,"tag":78,"props":1999,"children":2001},{"className":2000},[],[2002],{"type":69,"value":2003},"routes\u002Fapi\u002Ffile\u002F$.ts",{"type":64,"tag":1932,"props":2005,"children":2006},{},[2007,2013],{"type":64,"tag":78,"props":2008,"children":2010},{"className":2009},[],[2011],{"type":69,"value":2012},"\u002Fapi\u002Ffile\u002F$",{"type":69,"value":2014}," (splat)",{"type":64,"tag":1910,"props":2016,"children":2017},{},[2018,2027],{"type":64,"tag":1932,"props":2019,"children":2020},{},[2021],{"type":64,"tag":78,"props":2022,"children":2024},{"className":2023},[],[2025],{"type":69,"value":2026},"routes\u002Fmy-script[.]js.ts",{"type":64,"tag":1932,"props":2028,"children":2029},{},[2030,2036],{"type":64,"tag":78,"props":2031,"children":2033},{"className":2032},[],[2034],{"type":69,"value":2035},"\u002Fmy-script.js",{"type":69,"value":2037}," (escaped dot)",{"type":64,"tag":116,"props":2039,"children":2041},{"id":2040},"unique-route-paths",[2042],{"type":69,"value":2043},"Unique Route Paths",{"type":64,"tag":72,"props":2045,"children":2046},{},[2047],{"type":69,"value":2048},"Each route can only have a single handler file. These would conflict:",{"type":64,"tag":2050,"props":2051,"children":2052},"ul",{},[2053,2062,2071],{"type":64,"tag":2054,"props":2055,"children":2056},"li",{},[2057],{"type":64,"tag":78,"props":2058,"children":2060},{"className":2059},[],[2061],{"type":69,"value":1940},{"type":64,"tag":2054,"props":2063,"children":2064},{},[2065],{"type":64,"tag":78,"props":2066,"children":2068},{"className":2067},[],[2069],{"type":69,"value":2070},"routes\u002Fusers.index.ts",{"type":64,"tag":2054,"props":2072,"children":2073},{},[2074],{"type":64,"tag":78,"props":2075,"children":2077},{"className":2076},[],[2078],{"type":69,"value":2079},"routes\u002Fusers\u002Findex.ts",{"type":64,"tag":116,"props":2081,"children":2083},{"id":2082},"handler-context",[2084],{"type":69,"value":2085},"Handler Context",{"type":64,"tag":72,"props":2087,"children":2088},{},[2089],{"type":69,"value":2090},"Each handler receives:",{"type":64,"tag":2050,"props":2092,"children":2093},{},[2094,2116,2127,2138,2149],{"type":64,"tag":2054,"props":2095,"children":2096},{},[2097,2103,2105,2114],{"type":64,"tag":78,"props":2098,"children":2100},{"className":2099},[],[2101],{"type":69,"value":2102},"request",{"type":69,"value":2104}," — the incoming ",{"type":64,"tag":2106,"props":2107,"children":2111},"a",{"href":2108,"rel":2109},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FRequest",[2110],"nofollow",[2112],{"type":69,"value":2113},"Request",{"type":69,"value":2115}," object",{"type":64,"tag":2054,"props":2117,"children":2118},{},[2119,2125],{"type":64,"tag":78,"props":2120,"children":2122},{"className":2121},[],[2123],{"type":69,"value":2124},"params",{"type":69,"value":2126}," — dynamic path parameters",{"type":64,"tag":2054,"props":2128,"children":2129},{},[2130,2136],{"type":64,"tag":78,"props":2131,"children":2133},{"className":2132},[],[2134],{"type":69,"value":2135},"context",{"type":69,"value":2137}," — context from middleware",{"type":64,"tag":2054,"props":2139,"children":2140},{},[2141,2147],{"type":64,"tag":78,"props":2142,"children":2144},{"className":2143},[],[2145],{"type":69,"value":2146},"pathname",{"type":69,"value":2148}," — the matched pathname",{"type":64,"tag":2054,"props":2150,"children":2151},{},[2152,2158,2160,2166],{"type":64,"tag":78,"props":2153,"children":2155},{"className":2154},[],[2156],{"type":69,"value":2157},"next",{"type":69,"value":2159}," — call to fall through to SSR (returns a ",{"type":64,"tag":78,"props":2161,"children":2163},{"className":2162},[],[2164],{"type":69,"value":2165},"Response",{"type":69,"value":1145},{"type":64,"tag":116,"props":2168,"children":2170},{"id":2169},"dynamic-path-params",[2171],{"type":69,"value":2172},"Dynamic Path Params",{"type":64,"tag":123,"props":2174,"children":2176},{"className":125,"code":2175,"language":127,"meta":128,"style":128},"\u002F\u002F routes\u002Fusers\u002F$id.ts\nimport { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Fusers\u002F$id')({\n  server: {\n    handlers: {\n      GET: async ({ params }) => {\n        return new Response(`User ID: ${params.id}`)\n      },\n    },\n  },\n})\n",[2177],{"type":64,"tag":78,"props":2178,"children":2179},{"__ignoreMap":128},[2180,2188,2223,2230,2277,2292,2307,2343,2396,2403,2410,2417],{"type":64,"tag":134,"props":2181,"children":2182},{"class":136,"line":137},[2183],{"type":64,"tag":134,"props":2184,"children":2185},{"style":141},[2186],{"type":69,"value":2187},"\u002F\u002F routes\u002Fusers\u002F$id.ts\n",{"type":64,"tag":134,"props":2189,"children":2190},{"class":136,"line":147},[2191,2195,2199,2203,2207,2211,2215,2219],{"type":64,"tag":134,"props":2192,"children":2193},{"style":151},[2194],{"type":69,"value":154},{"type":64,"tag":134,"props":2196,"children":2197},{"style":157},[2198],{"type":69,"value":160},{"type":64,"tag":134,"props":2200,"children":2201},{"style":163},[2202],{"type":69,"value":166},{"type":64,"tag":134,"props":2204,"children":2205},{"style":157},[2206],{"type":69,"value":171},{"type":64,"tag":134,"props":2208,"children":2209},{"style":151},[2210],{"type":69,"value":176},{"type":64,"tag":134,"props":2212,"children":2213},{"style":157},[2214],{"type":69,"value":181},{"type":64,"tag":134,"props":2216,"children":2217},{"style":184},[2218],{"type":69,"value":187},{"type":64,"tag":134,"props":2220,"children":2221},{"style":157},[2222],{"type":69,"value":192},{"type":64,"tag":134,"props":2224,"children":2225},{"class":136,"line":195},[2226],{"type":64,"tag":134,"props":2227,"children":2228},{"emptyLinePlaceholder":199},[2229],{"type":69,"value":202},{"type":64,"tag":134,"props":2231,"children":2232},{"class":136,"line":205},[2233,2237,2241,2245,2249,2253,2257,2261,2265,2269,2273],{"type":64,"tag":134,"props":2234,"children":2235},{"style":151},[2236],{"type":69,"value":211},{"type":64,"tag":134,"props":2238,"children":2239},{"style":214},[2240],{"type":69,"value":217},{"type":64,"tag":134,"props":2242,"children":2243},{"style":163},[2244],{"type":69,"value":222},{"type":64,"tag":134,"props":2246,"children":2247},{"style":157},[2248],{"type":69,"value":227},{"type":64,"tag":134,"props":2250,"children":2251},{"style":230},[2252],{"type":69,"value":166},{"type":64,"tag":134,"props":2254,"children":2255},{"style":163},[2256],{"type":69,"value":237},{"type":64,"tag":134,"props":2258,"children":2259},{"style":157},[2260],{"type":69,"value":242},{"type":64,"tag":134,"props":2262,"children":2263},{"style":184},[2264],{"type":69,"value":1970},{"type":64,"tag":134,"props":2266,"children":2267},{"style":157},[2268],{"type":69,"value":242},{"type":64,"tag":134,"props":2270,"children":2271},{"style":163},[2272],{"type":69,"value":256},{"type":64,"tag":134,"props":2274,"children":2275},{"style":157},[2276],{"type":69,"value":261},{"type":64,"tag":134,"props":2278,"children":2279},{"class":136,"line":264},[2280,2284,2288],{"type":64,"tag":134,"props":2281,"children":2282},{"style":268},[2283],{"type":69,"value":271},{"type":64,"tag":134,"props":2285,"children":2286},{"style":157},[2287],{"type":69,"value":276},{"type":64,"tag":134,"props":2289,"children":2290},{"style":157},[2291],{"type":69,"value":281},{"type":64,"tag":134,"props":2293,"children":2294},{"class":136,"line":284},[2295,2299,2303],{"type":64,"tag":134,"props":2296,"children":2297},{"style":268},[2298],{"type":69,"value":290},{"type":64,"tag":134,"props":2300,"children":2301},{"style":157},[2302],{"type":69,"value":276},{"type":64,"tag":134,"props":2304,"children":2305},{"style":157},[2306],{"type":69,"value":281},{"type":64,"tag":134,"props":2308,"children":2309},{"class":136,"line":301},[2310,2314,2318,2322,2326,2331,2335,2339],{"type":64,"tag":134,"props":2311,"children":2312},{"style":230},[2313],{"type":69,"value":307},{"type":64,"tag":134,"props":2315,"children":2316},{"style":157},[2317],{"type":69,"value":276},{"type":64,"tag":134,"props":2319,"children":2320},{"style":214},[2321],{"type":69,"value":316},{"type":64,"tag":134,"props":2323,"children":2324},{"style":157},[2325],{"type":69,"value":321},{"type":64,"tag":134,"props":2327,"children":2328},{"style":324},[2329],{"type":69,"value":2330}," params",{"type":64,"tag":134,"props":2332,"children":2333},{"style":157},[2334],{"type":69,"value":332},{"type":64,"tag":134,"props":2336,"children":2337},{"style":214},[2338],{"type":69,"value":337},{"type":64,"tag":134,"props":2340,"children":2341},{"style":157},[2342],{"type":69,"value":281},{"type":64,"tag":134,"props":2344,"children":2345},{"class":136,"line":344},[2346,2350,2354,2358,2362,2366,2371,2375,2379,2383,2388,2392],{"type":64,"tag":134,"props":2347,"children":2348},{"style":151},[2349],{"type":69,"value":350},{"type":64,"tag":134,"props":2351,"children":2352},{"style":157},[2353],{"type":69,"value":355},{"type":64,"tag":134,"props":2355,"children":2356},{"style":230},[2357],{"type":69,"value":360},{"type":64,"tag":134,"props":2359,"children":2360},{"style":268},[2361],{"type":69,"value":237},{"type":64,"tag":134,"props":2363,"children":2364},{"style":157},[2365],{"type":69,"value":764},{"type":64,"tag":134,"props":2367,"children":2368},{"style":184},[2369],{"type":69,"value":2370},"User ID: ",{"type":64,"tag":134,"props":2372,"children":2373},{"style":157},[2374],{"type":69,"value":736},{"type":64,"tag":134,"props":2376,"children":2377},{"style":163},[2378],{"type":69,"value":2124},{"type":64,"tag":134,"props":2380,"children":2381},{"style":157},[2382],{"type":69,"value":674},{"type":64,"tag":134,"props":2384,"children":2385},{"style":163},[2386],{"type":69,"value":2387},"id",{"type":64,"tag":134,"props":2389,"children":2390},{"style":157},[2391],{"type":69,"value":1337},{"type":64,"tag":134,"props":2393,"children":2394},{"style":268},[2395],{"type":69,"value":382},{"type":64,"tag":134,"props":2397,"children":2398},{"class":136,"line":385},[2399],{"type":64,"tag":134,"props":2400,"children":2401},{"style":157},[2402],{"type":69,"value":391},{"type":64,"tag":134,"props":2404,"children":2405},{"class":136,"line":394},[2406],{"type":64,"tag":134,"props":2407,"children":2408},{"style":157},[2409],{"type":69,"value":400},{"type":64,"tag":134,"props":2411,"children":2412},{"class":136,"line":403},[2413],{"type":64,"tag":134,"props":2414,"children":2415},{"style":157},[2416],{"type":69,"value":409},{"type":64,"tag":134,"props":2418,"children":2419},{"class":136,"line":412},[2420,2424],{"type":64,"tag":134,"props":2421,"children":2422},{"style":157},[2423],{"type":69,"value":418},{"type":64,"tag":134,"props":2425,"children":2426},{"style":163},[2427],{"type":69,"value":382},{"type":64,"tag":116,"props":2429,"children":2431},{"id":2430},"splatwildcard-params",[2432],{"type":69,"value":2433},"Splat\u002FWildcard Params",{"type":64,"tag":123,"props":2435,"children":2437},{"className":125,"code":2436,"language":127,"meta":128,"style":128},"\u002F\u002F routes\u002Ffile\u002F$.ts\nimport { createFileRoute } from '@tanstack\u002Freact-router'\n\nexport const Route = createFileRoute('\u002Ffile\u002F$')({\n  server: {\n    handlers: {\n      GET: async ({ params }) => {\n        return new Response(`File: ${params._splat}`)\n      },\n    },\n  },\n})\n",[2438],{"type":64,"tag":78,"props":2439,"children":2440},{"__ignoreMap":128},[2441,2449,2484,2491,2539,2554,2569,2604,2657,2664,2671,2678],{"type":64,"tag":134,"props":2442,"children":2443},{"class":136,"line":137},[2444],{"type":64,"tag":134,"props":2445,"children":2446},{"style":141},[2447],{"type":69,"value":2448},"\u002F\u002F routes\u002Ffile\u002F$.ts\n",{"type":64,"tag":134,"props":2450,"children":2451},{"class":136,"line":147},[2452,2456,2460,2464,2468,2472,2476,2480],{"type":64,"tag":134,"props":2453,"children":2454},{"style":151},[2455],{"type":69,"value":154},{"type":64,"tag":134,"props":2457,"children":2458},{"style":157},[2459],{"type":69,"value":160},{"type":64,"tag":134,"props":2461,"children":2462},{"style":163},[2463],{"type":69,"value":166},{"type":64,"tag":134,"props":2465,"children":2466},{"style":157},[2467],{"type":69,"value":171},{"type":64,"tag":134,"props":2469,"children":2470},{"style":151},[2471],{"type":69,"value":176},{"type":64,"tag":134,"props":2473,"children":2474},{"style":157},[2475],{"type":69,"value":181},{"type":64,"tag":134,"props":2477,"children":2478},{"style":184},[2479],{"type":69,"value":187},{"type":64,"tag":134,"props":2481,"children":2482},{"style":157},[2483],{"type":69,"value":192},{"type":64,"tag":134,"props":2485,"children":2486},{"class":136,"line":195},[2487],{"type":64,"tag":134,"props":2488,"children":2489},{"emptyLinePlaceholder":199},[2490],{"type":69,"value":202},{"type":64,"tag":134,"props":2492,"children":2493},{"class":136,"line":205},[2494,2498,2502,2506,2510,2514,2518,2522,2527,2531,2535],{"type":64,"tag":134,"props":2495,"children":2496},{"style":151},[2497],{"type":69,"value":211},{"type":64,"tag":134,"props":2499,"children":2500},{"style":214},[2501],{"type":69,"value":217},{"type":64,"tag":134,"props":2503,"children":2504},{"style":163},[2505],{"type":69,"value":222},{"type":64,"tag":134,"props":2507,"children":2508},{"style":157},[2509],{"type":69,"value":227},{"type":64,"tag":134,"props":2511,"children":2512},{"style":230},[2513],{"type":69,"value":166},{"type":64,"tag":134,"props":2515,"children":2516},{"style":163},[2517],{"type":69,"value":237},{"type":64,"tag":134,"props":2519,"children":2520},{"style":157},[2521],{"type":69,"value":242},{"type":64,"tag":134,"props":2523,"children":2524},{"style":184},[2525],{"type":69,"value":2526},"\u002Ffile\u002F$",{"type":64,"tag":134,"props":2528,"children":2529},{"style":157},[2530],{"type":69,"value":242},{"type":64,"tag":134,"props":2532,"children":2533},{"style":163},[2534],{"type":69,"value":256},{"type":64,"tag":134,"props":2536,"children":2537},{"style":157},[2538],{"type":69,"value":261},{"type":64,"tag":134,"props":2540,"children":2541},{"class":136,"line":264},[2542,2546,2550],{"type":64,"tag":134,"props":2543,"children":2544},{"style":268},[2545],{"type":69,"value":271},{"type":64,"tag":134,"props":2547,"children":2548},{"style":157},[2549],{"type":69,"value":276},{"type":64,"tag":134,"props":2551,"children":2552},{"style":157},[2553],{"type":69,"value":281},{"type":64,"tag":134,"props":2555,"children":2556},{"class":136,"line":284},[2557,2561,2565],{"type":64,"tag":134,"props":2558,"children":2559},{"style":268},[2560],{"type":69,"value":290},{"type":64,"tag":134,"props":2562,"children":2563},{"style":157},[2564],{"type":69,"value":276},{"type":64,"tag":134,"props":2566,"children":2567},{"style":157},[2568],{"type":69,"value":281},{"type":64,"tag":134,"props":2570,"children":2571},{"class":136,"line":301},[2572,2576,2580,2584,2588,2592,2596,2600],{"type":64,"tag":134,"props":2573,"children":2574},{"style":230},[2575],{"type":69,"value":307},{"type":64,"tag":134,"props":2577,"children":2578},{"style":157},[2579],{"type":69,"value":276},{"type":64,"tag":134,"props":2581,"children":2582},{"style":214},[2583],{"type":69,"value":316},{"type":64,"tag":134,"props":2585,"children":2586},{"style":157},[2587],{"type":69,"value":321},{"type":64,"tag":134,"props":2589,"children":2590},{"style":324},[2591],{"type":69,"value":2330},{"type":64,"tag":134,"props":2593,"children":2594},{"style":157},[2595],{"type":69,"value":332},{"type":64,"tag":134,"props":2597,"children":2598},{"style":214},[2599],{"type":69,"value":337},{"type":64,"tag":134,"props":2601,"children":2602},{"style":157},[2603],{"type":69,"value":281},{"type":64,"tag":134,"props":2605,"children":2606},{"class":136,"line":344},[2607,2611,2615,2619,2623,2627,2632,2636,2640,2644,2649,2653],{"type":64,"tag":134,"props":2608,"children":2609},{"style":151},[2610],{"type":69,"value":350},{"type":64,"tag":134,"props":2612,"children":2613},{"style":157},[2614],{"type":69,"value":355},{"type":64,"tag":134,"props":2616,"children":2617},{"style":230},[2618],{"type":69,"value":360},{"type":64,"tag":134,"props":2620,"children":2621},{"style":268},[2622],{"type":69,"value":237},{"type":64,"tag":134,"props":2624,"children":2625},{"style":157},[2626],{"type":69,"value":764},{"type":64,"tag":134,"props":2628,"children":2629},{"style":184},[2630],{"type":69,"value":2631},"File: ",{"type":64,"tag":134,"props":2633,"children":2634},{"style":157},[2635],{"type":69,"value":736},{"type":64,"tag":134,"props":2637,"children":2638},{"style":163},[2639],{"type":69,"value":2124},{"type":64,"tag":134,"props":2641,"children":2642},{"style":157},[2643],{"type":69,"value":674},{"type":64,"tag":134,"props":2645,"children":2646},{"style":163},[2647],{"type":69,"value":2648},"_splat",{"type":64,"tag":134,"props":2650,"children":2651},{"style":157},[2652],{"type":69,"value":1337},{"type":64,"tag":134,"props":2654,"children":2655},{"style":268},[2656],{"type":69,"value":382},{"type":64,"tag":134,"props":2658,"children":2659},{"class":136,"line":385},[2660],{"type":64,"tag":134,"props":2661,"children":2662},{"style":157},[2663],{"type":69,"value":391},{"type":64,"tag":134,"props":2665,"children":2666},{"class":136,"line":394},[2667],{"type":64,"tag":134,"props":2668,"children":2669},{"style":157},[2670],{"type":69,"value":400},{"type":64,"tag":134,"props":2672,"children":2673},{"class":136,"line":403},[2674],{"type":64,"tag":134,"props":2675,"children":2676},{"style":157},[2677],{"type":69,"value":409},{"type":64,"tag":134,"props":2679,"children":2680},{"class":136,"line":412},[2681,2685],{"type":64,"tag":134,"props":2682,"children":2683},{"style":157},[2684],{"type":69,"value":418},{"type":64,"tag":134,"props":2686,"children":2687},{"style":163},[2688],{"type":69,"value":382},{"type":64,"tag":116,"props":2690,"children":2692},{"id":2691},"request-body-handling",[2693],{"type":69,"value":2694},"Request Body Handling",{"type":64,"tag":123,"props":2696,"children":2698},{"className":125,"code":2697,"language":127,"meta":128,"style":128},"export const Route = createFileRoute('\u002Fapi\u002Fusers')({\n  server: {\n    handlers: {\n      POST: async ({ request }) => {\n        const body = await request.json()\n        return Response.json({ created: body.name })\n      },\n    },\n  },\n})\n",[2699],{"type":64,"tag":78,"props":2700,"children":2701},{"__ignoreMap":128},[2702,2750,2765,2780,2815,2850,2906,2913,2920,2927],{"type":64,"tag":134,"props":2703,"children":2704},{"class":136,"line":137},[2705,2709,2713,2717,2721,2725,2729,2733,2738,2742,2746],{"type":64,"tag":134,"props":2706,"children":2707},{"style":151},[2708],{"type":69,"value":211},{"type":64,"tag":134,"props":2710,"children":2711},{"style":214},[2712],{"type":69,"value":217},{"type":64,"tag":134,"props":2714,"children":2715},{"style":163},[2716],{"type":69,"value":222},{"type":64,"tag":134,"props":2718,"children":2719},{"style":157},[2720],{"type":69,"value":227},{"type":64,"tag":134,"props":2722,"children":2723},{"style":230},[2724],{"type":69,"value":166},{"type":64,"tag":134,"props":2726,"children":2727},{"style":163},[2728],{"type":69,"value":237},{"type":64,"tag":134,"props":2730,"children":2731},{"style":157},[2732],{"type":69,"value":242},{"type":64,"tag":134,"props":2734,"children":2735},{"style":184},[2736],{"type":69,"value":2737},"\u002Fapi\u002Fusers",{"type":64,"tag":134,"props":2739,"children":2740},{"style":157},[2741],{"type":69,"value":242},{"type":64,"tag":134,"props":2743,"children":2744},{"style":163},[2745],{"type":69,"value":256},{"type":64,"tag":134,"props":2747,"children":2748},{"style":157},[2749],{"type":69,"value":261},{"type":64,"tag":134,"props":2751,"children":2752},{"class":136,"line":147},[2753,2757,2761],{"type":64,"tag":134,"props":2754,"children":2755},{"style":268},[2756],{"type":69,"value":271},{"type":64,"tag":134,"props":2758,"children":2759},{"style":157},[2760],{"type":69,"value":276},{"type":64,"tag":134,"props":2762,"children":2763},{"style":157},[2764],{"type":69,"value":281},{"type":64,"tag":134,"props":2766,"children":2767},{"class":136,"line":195},[2768,2772,2776],{"type":64,"tag":134,"props":2769,"children":2770},{"style":268},[2771],{"type":69,"value":290},{"type":64,"tag":134,"props":2773,"children":2774},{"style":157},[2775],{"type":69,"value":276},{"type":64,"tag":134,"props":2777,"children":2778},{"style":157},[2779],{"type":69,"value":281},{"type":64,"tag":134,"props":2781,"children":2782},{"class":136,"line":205},[2783,2787,2791,2795,2799,2803,2807,2811],{"type":64,"tag":134,"props":2784,"children":2785},{"style":230},[2786],{"type":69,"value":614},{"type":64,"tag":134,"props":2788,"children":2789},{"style":157},[2790],{"type":69,"value":276},{"type":64,"tag":134,"props":2792,"children":2793},{"style":214},[2794],{"type":69,"value":316},{"type":64,"tag":134,"props":2796,"children":2797},{"style":157},[2798],{"type":69,"value":321},{"type":64,"tag":134,"props":2800,"children":2801},{"style":324},[2802],{"type":69,"value":327},{"type":64,"tag":134,"props":2804,"children":2805},{"style":157},[2806],{"type":69,"value":332},{"type":64,"tag":134,"props":2808,"children":2809},{"style":214},[2810],{"type":69,"value":337},{"type":64,"tag":134,"props":2812,"children":2813},{"style":157},[2814],{"type":69,"value":281},{"type":64,"tag":134,"props":2816,"children":2817},{"class":136,"line":264},[2818,2822,2826,2830,2834,2838,2842,2846],{"type":64,"tag":134,"props":2819,"children":2820},{"style":214},[2821],{"type":69,"value":650},{"type":64,"tag":134,"props":2823,"children":2824},{"style":163},[2825],{"type":69,"value":655},{"type":64,"tag":134,"props":2827,"children":2828},{"style":157},[2829],{"type":69,"value":660},{"type":64,"tag":134,"props":2831,"children":2832},{"style":151},[2833],{"type":69,"value":665},{"type":64,"tag":134,"props":2835,"children":2836},{"style":163},[2837],{"type":69,"value":327},{"type":64,"tag":134,"props":2839,"children":2840},{"style":157},[2841],{"type":69,"value":674},{"type":64,"tag":134,"props":2843,"children":2844},{"style":230},[2845],{"type":69,"value":679},{"type":64,"tag":134,"props":2847,"children":2848},{"style":268},[2849],{"type":69,"value":684},{"type":64,"tag":134,"props":2851,"children":2852},{"class":136,"line":284},[2853,2857,2861,2865,2869,2873,2877,2882,2886,2890,2894,2898,2902],{"type":64,"tag":134,"props":2854,"children":2855},{"style":151},[2856],{"type":69,"value":350},{"type":64,"tag":134,"props":2858,"children":2859},{"style":163},[2860],{"type":69,"value":360},{"type":64,"tag":134,"props":2862,"children":2863},{"style":157},[2864],{"type":69,"value":674},{"type":64,"tag":134,"props":2866,"children":2867},{"style":230},[2868],{"type":69,"value":679},{"type":64,"tag":134,"props":2870,"children":2871},{"style":268},[2872],{"type":69,"value":237},{"type":64,"tag":134,"props":2874,"children":2875},{"style":157},[2876],{"type":69,"value":712},{"type":64,"tag":134,"props":2878,"children":2879},{"style":268},[2880],{"type":69,"value":2881}," created",{"type":64,"tag":134,"props":2883,"children":2884},{"style":157},[2885],{"type":69,"value":276},{"type":64,"tag":134,"props":2887,"children":2888},{"style":163},[2889],{"type":69,"value":655},{"type":64,"tag":134,"props":2891,"children":2892},{"style":157},[2893],{"type":69,"value":674},{"type":64,"tag":134,"props":2895,"children":2896},{"style":163},[2897],{"type":69,"value":750},{"type":64,"tag":134,"props":2899,"children":2900},{"style":157},[2901],{"type":69,"value":171},{"type":64,"tag":134,"props":2903,"children":2904},{"style":268},[2905],{"type":69,"value":382},{"type":64,"tag":134,"props":2907,"children":2908},{"class":136,"line":301},[2909],{"type":64,"tag":134,"props":2910,"children":2911},{"style":157},[2912],{"type":69,"value":391},{"type":64,"tag":134,"props":2914,"children":2915},{"class":136,"line":344},[2916],{"type":64,"tag":134,"props":2917,"children":2918},{"style":157},[2919],{"type":69,"value":400},{"type":64,"tag":134,"props":2921,"children":2922},{"class":136,"line":385},[2923],{"type":64,"tag":134,"props":2924,"children":2925},{"style":157},[2926],{"type":69,"value":409},{"type":64,"tag":134,"props":2928,"children":2929},{"class":136,"line":394},[2930,2934],{"type":64,"tag":134,"props":2931,"children":2932},{"style":157},[2933],{"type":69,"value":418},{"type":64,"tag":134,"props":2935,"children":2936},{"style":163},[2937],{"type":69,"value":382},{"type":64,"tag":72,"props":2939,"children":2940},{},[2941,2943,2949,2951,2957],{"type":69,"value":2942},"Other body methods: ",{"type":64,"tag":78,"props":2944,"children":2946},{"className":2945},[],[2947],{"type":69,"value":2948},"request.text()",{"type":69,"value":2950},", ",{"type":64,"tag":78,"props":2952,"children":2954},{"className":2953},[],[2955],{"type":69,"value":2956},"request.formData()",{"type":69,"value":674},{"type":64,"tag":116,"props":2959,"children":2961},{"id":2960},"json-responses",[2962],{"type":69,"value":2963},"JSON Responses",{"type":64,"tag":123,"props":2965,"children":2967},{"className":125,"code":2966,"language":127,"meta":128,"style":128},"\u002F\u002F Using Response.json helper\nhandlers: {\n  GET: async () => {\n    return Response.json({ message: 'Hello!' })\n  },\n}\n",[2968],{"type":64,"tag":78,"props":2969,"children":2970},{"__ignoreMap":128},[2971,2979,2996,3024,3081,3088],{"type":64,"tag":134,"props":2972,"children":2973},{"class":136,"line":137},[2974],{"type":64,"tag":134,"props":2975,"children":2976},{"style":141},[2977],{"type":69,"value":2978},"\u002F\u002F Using Response.json helper\n",{"type":64,"tag":134,"props":2980,"children":2981},{"class":136,"line":147},[2982,2988,2992],{"type":64,"tag":134,"props":2983,"children":2985},{"style":2984},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[2986],{"type":69,"value":2987},"handlers",{"type":64,"tag":134,"props":2989,"children":2990},{"style":157},[2991],{"type":69,"value":276},{"type":64,"tag":134,"props":2993,"children":2994},{"style":157},[2995],{"type":69,"value":281},{"type":64,"tag":134,"props":2997,"children":2998},{"class":136,"line":195},[2999,3004,3008,3012,3016,3020],{"type":64,"tag":134,"props":3000,"children":3001},{"style":2984},[3002],{"type":69,"value":3003},"  GET",{"type":64,"tag":134,"props":3005,"children":3006},{"style":157},[3007],{"type":69,"value":276},{"type":64,"tag":134,"props":3009,"children":3010},{"style":214},[3011],{"type":69,"value":316},{"type":64,"tag":134,"props":3013,"children":3014},{"style":157},[3015],{"type":69,"value":1596},{"type":64,"tag":134,"props":3017,"children":3018},{"style":214},[3019],{"type":69,"value":337},{"type":64,"tag":134,"props":3021,"children":3022},{"style":157},[3023],{"type":69,"value":281},{"type":64,"tag":134,"props":3025,"children":3026},{"class":136,"line":205},[3027,3032,3036,3040,3044,3048,3052,3056,3060,3064,3069,3073,3077],{"type":64,"tag":134,"props":3028,"children":3029},{"style":151},[3030],{"type":69,"value":3031},"    return",{"type":64,"tag":134,"props":3033,"children":3034},{"style":163},[3035],{"type":69,"value":360},{"type":64,"tag":134,"props":3037,"children":3038},{"style":157},[3039],{"type":69,"value":674},{"type":64,"tag":134,"props":3041,"children":3042},{"style":230},[3043],{"type":69,"value":679},{"type":64,"tag":134,"props":3045,"children":3046},{"style":268},[3047],{"type":69,"value":237},{"type":64,"tag":134,"props":3049,"children":3050},{"style":157},[3051],{"type":69,"value":712},{"type":64,"tag":134,"props":3053,"children":3054},{"style":268},[3055],{"type":69,"value":717},{"type":64,"tag":134,"props":3057,"children":3058},{"style":157},[3059],{"type":69,"value":276},{"type":64,"tag":134,"props":3061,"children":3062},{"style":157},[3063],{"type":69,"value":181},{"type":64,"tag":134,"props":3065,"children":3066},{"style":184},[3067],{"type":69,"value":3068},"Hello!",{"type":64,"tag":134,"props":3070,"children":3071},{"style":157},[3072],{"type":69,"value":242},{"type":64,"tag":134,"props":3074,"children":3075},{"style":157},[3076],{"type":69,"value":171},{"type":64,"tag":134,"props":3078,"children":3079},{"style":268},[3080],{"type":69,"value":382},{"type":64,"tag":134,"props":3082,"children":3083},{"class":136,"line":264},[3084],{"type":64,"tag":134,"props":3085,"children":3086},{"style":157},[3087],{"type":69,"value":409},{"type":64,"tag":134,"props":3089,"children":3090},{"class":136,"line":284},[3091],{"type":64,"tag":134,"props":3092,"children":3093},{"style":157},[3094],{"type":69,"value":1342},{"type":64,"tag":116,"props":3096,"children":3098},{"id":3097},"status-codes-and-headers",[3099],{"type":69,"value":3100},"Status Codes and Headers",{"type":64,"tag":123,"props":3102,"children":3104},{"className":125,"code":3103,"language":127,"meta":128,"style":128},"handlers: {\n  GET: async ({ params }) => {\n    const user = await findUser(params.id)\n    if (!user) {\n      return new Response('Not found', { status: 404 })\n    }\n    return Response.json(user)\n  },\n}\n",[3105],{"type":64,"tag":78,"props":3106,"children":3107},{"__ignoreMap":128},[3108,3123,3158,3204,3235,3299,3307,3338,3345],{"type":64,"tag":134,"props":3109,"children":3110},{"class":136,"line":137},[3111,3115,3119],{"type":64,"tag":134,"props":3112,"children":3113},{"style":2984},[3114],{"type":69,"value":2987},{"type":64,"tag":134,"props":3116,"children":3117},{"style":157},[3118],{"type":69,"value":276},{"type":64,"tag":134,"props":3120,"children":3121},{"style":157},[3122],{"type":69,"value":281},{"type":64,"tag":134,"props":3124,"children":3125},{"class":136,"line":147},[3126,3130,3134,3138,3142,3146,3150,3154],{"type":64,"tag":134,"props":3127,"children":3128},{"style":2984},[3129],{"type":69,"value":3003},{"type":64,"tag":134,"props":3131,"children":3132},{"style":157},[3133],{"type":69,"value":276},{"type":64,"tag":134,"props":3135,"children":3136},{"style":214},[3137],{"type":69,"value":316},{"type":64,"tag":134,"props":3139,"children":3140},{"style":157},[3141],{"type":69,"value":321},{"type":64,"tag":134,"props":3143,"children":3144},{"style":324},[3145],{"type":69,"value":2330},{"type":64,"tag":134,"props":3147,"children":3148},{"style":157},[3149],{"type":69,"value":332},{"type":64,"tag":134,"props":3151,"children":3152},{"style":214},[3153],{"type":69,"value":337},{"type":64,"tag":134,"props":3155,"children":3156},{"style":157},[3157],{"type":69,"value":281},{"type":64,"tag":134,"props":3159,"children":3160},{"class":136,"line":195},[3161,3166,3171,3175,3179,3184,3188,3192,3196,3200],{"type":64,"tag":134,"props":3162,"children":3163},{"style":214},[3164],{"type":69,"value":3165},"    const",{"type":64,"tag":134,"props":3167,"children":3168},{"style":163},[3169],{"type":69,"value":3170}," user",{"type":64,"tag":134,"props":3172,"children":3173},{"style":157},[3174],{"type":69,"value":660},{"type":64,"tag":134,"props":3176,"children":3177},{"style":151},[3178],{"type":69,"value":665},{"type":64,"tag":134,"props":3180,"children":3181},{"style":230},[3182],{"type":69,"value":3183}," findUser",{"type":64,"tag":134,"props":3185,"children":3186},{"style":268},[3187],{"type":69,"value":237},{"type":64,"tag":134,"props":3189,"children":3190},{"style":163},[3191],{"type":69,"value":2124},{"type":64,"tag":134,"props":3193,"children":3194},{"style":157},[3195],{"type":69,"value":674},{"type":64,"tag":134,"props":3197,"children":3198},{"style":163},[3199],{"type":69,"value":2387},{"type":64,"tag":134,"props":3201,"children":3202},{"style":268},[3203],{"type":69,"value":382},{"type":64,"tag":134,"props":3205,"children":3206},{"class":136,"line":205},[3207,3212,3217,3221,3226,3231],{"type":64,"tag":134,"props":3208,"children":3209},{"style":151},[3210],{"type":69,"value":3211},"    if",{"type":64,"tag":134,"props":3213,"children":3214},{"style":268},[3215],{"type":69,"value":3216}," (",{"type":64,"tag":134,"props":3218,"children":3219},{"style":157},[3220],{"type":69,"value":759},{"type":64,"tag":134,"props":3222,"children":3223},{"style":163},[3224],{"type":69,"value":3225},"user",{"type":64,"tag":134,"props":3227,"children":3228},{"style":268},[3229],{"type":69,"value":3230},") ",{"type":64,"tag":134,"props":3232,"children":3233},{"style":157},[3234],{"type":69,"value":261},{"type":64,"tag":134,"props":3236,"children":3237},{"class":136,"line":264},[3238,3243,3247,3251,3255,3259,3264,3268,3272,3276,3281,3285,3291,3295],{"type":64,"tag":134,"props":3239,"children":3240},{"style":151},[3241],{"type":69,"value":3242},"      return",{"type":64,"tag":134,"props":3244,"children":3245},{"style":157},[3246],{"type":69,"value":355},{"type":64,"tag":134,"props":3248,"children":3249},{"style":230},[3250],{"type":69,"value":360},{"type":64,"tag":134,"props":3252,"children":3253},{"style":268},[3254],{"type":69,"value":237},{"type":64,"tag":134,"props":3256,"children":3257},{"style":157},[3258],{"type":69,"value":242},{"type":64,"tag":134,"props":3260,"children":3261},{"style":184},[3262],{"type":69,"value":3263},"Not found",{"type":64,"tag":134,"props":3265,"children":3266},{"style":157},[3267],{"type":69,"value":242},{"type":64,"tag":134,"props":3269,"children":3270},{"style":157},[3271],{"type":69,"value":883},{"type":64,"tag":134,"props":3273,"children":3274},{"style":157},[3275],{"type":69,"value":160},{"type":64,"tag":134,"props":3277,"children":3278},{"style":268},[3279],{"type":69,"value":3280}," status",{"type":64,"tag":134,"props":3282,"children":3283},{"style":157},[3284],{"type":69,"value":276},{"type":64,"tag":134,"props":3286,"children":3288},{"style":3287},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[3289],{"type":69,"value":3290}," 404",{"type":64,"tag":134,"props":3292,"children":3293},{"style":157},[3294],{"type":69,"value":171},{"type":64,"tag":134,"props":3296,"children":3297},{"style":268},[3298],{"type":69,"value":382},{"type":64,"tag":134,"props":3300,"children":3301},{"class":136,"line":284},[3302],{"type":64,"tag":134,"props":3303,"children":3304},{"style":157},[3305],{"type":69,"value":3306},"    }\n",{"type":64,"tag":134,"props":3308,"children":3309},{"class":136,"line":301},[3310,3314,3318,3322,3326,3330,3334],{"type":64,"tag":134,"props":3311,"children":3312},{"style":151},[3313],{"type":69,"value":3031},{"type":64,"tag":134,"props":3315,"children":3316},{"style":163},[3317],{"type":69,"value":360},{"type":64,"tag":134,"props":3319,"children":3320},{"style":157},[3321],{"type":69,"value":674},{"type":64,"tag":134,"props":3323,"children":3324},{"style":230},[3325],{"type":69,"value":679},{"type":64,"tag":134,"props":3327,"children":3328},{"style":268},[3329],{"type":69,"value":237},{"type":64,"tag":134,"props":3331,"children":3332},{"style":163},[3333],{"type":69,"value":3225},{"type":64,"tag":134,"props":3335,"children":3336},{"style":268},[3337],{"type":69,"value":382},{"type":64,"tag":134,"props":3339,"children":3340},{"class":136,"line":344},[3341],{"type":64,"tag":134,"props":3342,"children":3343},{"style":157},[3344],{"type":69,"value":409},{"type":64,"tag":134,"props":3346,"children":3347},{"class":136,"line":385},[3348],{"type":64,"tag":134,"props":3349,"children":3350},{"style":157},[3351],{"type":69,"value":1342},{"type":64,"tag":123,"props":3353,"children":3355},{"className":125,"code":3354,"language":127,"meta":128,"style":128},"handlers: {\n  GET: async () => {\n    return new Response('Hello', {\n      headers: { 'Content-Type': 'text\u002Fplain' },\n    })\n  },\n}\n",[3356],{"type":64,"tag":78,"props":3357,"children":3358},{"__ignoreMap":128},[3359,3374,3401,3441,3490,3502,3509],{"type":64,"tag":134,"props":3360,"children":3361},{"class":136,"line":137},[3362,3366,3370],{"type":64,"tag":134,"props":3363,"children":3364},{"style":2984},[3365],{"type":69,"value":2987},{"type":64,"tag":134,"props":3367,"children":3368},{"style":157},[3369],{"type":69,"value":276},{"type":64,"tag":134,"props":3371,"children":3372},{"style":157},[3373],{"type":69,"value":281},{"type":64,"tag":134,"props":3375,"children":3376},{"class":136,"line":147},[3377,3381,3385,3389,3393,3397],{"type":64,"tag":134,"props":3378,"children":3379},{"style":2984},[3380],{"type":69,"value":3003},{"type":64,"tag":134,"props":3382,"children":3383},{"style":157},[3384],{"type":69,"value":276},{"type":64,"tag":134,"props":3386,"children":3387},{"style":214},[3388],{"type":69,"value":316},{"type":64,"tag":134,"props":3390,"children":3391},{"style":157},[3392],{"type":69,"value":1596},{"type":64,"tag":134,"props":3394,"children":3395},{"style":214},[3396],{"type":69,"value":337},{"type":64,"tag":134,"props":3398,"children":3399},{"style":157},[3400],{"type":69,"value":281},{"type":64,"tag":134,"props":3402,"children":3403},{"class":136,"line":195},[3404,3408,3412,3416,3420,3424,3429,3433,3437],{"type":64,"tag":134,"props":3405,"children":3406},{"style":151},[3407],{"type":69,"value":3031},{"type":64,"tag":134,"props":3409,"children":3410},{"style":157},[3411],{"type":69,"value":355},{"type":64,"tag":134,"props":3413,"children":3414},{"style":230},[3415],{"type":69,"value":360},{"type":64,"tag":134,"props":3417,"children":3418},{"style":268},[3419],{"type":69,"value":237},{"type":64,"tag":134,"props":3421,"children":3422},{"style":157},[3423],{"type":69,"value":242},{"type":64,"tag":134,"props":3425,"children":3426},{"style":184},[3427],{"type":69,"value":3428},"Hello",{"type":64,"tag":134,"props":3430,"children":3431},{"style":157},[3432],{"type":69,"value":242},{"type":64,"tag":134,"props":3434,"children":3435},{"style":157},[3436],{"type":69,"value":883},{"type":64,"tag":134,"props":3438,"children":3439},{"style":157},[3440],{"type":69,"value":281},{"type":64,"tag":134,"props":3442,"children":3443},{"class":136,"line":205},[3444,3449,3453,3457,3461,3465,3469,3473,3477,3482,3486],{"type":64,"tag":134,"props":3445,"children":3446},{"style":268},[3447],{"type":69,"value":3448},"      headers",{"type":64,"tag":134,"props":3450,"children":3451},{"style":157},[3452],{"type":69,"value":276},{"type":64,"tag":134,"props":3454,"children":3455},{"style":157},[3456],{"type":69,"value":160},{"type":64,"tag":134,"props":3458,"children":3459},{"style":157},[3460],{"type":69,"value":181},{"type":64,"tag":134,"props":3462,"children":3463},{"style":268},[3464],{"type":69,"value":1053},{"type":64,"tag":134,"props":3466,"children":3467},{"style":157},[3468],{"type":69,"value":242},{"type":64,"tag":134,"props":3470,"children":3471},{"style":157},[3472],{"type":69,"value":276},{"type":64,"tag":134,"props":3474,"children":3475},{"style":157},[3476],{"type":69,"value":181},{"type":64,"tag":134,"props":3478,"children":3479},{"style":184},[3480],{"type":69,"value":3481},"text\u002Fplain",{"type":64,"tag":134,"props":3483,"children":3484},{"style":157},[3485],{"type":69,"value":242},{"type":64,"tag":134,"props":3487,"children":3488},{"style":157},[3489],{"type":69,"value":1079},{"type":64,"tag":134,"props":3491,"children":3492},{"class":136,"line":264},[3493,3498],{"type":64,"tag":134,"props":3494,"children":3495},{"style":157},[3496],{"type":69,"value":3497},"    }",{"type":64,"tag":134,"props":3499,"children":3500},{"style":268},[3501],{"type":69,"value":382},{"type":64,"tag":134,"props":3503,"children":3504},{"class":136,"line":284},[3505],{"type":64,"tag":134,"props":3506,"children":3507},{"style":157},[3508],{"type":69,"value":409},{"type":64,"tag":134,"props":3510,"children":3511},{"class":136,"line":301},[3512],{"type":64,"tag":134,"props":3513,"children":3514},{"style":157},[3515],{"type":69,"value":1342},{"type":64,"tag":116,"props":3517,"children":3519},{"id":3518},"middleware-on-server-routes",[3520],{"type":69,"value":3521},"Middleware on Server Routes",{"type":64,"tag":3523,"props":3524,"children":3526},"h3",{"id":3525},"all-handlers",[3527],{"type":69,"value":3528},"All handlers",{"type":64,"tag":123,"props":3530,"children":3532},{"className":436,"code":3531,"language":438,"meta":128,"style":128},"export const Route = createFileRoute('\u002Fapi\u002Fadmin')({\n  server: {\n    middleware: [authMiddleware, loggerMiddleware],\n    handlers: {\n      GET: async ({ context }) => Response.json(context.user),\n      POST: async ({ request, context }) => {\n        \u002F* ... *\u002F\n      },\n    },\n  },\n})\n",[3533],{"type":64,"tag":78,"props":3534,"children":3535},{"__ignoreMap":128},[3536,3584,3599,3629,3644,3706,3749,3757,3764,3771,3778],{"type":64,"tag":134,"props":3537,"children":3538},{"class":136,"line":137},[3539,3543,3547,3551,3555,3559,3563,3567,3572,3576,3580],{"type":64,"tag":134,"props":3540,"children":3541},{"style":151},[3542],{"type":69,"value":211},{"type":64,"tag":134,"props":3544,"children":3545},{"style":214},[3546],{"type":69,"value":217},{"type":64,"tag":134,"props":3548,"children":3549},{"style":163},[3550],{"type":69,"value":222},{"type":64,"tag":134,"props":3552,"children":3553},{"style":157},[3554],{"type":69,"value":227},{"type":64,"tag":134,"props":3556,"children":3557},{"style":230},[3558],{"type":69,"value":166},{"type":64,"tag":134,"props":3560,"children":3561},{"style":163},[3562],{"type":69,"value":237},{"type":64,"tag":134,"props":3564,"children":3565},{"style":157},[3566],{"type":69,"value":242},{"type":64,"tag":134,"props":3568,"children":3569},{"style":184},[3570],{"type":69,"value":3571},"\u002Fapi\u002Fadmin",{"type":64,"tag":134,"props":3573,"children":3574},{"style":157},[3575],{"type":69,"value":242},{"type":64,"tag":134,"props":3577,"children":3578},{"style":163},[3579],{"type":69,"value":256},{"type":64,"tag":134,"props":3581,"children":3582},{"style":157},[3583],{"type":69,"value":261},{"type":64,"tag":134,"props":3585,"children":3586},{"class":136,"line":147},[3587,3591,3595],{"type":64,"tag":134,"props":3588,"children":3589},{"style":268},[3590],{"type":69,"value":271},{"type":64,"tag":134,"props":3592,"children":3593},{"style":157},[3594],{"type":69,"value":276},{"type":64,"tag":134,"props":3596,"children":3597},{"style":157},[3598],{"type":69,"value":281},{"type":64,"tag":134,"props":3600,"children":3601},{"class":136,"line":195},[3602,3607,3611,3616,3620,3625],{"type":64,"tag":134,"props":3603,"children":3604},{"style":268},[3605],{"type":69,"value":3606},"    middleware",{"type":64,"tag":134,"props":3608,"children":3609},{"style":157},[3610],{"type":69,"value":276},{"type":64,"tag":134,"props":3612,"children":3613},{"style":163},[3614],{"type":69,"value":3615}," [authMiddleware",{"type":64,"tag":134,"props":3617,"children":3618},{"style":157},[3619],{"type":69,"value":883},{"type":64,"tag":134,"props":3621,"children":3622},{"style":163},[3623],{"type":69,"value":3624}," loggerMiddleware]",{"type":64,"tag":134,"props":3626,"children":3627},{"style":157},[3628],{"type":69,"value":817},{"type":64,"tag":134,"props":3630,"children":3631},{"class":136,"line":205},[3632,3636,3640],{"type":64,"tag":134,"props":3633,"children":3634},{"style":268},[3635],{"type":69,"value":290},{"type":64,"tag":134,"props":3637,"children":3638},{"style":157},[3639],{"type":69,"value":276},{"type":64,"tag":134,"props":3641,"children":3642},{"style":157},[3643],{"type":69,"value":281},{"type":64,"tag":134,"props":3645,"children":3646},{"class":136,"line":264},[3647,3651,3655,3659,3663,3668,3672,3676,3680,3684,3688,3693,3697,3702],{"type":64,"tag":134,"props":3648,"children":3649},{"style":230},[3650],{"type":69,"value":307},{"type":64,"tag":134,"props":3652,"children":3653},{"style":157},[3654],{"type":69,"value":276},{"type":64,"tag":134,"props":3656,"children":3657},{"style":214},[3658],{"type":69,"value":316},{"type":64,"tag":134,"props":3660,"children":3661},{"style":157},[3662],{"type":69,"value":321},{"type":64,"tag":134,"props":3664,"children":3665},{"style":324},[3666],{"type":69,"value":3667}," context",{"type":64,"tag":134,"props":3669,"children":3670},{"style":157},[3671],{"type":69,"value":332},{"type":64,"tag":134,"props":3673,"children":3674},{"style":214},[3675],{"type":69,"value":337},{"type":64,"tag":134,"props":3677,"children":3678},{"style":163},[3679],{"type":69,"value":360},{"type":64,"tag":134,"props":3681,"children":3682},{"style":157},[3683],{"type":69,"value":674},{"type":64,"tag":134,"props":3685,"children":3686},{"style":230},[3687],{"type":69,"value":679},{"type":64,"tag":134,"props":3689,"children":3690},{"style":163},[3691],{"type":69,"value":3692},"(context",{"type":64,"tag":134,"props":3694,"children":3695},{"style":157},[3696],{"type":69,"value":674},{"type":64,"tag":134,"props":3698,"children":3699},{"style":163},[3700],{"type":69,"value":3701},"user)",{"type":64,"tag":134,"props":3703,"children":3704},{"style":157},[3705],{"type":69,"value":817},{"type":64,"tag":134,"props":3707,"children":3708},{"class":136,"line":284},[3709,3713,3717,3721,3725,3729,3733,3737,3741,3745],{"type":64,"tag":134,"props":3710,"children":3711},{"style":230},[3712],{"type":69,"value":614},{"type":64,"tag":134,"props":3714,"children":3715},{"style":157},[3716],{"type":69,"value":276},{"type":64,"tag":134,"props":3718,"children":3719},{"style":214},[3720],{"type":69,"value":316},{"type":64,"tag":134,"props":3722,"children":3723},{"style":157},[3724],{"type":69,"value":321},{"type":64,"tag":134,"props":3726,"children":3727},{"style":324},[3728],{"type":69,"value":327},{"type":64,"tag":134,"props":3730,"children":3731},{"style":157},[3732],{"type":69,"value":883},{"type":64,"tag":134,"props":3734,"children":3735},{"style":324},[3736],{"type":69,"value":3667},{"type":64,"tag":134,"props":3738,"children":3739},{"style":157},[3740],{"type":69,"value":332},{"type":64,"tag":134,"props":3742,"children":3743},{"style":214},[3744],{"type":69,"value":337},{"type":64,"tag":134,"props":3746,"children":3747},{"style":157},[3748],{"type":69,"value":281},{"type":64,"tag":134,"props":3750,"children":3751},{"class":136,"line":301},[3752],{"type":64,"tag":134,"props":3753,"children":3754},{"style":141},[3755],{"type":69,"value":3756},"        \u002F* ... *\u002F\n",{"type":64,"tag":134,"props":3758,"children":3759},{"class":136,"line":344},[3760],{"type":64,"tag":134,"props":3761,"children":3762},{"style":157},[3763],{"type":69,"value":391},{"type":64,"tag":134,"props":3765,"children":3766},{"class":136,"line":385},[3767],{"type":64,"tag":134,"props":3768,"children":3769},{"style":157},[3770],{"type":69,"value":400},{"type":64,"tag":134,"props":3772,"children":3773},{"class":136,"line":394},[3774],{"type":64,"tag":134,"props":3775,"children":3776},{"style":157},[3777],{"type":69,"value":409},{"type":64,"tag":134,"props":3779,"children":3780},{"class":136,"line":403},[3781,3785],{"type":64,"tag":134,"props":3782,"children":3783},{"style":157},[3784],{"type":69,"value":418},{"type":64,"tag":134,"props":3786,"children":3787},{"style":163},[3788],{"type":69,"value":382},{"type":64,"tag":3523,"props":3790,"children":3792},{"id":3791},"specific-handlers-with-createhandlers",[3793],{"type":69,"value":3794},"Specific handlers with createHandlers",{"type":64,"tag":123,"props":3796,"children":3798},{"className":436,"code":3797,"language":438,"meta":128,"style":128},"export const Route = createFileRoute('\u002Fapi\u002Fdata')({\n  server: {\n    handlers: ({ createHandlers }) =>\n      createHandlers({\n        GET: async () => Response.json({ public: true }),\n        POST: {\n          middleware: [authMiddleware],\n          handler: async ({ context }) => {\n            return Response.json({ user: context.session.user })\n          },\n        },\n      }),\n  },\n})\n",[3799],{"type":64,"tag":78,"props":3800,"children":3801},{"__ignoreMap":128},[3802,3850,3865,3894,3910,3981,3997,4018,4054,4119,4127,4135,4151,4158],{"type":64,"tag":134,"props":3803,"children":3804},{"class":136,"line":137},[3805,3809,3813,3817,3821,3825,3829,3833,3838,3842,3846],{"type":64,"tag":134,"props":3806,"children":3807},{"style":151},[3808],{"type":69,"value":211},{"type":64,"tag":134,"props":3810,"children":3811},{"style":214},[3812],{"type":69,"value":217},{"type":64,"tag":134,"props":3814,"children":3815},{"style":163},[3816],{"type":69,"value":222},{"type":64,"tag":134,"props":3818,"children":3819},{"style":157},[3820],{"type":69,"value":227},{"type":64,"tag":134,"props":3822,"children":3823},{"style":230},[3824],{"type":69,"value":166},{"type":64,"tag":134,"props":3826,"children":3827},{"style":163},[3828],{"type":69,"value":237},{"type":64,"tag":134,"props":3830,"children":3831},{"style":157},[3832],{"type":69,"value":242},{"type":64,"tag":134,"props":3834,"children":3835},{"style":184},[3836],{"type":69,"value":3837},"\u002Fapi\u002Fdata",{"type":64,"tag":134,"props":3839,"children":3840},{"style":157},[3841],{"type":69,"value":242},{"type":64,"tag":134,"props":3843,"children":3844},{"style":163},[3845],{"type":69,"value":256},{"type":64,"tag":134,"props":3847,"children":3848},{"style":157},[3849],{"type":69,"value":261},{"type":64,"tag":134,"props":3851,"children":3852},{"class":136,"line":147},[3853,3857,3861],{"type":64,"tag":134,"props":3854,"children":3855},{"style":268},[3856],{"type":69,"value":271},{"type":64,"tag":134,"props":3858,"children":3859},{"style":157},[3860],{"type":69,"value":276},{"type":64,"tag":134,"props":3862,"children":3863},{"style":157},[3864],{"type":69,"value":281},{"type":64,"tag":134,"props":3866,"children":3867},{"class":136,"line":195},[3868,3872,3876,3880,3885,3889],{"type":64,"tag":134,"props":3869,"children":3870},{"style":230},[3871],{"type":69,"value":290},{"type":64,"tag":134,"props":3873,"children":3874},{"style":157},[3875],{"type":69,"value":276},{"type":64,"tag":134,"props":3877,"children":3878},{"style":157},[3879],{"type":69,"value":321},{"type":64,"tag":134,"props":3881,"children":3882},{"style":324},[3883],{"type":69,"value":3884}," createHandlers",{"type":64,"tag":134,"props":3886,"children":3887},{"style":157},[3888],{"type":69,"value":332},{"type":64,"tag":134,"props":3890,"children":3891},{"style":214},[3892],{"type":69,"value":3893}," =>\n",{"type":64,"tag":134,"props":3895,"children":3896},{"class":136,"line":205},[3897,3902,3906],{"type":64,"tag":134,"props":3898,"children":3899},{"style":230},[3900],{"type":69,"value":3901},"      createHandlers",{"type":64,"tag":134,"props":3903,"children":3904},{"style":163},[3905],{"type":69,"value":237},{"type":64,"tag":134,"props":3907,"children":3908},{"style":157},[3909],{"type":69,"value":261},{"type":64,"tag":134,"props":3911,"children":3912},{"class":136,"line":264},[3913,3918,3922,3926,3930,3934,3938,3942,3946,3950,3954,3959,3963,3969,3973,3977],{"type":64,"tag":134,"props":3914,"children":3915},{"style":230},[3916],{"type":69,"value":3917},"        GET",{"type":64,"tag":134,"props":3919,"children":3920},{"style":157},[3921],{"type":69,"value":276},{"type":64,"tag":134,"props":3923,"children":3924},{"style":214},[3925],{"type":69,"value":316},{"type":64,"tag":134,"props":3927,"children":3928},{"style":157},[3929],{"type":69,"value":1596},{"type":64,"tag":134,"props":3931,"children":3932},{"style":214},[3933],{"type":69,"value":337},{"type":64,"tag":134,"props":3935,"children":3936},{"style":163},[3937],{"type":69,"value":360},{"type":64,"tag":134,"props":3939,"children":3940},{"style":157},[3941],{"type":69,"value":674},{"type":64,"tag":134,"props":3943,"children":3944},{"style":230},[3945],{"type":69,"value":679},{"type":64,"tag":134,"props":3947,"children":3948},{"style":163},[3949],{"type":69,"value":237},{"type":64,"tag":134,"props":3951,"children":3952},{"style":157},[3953],{"type":69,"value":712},{"type":64,"tag":134,"props":3955,"children":3956},{"style":268},[3957],{"type":69,"value":3958}," public",{"type":64,"tag":134,"props":3960,"children":3961},{"style":157},[3962],{"type":69,"value":276},{"type":64,"tag":134,"props":3964,"children":3966},{"style":3965},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[3967],{"type":69,"value":3968}," true",{"type":64,"tag":134,"props":3970,"children":3971},{"style":157},[3972],{"type":69,"value":171},{"type":64,"tag":134,"props":3974,"children":3975},{"style":163},[3976],{"type":69,"value":1145},{"type":64,"tag":134,"props":3978,"children":3979},{"style":157},[3980],{"type":69,"value":817},{"type":64,"tag":134,"props":3982,"children":3983},{"class":136,"line":284},[3984,3989,3993],{"type":64,"tag":134,"props":3985,"children":3986},{"style":268},[3987],{"type":69,"value":3988},"        POST",{"type":64,"tag":134,"props":3990,"children":3991},{"style":157},[3992],{"type":69,"value":276},{"type":64,"tag":134,"props":3994,"children":3995},{"style":157},[3996],{"type":69,"value":281},{"type":64,"tag":134,"props":3998,"children":3999},{"class":136,"line":301},[4000,4005,4009,4014],{"type":64,"tag":134,"props":4001,"children":4002},{"style":268},[4003],{"type":69,"value":4004},"          middleware",{"type":64,"tag":134,"props":4006,"children":4007},{"style":157},[4008],{"type":69,"value":276},{"type":64,"tag":134,"props":4010,"children":4011},{"style":163},[4012],{"type":69,"value":4013}," [authMiddleware]",{"type":64,"tag":134,"props":4015,"children":4016},{"style":157},[4017],{"type":69,"value":817},{"type":64,"tag":134,"props":4019,"children":4020},{"class":136,"line":344},[4021,4026,4030,4034,4038,4042,4046,4050],{"type":64,"tag":134,"props":4022,"children":4023},{"style":230},[4024],{"type":69,"value":4025},"          handler",{"type":64,"tag":134,"props":4027,"children":4028},{"style":157},[4029],{"type":69,"value":276},{"type":64,"tag":134,"props":4031,"children":4032},{"style":214},[4033],{"type":69,"value":316},{"type":64,"tag":134,"props":4035,"children":4036},{"style":157},[4037],{"type":69,"value":321},{"type":64,"tag":134,"props":4039,"children":4040},{"style":324},[4041],{"type":69,"value":3667},{"type":64,"tag":134,"props":4043,"children":4044},{"style":157},[4045],{"type":69,"value":332},{"type":64,"tag":134,"props":4047,"children":4048},{"style":214},[4049],{"type":69,"value":337},{"type":64,"tag":134,"props":4051,"children":4052},{"style":157},[4053],{"type":69,"value":281},{"type":64,"tag":134,"props":4055,"children":4056},{"class":136,"line":385},[4057,4062,4066,4070,4074,4078,4082,4086,4090,4094,4098,4103,4107,4111,4115],{"type":64,"tag":134,"props":4058,"children":4059},{"style":151},[4060],{"type":69,"value":4061},"            return",{"type":64,"tag":134,"props":4063,"children":4064},{"style":163},[4065],{"type":69,"value":360},{"type":64,"tag":134,"props":4067,"children":4068},{"style":157},[4069],{"type":69,"value":674},{"type":64,"tag":134,"props":4071,"children":4072},{"style":230},[4073],{"type":69,"value":679},{"type":64,"tag":134,"props":4075,"children":4076},{"style":268},[4077],{"type":69,"value":237},{"type":64,"tag":134,"props":4079,"children":4080},{"style":157},[4081],{"type":69,"value":712},{"type":64,"tag":134,"props":4083,"children":4084},{"style":268},[4085],{"type":69,"value":3170},{"type":64,"tag":134,"props":4087,"children":4088},{"style":157},[4089],{"type":69,"value":276},{"type":64,"tag":134,"props":4091,"children":4092},{"style":163},[4093],{"type":69,"value":3667},{"type":64,"tag":134,"props":4095,"children":4096},{"style":157},[4097],{"type":69,"value":674},{"type":64,"tag":134,"props":4099,"children":4100},{"style":163},[4101],{"type":69,"value":4102},"session",{"type":64,"tag":134,"props":4104,"children":4105},{"style":157},[4106],{"type":69,"value":674},{"type":64,"tag":134,"props":4108,"children":4109},{"style":163},[4110],{"type":69,"value":3225},{"type":64,"tag":134,"props":4112,"children":4113},{"style":157},[4114],{"type":69,"value":171},{"type":64,"tag":134,"props":4116,"children":4117},{"style":268},[4118],{"type":69,"value":382},{"type":64,"tag":134,"props":4120,"children":4121},{"class":136,"line":394},[4122],{"type":64,"tag":134,"props":4123,"children":4124},{"style":157},[4125],{"type":69,"value":4126},"          },\n",{"type":64,"tag":134,"props":4128,"children":4129},{"class":136,"line":403},[4130],{"type":64,"tag":134,"props":4131,"children":4132},{"style":157},[4133],{"type":69,"value":4134},"        },\n",{"type":64,"tag":134,"props":4136,"children":4137},{"class":136,"line":412},[4138,4143,4147],{"type":64,"tag":134,"props":4139,"children":4140},{"style":157},[4141],{"type":69,"value":4142},"      }",{"type":64,"tag":134,"props":4144,"children":4145},{"style":163},[4146],{"type":69,"value":1145},{"type":64,"tag":134,"props":4148,"children":4149},{"style":157},[4150],{"type":69,"value":817},{"type":64,"tag":134,"props":4152,"children":4153},{"class":136,"line":789},[4154],{"type":64,"tag":134,"props":4155,"children":4156},{"style":157},[4157],{"type":69,"value":409},{"type":64,"tag":134,"props":4159,"children":4160},{"class":136,"line":797},[4161,4165],{"type":64,"tag":134,"props":4162,"children":4163},{"style":157},[4164],{"type":69,"value":418},{"type":64,"tag":134,"props":4166,"children":4167},{"style":163},[4168],{"type":69,"value":382},{"type":64,"tag":3523,"props":4170,"children":4172},{"id":4171},"combined-route-level-and-handler-specific",[4173],{"type":69,"value":4174},"Combined route-level and handler-specific",{"type":64,"tag":123,"props":4176,"children":4178},{"className":436,"code":4177,"language":438,"meta":128,"style":128},"export const Route = createFileRoute('\u002Fapi\u002Fposts')({\n  server: {\n    middleware: [authMiddleware], \u002F\u002F runs first for all\n    handlers: ({ createHandlers }) =>\n      createHandlers({\n        GET: async () => Response.json([]),\n        POST: {\n          middleware: [validationMiddleware], \u002F\u002F runs after auth, POST only\n          handler: async ({ request }) => {\n            const body = await request.json()\n            return Response.json({ created: true })\n          },\n        },\n      }),\n  },\n})\n",[4179],{"type":64,"tag":78,"props":4180,"children":4181},{"__ignoreMap":128},[4182,4230,4245,4269,4296,4311,4355,4370,4395,4430,4466,4513,4520,4527,4542,4549],{"type":64,"tag":134,"props":4183,"children":4184},{"class":136,"line":137},[4185,4189,4193,4197,4201,4205,4209,4213,4218,4222,4226],{"type":64,"tag":134,"props":4186,"children":4187},{"style":151},[4188],{"type":69,"value":211},{"type":64,"tag":134,"props":4190,"children":4191},{"style":214},[4192],{"type":69,"value":217},{"type":64,"tag":134,"props":4194,"children":4195},{"style":163},[4196],{"type":69,"value":222},{"type":64,"tag":134,"props":4198,"children":4199},{"style":157},[4200],{"type":69,"value":227},{"type":64,"tag":134,"props":4202,"children":4203},{"style":230},[4204],{"type":69,"value":166},{"type":64,"tag":134,"props":4206,"children":4207},{"style":163},[4208],{"type":69,"value":237},{"type":64,"tag":134,"props":4210,"children":4211},{"style":157},[4212],{"type":69,"value":242},{"type":64,"tag":134,"props":4214,"children":4215},{"style":184},[4216],{"type":69,"value":4217},"\u002Fapi\u002Fposts",{"type":64,"tag":134,"props":4219,"children":4220},{"style":157},[4221],{"type":69,"value":242},{"type":64,"tag":134,"props":4223,"children":4224},{"style":163},[4225],{"type":69,"value":256},{"type":64,"tag":134,"props":4227,"children":4228},{"style":157},[4229],{"type":69,"value":261},{"type":64,"tag":134,"props":4231,"children":4232},{"class":136,"line":147},[4233,4237,4241],{"type":64,"tag":134,"props":4234,"children":4235},{"style":268},[4236],{"type":69,"value":271},{"type":64,"tag":134,"props":4238,"children":4239},{"style":157},[4240],{"type":69,"value":276},{"type":64,"tag":134,"props":4242,"children":4243},{"style":157},[4244],{"type":69,"value":281},{"type":64,"tag":134,"props":4246,"children":4247},{"class":136,"line":195},[4248,4252,4256,4260,4264],{"type":64,"tag":134,"props":4249,"children":4250},{"style":268},[4251],{"type":69,"value":3606},{"type":64,"tag":134,"props":4253,"children":4254},{"style":157},[4255],{"type":69,"value":276},{"type":64,"tag":134,"props":4257,"children":4258},{"style":163},[4259],{"type":69,"value":4013},{"type":64,"tag":134,"props":4261,"children":4262},{"style":157},[4263],{"type":69,"value":883},{"type":64,"tag":134,"props":4265,"children":4266},{"style":141},[4267],{"type":69,"value":4268}," \u002F\u002F runs first for all\n",{"type":64,"tag":134,"props":4270,"children":4271},{"class":136,"line":205},[4272,4276,4280,4284,4288,4292],{"type":64,"tag":134,"props":4273,"children":4274},{"style":230},[4275],{"type":69,"value":290},{"type":64,"tag":134,"props":4277,"children":4278},{"style":157},[4279],{"type":69,"value":276},{"type":64,"tag":134,"props":4281,"children":4282},{"style":157},[4283],{"type":69,"value":321},{"type":64,"tag":134,"props":4285,"children":4286},{"style":324},[4287],{"type":69,"value":3884},{"type":64,"tag":134,"props":4289,"children":4290},{"style":157},[4291],{"type":69,"value":332},{"type":64,"tag":134,"props":4293,"children":4294},{"style":214},[4295],{"type":69,"value":3893},{"type":64,"tag":134,"props":4297,"children":4298},{"class":136,"line":264},[4299,4303,4307],{"type":64,"tag":134,"props":4300,"children":4301},{"style":230},[4302],{"type":69,"value":3901},{"type":64,"tag":134,"props":4304,"children":4305},{"style":163},[4306],{"type":69,"value":237},{"type":64,"tag":134,"props":4308,"children":4309},{"style":157},[4310],{"type":69,"value":261},{"type":64,"tag":134,"props":4312,"children":4313},{"class":136,"line":284},[4314,4318,4322,4326,4330,4334,4338,4342,4346,4351],{"type":64,"tag":134,"props":4315,"children":4316},{"style":230},[4317],{"type":69,"value":3917},{"type":64,"tag":134,"props":4319,"children":4320},{"style":157},[4321],{"type":69,"value":276},{"type":64,"tag":134,"props":4323,"children":4324},{"style":214},[4325],{"type":69,"value":316},{"type":64,"tag":134,"props":4327,"children":4328},{"style":157},[4329],{"type":69,"value":1596},{"type":64,"tag":134,"props":4331,"children":4332},{"style":214},[4333],{"type":69,"value":337},{"type":64,"tag":134,"props":4335,"children":4336},{"style":163},[4337],{"type":69,"value":360},{"type":64,"tag":134,"props":4339,"children":4340},{"style":157},[4341],{"type":69,"value":674},{"type":64,"tag":134,"props":4343,"children":4344},{"style":230},[4345],{"type":69,"value":679},{"type":64,"tag":134,"props":4347,"children":4348},{"style":163},[4349],{"type":69,"value":4350},"([])",{"type":64,"tag":134,"props":4352,"children":4353},{"style":157},[4354],{"type":69,"value":817},{"type":64,"tag":134,"props":4356,"children":4357},{"class":136,"line":301},[4358,4362,4366],{"type":64,"tag":134,"props":4359,"children":4360},{"style":268},[4361],{"type":69,"value":3988},{"type":64,"tag":134,"props":4363,"children":4364},{"style":157},[4365],{"type":69,"value":276},{"type":64,"tag":134,"props":4367,"children":4368},{"style":157},[4369],{"type":69,"value":281},{"type":64,"tag":134,"props":4371,"children":4372},{"class":136,"line":344},[4373,4377,4381,4386,4390],{"type":64,"tag":134,"props":4374,"children":4375},{"style":268},[4376],{"type":69,"value":4004},{"type":64,"tag":134,"props":4378,"children":4379},{"style":157},[4380],{"type":69,"value":276},{"type":64,"tag":134,"props":4382,"children":4383},{"style":163},[4384],{"type":69,"value":4385}," [validationMiddleware]",{"type":64,"tag":134,"props":4387,"children":4388},{"style":157},[4389],{"type":69,"value":883},{"type":64,"tag":134,"props":4391,"children":4392},{"style":141},[4393],{"type":69,"value":4394}," \u002F\u002F runs after auth, POST only\n",{"type":64,"tag":134,"props":4396,"children":4397},{"class":136,"line":385},[4398,4402,4406,4410,4414,4418,4422,4426],{"type":64,"tag":134,"props":4399,"children":4400},{"style":230},[4401],{"type":69,"value":4025},{"type":64,"tag":134,"props":4403,"children":4404},{"style":157},[4405],{"type":69,"value":276},{"type":64,"tag":134,"props":4407,"children":4408},{"style":214},[4409],{"type":69,"value":316},{"type":64,"tag":134,"props":4411,"children":4412},{"style":157},[4413],{"type":69,"value":321},{"type":64,"tag":134,"props":4415,"children":4416},{"style":324},[4417],{"type":69,"value":327},{"type":64,"tag":134,"props":4419,"children":4420},{"style":157},[4421],{"type":69,"value":332},{"type":64,"tag":134,"props":4423,"children":4424},{"style":214},[4425],{"type":69,"value":337},{"type":64,"tag":134,"props":4427,"children":4428},{"style":157},[4429],{"type":69,"value":281},{"type":64,"tag":134,"props":4431,"children":4432},{"class":136,"line":394},[4433,4438,4442,4446,4450,4454,4458,4462],{"type":64,"tag":134,"props":4434,"children":4435},{"style":214},[4436],{"type":69,"value":4437},"            const",{"type":64,"tag":134,"props":4439,"children":4440},{"style":163},[4441],{"type":69,"value":655},{"type":64,"tag":134,"props":4443,"children":4444},{"style":157},[4445],{"type":69,"value":660},{"type":64,"tag":134,"props":4447,"children":4448},{"style":151},[4449],{"type":69,"value":665},{"type":64,"tag":134,"props":4451,"children":4452},{"style":163},[4453],{"type":69,"value":327},{"type":64,"tag":134,"props":4455,"children":4456},{"style":157},[4457],{"type":69,"value":674},{"type":64,"tag":134,"props":4459,"children":4460},{"style":230},[4461],{"type":69,"value":679},{"type":64,"tag":134,"props":4463,"children":4464},{"style":268},[4465],{"type":69,"value":684},{"type":64,"tag":134,"props":4467,"children":4468},{"class":136,"line":403},[4469,4473,4477,4481,4485,4489,4493,4497,4501,4505,4509],{"type":64,"tag":134,"props":4470,"children":4471},{"style":151},[4472],{"type":69,"value":4061},{"type":64,"tag":134,"props":4474,"children":4475},{"style":163},[4476],{"type":69,"value":360},{"type":64,"tag":134,"props":4478,"children":4479},{"style":157},[4480],{"type":69,"value":674},{"type":64,"tag":134,"props":4482,"children":4483},{"style":230},[4484],{"type":69,"value":679},{"type":64,"tag":134,"props":4486,"children":4487},{"style":268},[4488],{"type":69,"value":237},{"type":64,"tag":134,"props":4490,"children":4491},{"style":157},[4492],{"type":69,"value":712},{"type":64,"tag":134,"props":4494,"children":4495},{"style":268},[4496],{"type":69,"value":2881},{"type":64,"tag":134,"props":4498,"children":4499},{"style":157},[4500],{"type":69,"value":276},{"type":64,"tag":134,"props":4502,"children":4503},{"style":3965},[4504],{"type":69,"value":3968},{"type":64,"tag":134,"props":4506,"children":4507},{"style":157},[4508],{"type":69,"value":171},{"type":64,"tag":134,"props":4510,"children":4511},{"style":268},[4512],{"type":69,"value":382},{"type":64,"tag":134,"props":4514,"children":4515},{"class":136,"line":412},[4516],{"type":64,"tag":134,"props":4517,"children":4518},{"style":157},[4519],{"type":69,"value":4126},{"type":64,"tag":134,"props":4521,"children":4522},{"class":136,"line":789},[4523],{"type":64,"tag":134,"props":4524,"children":4525},{"style":157},[4526],{"type":69,"value":4134},{"type":64,"tag":134,"props":4528,"children":4529},{"class":136,"line":797},[4530,4534,4538],{"type":64,"tag":134,"props":4531,"children":4532},{"style":157},[4533],{"type":69,"value":4142},{"type":64,"tag":134,"props":4535,"children":4536},{"style":163},[4537],{"type":69,"value":1145},{"type":64,"tag":134,"props":4539,"children":4540},{"style":157},[4541],{"type":69,"value":817},{"type":64,"tag":134,"props":4543,"children":4544},{"class":136,"line":820},[4545],{"type":64,"tag":134,"props":4546,"children":4547},{"style":157},[4548],{"type":69,"value":409},{"type":64,"tag":134,"props":4550,"children":4551},{"class":136,"line":832},[4552,4556],{"type":64,"tag":134,"props":4553,"children":4554},{"style":157},[4555],{"type":69,"value":418},{"type":64,"tag":134,"props":4557,"children":4558},{"style":163},[4559],{"type":69,"value":382},{"type":64,"tag":116,"props":4561,"children":4563},{"id":4562},"common-mistakes",[4564],{"type":69,"value":4565},"Common Mistakes",{"type":64,"tag":3523,"props":4567,"children":4569},{"id":4568},"_1-critical-protecting-the-page-but-not-the-server-route",[4570],{"type":69,"value":4571},"1. CRITICAL: Protecting the page but not the server route",{"type":64,"tag":72,"props":4573,"children":4574},{},[4575,4577,4583,4585,4591],{"type":69,"value":4576},"Every handler that reads or writes private data must authenticate and authorize the request through route middleware, handler middleware, or an in-handler check. A router ",{"type":64,"tag":78,"props":4578,"children":4580},{"className":4579},[],[4581],{"type":69,"value":4582},"beforeLoad",{"type":69,"value":4584}," redirect does not protect ",{"type":64,"tag":78,"props":4586,"children":4588},{"className":4587},[],[4589],{"type":69,"value":4590},"\u002Fapi\u002F...",{"type":69,"value":4592},". Test the handler directly without cookies and assert that no private payload is returned.",{"type":64,"tag":3523,"props":4594,"children":4596},{"id":4595},"_2-medium-duplicate-route-paths",[4597],{"type":69,"value":4598},"2. MEDIUM: Duplicate route paths",{"type":64,"tag":123,"props":4600,"children":4604},{"className":4601,"code":4603,"language":69,"meta":128},[4602],"language-text","# WRONG — both resolve to \u002Fusers, causes error\nroutes\u002Fusers.ts\nroutes\u002Fusers\u002Findex.ts\n\n# CORRECT — pick one\nroutes\u002Fusers.ts\n",[4605],{"type":64,"tag":78,"props":4606,"children":4607},{"__ignoreMap":128},[4608],{"type":69,"value":4603},{"type":64,"tag":3523,"props":4610,"children":4612},{"id":4611},"_3-medium-forgetting-to-await-request-body-methods",[4613],{"type":69,"value":4614},"3. MEDIUM: Forgetting to await request body methods",{"type":64,"tag":123,"props":4616,"children":4618},{"className":125,"code":4617,"language":127,"meta":128,"style":128},"\u002F\u002F WRONG — body is a Promise, not the actual data\nconst body = request.json()\n\n\u002F\u002F CORRECT — await the promise\nconst body = await request.json()\n",[4619],{"type":64,"tag":78,"props":4620,"children":4621},{"__ignoreMap":128},[4622,4630,4662,4669,4677],{"type":64,"tag":134,"props":4623,"children":4624},{"class":136,"line":137},[4625],{"type":64,"tag":134,"props":4626,"children":4627},{"style":141},[4628],{"type":69,"value":4629},"\u002F\u002F WRONG — body is a Promise, not the actual data\n",{"type":64,"tag":134,"props":4631,"children":4632},{"class":136,"line":147},[4633,4637,4642,4646,4650,4654,4658],{"type":64,"tag":134,"props":4634,"children":4635},{"style":214},[4636],{"type":69,"value":1682},{"type":64,"tag":134,"props":4638,"children":4639},{"style":163},[4640],{"type":69,"value":4641}," body ",{"type":64,"tag":134,"props":4643,"children":4644},{"style":157},[4645],{"type":69,"value":227},{"type":64,"tag":134,"props":4647,"children":4648},{"style":163},[4649],{"type":69,"value":327},{"type":64,"tag":134,"props":4651,"children":4652},{"style":157},[4653],{"type":69,"value":674},{"type":64,"tag":134,"props":4655,"children":4656},{"style":230},[4657],{"type":69,"value":679},{"type":64,"tag":134,"props":4659,"children":4660},{"style":163},[4661],{"type":69,"value":684},{"type":64,"tag":134,"props":4663,"children":4664},{"class":136,"line":195},[4665],{"type":64,"tag":134,"props":4666,"children":4667},{"emptyLinePlaceholder":199},[4668],{"type":69,"value":202},{"type":64,"tag":134,"props":4670,"children":4671},{"class":136,"line":205},[4672],{"type":64,"tag":134,"props":4673,"children":4674},{"style":141},[4675],{"type":69,"value":4676},"\u002F\u002F CORRECT — await the promise\n",{"type":64,"tag":134,"props":4678,"children":4679},{"class":136,"line":264},[4680,4684,4688,4692,4696,4700,4704,4708],{"type":64,"tag":134,"props":4681,"children":4682},{"style":214},[4683],{"type":69,"value":1682},{"type":64,"tag":134,"props":4685,"children":4686},{"style":163},[4687],{"type":69,"value":4641},{"type":64,"tag":134,"props":4689,"children":4690},{"style":157},[4691],{"type":69,"value":227},{"type":64,"tag":134,"props":4693,"children":4694},{"style":151},[4695],{"type":69,"value":665},{"type":64,"tag":134,"props":4697,"children":4698},{"style":163},[4699],{"type":69,"value":327},{"type":64,"tag":134,"props":4701,"children":4702},{"style":157},[4703],{"type":69,"value":674},{"type":64,"tag":134,"props":4705,"children":4706},{"style":230},[4707],{"type":69,"value":679},{"type":64,"tag":134,"props":4709,"children":4710},{"style":163},[4711],{"type":69,"value":684},{"type":64,"tag":3523,"props":4713,"children":4715},{"id":4714},"_4-high-trusting-typescript-as-response-schema-validation",[4716],{"type":69,"value":4717},"4. HIGH: Trusting TypeScript as response-schema validation",{"type":64,"tag":72,"props":4719,"children":4720},{},[4721,4723,4728,4730,4736],{"type":69,"value":4722},"Validate request input and test the serialized ",{"type":64,"tag":78,"props":4724,"children":4726},{"className":4725},[],[4727],{"type":69,"value":2165},{"type":69,"value":4729}," output. A typed service can still be projected or serialized without a newly added field. For schema changes, assert ",{"type":64,"tag":78,"props":4731,"children":4733},{"className":4732},[],[4734],{"type":69,"value":4735},"await response.json()",{"type":69,"value":4737}," at the server-route boundary.",{"type":64,"tag":116,"props":4739,"children":4741},{"id":4740},"cross-references",[4742],{"type":69,"value":4743},"Cross-References",{"type":64,"tag":2050,"props":4745,"children":4746},{},[4747,4758],{"type":64,"tag":2054,"props":4748,"children":4749},{},[4750,4756],{"type":64,"tag":2106,"props":4751,"children":4753},{"href":4752},"..\u002Fmiddleware\u002FSKILL.md",[4754],{"type":69,"value":4755},"start-core\u002Fmiddleware",{"type":69,"value":4757}," — middleware for server routes",{"type":64,"tag":2054,"props":4759,"children":4760},{},[4761,4767],{"type":64,"tag":2106,"props":4762,"children":4764},{"href":4763},"..\u002Fserver-functions\u002FSKILL.md",[4765],{"type":69,"value":4766},"start-core\u002Fserver-functions",{"type":69,"value":4768}," — alternative for RPC-style calls",{"type":64,"tag":4770,"props":4771,"children":4772},"style",{},[4773],{"type":69,"value":4774},"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":4776,"total":4918},[4777,4793,4805,4817,4832,4844,4854,4864,4877,4887,4898,4908],{"slug":4778,"name":4778,"fn":4779,"description":4780,"org":4781,"tags":4782,"stars":4790,"repoUrl":4791,"updatedAt":4792},"aggregation","perform data aggregation in TanStack Table","Aggregate TanStack Table columns independently of grouping, including grand totals, caller-selected row totals, multiple keyed aggregations, custom context-based definitions, grouped merges, manual values, and worker constraints.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4783,4786,4789],{"name":4784,"slug":4785,"type":15},"Data Analysis","data-analysis",{"name":4787,"slug":4788,"type":15},"Frontend","frontend",{"name":9,"slug":8,"type":15},28175,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Ftable","2026-07-30T05:25:59.429787",{"slug":4794,"name":4794,"fn":4795,"description":4796,"org":4797,"tags":4798,"stars":4790,"repoUrl":4791,"updatedAt":4804},"api-not-found","diagnose TanStack Table API errors","Diagnose missing TanStack Table v9 exports, options, state slices, and instance methods. Load before inventing an API when code sees a type error, undefined feature method, absent object key, adapter mismatch, or v8-shaped example.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4799,4802,4803],{"name":4800,"slug":4801,"type":15},"Debugging","debugging",{"name":4787,"slug":4788,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:26:05.418735",{"slug":4806,"name":4806,"fn":4807,"description":4808,"org":4809,"tags":4810,"stars":4790,"repoUrl":4791,"updatedAt":4816},"cell-selection","select rectangular cell ranges in tables","Select rectangular cell ranges with cellSelectionFeature: two-corner range state keyed by row and column id, mousedown\u002Fmouseenter handlers, selection edges, render-order resolution under pinning, and autoResetCellSelection. Load when ranges widen unexpectedly after sorting or column reordering, when a drag re-renders the whole table, or when building copy-to-clipboard from a selection.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4811,4812,4813],{"name":4784,"slug":4785,"type":15},{"name":9,"slug":8,"type":15},{"name":4814,"slug":4815,"type":15},"UI Components","ui-components","2026-07-30T05:25:38.403427",{"slug":4818,"name":4818,"fn":4819,"description":4820,"org":4821,"tags":4822,"stars":4790,"repoUrl":4791,"updatedAt":4831},"client-vs-server","manage TanStack Table data pipelines","Choose client or server ownership for filtering, grouping, sorting, expanding, and pagination in TanStack Table v9. Load for manual* flags, mixed pipelines, server counts, or deciding which dataset each row-model stage receives.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4823,4826,4827,4830],{"name":4824,"slug":4825,"type":15},"Data Pipeline","data-pipeline",{"name":4787,"slug":4788,"type":15},{"name":4828,"slug":4829,"type":15},"Performance","performance",{"name":9,"slug":8,"type":15},"2026-07-30T05:25:45.400104",{"slug":4833,"name":4833,"fn":4834,"description":4835,"org":4836,"tags":4837,"stars":4790,"repoUrl":4791,"updatedAt":4843},"column-faceting","build faceted filter UIs","Build faceted filter UIs with columnFacetingFeature, facetedRowModel, facetedUniqueValues, and facetedMinMaxValues. Load for facet counts, numeric ranges, own-filter exclusion, or server-page facet completeness.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4838,4841,4842],{"name":4839,"slug":4840,"type":15},"Data Visualization","data-visualization",{"name":4787,"slug":4788,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:41.397257",{"slug":4845,"name":4845,"fn":4846,"description":4847,"org":4848,"tags":4849,"stars":4790,"repoUrl":4791,"updatedAt":4853},"column-filtering","implement column filtering in TanStack Table","Filter columns with columnFilteringFeature, filteredRowModel, filterFns, filterMeta, nested-row direction, and manualFiltering. Load for accessor compatibility, controlled filter updaters, fuzzy metadata, or client\u002Fserver ownership.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4850,4851,4852],{"name":4784,"slug":4785,"type":15},{"name":4787,"slug":4788,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:53.391632",{"slug":4855,"name":4855,"fn":4856,"description":4857,"org":4858,"tags":4859,"stars":4790,"repoUrl":4791,"updatedAt":4863},"column-ordering","manage TanStack Table column ordering","Control TanStack Table v9 leaf columnOrder with stable IDs while accounting for pinning regions, visibility, and groupedColumnMode precedence. Load for drag-and-drop columns or rendered order that differs from state.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4860,4861,4862],{"name":4787,"slug":4788,"type":15},{"name":9,"slug":8,"type":15},{"name":4814,"slug":4815,"type":15},"2026-07-30T05:26:03.37801",{"slug":4865,"name":4865,"fn":4866,"description":4867,"org":4868,"tags":4869,"stars":4790,"repoUrl":4791,"updatedAt":4876},"column-pinning","configure column pinning in TanStack Table","Pin columns into logical start, center, and end regions with columnPinningFeature and renderer-owned sticky CSS. Load for RTL offsets, z-index, backgrounds, overflow, widths, gaps, or overlaps.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4870,4873,4874,4875],{"name":4871,"slug":4872,"type":15},"CSS","css",{"name":4787,"slug":4788,"type":15},{"name":9,"slug":8,"type":15},{"name":4814,"slug":4815,"type":15},"2026-07-30T05:25:55.377366",{"slug":4878,"name":4878,"fn":4879,"description":4880,"org":4881,"tags":4882,"stars":4790,"repoUrl":4791,"updatedAt":4886},"column-resizing","implement column resizing in TanStack Table","Wire columnResizingFeature, header.getResizeHandler, resize mode and direction, pointer or touch events, and performant CSS-variable updates. Load when resize state changes but widths do not, or large tables resize slowly.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4883,4884,4885],{"name":4787,"slug":4788,"type":15},{"name":9,"slug":8,"type":15},{"name":4814,"slug":4815,"type":15},"2026-07-30T05:25:51.400011",{"slug":4888,"name":4888,"fn":4889,"description":4890,"org":4891,"tags":4892,"stars":4790,"repoUrl":4791,"updatedAt":4897},"column-sizing","configure column sizing in TanStack Table","Use columnSizingFeature numeric size, minSize, maxSize, getSize, getStart, getAfter, and total-size APIs in table, grid, or flex CSS. Load for auto or percentage misconceptions and sizing\u002Fpinning layout mismatch.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4893,4894,4895,4896],{"name":4871,"slug":4872,"type":15},{"name":4787,"slug":4788,"type":15},{"name":9,"slug":8,"type":15},{"name":4814,"slug":4815,"type":15},"2026-07-30T05:25:48.703799",{"slug":4899,"name":4899,"fn":4900,"description":4901,"org":4902,"tags":4903,"stars":4790,"repoUrl":4791,"updatedAt":4907},"column-visibility","manage column visibility in TanStack Table","Hide columns with columnVisibilityFeature while rendering visibility-aware header, column, and cell collections. Load when hidden columns remain in the DOM, false-versus-absent state is confused, or enableHiding is misunderstood.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4904,4905,4906],{"name":4787,"slug":4788,"type":15},{"name":9,"slug":8,"type":15},{"name":4814,"slug":4815,"type":15},"2026-07-30T05:25:47.367943",{"slug":4909,"name":4909,"fn":4910,"description":4911,"org":4912,"tags":4913,"stars":4790,"repoUrl":4791,"updatedAt":4917},"core","build data grids with TanStack Table","Use TanStack Table v9 as a headless data-grid state and row-processing engine. Load for first-table architecture, stable data and columns, row numbering with getDisplayIndex, semantic rendering, framework adapter choice, or deciding what Table owns versus the renderer.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4914,4915,4916],{"name":4784,"slug":4785,"type":15},{"name":4787,"slug":4788,"type":15},{"name":4814,"slug":4815,"type":15},"2026-07-30T05:25:52.366295",125,{"items":4920,"total":1286},[4921,4938,4953,4967,4980,4999,5010],{"slug":4922,"name":4922,"fn":4923,"description":4924,"org":4925,"tags":4926,"stars":23,"repoUrl":24,"updatedAt":4937},"auth-and-guards","implement route protection in TanStack Router","Route protection with beforeLoad, redirect()\u002Fthrow redirect(), isRedirect helper, authenticated layout routes (_authenticated), non-redirect auth (inline login), RBAC with roles and permissions, auth provider integration (Auth0, Clerk, Supabase), router context for auth state.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4927,4930,4931,4933,4934],{"name":4928,"slug":4929,"type":15},"Auth","auth",{"name":4787,"slug":4788,"type":15},{"name":4932,"slug":35,"type":15},"Routing",{"name":9,"slug":8,"type":15},{"name":4935,"slug":4936,"type":15},"TanStack Router","tanstack-router","2026-07-30T05:27:07.639032",{"slug":4939,"name":4939,"fn":4940,"description":4941,"org":4942,"tags":4943,"stars":23,"repoUrl":24,"updatedAt":4952},"auth-server-primitives","implement server-side authentication primitives","Server-side authentication primitives for TanStack Start: session cookies (HttpOnly, Secure, SameSite, __Host- prefix), session read\u002Fissue\u002Fdestroy via createServerFn and middleware, OAuth authorization-code flow with state and PKCE, password-reset enumeration defense, CSRF for non-GET RPCs, rate limiting auth endpoints, session rotation on privilege change. Pairs with router-core\u002Fauth-and-guards for the routing side.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4944,4945,4948,4951],{"name":4928,"slug":4929,"type":15},{"name":4946,"slug":4947,"type":15},"OAuth","oauth",{"name":4949,"slug":4950,"type":15},"Security","security",{"name":9,"slug":8,"type":15},"2026-07-30T05:26:59.504396",{"slug":4954,"name":4954,"fn":4955,"description":4956,"org":4957,"tags":4958,"stars":23,"repoUrl":24,"updatedAt":4966},"code-splitting","configure code splitting in TanStack Router","Automatic code splitting (autoCodeSplitting), .lazy.tsx convention, createLazyFileRoute, createLazyRoute, lazyRouteComponent, getRouteApi for typed hooks in split files, codeSplitGroupings per-route override, splitBehavior programmatic config, critical vs non-critical properties.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4959,4962,4963,4964,4965],{"name":4960,"slug":4961,"type":15},"Engineering","engineering",{"name":4787,"slug":4788,"type":15},{"name":4828,"slug":4829,"type":15},{"name":9,"slug":8,"type":15},{"name":4935,"slug":4936,"type":15},"2026-07-30T05:27:11.494406",{"slug":4968,"name":4968,"fn":4969,"description":4970,"org":4971,"tags":4972,"stars":23,"repoUrl":24,"updatedAt":4979},"data-loading","manage data loading in TanStack Router","Route loader option, loaderDeps for cache keys, staleTime\u002FgcTime\u002F defaultPreloadStaleTime SWR caching, pendingComponent\u002FpendingMs\u002F pendingMinMs, errorComponent\u002FonError\u002FonCatch, beforeLoad, router context and createRootRouteWithContext DI pattern, router.invalidate, Await component, deferred data loading with unawaited promises.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4973,4976,4977,4978],{"name":4974,"slug":4975,"type":15},"Caching","caching",{"name":4828,"slug":4829,"type":15},{"name":9,"slug":8,"type":15},{"name":4935,"slug":4936,"type":15},"2026-07-30T05:26:54.487943",{"slug":4981,"name":4981,"fn":4982,"description":4983,"org":4984,"tags":4985,"stars":23,"repoUrl":24,"updatedAt":4998},"deployment","deploy TanStack Start applications","Deploy to Cloudflare Workers, Netlify, Vercel, Node.js\u002FDocker, Bun, Railway. Selective SSR (ssr option per route), SPA mode, static prerendering, ISR with Cache-Control headers, SEO and head management.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[4986,4989,4991,4994,4995],{"name":4987,"slug":4988,"type":15},"Cloudflare","cloudflare",{"name":4990,"slug":4981,"type":15},"Deployment",{"name":4992,"slug":4993,"type":15},"Netlify","netlify",{"name":9,"slug":8,"type":15},{"name":4996,"slug":4997,"type":15},"Vercel","vercel","2026-07-30T05:26:50.509927",{"slug":5000,"name":5000,"fn":5001,"description":5002,"org":5003,"tags":5004,"stars":23,"repoUrl":24,"updatedAt":5009},"execution-model","manage isomorphic execution models","Isomorphic-by-default principle, environment boundary functions (createServerFn, createServerOnlyFn, createClientOnlyFn, createIsomorphicFn), ClientOnly component, useHydrated hook, import protection, dead code elimination, environment variable safety (VITE_ prefix, process.env).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[5005,5008],{"name":5006,"slug":5007,"type":15},"Architecture","architecture",{"name":9,"slug":8,"type":15},"2026-07-30T05:27:04.558441",{"slug":5011,"name":5011,"fn":5012,"description":5013,"org":5014,"tags":5015,"stars":23,"repoUrl":24,"updatedAt":5021},"middleware","implement TanStack Router middleware","createMiddleware, request middleware (.server only), server function middleware (.client + .server), context passing via next({ context }), sendContext for client-server transfer, global middleware via createStart in src\u002Fstart.ts, middleware factories, method order enforcement, fetch override precedence.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[5016,5017,5018,5020],{"name":13,"slug":14,"type":15},{"name":4787,"slug":4788,"type":15},{"name":5019,"slug":5011,"type":15},"Middleware",{"name":9,"slug":8,"type":15},"2026-07-30T05:26:58.546019"]