[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-tanstack-start-server-core":3,"mdc-xwm7oo-key":50,"related-org-tanstack-start-server-core":5947,"related-repo-tanstack-start-server-core":6090},{"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},"start-server-core","manage server-side runtime requests","Server-side runtime for TanStack Start: createStartHandler, request\u002Fresponse utilities (getRequest, setResponseHeader, setCookie, getCookie, useSession), three-phase request handling, AsyncLocalStorage context.",{"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},"API Development","api-development",{"name":20,"slug":21,"type":15},"Serverless","serverless",{"name":9,"slug":8,"type":15},14787,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Frouter","2026-07-30T05:27:00.523456",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-server-core\u002Fskills\u002Fstart-server-core","---\nname: start-server-core\ndescription: >-\n  Server-side runtime for TanStack Start: createStartHandler,\n  request\u002Fresponse utilities (getRequest, setResponseHeader,\n  setCookie, getCookie, useSession), three-phase request handling,\n  AsyncLocalStorage context.\nmetadata:\n  type: core\n  library: tanstack-start\n  library_version: '1.169.17'\nsources:\n  - TanStack\u002Frouter:packages\u002Fstart-server-core\u002Fsrc\n  - TanStack\u002Frouter:docs\u002Fstart\u002Fframework\u002Freact\u002Fguide\u002Fserver-entry-point.md\n---\n\n# Start Server Core (`@tanstack\u002Fstart-server-core`)\n\nServer-side runtime for TanStack Start. Provides the request handler, request\u002Fresponse utilities, cookie management, and session management. All utilities are available anywhere in the call stack during a request via AsyncLocalStorage.\n\n> **CRITICAL**: These utilities are SERVER-ONLY. Import them from `@tanstack\u002F\u003Cframework>-start\u002Fserver`, not from the main entry point. They throw if called outside a server request context.\n>\n> **CRITICAL**: Types are FULLY INFERRED. Never cast, never annotate inferred values.\n>\n> **CRITICAL**: Read cookies, headers, request URLs, and runtime environment values inside the active request. Do not capture them at module scope; edge runtimes may inject them per request, and concurrent requests must never share request-derived state.\n\n## `createStartHandler`\n\nCreates the main request handler that processes all incoming requests through three phases: server functions, server routes, then app SSR.\n\n```ts\n\u002F\u002F src\u002Fserver.ts\n\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { createStartHandler } from '@tanstack\u002Freact-start\u002Fserver'\nimport { defaultStreamHandler } from '@tanstack\u002Freact-start\u002Fserver'\n\nexport default createStartHandler({\n  handler: defaultStreamHandler,\n})\n```\n\nWith asset URL transforms (CDN):\n\n```ts\nexport default createStartHandler({\n  handler: defaultStreamHandler,\n  transformAssets: 'https:\u002F\u002Fcdn.example.com',\n})\n```\n\n## Request Utilities\n\nAll imported from `@tanstack\u002F\u003Cframework>-start\u002Fserver`. Available anywhere during request handling — no parameter passing needed.\n\n### Reading Request Data\n\n```ts\n\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { createServerFn } from '@tanstack\u002Freact-start'\nimport {\n  getRequest,\n  getRequestHeaders,\n  getRequestHeader,\n  getRequestIP,\n  getRequestHost,\n  getRequestUrl,\n  getRequestProtocol,\n} from '@tanstack\u002Freact-start\u002Fserver'\n\nconst serverFn = createServerFn({ method: 'GET' }).handler(async () => {\n  const request = getRequest()\n  const headers = getRequestHeaders()\n  const auth = getRequestHeader('authorization')\n  const ip = getRequestIP({ xForwardedFor: true })\n  const host = getRequestHost()\n  const url = getRequestUrl()\n  const protocol = getRequestProtocol()\n\n  return { ip, host }\n})\n```\n\n### Setting Response Data\n\n```ts\n\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { createServerFn } from '@tanstack\u002Freact-start'\nimport {\n  setResponseHeader,\n  setResponseHeaders,\n  setResponseStatus,\n  getResponseHeaders,\n  getResponseHeader,\n  getResponseStatus,\n  removeResponseHeader,\n  clearResponseHeaders,\n} from '@tanstack\u002Freact-start\u002Fserver'\n\nconst serverFn = createServerFn({ method: 'POST' }).handler(async () => {\n  setResponseStatus(201)\n  setResponseHeader('x-custom', 'value')\n  setResponseHeaders({ 'cache-control': 'no-store' })\n\n  return { created: true }\n})\n```\n\n## Cookie Management\n\n```ts\n\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { createServerFn } from '@tanstack\u002Freact-start'\nimport {\n  getCookies,\n  getCookie,\n  setCookie,\n  deleteCookie,\n} from '@tanstack\u002Freact-start\u002Fserver'\n\nconst serverFn = createServerFn({ method: 'POST' }).handler(async () => {\n  const allCookies = getCookies()\n  const token = getCookie('session-token')\n\n  setCookie('preference', 'dark', {\n    httpOnly: true,\n    secure: process.env.NODE_ENV === 'production',\n    sameSite: 'lax',\n    maxAge: 60 * 60 * 24 * 30, \u002F\u002F 30 days\n    path: '\u002F',\n  })\n\n  deleteCookie('old-cookie')\n})\n```\n\n## Session Management\n\nEncrypted sessions stored in cookies. Requires a password for encryption.\n\n```ts\n\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { createServerFn } from '@tanstack\u002Freact-start'\nimport {\n  useSession,\n  getSession,\n  updateSession,\n  clearSession,\n} from '@tanstack\u002Freact-start\u002Fserver'\n\ntype SessionData = {\n  userId?: string\n}\n\nfunction getSessionConfig() {\n  const password = process.env.SESSION_SECRET\n  if (!password || password.length \u003C 32) {\n    throw new Error('SESSION_SECRET must be at least 32 characters')\n  }\n\n  return {\n    password,\n    name: 'my-app-session',\n    maxAge: 60 * 60 * 24 * 7,\n    cookie: {\n      httpOnly: true,\n      secure: process.env.NODE_ENV === 'production',\n      sameSite: 'lax' as const,\n      path: '\u002F',\n    },\n  }\n}\n\nfunction getDummyPasswordHash() {\n  \u002F\u002F Precompute this with the same algorithm and cost as real password hashes.\n  const hash = process.env.DUMMY_PASSWORD_HASH\n  if (!hash) {\n    throw new Error('DUMMY_PASSWORD_HASH is required')\n  }\n  return hash\n}\n\n\u002F\u002F Full session manager\nconst getUser = createServerFn({ method: 'GET' }).handler(async () => {\n  const session = await useSession\u003CSessionData>(getSessionConfig())\n  if (!session.data.userId) {\n    return null\n  }\n  return db.users.findById(session.data.userId)\n})\n\n\u002F\u002F Update session\nconst login = createServerFn({ method: 'POST' })\n  .validator((data: unknown) => {\n    if (\n      typeof data !== 'object' ||\n      data === null ||\n      !('email' in data) ||\n      typeof data.email !== 'string' ||\n      data.email.trim().length === 0 ||\n      !('password' in data) ||\n      typeof data.password !== 'string' ||\n      data.password.length === 0\n    ) {\n      throw new Error('Invalid credentials')\n    }\n    return {\n      email: data.email.trim().toLowerCase(),\n      password: data.password,\n    }\n  })\n  .handler(async ({ data }) => {\n    const user = await db.users.findByEmail(data.email)\n    const passwordHash = user?.passwordHash ?? getDummyPasswordHash()\n    const passwordMatches = await verifyPassword(data.password, passwordHash)\n    if (!user || !passwordMatches) {\n      throw new Error('Invalid credentials')\n    }\n\n    await updateSession\u003CSessionData>(getSessionConfig(), {\n      userId: user.id,\n    })\n    return { success: true }\n  })\n\n\u002F\u002F Clear session\nconst logout = createServerFn({ method: 'POST' }).handler(async () => {\n  await clearSession(getSessionConfig())\n  return { success: true }\n})\n```\n\n### Session Config\n\n| Option     | Type                     | Default     | Description       |\n| ---------- | ------------------------ | ----------- | ----------------- |\n| `password` | `string`                 | required    | Encryption key    |\n| `name`     | `string`                 | `'start'`   | Cookie name       |\n| `maxAge`   | `number`                 | `undefined` | Expiry in seconds |\n| `cookie`   | `false \\| CookieOptions` | `undefined` | Cookie settings   |\n\n### Session Manager Methods\n\n```ts\nconst session = await useSession\u003C{ userId: string }>(config)\n\nsession.id \u002F\u002F Session ID (string | undefined)\nsession.data \u002F\u002F Session data (typed)\nawait session.update({ userId: '123' }) \u002F\u002F Persist session data\nawait session.clear() \u002F\u002F Clear session data\n```\n\n### Production Session Rules\n\n- Keep cookie session data small and non-sensitive. Store a stable session or user ID, then load current permissions and account state from the authoritative store on each protected request.\n- Use a server-side session record when you need revocation, device tracking, large data, or immediate role changes. Put only its opaque ID in the cookie.\n- Rotate the session after login, privilege changes, password changes, and logout.\n- Use `HttpOnly`, `SameSite`, `Path=\u002F`, and `Secure` in production. Use a `__Host-` cookie name in production only when `Secure`, no `Domain`, and `Path=\u002F` are all enforced.\n- Use the same cookie name and path when clearing a session. Test login, authenticated refresh, expiry, logout, and a replay of the old cookie.\n\n## Query Validation\n\nValidate query string parameters using a Standard Schema:\n\n```ts\n\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { getValidatedQuery } from '@tanstack\u002Freact-start\u002Fserver'\nimport { z } from 'zod'\n\nconst serverFn = createServerFn({ method: 'GET' }).handler(async () => {\n  const query = await getValidatedQuery(\n    z.object({\n      page: z.coerce.number().default(1),\n      limit: z.coerce.number().default(20),\n    }),\n  )\n\n  return { page: query.page }\n})\n```\n\n> Note: `getValidatedQuery` accepts a Standard Schema validator, not a callback function.\n\n## How Request Handling Works\n\n`createStartHandler` processes requests in three phases:\n\n1. **Server Function Dispatch** — If URL matches the server function prefix (`\u002F_serverFn`), deserializes the payload, runs global request middleware, executes the server function, and returns the serialized result.\n\n2. **Server Route Handler** — For non-server-function requests, matches the URL against routes with `server.handlers`. Runs route middleware, then the matched HTTP method handler. Handlers can return a `Response` or call `next()` to fall through to SSR.\n\n3. **App Router SSR** — Loads all route loaders, dehydrates state for client hydration, and calls the handler callback (e.g., `defaultStreamHandler`) to render HTML.\n\n## Common Mistakes\n\n### 1. CRITICAL: Importing server utilities in client code\n\nServer utilities use AsyncLocalStorage and only work during server request handling. Importing them in client code causes build errors or runtime crashes.\n\n```ts\n\u002F\u002F WRONG — importing in a component file that runs on client\nimport { getCookie } from '@tanstack\u002Freact-start\u002Fserver'\n\nfunction MyComponent() {\n  const token = getCookie('auth') \u002F\u002F crashes on client\n}\n\n\u002F\u002F CORRECT — use inside server functions only\n\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { createServerFn } from '@tanstack\u002Freact-start'\nimport { getCookie } from '@tanstack\u002Freact-start\u002Fserver'\n\nconst getAuth = createServerFn({ method: 'GET' }).handler(async () => {\n  return getCookie('auth')\n})\n```\n\n### 2. HIGH: Forgetting session password for most session operations\n\n`useSession`, `getSession`, `updateSession`, and `sealSession` all require a `password` field for encryption. Missing it throws at runtime. `clearSession` accepts `Partial\u003CSessionConfig>`, so password is optional for clearing.\n\n### 3. MEDIUM: Using session without HTTPS in production\n\nSession cookies should use `secure: true` in production. The default cookie options may not enforce this.\n\n### 4. CRITICAL: Capturing request or environment state at module scope\n\nDo not create session config from `process.env` at module load or cache `getRequest()`, headers, cookies, or session data in a module variable. Create config and read request state inside the handler or middleware callback. This is required for per-request edge environments and prevents cross-request data leaks.\n\n## Cross-References\n\n- [start-core\u002Fserver-functions](..\u002F..\u002F..\u002Fstart-client-core\u002Fskills\u002Fstart-core\u002Fserver-functions\u002FSKILL.md) — creating server functions that use these utilities\n- [start-core\u002Fmiddleware](..\u002F..\u002F..\u002Fstart-client-core\u002Fskills\u002Fstart-core\u002Fmiddleware\u002FSKILL.md) — request middleware\n- [start-core\u002Fserver-routes](..\u002F..\u002F..\u002Fstart-client-core\u002Fskills\u002Fstart-core\u002Fserver-routes\u002FSKILL.md) — server route handlers\n",{"data":51,"body":59},{"name":4,"description":6,"metadata":52,"sources":56},{"type":53,"library":54,"library_version":55},"core","tanstack-start","1.169.17",[57,58],"TanStack\u002Frouter:packages\u002Fstart-server-core\u002Fsrc","TanStack\u002Frouter:docs\u002Fstart\u002Fframework\u002Freact\u002Fguide\u002Fserver-entry-point.md",{"type":60,"children":61},"root",[62,80,86,127,138,143,337,342,432,438,450,457,1014,1020,1455,1461,2051,2057,2062,4391,4397,4567,4573,4775,4781,4871,4877,4882,5314,5330,5336,5346,5420,5426,5432,5437,5791,5797,5852,5858,5871,5877,5898,5904,5941],{"type":63,"tag":64,"props":65,"children":67},"element","h1",{"id":66},"start-server-core-tanstackstart-server-core",[68,71,78],{"type":69,"value":70},"text","Start Server Core (",{"type":63,"tag":72,"props":73,"children":75},"code",{"className":74},[],[76],{"type":69,"value":77},"@tanstack\u002Fstart-server-core",{"type":69,"value":79},")",{"type":63,"tag":81,"props":82,"children":83},"p",{},[84],{"type":69,"value":85},"Server-side runtime for TanStack Start. Provides the request handler, request\u002Fresponse utilities, cookie management, and session management. All utilities are available anywhere in the call stack during a request via AsyncLocalStorage.",{"type":63,"tag":87,"props":88,"children":89},"blockquote",{},[90,109,118],{"type":63,"tag":81,"props":91,"children":92},{},[93,99,101,107],{"type":63,"tag":94,"props":95,"children":96},"strong",{},[97],{"type":69,"value":98},"CRITICAL",{"type":69,"value":100},": These utilities are SERVER-ONLY. Import them from ",{"type":63,"tag":72,"props":102,"children":104},{"className":103},[],[105],{"type":69,"value":106},"@tanstack\u002F\u003Cframework>-start\u002Fserver",{"type":69,"value":108},", not from the main entry point. They throw if called outside a server request context.",{"type":63,"tag":81,"props":110,"children":111},{},[112,116],{"type":63,"tag":94,"props":113,"children":114},{},[115],{"type":69,"value":98},{"type":69,"value":117},": Types are FULLY INFERRED. Never cast, never annotate inferred values.",{"type":63,"tag":81,"props":119,"children":120},{},[121,125],{"type":63,"tag":94,"props":122,"children":123},{},[124],{"type":69,"value":98},{"type":69,"value":126},": Read cookies, headers, request URLs, and runtime environment values inside the active request. Do not capture them at module scope; edge runtimes may inject them per request, and concurrent requests must never share request-derived state.",{"type":63,"tag":128,"props":129,"children":131},"h2",{"id":130},"createstarthandler",[132],{"type":63,"tag":72,"props":133,"children":135},{"className":134},[],[136],{"type":69,"value":137},"createStartHandler",{"type":63,"tag":81,"props":139,"children":140},{},[141],{"type":69,"value":142},"Creates the main request handler that processes all incoming requests through three phases: server functions, server routes, then app SSR.",{"type":63,"tag":144,"props":145,"children":150},"pre",{"className":146,"code":147,"language":148,"meta":149,"style":149},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F src\u002Fserver.ts\n\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { createStartHandler } from '@tanstack\u002Freact-start\u002Fserver'\nimport { defaultStreamHandler } from '@tanstack\u002Freact-start\u002Fserver'\n\nexport default createStartHandler({\n  handler: defaultStreamHandler,\n})\n","ts","",[151],{"type":63,"tag":72,"props":152,"children":153},{"__ignoreMap":149},[154,166,175,223,260,270,299,323],{"type":63,"tag":155,"props":156,"children":159},"span",{"class":157,"line":158},"line",1,[160],{"type":63,"tag":155,"props":161,"children":163},{"style":162},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[164],{"type":69,"value":165},"\u002F\u002F src\u002Fserver.ts\n",{"type":63,"tag":155,"props":167,"children":169},{"class":157,"line":168},2,[170],{"type":63,"tag":155,"props":171,"children":172},{"style":162},[173],{"type":69,"value":174},"\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\n",{"type":63,"tag":155,"props":176,"children":178},{"class":157,"line":177},3,[179,185,191,197,202,207,212,218],{"type":63,"tag":155,"props":180,"children":182},{"style":181},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[183],{"type":69,"value":184},"import",{"type":63,"tag":155,"props":186,"children":188},{"style":187},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[189],{"type":69,"value":190}," {",{"type":63,"tag":155,"props":192,"children":194},{"style":193},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[195],{"type":69,"value":196}," createStartHandler",{"type":63,"tag":155,"props":198,"children":199},{"style":187},[200],{"type":69,"value":201}," }",{"type":63,"tag":155,"props":203,"children":204},{"style":181},[205],{"type":69,"value":206}," from",{"type":63,"tag":155,"props":208,"children":209},{"style":187},[210],{"type":69,"value":211}," '",{"type":63,"tag":155,"props":213,"children":215},{"style":214},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[216],{"type":69,"value":217},"@tanstack\u002Freact-start\u002Fserver",{"type":63,"tag":155,"props":219,"children":220},{"style":187},[221],{"type":69,"value":222},"'\n",{"type":63,"tag":155,"props":224,"children":226},{"class":157,"line":225},4,[227,231,235,240,244,248,252,256],{"type":63,"tag":155,"props":228,"children":229},{"style":181},[230],{"type":69,"value":184},{"type":63,"tag":155,"props":232,"children":233},{"style":187},[234],{"type":69,"value":190},{"type":63,"tag":155,"props":236,"children":237},{"style":193},[238],{"type":69,"value":239}," defaultStreamHandler",{"type":63,"tag":155,"props":241,"children":242},{"style":187},[243],{"type":69,"value":201},{"type":63,"tag":155,"props":245,"children":246},{"style":181},[247],{"type":69,"value":206},{"type":63,"tag":155,"props":249,"children":250},{"style":187},[251],{"type":69,"value":211},{"type":63,"tag":155,"props":253,"children":254},{"style":214},[255],{"type":69,"value":217},{"type":63,"tag":155,"props":257,"children":258},{"style":187},[259],{"type":69,"value":222},{"type":63,"tag":155,"props":261,"children":263},{"class":157,"line":262},5,[264],{"type":63,"tag":155,"props":265,"children":267},{"emptyLinePlaceholder":266},true,[268],{"type":69,"value":269},"\n",{"type":63,"tag":155,"props":271,"children":273},{"class":157,"line":272},6,[274,279,284,289,294],{"type":63,"tag":155,"props":275,"children":276},{"style":181},[277],{"type":69,"value":278},"export",{"type":63,"tag":155,"props":280,"children":281},{"style":181},[282],{"type":69,"value":283}," default",{"type":63,"tag":155,"props":285,"children":287},{"style":286},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[288],{"type":69,"value":196},{"type":63,"tag":155,"props":290,"children":291},{"style":193},[292],{"type":69,"value":293},"(",{"type":63,"tag":155,"props":295,"children":296},{"style":187},[297],{"type":69,"value":298},"{\n",{"type":63,"tag":155,"props":300,"children":302},{"class":157,"line":301},7,[303,309,314,318],{"type":63,"tag":155,"props":304,"children":306},{"style":305},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[307],{"type":69,"value":308},"  handler",{"type":63,"tag":155,"props":310,"children":311},{"style":187},[312],{"type":69,"value":313},":",{"type":63,"tag":155,"props":315,"children":316},{"style":193},[317],{"type":69,"value":239},{"type":63,"tag":155,"props":319,"children":320},{"style":187},[321],{"type":69,"value":322},",\n",{"type":63,"tag":155,"props":324,"children":326},{"class":157,"line":325},8,[327,332],{"type":63,"tag":155,"props":328,"children":329},{"style":187},[330],{"type":69,"value":331},"}",{"type":63,"tag":155,"props":333,"children":334},{"style":193},[335],{"type":69,"value":336},")\n",{"type":63,"tag":81,"props":338,"children":339},{},[340],{"type":69,"value":341},"With asset URL transforms (CDN):",{"type":63,"tag":144,"props":343,"children":345},{"className":146,"code":344,"language":148,"meta":149,"style":149},"export default createStartHandler({\n  handler: defaultStreamHandler,\n  transformAssets: 'https:\u002F\u002Fcdn.example.com',\n})\n",[346],{"type":63,"tag":72,"props":347,"children":348},{"__ignoreMap":149},[349,372,391,421],{"type":63,"tag":155,"props":350,"children":351},{"class":157,"line":158},[352,356,360,364,368],{"type":63,"tag":155,"props":353,"children":354},{"style":181},[355],{"type":69,"value":278},{"type":63,"tag":155,"props":357,"children":358},{"style":181},[359],{"type":69,"value":283},{"type":63,"tag":155,"props":361,"children":362},{"style":286},[363],{"type":69,"value":196},{"type":63,"tag":155,"props":365,"children":366},{"style":193},[367],{"type":69,"value":293},{"type":63,"tag":155,"props":369,"children":370},{"style":187},[371],{"type":69,"value":298},{"type":63,"tag":155,"props":373,"children":374},{"class":157,"line":168},[375,379,383,387],{"type":63,"tag":155,"props":376,"children":377},{"style":305},[378],{"type":69,"value":308},{"type":63,"tag":155,"props":380,"children":381},{"style":187},[382],{"type":69,"value":313},{"type":63,"tag":155,"props":384,"children":385},{"style":193},[386],{"type":69,"value":239},{"type":63,"tag":155,"props":388,"children":389},{"style":187},[390],{"type":69,"value":322},{"type":63,"tag":155,"props":392,"children":393},{"class":157,"line":177},[394,399,403,407,412,417],{"type":63,"tag":155,"props":395,"children":396},{"style":305},[397],{"type":69,"value":398},"  transformAssets",{"type":63,"tag":155,"props":400,"children":401},{"style":187},[402],{"type":69,"value":313},{"type":63,"tag":155,"props":404,"children":405},{"style":187},[406],{"type":69,"value":211},{"type":63,"tag":155,"props":408,"children":409},{"style":214},[410],{"type":69,"value":411},"https:\u002F\u002Fcdn.example.com",{"type":63,"tag":155,"props":413,"children":414},{"style":187},[415],{"type":69,"value":416},"'",{"type":63,"tag":155,"props":418,"children":419},{"style":187},[420],{"type":69,"value":322},{"type":63,"tag":155,"props":422,"children":423},{"class":157,"line":225},[424,428],{"type":63,"tag":155,"props":425,"children":426},{"style":187},[427],{"type":69,"value":331},{"type":63,"tag":155,"props":429,"children":430},{"style":193},[431],{"type":69,"value":336},{"type":63,"tag":128,"props":433,"children":435},{"id":434},"request-utilities",[436],{"type":69,"value":437},"Request Utilities",{"type":63,"tag":81,"props":439,"children":440},{},[441,443,448],{"type":69,"value":442},"All imported from ",{"type":63,"tag":72,"props":444,"children":446},{"className":445},[],[447],{"type":69,"value":106},{"type":69,"value":449},". Available anywhere during request handling — no parameter passing needed.",{"type":63,"tag":451,"props":452,"children":454},"h3",{"id":453},"reading-request-data",[455],{"type":69,"value":456},"Reading Request Data",{"type":63,"tag":144,"props":458,"children":460},{"className":146,"code":459,"language":148,"meta":149,"style":149},"\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { createServerFn } from '@tanstack\u002Freact-start'\nimport {\n  getRequest,\n  getRequestHeaders,\n  getRequestHeader,\n  getRequestIP,\n  getRequestHost,\n  getRequestUrl,\n  getRequestProtocol,\n} from '@tanstack\u002Freact-start\u002Fserver'\n\nconst serverFn = createServerFn({ method: 'GET' }).handler(async () => {\n  const request = getRequest()\n  const headers = getRequestHeaders()\n  const auth = getRequestHeader('authorization')\n  const ip = getRequestIP({ xForwardedFor: true })\n  const host = getRequestHost()\n  const url = getRequestUrl()\n  const protocol = getRequestProtocol()\n\n  return { ip, host }\n})\n",[461],{"type":63,"tag":72,"props":462,"children":463},{"__ignoreMap":149},[464,471,508,520,532,544,556,568,580,593,606,630,638,734,763,789,832,885,911,937,963,971,1002],{"type":63,"tag":155,"props":465,"children":466},{"class":157,"line":158},[467],{"type":63,"tag":155,"props":468,"children":469},{"style":162},[470],{"type":69,"value":174},{"type":63,"tag":155,"props":472,"children":473},{"class":157,"line":168},[474,478,482,487,491,495,499,504],{"type":63,"tag":155,"props":475,"children":476},{"style":181},[477],{"type":69,"value":184},{"type":63,"tag":155,"props":479,"children":480},{"style":187},[481],{"type":69,"value":190},{"type":63,"tag":155,"props":483,"children":484},{"style":193},[485],{"type":69,"value":486}," createServerFn",{"type":63,"tag":155,"props":488,"children":489},{"style":187},[490],{"type":69,"value":201},{"type":63,"tag":155,"props":492,"children":493},{"style":181},[494],{"type":69,"value":206},{"type":63,"tag":155,"props":496,"children":497},{"style":187},[498],{"type":69,"value":211},{"type":63,"tag":155,"props":500,"children":501},{"style":214},[502],{"type":69,"value":503},"@tanstack\u002Freact-start",{"type":63,"tag":155,"props":505,"children":506},{"style":187},[507],{"type":69,"value":222},{"type":63,"tag":155,"props":509,"children":510},{"class":157,"line":177},[511,515],{"type":63,"tag":155,"props":512,"children":513},{"style":181},[514],{"type":69,"value":184},{"type":63,"tag":155,"props":516,"children":517},{"style":187},[518],{"type":69,"value":519}," {\n",{"type":63,"tag":155,"props":521,"children":522},{"class":157,"line":225},[523,528],{"type":63,"tag":155,"props":524,"children":525},{"style":193},[526],{"type":69,"value":527},"  getRequest",{"type":63,"tag":155,"props":529,"children":530},{"style":187},[531],{"type":69,"value":322},{"type":63,"tag":155,"props":533,"children":534},{"class":157,"line":262},[535,540],{"type":63,"tag":155,"props":536,"children":537},{"style":193},[538],{"type":69,"value":539},"  getRequestHeaders",{"type":63,"tag":155,"props":541,"children":542},{"style":187},[543],{"type":69,"value":322},{"type":63,"tag":155,"props":545,"children":546},{"class":157,"line":272},[547,552],{"type":63,"tag":155,"props":548,"children":549},{"style":193},[550],{"type":69,"value":551},"  getRequestHeader",{"type":63,"tag":155,"props":553,"children":554},{"style":187},[555],{"type":69,"value":322},{"type":63,"tag":155,"props":557,"children":558},{"class":157,"line":301},[559,564],{"type":63,"tag":155,"props":560,"children":561},{"style":193},[562],{"type":69,"value":563},"  getRequestIP",{"type":63,"tag":155,"props":565,"children":566},{"style":187},[567],{"type":69,"value":322},{"type":63,"tag":155,"props":569,"children":570},{"class":157,"line":325},[571,576],{"type":63,"tag":155,"props":572,"children":573},{"style":193},[574],{"type":69,"value":575},"  getRequestHost",{"type":63,"tag":155,"props":577,"children":578},{"style":187},[579],{"type":69,"value":322},{"type":63,"tag":155,"props":581,"children":583},{"class":157,"line":582},9,[584,589],{"type":63,"tag":155,"props":585,"children":586},{"style":193},[587],{"type":69,"value":588},"  getRequestUrl",{"type":63,"tag":155,"props":590,"children":591},{"style":187},[592],{"type":69,"value":322},{"type":63,"tag":155,"props":594,"children":596},{"class":157,"line":595},10,[597,602],{"type":63,"tag":155,"props":598,"children":599},{"style":193},[600],{"type":69,"value":601},"  getRequestProtocol",{"type":63,"tag":155,"props":603,"children":604},{"style":187},[605],{"type":69,"value":322},{"type":63,"tag":155,"props":607,"children":609},{"class":157,"line":608},11,[610,614,618,622,626],{"type":63,"tag":155,"props":611,"children":612},{"style":187},[613],{"type":69,"value":331},{"type":63,"tag":155,"props":615,"children":616},{"style":181},[617],{"type":69,"value":206},{"type":63,"tag":155,"props":619,"children":620},{"style":187},[621],{"type":69,"value":211},{"type":63,"tag":155,"props":623,"children":624},{"style":214},[625],{"type":69,"value":217},{"type":63,"tag":155,"props":627,"children":628},{"style":187},[629],{"type":69,"value":222},{"type":63,"tag":155,"props":631,"children":633},{"class":157,"line":632},12,[634],{"type":63,"tag":155,"props":635,"children":636},{"emptyLinePlaceholder":266},[637],{"type":69,"value":269},{"type":63,"tag":155,"props":639,"children":641},{"class":157,"line":640},13,[642,648,653,658,662,666,671,676,680,684,689,693,697,701,706,711,715,720,725,730],{"type":63,"tag":155,"props":643,"children":645},{"style":644},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[646],{"type":69,"value":647},"const",{"type":63,"tag":155,"props":649,"children":650},{"style":193},[651],{"type":69,"value":652}," serverFn ",{"type":63,"tag":155,"props":654,"children":655},{"style":187},[656],{"type":69,"value":657},"=",{"type":63,"tag":155,"props":659,"children":660},{"style":286},[661],{"type":69,"value":486},{"type":63,"tag":155,"props":663,"children":664},{"style":193},[665],{"type":69,"value":293},{"type":63,"tag":155,"props":667,"children":668},{"style":187},[669],{"type":69,"value":670},"{",{"type":63,"tag":155,"props":672,"children":673},{"style":305},[674],{"type":69,"value":675}," method",{"type":63,"tag":155,"props":677,"children":678},{"style":187},[679],{"type":69,"value":313},{"type":63,"tag":155,"props":681,"children":682},{"style":187},[683],{"type":69,"value":211},{"type":63,"tag":155,"props":685,"children":686},{"style":214},[687],{"type":69,"value":688},"GET",{"type":63,"tag":155,"props":690,"children":691},{"style":187},[692],{"type":69,"value":416},{"type":63,"tag":155,"props":694,"children":695},{"style":187},[696],{"type":69,"value":201},{"type":63,"tag":155,"props":698,"children":699},{"style":193},[700],{"type":69,"value":79},{"type":63,"tag":155,"props":702,"children":703},{"style":187},[704],{"type":69,"value":705},".",{"type":63,"tag":155,"props":707,"children":708},{"style":286},[709],{"type":69,"value":710},"handler",{"type":63,"tag":155,"props":712,"children":713},{"style":193},[714],{"type":69,"value":293},{"type":63,"tag":155,"props":716,"children":717},{"style":644},[718],{"type":69,"value":719},"async",{"type":63,"tag":155,"props":721,"children":722},{"style":187},[723],{"type":69,"value":724}," ()",{"type":63,"tag":155,"props":726,"children":727},{"style":644},[728],{"type":69,"value":729}," =>",{"type":63,"tag":155,"props":731,"children":732},{"style":187},[733],{"type":69,"value":519},{"type":63,"tag":155,"props":735,"children":737},{"class":157,"line":736},14,[738,743,748,753,758],{"type":63,"tag":155,"props":739,"children":740},{"style":644},[741],{"type":69,"value":742},"  const",{"type":63,"tag":155,"props":744,"children":745},{"style":193},[746],{"type":69,"value":747}," request",{"type":63,"tag":155,"props":749,"children":750},{"style":187},[751],{"type":69,"value":752}," =",{"type":63,"tag":155,"props":754,"children":755},{"style":286},[756],{"type":69,"value":757}," getRequest",{"type":63,"tag":155,"props":759,"children":760},{"style":305},[761],{"type":69,"value":762},"()\n",{"type":63,"tag":155,"props":764,"children":766},{"class":157,"line":765},15,[767,771,776,780,785],{"type":63,"tag":155,"props":768,"children":769},{"style":644},[770],{"type":69,"value":742},{"type":63,"tag":155,"props":772,"children":773},{"style":193},[774],{"type":69,"value":775}," headers",{"type":63,"tag":155,"props":777,"children":778},{"style":187},[779],{"type":69,"value":752},{"type":63,"tag":155,"props":781,"children":782},{"style":286},[783],{"type":69,"value":784}," getRequestHeaders",{"type":63,"tag":155,"props":786,"children":787},{"style":305},[788],{"type":69,"value":762},{"type":63,"tag":155,"props":790,"children":792},{"class":157,"line":791},16,[793,797,802,806,811,815,819,824,828],{"type":63,"tag":155,"props":794,"children":795},{"style":644},[796],{"type":69,"value":742},{"type":63,"tag":155,"props":798,"children":799},{"style":193},[800],{"type":69,"value":801}," auth",{"type":63,"tag":155,"props":803,"children":804},{"style":187},[805],{"type":69,"value":752},{"type":63,"tag":155,"props":807,"children":808},{"style":286},[809],{"type":69,"value":810}," getRequestHeader",{"type":63,"tag":155,"props":812,"children":813},{"style":305},[814],{"type":69,"value":293},{"type":63,"tag":155,"props":816,"children":817},{"style":187},[818],{"type":69,"value":416},{"type":63,"tag":155,"props":820,"children":821},{"style":214},[822],{"type":69,"value":823},"authorization",{"type":63,"tag":155,"props":825,"children":826},{"style":187},[827],{"type":69,"value":416},{"type":63,"tag":155,"props":829,"children":830},{"style":305},[831],{"type":69,"value":336},{"type":63,"tag":155,"props":833,"children":835},{"class":157,"line":834},17,[836,840,845,849,854,858,862,867,871,877,881],{"type":63,"tag":155,"props":837,"children":838},{"style":644},[839],{"type":69,"value":742},{"type":63,"tag":155,"props":841,"children":842},{"style":193},[843],{"type":69,"value":844}," ip",{"type":63,"tag":155,"props":846,"children":847},{"style":187},[848],{"type":69,"value":752},{"type":63,"tag":155,"props":850,"children":851},{"style":286},[852],{"type":69,"value":853}," getRequestIP",{"type":63,"tag":155,"props":855,"children":856},{"style":305},[857],{"type":69,"value":293},{"type":63,"tag":155,"props":859,"children":860},{"style":187},[861],{"type":69,"value":670},{"type":63,"tag":155,"props":863,"children":864},{"style":305},[865],{"type":69,"value":866}," xForwardedFor",{"type":63,"tag":155,"props":868,"children":869},{"style":187},[870],{"type":69,"value":313},{"type":63,"tag":155,"props":872,"children":874},{"style":873},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[875],{"type":69,"value":876}," true",{"type":63,"tag":155,"props":878,"children":879},{"style":187},[880],{"type":69,"value":201},{"type":63,"tag":155,"props":882,"children":883},{"style":305},[884],{"type":69,"value":336},{"type":63,"tag":155,"props":886,"children":888},{"class":157,"line":887},18,[889,893,898,902,907],{"type":63,"tag":155,"props":890,"children":891},{"style":644},[892],{"type":69,"value":742},{"type":63,"tag":155,"props":894,"children":895},{"style":193},[896],{"type":69,"value":897}," host",{"type":63,"tag":155,"props":899,"children":900},{"style":187},[901],{"type":69,"value":752},{"type":63,"tag":155,"props":903,"children":904},{"style":286},[905],{"type":69,"value":906}," getRequestHost",{"type":63,"tag":155,"props":908,"children":909},{"style":305},[910],{"type":69,"value":762},{"type":63,"tag":155,"props":912,"children":914},{"class":157,"line":913},19,[915,919,924,928,933],{"type":63,"tag":155,"props":916,"children":917},{"style":644},[918],{"type":69,"value":742},{"type":63,"tag":155,"props":920,"children":921},{"style":193},[922],{"type":69,"value":923}," url",{"type":63,"tag":155,"props":925,"children":926},{"style":187},[927],{"type":69,"value":752},{"type":63,"tag":155,"props":929,"children":930},{"style":286},[931],{"type":69,"value":932}," getRequestUrl",{"type":63,"tag":155,"props":934,"children":935},{"style":305},[936],{"type":69,"value":762},{"type":63,"tag":155,"props":938,"children":940},{"class":157,"line":939},20,[941,945,950,954,959],{"type":63,"tag":155,"props":942,"children":943},{"style":644},[944],{"type":69,"value":742},{"type":63,"tag":155,"props":946,"children":947},{"style":193},[948],{"type":69,"value":949}," protocol",{"type":63,"tag":155,"props":951,"children":952},{"style":187},[953],{"type":69,"value":752},{"type":63,"tag":155,"props":955,"children":956},{"style":286},[957],{"type":69,"value":958}," getRequestProtocol",{"type":63,"tag":155,"props":960,"children":961},{"style":305},[962],{"type":69,"value":762},{"type":63,"tag":155,"props":964,"children":966},{"class":157,"line":965},21,[967],{"type":63,"tag":155,"props":968,"children":969},{"emptyLinePlaceholder":266},[970],{"type":69,"value":269},{"type":63,"tag":155,"props":972,"children":974},{"class":157,"line":973},22,[975,980,984,988,993,997],{"type":63,"tag":155,"props":976,"children":977},{"style":181},[978],{"type":69,"value":979},"  return",{"type":63,"tag":155,"props":981,"children":982},{"style":187},[983],{"type":69,"value":190},{"type":63,"tag":155,"props":985,"children":986},{"style":193},[987],{"type":69,"value":844},{"type":63,"tag":155,"props":989,"children":990},{"style":187},[991],{"type":69,"value":992},",",{"type":63,"tag":155,"props":994,"children":995},{"style":193},[996],{"type":69,"value":897},{"type":63,"tag":155,"props":998,"children":999},{"style":187},[1000],{"type":69,"value":1001}," }\n",{"type":63,"tag":155,"props":1003,"children":1005},{"class":157,"line":1004},23,[1006,1010],{"type":63,"tag":155,"props":1007,"children":1008},{"style":187},[1009],{"type":69,"value":331},{"type":63,"tag":155,"props":1011,"children":1012},{"style":193},[1013],{"type":69,"value":336},{"type":63,"tag":451,"props":1015,"children":1017},{"id":1016},"setting-response-data",[1018],{"type":69,"value":1019},"Setting Response Data",{"type":63,"tag":144,"props":1021,"children":1023},{"className":146,"code":1022,"language":148,"meta":149,"style":149},"\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { createServerFn } from '@tanstack\u002Freact-start'\nimport {\n  setResponseHeader,\n  setResponseHeaders,\n  setResponseStatus,\n  getResponseHeaders,\n  getResponseHeader,\n  getResponseStatus,\n  removeResponseHeader,\n  clearResponseHeaders,\n} from '@tanstack\u002Freact-start\u002Fserver'\n\nconst serverFn = createServerFn({ method: 'POST' }).handler(async () => {\n  setResponseStatus(201)\n  setResponseHeader('x-custom', 'value')\n  setResponseHeaders({ 'cache-control': 'no-store' })\n\n  return { created: true }\n})\n",[1024],{"type":63,"tag":72,"props":1025,"children":1026},{"__ignoreMap":149},[1027,1034,1069,1080,1092,1104,1116,1128,1140,1152,1164,1176,1199,1206,1290,1311,1356,1409,1416,1444],{"type":63,"tag":155,"props":1028,"children":1029},{"class":157,"line":158},[1030],{"type":63,"tag":155,"props":1031,"children":1032},{"style":162},[1033],{"type":69,"value":174},{"type":63,"tag":155,"props":1035,"children":1036},{"class":157,"line":168},[1037,1041,1045,1049,1053,1057,1061,1065],{"type":63,"tag":155,"props":1038,"children":1039},{"style":181},[1040],{"type":69,"value":184},{"type":63,"tag":155,"props":1042,"children":1043},{"style":187},[1044],{"type":69,"value":190},{"type":63,"tag":155,"props":1046,"children":1047},{"style":193},[1048],{"type":69,"value":486},{"type":63,"tag":155,"props":1050,"children":1051},{"style":187},[1052],{"type":69,"value":201},{"type":63,"tag":155,"props":1054,"children":1055},{"style":181},[1056],{"type":69,"value":206},{"type":63,"tag":155,"props":1058,"children":1059},{"style":187},[1060],{"type":69,"value":211},{"type":63,"tag":155,"props":1062,"children":1063},{"style":214},[1064],{"type":69,"value":503},{"type":63,"tag":155,"props":1066,"children":1067},{"style":187},[1068],{"type":69,"value":222},{"type":63,"tag":155,"props":1070,"children":1071},{"class":157,"line":177},[1072,1076],{"type":63,"tag":155,"props":1073,"children":1074},{"style":181},[1075],{"type":69,"value":184},{"type":63,"tag":155,"props":1077,"children":1078},{"style":187},[1079],{"type":69,"value":519},{"type":63,"tag":155,"props":1081,"children":1082},{"class":157,"line":225},[1083,1088],{"type":63,"tag":155,"props":1084,"children":1085},{"style":193},[1086],{"type":69,"value":1087},"  setResponseHeader",{"type":63,"tag":155,"props":1089,"children":1090},{"style":187},[1091],{"type":69,"value":322},{"type":63,"tag":155,"props":1093,"children":1094},{"class":157,"line":262},[1095,1100],{"type":63,"tag":155,"props":1096,"children":1097},{"style":193},[1098],{"type":69,"value":1099},"  setResponseHeaders",{"type":63,"tag":155,"props":1101,"children":1102},{"style":187},[1103],{"type":69,"value":322},{"type":63,"tag":155,"props":1105,"children":1106},{"class":157,"line":272},[1107,1112],{"type":63,"tag":155,"props":1108,"children":1109},{"style":193},[1110],{"type":69,"value":1111},"  setResponseStatus",{"type":63,"tag":155,"props":1113,"children":1114},{"style":187},[1115],{"type":69,"value":322},{"type":63,"tag":155,"props":1117,"children":1118},{"class":157,"line":301},[1119,1124],{"type":63,"tag":155,"props":1120,"children":1121},{"style":193},[1122],{"type":69,"value":1123},"  getResponseHeaders",{"type":63,"tag":155,"props":1125,"children":1126},{"style":187},[1127],{"type":69,"value":322},{"type":63,"tag":155,"props":1129,"children":1130},{"class":157,"line":325},[1131,1136],{"type":63,"tag":155,"props":1132,"children":1133},{"style":193},[1134],{"type":69,"value":1135},"  getResponseHeader",{"type":63,"tag":155,"props":1137,"children":1138},{"style":187},[1139],{"type":69,"value":322},{"type":63,"tag":155,"props":1141,"children":1142},{"class":157,"line":582},[1143,1148],{"type":63,"tag":155,"props":1144,"children":1145},{"style":193},[1146],{"type":69,"value":1147},"  getResponseStatus",{"type":63,"tag":155,"props":1149,"children":1150},{"style":187},[1151],{"type":69,"value":322},{"type":63,"tag":155,"props":1153,"children":1154},{"class":157,"line":595},[1155,1160],{"type":63,"tag":155,"props":1156,"children":1157},{"style":193},[1158],{"type":69,"value":1159},"  removeResponseHeader",{"type":63,"tag":155,"props":1161,"children":1162},{"style":187},[1163],{"type":69,"value":322},{"type":63,"tag":155,"props":1165,"children":1166},{"class":157,"line":608},[1167,1172],{"type":63,"tag":155,"props":1168,"children":1169},{"style":193},[1170],{"type":69,"value":1171},"  clearResponseHeaders",{"type":63,"tag":155,"props":1173,"children":1174},{"style":187},[1175],{"type":69,"value":322},{"type":63,"tag":155,"props":1177,"children":1178},{"class":157,"line":632},[1179,1183,1187,1191,1195],{"type":63,"tag":155,"props":1180,"children":1181},{"style":187},[1182],{"type":69,"value":331},{"type":63,"tag":155,"props":1184,"children":1185},{"style":181},[1186],{"type":69,"value":206},{"type":63,"tag":155,"props":1188,"children":1189},{"style":187},[1190],{"type":69,"value":211},{"type":63,"tag":155,"props":1192,"children":1193},{"style":214},[1194],{"type":69,"value":217},{"type":63,"tag":155,"props":1196,"children":1197},{"style":187},[1198],{"type":69,"value":222},{"type":63,"tag":155,"props":1200,"children":1201},{"class":157,"line":640},[1202],{"type":63,"tag":155,"props":1203,"children":1204},{"emptyLinePlaceholder":266},[1205],{"type":69,"value":269},{"type":63,"tag":155,"props":1207,"children":1208},{"class":157,"line":736},[1209,1213,1217,1221,1225,1229,1233,1237,1241,1245,1250,1254,1258,1262,1266,1270,1274,1278,1282,1286],{"type":63,"tag":155,"props":1210,"children":1211},{"style":644},[1212],{"type":69,"value":647},{"type":63,"tag":155,"props":1214,"children":1215},{"style":193},[1216],{"type":69,"value":652},{"type":63,"tag":155,"props":1218,"children":1219},{"style":187},[1220],{"type":69,"value":657},{"type":63,"tag":155,"props":1222,"children":1223},{"style":286},[1224],{"type":69,"value":486},{"type":63,"tag":155,"props":1226,"children":1227},{"style":193},[1228],{"type":69,"value":293},{"type":63,"tag":155,"props":1230,"children":1231},{"style":187},[1232],{"type":69,"value":670},{"type":63,"tag":155,"props":1234,"children":1235},{"style":305},[1236],{"type":69,"value":675},{"type":63,"tag":155,"props":1238,"children":1239},{"style":187},[1240],{"type":69,"value":313},{"type":63,"tag":155,"props":1242,"children":1243},{"style":187},[1244],{"type":69,"value":211},{"type":63,"tag":155,"props":1246,"children":1247},{"style":214},[1248],{"type":69,"value":1249},"POST",{"type":63,"tag":155,"props":1251,"children":1252},{"style":187},[1253],{"type":69,"value":416},{"type":63,"tag":155,"props":1255,"children":1256},{"style":187},[1257],{"type":69,"value":201},{"type":63,"tag":155,"props":1259,"children":1260},{"style":193},[1261],{"type":69,"value":79},{"type":63,"tag":155,"props":1263,"children":1264},{"style":187},[1265],{"type":69,"value":705},{"type":63,"tag":155,"props":1267,"children":1268},{"style":286},[1269],{"type":69,"value":710},{"type":63,"tag":155,"props":1271,"children":1272},{"style":193},[1273],{"type":69,"value":293},{"type":63,"tag":155,"props":1275,"children":1276},{"style":644},[1277],{"type":69,"value":719},{"type":63,"tag":155,"props":1279,"children":1280},{"style":187},[1281],{"type":69,"value":724},{"type":63,"tag":155,"props":1283,"children":1284},{"style":644},[1285],{"type":69,"value":729},{"type":63,"tag":155,"props":1287,"children":1288},{"style":187},[1289],{"type":69,"value":519},{"type":63,"tag":155,"props":1291,"children":1292},{"class":157,"line":765},[1293,1297,1301,1307],{"type":63,"tag":155,"props":1294,"children":1295},{"style":286},[1296],{"type":69,"value":1111},{"type":63,"tag":155,"props":1298,"children":1299},{"style":305},[1300],{"type":69,"value":293},{"type":63,"tag":155,"props":1302,"children":1304},{"style":1303},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1305],{"type":69,"value":1306},"201",{"type":63,"tag":155,"props":1308,"children":1309},{"style":305},[1310],{"type":69,"value":336},{"type":63,"tag":155,"props":1312,"children":1313},{"class":157,"line":791},[1314,1318,1322,1326,1331,1335,1339,1343,1348,1352],{"type":63,"tag":155,"props":1315,"children":1316},{"style":286},[1317],{"type":69,"value":1087},{"type":63,"tag":155,"props":1319,"children":1320},{"style":305},[1321],{"type":69,"value":293},{"type":63,"tag":155,"props":1323,"children":1324},{"style":187},[1325],{"type":69,"value":416},{"type":63,"tag":155,"props":1327,"children":1328},{"style":214},[1329],{"type":69,"value":1330},"x-custom",{"type":63,"tag":155,"props":1332,"children":1333},{"style":187},[1334],{"type":69,"value":416},{"type":63,"tag":155,"props":1336,"children":1337},{"style":187},[1338],{"type":69,"value":992},{"type":63,"tag":155,"props":1340,"children":1341},{"style":187},[1342],{"type":69,"value":211},{"type":63,"tag":155,"props":1344,"children":1345},{"style":214},[1346],{"type":69,"value":1347},"value",{"type":63,"tag":155,"props":1349,"children":1350},{"style":187},[1351],{"type":69,"value":416},{"type":63,"tag":155,"props":1353,"children":1354},{"style":305},[1355],{"type":69,"value":336},{"type":63,"tag":155,"props":1357,"children":1358},{"class":157,"line":834},[1359,1363,1367,1371,1375,1380,1384,1388,1392,1397,1401,1405],{"type":63,"tag":155,"props":1360,"children":1361},{"style":286},[1362],{"type":69,"value":1099},{"type":63,"tag":155,"props":1364,"children":1365},{"style":305},[1366],{"type":69,"value":293},{"type":63,"tag":155,"props":1368,"children":1369},{"style":187},[1370],{"type":69,"value":670},{"type":63,"tag":155,"props":1372,"children":1373},{"style":187},[1374],{"type":69,"value":211},{"type":63,"tag":155,"props":1376,"children":1377},{"style":305},[1378],{"type":69,"value":1379},"cache-control",{"type":63,"tag":155,"props":1381,"children":1382},{"style":187},[1383],{"type":69,"value":416},{"type":63,"tag":155,"props":1385,"children":1386},{"style":187},[1387],{"type":69,"value":313},{"type":63,"tag":155,"props":1389,"children":1390},{"style":187},[1391],{"type":69,"value":211},{"type":63,"tag":155,"props":1393,"children":1394},{"style":214},[1395],{"type":69,"value":1396},"no-store",{"type":63,"tag":155,"props":1398,"children":1399},{"style":187},[1400],{"type":69,"value":416},{"type":63,"tag":155,"props":1402,"children":1403},{"style":187},[1404],{"type":69,"value":201},{"type":63,"tag":155,"props":1406,"children":1407},{"style":305},[1408],{"type":69,"value":336},{"type":63,"tag":155,"props":1410,"children":1411},{"class":157,"line":887},[1412],{"type":63,"tag":155,"props":1413,"children":1414},{"emptyLinePlaceholder":266},[1415],{"type":69,"value":269},{"type":63,"tag":155,"props":1417,"children":1418},{"class":157,"line":913},[1419,1423,1427,1432,1436,1440],{"type":63,"tag":155,"props":1420,"children":1421},{"style":181},[1422],{"type":69,"value":979},{"type":63,"tag":155,"props":1424,"children":1425},{"style":187},[1426],{"type":69,"value":190},{"type":63,"tag":155,"props":1428,"children":1429},{"style":305},[1430],{"type":69,"value":1431}," created",{"type":63,"tag":155,"props":1433,"children":1434},{"style":187},[1435],{"type":69,"value":313},{"type":63,"tag":155,"props":1437,"children":1438},{"style":873},[1439],{"type":69,"value":876},{"type":63,"tag":155,"props":1441,"children":1442},{"style":187},[1443],{"type":69,"value":1001},{"type":63,"tag":155,"props":1445,"children":1446},{"class":157,"line":939},[1447,1451],{"type":63,"tag":155,"props":1448,"children":1449},{"style":187},[1450],{"type":69,"value":331},{"type":63,"tag":155,"props":1452,"children":1453},{"style":193},[1454],{"type":69,"value":336},{"type":63,"tag":128,"props":1456,"children":1458},{"id":1457},"cookie-management",[1459],{"type":69,"value":1460},"Cookie Management",{"type":63,"tag":144,"props":1462,"children":1464},{"className":146,"code":1463,"language":148,"meta":149,"style":149},"\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { createServerFn } from '@tanstack\u002Freact-start'\nimport {\n  getCookies,\n  getCookie,\n  setCookie,\n  deleteCookie,\n} from '@tanstack\u002Freact-start\u002Fserver'\n\nconst serverFn = createServerFn({ method: 'POST' }).handler(async () => {\n  const allCookies = getCookies()\n  const token = getCookie('session-token')\n\n  setCookie('preference', 'dark', {\n    httpOnly: true,\n    secure: process.env.NODE_ENV === 'production',\n    sameSite: 'lax',\n    maxAge: 60 * 60 * 24 * 30, \u002F\u002F 30 days\n    path: '\u002F',\n  })\n\n  deleteCookie('old-cookie')\n})\n",[1465],{"type":63,"tag":72,"props":1466,"children":1467},{"__ignoreMap":149},[1468,1475,1510,1521,1533,1545,1557,1569,1592,1599,1682,1707,1749,1756,1805,1825,1882,1911,1964,1993,2005,2012,2040],{"type":63,"tag":155,"props":1469,"children":1470},{"class":157,"line":158},[1471],{"type":63,"tag":155,"props":1472,"children":1473},{"style":162},[1474],{"type":69,"value":174},{"type":63,"tag":155,"props":1476,"children":1477},{"class":157,"line":168},[1478,1482,1486,1490,1494,1498,1502,1506],{"type":63,"tag":155,"props":1479,"children":1480},{"style":181},[1481],{"type":69,"value":184},{"type":63,"tag":155,"props":1483,"children":1484},{"style":187},[1485],{"type":69,"value":190},{"type":63,"tag":155,"props":1487,"children":1488},{"style":193},[1489],{"type":69,"value":486},{"type":63,"tag":155,"props":1491,"children":1492},{"style":187},[1493],{"type":69,"value":201},{"type":63,"tag":155,"props":1495,"children":1496},{"style":181},[1497],{"type":69,"value":206},{"type":63,"tag":155,"props":1499,"children":1500},{"style":187},[1501],{"type":69,"value":211},{"type":63,"tag":155,"props":1503,"children":1504},{"style":214},[1505],{"type":69,"value":503},{"type":63,"tag":155,"props":1507,"children":1508},{"style":187},[1509],{"type":69,"value":222},{"type":63,"tag":155,"props":1511,"children":1512},{"class":157,"line":177},[1513,1517],{"type":63,"tag":155,"props":1514,"children":1515},{"style":181},[1516],{"type":69,"value":184},{"type":63,"tag":155,"props":1518,"children":1519},{"style":187},[1520],{"type":69,"value":519},{"type":63,"tag":155,"props":1522,"children":1523},{"class":157,"line":225},[1524,1529],{"type":63,"tag":155,"props":1525,"children":1526},{"style":193},[1527],{"type":69,"value":1528},"  getCookies",{"type":63,"tag":155,"props":1530,"children":1531},{"style":187},[1532],{"type":69,"value":322},{"type":63,"tag":155,"props":1534,"children":1535},{"class":157,"line":262},[1536,1541],{"type":63,"tag":155,"props":1537,"children":1538},{"style":193},[1539],{"type":69,"value":1540},"  getCookie",{"type":63,"tag":155,"props":1542,"children":1543},{"style":187},[1544],{"type":69,"value":322},{"type":63,"tag":155,"props":1546,"children":1547},{"class":157,"line":272},[1548,1553],{"type":63,"tag":155,"props":1549,"children":1550},{"style":193},[1551],{"type":69,"value":1552},"  setCookie",{"type":63,"tag":155,"props":1554,"children":1555},{"style":187},[1556],{"type":69,"value":322},{"type":63,"tag":155,"props":1558,"children":1559},{"class":157,"line":301},[1560,1565],{"type":63,"tag":155,"props":1561,"children":1562},{"style":193},[1563],{"type":69,"value":1564},"  deleteCookie",{"type":63,"tag":155,"props":1566,"children":1567},{"style":187},[1568],{"type":69,"value":322},{"type":63,"tag":155,"props":1570,"children":1571},{"class":157,"line":325},[1572,1576,1580,1584,1588],{"type":63,"tag":155,"props":1573,"children":1574},{"style":187},[1575],{"type":69,"value":331},{"type":63,"tag":155,"props":1577,"children":1578},{"style":181},[1579],{"type":69,"value":206},{"type":63,"tag":155,"props":1581,"children":1582},{"style":187},[1583],{"type":69,"value":211},{"type":63,"tag":155,"props":1585,"children":1586},{"style":214},[1587],{"type":69,"value":217},{"type":63,"tag":155,"props":1589,"children":1590},{"style":187},[1591],{"type":69,"value":222},{"type":63,"tag":155,"props":1593,"children":1594},{"class":157,"line":582},[1595],{"type":63,"tag":155,"props":1596,"children":1597},{"emptyLinePlaceholder":266},[1598],{"type":69,"value":269},{"type":63,"tag":155,"props":1600,"children":1601},{"class":157,"line":595},[1602,1606,1610,1614,1618,1622,1626,1630,1634,1638,1642,1646,1650,1654,1658,1662,1666,1670,1674,1678],{"type":63,"tag":155,"props":1603,"children":1604},{"style":644},[1605],{"type":69,"value":647},{"type":63,"tag":155,"props":1607,"children":1608},{"style":193},[1609],{"type":69,"value":652},{"type":63,"tag":155,"props":1611,"children":1612},{"style":187},[1613],{"type":69,"value":657},{"type":63,"tag":155,"props":1615,"children":1616},{"style":286},[1617],{"type":69,"value":486},{"type":63,"tag":155,"props":1619,"children":1620},{"style":193},[1621],{"type":69,"value":293},{"type":63,"tag":155,"props":1623,"children":1624},{"style":187},[1625],{"type":69,"value":670},{"type":63,"tag":155,"props":1627,"children":1628},{"style":305},[1629],{"type":69,"value":675},{"type":63,"tag":155,"props":1631,"children":1632},{"style":187},[1633],{"type":69,"value":313},{"type":63,"tag":155,"props":1635,"children":1636},{"style":187},[1637],{"type":69,"value":211},{"type":63,"tag":155,"props":1639,"children":1640},{"style":214},[1641],{"type":69,"value":1249},{"type":63,"tag":155,"props":1643,"children":1644},{"style":187},[1645],{"type":69,"value":416},{"type":63,"tag":155,"props":1647,"children":1648},{"style":187},[1649],{"type":69,"value":201},{"type":63,"tag":155,"props":1651,"children":1652},{"style":193},[1653],{"type":69,"value":79},{"type":63,"tag":155,"props":1655,"children":1656},{"style":187},[1657],{"type":69,"value":705},{"type":63,"tag":155,"props":1659,"children":1660},{"style":286},[1661],{"type":69,"value":710},{"type":63,"tag":155,"props":1663,"children":1664},{"style":193},[1665],{"type":69,"value":293},{"type":63,"tag":155,"props":1667,"children":1668},{"style":644},[1669],{"type":69,"value":719},{"type":63,"tag":155,"props":1671,"children":1672},{"style":187},[1673],{"type":69,"value":724},{"type":63,"tag":155,"props":1675,"children":1676},{"style":644},[1677],{"type":69,"value":729},{"type":63,"tag":155,"props":1679,"children":1680},{"style":187},[1681],{"type":69,"value":519},{"type":63,"tag":155,"props":1683,"children":1684},{"class":157,"line":608},[1685,1689,1694,1698,1703],{"type":63,"tag":155,"props":1686,"children":1687},{"style":644},[1688],{"type":69,"value":742},{"type":63,"tag":155,"props":1690,"children":1691},{"style":193},[1692],{"type":69,"value":1693}," allCookies",{"type":63,"tag":155,"props":1695,"children":1696},{"style":187},[1697],{"type":69,"value":752},{"type":63,"tag":155,"props":1699,"children":1700},{"style":286},[1701],{"type":69,"value":1702}," getCookies",{"type":63,"tag":155,"props":1704,"children":1705},{"style":305},[1706],{"type":69,"value":762},{"type":63,"tag":155,"props":1708,"children":1709},{"class":157,"line":632},[1710,1714,1719,1723,1728,1732,1736,1741,1745],{"type":63,"tag":155,"props":1711,"children":1712},{"style":644},[1713],{"type":69,"value":742},{"type":63,"tag":155,"props":1715,"children":1716},{"style":193},[1717],{"type":69,"value":1718}," token",{"type":63,"tag":155,"props":1720,"children":1721},{"style":187},[1722],{"type":69,"value":752},{"type":63,"tag":155,"props":1724,"children":1725},{"style":286},[1726],{"type":69,"value":1727}," getCookie",{"type":63,"tag":155,"props":1729,"children":1730},{"style":305},[1731],{"type":69,"value":293},{"type":63,"tag":155,"props":1733,"children":1734},{"style":187},[1735],{"type":69,"value":416},{"type":63,"tag":155,"props":1737,"children":1738},{"style":214},[1739],{"type":69,"value":1740},"session-token",{"type":63,"tag":155,"props":1742,"children":1743},{"style":187},[1744],{"type":69,"value":416},{"type":63,"tag":155,"props":1746,"children":1747},{"style":305},[1748],{"type":69,"value":336},{"type":63,"tag":155,"props":1750,"children":1751},{"class":157,"line":640},[1752],{"type":63,"tag":155,"props":1753,"children":1754},{"emptyLinePlaceholder":266},[1755],{"type":69,"value":269},{"type":63,"tag":155,"props":1757,"children":1758},{"class":157,"line":736},[1759,1763,1767,1771,1776,1780,1784,1788,1793,1797,1801],{"type":63,"tag":155,"props":1760,"children":1761},{"style":286},[1762],{"type":69,"value":1552},{"type":63,"tag":155,"props":1764,"children":1765},{"style":305},[1766],{"type":69,"value":293},{"type":63,"tag":155,"props":1768,"children":1769},{"style":187},[1770],{"type":69,"value":416},{"type":63,"tag":155,"props":1772,"children":1773},{"style":214},[1774],{"type":69,"value":1775},"preference",{"type":63,"tag":155,"props":1777,"children":1778},{"style":187},[1779],{"type":69,"value":416},{"type":63,"tag":155,"props":1781,"children":1782},{"style":187},[1783],{"type":69,"value":992},{"type":63,"tag":155,"props":1785,"children":1786},{"style":187},[1787],{"type":69,"value":211},{"type":63,"tag":155,"props":1789,"children":1790},{"style":214},[1791],{"type":69,"value":1792},"dark",{"type":63,"tag":155,"props":1794,"children":1795},{"style":187},[1796],{"type":69,"value":416},{"type":63,"tag":155,"props":1798,"children":1799},{"style":187},[1800],{"type":69,"value":992},{"type":63,"tag":155,"props":1802,"children":1803},{"style":187},[1804],{"type":69,"value":519},{"type":63,"tag":155,"props":1806,"children":1807},{"class":157,"line":765},[1808,1813,1817,1821],{"type":63,"tag":155,"props":1809,"children":1810},{"style":305},[1811],{"type":69,"value":1812},"    httpOnly",{"type":63,"tag":155,"props":1814,"children":1815},{"style":187},[1816],{"type":69,"value":313},{"type":63,"tag":155,"props":1818,"children":1819},{"style":873},[1820],{"type":69,"value":876},{"type":63,"tag":155,"props":1822,"children":1823},{"style":187},[1824],{"type":69,"value":322},{"type":63,"tag":155,"props":1826,"children":1827},{"class":157,"line":791},[1828,1833,1837,1842,1846,1851,1855,1860,1865,1869,1874,1878],{"type":63,"tag":155,"props":1829,"children":1830},{"style":305},[1831],{"type":69,"value":1832},"    secure",{"type":63,"tag":155,"props":1834,"children":1835},{"style":187},[1836],{"type":69,"value":313},{"type":63,"tag":155,"props":1838,"children":1839},{"style":193},[1840],{"type":69,"value":1841}," process",{"type":63,"tag":155,"props":1843,"children":1844},{"style":187},[1845],{"type":69,"value":705},{"type":63,"tag":155,"props":1847,"children":1848},{"style":193},[1849],{"type":69,"value":1850},"env",{"type":63,"tag":155,"props":1852,"children":1853},{"style":187},[1854],{"type":69,"value":705},{"type":63,"tag":155,"props":1856,"children":1857},{"style":193},[1858],{"type":69,"value":1859},"NODE_ENV",{"type":63,"tag":155,"props":1861,"children":1862},{"style":187},[1863],{"type":69,"value":1864}," ===",{"type":63,"tag":155,"props":1866,"children":1867},{"style":187},[1868],{"type":69,"value":211},{"type":63,"tag":155,"props":1870,"children":1871},{"style":214},[1872],{"type":69,"value":1873},"production",{"type":63,"tag":155,"props":1875,"children":1876},{"style":187},[1877],{"type":69,"value":416},{"type":63,"tag":155,"props":1879,"children":1880},{"style":187},[1881],{"type":69,"value":322},{"type":63,"tag":155,"props":1883,"children":1884},{"class":157,"line":834},[1885,1890,1894,1898,1903,1907],{"type":63,"tag":155,"props":1886,"children":1887},{"style":305},[1888],{"type":69,"value":1889},"    sameSite",{"type":63,"tag":155,"props":1891,"children":1892},{"style":187},[1893],{"type":69,"value":313},{"type":63,"tag":155,"props":1895,"children":1896},{"style":187},[1897],{"type":69,"value":211},{"type":63,"tag":155,"props":1899,"children":1900},{"style":214},[1901],{"type":69,"value":1902},"lax",{"type":63,"tag":155,"props":1904,"children":1905},{"style":187},[1906],{"type":69,"value":416},{"type":63,"tag":155,"props":1908,"children":1909},{"style":187},[1910],{"type":69,"value":322},{"type":63,"tag":155,"props":1912,"children":1913},{"class":157,"line":887},[1914,1919,1923,1928,1933,1937,1941,1946,1950,1955,1959],{"type":63,"tag":155,"props":1915,"children":1916},{"style":305},[1917],{"type":69,"value":1918},"    maxAge",{"type":63,"tag":155,"props":1920,"children":1921},{"style":187},[1922],{"type":69,"value":313},{"type":63,"tag":155,"props":1924,"children":1925},{"style":1303},[1926],{"type":69,"value":1927}," 60",{"type":63,"tag":155,"props":1929,"children":1930},{"style":187},[1931],{"type":69,"value":1932}," *",{"type":63,"tag":155,"props":1934,"children":1935},{"style":1303},[1936],{"type":69,"value":1927},{"type":63,"tag":155,"props":1938,"children":1939},{"style":187},[1940],{"type":69,"value":1932},{"type":63,"tag":155,"props":1942,"children":1943},{"style":1303},[1944],{"type":69,"value":1945}," 24",{"type":63,"tag":155,"props":1947,"children":1948},{"style":187},[1949],{"type":69,"value":1932},{"type":63,"tag":155,"props":1951,"children":1952},{"style":1303},[1953],{"type":69,"value":1954}," 30",{"type":63,"tag":155,"props":1956,"children":1957},{"style":187},[1958],{"type":69,"value":992},{"type":63,"tag":155,"props":1960,"children":1961},{"style":162},[1962],{"type":69,"value":1963}," \u002F\u002F 30 days\n",{"type":63,"tag":155,"props":1965,"children":1966},{"class":157,"line":913},[1967,1972,1976,1980,1985,1989],{"type":63,"tag":155,"props":1968,"children":1969},{"style":305},[1970],{"type":69,"value":1971},"    path",{"type":63,"tag":155,"props":1973,"children":1974},{"style":187},[1975],{"type":69,"value":313},{"type":63,"tag":155,"props":1977,"children":1978},{"style":187},[1979],{"type":69,"value":211},{"type":63,"tag":155,"props":1981,"children":1982},{"style":214},[1983],{"type":69,"value":1984},"\u002F",{"type":63,"tag":155,"props":1986,"children":1987},{"style":187},[1988],{"type":69,"value":416},{"type":63,"tag":155,"props":1990,"children":1991},{"style":187},[1992],{"type":69,"value":322},{"type":63,"tag":155,"props":1994,"children":1995},{"class":157,"line":939},[1996,2001],{"type":63,"tag":155,"props":1997,"children":1998},{"style":187},[1999],{"type":69,"value":2000},"  }",{"type":63,"tag":155,"props":2002,"children":2003},{"style":305},[2004],{"type":69,"value":336},{"type":63,"tag":155,"props":2006,"children":2007},{"class":157,"line":965},[2008],{"type":63,"tag":155,"props":2009,"children":2010},{"emptyLinePlaceholder":266},[2011],{"type":69,"value":269},{"type":63,"tag":155,"props":2013,"children":2014},{"class":157,"line":973},[2015,2019,2023,2027,2032,2036],{"type":63,"tag":155,"props":2016,"children":2017},{"style":286},[2018],{"type":69,"value":1564},{"type":63,"tag":155,"props":2020,"children":2021},{"style":305},[2022],{"type":69,"value":293},{"type":63,"tag":155,"props":2024,"children":2025},{"style":187},[2026],{"type":69,"value":416},{"type":63,"tag":155,"props":2028,"children":2029},{"style":214},[2030],{"type":69,"value":2031},"old-cookie",{"type":63,"tag":155,"props":2033,"children":2034},{"style":187},[2035],{"type":69,"value":416},{"type":63,"tag":155,"props":2037,"children":2038},{"style":305},[2039],{"type":69,"value":336},{"type":63,"tag":155,"props":2041,"children":2042},{"class":157,"line":1004},[2043,2047],{"type":63,"tag":155,"props":2044,"children":2045},{"style":187},[2046],{"type":69,"value":331},{"type":63,"tag":155,"props":2048,"children":2049},{"style":193},[2050],{"type":69,"value":336},{"type":63,"tag":128,"props":2052,"children":2054},{"id":2053},"session-management",[2055],{"type":69,"value":2056},"Session Management",{"type":63,"tag":81,"props":2058,"children":2059},{},[2060],{"type":69,"value":2061},"Encrypted sessions stored in cookies. Requires a password for encryption.",{"type":63,"tag":144,"props":2063,"children":2065},{"className":146,"code":2064,"language":148,"meta":149,"style":149},"\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { createServerFn } from '@tanstack\u002Freact-start'\nimport {\n  useSession,\n  getSession,\n  updateSession,\n  clearSession,\n} from '@tanstack\u002Freact-start\u002Fserver'\n\ntype SessionData = {\n  userId?: string\n}\n\nfunction getSessionConfig() {\n  const password = process.env.SESSION_SECRET\n  if (!password || password.length \u003C 32) {\n    throw new Error('SESSION_SECRET must be at least 32 characters')\n  }\n\n  return {\n    password,\n    name: 'my-app-session',\n    maxAge: 60 * 60 * 24 * 7,\n    cookie: {\n      httpOnly: true,\n      secure: process.env.NODE_ENV === 'production',\n      sameSite: 'lax' as const,\n      path: '\u002F',\n    },\n  }\n}\n\nfunction getDummyPasswordHash() {\n  \u002F\u002F Precompute this with the same algorithm and cost as real password hashes.\n  const hash = process.env.DUMMY_PASSWORD_HASH\n  if (!hash) {\n    throw new Error('DUMMY_PASSWORD_HASH is required')\n  }\n  return hash\n}\n\n\u002F\u002F Full session manager\nconst getUser = createServerFn({ method: 'GET' }).handler(async () => {\n  const session = await useSession\u003CSessionData>(getSessionConfig())\n  if (!session.data.userId) {\n    return null\n  }\n  return db.users.findById(session.data.userId)\n})\n\n\u002F\u002F Update session\nconst login = createServerFn({ method: 'POST' })\n  .validator((data: unknown) => {\n    if (\n      typeof data !== 'object' ||\n      data === null ||\n      !('email' in data) ||\n      typeof data.email !== 'string' ||\n      data.email.trim().length === 0 ||\n      !('password' in data) ||\n      typeof data.password !== 'string' ||\n      data.password.length === 0\n    ) {\n      throw new Error('Invalid credentials')\n    }\n    return {\n      email: data.email.trim().toLowerCase(),\n      password: data.password,\n    }\n  })\n  .handler(async ({ data }) => {\n    const user = await db.users.findByEmail(data.email)\n    const passwordHash = user?.passwordHash ?? getDummyPasswordHash()\n    const passwordMatches = await verifyPassword(data.password, passwordHash)\n    if (!user || !passwordMatches) {\n      throw new Error('Invalid credentials')\n    }\n\n    await updateSession\u003CSessionData>(getSessionConfig(), {\n      userId: user.id,\n    })\n    return { success: true }\n  })\n\n\u002F\u002F Clear session\nconst logout = createServerFn({ method: 'POST' }).handler(async () => {\n  await clearSession(getSessionConfig())\n  return { success: true }\n})\n",[2066],{"type":63,"tag":72,"props":2067,"children":2068},{"__ignoreMap":149},[2069,2076,2111,2122,2134,2146,2158,2170,2193,2200,2222,2240,2248,2255,2277,2314,2374,2413,2421,2428,2439,2451,2480,2524,2541,2562,2615,2654,2683,2692,2700,2708,2716,2737,2746,2784,2813,2850,2858,2871,2879,2887,2896,2981,3037,3084,3098,3106,3165,3177,3185,3194,3251,3299,3313,3350,3372,3416,3457,3507,3547,3587,3620,3633,3671,3680,3692,3746,3775,3783,3795,3837,3900,3944,3998,4041,4077,4085,4093,4139,4169,4182,4211,4223,4231,4240,4325,4351,4379],{"type":63,"tag":155,"props":2070,"children":2071},{"class":157,"line":158},[2072],{"type":63,"tag":155,"props":2073,"children":2074},{"style":162},[2075],{"type":69,"value":174},{"type":63,"tag":155,"props":2077,"children":2078},{"class":157,"line":168},[2079,2083,2087,2091,2095,2099,2103,2107],{"type":63,"tag":155,"props":2080,"children":2081},{"style":181},[2082],{"type":69,"value":184},{"type":63,"tag":155,"props":2084,"children":2085},{"style":187},[2086],{"type":69,"value":190},{"type":63,"tag":155,"props":2088,"children":2089},{"style":193},[2090],{"type":69,"value":486},{"type":63,"tag":155,"props":2092,"children":2093},{"style":187},[2094],{"type":69,"value":201},{"type":63,"tag":155,"props":2096,"children":2097},{"style":181},[2098],{"type":69,"value":206},{"type":63,"tag":155,"props":2100,"children":2101},{"style":187},[2102],{"type":69,"value":211},{"type":63,"tag":155,"props":2104,"children":2105},{"style":214},[2106],{"type":69,"value":503},{"type":63,"tag":155,"props":2108,"children":2109},{"style":187},[2110],{"type":69,"value":222},{"type":63,"tag":155,"props":2112,"children":2113},{"class":157,"line":177},[2114,2118],{"type":63,"tag":155,"props":2115,"children":2116},{"style":181},[2117],{"type":69,"value":184},{"type":63,"tag":155,"props":2119,"children":2120},{"style":187},[2121],{"type":69,"value":519},{"type":63,"tag":155,"props":2123,"children":2124},{"class":157,"line":225},[2125,2130],{"type":63,"tag":155,"props":2126,"children":2127},{"style":193},[2128],{"type":69,"value":2129},"  useSession",{"type":63,"tag":155,"props":2131,"children":2132},{"style":187},[2133],{"type":69,"value":322},{"type":63,"tag":155,"props":2135,"children":2136},{"class":157,"line":262},[2137,2142],{"type":63,"tag":155,"props":2138,"children":2139},{"style":193},[2140],{"type":69,"value":2141},"  getSession",{"type":63,"tag":155,"props":2143,"children":2144},{"style":187},[2145],{"type":69,"value":322},{"type":63,"tag":155,"props":2147,"children":2148},{"class":157,"line":272},[2149,2154],{"type":63,"tag":155,"props":2150,"children":2151},{"style":193},[2152],{"type":69,"value":2153},"  updateSession",{"type":63,"tag":155,"props":2155,"children":2156},{"style":187},[2157],{"type":69,"value":322},{"type":63,"tag":155,"props":2159,"children":2160},{"class":157,"line":301},[2161,2166],{"type":63,"tag":155,"props":2162,"children":2163},{"style":193},[2164],{"type":69,"value":2165},"  clearSession",{"type":63,"tag":155,"props":2167,"children":2168},{"style":187},[2169],{"type":69,"value":322},{"type":63,"tag":155,"props":2171,"children":2172},{"class":157,"line":325},[2173,2177,2181,2185,2189],{"type":63,"tag":155,"props":2174,"children":2175},{"style":187},[2176],{"type":69,"value":331},{"type":63,"tag":155,"props":2178,"children":2179},{"style":181},[2180],{"type":69,"value":206},{"type":63,"tag":155,"props":2182,"children":2183},{"style":187},[2184],{"type":69,"value":211},{"type":63,"tag":155,"props":2186,"children":2187},{"style":214},[2188],{"type":69,"value":217},{"type":63,"tag":155,"props":2190,"children":2191},{"style":187},[2192],{"type":69,"value":222},{"type":63,"tag":155,"props":2194,"children":2195},{"class":157,"line":582},[2196],{"type":63,"tag":155,"props":2197,"children":2198},{"emptyLinePlaceholder":266},[2199],{"type":69,"value":269},{"type":63,"tag":155,"props":2201,"children":2202},{"class":157,"line":595},[2203,2208,2214,2218],{"type":63,"tag":155,"props":2204,"children":2205},{"style":644},[2206],{"type":69,"value":2207},"type",{"type":63,"tag":155,"props":2209,"children":2211},{"style":2210},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[2212],{"type":69,"value":2213}," SessionData",{"type":63,"tag":155,"props":2215,"children":2216},{"style":187},[2217],{"type":69,"value":752},{"type":63,"tag":155,"props":2219,"children":2220},{"style":187},[2221],{"type":69,"value":519},{"type":63,"tag":155,"props":2223,"children":2224},{"class":157,"line":608},[2225,2230,2235],{"type":63,"tag":155,"props":2226,"children":2227},{"style":305},[2228],{"type":69,"value":2229},"  userId",{"type":63,"tag":155,"props":2231,"children":2232},{"style":187},[2233],{"type":69,"value":2234},"?:",{"type":63,"tag":155,"props":2236,"children":2237},{"style":2210},[2238],{"type":69,"value":2239}," string\n",{"type":63,"tag":155,"props":2241,"children":2242},{"class":157,"line":632},[2243],{"type":63,"tag":155,"props":2244,"children":2245},{"style":187},[2246],{"type":69,"value":2247},"}\n",{"type":63,"tag":155,"props":2249,"children":2250},{"class":157,"line":640},[2251],{"type":63,"tag":155,"props":2252,"children":2253},{"emptyLinePlaceholder":266},[2254],{"type":69,"value":269},{"type":63,"tag":155,"props":2256,"children":2257},{"class":157,"line":736},[2258,2263,2268,2273],{"type":63,"tag":155,"props":2259,"children":2260},{"style":644},[2261],{"type":69,"value":2262},"function",{"type":63,"tag":155,"props":2264,"children":2265},{"style":286},[2266],{"type":69,"value":2267}," getSessionConfig",{"type":63,"tag":155,"props":2269,"children":2270},{"style":187},[2271],{"type":69,"value":2272},"()",{"type":63,"tag":155,"props":2274,"children":2275},{"style":187},[2276],{"type":69,"value":519},{"type":63,"tag":155,"props":2278,"children":2279},{"class":157,"line":765},[2280,2284,2289,2293,2297,2301,2305,2309],{"type":63,"tag":155,"props":2281,"children":2282},{"style":644},[2283],{"type":69,"value":742},{"type":63,"tag":155,"props":2285,"children":2286},{"style":193},[2287],{"type":69,"value":2288}," password",{"type":63,"tag":155,"props":2290,"children":2291},{"style":187},[2292],{"type":69,"value":752},{"type":63,"tag":155,"props":2294,"children":2295},{"style":193},[2296],{"type":69,"value":1841},{"type":63,"tag":155,"props":2298,"children":2299},{"style":187},[2300],{"type":69,"value":705},{"type":63,"tag":155,"props":2302,"children":2303},{"style":193},[2304],{"type":69,"value":1850},{"type":63,"tag":155,"props":2306,"children":2307},{"style":187},[2308],{"type":69,"value":705},{"type":63,"tag":155,"props":2310,"children":2311},{"style":193},[2312],{"type":69,"value":2313},"SESSION_SECRET\n",{"type":63,"tag":155,"props":2315,"children":2316},{"class":157,"line":791},[2317,2322,2327,2332,2337,2342,2346,2350,2355,2360,2365,2370],{"type":63,"tag":155,"props":2318,"children":2319},{"style":181},[2320],{"type":69,"value":2321},"  if",{"type":63,"tag":155,"props":2323,"children":2324},{"style":305},[2325],{"type":69,"value":2326}," (",{"type":63,"tag":155,"props":2328,"children":2329},{"style":187},[2330],{"type":69,"value":2331},"!",{"type":63,"tag":155,"props":2333,"children":2334},{"style":193},[2335],{"type":69,"value":2336},"password",{"type":63,"tag":155,"props":2338,"children":2339},{"style":187},[2340],{"type":69,"value":2341}," ||",{"type":63,"tag":155,"props":2343,"children":2344},{"style":193},[2345],{"type":69,"value":2288},{"type":63,"tag":155,"props":2347,"children":2348},{"style":187},[2349],{"type":69,"value":705},{"type":63,"tag":155,"props":2351,"children":2352},{"style":193},[2353],{"type":69,"value":2354},"length",{"type":63,"tag":155,"props":2356,"children":2357},{"style":187},[2358],{"type":69,"value":2359}," \u003C",{"type":63,"tag":155,"props":2361,"children":2362},{"style":1303},[2363],{"type":69,"value":2364}," 32",{"type":63,"tag":155,"props":2366,"children":2367},{"style":305},[2368],{"type":69,"value":2369},") ",{"type":63,"tag":155,"props":2371,"children":2372},{"style":187},[2373],{"type":69,"value":298},{"type":63,"tag":155,"props":2375,"children":2376},{"class":157,"line":834},[2377,2382,2387,2392,2396,2400,2405,2409],{"type":63,"tag":155,"props":2378,"children":2379},{"style":181},[2380],{"type":69,"value":2381},"    throw",{"type":63,"tag":155,"props":2383,"children":2384},{"style":187},[2385],{"type":69,"value":2386}," new",{"type":63,"tag":155,"props":2388,"children":2389},{"style":286},[2390],{"type":69,"value":2391}," Error",{"type":63,"tag":155,"props":2393,"children":2394},{"style":305},[2395],{"type":69,"value":293},{"type":63,"tag":155,"props":2397,"children":2398},{"style":187},[2399],{"type":69,"value":416},{"type":63,"tag":155,"props":2401,"children":2402},{"style":214},[2403],{"type":69,"value":2404},"SESSION_SECRET must be at least 32 characters",{"type":63,"tag":155,"props":2406,"children":2407},{"style":187},[2408],{"type":69,"value":416},{"type":63,"tag":155,"props":2410,"children":2411},{"style":305},[2412],{"type":69,"value":336},{"type":63,"tag":155,"props":2414,"children":2415},{"class":157,"line":887},[2416],{"type":63,"tag":155,"props":2417,"children":2418},{"style":187},[2419],{"type":69,"value":2420},"  }\n",{"type":63,"tag":155,"props":2422,"children":2423},{"class":157,"line":913},[2424],{"type":63,"tag":155,"props":2425,"children":2426},{"emptyLinePlaceholder":266},[2427],{"type":69,"value":269},{"type":63,"tag":155,"props":2429,"children":2430},{"class":157,"line":939},[2431,2435],{"type":63,"tag":155,"props":2432,"children":2433},{"style":181},[2434],{"type":69,"value":979},{"type":63,"tag":155,"props":2436,"children":2437},{"style":187},[2438],{"type":69,"value":519},{"type":63,"tag":155,"props":2440,"children":2441},{"class":157,"line":965},[2442,2447],{"type":63,"tag":155,"props":2443,"children":2444},{"style":193},[2445],{"type":69,"value":2446},"    password",{"type":63,"tag":155,"props":2448,"children":2449},{"style":187},[2450],{"type":69,"value":322},{"type":63,"tag":155,"props":2452,"children":2453},{"class":157,"line":973},[2454,2459,2463,2467,2472,2476],{"type":63,"tag":155,"props":2455,"children":2456},{"style":305},[2457],{"type":69,"value":2458},"    name",{"type":63,"tag":155,"props":2460,"children":2461},{"style":187},[2462],{"type":69,"value":313},{"type":63,"tag":155,"props":2464,"children":2465},{"style":187},[2466],{"type":69,"value":211},{"type":63,"tag":155,"props":2468,"children":2469},{"style":214},[2470],{"type":69,"value":2471},"my-app-session",{"type":63,"tag":155,"props":2473,"children":2474},{"style":187},[2475],{"type":69,"value":416},{"type":63,"tag":155,"props":2477,"children":2478},{"style":187},[2479],{"type":69,"value":322},{"type":63,"tag":155,"props":2481,"children":2482},{"class":157,"line":1004},[2483,2487,2491,2495,2499,2503,2507,2511,2515,2520],{"type":63,"tag":155,"props":2484,"children":2485},{"style":305},[2486],{"type":69,"value":1918},{"type":63,"tag":155,"props":2488,"children":2489},{"style":187},[2490],{"type":69,"value":313},{"type":63,"tag":155,"props":2492,"children":2493},{"style":1303},[2494],{"type":69,"value":1927},{"type":63,"tag":155,"props":2496,"children":2497},{"style":187},[2498],{"type":69,"value":1932},{"type":63,"tag":155,"props":2500,"children":2501},{"style":1303},[2502],{"type":69,"value":1927},{"type":63,"tag":155,"props":2504,"children":2505},{"style":187},[2506],{"type":69,"value":1932},{"type":63,"tag":155,"props":2508,"children":2509},{"style":1303},[2510],{"type":69,"value":1945},{"type":63,"tag":155,"props":2512,"children":2513},{"style":187},[2514],{"type":69,"value":1932},{"type":63,"tag":155,"props":2516,"children":2517},{"style":1303},[2518],{"type":69,"value":2519}," 7",{"type":63,"tag":155,"props":2521,"children":2522},{"style":187},[2523],{"type":69,"value":322},{"type":63,"tag":155,"props":2525,"children":2527},{"class":157,"line":2526},24,[2528,2533,2537],{"type":63,"tag":155,"props":2529,"children":2530},{"style":305},[2531],{"type":69,"value":2532},"    cookie",{"type":63,"tag":155,"props":2534,"children":2535},{"style":187},[2536],{"type":69,"value":313},{"type":63,"tag":155,"props":2538,"children":2539},{"style":187},[2540],{"type":69,"value":519},{"type":63,"tag":155,"props":2542,"children":2544},{"class":157,"line":2543},25,[2545,2550,2554,2558],{"type":63,"tag":155,"props":2546,"children":2547},{"style":305},[2548],{"type":69,"value":2549},"      httpOnly",{"type":63,"tag":155,"props":2551,"children":2552},{"style":187},[2553],{"type":69,"value":313},{"type":63,"tag":155,"props":2555,"children":2556},{"style":873},[2557],{"type":69,"value":876},{"type":63,"tag":155,"props":2559,"children":2560},{"style":187},[2561],{"type":69,"value":322},{"type":63,"tag":155,"props":2563,"children":2565},{"class":157,"line":2564},26,[2566,2571,2575,2579,2583,2587,2591,2595,2599,2603,2607,2611],{"type":63,"tag":155,"props":2567,"children":2568},{"style":305},[2569],{"type":69,"value":2570},"      secure",{"type":63,"tag":155,"props":2572,"children":2573},{"style":187},[2574],{"type":69,"value":313},{"type":63,"tag":155,"props":2576,"children":2577},{"style":193},[2578],{"type":69,"value":1841},{"type":63,"tag":155,"props":2580,"children":2581},{"style":187},[2582],{"type":69,"value":705},{"type":63,"tag":155,"props":2584,"children":2585},{"style":193},[2586],{"type":69,"value":1850},{"type":63,"tag":155,"props":2588,"children":2589},{"style":187},[2590],{"type":69,"value":705},{"type":63,"tag":155,"props":2592,"children":2593},{"style":193},[2594],{"type":69,"value":1859},{"type":63,"tag":155,"props":2596,"children":2597},{"style":187},[2598],{"type":69,"value":1864},{"type":63,"tag":155,"props":2600,"children":2601},{"style":187},[2602],{"type":69,"value":211},{"type":63,"tag":155,"props":2604,"children":2605},{"style":214},[2606],{"type":69,"value":1873},{"type":63,"tag":155,"props":2608,"children":2609},{"style":187},[2610],{"type":69,"value":416},{"type":63,"tag":155,"props":2612,"children":2613},{"style":187},[2614],{"type":69,"value":322},{"type":63,"tag":155,"props":2616,"children":2618},{"class":157,"line":2617},27,[2619,2624,2628,2632,2636,2640,2645,2650],{"type":63,"tag":155,"props":2620,"children":2621},{"style":305},[2622],{"type":69,"value":2623},"      sameSite",{"type":63,"tag":155,"props":2625,"children":2626},{"style":187},[2627],{"type":69,"value":313},{"type":63,"tag":155,"props":2629,"children":2630},{"style":187},[2631],{"type":69,"value":211},{"type":63,"tag":155,"props":2633,"children":2634},{"style":214},[2635],{"type":69,"value":1902},{"type":63,"tag":155,"props":2637,"children":2638},{"style":187},[2639],{"type":69,"value":416},{"type":63,"tag":155,"props":2641,"children":2642},{"style":181},[2643],{"type":69,"value":2644}," as",{"type":63,"tag":155,"props":2646,"children":2647},{"style":644},[2648],{"type":69,"value":2649}," const",{"type":63,"tag":155,"props":2651,"children":2652},{"style":187},[2653],{"type":69,"value":322},{"type":63,"tag":155,"props":2655,"children":2657},{"class":157,"line":2656},28,[2658,2663,2667,2671,2675,2679],{"type":63,"tag":155,"props":2659,"children":2660},{"style":305},[2661],{"type":69,"value":2662},"      path",{"type":63,"tag":155,"props":2664,"children":2665},{"style":187},[2666],{"type":69,"value":313},{"type":63,"tag":155,"props":2668,"children":2669},{"style":187},[2670],{"type":69,"value":211},{"type":63,"tag":155,"props":2672,"children":2673},{"style":214},[2674],{"type":69,"value":1984},{"type":63,"tag":155,"props":2676,"children":2677},{"style":187},[2678],{"type":69,"value":416},{"type":63,"tag":155,"props":2680,"children":2681},{"style":187},[2682],{"type":69,"value":322},{"type":63,"tag":155,"props":2684,"children":2686},{"class":157,"line":2685},29,[2687],{"type":63,"tag":155,"props":2688,"children":2689},{"style":187},[2690],{"type":69,"value":2691},"    },\n",{"type":63,"tag":155,"props":2693,"children":2695},{"class":157,"line":2694},30,[2696],{"type":63,"tag":155,"props":2697,"children":2698},{"style":187},[2699],{"type":69,"value":2420},{"type":63,"tag":155,"props":2701,"children":2703},{"class":157,"line":2702},31,[2704],{"type":63,"tag":155,"props":2705,"children":2706},{"style":187},[2707],{"type":69,"value":2247},{"type":63,"tag":155,"props":2709,"children":2711},{"class":157,"line":2710},32,[2712],{"type":63,"tag":155,"props":2713,"children":2714},{"emptyLinePlaceholder":266},[2715],{"type":69,"value":269},{"type":63,"tag":155,"props":2717,"children":2719},{"class":157,"line":2718},33,[2720,2724,2729,2733],{"type":63,"tag":155,"props":2721,"children":2722},{"style":644},[2723],{"type":69,"value":2262},{"type":63,"tag":155,"props":2725,"children":2726},{"style":286},[2727],{"type":69,"value":2728}," getDummyPasswordHash",{"type":63,"tag":155,"props":2730,"children":2731},{"style":187},[2732],{"type":69,"value":2272},{"type":63,"tag":155,"props":2734,"children":2735},{"style":187},[2736],{"type":69,"value":519},{"type":63,"tag":155,"props":2738,"children":2740},{"class":157,"line":2739},34,[2741],{"type":63,"tag":155,"props":2742,"children":2743},{"style":162},[2744],{"type":69,"value":2745},"  \u002F\u002F Precompute this with the same algorithm and cost as real password hashes.\n",{"type":63,"tag":155,"props":2747,"children":2749},{"class":157,"line":2748},35,[2750,2754,2759,2763,2767,2771,2775,2779],{"type":63,"tag":155,"props":2751,"children":2752},{"style":644},[2753],{"type":69,"value":742},{"type":63,"tag":155,"props":2755,"children":2756},{"style":193},[2757],{"type":69,"value":2758}," hash",{"type":63,"tag":155,"props":2760,"children":2761},{"style":187},[2762],{"type":69,"value":752},{"type":63,"tag":155,"props":2764,"children":2765},{"style":193},[2766],{"type":69,"value":1841},{"type":63,"tag":155,"props":2768,"children":2769},{"style":187},[2770],{"type":69,"value":705},{"type":63,"tag":155,"props":2772,"children":2773},{"style":193},[2774],{"type":69,"value":1850},{"type":63,"tag":155,"props":2776,"children":2777},{"style":187},[2778],{"type":69,"value":705},{"type":63,"tag":155,"props":2780,"children":2781},{"style":193},[2782],{"type":69,"value":2783},"DUMMY_PASSWORD_HASH\n",{"type":63,"tag":155,"props":2785,"children":2787},{"class":157,"line":2786},36,[2788,2792,2796,2800,2805,2809],{"type":63,"tag":155,"props":2789,"children":2790},{"style":181},[2791],{"type":69,"value":2321},{"type":63,"tag":155,"props":2793,"children":2794},{"style":305},[2795],{"type":69,"value":2326},{"type":63,"tag":155,"props":2797,"children":2798},{"style":187},[2799],{"type":69,"value":2331},{"type":63,"tag":155,"props":2801,"children":2802},{"style":193},[2803],{"type":69,"value":2804},"hash",{"type":63,"tag":155,"props":2806,"children":2807},{"style":305},[2808],{"type":69,"value":2369},{"type":63,"tag":155,"props":2810,"children":2811},{"style":187},[2812],{"type":69,"value":298},{"type":63,"tag":155,"props":2814,"children":2816},{"class":157,"line":2815},37,[2817,2821,2825,2829,2833,2837,2842,2846],{"type":63,"tag":155,"props":2818,"children":2819},{"style":181},[2820],{"type":69,"value":2381},{"type":63,"tag":155,"props":2822,"children":2823},{"style":187},[2824],{"type":69,"value":2386},{"type":63,"tag":155,"props":2826,"children":2827},{"style":286},[2828],{"type":69,"value":2391},{"type":63,"tag":155,"props":2830,"children":2831},{"style":305},[2832],{"type":69,"value":293},{"type":63,"tag":155,"props":2834,"children":2835},{"style":187},[2836],{"type":69,"value":416},{"type":63,"tag":155,"props":2838,"children":2839},{"style":214},[2840],{"type":69,"value":2841},"DUMMY_PASSWORD_HASH is required",{"type":63,"tag":155,"props":2843,"children":2844},{"style":187},[2845],{"type":69,"value":416},{"type":63,"tag":155,"props":2847,"children":2848},{"style":305},[2849],{"type":69,"value":336},{"type":63,"tag":155,"props":2851,"children":2853},{"class":157,"line":2852},38,[2854],{"type":63,"tag":155,"props":2855,"children":2856},{"style":187},[2857],{"type":69,"value":2420},{"type":63,"tag":155,"props":2859,"children":2861},{"class":157,"line":2860},39,[2862,2866],{"type":63,"tag":155,"props":2863,"children":2864},{"style":181},[2865],{"type":69,"value":979},{"type":63,"tag":155,"props":2867,"children":2868},{"style":193},[2869],{"type":69,"value":2870}," hash\n",{"type":63,"tag":155,"props":2872,"children":2874},{"class":157,"line":2873},40,[2875],{"type":63,"tag":155,"props":2876,"children":2877},{"style":187},[2878],{"type":69,"value":2247},{"type":63,"tag":155,"props":2880,"children":2882},{"class":157,"line":2881},41,[2883],{"type":63,"tag":155,"props":2884,"children":2885},{"emptyLinePlaceholder":266},[2886],{"type":69,"value":269},{"type":63,"tag":155,"props":2888,"children":2890},{"class":157,"line":2889},42,[2891],{"type":63,"tag":155,"props":2892,"children":2893},{"style":162},[2894],{"type":69,"value":2895},"\u002F\u002F Full session manager\n",{"type":63,"tag":155,"props":2897,"children":2899},{"class":157,"line":2898},43,[2900,2904,2909,2913,2917,2921,2925,2929,2933,2937,2941,2945,2949,2953,2957,2961,2965,2969,2973,2977],{"type":63,"tag":155,"props":2901,"children":2902},{"style":644},[2903],{"type":69,"value":647},{"type":63,"tag":155,"props":2905,"children":2906},{"style":193},[2907],{"type":69,"value":2908}," getUser ",{"type":63,"tag":155,"props":2910,"children":2911},{"style":187},[2912],{"type":69,"value":657},{"type":63,"tag":155,"props":2914,"children":2915},{"style":286},[2916],{"type":69,"value":486},{"type":63,"tag":155,"props":2918,"children":2919},{"style":193},[2920],{"type":69,"value":293},{"type":63,"tag":155,"props":2922,"children":2923},{"style":187},[2924],{"type":69,"value":670},{"type":63,"tag":155,"props":2926,"children":2927},{"style":305},[2928],{"type":69,"value":675},{"type":63,"tag":155,"props":2930,"children":2931},{"style":187},[2932],{"type":69,"value":313},{"type":63,"tag":155,"props":2934,"children":2935},{"style":187},[2936],{"type":69,"value":211},{"type":63,"tag":155,"props":2938,"children":2939},{"style":214},[2940],{"type":69,"value":688},{"type":63,"tag":155,"props":2942,"children":2943},{"style":187},[2944],{"type":69,"value":416},{"type":63,"tag":155,"props":2946,"children":2947},{"style":187},[2948],{"type":69,"value":201},{"type":63,"tag":155,"props":2950,"children":2951},{"style":193},[2952],{"type":69,"value":79},{"type":63,"tag":155,"props":2954,"children":2955},{"style":187},[2956],{"type":69,"value":705},{"type":63,"tag":155,"props":2958,"children":2959},{"style":286},[2960],{"type":69,"value":710},{"type":63,"tag":155,"props":2962,"children":2963},{"style":193},[2964],{"type":69,"value":293},{"type":63,"tag":155,"props":2966,"children":2967},{"style":644},[2968],{"type":69,"value":719},{"type":63,"tag":155,"props":2970,"children":2971},{"style":187},[2972],{"type":69,"value":724},{"type":63,"tag":155,"props":2974,"children":2975},{"style":644},[2976],{"type":69,"value":729},{"type":63,"tag":155,"props":2978,"children":2979},{"style":187},[2980],{"type":69,"value":519},{"type":63,"tag":155,"props":2982,"children":2984},{"class":157,"line":2983},44,[2985,2989,2994,2998,3003,3008,3013,3018,3023,3027,3032],{"type":63,"tag":155,"props":2986,"children":2987},{"style":644},[2988],{"type":69,"value":742},{"type":63,"tag":155,"props":2990,"children":2991},{"style":193},[2992],{"type":69,"value":2993}," session",{"type":63,"tag":155,"props":2995,"children":2996},{"style":187},[2997],{"type":69,"value":752},{"type":63,"tag":155,"props":2999,"children":3000},{"style":181},[3001],{"type":69,"value":3002}," await",{"type":63,"tag":155,"props":3004,"children":3005},{"style":286},[3006],{"type":69,"value":3007}," useSession",{"type":63,"tag":155,"props":3009,"children":3010},{"style":187},[3011],{"type":69,"value":3012},"\u003C",{"type":63,"tag":155,"props":3014,"children":3015},{"style":2210},[3016],{"type":69,"value":3017},"SessionData",{"type":63,"tag":155,"props":3019,"children":3020},{"style":187},[3021],{"type":69,"value":3022},">",{"type":63,"tag":155,"props":3024,"children":3025},{"style":305},[3026],{"type":69,"value":293},{"type":63,"tag":155,"props":3028,"children":3029},{"style":286},[3030],{"type":69,"value":3031},"getSessionConfig",{"type":63,"tag":155,"props":3033,"children":3034},{"style":305},[3035],{"type":69,"value":3036},"())\n",{"type":63,"tag":155,"props":3038,"children":3040},{"class":157,"line":3039},45,[3041,3045,3049,3053,3058,3062,3067,3071,3076,3080],{"type":63,"tag":155,"props":3042,"children":3043},{"style":181},[3044],{"type":69,"value":2321},{"type":63,"tag":155,"props":3046,"children":3047},{"style":305},[3048],{"type":69,"value":2326},{"type":63,"tag":155,"props":3050,"children":3051},{"style":187},[3052],{"type":69,"value":2331},{"type":63,"tag":155,"props":3054,"children":3055},{"style":193},[3056],{"type":69,"value":3057},"session",{"type":63,"tag":155,"props":3059,"children":3060},{"style":187},[3061],{"type":69,"value":705},{"type":63,"tag":155,"props":3063,"children":3064},{"style":193},[3065],{"type":69,"value":3066},"data",{"type":63,"tag":155,"props":3068,"children":3069},{"style":187},[3070],{"type":69,"value":705},{"type":63,"tag":155,"props":3072,"children":3073},{"style":193},[3074],{"type":69,"value":3075},"userId",{"type":63,"tag":155,"props":3077,"children":3078},{"style":305},[3079],{"type":69,"value":2369},{"type":63,"tag":155,"props":3081,"children":3082},{"style":187},[3083],{"type":69,"value":298},{"type":63,"tag":155,"props":3085,"children":3087},{"class":157,"line":3086},46,[3088,3093],{"type":63,"tag":155,"props":3089,"children":3090},{"style":181},[3091],{"type":69,"value":3092},"    return",{"type":63,"tag":155,"props":3094,"children":3095},{"style":187},[3096],{"type":69,"value":3097}," null\n",{"type":63,"tag":155,"props":3099,"children":3101},{"class":157,"line":3100},47,[3102],{"type":63,"tag":155,"props":3103,"children":3104},{"style":187},[3105],{"type":69,"value":2420},{"type":63,"tag":155,"props":3107,"children":3109},{"class":157,"line":3108},48,[3110,3114,3119,3123,3128,3132,3137,3141,3145,3149,3153,3157,3161],{"type":63,"tag":155,"props":3111,"children":3112},{"style":181},[3113],{"type":69,"value":979},{"type":63,"tag":155,"props":3115,"children":3116},{"style":193},[3117],{"type":69,"value":3118}," db",{"type":63,"tag":155,"props":3120,"children":3121},{"style":187},[3122],{"type":69,"value":705},{"type":63,"tag":155,"props":3124,"children":3125},{"style":193},[3126],{"type":69,"value":3127},"users",{"type":63,"tag":155,"props":3129,"children":3130},{"style":187},[3131],{"type":69,"value":705},{"type":63,"tag":155,"props":3133,"children":3134},{"style":286},[3135],{"type":69,"value":3136},"findById",{"type":63,"tag":155,"props":3138,"children":3139},{"style":305},[3140],{"type":69,"value":293},{"type":63,"tag":155,"props":3142,"children":3143},{"style":193},[3144],{"type":69,"value":3057},{"type":63,"tag":155,"props":3146,"children":3147},{"style":187},[3148],{"type":69,"value":705},{"type":63,"tag":155,"props":3150,"children":3151},{"style":193},[3152],{"type":69,"value":3066},{"type":63,"tag":155,"props":3154,"children":3155},{"style":187},[3156],{"type":69,"value":705},{"type":63,"tag":155,"props":3158,"children":3159},{"style":193},[3160],{"type":69,"value":3075},{"type":63,"tag":155,"props":3162,"children":3163},{"style":305},[3164],{"type":69,"value":336},{"type":63,"tag":155,"props":3166,"children":3168},{"class":157,"line":3167},49,[3169,3173],{"type":63,"tag":155,"props":3170,"children":3171},{"style":187},[3172],{"type":69,"value":331},{"type":63,"tag":155,"props":3174,"children":3175},{"style":193},[3176],{"type":69,"value":336},{"type":63,"tag":155,"props":3178,"children":3180},{"class":157,"line":3179},50,[3181],{"type":63,"tag":155,"props":3182,"children":3183},{"emptyLinePlaceholder":266},[3184],{"type":69,"value":269},{"type":63,"tag":155,"props":3186,"children":3188},{"class":157,"line":3187},51,[3189],{"type":63,"tag":155,"props":3190,"children":3191},{"style":162},[3192],{"type":69,"value":3193},"\u002F\u002F Update session\n",{"type":63,"tag":155,"props":3195,"children":3197},{"class":157,"line":3196},52,[3198,3202,3207,3211,3215,3219,3223,3227,3231,3235,3239,3243,3247],{"type":63,"tag":155,"props":3199,"children":3200},{"style":644},[3201],{"type":69,"value":647},{"type":63,"tag":155,"props":3203,"children":3204},{"style":193},[3205],{"type":69,"value":3206}," login ",{"type":63,"tag":155,"props":3208,"children":3209},{"style":187},[3210],{"type":69,"value":657},{"type":63,"tag":155,"props":3212,"children":3213},{"style":286},[3214],{"type":69,"value":486},{"type":63,"tag":155,"props":3216,"children":3217},{"style":193},[3218],{"type":69,"value":293},{"type":63,"tag":155,"props":3220,"children":3221},{"style":187},[3222],{"type":69,"value":670},{"type":63,"tag":155,"props":3224,"children":3225},{"style":305},[3226],{"type":69,"value":675},{"type":63,"tag":155,"props":3228,"children":3229},{"style":187},[3230],{"type":69,"value":313},{"type":63,"tag":155,"props":3232,"children":3233},{"style":187},[3234],{"type":69,"value":211},{"type":63,"tag":155,"props":3236,"children":3237},{"style":214},[3238],{"type":69,"value":1249},{"type":63,"tag":155,"props":3240,"children":3241},{"style":187},[3242],{"type":69,"value":416},{"type":63,"tag":155,"props":3244,"children":3245},{"style":187},[3246],{"type":69,"value":201},{"type":63,"tag":155,"props":3248,"children":3249},{"style":193},[3250],{"type":69,"value":336},{"type":63,"tag":155,"props":3252,"children":3254},{"class":157,"line":3253},53,[3255,3260,3265,3269,3273,3278,3282,3287,3291,3295],{"type":63,"tag":155,"props":3256,"children":3257},{"style":187},[3258],{"type":69,"value":3259},"  .",{"type":63,"tag":155,"props":3261,"children":3262},{"style":286},[3263],{"type":69,"value":3264},"validator",{"type":63,"tag":155,"props":3266,"children":3267},{"style":193},[3268],{"type":69,"value":293},{"type":63,"tag":155,"props":3270,"children":3271},{"style":187},[3272],{"type":69,"value":293},{"type":63,"tag":155,"props":3274,"children":3276},{"style":3275},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[3277],{"type":69,"value":3066},{"type":63,"tag":155,"props":3279,"children":3280},{"style":187},[3281],{"type":69,"value":313},{"type":63,"tag":155,"props":3283,"children":3284},{"style":2210},[3285],{"type":69,"value":3286}," unknown",{"type":63,"tag":155,"props":3288,"children":3289},{"style":187},[3290],{"type":69,"value":79},{"type":63,"tag":155,"props":3292,"children":3293},{"style":644},[3294],{"type":69,"value":729},{"type":63,"tag":155,"props":3296,"children":3297},{"style":187},[3298],{"type":69,"value":519},{"type":63,"tag":155,"props":3300,"children":3302},{"class":157,"line":3301},54,[3303,3308],{"type":63,"tag":155,"props":3304,"children":3305},{"style":181},[3306],{"type":69,"value":3307},"    if",{"type":63,"tag":155,"props":3309,"children":3310},{"style":305},[3311],{"type":69,"value":3312}," (\n",{"type":63,"tag":155,"props":3314,"children":3316},{"class":157,"line":3315},55,[3317,3322,3327,3332,3336,3341,3345],{"type":63,"tag":155,"props":3318,"children":3319},{"style":187},[3320],{"type":69,"value":3321},"      typeof",{"type":63,"tag":155,"props":3323,"children":3324},{"style":193},[3325],{"type":69,"value":3326}," data",{"type":63,"tag":155,"props":3328,"children":3329},{"style":187},[3330],{"type":69,"value":3331}," !==",{"type":63,"tag":155,"props":3333,"children":3334},{"style":187},[3335],{"type":69,"value":211},{"type":63,"tag":155,"props":3337,"children":3338},{"style":214},[3339],{"type":69,"value":3340},"object",{"type":63,"tag":155,"props":3342,"children":3343},{"style":187},[3344],{"type":69,"value":416},{"type":63,"tag":155,"props":3346,"children":3347},{"style":187},[3348],{"type":69,"value":3349}," ||\n",{"type":63,"tag":155,"props":3351,"children":3353},{"class":157,"line":3352},56,[3354,3359,3363,3368],{"type":63,"tag":155,"props":3355,"children":3356},{"style":193},[3357],{"type":69,"value":3358},"      data",{"type":63,"tag":155,"props":3360,"children":3361},{"style":187},[3362],{"type":69,"value":1864},{"type":63,"tag":155,"props":3364,"children":3365},{"style":187},[3366],{"type":69,"value":3367}," null",{"type":63,"tag":155,"props":3369,"children":3370},{"style":187},[3371],{"type":69,"value":3349},{"type":63,"tag":155,"props":3373,"children":3375},{"class":157,"line":3374},57,[3376,3381,3385,3389,3394,3398,3403,3407,3411],{"type":63,"tag":155,"props":3377,"children":3378},{"style":187},[3379],{"type":69,"value":3380},"      !",{"type":63,"tag":155,"props":3382,"children":3383},{"style":305},[3384],{"type":69,"value":293},{"type":63,"tag":155,"props":3386,"children":3387},{"style":187},[3388],{"type":69,"value":416},{"type":63,"tag":155,"props":3390,"children":3391},{"style":214},[3392],{"type":69,"value":3393},"email",{"type":63,"tag":155,"props":3395,"children":3396},{"style":187},[3397],{"type":69,"value":416},{"type":63,"tag":155,"props":3399,"children":3400},{"style":187},[3401],{"type":69,"value":3402}," in",{"type":63,"tag":155,"props":3404,"children":3405},{"style":193},[3406],{"type":69,"value":3326},{"type":63,"tag":155,"props":3408,"children":3409},{"style":305},[3410],{"type":69,"value":2369},{"type":63,"tag":155,"props":3412,"children":3413},{"style":187},[3414],{"type":69,"value":3415},"||\n",{"type":63,"tag":155,"props":3417,"children":3419},{"class":157,"line":3418},58,[3420,3424,3428,3432,3436,3440,3444,3449,3453],{"type":63,"tag":155,"props":3421,"children":3422},{"style":187},[3423],{"type":69,"value":3321},{"type":63,"tag":155,"props":3425,"children":3426},{"style":193},[3427],{"type":69,"value":3326},{"type":63,"tag":155,"props":3429,"children":3430},{"style":187},[3431],{"type":69,"value":705},{"type":63,"tag":155,"props":3433,"children":3434},{"style":193},[3435],{"type":69,"value":3393},{"type":63,"tag":155,"props":3437,"children":3438},{"style":187},[3439],{"type":69,"value":3331},{"type":63,"tag":155,"props":3441,"children":3442},{"style":187},[3443],{"type":69,"value":211},{"type":63,"tag":155,"props":3445,"children":3446},{"style":214},[3447],{"type":69,"value":3448},"string",{"type":63,"tag":155,"props":3450,"children":3451},{"style":187},[3452],{"type":69,"value":416},{"type":63,"tag":155,"props":3454,"children":3455},{"style":187},[3456],{"type":69,"value":3349},{"type":63,"tag":155,"props":3458,"children":3460},{"class":157,"line":3459},59,[3461,3465,3469,3473,3477,3482,3486,3490,3494,3498,3503],{"type":63,"tag":155,"props":3462,"children":3463},{"style":193},[3464],{"type":69,"value":3358},{"type":63,"tag":155,"props":3466,"children":3467},{"style":187},[3468],{"type":69,"value":705},{"type":63,"tag":155,"props":3470,"children":3471},{"style":193},[3472],{"type":69,"value":3393},{"type":63,"tag":155,"props":3474,"children":3475},{"style":187},[3476],{"type":69,"value":705},{"type":63,"tag":155,"props":3478,"children":3479},{"style":286},[3480],{"type":69,"value":3481},"trim",{"type":63,"tag":155,"props":3483,"children":3484},{"style":305},[3485],{"type":69,"value":2272},{"type":63,"tag":155,"props":3487,"children":3488},{"style":187},[3489],{"type":69,"value":705},{"type":63,"tag":155,"props":3491,"children":3492},{"style":193},[3493],{"type":69,"value":2354},{"type":63,"tag":155,"props":3495,"children":3496},{"style":187},[3497],{"type":69,"value":1864},{"type":63,"tag":155,"props":3499,"children":3500},{"style":1303},[3501],{"type":69,"value":3502}," 0",{"type":63,"tag":155,"props":3504,"children":3505},{"style":187},[3506],{"type":69,"value":3349},{"type":63,"tag":155,"props":3508,"children":3510},{"class":157,"line":3509},60,[3511,3515,3519,3523,3527,3531,3535,3539,3543],{"type":63,"tag":155,"props":3512,"children":3513},{"style":187},[3514],{"type":69,"value":3380},{"type":63,"tag":155,"props":3516,"children":3517},{"style":305},[3518],{"type":69,"value":293},{"type":63,"tag":155,"props":3520,"children":3521},{"style":187},[3522],{"type":69,"value":416},{"type":63,"tag":155,"props":3524,"children":3525},{"style":214},[3526],{"type":69,"value":2336},{"type":63,"tag":155,"props":3528,"children":3529},{"style":187},[3530],{"type":69,"value":416},{"type":63,"tag":155,"props":3532,"children":3533},{"style":187},[3534],{"type":69,"value":3402},{"type":63,"tag":155,"props":3536,"children":3537},{"style":193},[3538],{"type":69,"value":3326},{"type":63,"tag":155,"props":3540,"children":3541},{"style":305},[3542],{"type":69,"value":2369},{"type":63,"tag":155,"props":3544,"children":3545},{"style":187},[3546],{"type":69,"value":3415},{"type":63,"tag":155,"props":3548,"children":3550},{"class":157,"line":3549},61,[3551,3555,3559,3563,3567,3571,3575,3579,3583],{"type":63,"tag":155,"props":3552,"children":3553},{"style":187},[3554],{"type":69,"value":3321},{"type":63,"tag":155,"props":3556,"children":3557},{"style":193},[3558],{"type":69,"value":3326},{"type":63,"tag":155,"props":3560,"children":3561},{"style":187},[3562],{"type":69,"value":705},{"type":63,"tag":155,"props":3564,"children":3565},{"style":193},[3566],{"type":69,"value":2336},{"type":63,"tag":155,"props":3568,"children":3569},{"style":187},[3570],{"type":69,"value":3331},{"type":63,"tag":155,"props":3572,"children":3573},{"style":187},[3574],{"type":69,"value":211},{"type":63,"tag":155,"props":3576,"children":3577},{"style":214},[3578],{"type":69,"value":3448},{"type":63,"tag":155,"props":3580,"children":3581},{"style":187},[3582],{"type":69,"value":416},{"type":63,"tag":155,"props":3584,"children":3585},{"style":187},[3586],{"type":69,"value":3349},{"type":63,"tag":155,"props":3588,"children":3590},{"class":157,"line":3589},62,[3591,3595,3599,3603,3607,3611,3615],{"type":63,"tag":155,"props":3592,"children":3593},{"style":193},[3594],{"type":69,"value":3358},{"type":63,"tag":155,"props":3596,"children":3597},{"style":187},[3598],{"type":69,"value":705},{"type":63,"tag":155,"props":3600,"children":3601},{"style":193},[3602],{"type":69,"value":2336},{"type":63,"tag":155,"props":3604,"children":3605},{"style":187},[3606],{"type":69,"value":705},{"type":63,"tag":155,"props":3608,"children":3609},{"style":193},[3610],{"type":69,"value":2354},{"type":63,"tag":155,"props":3612,"children":3613},{"style":187},[3614],{"type":69,"value":1864},{"type":63,"tag":155,"props":3616,"children":3617},{"style":1303},[3618],{"type":69,"value":3619}," 0\n",{"type":63,"tag":155,"props":3621,"children":3623},{"class":157,"line":3622},63,[3624,3629],{"type":63,"tag":155,"props":3625,"children":3626},{"style":305},[3627],{"type":69,"value":3628},"    ) ",{"type":63,"tag":155,"props":3630,"children":3631},{"style":187},[3632],{"type":69,"value":298},{"type":63,"tag":155,"props":3634,"children":3636},{"class":157,"line":3635},64,[3637,3642,3646,3650,3654,3658,3663,3667],{"type":63,"tag":155,"props":3638,"children":3639},{"style":181},[3640],{"type":69,"value":3641},"      throw",{"type":63,"tag":155,"props":3643,"children":3644},{"style":187},[3645],{"type":69,"value":2386},{"type":63,"tag":155,"props":3647,"children":3648},{"style":286},[3649],{"type":69,"value":2391},{"type":63,"tag":155,"props":3651,"children":3652},{"style":305},[3653],{"type":69,"value":293},{"type":63,"tag":155,"props":3655,"children":3656},{"style":187},[3657],{"type":69,"value":416},{"type":63,"tag":155,"props":3659,"children":3660},{"style":214},[3661],{"type":69,"value":3662},"Invalid credentials",{"type":63,"tag":155,"props":3664,"children":3665},{"style":187},[3666],{"type":69,"value":416},{"type":63,"tag":155,"props":3668,"children":3669},{"style":305},[3670],{"type":69,"value":336},{"type":63,"tag":155,"props":3672,"children":3674},{"class":157,"line":3673},65,[3675],{"type":63,"tag":155,"props":3676,"children":3677},{"style":187},[3678],{"type":69,"value":3679},"    }\n",{"type":63,"tag":155,"props":3681,"children":3683},{"class":157,"line":3682},66,[3684,3688],{"type":63,"tag":155,"props":3685,"children":3686},{"style":181},[3687],{"type":69,"value":3092},{"type":63,"tag":155,"props":3689,"children":3690},{"style":187},[3691],{"type":69,"value":519},{"type":63,"tag":155,"props":3693,"children":3695},{"class":157,"line":3694},67,[3696,3701,3705,3709,3713,3717,3721,3725,3729,3733,3738,3742],{"type":63,"tag":155,"props":3697,"children":3698},{"style":305},[3699],{"type":69,"value":3700},"      email",{"type":63,"tag":155,"props":3702,"children":3703},{"style":187},[3704],{"type":69,"value":313},{"type":63,"tag":155,"props":3706,"children":3707},{"style":193},[3708],{"type":69,"value":3326},{"type":63,"tag":155,"props":3710,"children":3711},{"style":187},[3712],{"type":69,"value":705},{"type":63,"tag":155,"props":3714,"children":3715},{"style":193},[3716],{"type":69,"value":3393},{"type":63,"tag":155,"props":3718,"children":3719},{"style":187},[3720],{"type":69,"value":705},{"type":63,"tag":155,"props":3722,"children":3723},{"style":286},[3724],{"type":69,"value":3481},{"type":63,"tag":155,"props":3726,"children":3727},{"style":305},[3728],{"type":69,"value":2272},{"type":63,"tag":155,"props":3730,"children":3731},{"style":187},[3732],{"type":69,"value":705},{"type":63,"tag":155,"props":3734,"children":3735},{"style":286},[3736],{"type":69,"value":3737},"toLowerCase",{"type":63,"tag":155,"props":3739,"children":3740},{"style":305},[3741],{"type":69,"value":2272},{"type":63,"tag":155,"props":3743,"children":3744},{"style":187},[3745],{"type":69,"value":322},{"type":63,"tag":155,"props":3747,"children":3749},{"class":157,"line":3748},68,[3750,3755,3759,3763,3767,3771],{"type":63,"tag":155,"props":3751,"children":3752},{"style":305},[3753],{"type":69,"value":3754},"      password",{"type":63,"tag":155,"props":3756,"children":3757},{"style":187},[3758],{"type":69,"value":313},{"type":63,"tag":155,"props":3760,"children":3761},{"style":193},[3762],{"type":69,"value":3326},{"type":63,"tag":155,"props":3764,"children":3765},{"style":187},[3766],{"type":69,"value":705},{"type":63,"tag":155,"props":3768,"children":3769},{"style":193},[3770],{"type":69,"value":2336},{"type":63,"tag":155,"props":3772,"children":3773},{"style":187},[3774],{"type":69,"value":322},{"type":63,"tag":155,"props":3776,"children":3778},{"class":157,"line":3777},69,[3779],{"type":63,"tag":155,"props":3780,"children":3781},{"style":187},[3782],{"type":69,"value":3679},{"type":63,"tag":155,"props":3784,"children":3786},{"class":157,"line":3785},70,[3787,3791],{"type":63,"tag":155,"props":3788,"children":3789},{"style":187},[3790],{"type":69,"value":2000},{"type":63,"tag":155,"props":3792,"children":3793},{"style":193},[3794],{"type":69,"value":336},{"type":63,"tag":155,"props":3796,"children":3798},{"class":157,"line":3797},71,[3799,3803,3807,3811,3815,3820,3824,3829,3833],{"type":63,"tag":155,"props":3800,"children":3801},{"style":187},[3802],{"type":69,"value":3259},{"type":63,"tag":155,"props":3804,"children":3805},{"style":286},[3806],{"type":69,"value":710},{"type":63,"tag":155,"props":3808,"children":3809},{"style":193},[3810],{"type":69,"value":293},{"type":63,"tag":155,"props":3812,"children":3813},{"style":644},[3814],{"type":69,"value":719},{"type":63,"tag":155,"props":3816,"children":3817},{"style":187},[3818],{"type":69,"value":3819}," ({",{"type":63,"tag":155,"props":3821,"children":3822},{"style":3275},[3823],{"type":69,"value":3326},{"type":63,"tag":155,"props":3825,"children":3826},{"style":187},[3827],{"type":69,"value":3828}," })",{"type":63,"tag":155,"props":3830,"children":3831},{"style":644},[3832],{"type":69,"value":729},{"type":63,"tag":155,"props":3834,"children":3835},{"style":187},[3836],{"type":69,"value":519},{"type":63,"tag":155,"props":3838,"children":3840},{"class":157,"line":3839},72,[3841,3846,3851,3855,3859,3863,3867,3871,3875,3880,3884,3888,3892,3896],{"type":63,"tag":155,"props":3842,"children":3843},{"style":644},[3844],{"type":69,"value":3845},"    const",{"type":63,"tag":155,"props":3847,"children":3848},{"style":193},[3849],{"type":69,"value":3850}," user",{"type":63,"tag":155,"props":3852,"children":3853},{"style":187},[3854],{"type":69,"value":752},{"type":63,"tag":155,"props":3856,"children":3857},{"style":181},[3858],{"type":69,"value":3002},{"type":63,"tag":155,"props":3860,"children":3861},{"style":193},[3862],{"type":69,"value":3118},{"type":63,"tag":155,"props":3864,"children":3865},{"style":187},[3866],{"type":69,"value":705},{"type":63,"tag":155,"props":3868,"children":3869},{"style":193},[3870],{"type":69,"value":3127},{"type":63,"tag":155,"props":3872,"children":3873},{"style":187},[3874],{"type":69,"value":705},{"type":63,"tag":155,"props":3876,"children":3877},{"style":286},[3878],{"type":69,"value":3879},"findByEmail",{"type":63,"tag":155,"props":3881,"children":3882},{"style":305},[3883],{"type":69,"value":293},{"type":63,"tag":155,"props":3885,"children":3886},{"style":193},[3887],{"type":69,"value":3066},{"type":63,"tag":155,"props":3889,"children":3890},{"style":187},[3891],{"type":69,"value":705},{"type":63,"tag":155,"props":3893,"children":3894},{"style":193},[3895],{"type":69,"value":3393},{"type":63,"tag":155,"props":3897,"children":3898},{"style":305},[3899],{"type":69,"value":336},{"type":63,"tag":155,"props":3901,"children":3903},{"class":157,"line":3902},73,[3904,3908,3913,3917,3921,3926,3931,3936,3940],{"type":63,"tag":155,"props":3905,"children":3906},{"style":644},[3907],{"type":69,"value":3845},{"type":63,"tag":155,"props":3909,"children":3910},{"style":193},[3911],{"type":69,"value":3912}," passwordHash",{"type":63,"tag":155,"props":3914,"children":3915},{"style":187},[3916],{"type":69,"value":752},{"type":63,"tag":155,"props":3918,"children":3919},{"style":193},[3920],{"type":69,"value":3850},{"type":63,"tag":155,"props":3922,"children":3923},{"style":187},[3924],{"type":69,"value":3925},"?.",{"type":63,"tag":155,"props":3927,"children":3928},{"style":193},[3929],{"type":69,"value":3930},"passwordHash",{"type":63,"tag":155,"props":3932,"children":3933},{"style":187},[3934],{"type":69,"value":3935}," ??",{"type":63,"tag":155,"props":3937,"children":3938},{"style":286},[3939],{"type":69,"value":2728},{"type":63,"tag":155,"props":3941,"children":3942},{"style":305},[3943],{"type":69,"value":762},{"type":63,"tag":155,"props":3945,"children":3947},{"class":157,"line":3946},74,[3948,3952,3957,3961,3965,3970,3974,3978,3982,3986,3990,3994],{"type":63,"tag":155,"props":3949,"children":3950},{"style":644},[3951],{"type":69,"value":3845},{"type":63,"tag":155,"props":3953,"children":3954},{"style":193},[3955],{"type":69,"value":3956}," passwordMatches",{"type":63,"tag":155,"props":3958,"children":3959},{"style":187},[3960],{"type":69,"value":752},{"type":63,"tag":155,"props":3962,"children":3963},{"style":181},[3964],{"type":69,"value":3002},{"type":63,"tag":155,"props":3966,"children":3967},{"style":286},[3968],{"type":69,"value":3969}," verifyPassword",{"type":63,"tag":155,"props":3971,"children":3972},{"style":305},[3973],{"type":69,"value":293},{"type":63,"tag":155,"props":3975,"children":3976},{"style":193},[3977],{"type":69,"value":3066},{"type":63,"tag":155,"props":3979,"children":3980},{"style":187},[3981],{"type":69,"value":705},{"type":63,"tag":155,"props":3983,"children":3984},{"style":193},[3985],{"type":69,"value":2336},{"type":63,"tag":155,"props":3987,"children":3988},{"style":187},[3989],{"type":69,"value":992},{"type":63,"tag":155,"props":3991,"children":3992},{"style":193},[3993],{"type":69,"value":3912},{"type":63,"tag":155,"props":3995,"children":3996},{"style":305},[3997],{"type":69,"value":336},{"type":63,"tag":155,"props":3999,"children":4001},{"class":157,"line":4000},75,[4002,4006,4010,4014,4019,4023,4028,4033,4037],{"type":63,"tag":155,"props":4003,"children":4004},{"style":181},[4005],{"type":69,"value":3307},{"type":63,"tag":155,"props":4007,"children":4008},{"style":305},[4009],{"type":69,"value":2326},{"type":63,"tag":155,"props":4011,"children":4012},{"style":187},[4013],{"type":69,"value":2331},{"type":63,"tag":155,"props":4015,"children":4016},{"style":193},[4017],{"type":69,"value":4018},"user",{"type":63,"tag":155,"props":4020,"children":4021},{"style":187},[4022],{"type":69,"value":2341},{"type":63,"tag":155,"props":4024,"children":4025},{"style":187},[4026],{"type":69,"value":4027}," !",{"type":63,"tag":155,"props":4029,"children":4030},{"style":193},[4031],{"type":69,"value":4032},"passwordMatches",{"type":63,"tag":155,"props":4034,"children":4035},{"style":305},[4036],{"type":69,"value":2369},{"type":63,"tag":155,"props":4038,"children":4039},{"style":187},[4040],{"type":69,"value":298},{"type":63,"tag":155,"props":4042,"children":4044},{"class":157,"line":4043},76,[4045,4049,4053,4057,4061,4065,4069,4073],{"type":63,"tag":155,"props":4046,"children":4047},{"style":181},[4048],{"type":69,"value":3641},{"type":63,"tag":155,"props":4050,"children":4051},{"style":187},[4052],{"type":69,"value":2386},{"type":63,"tag":155,"props":4054,"children":4055},{"style":286},[4056],{"type":69,"value":2391},{"type":63,"tag":155,"props":4058,"children":4059},{"style":305},[4060],{"type":69,"value":293},{"type":63,"tag":155,"props":4062,"children":4063},{"style":187},[4064],{"type":69,"value":416},{"type":63,"tag":155,"props":4066,"children":4067},{"style":214},[4068],{"type":69,"value":3662},{"type":63,"tag":155,"props":4070,"children":4071},{"style":187},[4072],{"type":69,"value":416},{"type":63,"tag":155,"props":4074,"children":4075},{"style":305},[4076],{"type":69,"value":336},{"type":63,"tag":155,"props":4078,"children":4080},{"class":157,"line":4079},77,[4081],{"type":63,"tag":155,"props":4082,"children":4083},{"style":187},[4084],{"type":69,"value":3679},{"type":63,"tag":155,"props":4086,"children":4088},{"class":157,"line":4087},78,[4089],{"type":63,"tag":155,"props":4090,"children":4091},{"emptyLinePlaceholder":266},[4092],{"type":69,"value":269},{"type":63,"tag":155,"props":4094,"children":4096},{"class":157,"line":4095},79,[4097,4102,4107,4111,4115,4119,4123,4127,4131,4135],{"type":63,"tag":155,"props":4098,"children":4099},{"style":181},[4100],{"type":69,"value":4101},"    await",{"type":63,"tag":155,"props":4103,"children":4104},{"style":286},[4105],{"type":69,"value":4106}," updateSession",{"type":63,"tag":155,"props":4108,"children":4109},{"style":187},[4110],{"type":69,"value":3012},{"type":63,"tag":155,"props":4112,"children":4113},{"style":2210},[4114],{"type":69,"value":3017},{"type":63,"tag":155,"props":4116,"children":4117},{"style":187},[4118],{"type":69,"value":3022},{"type":63,"tag":155,"props":4120,"children":4121},{"style":305},[4122],{"type":69,"value":293},{"type":63,"tag":155,"props":4124,"children":4125},{"style":286},[4126],{"type":69,"value":3031},{"type":63,"tag":155,"props":4128,"children":4129},{"style":305},[4130],{"type":69,"value":2272},{"type":63,"tag":155,"props":4132,"children":4133},{"style":187},[4134],{"type":69,"value":992},{"type":63,"tag":155,"props":4136,"children":4137},{"style":187},[4138],{"type":69,"value":519},{"type":63,"tag":155,"props":4140,"children":4142},{"class":157,"line":4141},80,[4143,4148,4152,4156,4160,4165],{"type":63,"tag":155,"props":4144,"children":4145},{"style":305},[4146],{"type":69,"value":4147},"      userId",{"type":63,"tag":155,"props":4149,"children":4150},{"style":187},[4151],{"type":69,"value":313},{"type":63,"tag":155,"props":4153,"children":4154},{"style":193},[4155],{"type":69,"value":3850},{"type":63,"tag":155,"props":4157,"children":4158},{"style":187},[4159],{"type":69,"value":705},{"type":63,"tag":155,"props":4161,"children":4162},{"style":193},[4163],{"type":69,"value":4164},"id",{"type":63,"tag":155,"props":4166,"children":4167},{"style":187},[4168],{"type":69,"value":322},{"type":63,"tag":155,"props":4170,"children":4172},{"class":157,"line":4171},81,[4173,4178],{"type":63,"tag":155,"props":4174,"children":4175},{"style":187},[4176],{"type":69,"value":4177},"    }",{"type":63,"tag":155,"props":4179,"children":4180},{"style":305},[4181],{"type":69,"value":336},{"type":63,"tag":155,"props":4183,"children":4185},{"class":157,"line":4184},82,[4186,4190,4194,4199,4203,4207],{"type":63,"tag":155,"props":4187,"children":4188},{"style":181},[4189],{"type":69,"value":3092},{"type":63,"tag":155,"props":4191,"children":4192},{"style":187},[4193],{"type":69,"value":190},{"type":63,"tag":155,"props":4195,"children":4196},{"style":305},[4197],{"type":69,"value":4198}," success",{"type":63,"tag":155,"props":4200,"children":4201},{"style":187},[4202],{"type":69,"value":313},{"type":63,"tag":155,"props":4204,"children":4205},{"style":873},[4206],{"type":69,"value":876},{"type":63,"tag":155,"props":4208,"children":4209},{"style":187},[4210],{"type":69,"value":1001},{"type":63,"tag":155,"props":4212,"children":4214},{"class":157,"line":4213},83,[4215,4219],{"type":63,"tag":155,"props":4216,"children":4217},{"style":187},[4218],{"type":69,"value":2000},{"type":63,"tag":155,"props":4220,"children":4221},{"style":193},[4222],{"type":69,"value":336},{"type":63,"tag":155,"props":4224,"children":4226},{"class":157,"line":4225},84,[4227],{"type":63,"tag":155,"props":4228,"children":4229},{"emptyLinePlaceholder":266},[4230],{"type":69,"value":269},{"type":63,"tag":155,"props":4232,"children":4234},{"class":157,"line":4233},85,[4235],{"type":63,"tag":155,"props":4236,"children":4237},{"style":162},[4238],{"type":69,"value":4239},"\u002F\u002F Clear session\n",{"type":63,"tag":155,"props":4241,"children":4243},{"class":157,"line":4242},86,[4244,4248,4253,4257,4261,4265,4269,4273,4277,4281,4285,4289,4293,4297,4301,4305,4309,4313,4317,4321],{"type":63,"tag":155,"props":4245,"children":4246},{"style":644},[4247],{"type":69,"value":647},{"type":63,"tag":155,"props":4249,"children":4250},{"style":193},[4251],{"type":69,"value":4252}," logout ",{"type":63,"tag":155,"props":4254,"children":4255},{"style":187},[4256],{"type":69,"value":657},{"type":63,"tag":155,"props":4258,"children":4259},{"style":286},[4260],{"type":69,"value":486},{"type":63,"tag":155,"props":4262,"children":4263},{"style":193},[4264],{"type":69,"value":293},{"type":63,"tag":155,"props":4266,"children":4267},{"style":187},[4268],{"type":69,"value":670},{"type":63,"tag":155,"props":4270,"children":4271},{"style":305},[4272],{"type":69,"value":675},{"type":63,"tag":155,"props":4274,"children":4275},{"style":187},[4276],{"type":69,"value":313},{"type":63,"tag":155,"props":4278,"children":4279},{"style":187},[4280],{"type":69,"value":211},{"type":63,"tag":155,"props":4282,"children":4283},{"style":214},[4284],{"type":69,"value":1249},{"type":63,"tag":155,"props":4286,"children":4287},{"style":187},[4288],{"type":69,"value":416},{"type":63,"tag":155,"props":4290,"children":4291},{"style":187},[4292],{"type":69,"value":201},{"type":63,"tag":155,"props":4294,"children":4295},{"style":193},[4296],{"type":69,"value":79},{"type":63,"tag":155,"props":4298,"children":4299},{"style":187},[4300],{"type":69,"value":705},{"type":63,"tag":155,"props":4302,"children":4303},{"style":286},[4304],{"type":69,"value":710},{"type":63,"tag":155,"props":4306,"children":4307},{"style":193},[4308],{"type":69,"value":293},{"type":63,"tag":155,"props":4310,"children":4311},{"style":644},[4312],{"type":69,"value":719},{"type":63,"tag":155,"props":4314,"children":4315},{"style":187},[4316],{"type":69,"value":724},{"type":63,"tag":155,"props":4318,"children":4319},{"style":644},[4320],{"type":69,"value":729},{"type":63,"tag":155,"props":4322,"children":4323},{"style":187},[4324],{"type":69,"value":519},{"type":63,"tag":155,"props":4326,"children":4328},{"class":157,"line":4327},87,[4329,4334,4339,4343,4347],{"type":63,"tag":155,"props":4330,"children":4331},{"style":181},[4332],{"type":69,"value":4333},"  await",{"type":63,"tag":155,"props":4335,"children":4336},{"style":286},[4337],{"type":69,"value":4338}," clearSession",{"type":63,"tag":155,"props":4340,"children":4341},{"style":305},[4342],{"type":69,"value":293},{"type":63,"tag":155,"props":4344,"children":4345},{"style":286},[4346],{"type":69,"value":3031},{"type":63,"tag":155,"props":4348,"children":4349},{"style":305},[4350],{"type":69,"value":3036},{"type":63,"tag":155,"props":4352,"children":4354},{"class":157,"line":4353},88,[4355,4359,4363,4367,4371,4375],{"type":63,"tag":155,"props":4356,"children":4357},{"style":181},[4358],{"type":69,"value":979},{"type":63,"tag":155,"props":4360,"children":4361},{"style":187},[4362],{"type":69,"value":190},{"type":63,"tag":155,"props":4364,"children":4365},{"style":305},[4366],{"type":69,"value":4198},{"type":63,"tag":155,"props":4368,"children":4369},{"style":187},[4370],{"type":69,"value":313},{"type":63,"tag":155,"props":4372,"children":4373},{"style":873},[4374],{"type":69,"value":876},{"type":63,"tag":155,"props":4376,"children":4377},{"style":187},[4378],{"type":69,"value":1001},{"type":63,"tag":155,"props":4380,"children":4382},{"class":157,"line":4381},89,[4383,4387],{"type":63,"tag":155,"props":4384,"children":4385},{"style":187},[4386],{"type":69,"value":331},{"type":63,"tag":155,"props":4388,"children":4389},{"style":193},[4390],{"type":69,"value":336},{"type":63,"tag":451,"props":4392,"children":4394},{"id":4393},"session-config",[4395],{"type":69,"value":4396},"Session Config",{"type":63,"tag":4398,"props":4399,"children":4400},"table",{},[4401,4430],{"type":63,"tag":4402,"props":4403,"children":4404},"thead",{},[4405],{"type":63,"tag":4406,"props":4407,"children":4408},"tr",{},[4409,4415,4420,4425],{"type":63,"tag":4410,"props":4411,"children":4412},"th",{},[4413],{"type":69,"value":4414},"Option",{"type":63,"tag":4410,"props":4416,"children":4417},{},[4418],{"type":69,"value":4419},"Type",{"type":63,"tag":4410,"props":4421,"children":4422},{},[4423],{"type":69,"value":4424},"Default",{"type":63,"tag":4410,"props":4426,"children":4427},{},[4428],{"type":69,"value":4429},"Description",{"type":63,"tag":4431,"props":4432,"children":4433},"tbody",{},[4434,4464,4498,4533],{"type":63,"tag":4406,"props":4435,"children":4436},{},[4437,4446,4454,4459],{"type":63,"tag":4438,"props":4439,"children":4440},"td",{},[4441],{"type":63,"tag":72,"props":4442,"children":4444},{"className":4443},[],[4445],{"type":69,"value":2336},{"type":63,"tag":4438,"props":4447,"children":4448},{},[4449],{"type":63,"tag":72,"props":4450,"children":4452},{"className":4451},[],[4453],{"type":69,"value":3448},{"type":63,"tag":4438,"props":4455,"children":4456},{},[4457],{"type":69,"value":4458},"required",{"type":63,"tag":4438,"props":4460,"children":4461},{},[4462],{"type":69,"value":4463},"Encryption key",{"type":63,"tag":4406,"props":4465,"children":4466},{},[4467,4476,4484,4493],{"type":63,"tag":4438,"props":4468,"children":4469},{},[4470],{"type":63,"tag":72,"props":4471,"children":4473},{"className":4472},[],[4474],{"type":69,"value":4475},"name",{"type":63,"tag":4438,"props":4477,"children":4478},{},[4479],{"type":63,"tag":72,"props":4480,"children":4482},{"className":4481},[],[4483],{"type":69,"value":3448},{"type":63,"tag":4438,"props":4485,"children":4486},{},[4487],{"type":63,"tag":72,"props":4488,"children":4490},{"className":4489},[],[4491],{"type":69,"value":4492},"'start'",{"type":63,"tag":4438,"props":4494,"children":4495},{},[4496],{"type":69,"value":4497},"Cookie name",{"type":63,"tag":4406,"props":4499,"children":4500},{},[4501,4510,4519,4528],{"type":63,"tag":4438,"props":4502,"children":4503},{},[4504],{"type":63,"tag":72,"props":4505,"children":4507},{"className":4506},[],[4508],{"type":69,"value":4509},"maxAge",{"type":63,"tag":4438,"props":4511,"children":4512},{},[4513],{"type":63,"tag":72,"props":4514,"children":4516},{"className":4515},[],[4517],{"type":69,"value":4518},"number",{"type":63,"tag":4438,"props":4520,"children":4521},{},[4522],{"type":63,"tag":72,"props":4523,"children":4525},{"className":4524},[],[4526],{"type":69,"value":4527},"undefined",{"type":63,"tag":4438,"props":4529,"children":4530},{},[4531],{"type":69,"value":4532},"Expiry in seconds",{"type":63,"tag":4406,"props":4534,"children":4535},{},[4536,4545,4554,4562],{"type":63,"tag":4438,"props":4537,"children":4538},{},[4539],{"type":63,"tag":72,"props":4540,"children":4542},{"className":4541},[],[4543],{"type":69,"value":4544},"cookie",{"type":63,"tag":4438,"props":4546,"children":4547},{},[4548],{"type":63,"tag":72,"props":4549,"children":4551},{"className":4550},[],[4552],{"type":69,"value":4553},"false | CookieOptions",{"type":63,"tag":4438,"props":4555,"children":4556},{},[4557],{"type":63,"tag":72,"props":4558,"children":4560},{"className":4559},[],[4561],{"type":69,"value":4527},{"type":63,"tag":4438,"props":4563,"children":4564},{},[4565],{"type":69,"value":4566},"Cookie settings",{"type":63,"tag":451,"props":4568,"children":4570},{"id":4569},"session-manager-methods",[4571],{"type":69,"value":4572},"Session Manager Methods",{"type":63,"tag":144,"props":4574,"children":4576},{"className":146,"code":4575,"language":148,"meta":149,"style":149},"const session = await useSession\u003C{ userId: string }>(config)\n\nsession.id \u002F\u002F Session ID (string | undefined)\nsession.data \u002F\u002F Session data (typed)\nawait session.update({ userId: '123' }) \u002F\u002F Persist session data\nawait session.clear() \u002F\u002F Clear session data\n",[4577],{"type":63,"tag":72,"props":4578,"children":4579},{"__ignoreMap":149},[4580,4633,4640,4661,4682,4745],{"type":63,"tag":155,"props":4581,"children":4582},{"class":157,"line":158},[4583,4587,4592,4596,4600,4604,4609,4614,4618,4623,4628],{"type":63,"tag":155,"props":4584,"children":4585},{"style":644},[4586],{"type":69,"value":647},{"type":63,"tag":155,"props":4588,"children":4589},{"style":193},[4590],{"type":69,"value":4591}," session ",{"type":63,"tag":155,"props":4593,"children":4594},{"style":187},[4595],{"type":69,"value":657},{"type":63,"tag":155,"props":4597,"children":4598},{"style":181},[4599],{"type":69,"value":3002},{"type":63,"tag":155,"props":4601,"children":4602},{"style":286},[4603],{"type":69,"value":3007},{"type":63,"tag":155,"props":4605,"children":4606},{"style":187},[4607],{"type":69,"value":4608},"\u003C{",{"type":63,"tag":155,"props":4610,"children":4611},{"style":305},[4612],{"type":69,"value":4613}," userId",{"type":63,"tag":155,"props":4615,"children":4616},{"style":187},[4617],{"type":69,"value":313},{"type":63,"tag":155,"props":4619,"children":4620},{"style":2210},[4621],{"type":69,"value":4622}," string",{"type":63,"tag":155,"props":4624,"children":4625},{"style":187},[4626],{"type":69,"value":4627}," }>",{"type":63,"tag":155,"props":4629,"children":4630},{"style":193},[4631],{"type":69,"value":4632},"(config)\n",{"type":63,"tag":155,"props":4634,"children":4635},{"class":157,"line":168},[4636],{"type":63,"tag":155,"props":4637,"children":4638},{"emptyLinePlaceholder":266},[4639],{"type":69,"value":269},{"type":63,"tag":155,"props":4641,"children":4642},{"class":157,"line":177},[4643,4647,4651,4656],{"type":63,"tag":155,"props":4644,"children":4645},{"style":193},[4646],{"type":69,"value":3057},{"type":63,"tag":155,"props":4648,"children":4649},{"style":187},[4650],{"type":69,"value":705},{"type":63,"tag":155,"props":4652,"children":4653},{"style":193},[4654],{"type":69,"value":4655},"id ",{"type":63,"tag":155,"props":4657,"children":4658},{"style":162},[4659],{"type":69,"value":4660},"\u002F\u002F Session ID (string | undefined)\n",{"type":63,"tag":155,"props":4662,"children":4663},{"class":157,"line":225},[4664,4668,4672,4677],{"type":63,"tag":155,"props":4665,"children":4666},{"style":193},[4667],{"type":69,"value":3057},{"type":63,"tag":155,"props":4669,"children":4670},{"style":187},[4671],{"type":69,"value":705},{"type":63,"tag":155,"props":4673,"children":4674},{"style":193},[4675],{"type":69,"value":4676},"data ",{"type":63,"tag":155,"props":4678,"children":4679},{"style":162},[4680],{"type":69,"value":4681},"\u002F\u002F Session data (typed)\n",{"type":63,"tag":155,"props":4683,"children":4684},{"class":157,"line":262},[4685,4690,4694,4698,4703,4707,4711,4715,4719,4723,4728,4732,4736,4740],{"type":63,"tag":155,"props":4686,"children":4687},{"style":181},[4688],{"type":69,"value":4689},"await",{"type":63,"tag":155,"props":4691,"children":4692},{"style":193},[4693],{"type":69,"value":2993},{"type":63,"tag":155,"props":4695,"children":4696},{"style":187},[4697],{"type":69,"value":705},{"type":63,"tag":155,"props":4699,"children":4700},{"style":286},[4701],{"type":69,"value":4702},"update",{"type":63,"tag":155,"props":4704,"children":4705},{"style":193},[4706],{"type":69,"value":293},{"type":63,"tag":155,"props":4708,"children":4709},{"style":187},[4710],{"type":69,"value":670},{"type":63,"tag":155,"props":4712,"children":4713},{"style":305},[4714],{"type":69,"value":4613},{"type":63,"tag":155,"props":4716,"children":4717},{"style":187},[4718],{"type":69,"value":313},{"type":63,"tag":155,"props":4720,"children":4721},{"style":187},[4722],{"type":69,"value":211},{"type":63,"tag":155,"props":4724,"children":4725},{"style":214},[4726],{"type":69,"value":4727},"123",{"type":63,"tag":155,"props":4729,"children":4730},{"style":187},[4731],{"type":69,"value":416},{"type":63,"tag":155,"props":4733,"children":4734},{"style":187},[4735],{"type":69,"value":201},{"type":63,"tag":155,"props":4737,"children":4738},{"style":193},[4739],{"type":69,"value":2369},{"type":63,"tag":155,"props":4741,"children":4742},{"style":162},[4743],{"type":69,"value":4744},"\u002F\u002F Persist session data\n",{"type":63,"tag":155,"props":4746,"children":4747},{"class":157,"line":272},[4748,4752,4756,4760,4765,4770],{"type":63,"tag":155,"props":4749,"children":4750},{"style":181},[4751],{"type":69,"value":4689},{"type":63,"tag":155,"props":4753,"children":4754},{"style":193},[4755],{"type":69,"value":2993},{"type":63,"tag":155,"props":4757,"children":4758},{"style":187},[4759],{"type":69,"value":705},{"type":63,"tag":155,"props":4761,"children":4762},{"style":286},[4763],{"type":69,"value":4764},"clear",{"type":63,"tag":155,"props":4766,"children":4767},{"style":193},[4768],{"type":69,"value":4769},"() ",{"type":63,"tag":155,"props":4771,"children":4772},{"style":162},[4773],{"type":69,"value":4774},"\u002F\u002F Clear session data\n",{"type":63,"tag":451,"props":4776,"children":4778},{"id":4777},"production-session-rules",[4779],{"type":69,"value":4780},"Production Session Rules",{"type":63,"tag":4782,"props":4783,"children":4784},"ul",{},[4785,4791,4796,4801,4866],{"type":63,"tag":4786,"props":4787,"children":4788},"li",{},[4789],{"type":69,"value":4790},"Keep cookie session data small and non-sensitive. Store a stable session or user ID, then load current permissions and account state from the authoritative store on each protected request.",{"type":63,"tag":4786,"props":4792,"children":4793},{},[4794],{"type":69,"value":4795},"Use a server-side session record when you need revocation, device tracking, large data, or immediate role changes. Put only its opaque ID in the cookie.",{"type":63,"tag":4786,"props":4797,"children":4798},{},[4799],{"type":69,"value":4800},"Rotate the session after login, privilege changes, password changes, and logout.",{"type":63,"tag":4786,"props":4802,"children":4803},{},[4804,4806,4812,4814,4820,4821,4827,4829,4835,4837,4843,4845,4850,4852,4858,4859,4864],{"type":69,"value":4805},"Use ",{"type":63,"tag":72,"props":4807,"children":4809},{"className":4808},[],[4810],{"type":69,"value":4811},"HttpOnly",{"type":69,"value":4813},", ",{"type":63,"tag":72,"props":4815,"children":4817},{"className":4816},[],[4818],{"type":69,"value":4819},"SameSite",{"type":69,"value":4813},{"type":63,"tag":72,"props":4822,"children":4824},{"className":4823},[],[4825],{"type":69,"value":4826},"Path=\u002F",{"type":69,"value":4828},", and ",{"type":63,"tag":72,"props":4830,"children":4832},{"className":4831},[],[4833],{"type":69,"value":4834},"Secure",{"type":69,"value":4836}," in production. Use a ",{"type":63,"tag":72,"props":4838,"children":4840},{"className":4839},[],[4841],{"type":69,"value":4842},"__Host-",{"type":69,"value":4844}," cookie name in production only when ",{"type":63,"tag":72,"props":4846,"children":4848},{"className":4847},[],[4849],{"type":69,"value":4834},{"type":69,"value":4851},", no ",{"type":63,"tag":72,"props":4853,"children":4855},{"className":4854},[],[4856],{"type":69,"value":4857},"Domain",{"type":69,"value":4828},{"type":63,"tag":72,"props":4860,"children":4862},{"className":4861},[],[4863],{"type":69,"value":4826},{"type":69,"value":4865}," are all enforced.",{"type":63,"tag":4786,"props":4867,"children":4868},{},[4869],{"type":69,"value":4870},"Use the same cookie name and path when clearing a session. Test login, authenticated refresh, expiry, logout, and a replay of the old cookie.",{"type":63,"tag":128,"props":4872,"children":4874},{"id":4873},"query-validation",[4875],{"type":69,"value":4876},"Query Validation",{"type":63,"tag":81,"props":4878,"children":4879},{},[4880],{"type":69,"value":4881},"Validate query string parameters using a Standard Schema:",{"type":63,"tag":144,"props":4883,"children":4885},{"className":146,"code":4884,"language":148,"meta":149,"style":149},"\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { getValidatedQuery } from '@tanstack\u002Freact-start\u002Fserver'\nimport { z } from 'zod'\n\nconst serverFn = createServerFn({ method: 'GET' }).handler(async () => {\n  const query = await getValidatedQuery(\n    z.object({\n      page: z.coerce.number().default(1),\n      limit: z.coerce.number().default(20),\n    }),\n  )\n\n  return { page: query.page }\n})\n",[4886],{"type":63,"tag":72,"props":4887,"children":4888},{"__ignoreMap":149},[4889,4896,4932,4969,4976,5059,5088,5112,5175,5236,5251,5259,5266,5303],{"type":63,"tag":155,"props":4890,"children":4891},{"class":157,"line":158},[4892],{"type":63,"tag":155,"props":4893,"children":4894},{"style":162},[4895],{"type":69,"value":174},{"type":63,"tag":155,"props":4897,"children":4898},{"class":157,"line":168},[4899,4903,4907,4912,4916,4920,4924,4928],{"type":63,"tag":155,"props":4900,"children":4901},{"style":181},[4902],{"type":69,"value":184},{"type":63,"tag":155,"props":4904,"children":4905},{"style":187},[4906],{"type":69,"value":190},{"type":63,"tag":155,"props":4908,"children":4909},{"style":193},[4910],{"type":69,"value":4911}," getValidatedQuery",{"type":63,"tag":155,"props":4913,"children":4914},{"style":187},[4915],{"type":69,"value":201},{"type":63,"tag":155,"props":4917,"children":4918},{"style":181},[4919],{"type":69,"value":206},{"type":63,"tag":155,"props":4921,"children":4922},{"style":187},[4923],{"type":69,"value":211},{"type":63,"tag":155,"props":4925,"children":4926},{"style":214},[4927],{"type":69,"value":217},{"type":63,"tag":155,"props":4929,"children":4930},{"style":187},[4931],{"type":69,"value":222},{"type":63,"tag":155,"props":4933,"children":4934},{"class":157,"line":177},[4935,4939,4943,4948,4952,4956,4960,4965],{"type":63,"tag":155,"props":4936,"children":4937},{"style":181},[4938],{"type":69,"value":184},{"type":63,"tag":155,"props":4940,"children":4941},{"style":187},[4942],{"type":69,"value":190},{"type":63,"tag":155,"props":4944,"children":4945},{"style":193},[4946],{"type":69,"value":4947}," z",{"type":63,"tag":155,"props":4949,"children":4950},{"style":187},[4951],{"type":69,"value":201},{"type":63,"tag":155,"props":4953,"children":4954},{"style":181},[4955],{"type":69,"value":206},{"type":63,"tag":155,"props":4957,"children":4958},{"style":187},[4959],{"type":69,"value":211},{"type":63,"tag":155,"props":4961,"children":4962},{"style":214},[4963],{"type":69,"value":4964},"zod",{"type":63,"tag":155,"props":4966,"children":4967},{"style":187},[4968],{"type":69,"value":222},{"type":63,"tag":155,"props":4970,"children":4971},{"class":157,"line":225},[4972],{"type":63,"tag":155,"props":4973,"children":4974},{"emptyLinePlaceholder":266},[4975],{"type":69,"value":269},{"type":63,"tag":155,"props":4977,"children":4978},{"class":157,"line":262},[4979,4983,4987,4991,4995,4999,5003,5007,5011,5015,5019,5023,5027,5031,5035,5039,5043,5047,5051,5055],{"type":63,"tag":155,"props":4980,"children":4981},{"style":644},[4982],{"type":69,"value":647},{"type":63,"tag":155,"props":4984,"children":4985},{"style":193},[4986],{"type":69,"value":652},{"type":63,"tag":155,"props":4988,"children":4989},{"style":187},[4990],{"type":69,"value":657},{"type":63,"tag":155,"props":4992,"children":4993},{"style":286},[4994],{"type":69,"value":486},{"type":63,"tag":155,"props":4996,"children":4997},{"style":193},[4998],{"type":69,"value":293},{"type":63,"tag":155,"props":5000,"children":5001},{"style":187},[5002],{"type":69,"value":670},{"type":63,"tag":155,"props":5004,"children":5005},{"style":305},[5006],{"type":69,"value":675},{"type":63,"tag":155,"props":5008,"children":5009},{"style":187},[5010],{"type":69,"value":313},{"type":63,"tag":155,"props":5012,"children":5013},{"style":187},[5014],{"type":69,"value":211},{"type":63,"tag":155,"props":5016,"children":5017},{"style":214},[5018],{"type":69,"value":688},{"type":63,"tag":155,"props":5020,"children":5021},{"style":187},[5022],{"type":69,"value":416},{"type":63,"tag":155,"props":5024,"children":5025},{"style":187},[5026],{"type":69,"value":201},{"type":63,"tag":155,"props":5028,"children":5029},{"style":193},[5030],{"type":69,"value":79},{"type":63,"tag":155,"props":5032,"children":5033},{"style":187},[5034],{"type":69,"value":705},{"type":63,"tag":155,"props":5036,"children":5037},{"style":286},[5038],{"type":69,"value":710},{"type":63,"tag":155,"props":5040,"children":5041},{"style":193},[5042],{"type":69,"value":293},{"type":63,"tag":155,"props":5044,"children":5045},{"style":644},[5046],{"type":69,"value":719},{"type":63,"tag":155,"props":5048,"children":5049},{"style":187},[5050],{"type":69,"value":724},{"type":63,"tag":155,"props":5052,"children":5053},{"style":644},[5054],{"type":69,"value":729},{"type":63,"tag":155,"props":5056,"children":5057},{"style":187},[5058],{"type":69,"value":519},{"type":63,"tag":155,"props":5060,"children":5061},{"class":157,"line":272},[5062,5066,5071,5075,5079,5083],{"type":63,"tag":155,"props":5063,"children":5064},{"style":644},[5065],{"type":69,"value":742},{"type":63,"tag":155,"props":5067,"children":5068},{"style":193},[5069],{"type":69,"value":5070}," query",{"type":63,"tag":155,"props":5072,"children":5073},{"style":187},[5074],{"type":69,"value":752},{"type":63,"tag":155,"props":5076,"children":5077},{"style":181},[5078],{"type":69,"value":3002},{"type":63,"tag":155,"props":5080,"children":5081},{"style":286},[5082],{"type":69,"value":4911},{"type":63,"tag":155,"props":5084,"children":5085},{"style":305},[5086],{"type":69,"value":5087},"(\n",{"type":63,"tag":155,"props":5089,"children":5090},{"class":157,"line":301},[5091,5096,5100,5104,5108],{"type":63,"tag":155,"props":5092,"children":5093},{"style":193},[5094],{"type":69,"value":5095},"    z",{"type":63,"tag":155,"props":5097,"children":5098},{"style":187},[5099],{"type":69,"value":705},{"type":63,"tag":155,"props":5101,"children":5102},{"style":286},[5103],{"type":69,"value":3340},{"type":63,"tag":155,"props":5105,"children":5106},{"style":305},[5107],{"type":69,"value":293},{"type":63,"tag":155,"props":5109,"children":5110},{"style":187},[5111],{"type":69,"value":298},{"type":63,"tag":155,"props":5113,"children":5114},{"class":157,"line":325},[5115,5120,5124,5128,5132,5137,5141,5145,5149,5153,5158,5162,5167,5171],{"type":63,"tag":155,"props":5116,"children":5117},{"style":305},[5118],{"type":69,"value":5119},"      page",{"type":63,"tag":155,"props":5121,"children":5122},{"style":187},[5123],{"type":69,"value":313},{"type":63,"tag":155,"props":5125,"children":5126},{"style":193},[5127],{"type":69,"value":4947},{"type":63,"tag":155,"props":5129,"children":5130},{"style":187},[5131],{"type":69,"value":705},{"type":63,"tag":155,"props":5133,"children":5134},{"style":193},[5135],{"type":69,"value":5136},"coerce",{"type":63,"tag":155,"props":5138,"children":5139},{"style":187},[5140],{"type":69,"value":705},{"type":63,"tag":155,"props":5142,"children":5143},{"style":286},[5144],{"type":69,"value":4518},{"type":63,"tag":155,"props":5146,"children":5147},{"style":305},[5148],{"type":69,"value":2272},{"type":63,"tag":155,"props":5150,"children":5151},{"style":187},[5152],{"type":69,"value":705},{"type":63,"tag":155,"props":5154,"children":5155},{"style":286},[5156],{"type":69,"value":5157},"default",{"type":63,"tag":155,"props":5159,"children":5160},{"style":305},[5161],{"type":69,"value":293},{"type":63,"tag":155,"props":5163,"children":5164},{"style":1303},[5165],{"type":69,"value":5166},"1",{"type":63,"tag":155,"props":5168,"children":5169},{"style":305},[5170],{"type":69,"value":79},{"type":63,"tag":155,"props":5172,"children":5173},{"style":187},[5174],{"type":69,"value":322},{"type":63,"tag":155,"props":5176,"children":5177},{"class":157,"line":582},[5178,5183,5187,5191,5195,5199,5203,5207,5211,5215,5219,5223,5228,5232],{"type":63,"tag":155,"props":5179,"children":5180},{"style":305},[5181],{"type":69,"value":5182},"      limit",{"type":63,"tag":155,"props":5184,"children":5185},{"style":187},[5186],{"type":69,"value":313},{"type":63,"tag":155,"props":5188,"children":5189},{"style":193},[5190],{"type":69,"value":4947},{"type":63,"tag":155,"props":5192,"children":5193},{"style":187},[5194],{"type":69,"value":705},{"type":63,"tag":155,"props":5196,"children":5197},{"style":193},[5198],{"type":69,"value":5136},{"type":63,"tag":155,"props":5200,"children":5201},{"style":187},[5202],{"type":69,"value":705},{"type":63,"tag":155,"props":5204,"children":5205},{"style":286},[5206],{"type":69,"value":4518},{"type":63,"tag":155,"props":5208,"children":5209},{"style":305},[5210],{"type":69,"value":2272},{"type":63,"tag":155,"props":5212,"children":5213},{"style":187},[5214],{"type":69,"value":705},{"type":63,"tag":155,"props":5216,"children":5217},{"style":286},[5218],{"type":69,"value":5157},{"type":63,"tag":155,"props":5220,"children":5221},{"style":305},[5222],{"type":69,"value":293},{"type":63,"tag":155,"props":5224,"children":5225},{"style":1303},[5226],{"type":69,"value":5227},"20",{"type":63,"tag":155,"props":5229,"children":5230},{"style":305},[5231],{"type":69,"value":79},{"type":63,"tag":155,"props":5233,"children":5234},{"style":187},[5235],{"type":69,"value":322},{"type":63,"tag":155,"props":5237,"children":5238},{"class":157,"line":595},[5239,5243,5247],{"type":63,"tag":155,"props":5240,"children":5241},{"style":187},[5242],{"type":69,"value":4177},{"type":63,"tag":155,"props":5244,"children":5245},{"style":305},[5246],{"type":69,"value":79},{"type":63,"tag":155,"props":5248,"children":5249},{"style":187},[5250],{"type":69,"value":322},{"type":63,"tag":155,"props":5252,"children":5253},{"class":157,"line":608},[5254],{"type":63,"tag":155,"props":5255,"children":5256},{"style":305},[5257],{"type":69,"value":5258},"  )\n",{"type":63,"tag":155,"props":5260,"children":5261},{"class":157,"line":632},[5262],{"type":63,"tag":155,"props":5263,"children":5264},{"emptyLinePlaceholder":266},[5265],{"type":69,"value":269},{"type":63,"tag":155,"props":5267,"children":5268},{"class":157,"line":640},[5269,5273,5277,5282,5286,5290,5294,5299],{"type":63,"tag":155,"props":5270,"children":5271},{"style":181},[5272],{"type":69,"value":979},{"type":63,"tag":155,"props":5274,"children":5275},{"style":187},[5276],{"type":69,"value":190},{"type":63,"tag":155,"props":5278,"children":5279},{"style":305},[5280],{"type":69,"value":5281}," page",{"type":63,"tag":155,"props":5283,"children":5284},{"style":187},[5285],{"type":69,"value":313},{"type":63,"tag":155,"props":5287,"children":5288},{"style":193},[5289],{"type":69,"value":5070},{"type":63,"tag":155,"props":5291,"children":5292},{"style":187},[5293],{"type":69,"value":705},{"type":63,"tag":155,"props":5295,"children":5296},{"style":193},[5297],{"type":69,"value":5298},"page",{"type":63,"tag":155,"props":5300,"children":5301},{"style":187},[5302],{"type":69,"value":1001},{"type":63,"tag":155,"props":5304,"children":5305},{"class":157,"line":736},[5306,5310],{"type":63,"tag":155,"props":5307,"children":5308},{"style":187},[5309],{"type":69,"value":331},{"type":63,"tag":155,"props":5311,"children":5312},{"style":193},[5313],{"type":69,"value":336},{"type":63,"tag":87,"props":5315,"children":5316},{},[5317],{"type":63,"tag":81,"props":5318,"children":5319},{},[5320,5322,5328],{"type":69,"value":5321},"Note: ",{"type":63,"tag":72,"props":5323,"children":5325},{"className":5324},[],[5326],{"type":69,"value":5327},"getValidatedQuery",{"type":69,"value":5329}," accepts a Standard Schema validator, not a callback function.",{"type":63,"tag":128,"props":5331,"children":5333},{"id":5332},"how-request-handling-works",[5334],{"type":69,"value":5335},"How Request Handling Works",{"type":63,"tag":81,"props":5337,"children":5338},{},[5339,5344],{"type":63,"tag":72,"props":5340,"children":5342},{"className":5341},[],[5343],{"type":69,"value":137},{"type":69,"value":5345}," processes requests in three phases:",{"type":63,"tag":5347,"props":5348,"children":5349},"ol",{},[5350,5368,5402],{"type":63,"tag":4786,"props":5351,"children":5352},{},[5353,5358,5360,5366],{"type":63,"tag":94,"props":5354,"children":5355},{},[5356],{"type":69,"value":5357},"Server Function Dispatch",{"type":69,"value":5359}," — If URL matches the server function prefix (",{"type":63,"tag":72,"props":5361,"children":5363},{"className":5362},[],[5364],{"type":69,"value":5365},"\u002F_serverFn",{"type":69,"value":5367},"), deserializes the payload, runs global request middleware, executes the server function, and returns the serialized result.",{"type":63,"tag":4786,"props":5369,"children":5370},{},[5371,5376,5378,5384,5386,5392,5394,5400],{"type":63,"tag":94,"props":5372,"children":5373},{},[5374],{"type":69,"value":5375},"Server Route Handler",{"type":69,"value":5377}," — For non-server-function requests, matches the URL against routes with ",{"type":63,"tag":72,"props":5379,"children":5381},{"className":5380},[],[5382],{"type":69,"value":5383},"server.handlers",{"type":69,"value":5385},". Runs route middleware, then the matched HTTP method handler. Handlers can return a ",{"type":63,"tag":72,"props":5387,"children":5389},{"className":5388},[],[5390],{"type":69,"value":5391},"Response",{"type":69,"value":5393}," or call ",{"type":63,"tag":72,"props":5395,"children":5397},{"className":5396},[],[5398],{"type":69,"value":5399},"next()",{"type":69,"value":5401}," to fall through to SSR.",{"type":63,"tag":4786,"props":5403,"children":5404},{},[5405,5410,5412,5418],{"type":63,"tag":94,"props":5406,"children":5407},{},[5408],{"type":69,"value":5409},"App Router SSR",{"type":69,"value":5411}," — Loads all route loaders, dehydrates state for client hydration, and calls the handler callback (e.g., ",{"type":63,"tag":72,"props":5413,"children":5415},{"className":5414},[],[5416],{"type":69,"value":5417},"defaultStreamHandler",{"type":69,"value":5419},") to render HTML.",{"type":63,"tag":128,"props":5421,"children":5423},{"id":5422},"common-mistakes",[5424],{"type":69,"value":5425},"Common Mistakes",{"type":63,"tag":451,"props":5427,"children":5429},{"id":5428},"_1-critical-importing-server-utilities-in-client-code",[5430],{"type":69,"value":5431},"1. CRITICAL: Importing server utilities in client code",{"type":63,"tag":81,"props":5433,"children":5434},{},[5435],{"type":69,"value":5436},"Server utilities use AsyncLocalStorage and only work during server request handling. Importing them in client code causes build errors or runtime crashes.",{"type":63,"tag":144,"props":5438,"children":5440},{"className":146,"code":5439,"language":148,"meta":149,"style":149},"\u002F\u002F WRONG — importing in a component file that runs on client\nimport { getCookie } from '@tanstack\u002Freact-start\u002Fserver'\n\nfunction MyComponent() {\n  const token = getCookie('auth') \u002F\u002F crashes on client\n}\n\n\u002F\u002F CORRECT — use inside server functions only\n\u002F\u002F Use @tanstack\u002F\u003Cframework>-start for your framework (react, solid, vue)\nimport { createServerFn } from '@tanstack\u002Freact-start'\nimport { getCookie } from '@tanstack\u002Freact-start\u002Fserver'\n\nconst getAuth = createServerFn({ method: 'GET' }).handler(async () => {\n  return getCookie('auth')\n})\n",[5441],{"type":63,"tag":72,"props":5442,"children":5443},{"__ignoreMap":149},[5444,5452,5487,5494,5514,5559,5566,5573,5581,5588,5623,5658,5665,5749,5780],{"type":63,"tag":155,"props":5445,"children":5446},{"class":157,"line":158},[5447],{"type":63,"tag":155,"props":5448,"children":5449},{"style":162},[5450],{"type":69,"value":5451},"\u002F\u002F WRONG — importing in a component file that runs on client\n",{"type":63,"tag":155,"props":5453,"children":5454},{"class":157,"line":168},[5455,5459,5463,5467,5471,5475,5479,5483],{"type":63,"tag":155,"props":5456,"children":5457},{"style":181},[5458],{"type":69,"value":184},{"type":63,"tag":155,"props":5460,"children":5461},{"style":187},[5462],{"type":69,"value":190},{"type":63,"tag":155,"props":5464,"children":5465},{"style":193},[5466],{"type":69,"value":1727},{"type":63,"tag":155,"props":5468,"children":5469},{"style":187},[5470],{"type":69,"value":201},{"type":63,"tag":155,"props":5472,"children":5473},{"style":181},[5474],{"type":69,"value":206},{"type":63,"tag":155,"props":5476,"children":5477},{"style":187},[5478],{"type":69,"value":211},{"type":63,"tag":155,"props":5480,"children":5481},{"style":214},[5482],{"type":69,"value":217},{"type":63,"tag":155,"props":5484,"children":5485},{"style":187},[5486],{"type":69,"value":222},{"type":63,"tag":155,"props":5488,"children":5489},{"class":157,"line":177},[5490],{"type":63,"tag":155,"props":5491,"children":5492},{"emptyLinePlaceholder":266},[5493],{"type":69,"value":269},{"type":63,"tag":155,"props":5495,"children":5496},{"class":157,"line":225},[5497,5501,5506,5510],{"type":63,"tag":155,"props":5498,"children":5499},{"style":644},[5500],{"type":69,"value":2262},{"type":63,"tag":155,"props":5502,"children":5503},{"style":286},[5504],{"type":69,"value":5505}," MyComponent",{"type":63,"tag":155,"props":5507,"children":5508},{"style":187},[5509],{"type":69,"value":2272},{"type":63,"tag":155,"props":5511,"children":5512},{"style":187},[5513],{"type":69,"value":519},{"type":63,"tag":155,"props":5515,"children":5516},{"class":157,"line":262},[5517,5521,5525,5529,5533,5537,5541,5546,5550,5554],{"type":63,"tag":155,"props":5518,"children":5519},{"style":644},[5520],{"type":69,"value":742},{"type":63,"tag":155,"props":5522,"children":5523},{"style":193},[5524],{"type":69,"value":1718},{"type":63,"tag":155,"props":5526,"children":5527},{"style":187},[5528],{"type":69,"value":752},{"type":63,"tag":155,"props":5530,"children":5531},{"style":286},[5532],{"type":69,"value":1727},{"type":63,"tag":155,"props":5534,"children":5535},{"style":305},[5536],{"type":69,"value":293},{"type":63,"tag":155,"props":5538,"children":5539},{"style":187},[5540],{"type":69,"value":416},{"type":63,"tag":155,"props":5542,"children":5543},{"style":214},[5544],{"type":69,"value":5545},"auth",{"type":63,"tag":155,"props":5547,"children":5548},{"style":187},[5549],{"type":69,"value":416},{"type":63,"tag":155,"props":5551,"children":5552},{"style":305},[5553],{"type":69,"value":2369},{"type":63,"tag":155,"props":5555,"children":5556},{"style":162},[5557],{"type":69,"value":5558},"\u002F\u002F crashes on client\n",{"type":63,"tag":155,"props":5560,"children":5561},{"class":157,"line":272},[5562],{"type":63,"tag":155,"props":5563,"children":5564},{"style":187},[5565],{"type":69,"value":2247},{"type":63,"tag":155,"props":5567,"children":5568},{"class":157,"line":301},[5569],{"type":63,"tag":155,"props":5570,"children":5571},{"emptyLinePlaceholder":266},[5572],{"type":69,"value":269},{"type":63,"tag":155,"props":5574,"children":5575},{"class":157,"line":325},[5576],{"type":63,"tag":155,"props":5577,"children":5578},{"style":162},[5579],{"type":69,"value":5580},"\u002F\u002F CORRECT — use inside server functions only\n",{"type":63,"tag":155,"props":5582,"children":5583},{"class":157,"line":582},[5584],{"type":63,"tag":155,"props":5585,"children":5586},{"style":162},[5587],{"type":69,"value":174},{"type":63,"tag":155,"props":5589,"children":5590},{"class":157,"line":595},[5591,5595,5599,5603,5607,5611,5615,5619],{"type":63,"tag":155,"props":5592,"children":5593},{"style":181},[5594],{"type":69,"value":184},{"type":63,"tag":155,"props":5596,"children":5597},{"style":187},[5598],{"type":69,"value":190},{"type":63,"tag":155,"props":5600,"children":5601},{"style":193},[5602],{"type":69,"value":486},{"type":63,"tag":155,"props":5604,"children":5605},{"style":187},[5606],{"type":69,"value":201},{"type":63,"tag":155,"props":5608,"children":5609},{"style":181},[5610],{"type":69,"value":206},{"type":63,"tag":155,"props":5612,"children":5613},{"style":187},[5614],{"type":69,"value":211},{"type":63,"tag":155,"props":5616,"children":5617},{"style":214},[5618],{"type":69,"value":503},{"type":63,"tag":155,"props":5620,"children":5621},{"style":187},[5622],{"type":69,"value":222},{"type":63,"tag":155,"props":5624,"children":5625},{"class":157,"line":608},[5626,5630,5634,5638,5642,5646,5650,5654],{"type":63,"tag":155,"props":5627,"children":5628},{"style":181},[5629],{"type":69,"value":184},{"type":63,"tag":155,"props":5631,"children":5632},{"style":187},[5633],{"type":69,"value":190},{"type":63,"tag":155,"props":5635,"children":5636},{"style":193},[5637],{"type":69,"value":1727},{"type":63,"tag":155,"props":5639,"children":5640},{"style":187},[5641],{"type":69,"value":201},{"type":63,"tag":155,"props":5643,"children":5644},{"style":181},[5645],{"type":69,"value":206},{"type":63,"tag":155,"props":5647,"children":5648},{"style":187},[5649],{"type":69,"value":211},{"type":63,"tag":155,"props":5651,"children":5652},{"style":214},[5653],{"type":69,"value":217},{"type":63,"tag":155,"props":5655,"children":5656},{"style":187},[5657],{"type":69,"value":222},{"type":63,"tag":155,"props":5659,"children":5660},{"class":157,"line":632},[5661],{"type":63,"tag":155,"props":5662,"children":5663},{"emptyLinePlaceholder":266},[5664],{"type":69,"value":269},{"type":63,"tag":155,"props":5666,"children":5667},{"class":157,"line":640},[5668,5672,5677,5681,5685,5689,5693,5697,5701,5705,5709,5713,5717,5721,5725,5729,5733,5737,5741,5745],{"type":63,"tag":155,"props":5669,"children":5670},{"style":644},[5671],{"type":69,"value":647},{"type":63,"tag":155,"props":5673,"children":5674},{"style":193},[5675],{"type":69,"value":5676}," getAuth ",{"type":63,"tag":155,"props":5678,"children":5679},{"style":187},[5680],{"type":69,"value":657},{"type":63,"tag":155,"props":5682,"children":5683},{"style":286},[5684],{"type":69,"value":486},{"type":63,"tag":155,"props":5686,"children":5687},{"style":193},[5688],{"type":69,"value":293},{"type":63,"tag":155,"props":5690,"children":5691},{"style":187},[5692],{"type":69,"value":670},{"type":63,"tag":155,"props":5694,"children":5695},{"style":305},[5696],{"type":69,"value":675},{"type":63,"tag":155,"props":5698,"children":5699},{"style":187},[5700],{"type":69,"value":313},{"type":63,"tag":155,"props":5702,"children":5703},{"style":187},[5704],{"type":69,"value":211},{"type":63,"tag":155,"props":5706,"children":5707},{"style":214},[5708],{"type":69,"value":688},{"type":63,"tag":155,"props":5710,"children":5711},{"style":187},[5712],{"type":69,"value":416},{"type":63,"tag":155,"props":5714,"children":5715},{"style":187},[5716],{"type":69,"value":201},{"type":63,"tag":155,"props":5718,"children":5719},{"style":193},[5720],{"type":69,"value":79},{"type":63,"tag":155,"props":5722,"children":5723},{"style":187},[5724],{"type":69,"value":705},{"type":63,"tag":155,"props":5726,"children":5727},{"style":286},[5728],{"type":69,"value":710},{"type":63,"tag":155,"props":5730,"children":5731},{"style":193},[5732],{"type":69,"value":293},{"type":63,"tag":155,"props":5734,"children":5735},{"style":644},[5736],{"type":69,"value":719},{"type":63,"tag":155,"props":5738,"children":5739},{"style":187},[5740],{"type":69,"value":724},{"type":63,"tag":155,"props":5742,"children":5743},{"style":644},[5744],{"type":69,"value":729},{"type":63,"tag":155,"props":5746,"children":5747},{"style":187},[5748],{"type":69,"value":519},{"type":63,"tag":155,"props":5750,"children":5751},{"class":157,"line":736},[5752,5756,5760,5764,5768,5772,5776],{"type":63,"tag":155,"props":5753,"children":5754},{"style":181},[5755],{"type":69,"value":979},{"type":63,"tag":155,"props":5757,"children":5758},{"style":286},[5759],{"type":69,"value":1727},{"type":63,"tag":155,"props":5761,"children":5762},{"style":305},[5763],{"type":69,"value":293},{"type":63,"tag":155,"props":5765,"children":5766},{"style":187},[5767],{"type":69,"value":416},{"type":63,"tag":155,"props":5769,"children":5770},{"style":214},[5771],{"type":69,"value":5545},{"type":63,"tag":155,"props":5773,"children":5774},{"style":187},[5775],{"type":69,"value":416},{"type":63,"tag":155,"props":5777,"children":5778},{"style":305},[5779],{"type":69,"value":336},{"type":63,"tag":155,"props":5781,"children":5782},{"class":157,"line":765},[5783,5787],{"type":63,"tag":155,"props":5784,"children":5785},{"style":187},[5786],{"type":69,"value":331},{"type":63,"tag":155,"props":5788,"children":5789},{"style":193},[5790],{"type":69,"value":336},{"type":63,"tag":451,"props":5792,"children":5794},{"id":5793},"_2-high-forgetting-session-password-for-most-session-operations",[5795],{"type":69,"value":5796},"2. HIGH: Forgetting session password for most session operations",{"type":63,"tag":81,"props":5798,"children":5799},{},[5800,5806,5807,5813,5814,5820,5821,5827,5829,5834,5836,5842,5844,5850],{"type":63,"tag":72,"props":5801,"children":5803},{"className":5802},[],[5804],{"type":69,"value":5805},"useSession",{"type":69,"value":4813},{"type":63,"tag":72,"props":5808,"children":5810},{"className":5809},[],[5811],{"type":69,"value":5812},"getSession",{"type":69,"value":4813},{"type":63,"tag":72,"props":5815,"children":5817},{"className":5816},[],[5818],{"type":69,"value":5819},"updateSession",{"type":69,"value":4828},{"type":63,"tag":72,"props":5822,"children":5824},{"className":5823},[],[5825],{"type":69,"value":5826},"sealSession",{"type":69,"value":5828}," all require a ",{"type":63,"tag":72,"props":5830,"children":5832},{"className":5831},[],[5833],{"type":69,"value":2336},{"type":69,"value":5835}," field for encryption. Missing it throws at runtime. ",{"type":63,"tag":72,"props":5837,"children":5839},{"className":5838},[],[5840],{"type":69,"value":5841},"clearSession",{"type":69,"value":5843}," accepts ",{"type":63,"tag":72,"props":5845,"children":5847},{"className":5846},[],[5848],{"type":69,"value":5849},"Partial\u003CSessionConfig>",{"type":69,"value":5851},", so password is optional for clearing.",{"type":63,"tag":451,"props":5853,"children":5855},{"id":5854},"_3-medium-using-session-without-https-in-production",[5856],{"type":69,"value":5857},"3. MEDIUM: Using session without HTTPS in production",{"type":63,"tag":81,"props":5859,"children":5860},{},[5861,5863,5869],{"type":69,"value":5862},"Session cookies should use ",{"type":63,"tag":72,"props":5864,"children":5866},{"className":5865},[],[5867],{"type":69,"value":5868},"secure: true",{"type":69,"value":5870}," in production. The default cookie options may not enforce this.",{"type":63,"tag":451,"props":5872,"children":5874},{"id":5873},"_4-critical-capturing-request-or-environment-state-at-module-scope",[5875],{"type":69,"value":5876},"4. CRITICAL: Capturing request or environment state at module scope",{"type":63,"tag":81,"props":5878,"children":5879},{},[5880,5882,5888,5890,5896],{"type":69,"value":5881},"Do not create session config from ",{"type":63,"tag":72,"props":5883,"children":5885},{"className":5884},[],[5886],{"type":69,"value":5887},"process.env",{"type":69,"value":5889}," at module load or cache ",{"type":63,"tag":72,"props":5891,"children":5893},{"className":5892},[],[5894],{"type":69,"value":5895},"getRequest()",{"type":69,"value":5897},", headers, cookies, or session data in a module variable. Create config and read request state inside the handler or middleware callback. This is required for per-request edge environments and prevents cross-request data leaks.",{"type":63,"tag":128,"props":5899,"children":5901},{"id":5900},"cross-references",[5902],{"type":69,"value":5903},"Cross-References",{"type":63,"tag":4782,"props":5905,"children":5906},{},[5907,5919,5930],{"type":63,"tag":4786,"props":5908,"children":5909},{},[5910,5917],{"type":63,"tag":5911,"props":5912,"children":5914},"a",{"href":5913},"..\u002F..\u002F..\u002Fstart-client-core\u002Fskills\u002Fstart-core\u002Fserver-functions\u002FSKILL.md",[5915],{"type":69,"value":5916},"start-core\u002Fserver-functions",{"type":69,"value":5918}," — creating server functions that use these utilities",{"type":63,"tag":4786,"props":5920,"children":5921},{},[5922,5928],{"type":63,"tag":5911,"props":5923,"children":5925},{"href":5924},"..\u002F..\u002F..\u002Fstart-client-core\u002Fskills\u002Fstart-core\u002Fmiddleware\u002FSKILL.md",[5926],{"type":69,"value":5927},"start-core\u002Fmiddleware",{"type":69,"value":5929}," — request middleware",{"type":63,"tag":4786,"props":5931,"children":5932},{},[5933,5939],{"type":63,"tag":5911,"props":5934,"children":5936},{"href":5935},"..\u002F..\u002F..\u002Fstart-client-core\u002Fskills\u002Fstart-core\u002Fserver-routes\u002FSKILL.md",[5937],{"type":69,"value":5938},"start-core\u002Fserver-routes",{"type":69,"value":5940}," — server route handlers",{"type":63,"tag":5942,"props":5943,"children":5944},"style",{},[5945],{"type":69,"value":5946},"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":5948,"total":6089},[5949,5965,5977,5989,6004,6016,6026,6036,6049,6059,6070,6080],{"slug":5950,"name":5950,"fn":5951,"description":5952,"org":5953,"tags":5954,"stars":5962,"repoUrl":5963,"updatedAt":5964},"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},[5955,5958,5961],{"name":5956,"slug":5957,"type":15},"Data Analysis","data-analysis",{"name":5959,"slug":5960,"type":15},"Frontend","frontend",{"name":9,"slug":8,"type":15},28175,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Ftable","2026-07-30T05:25:59.429787",{"slug":5966,"name":5966,"fn":5967,"description":5968,"org":5969,"tags":5970,"stars":5962,"repoUrl":5963,"updatedAt":5976},"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},[5971,5974,5975],{"name":5972,"slug":5973,"type":15},"Debugging","debugging",{"name":5959,"slug":5960,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:26:05.418735",{"slug":5978,"name":5978,"fn":5979,"description":5980,"org":5981,"tags":5982,"stars":5962,"repoUrl":5963,"updatedAt":5988},"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},[5983,5984,5985],{"name":5956,"slug":5957,"type":15},{"name":9,"slug":8,"type":15},{"name":5986,"slug":5987,"type":15},"UI Components","ui-components","2026-07-30T05:25:38.403427",{"slug":5990,"name":5990,"fn":5991,"description":5992,"org":5993,"tags":5994,"stars":5962,"repoUrl":5963,"updatedAt":6003},"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},[5995,5998,5999,6002],{"name":5996,"slug":5997,"type":15},"Data Pipeline","data-pipeline",{"name":5959,"slug":5960,"type":15},{"name":6000,"slug":6001,"type":15},"Performance","performance",{"name":9,"slug":8,"type":15},"2026-07-30T05:25:45.400104",{"slug":6005,"name":6005,"fn":6006,"description":6007,"org":6008,"tags":6009,"stars":5962,"repoUrl":5963,"updatedAt":6015},"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},[6010,6013,6014],{"name":6011,"slug":6012,"type":15},"Data Visualization","data-visualization",{"name":5959,"slug":5960,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:41.397257",{"slug":6017,"name":6017,"fn":6018,"description":6019,"org":6020,"tags":6021,"stars":5962,"repoUrl":5963,"updatedAt":6025},"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},[6022,6023,6024],{"name":5956,"slug":5957,"type":15},{"name":5959,"slug":5960,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:25:53.391632",{"slug":6027,"name":6027,"fn":6028,"description":6029,"org":6030,"tags":6031,"stars":5962,"repoUrl":5963,"updatedAt":6035},"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},[6032,6033,6034],{"name":5959,"slug":5960,"type":15},{"name":9,"slug":8,"type":15},{"name":5986,"slug":5987,"type":15},"2026-07-30T05:26:03.37801",{"slug":6037,"name":6037,"fn":6038,"description":6039,"org":6040,"tags":6041,"stars":5962,"repoUrl":5963,"updatedAt":6048},"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},[6042,6045,6046,6047],{"name":6043,"slug":6044,"type":15},"CSS","css",{"name":5959,"slug":5960,"type":15},{"name":9,"slug":8,"type":15},{"name":5986,"slug":5987,"type":15},"2026-07-30T05:25:55.377366",{"slug":6050,"name":6050,"fn":6051,"description":6052,"org":6053,"tags":6054,"stars":5962,"repoUrl":5963,"updatedAt":6058},"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},[6055,6056,6057],{"name":5959,"slug":5960,"type":15},{"name":9,"slug":8,"type":15},{"name":5986,"slug":5987,"type":15},"2026-07-30T05:25:51.400011",{"slug":6060,"name":6060,"fn":6061,"description":6062,"org":6063,"tags":6064,"stars":5962,"repoUrl":5963,"updatedAt":6069},"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},[6065,6066,6067,6068],{"name":6043,"slug":6044,"type":15},{"name":5959,"slug":5960,"type":15},{"name":9,"slug":8,"type":15},{"name":5986,"slug":5987,"type":15},"2026-07-30T05:25:48.703799",{"slug":6071,"name":6071,"fn":6072,"description":6073,"org":6074,"tags":6075,"stars":5962,"repoUrl":5963,"updatedAt":6079},"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},[6076,6077,6078],{"name":5959,"slug":5960,"type":15},{"name":9,"slug":8,"type":15},{"name":5986,"slug":5987,"type":15},"2026-07-30T05:25:47.367943",{"slug":53,"name":53,"fn":6081,"description":6082,"org":6083,"tags":6084,"stars":5962,"repoUrl":5963,"updatedAt":6088},"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},[6085,6086,6087],{"name":5956,"slug":5957,"type":15},{"name":5959,"slug":5960,"type":15},{"name":5986,"slug":5987,"type":15},"2026-07-30T05:25:52.366295",125,{"items":6091,"total":2694},[6092,6108,6123,6137,6150,6169,6180],{"slug":6093,"name":6093,"fn":6094,"description":6095,"org":6096,"tags":6097,"stars":23,"repoUrl":24,"updatedAt":6107},"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},[6098,6100,6101,6103,6104],{"name":6099,"slug":5545,"type":15},"Auth",{"name":5959,"slug":5960,"type":15},{"name":6102,"slug":35,"type":15},"Routing",{"name":9,"slug":8,"type":15},{"name":6105,"slug":6106,"type":15},"TanStack Router","tanstack-router","2026-07-30T05:27:07.639032",{"slug":6109,"name":6109,"fn":6110,"description":6111,"org":6112,"tags":6113,"stars":23,"repoUrl":24,"updatedAt":6122},"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},[6114,6115,6118,6121],{"name":6099,"slug":5545,"type":15},{"name":6116,"slug":6117,"type":15},"OAuth","oauth",{"name":6119,"slug":6120,"type":15},"Security","security",{"name":9,"slug":8,"type":15},"2026-07-30T05:26:59.504396",{"slug":6124,"name":6124,"fn":6125,"description":6126,"org":6127,"tags":6128,"stars":23,"repoUrl":24,"updatedAt":6136},"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},[6129,6132,6133,6134,6135],{"name":6130,"slug":6131,"type":15},"Engineering","engineering",{"name":5959,"slug":5960,"type":15},{"name":6000,"slug":6001,"type":15},{"name":9,"slug":8,"type":15},{"name":6105,"slug":6106,"type":15},"2026-07-30T05:27:11.494406",{"slug":6138,"name":6138,"fn":6139,"description":6140,"org":6141,"tags":6142,"stars":23,"repoUrl":24,"updatedAt":6149},"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},[6143,6146,6147,6148],{"name":6144,"slug":6145,"type":15},"Caching","caching",{"name":6000,"slug":6001,"type":15},{"name":9,"slug":8,"type":15},{"name":6105,"slug":6106,"type":15},"2026-07-30T05:26:54.487943",{"slug":6151,"name":6151,"fn":6152,"description":6153,"org":6154,"tags":6155,"stars":23,"repoUrl":24,"updatedAt":6168},"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},[6156,6159,6161,6164,6165],{"name":6157,"slug":6158,"type":15},"Cloudflare","cloudflare",{"name":6160,"slug":6151,"type":15},"Deployment",{"name":6162,"slug":6163,"type":15},"Netlify","netlify",{"name":9,"slug":8,"type":15},{"name":6166,"slug":6167,"type":15},"Vercel","vercel","2026-07-30T05:26:50.509927",{"slug":6170,"name":6170,"fn":6171,"description":6172,"org":6173,"tags":6174,"stars":23,"repoUrl":24,"updatedAt":6179},"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},[6175,6178],{"name":6176,"slug":6177,"type":15},"Architecture","architecture",{"name":9,"slug":8,"type":15},"2026-07-30T05:27:04.558441",{"slug":6181,"name":6181,"fn":6182,"description":6183,"org":6184,"tags":6185,"stars":23,"repoUrl":24,"updatedAt":6191},"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},[6186,6187,6188,6190],{"name":13,"slug":14,"type":15},{"name":5959,"slug":5960,"type":15},{"name":6189,"slug":6181,"type":15},"Middleware",{"name":9,"slug":8,"type":15},"2026-07-30T05:26:58.546019"]