[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-expo-eas-hosting":3,"mdc-75yjnt-key":34,"related-org-expo-eas-hosting":6556,"related-repo-expo-eas-hosting":6724},{"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":29,"sourceUrl":32,"mdContent":33},"eas-hosting","deploy Expo websites to EAS Hosting","EAS service (paid). Deploy Expo websites and Expo Router API routes to EAS Hosting - export the web bundle, run eas deploy for production and PR preview URLs, manage environment secrets and custom domains, and work within the Cloudflare Workers runtime. Also covers authoring API routes (+api.ts handlers, HTTP methods, request handling, CORS). Use when deploying an Expo web app or API routes, setting up EAS Hosting, or configuring hosting environments and domains. Not for native builds or store releases - use the eas-app-stores skill for those.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"expo","Expo","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fexpo.png",[12,14,17,20],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"Deployment","deployment",{"name":18,"slug":19,"type":13},"Web Development","web-development",{"name":21,"slug":22,"type":13},"Frontend","frontend",2190,"https:\u002F\u002Fgithub.com\u002Fexpo\u002Fskills","2026-07-24T05:36:40.193701","MIT",111,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"A collection of AI agent skills for working with Expo projects and Expo Application Services","https:\u002F\u002Fgithub.com\u002Fexpo\u002Fskills\u002Ftree\u002FHEAD\u002Fplugins\u002Fexpo\u002Fskills\u002Feas-hosting","---\nname: eas-hosting\ndescription: EAS service (paid). Deploy Expo websites and Expo Router API routes to EAS Hosting - export the web bundle, run eas deploy for production and PR preview URLs, manage environment secrets and custom domains, and work within the Cloudflare Workers runtime. Also covers authoring API routes (+api.ts handlers, HTTP methods, request handling, CORS). Use when deploying an Expo web app or API routes, setting up EAS Hosting, or configuring hosting environments and domains. Not for native builds or store releases - use the eas-app-stores skill for those.\nversion: 1.0.0\nlicense: MIT\n---\n\n# EAS Hosting\n\n> **EAS service - costs apply.** EAS Hosting is a paid Expo Application Services product with free-tier limits; production deploys use your plan's request and bandwidth allowance. See https:\u002F\u002Fexpo.dev\u002Fpricing. Authoring API routes and exporting the web bundle are free and open source, and you can self-host the exported server output instead of EAS Hosting.\n\nEAS Hosting deploys your Expo **web app and API routes** to Expo's managed edge (Cloudflare Workers). Export the web bundle with `npx expo export -p web` and ship it with `eas deploy` - the same command deploys any Expo Router API routes bundled alongside it. This skill covers deploying a website, authoring API routes, and the hosting runtime; see the Deployment section below for the deploy workflow.\n\n## When to Use API Routes\n\nUse API routes when you need:\n\n- **Server-side secrets** — API keys, database credentials, or tokens that must never reach the client\n- **Database operations** — Direct database queries that shouldn't be exposed\n- **Third-party API proxies** — Hide API keys when calling external services (OpenAI, Stripe, etc.)\n- **Server-side validation** — Validate data before database writes\n- **Webhook endpoints** — Receive callbacks from services like Stripe or GitHub\n- **Rate limiting** — Control access at the server level\n- **Heavy computation** — Offload processing that would be slow on mobile\n\n## When NOT to Use API Routes\n\nAvoid API routes when:\n\n- **Data is already public** — Use direct fetch to public APIs instead\n- **No secrets required** — Static data or client-safe operations\n- **Real-time updates needed** — Use WebSockets or services like Supabase Realtime\n- **Simple CRUD** — Consider Firebase, Supabase, or Convex for managed backends\n- **File uploads** — Use direct-to-storage uploads (S3 presigned URLs, Cloudflare R2)\n- **Authentication only** — Use Clerk, Auth0, or Firebase Auth instead\n\n## File Structure\n\nAPI routes live in the `app` directory with `+api.ts` suffix:\n\n```\napp\u002F\n  api\u002F\n    hello+api.ts          → GET \u002Fapi\u002Fhello\n    users+api.ts          → \u002Fapi\u002Fusers\n    users\u002F[id]+api.ts     → \u002Fapi\u002Fusers\u002F:id\n  (tabs)\u002F\n    index.tsx\n```\n\n## Basic API Route\n\n```ts\n\u002F\u002F app\u002Fapi\u002Fhello+api.ts\nexport function GET(request: Request) {\n  return Response.json({ message: \"Hello from Expo!\" });\n}\n```\n\n## HTTP Methods\n\nExport named functions for each HTTP method:\n\n```ts\n\u002F\u002F app\u002Fapi\u002Fitems+api.ts\nexport function GET(request: Request) {\n  return Response.json({ items: [] });\n}\n\nexport async function POST(request: Request) {\n  const body = await request.json();\n  return Response.json({ created: body }, { status: 201 });\n}\n\nexport async function PUT(request: Request) {\n  const body = await request.json();\n  return Response.json({ updated: body });\n}\n\nexport async function DELETE(request: Request) {\n  return new Response(null, { status: 204 });\n}\n```\n\n## Dynamic Routes\n\n```ts\n\u002F\u002F app\u002Fapi\u002Fusers\u002F[id]+api.ts\nexport function GET(request: Request, { id }: { id: string }) {\n  return Response.json({ userId: id });\n}\n```\n\n## Request Handling\n\n### Query Parameters\n\n```ts\nexport function GET(request: Request) {\n  const url = new URL(request.url);\n  const page = url.searchParams.get(\"page\") ?? \"1\";\n  const limit = url.searchParams.get(\"limit\") ?? \"10\";\n\n  return Response.json({ page, limit });\n}\n```\n\n### Headers\n\n```ts\nexport function GET(request: Request) {\n  const auth = request.headers.get(\"Authorization\");\n\n  if (!auth) {\n    return Response.json({ error: \"Unauthorized\" }, { status: 401 });\n  }\n\n  return Response.json({ authenticated: true });\n}\n```\n\n### JSON Body\n\n```ts\nexport async function POST(request: Request) {\n  const { email, password } = await request.json();\n\n  if (!email || !password) {\n    return Response.json({ error: \"Missing fields\" }, { status: 400 });\n  }\n\n  return Response.json({ success: true });\n}\n```\n\n## Environment Variables\n\nUse `process.env` for server-side secrets:\n\n```ts\n\u002F\u002F app\u002Fapi\u002Fai+api.ts\nexport async function POST(request: Request) {\n  const { prompt } = await request.json();\n\n  const response = await fetch(\"https:\u002F\u002Fapi.openai.com\u002Fv1\u002Fchat\u002Fcompletions\", {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application\u002Fjson\",\n      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,\n    },\n    body: JSON.stringify({\n      model: \"gpt-4\",\n      messages: [{ role: \"user\", content: prompt }],\n    }),\n  });\n\n  const data = await response.json();\n  return Response.json(data);\n}\n```\n\nSet environment variables:\n\n- **Local**: Create `.env` file (never commit)\n- **EAS Hosting**: Use `eas env:create` or Expo dashboard\n\n## CORS Headers\n\nAdd CORS for web clients:\n\n```ts\nconst corsHeaders = {\n  \"Access-Control-Allow-Origin\": \"*\",\n  \"Access-Control-Allow-Methods\": \"GET, POST, PUT, DELETE, OPTIONS\",\n  \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\n};\n\nexport function OPTIONS() {\n  return new Response(null, { headers: corsHeaders });\n}\n\nexport function GET() {\n  return Response.json({ data: \"value\" }, { headers: corsHeaders });\n}\n```\n\n## Error Handling\n\n```ts\nexport async function POST(request: Request) {\n  try {\n    const body = await request.json();\n    \u002F\u002F Process...\n    return Response.json({ success: true });\n  } catch (error) {\n    console.error(\"API error:\", error);\n    return Response.json({ error: \"Internal server error\" }, { status: 500 });\n  }\n}\n```\n\n## Testing Locally\n\nStart the development server with API routes:\n\n```bash\nnpx expo serve\n```\n\nThis starts a local server at `http:\u002F\u002Flocalhost:8081` with full API route support.\n\nTest with curl:\n\n```bash\ncurl http:\u002F\u002Flocalhost:8081\u002Fapi\u002Fhello\ncurl -X POST http:\u002F\u002Flocalhost:8081\u002Fapi\u002Fusers -H \"Content-Type: application\u002Fjson\" -d '{\"name\":\"Test\"}'\n```\n\n## Deployment to EAS Hosting\n\n### Prerequisites\n\n```bash\nnpm install -g eas-cli\neas login\n```\n\n### Deploy\n\nDeploying ships your web bundle and any Expo Router API routes together - `eas deploy` handles both. The export runs whether you have a full website, an API-routes-only backend, or both.\n\n```bash\n# Export the web bundle (includes any API routes)\nnpx expo export -p web\n\n# Deploy a preview (PR-style URL)\nnpx eas-cli@latest deploy\n\n# Deploy to production\nnpx eas-cli@latest deploy --prod\n```\n\nEverything lands on EAS Hosting (Cloudflare Workers).\n\n### Environment Variables for Production\n\n```bash\n# Create a secret\neas env:create --name OPENAI_API_KEY --value sk-xxx --environment production\n\n# Or use the Expo dashboard\n```\n\n### Custom Domain\n\nConfigure in `eas.json` or Expo dashboard.\n\n### Automate with EAS Workflows\n\nDeploy the website (and API routes) on every push to main with a `type: deploy` workflow:\n\n`.eas\u002Fworkflows\u002Fdeploy.yml`\n\n```yaml\nname: Deploy\n\non:\n  push:\n    branches:\n      - main\n\n# https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fworkflows\u002Fsyntax\u002F#deploy\njobs:\n  deploy_web:\n    type: deploy\n    params:\n      prod: true\n```\n\nPreview deploys for pull requests use the same job type with `prod: false`:\n\n```yaml\nname: Web PR Preview\n\non:\n  pull_request:\n    types: [opened, synchronize]\n\njobs:\n  preview:\n    type: deploy\n    params:\n      prod: false\n```\n\nTo author or validate workflow YAML beyond these examples, use the `eas-workflows` skill.\n\n## EAS Hosting Runtime (Cloudflare Workers)\n\nAPI routes run on Cloudflare Workers. Key limitations:\n\n### Missing\u002FLimited APIs\n\n- **No Node.js filesystem** — `fs` module unavailable\n- **No native Node modules** — Use Web APIs or polyfills\n- **Limited execution time** — 30 second timeout for CPU-intensive tasks\n- **No persistent connections** — WebSockets require Durable Objects\n- **fetch is available** — Use standard fetch for HTTP requests\n\n### Use Web APIs Instead\n\n```ts\n\u002F\u002F Use Web Crypto instead of Node crypto\nconst hash = await crypto.subtle.digest(\n  \"SHA-256\",\n  new TextEncoder().encode(\"data\")\n);\n\n\u002F\u002F Use fetch instead of node-fetch\nconst response = await fetch(\"https:\u002F\u002Fapi.example.com\");\n\n\u002F\u002F Use Response\u002FRequest (already available)\nreturn new Response(JSON.stringify(data), {\n  headers: { \"Content-Type\": \"application\u002Fjson\" },\n});\n```\n\n### Database Options\n\nSince filesystem is unavailable, use cloud databases:\n\n- **Cloudflare D1** — SQLite at the edge\n- **Turso** — Distributed SQLite\n- **PlanetScale** — Serverless MySQL\n- **Supabase** — Postgres with REST API\n- **Neon** — Serverless Postgres\n\nExample with Turso:\n\n```ts\n\u002F\u002F app\u002Fapi\u002Fusers+api.ts\nimport { createClient } from \"@libsql\u002Fclient\u002Fweb\";\n\nconst db = createClient({\n  url: process.env.TURSO_URL!,\n  authToken: process.env.TURSO_AUTH_TOKEN!,\n});\n\nexport async function GET() {\n  const result = await db.execute(\"SELECT * FROM users\");\n  return Response.json(result.rows);\n}\n```\n\n## Calling API Routes from Client\n\n```ts\n\u002F\u002F From React Native components\nconst response = await fetch(\"\u002Fapi\u002Fhello\");\nconst data = await response.json();\n\n\u002F\u002F With body\nconst response = await fetch(\"\u002Fapi\u002Fusers\", {\n  method: \"POST\",\n  headers: { \"Content-Type\": \"application\u002Fjson\" },\n  body: JSON.stringify({ name: \"John\" }),\n});\n```\n\n## Common Patterns\n\n### Authentication Middleware\n\n```ts\n\u002F\u002F utils\u002Fauth.ts\nexport async function requireAuth(request: Request) {\n  const token = request.headers.get(\"Authorization\")?.replace(\"Bearer \", \"\");\n\n  if (!token) {\n    throw new Response(JSON.stringify({ error: \"Unauthorized\" }), {\n      status: 401,\n      headers: { \"Content-Type\": \"application\u002Fjson\" },\n    });\n  }\n\n  \u002F\u002F Verify token...\n  return { userId: \"123\" };\n}\n\n\u002F\u002F app\u002Fapi\u002Fprotected+api.ts\nimport { requireAuth } from \"..\u002F..\u002Futils\u002Fauth\";\n\nexport async function GET(request: Request) {\n  const { userId } = await requireAuth(request);\n  return Response.json({ userId });\n}\n```\n\n### Proxy External API\n\n```ts\n\u002F\u002F app\u002Fapi\u002Fweather+api.ts\nexport async function GET(request: Request) {\n  const url = new URL(request.url);\n  const city = url.searchParams.get(\"city\");\n\n  const response = await fetch(\n    `https:\u002F\u002Fapi.weather.com\u002Fv1\u002Fcurrent?city=${city}&key=${process.env.WEATHER_API_KEY}`\n  );\n\n  return Response.json(await response.json());\n}\n```\n\n## Rules\n\n- NEVER expose API keys or secrets in client code\n- ALWAYS validate and sanitize user input\n- Use proper HTTP status codes (200, 201, 400, 401, 404, 500)\n- Handle errors gracefully with try\u002Fcatch\n- Keep API routes focused — one responsibility per endpoint\n- Use TypeScript for type safety\n- Log errors server-side for debugging\n\n## Submitting Feedback\nIf you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:\n```bash\nnpx --yes submit-expo-feedback@latest --category skills --subject \"eas-hosting\" \"\u003Cactionable feedback>\"\n```\nOnly submit when you have something specific and actionable to report. Include as much relevant context as possible.\n",{"data":35,"body":37},{"name":4,"description":6,"version":36,"license":26},"1.0.0",{"type":38,"children":39},"root",[40,48,74,103,110,115,190,196,201,264,270,291,303,309,468,474,479,1052,1058,1208,1214,1221,1542,1548,1853,1859,2170,2176,2189,2762,2767,2805,2811,2816,3173,3179,3513,3519,3524,3551,3564,3569,3648,3654,3660,3703,3709,3721,3830,3835,3841,3913,3919,3932,3938,3951,3960,4127,4139,4299,4312,4318,4323,4329,4390,4396,4722,4728,4733,4786,4791,5120,5126,5448,5454,5460,6084,6090,6425,6431,6469,6475,6480,6545,6550],{"type":41,"tag":42,"props":43,"children":44},"element","h1",{"id":4},[45],{"type":46,"value":47},"text","EAS Hosting",{"type":41,"tag":49,"props":50,"children":51},"blockquote",{},[52],{"type":41,"tag":53,"props":54,"children":55},"p",{},[56,62,64,72],{"type":41,"tag":57,"props":58,"children":59},"strong",{},[60],{"type":46,"value":61},"EAS service - costs apply.",{"type":46,"value":63}," EAS Hosting is a paid Expo Application Services product with free-tier limits; production deploys use your plan's request and bandwidth allowance. See ",{"type":41,"tag":65,"props":66,"children":70},"a",{"href":67,"rel":68},"https:\u002F\u002Fexpo.dev\u002Fpricing",[69],"nofollow",[71],{"type":46,"value":67},{"type":46,"value":73},". Authoring API routes and exporting the web bundle are free and open source, and you can self-host the exported server output instead of EAS Hosting.",{"type":41,"tag":53,"props":75,"children":76},{},[77,79,84,86,93,95,101],{"type":46,"value":78},"EAS Hosting deploys your Expo ",{"type":41,"tag":57,"props":80,"children":81},{},[82],{"type":46,"value":83},"web app and API routes",{"type":46,"value":85}," to Expo's managed edge (Cloudflare Workers). Export the web bundle with ",{"type":41,"tag":87,"props":88,"children":90},"code",{"className":89},[],[91],{"type":46,"value":92},"npx expo export -p web",{"type":46,"value":94}," and ship it with ",{"type":41,"tag":87,"props":96,"children":98},{"className":97},[],[99],{"type":46,"value":100},"eas deploy",{"type":46,"value":102}," - the same command deploys any Expo Router API routes bundled alongside it. This skill covers deploying a website, authoring API routes, and the hosting runtime; see the Deployment section below for the deploy workflow.",{"type":41,"tag":104,"props":105,"children":107},"h2",{"id":106},"when-to-use-api-routes",[108],{"type":46,"value":109},"When to Use API Routes",{"type":41,"tag":53,"props":111,"children":112},{},[113],{"type":46,"value":114},"Use API routes when you need:",{"type":41,"tag":116,"props":117,"children":118},"ul",{},[119,130,140,150,160,170,180],{"type":41,"tag":120,"props":121,"children":122},"li",{},[123,128],{"type":41,"tag":57,"props":124,"children":125},{},[126],{"type":46,"value":127},"Server-side secrets",{"type":46,"value":129}," — API keys, database credentials, or tokens that must never reach the client",{"type":41,"tag":120,"props":131,"children":132},{},[133,138],{"type":41,"tag":57,"props":134,"children":135},{},[136],{"type":46,"value":137},"Database operations",{"type":46,"value":139}," — Direct database queries that shouldn't be exposed",{"type":41,"tag":120,"props":141,"children":142},{},[143,148],{"type":41,"tag":57,"props":144,"children":145},{},[146],{"type":46,"value":147},"Third-party API proxies",{"type":46,"value":149}," — Hide API keys when calling external services (OpenAI, Stripe, etc.)",{"type":41,"tag":120,"props":151,"children":152},{},[153,158],{"type":41,"tag":57,"props":154,"children":155},{},[156],{"type":46,"value":157},"Server-side validation",{"type":46,"value":159}," — Validate data before database writes",{"type":41,"tag":120,"props":161,"children":162},{},[163,168],{"type":41,"tag":57,"props":164,"children":165},{},[166],{"type":46,"value":167},"Webhook endpoints",{"type":46,"value":169}," — Receive callbacks from services like Stripe or GitHub",{"type":41,"tag":120,"props":171,"children":172},{},[173,178],{"type":41,"tag":57,"props":174,"children":175},{},[176],{"type":46,"value":177},"Rate limiting",{"type":46,"value":179}," — Control access at the server level",{"type":41,"tag":120,"props":181,"children":182},{},[183,188],{"type":41,"tag":57,"props":184,"children":185},{},[186],{"type":46,"value":187},"Heavy computation",{"type":46,"value":189}," — Offload processing that would be slow on mobile",{"type":41,"tag":104,"props":191,"children":193},{"id":192},"when-not-to-use-api-routes",[194],{"type":46,"value":195},"When NOT to Use API Routes",{"type":41,"tag":53,"props":197,"children":198},{},[199],{"type":46,"value":200},"Avoid API routes when:",{"type":41,"tag":116,"props":202,"children":203},{},[204,214,224,234,244,254],{"type":41,"tag":120,"props":205,"children":206},{},[207,212],{"type":41,"tag":57,"props":208,"children":209},{},[210],{"type":46,"value":211},"Data is already public",{"type":46,"value":213}," — Use direct fetch to public APIs instead",{"type":41,"tag":120,"props":215,"children":216},{},[217,222],{"type":41,"tag":57,"props":218,"children":219},{},[220],{"type":46,"value":221},"No secrets required",{"type":46,"value":223}," — Static data or client-safe operations",{"type":41,"tag":120,"props":225,"children":226},{},[227,232],{"type":41,"tag":57,"props":228,"children":229},{},[230],{"type":46,"value":231},"Real-time updates needed",{"type":46,"value":233}," — Use WebSockets or services like Supabase Realtime",{"type":41,"tag":120,"props":235,"children":236},{},[237,242],{"type":41,"tag":57,"props":238,"children":239},{},[240],{"type":46,"value":241},"Simple CRUD",{"type":46,"value":243}," — Consider Firebase, Supabase, or Convex for managed backends",{"type":41,"tag":120,"props":245,"children":246},{},[247,252],{"type":41,"tag":57,"props":248,"children":249},{},[250],{"type":46,"value":251},"File uploads",{"type":46,"value":253}," — Use direct-to-storage uploads (S3 presigned URLs, Cloudflare R2)",{"type":41,"tag":120,"props":255,"children":256},{},[257,262],{"type":41,"tag":57,"props":258,"children":259},{},[260],{"type":46,"value":261},"Authentication only",{"type":46,"value":263}," — Use Clerk, Auth0, or Firebase Auth instead",{"type":41,"tag":104,"props":265,"children":267},{"id":266},"file-structure",[268],{"type":46,"value":269},"File Structure",{"type":41,"tag":53,"props":271,"children":272},{},[273,275,281,283,289],{"type":46,"value":274},"API routes live in the ",{"type":41,"tag":87,"props":276,"children":278},{"className":277},[],[279],{"type":46,"value":280},"app",{"type":46,"value":282}," directory with ",{"type":41,"tag":87,"props":284,"children":286},{"className":285},[],[287],{"type":46,"value":288},"+api.ts",{"type":46,"value":290}," suffix:",{"type":41,"tag":292,"props":293,"children":297},"pre",{"className":294,"code":296,"language":46},[295],"language-text","app\u002F\n  api\u002F\n    hello+api.ts          → GET \u002Fapi\u002Fhello\n    users+api.ts          → \u002Fapi\u002Fusers\n    users\u002F[id]+api.ts     → \u002Fapi\u002Fusers\u002F:id\n  (tabs)\u002F\n    index.tsx\n",[298],{"type":41,"tag":87,"props":299,"children":301},{"__ignoreMap":300},"",[302],{"type":46,"value":296},{"type":41,"tag":104,"props":304,"children":306},{"id":305},"basic-api-route",[307],{"type":46,"value":308},"Basic API Route",{"type":41,"tag":292,"props":310,"children":314},{"className":311,"code":312,"language":313,"meta":300,"style":300},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F app\u002Fapi\u002Fhello+api.ts\nexport function GET(request: Request) {\n  return Response.json({ message: \"Hello from Expo!\" });\n}\n","ts",[315],{"type":41,"tag":87,"props":316,"children":317},{"__ignoreMap":300},[318,330,385,459],{"type":41,"tag":319,"props":320,"children":323},"span",{"class":321,"line":322},"line",1,[324],{"type":41,"tag":319,"props":325,"children":327},{"style":326},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[328],{"type":46,"value":329},"\u002F\u002F app\u002Fapi\u002Fhello+api.ts\n",{"type":41,"tag":319,"props":331,"children":333},{"class":321,"line":332},2,[334,340,346,352,358,364,369,375,380],{"type":41,"tag":319,"props":335,"children":337},{"style":336},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[338],{"type":46,"value":339},"export",{"type":41,"tag":319,"props":341,"children":343},{"style":342},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[344],{"type":46,"value":345}," function",{"type":41,"tag":319,"props":347,"children":349},{"style":348},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[350],{"type":46,"value":351}," GET",{"type":41,"tag":319,"props":353,"children":355},{"style":354},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[356],{"type":46,"value":357},"(",{"type":41,"tag":319,"props":359,"children":361},{"style":360},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[362],{"type":46,"value":363},"request",{"type":41,"tag":319,"props":365,"children":366},{"style":354},[367],{"type":46,"value":368},":",{"type":41,"tag":319,"props":370,"children":372},{"style":371},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[373],{"type":46,"value":374}," Request",{"type":41,"tag":319,"props":376,"children":377},{"style":354},[378],{"type":46,"value":379},")",{"type":41,"tag":319,"props":381,"children":382},{"style":354},[383],{"type":46,"value":384}," {\n",{"type":41,"tag":319,"props":386,"children":388},{"class":321,"line":387},3,[389,394,400,405,410,415,420,425,429,434,440,445,450,454],{"type":41,"tag":319,"props":390,"children":391},{"style":336},[392],{"type":46,"value":393},"  return",{"type":41,"tag":319,"props":395,"children":397},{"style":396},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[398],{"type":46,"value":399}," Response",{"type":41,"tag":319,"props":401,"children":402},{"style":354},[403],{"type":46,"value":404},".",{"type":41,"tag":319,"props":406,"children":407},{"style":348},[408],{"type":46,"value":409},"json",{"type":41,"tag":319,"props":411,"children":413},{"style":412},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[414],{"type":46,"value":357},{"type":41,"tag":319,"props":416,"children":417},{"style":354},[418],{"type":46,"value":419},"{",{"type":41,"tag":319,"props":421,"children":422},{"style":412},[423],{"type":46,"value":424}," message",{"type":41,"tag":319,"props":426,"children":427},{"style":354},[428],{"type":46,"value":368},{"type":41,"tag":319,"props":430,"children":431},{"style":354},[432],{"type":46,"value":433}," \"",{"type":41,"tag":319,"props":435,"children":437},{"style":436},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[438],{"type":46,"value":439},"Hello from Expo!",{"type":41,"tag":319,"props":441,"children":442},{"style":354},[443],{"type":46,"value":444},"\"",{"type":41,"tag":319,"props":446,"children":447},{"style":354},[448],{"type":46,"value":449}," }",{"type":41,"tag":319,"props":451,"children":452},{"style":412},[453],{"type":46,"value":379},{"type":41,"tag":319,"props":455,"children":456},{"style":354},[457],{"type":46,"value":458},";\n",{"type":41,"tag":319,"props":460,"children":462},{"class":321,"line":461},4,[463],{"type":41,"tag":319,"props":464,"children":465},{"style":354},[466],{"type":46,"value":467},"}\n",{"type":41,"tag":104,"props":469,"children":471},{"id":470},"http-methods",[472],{"type":46,"value":473},"HTTP Methods",{"type":41,"tag":53,"props":475,"children":476},{},[477],{"type":46,"value":478},"Export named functions for each HTTP method:",{"type":41,"tag":292,"props":480,"children":482},{"className":311,"code":481,"language":313,"meta":300,"style":300},"\u002F\u002F app\u002Fapi\u002Fitems+api.ts\nexport function GET(request: Request) {\n  return Response.json({ items: [] });\n}\n\nexport async function POST(request: Request) {\n  const body = await request.json();\n  return Response.json({ created: body }, { status: 201 });\n}\n\nexport async function PUT(request: Request) {\n  const body = await request.json();\n  return Response.json({ updated: body });\n}\n\nexport async function DELETE(request: Request) {\n  return new Response(null, { status: 204 });\n}\n",[483],{"type":41,"tag":87,"props":484,"children":485},{"__ignoreMap":300},[486,494,533,587,594,604,650,696,774,782,790,835,875,928,936,944,989,1044],{"type":41,"tag":319,"props":487,"children":488},{"class":321,"line":322},[489],{"type":41,"tag":319,"props":490,"children":491},{"style":326},[492],{"type":46,"value":493},"\u002F\u002F app\u002Fapi\u002Fitems+api.ts\n",{"type":41,"tag":319,"props":495,"children":496},{"class":321,"line":332},[497,501,505,509,513,517,521,525,529],{"type":41,"tag":319,"props":498,"children":499},{"style":336},[500],{"type":46,"value":339},{"type":41,"tag":319,"props":502,"children":503},{"style":342},[504],{"type":46,"value":345},{"type":41,"tag":319,"props":506,"children":507},{"style":348},[508],{"type":46,"value":351},{"type":41,"tag":319,"props":510,"children":511},{"style":354},[512],{"type":46,"value":357},{"type":41,"tag":319,"props":514,"children":515},{"style":360},[516],{"type":46,"value":363},{"type":41,"tag":319,"props":518,"children":519},{"style":354},[520],{"type":46,"value":368},{"type":41,"tag":319,"props":522,"children":523},{"style":371},[524],{"type":46,"value":374},{"type":41,"tag":319,"props":526,"children":527},{"style":354},[528],{"type":46,"value":379},{"type":41,"tag":319,"props":530,"children":531},{"style":354},[532],{"type":46,"value":384},{"type":41,"tag":319,"props":534,"children":535},{"class":321,"line":387},[536,540,544,548,552,556,560,565,569,574,579,583],{"type":41,"tag":319,"props":537,"children":538},{"style":336},[539],{"type":46,"value":393},{"type":41,"tag":319,"props":541,"children":542},{"style":396},[543],{"type":46,"value":399},{"type":41,"tag":319,"props":545,"children":546},{"style":354},[547],{"type":46,"value":404},{"type":41,"tag":319,"props":549,"children":550},{"style":348},[551],{"type":46,"value":409},{"type":41,"tag":319,"props":553,"children":554},{"style":412},[555],{"type":46,"value":357},{"type":41,"tag":319,"props":557,"children":558},{"style":354},[559],{"type":46,"value":419},{"type":41,"tag":319,"props":561,"children":562},{"style":412},[563],{"type":46,"value":564}," items",{"type":41,"tag":319,"props":566,"children":567},{"style":354},[568],{"type":46,"value":368},{"type":41,"tag":319,"props":570,"children":571},{"style":412},[572],{"type":46,"value":573}," [] ",{"type":41,"tag":319,"props":575,"children":576},{"style":354},[577],{"type":46,"value":578},"}",{"type":41,"tag":319,"props":580,"children":581},{"style":412},[582],{"type":46,"value":379},{"type":41,"tag":319,"props":584,"children":585},{"style":354},[586],{"type":46,"value":458},{"type":41,"tag":319,"props":588,"children":589},{"class":321,"line":461},[590],{"type":41,"tag":319,"props":591,"children":592},{"style":354},[593],{"type":46,"value":467},{"type":41,"tag":319,"props":595,"children":597},{"class":321,"line":596},5,[598],{"type":41,"tag":319,"props":599,"children":601},{"emptyLinePlaceholder":600},true,[602],{"type":46,"value":603},"\n",{"type":41,"tag":319,"props":605,"children":607},{"class":321,"line":606},6,[608,612,617,621,626,630,634,638,642,646],{"type":41,"tag":319,"props":609,"children":610},{"style":336},[611],{"type":46,"value":339},{"type":41,"tag":319,"props":613,"children":614},{"style":342},[615],{"type":46,"value":616}," async",{"type":41,"tag":319,"props":618,"children":619},{"style":342},[620],{"type":46,"value":345},{"type":41,"tag":319,"props":622,"children":623},{"style":348},[624],{"type":46,"value":625}," POST",{"type":41,"tag":319,"props":627,"children":628},{"style":354},[629],{"type":46,"value":357},{"type":41,"tag":319,"props":631,"children":632},{"style":360},[633],{"type":46,"value":363},{"type":41,"tag":319,"props":635,"children":636},{"style":354},[637],{"type":46,"value":368},{"type":41,"tag":319,"props":639,"children":640},{"style":371},[641],{"type":46,"value":374},{"type":41,"tag":319,"props":643,"children":644},{"style":354},[645],{"type":46,"value":379},{"type":41,"tag":319,"props":647,"children":648},{"style":354},[649],{"type":46,"value":384},{"type":41,"tag":319,"props":651,"children":653},{"class":321,"line":652},7,[654,659,664,669,674,679,683,687,692],{"type":41,"tag":319,"props":655,"children":656},{"style":342},[657],{"type":46,"value":658},"  const",{"type":41,"tag":319,"props":660,"children":661},{"style":396},[662],{"type":46,"value":663}," body",{"type":41,"tag":319,"props":665,"children":666},{"style":354},[667],{"type":46,"value":668}," =",{"type":41,"tag":319,"props":670,"children":671},{"style":336},[672],{"type":46,"value":673}," await",{"type":41,"tag":319,"props":675,"children":676},{"style":396},[677],{"type":46,"value":678}," request",{"type":41,"tag":319,"props":680,"children":681},{"style":354},[682],{"type":46,"value":404},{"type":41,"tag":319,"props":684,"children":685},{"style":348},[686],{"type":46,"value":409},{"type":41,"tag":319,"props":688,"children":689},{"style":412},[690],{"type":46,"value":691},"()",{"type":41,"tag":319,"props":693,"children":694},{"style":354},[695],{"type":46,"value":458},{"type":41,"tag":319,"props":697,"children":699},{"class":321,"line":698},8,[700,704,708,712,716,720,724,729,733,737,742,747,752,756,762,766,770],{"type":41,"tag":319,"props":701,"children":702},{"style":336},[703],{"type":46,"value":393},{"type":41,"tag":319,"props":705,"children":706},{"style":396},[707],{"type":46,"value":399},{"type":41,"tag":319,"props":709,"children":710},{"style":354},[711],{"type":46,"value":404},{"type":41,"tag":319,"props":713,"children":714},{"style":348},[715],{"type":46,"value":409},{"type":41,"tag":319,"props":717,"children":718},{"style":412},[719],{"type":46,"value":357},{"type":41,"tag":319,"props":721,"children":722},{"style":354},[723],{"type":46,"value":419},{"type":41,"tag":319,"props":725,"children":726},{"style":412},[727],{"type":46,"value":728}," created",{"type":41,"tag":319,"props":730,"children":731},{"style":354},[732],{"type":46,"value":368},{"type":41,"tag":319,"props":734,"children":735},{"style":396},[736],{"type":46,"value":663},{"type":41,"tag":319,"props":738,"children":739},{"style":354},[740],{"type":46,"value":741}," },",{"type":41,"tag":319,"props":743,"children":744},{"style":354},[745],{"type":46,"value":746}," {",{"type":41,"tag":319,"props":748,"children":749},{"style":412},[750],{"type":46,"value":751}," status",{"type":41,"tag":319,"props":753,"children":754},{"style":354},[755],{"type":46,"value":368},{"type":41,"tag":319,"props":757,"children":759},{"style":758},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[760],{"type":46,"value":761}," 201",{"type":41,"tag":319,"props":763,"children":764},{"style":354},[765],{"type":46,"value":449},{"type":41,"tag":319,"props":767,"children":768},{"style":412},[769],{"type":46,"value":379},{"type":41,"tag":319,"props":771,"children":772},{"style":354},[773],{"type":46,"value":458},{"type":41,"tag":319,"props":775,"children":777},{"class":321,"line":776},9,[778],{"type":41,"tag":319,"props":779,"children":780},{"style":354},[781],{"type":46,"value":467},{"type":41,"tag":319,"props":783,"children":785},{"class":321,"line":784},10,[786],{"type":41,"tag":319,"props":787,"children":788},{"emptyLinePlaceholder":600},[789],{"type":46,"value":603},{"type":41,"tag":319,"props":791,"children":793},{"class":321,"line":792},11,[794,798,802,806,811,815,819,823,827,831],{"type":41,"tag":319,"props":795,"children":796},{"style":336},[797],{"type":46,"value":339},{"type":41,"tag":319,"props":799,"children":800},{"style":342},[801],{"type":46,"value":616},{"type":41,"tag":319,"props":803,"children":804},{"style":342},[805],{"type":46,"value":345},{"type":41,"tag":319,"props":807,"children":808},{"style":348},[809],{"type":46,"value":810}," PUT",{"type":41,"tag":319,"props":812,"children":813},{"style":354},[814],{"type":46,"value":357},{"type":41,"tag":319,"props":816,"children":817},{"style":360},[818],{"type":46,"value":363},{"type":41,"tag":319,"props":820,"children":821},{"style":354},[822],{"type":46,"value":368},{"type":41,"tag":319,"props":824,"children":825},{"style":371},[826],{"type":46,"value":374},{"type":41,"tag":319,"props":828,"children":829},{"style":354},[830],{"type":46,"value":379},{"type":41,"tag":319,"props":832,"children":833},{"style":354},[834],{"type":46,"value":384},{"type":41,"tag":319,"props":836,"children":838},{"class":321,"line":837},12,[839,843,847,851,855,859,863,867,871],{"type":41,"tag":319,"props":840,"children":841},{"style":342},[842],{"type":46,"value":658},{"type":41,"tag":319,"props":844,"children":845},{"style":396},[846],{"type":46,"value":663},{"type":41,"tag":319,"props":848,"children":849},{"style":354},[850],{"type":46,"value":668},{"type":41,"tag":319,"props":852,"children":853},{"style":336},[854],{"type":46,"value":673},{"type":41,"tag":319,"props":856,"children":857},{"style":396},[858],{"type":46,"value":678},{"type":41,"tag":319,"props":860,"children":861},{"style":354},[862],{"type":46,"value":404},{"type":41,"tag":319,"props":864,"children":865},{"style":348},[866],{"type":46,"value":409},{"type":41,"tag":319,"props":868,"children":869},{"style":412},[870],{"type":46,"value":691},{"type":41,"tag":319,"props":872,"children":873},{"style":354},[874],{"type":46,"value":458},{"type":41,"tag":319,"props":876,"children":878},{"class":321,"line":877},13,[879,883,887,891,895,899,903,908,912,916,920,924],{"type":41,"tag":319,"props":880,"children":881},{"style":336},[882],{"type":46,"value":393},{"type":41,"tag":319,"props":884,"children":885},{"style":396},[886],{"type":46,"value":399},{"type":41,"tag":319,"props":888,"children":889},{"style":354},[890],{"type":46,"value":404},{"type":41,"tag":319,"props":892,"children":893},{"style":348},[894],{"type":46,"value":409},{"type":41,"tag":319,"props":896,"children":897},{"style":412},[898],{"type":46,"value":357},{"type":41,"tag":319,"props":900,"children":901},{"style":354},[902],{"type":46,"value":419},{"type":41,"tag":319,"props":904,"children":905},{"style":412},[906],{"type":46,"value":907}," updated",{"type":41,"tag":319,"props":909,"children":910},{"style":354},[911],{"type":46,"value":368},{"type":41,"tag":319,"props":913,"children":914},{"style":396},[915],{"type":46,"value":663},{"type":41,"tag":319,"props":917,"children":918},{"style":354},[919],{"type":46,"value":449},{"type":41,"tag":319,"props":921,"children":922},{"style":412},[923],{"type":46,"value":379},{"type":41,"tag":319,"props":925,"children":926},{"style":354},[927],{"type":46,"value":458},{"type":41,"tag":319,"props":929,"children":931},{"class":321,"line":930},14,[932],{"type":41,"tag":319,"props":933,"children":934},{"style":354},[935],{"type":46,"value":467},{"type":41,"tag":319,"props":937,"children":939},{"class":321,"line":938},15,[940],{"type":41,"tag":319,"props":941,"children":942},{"emptyLinePlaceholder":600},[943],{"type":46,"value":603},{"type":41,"tag":319,"props":945,"children":947},{"class":321,"line":946},16,[948,952,956,960,965,969,973,977,981,985],{"type":41,"tag":319,"props":949,"children":950},{"style":336},[951],{"type":46,"value":339},{"type":41,"tag":319,"props":953,"children":954},{"style":342},[955],{"type":46,"value":616},{"type":41,"tag":319,"props":957,"children":958},{"style":342},[959],{"type":46,"value":345},{"type":41,"tag":319,"props":961,"children":962},{"style":348},[963],{"type":46,"value":964}," DELETE",{"type":41,"tag":319,"props":966,"children":967},{"style":354},[968],{"type":46,"value":357},{"type":41,"tag":319,"props":970,"children":971},{"style":360},[972],{"type":46,"value":363},{"type":41,"tag":319,"props":974,"children":975},{"style":354},[976],{"type":46,"value":368},{"type":41,"tag":319,"props":978,"children":979},{"style":371},[980],{"type":46,"value":374},{"type":41,"tag":319,"props":982,"children":983},{"style":354},[984],{"type":46,"value":379},{"type":41,"tag":319,"props":986,"children":987},{"style":354},[988],{"type":46,"value":384},{"type":41,"tag":319,"props":990,"children":992},{"class":321,"line":991},17,[993,997,1002,1006,1010,1015,1019,1023,1027,1032,1036,1040],{"type":41,"tag":319,"props":994,"children":995},{"style":336},[996],{"type":46,"value":393},{"type":41,"tag":319,"props":998,"children":999},{"style":354},[1000],{"type":46,"value":1001}," new",{"type":41,"tag":319,"props":1003,"children":1004},{"style":348},[1005],{"type":46,"value":399},{"type":41,"tag":319,"props":1007,"children":1008},{"style":412},[1009],{"type":46,"value":357},{"type":41,"tag":319,"props":1011,"children":1012},{"style":354},[1013],{"type":46,"value":1014},"null,",{"type":41,"tag":319,"props":1016,"children":1017},{"style":354},[1018],{"type":46,"value":746},{"type":41,"tag":319,"props":1020,"children":1021},{"style":412},[1022],{"type":46,"value":751},{"type":41,"tag":319,"props":1024,"children":1025},{"style":354},[1026],{"type":46,"value":368},{"type":41,"tag":319,"props":1028,"children":1029},{"style":758},[1030],{"type":46,"value":1031}," 204",{"type":41,"tag":319,"props":1033,"children":1034},{"style":354},[1035],{"type":46,"value":449},{"type":41,"tag":319,"props":1037,"children":1038},{"style":412},[1039],{"type":46,"value":379},{"type":41,"tag":319,"props":1041,"children":1042},{"style":354},[1043],{"type":46,"value":458},{"type":41,"tag":319,"props":1045,"children":1047},{"class":321,"line":1046},18,[1048],{"type":41,"tag":319,"props":1049,"children":1050},{"style":354},[1051],{"type":46,"value":467},{"type":41,"tag":104,"props":1053,"children":1055},{"id":1054},"dynamic-routes",[1056],{"type":46,"value":1057},"Dynamic Routes",{"type":41,"tag":292,"props":1059,"children":1061},{"className":311,"code":1060,"language":313,"meta":300,"style":300},"\u002F\u002F app\u002Fapi\u002Fusers\u002F[id]+api.ts\nexport function GET(request: Request, { id }: { id: string }) {\n  return Response.json({ userId: id });\n}\n",[1062],{"type":41,"tag":87,"props":1063,"children":1064},{"__ignoreMap":300},[1065,1073,1149,1201],{"type":41,"tag":319,"props":1066,"children":1067},{"class":321,"line":322},[1068],{"type":41,"tag":319,"props":1069,"children":1070},{"style":326},[1071],{"type":46,"value":1072},"\u002F\u002F app\u002Fapi\u002Fusers\u002F[id]+api.ts\n",{"type":41,"tag":319,"props":1074,"children":1075},{"class":321,"line":332},[1076,1080,1084,1088,1092,1096,1100,1104,1109,1113,1118,1123,1127,1131,1135,1140,1145],{"type":41,"tag":319,"props":1077,"children":1078},{"style":336},[1079],{"type":46,"value":339},{"type":41,"tag":319,"props":1081,"children":1082},{"style":342},[1083],{"type":46,"value":345},{"type":41,"tag":319,"props":1085,"children":1086},{"style":348},[1087],{"type":46,"value":351},{"type":41,"tag":319,"props":1089,"children":1090},{"style":354},[1091],{"type":46,"value":357},{"type":41,"tag":319,"props":1093,"children":1094},{"style":360},[1095],{"type":46,"value":363},{"type":41,"tag":319,"props":1097,"children":1098},{"style":354},[1099],{"type":46,"value":368},{"type":41,"tag":319,"props":1101,"children":1102},{"style":371},[1103],{"type":46,"value":374},{"type":41,"tag":319,"props":1105,"children":1106},{"style":354},[1107],{"type":46,"value":1108},",",{"type":41,"tag":319,"props":1110,"children":1111},{"style":354},[1112],{"type":46,"value":746},{"type":41,"tag":319,"props":1114,"children":1115},{"style":360},[1116],{"type":46,"value":1117}," id",{"type":41,"tag":319,"props":1119,"children":1120},{"style":354},[1121],{"type":46,"value":1122}," }:",{"type":41,"tag":319,"props":1124,"children":1125},{"style":354},[1126],{"type":46,"value":746},{"type":41,"tag":319,"props":1128,"children":1129},{"style":412},[1130],{"type":46,"value":1117},{"type":41,"tag":319,"props":1132,"children":1133},{"style":354},[1134],{"type":46,"value":368},{"type":41,"tag":319,"props":1136,"children":1137},{"style":371},[1138],{"type":46,"value":1139}," string",{"type":41,"tag":319,"props":1141,"children":1142},{"style":354},[1143],{"type":46,"value":1144}," })",{"type":41,"tag":319,"props":1146,"children":1147},{"style":354},[1148],{"type":46,"value":384},{"type":41,"tag":319,"props":1150,"children":1151},{"class":321,"line":387},[1152,1156,1160,1164,1168,1172,1176,1181,1185,1189,1193,1197],{"type":41,"tag":319,"props":1153,"children":1154},{"style":336},[1155],{"type":46,"value":393},{"type":41,"tag":319,"props":1157,"children":1158},{"style":396},[1159],{"type":46,"value":399},{"type":41,"tag":319,"props":1161,"children":1162},{"style":354},[1163],{"type":46,"value":404},{"type":41,"tag":319,"props":1165,"children":1166},{"style":348},[1167],{"type":46,"value":409},{"type":41,"tag":319,"props":1169,"children":1170},{"style":412},[1171],{"type":46,"value":357},{"type":41,"tag":319,"props":1173,"children":1174},{"style":354},[1175],{"type":46,"value":419},{"type":41,"tag":319,"props":1177,"children":1178},{"style":412},[1179],{"type":46,"value":1180}," userId",{"type":41,"tag":319,"props":1182,"children":1183},{"style":354},[1184],{"type":46,"value":368},{"type":41,"tag":319,"props":1186,"children":1187},{"style":396},[1188],{"type":46,"value":1117},{"type":41,"tag":319,"props":1190,"children":1191},{"style":354},[1192],{"type":46,"value":449},{"type":41,"tag":319,"props":1194,"children":1195},{"style":412},[1196],{"type":46,"value":379},{"type":41,"tag":319,"props":1198,"children":1199},{"style":354},[1200],{"type":46,"value":458},{"type":41,"tag":319,"props":1202,"children":1203},{"class":321,"line":461},[1204],{"type":41,"tag":319,"props":1205,"children":1206},{"style":354},[1207],{"type":46,"value":467},{"type":41,"tag":104,"props":1209,"children":1211},{"id":1210},"request-handling",[1212],{"type":46,"value":1213},"Request Handling",{"type":41,"tag":1215,"props":1216,"children":1218},"h3",{"id":1217},"query-parameters",[1219],{"type":46,"value":1220},"Query Parameters",{"type":41,"tag":292,"props":1222,"children":1224},{"className":311,"code":1223,"language":313,"meta":300,"style":300},"export function GET(request: Request) {\n  const url = new URL(request.url);\n  const page = url.searchParams.get(\"page\") ?? \"1\";\n  const limit = url.searchParams.get(\"limit\") ?? \"10\";\n\n  return Response.json({ page, limit });\n}\n",[1225],{"type":41,"tag":87,"props":1226,"children":1227},{"__ignoreMap":300},[1228,1267,1317,1399,1477,1484,1535],{"type":41,"tag":319,"props":1229,"children":1230},{"class":321,"line":322},[1231,1235,1239,1243,1247,1251,1255,1259,1263],{"type":41,"tag":319,"props":1232,"children":1233},{"style":336},[1234],{"type":46,"value":339},{"type":41,"tag":319,"props":1236,"children":1237},{"style":342},[1238],{"type":46,"value":345},{"type":41,"tag":319,"props":1240,"children":1241},{"style":348},[1242],{"type":46,"value":351},{"type":41,"tag":319,"props":1244,"children":1245},{"style":354},[1246],{"type":46,"value":357},{"type":41,"tag":319,"props":1248,"children":1249},{"style":360},[1250],{"type":46,"value":363},{"type":41,"tag":319,"props":1252,"children":1253},{"style":354},[1254],{"type":46,"value":368},{"type":41,"tag":319,"props":1256,"children":1257},{"style":371},[1258],{"type":46,"value":374},{"type":41,"tag":319,"props":1260,"children":1261},{"style":354},[1262],{"type":46,"value":379},{"type":41,"tag":319,"props":1264,"children":1265},{"style":354},[1266],{"type":46,"value":384},{"type":41,"tag":319,"props":1268,"children":1269},{"class":321,"line":332},[1270,1274,1279,1283,1287,1292,1296,1300,1304,1309,1313],{"type":41,"tag":319,"props":1271,"children":1272},{"style":342},[1273],{"type":46,"value":658},{"type":41,"tag":319,"props":1275,"children":1276},{"style":396},[1277],{"type":46,"value":1278}," url",{"type":41,"tag":319,"props":1280,"children":1281},{"style":354},[1282],{"type":46,"value":668},{"type":41,"tag":319,"props":1284,"children":1285},{"style":354},[1286],{"type":46,"value":1001},{"type":41,"tag":319,"props":1288,"children":1289},{"style":348},[1290],{"type":46,"value":1291}," URL",{"type":41,"tag":319,"props":1293,"children":1294},{"style":412},[1295],{"type":46,"value":357},{"type":41,"tag":319,"props":1297,"children":1298},{"style":396},[1299],{"type":46,"value":363},{"type":41,"tag":319,"props":1301,"children":1302},{"style":354},[1303],{"type":46,"value":404},{"type":41,"tag":319,"props":1305,"children":1306},{"style":396},[1307],{"type":46,"value":1308},"url",{"type":41,"tag":319,"props":1310,"children":1311},{"style":412},[1312],{"type":46,"value":379},{"type":41,"tag":319,"props":1314,"children":1315},{"style":354},[1316],{"type":46,"value":458},{"type":41,"tag":319,"props":1318,"children":1319},{"class":321,"line":387},[1320,1324,1329,1333,1337,1341,1346,1350,1355,1359,1363,1368,1372,1377,1382,1386,1391,1395],{"type":41,"tag":319,"props":1321,"children":1322},{"style":342},[1323],{"type":46,"value":658},{"type":41,"tag":319,"props":1325,"children":1326},{"style":396},[1327],{"type":46,"value":1328}," page",{"type":41,"tag":319,"props":1330,"children":1331},{"style":354},[1332],{"type":46,"value":668},{"type":41,"tag":319,"props":1334,"children":1335},{"style":396},[1336],{"type":46,"value":1278},{"type":41,"tag":319,"props":1338,"children":1339},{"style":354},[1340],{"type":46,"value":404},{"type":41,"tag":319,"props":1342,"children":1343},{"style":396},[1344],{"type":46,"value":1345},"searchParams",{"type":41,"tag":319,"props":1347,"children":1348},{"style":354},[1349],{"type":46,"value":404},{"type":41,"tag":319,"props":1351,"children":1352},{"style":348},[1353],{"type":46,"value":1354},"get",{"type":41,"tag":319,"props":1356,"children":1357},{"style":412},[1358],{"type":46,"value":357},{"type":41,"tag":319,"props":1360,"children":1361},{"style":354},[1362],{"type":46,"value":444},{"type":41,"tag":319,"props":1364,"children":1365},{"style":436},[1366],{"type":46,"value":1367},"page",{"type":41,"tag":319,"props":1369,"children":1370},{"style":354},[1371],{"type":46,"value":444},{"type":41,"tag":319,"props":1373,"children":1374},{"style":412},[1375],{"type":46,"value":1376},") ",{"type":41,"tag":319,"props":1378,"children":1379},{"style":354},[1380],{"type":46,"value":1381},"??",{"type":41,"tag":319,"props":1383,"children":1384},{"style":354},[1385],{"type":46,"value":433},{"type":41,"tag":319,"props":1387,"children":1388},{"style":436},[1389],{"type":46,"value":1390},"1",{"type":41,"tag":319,"props":1392,"children":1393},{"style":354},[1394],{"type":46,"value":444},{"type":41,"tag":319,"props":1396,"children":1397},{"style":354},[1398],{"type":46,"value":458},{"type":41,"tag":319,"props":1400,"children":1401},{"class":321,"line":461},[1402,1406,1411,1415,1419,1423,1427,1431,1435,1439,1443,1448,1452,1456,1460,1464,1469,1473],{"type":41,"tag":319,"props":1403,"children":1404},{"style":342},[1405],{"type":46,"value":658},{"type":41,"tag":319,"props":1407,"children":1408},{"style":396},[1409],{"type":46,"value":1410}," limit",{"type":41,"tag":319,"props":1412,"children":1413},{"style":354},[1414],{"type":46,"value":668},{"type":41,"tag":319,"props":1416,"children":1417},{"style":396},[1418],{"type":46,"value":1278},{"type":41,"tag":319,"props":1420,"children":1421},{"style":354},[1422],{"type":46,"value":404},{"type":41,"tag":319,"props":1424,"children":1425},{"style":396},[1426],{"type":46,"value":1345},{"type":41,"tag":319,"props":1428,"children":1429},{"style":354},[1430],{"type":46,"value":404},{"type":41,"tag":319,"props":1432,"children":1433},{"style":348},[1434],{"type":46,"value":1354},{"type":41,"tag":319,"props":1436,"children":1437},{"style":412},[1438],{"type":46,"value":357},{"type":41,"tag":319,"props":1440,"children":1441},{"style":354},[1442],{"type":46,"value":444},{"type":41,"tag":319,"props":1444,"children":1445},{"style":436},[1446],{"type":46,"value":1447},"limit",{"type":41,"tag":319,"props":1449,"children":1450},{"style":354},[1451],{"type":46,"value":444},{"type":41,"tag":319,"props":1453,"children":1454},{"style":412},[1455],{"type":46,"value":1376},{"type":41,"tag":319,"props":1457,"children":1458},{"style":354},[1459],{"type":46,"value":1381},{"type":41,"tag":319,"props":1461,"children":1462},{"style":354},[1463],{"type":46,"value":433},{"type":41,"tag":319,"props":1465,"children":1466},{"style":436},[1467],{"type":46,"value":1468},"10",{"type":41,"tag":319,"props":1470,"children":1471},{"style":354},[1472],{"type":46,"value":444},{"type":41,"tag":319,"props":1474,"children":1475},{"style":354},[1476],{"type":46,"value":458},{"type":41,"tag":319,"props":1478,"children":1479},{"class":321,"line":596},[1480],{"type":41,"tag":319,"props":1481,"children":1482},{"emptyLinePlaceholder":600},[1483],{"type":46,"value":603},{"type":41,"tag":319,"props":1485,"children":1486},{"class":321,"line":606},[1487,1491,1495,1499,1503,1507,1511,1515,1519,1523,1527,1531],{"type":41,"tag":319,"props":1488,"children":1489},{"style":336},[1490],{"type":46,"value":393},{"type":41,"tag":319,"props":1492,"children":1493},{"style":396},[1494],{"type":46,"value":399},{"type":41,"tag":319,"props":1496,"children":1497},{"style":354},[1498],{"type":46,"value":404},{"type":41,"tag":319,"props":1500,"children":1501},{"style":348},[1502],{"type":46,"value":409},{"type":41,"tag":319,"props":1504,"children":1505},{"style":412},[1506],{"type":46,"value":357},{"type":41,"tag":319,"props":1508,"children":1509},{"style":354},[1510],{"type":46,"value":419},{"type":41,"tag":319,"props":1512,"children":1513},{"style":396},[1514],{"type":46,"value":1328},{"type":41,"tag":319,"props":1516,"children":1517},{"style":354},[1518],{"type":46,"value":1108},{"type":41,"tag":319,"props":1520,"children":1521},{"style":396},[1522],{"type":46,"value":1410},{"type":41,"tag":319,"props":1524,"children":1525},{"style":354},[1526],{"type":46,"value":449},{"type":41,"tag":319,"props":1528,"children":1529},{"style":412},[1530],{"type":46,"value":379},{"type":41,"tag":319,"props":1532,"children":1533},{"style":354},[1534],{"type":46,"value":458},{"type":41,"tag":319,"props":1536,"children":1537},{"class":321,"line":652},[1538],{"type":41,"tag":319,"props":1539,"children":1540},{"style":354},[1541],{"type":46,"value":467},{"type":41,"tag":1215,"props":1543,"children":1545},{"id":1544},"headers",[1546],{"type":46,"value":1547},"Headers",{"type":41,"tag":292,"props":1549,"children":1551},{"className":311,"code":1550,"language":313,"meta":300,"style":300},"export function GET(request: Request) {\n  const auth = request.headers.get(\"Authorization\");\n\n  if (!auth) {\n    return Response.json({ error: \"Unauthorized\" }, { status: 401 });\n  }\n\n  return Response.json({ authenticated: true });\n}\n",[1552],{"type":41,"tag":87,"props":1553,"children":1554},{"__ignoreMap":300},[1555,1594,1655,1662,1694,1777,1785,1792,1846],{"type":41,"tag":319,"props":1556,"children":1557},{"class":321,"line":322},[1558,1562,1566,1570,1574,1578,1582,1586,1590],{"type":41,"tag":319,"props":1559,"children":1560},{"style":336},[1561],{"type":46,"value":339},{"type":41,"tag":319,"props":1563,"children":1564},{"style":342},[1565],{"type":46,"value":345},{"type":41,"tag":319,"props":1567,"children":1568},{"style":348},[1569],{"type":46,"value":351},{"type":41,"tag":319,"props":1571,"children":1572},{"style":354},[1573],{"type":46,"value":357},{"type":41,"tag":319,"props":1575,"children":1576},{"style":360},[1577],{"type":46,"value":363},{"type":41,"tag":319,"props":1579,"children":1580},{"style":354},[1581],{"type":46,"value":368},{"type":41,"tag":319,"props":1583,"children":1584},{"style":371},[1585],{"type":46,"value":374},{"type":41,"tag":319,"props":1587,"children":1588},{"style":354},[1589],{"type":46,"value":379},{"type":41,"tag":319,"props":1591,"children":1592},{"style":354},[1593],{"type":46,"value":384},{"type":41,"tag":319,"props":1595,"children":1596},{"class":321,"line":332},[1597,1601,1606,1610,1614,1618,1622,1626,1630,1634,1638,1643,1647,1651],{"type":41,"tag":319,"props":1598,"children":1599},{"style":342},[1600],{"type":46,"value":658},{"type":41,"tag":319,"props":1602,"children":1603},{"style":396},[1604],{"type":46,"value":1605}," auth",{"type":41,"tag":319,"props":1607,"children":1608},{"style":354},[1609],{"type":46,"value":668},{"type":41,"tag":319,"props":1611,"children":1612},{"style":396},[1613],{"type":46,"value":678},{"type":41,"tag":319,"props":1615,"children":1616},{"style":354},[1617],{"type":46,"value":404},{"type":41,"tag":319,"props":1619,"children":1620},{"style":396},[1621],{"type":46,"value":1544},{"type":41,"tag":319,"props":1623,"children":1624},{"style":354},[1625],{"type":46,"value":404},{"type":41,"tag":319,"props":1627,"children":1628},{"style":348},[1629],{"type":46,"value":1354},{"type":41,"tag":319,"props":1631,"children":1632},{"style":412},[1633],{"type":46,"value":357},{"type":41,"tag":319,"props":1635,"children":1636},{"style":354},[1637],{"type":46,"value":444},{"type":41,"tag":319,"props":1639,"children":1640},{"style":436},[1641],{"type":46,"value":1642},"Authorization",{"type":41,"tag":319,"props":1644,"children":1645},{"style":354},[1646],{"type":46,"value":444},{"type":41,"tag":319,"props":1648,"children":1649},{"style":412},[1650],{"type":46,"value":379},{"type":41,"tag":319,"props":1652,"children":1653},{"style":354},[1654],{"type":46,"value":458},{"type":41,"tag":319,"props":1656,"children":1657},{"class":321,"line":387},[1658],{"type":41,"tag":319,"props":1659,"children":1660},{"emptyLinePlaceholder":600},[1661],{"type":46,"value":603},{"type":41,"tag":319,"props":1663,"children":1664},{"class":321,"line":461},[1665,1670,1675,1680,1685,1689],{"type":41,"tag":319,"props":1666,"children":1667},{"style":336},[1668],{"type":46,"value":1669},"  if",{"type":41,"tag":319,"props":1671,"children":1672},{"style":412},[1673],{"type":46,"value":1674}," (",{"type":41,"tag":319,"props":1676,"children":1677},{"style":354},[1678],{"type":46,"value":1679},"!",{"type":41,"tag":319,"props":1681,"children":1682},{"style":396},[1683],{"type":46,"value":1684},"auth",{"type":41,"tag":319,"props":1686,"children":1687},{"style":412},[1688],{"type":46,"value":1376},{"type":41,"tag":319,"props":1690,"children":1691},{"style":354},[1692],{"type":46,"value":1693},"{\n",{"type":41,"tag":319,"props":1695,"children":1696},{"class":321,"line":596},[1697,1702,1706,1710,1714,1718,1722,1727,1731,1735,1740,1744,1748,1752,1756,1760,1765,1769,1773],{"type":41,"tag":319,"props":1698,"children":1699},{"style":336},[1700],{"type":46,"value":1701},"    return",{"type":41,"tag":319,"props":1703,"children":1704},{"style":396},[1705],{"type":46,"value":399},{"type":41,"tag":319,"props":1707,"children":1708},{"style":354},[1709],{"type":46,"value":404},{"type":41,"tag":319,"props":1711,"children":1712},{"style":348},[1713],{"type":46,"value":409},{"type":41,"tag":319,"props":1715,"children":1716},{"style":412},[1717],{"type":46,"value":357},{"type":41,"tag":319,"props":1719,"children":1720},{"style":354},[1721],{"type":46,"value":419},{"type":41,"tag":319,"props":1723,"children":1724},{"style":412},[1725],{"type":46,"value":1726}," error",{"type":41,"tag":319,"props":1728,"children":1729},{"style":354},[1730],{"type":46,"value":368},{"type":41,"tag":319,"props":1732,"children":1733},{"style":354},[1734],{"type":46,"value":433},{"type":41,"tag":319,"props":1736,"children":1737},{"style":436},[1738],{"type":46,"value":1739},"Unauthorized",{"type":41,"tag":319,"props":1741,"children":1742},{"style":354},[1743],{"type":46,"value":444},{"type":41,"tag":319,"props":1745,"children":1746},{"style":354},[1747],{"type":46,"value":741},{"type":41,"tag":319,"props":1749,"children":1750},{"style":354},[1751],{"type":46,"value":746},{"type":41,"tag":319,"props":1753,"children":1754},{"style":412},[1755],{"type":46,"value":751},{"type":41,"tag":319,"props":1757,"children":1758},{"style":354},[1759],{"type":46,"value":368},{"type":41,"tag":319,"props":1761,"children":1762},{"style":758},[1763],{"type":46,"value":1764}," 401",{"type":41,"tag":319,"props":1766,"children":1767},{"style":354},[1768],{"type":46,"value":449},{"type":41,"tag":319,"props":1770,"children":1771},{"style":412},[1772],{"type":46,"value":379},{"type":41,"tag":319,"props":1774,"children":1775},{"style":354},[1776],{"type":46,"value":458},{"type":41,"tag":319,"props":1778,"children":1779},{"class":321,"line":606},[1780],{"type":41,"tag":319,"props":1781,"children":1782},{"style":354},[1783],{"type":46,"value":1784},"  }\n",{"type":41,"tag":319,"props":1786,"children":1787},{"class":321,"line":652},[1788],{"type":41,"tag":319,"props":1789,"children":1790},{"emptyLinePlaceholder":600},[1791],{"type":46,"value":603},{"type":41,"tag":319,"props":1793,"children":1794},{"class":321,"line":698},[1795,1799,1803,1807,1811,1815,1819,1824,1828,1834,1838,1842],{"type":41,"tag":319,"props":1796,"children":1797},{"style":336},[1798],{"type":46,"value":393},{"type":41,"tag":319,"props":1800,"children":1801},{"style":396},[1802],{"type":46,"value":399},{"type":41,"tag":319,"props":1804,"children":1805},{"style":354},[1806],{"type":46,"value":404},{"type":41,"tag":319,"props":1808,"children":1809},{"style":348},[1810],{"type":46,"value":409},{"type":41,"tag":319,"props":1812,"children":1813},{"style":412},[1814],{"type":46,"value":357},{"type":41,"tag":319,"props":1816,"children":1817},{"style":354},[1818],{"type":46,"value":419},{"type":41,"tag":319,"props":1820,"children":1821},{"style":412},[1822],{"type":46,"value":1823}," authenticated",{"type":41,"tag":319,"props":1825,"children":1826},{"style":354},[1827],{"type":46,"value":368},{"type":41,"tag":319,"props":1829,"children":1831},{"style":1830},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1832],{"type":46,"value":1833}," true",{"type":41,"tag":319,"props":1835,"children":1836},{"style":354},[1837],{"type":46,"value":449},{"type":41,"tag":319,"props":1839,"children":1840},{"style":412},[1841],{"type":46,"value":379},{"type":41,"tag":319,"props":1843,"children":1844},{"style":354},[1845],{"type":46,"value":458},{"type":41,"tag":319,"props":1847,"children":1848},{"class":321,"line":776},[1849],{"type":41,"tag":319,"props":1850,"children":1851},{"style":354},[1852],{"type":46,"value":467},{"type":41,"tag":1215,"props":1854,"children":1856},{"id":1855},"json-body",[1857],{"type":46,"value":1858},"JSON Body",{"type":41,"tag":292,"props":1860,"children":1862},{"className":311,"code":1861,"language":313,"meta":300,"style":300},"export async function POST(request: Request) {\n  const { email, password } = await request.json();\n\n  if (!email || !password) {\n    return Response.json({ error: \"Missing fields\" }, { status: 400 });\n  }\n\n  return Response.json({ success: true });\n}\n",[1863],{"type":41,"tag":87,"props":1864,"children":1865},{"__ignoreMap":300},[1866,1909,1966,1973,2016,2097,2104,2111,2163],{"type":41,"tag":319,"props":1867,"children":1868},{"class":321,"line":322},[1869,1873,1877,1881,1885,1889,1893,1897,1901,1905],{"type":41,"tag":319,"props":1870,"children":1871},{"style":336},[1872],{"type":46,"value":339},{"type":41,"tag":319,"props":1874,"children":1875},{"style":342},[1876],{"type":46,"value":616},{"type":41,"tag":319,"props":1878,"children":1879},{"style":342},[1880],{"type":46,"value":345},{"type":41,"tag":319,"props":1882,"children":1883},{"style":348},[1884],{"type":46,"value":625},{"type":41,"tag":319,"props":1886,"children":1887},{"style":354},[1888],{"type":46,"value":357},{"type":41,"tag":319,"props":1890,"children":1891},{"style":360},[1892],{"type":46,"value":363},{"type":41,"tag":319,"props":1894,"children":1895},{"style":354},[1896],{"type":46,"value":368},{"type":41,"tag":319,"props":1898,"children":1899},{"style":371},[1900],{"type":46,"value":374},{"type":41,"tag":319,"props":1902,"children":1903},{"style":354},[1904],{"type":46,"value":379},{"type":41,"tag":319,"props":1906,"children":1907},{"style":354},[1908],{"type":46,"value":384},{"type":41,"tag":319,"props":1910,"children":1911},{"class":321,"line":332},[1912,1916,1920,1925,1929,1934,1938,1942,1946,1950,1954,1958,1962],{"type":41,"tag":319,"props":1913,"children":1914},{"style":342},[1915],{"type":46,"value":658},{"type":41,"tag":319,"props":1917,"children":1918},{"style":354},[1919],{"type":46,"value":746},{"type":41,"tag":319,"props":1921,"children":1922},{"style":396},[1923],{"type":46,"value":1924}," email",{"type":41,"tag":319,"props":1926,"children":1927},{"style":354},[1928],{"type":46,"value":1108},{"type":41,"tag":319,"props":1930,"children":1931},{"style":396},[1932],{"type":46,"value":1933}," password",{"type":41,"tag":319,"props":1935,"children":1936},{"style":354},[1937],{"type":46,"value":449},{"type":41,"tag":319,"props":1939,"children":1940},{"style":354},[1941],{"type":46,"value":668},{"type":41,"tag":319,"props":1943,"children":1944},{"style":336},[1945],{"type":46,"value":673},{"type":41,"tag":319,"props":1947,"children":1948},{"style":396},[1949],{"type":46,"value":678},{"type":41,"tag":319,"props":1951,"children":1952},{"style":354},[1953],{"type":46,"value":404},{"type":41,"tag":319,"props":1955,"children":1956},{"style":348},[1957],{"type":46,"value":409},{"type":41,"tag":319,"props":1959,"children":1960},{"style":412},[1961],{"type":46,"value":691},{"type":41,"tag":319,"props":1963,"children":1964},{"style":354},[1965],{"type":46,"value":458},{"type":41,"tag":319,"props":1967,"children":1968},{"class":321,"line":387},[1969],{"type":41,"tag":319,"props":1970,"children":1971},{"emptyLinePlaceholder":600},[1972],{"type":46,"value":603},{"type":41,"tag":319,"props":1974,"children":1975},{"class":321,"line":461},[1976,1980,1984,1988,1993,1998,2003,2008,2012],{"type":41,"tag":319,"props":1977,"children":1978},{"style":336},[1979],{"type":46,"value":1669},{"type":41,"tag":319,"props":1981,"children":1982},{"style":412},[1983],{"type":46,"value":1674},{"type":41,"tag":319,"props":1985,"children":1986},{"style":354},[1987],{"type":46,"value":1679},{"type":41,"tag":319,"props":1989,"children":1990},{"style":396},[1991],{"type":46,"value":1992},"email",{"type":41,"tag":319,"props":1994,"children":1995},{"style":354},[1996],{"type":46,"value":1997}," ||",{"type":41,"tag":319,"props":1999,"children":2000},{"style":354},[2001],{"type":46,"value":2002}," !",{"type":41,"tag":319,"props":2004,"children":2005},{"style":396},[2006],{"type":46,"value":2007},"password",{"type":41,"tag":319,"props":2009,"children":2010},{"style":412},[2011],{"type":46,"value":1376},{"type":41,"tag":319,"props":2013,"children":2014},{"style":354},[2015],{"type":46,"value":1693},{"type":41,"tag":319,"props":2017,"children":2018},{"class":321,"line":596},[2019,2023,2027,2031,2035,2039,2043,2047,2051,2055,2060,2064,2068,2072,2076,2080,2085,2089,2093],{"type":41,"tag":319,"props":2020,"children":2021},{"style":336},[2022],{"type":46,"value":1701},{"type":41,"tag":319,"props":2024,"children":2025},{"style":396},[2026],{"type":46,"value":399},{"type":41,"tag":319,"props":2028,"children":2029},{"style":354},[2030],{"type":46,"value":404},{"type":41,"tag":319,"props":2032,"children":2033},{"style":348},[2034],{"type":46,"value":409},{"type":41,"tag":319,"props":2036,"children":2037},{"style":412},[2038],{"type":46,"value":357},{"type":41,"tag":319,"props":2040,"children":2041},{"style":354},[2042],{"type":46,"value":419},{"type":41,"tag":319,"props":2044,"children":2045},{"style":412},[2046],{"type":46,"value":1726},{"type":41,"tag":319,"props":2048,"children":2049},{"style":354},[2050],{"type":46,"value":368},{"type":41,"tag":319,"props":2052,"children":2053},{"style":354},[2054],{"type":46,"value":433},{"type":41,"tag":319,"props":2056,"children":2057},{"style":436},[2058],{"type":46,"value":2059},"Missing fields",{"type":41,"tag":319,"props":2061,"children":2062},{"style":354},[2063],{"type":46,"value":444},{"type":41,"tag":319,"props":2065,"children":2066},{"style":354},[2067],{"type":46,"value":741},{"type":41,"tag":319,"props":2069,"children":2070},{"style":354},[2071],{"type":46,"value":746},{"type":41,"tag":319,"props":2073,"children":2074},{"style":412},[2075],{"type":46,"value":751},{"type":41,"tag":319,"props":2077,"children":2078},{"style":354},[2079],{"type":46,"value":368},{"type":41,"tag":319,"props":2081,"children":2082},{"style":758},[2083],{"type":46,"value":2084}," 400",{"type":41,"tag":319,"props":2086,"children":2087},{"style":354},[2088],{"type":46,"value":449},{"type":41,"tag":319,"props":2090,"children":2091},{"style":412},[2092],{"type":46,"value":379},{"type":41,"tag":319,"props":2094,"children":2095},{"style":354},[2096],{"type":46,"value":458},{"type":41,"tag":319,"props":2098,"children":2099},{"class":321,"line":606},[2100],{"type":41,"tag":319,"props":2101,"children":2102},{"style":354},[2103],{"type":46,"value":1784},{"type":41,"tag":319,"props":2105,"children":2106},{"class":321,"line":652},[2107],{"type":41,"tag":319,"props":2108,"children":2109},{"emptyLinePlaceholder":600},[2110],{"type":46,"value":603},{"type":41,"tag":319,"props":2112,"children":2113},{"class":321,"line":698},[2114,2118,2122,2126,2130,2134,2138,2143,2147,2151,2155,2159],{"type":41,"tag":319,"props":2115,"children":2116},{"style":336},[2117],{"type":46,"value":393},{"type":41,"tag":319,"props":2119,"children":2120},{"style":396},[2121],{"type":46,"value":399},{"type":41,"tag":319,"props":2123,"children":2124},{"style":354},[2125],{"type":46,"value":404},{"type":41,"tag":319,"props":2127,"children":2128},{"style":348},[2129],{"type":46,"value":409},{"type":41,"tag":319,"props":2131,"children":2132},{"style":412},[2133],{"type":46,"value":357},{"type":41,"tag":319,"props":2135,"children":2136},{"style":354},[2137],{"type":46,"value":419},{"type":41,"tag":319,"props":2139,"children":2140},{"style":412},[2141],{"type":46,"value":2142}," success",{"type":41,"tag":319,"props":2144,"children":2145},{"style":354},[2146],{"type":46,"value":368},{"type":41,"tag":319,"props":2148,"children":2149},{"style":1830},[2150],{"type":46,"value":1833},{"type":41,"tag":319,"props":2152,"children":2153},{"style":354},[2154],{"type":46,"value":449},{"type":41,"tag":319,"props":2156,"children":2157},{"style":412},[2158],{"type":46,"value":379},{"type":41,"tag":319,"props":2160,"children":2161},{"style":354},[2162],{"type":46,"value":458},{"type":41,"tag":319,"props":2164,"children":2165},{"class":321,"line":776},[2166],{"type":41,"tag":319,"props":2167,"children":2168},{"style":354},[2169],{"type":46,"value":467},{"type":41,"tag":104,"props":2171,"children":2173},{"id":2172},"environment-variables",[2174],{"type":46,"value":2175},"Environment Variables",{"type":41,"tag":53,"props":2177,"children":2178},{},[2179,2181,2187],{"type":46,"value":2180},"Use ",{"type":41,"tag":87,"props":2182,"children":2184},{"className":2183},[],[2185],{"type":46,"value":2186},"process.env",{"type":46,"value":2188}," for server-side secrets:",{"type":41,"tag":292,"props":2190,"children":2192},{"className":311,"code":2191,"language":313,"meta":300,"style":300},"\u002F\u002F app\u002Fapi\u002Fai+api.ts\nexport async function POST(request: Request) {\n  const { prompt } = await request.json();\n\n  const response = await fetch(\"https:\u002F\u002Fapi.openai.com\u002Fv1\u002Fchat\u002Fcompletions\", {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application\u002Fjson\",\n      Authorization: `Bearer ${process.env.OPENAI_API_KEY}`,\n    },\n    body: JSON.stringify({\n      model: \"gpt-4\",\n      messages: [{ role: \"user\", content: prompt }],\n    }),\n  });\n\n  const data = await response.json();\n  return Response.json(data);\n}\n",[2193],{"type":41,"tag":87,"props":2194,"children":2195},{"__ignoreMap":300},[2196,2204,2247,2295,2302,2352,2382,2398,2436,2495,2503,2537,2566,2639,2655,2671,2678,2718,2754],{"type":41,"tag":319,"props":2197,"children":2198},{"class":321,"line":322},[2199],{"type":41,"tag":319,"props":2200,"children":2201},{"style":326},[2202],{"type":46,"value":2203},"\u002F\u002F app\u002Fapi\u002Fai+api.ts\n",{"type":41,"tag":319,"props":2205,"children":2206},{"class":321,"line":332},[2207,2211,2215,2219,2223,2227,2231,2235,2239,2243],{"type":41,"tag":319,"props":2208,"children":2209},{"style":336},[2210],{"type":46,"value":339},{"type":41,"tag":319,"props":2212,"children":2213},{"style":342},[2214],{"type":46,"value":616},{"type":41,"tag":319,"props":2216,"children":2217},{"style":342},[2218],{"type":46,"value":345},{"type":41,"tag":319,"props":2220,"children":2221},{"style":348},[2222],{"type":46,"value":625},{"type":41,"tag":319,"props":2224,"children":2225},{"style":354},[2226],{"type":46,"value":357},{"type":41,"tag":319,"props":2228,"children":2229},{"style":360},[2230],{"type":46,"value":363},{"type":41,"tag":319,"props":2232,"children":2233},{"style":354},[2234],{"type":46,"value":368},{"type":41,"tag":319,"props":2236,"children":2237},{"style":371},[2238],{"type":46,"value":374},{"type":41,"tag":319,"props":2240,"children":2241},{"style":354},[2242],{"type":46,"value":379},{"type":41,"tag":319,"props":2244,"children":2245},{"style":354},[2246],{"type":46,"value":384},{"type":41,"tag":319,"props":2248,"children":2249},{"class":321,"line":387},[2250,2254,2258,2263,2267,2271,2275,2279,2283,2287,2291],{"type":41,"tag":319,"props":2251,"children":2252},{"style":342},[2253],{"type":46,"value":658},{"type":41,"tag":319,"props":2255,"children":2256},{"style":354},[2257],{"type":46,"value":746},{"type":41,"tag":319,"props":2259,"children":2260},{"style":396},[2261],{"type":46,"value":2262}," prompt",{"type":41,"tag":319,"props":2264,"children":2265},{"style":354},[2266],{"type":46,"value":449},{"type":41,"tag":319,"props":2268,"children":2269},{"style":354},[2270],{"type":46,"value":668},{"type":41,"tag":319,"props":2272,"children":2273},{"style":336},[2274],{"type":46,"value":673},{"type":41,"tag":319,"props":2276,"children":2277},{"style":396},[2278],{"type":46,"value":678},{"type":41,"tag":319,"props":2280,"children":2281},{"style":354},[2282],{"type":46,"value":404},{"type":41,"tag":319,"props":2284,"children":2285},{"style":348},[2286],{"type":46,"value":409},{"type":41,"tag":319,"props":2288,"children":2289},{"style":412},[2290],{"type":46,"value":691},{"type":41,"tag":319,"props":2292,"children":2293},{"style":354},[2294],{"type":46,"value":458},{"type":41,"tag":319,"props":2296,"children":2297},{"class":321,"line":461},[2298],{"type":41,"tag":319,"props":2299,"children":2300},{"emptyLinePlaceholder":600},[2301],{"type":46,"value":603},{"type":41,"tag":319,"props":2303,"children":2304},{"class":321,"line":596},[2305,2309,2314,2318,2322,2327,2331,2335,2340,2344,2348],{"type":41,"tag":319,"props":2306,"children":2307},{"style":342},[2308],{"type":46,"value":658},{"type":41,"tag":319,"props":2310,"children":2311},{"style":396},[2312],{"type":46,"value":2313}," response",{"type":41,"tag":319,"props":2315,"children":2316},{"style":354},[2317],{"type":46,"value":668},{"type":41,"tag":319,"props":2319,"children":2320},{"style":336},[2321],{"type":46,"value":673},{"type":41,"tag":319,"props":2323,"children":2324},{"style":348},[2325],{"type":46,"value":2326}," fetch",{"type":41,"tag":319,"props":2328,"children":2329},{"style":412},[2330],{"type":46,"value":357},{"type":41,"tag":319,"props":2332,"children":2333},{"style":354},[2334],{"type":46,"value":444},{"type":41,"tag":319,"props":2336,"children":2337},{"style":436},[2338],{"type":46,"value":2339},"https:\u002F\u002Fapi.openai.com\u002Fv1\u002Fchat\u002Fcompletions",{"type":41,"tag":319,"props":2341,"children":2342},{"style":354},[2343],{"type":46,"value":444},{"type":41,"tag":319,"props":2345,"children":2346},{"style":354},[2347],{"type":46,"value":1108},{"type":41,"tag":319,"props":2349,"children":2350},{"style":354},[2351],{"type":46,"value":384},{"type":41,"tag":319,"props":2353,"children":2354},{"class":321,"line":606},[2355,2360,2364,2368,2373,2377],{"type":41,"tag":319,"props":2356,"children":2357},{"style":412},[2358],{"type":46,"value":2359},"    method",{"type":41,"tag":319,"props":2361,"children":2362},{"style":354},[2363],{"type":46,"value":368},{"type":41,"tag":319,"props":2365,"children":2366},{"style":354},[2367],{"type":46,"value":433},{"type":41,"tag":319,"props":2369,"children":2370},{"style":436},[2371],{"type":46,"value":2372},"POST",{"type":41,"tag":319,"props":2374,"children":2375},{"style":354},[2376],{"type":46,"value":444},{"type":41,"tag":319,"props":2378,"children":2379},{"style":354},[2380],{"type":46,"value":2381},",\n",{"type":41,"tag":319,"props":2383,"children":2384},{"class":321,"line":652},[2385,2390,2394],{"type":41,"tag":319,"props":2386,"children":2387},{"style":412},[2388],{"type":46,"value":2389},"    headers",{"type":41,"tag":319,"props":2391,"children":2392},{"style":354},[2393],{"type":46,"value":368},{"type":41,"tag":319,"props":2395,"children":2396},{"style":354},[2397],{"type":46,"value":384},{"type":41,"tag":319,"props":2399,"children":2400},{"class":321,"line":698},[2401,2406,2411,2415,2419,2423,2428,2432],{"type":41,"tag":319,"props":2402,"children":2403},{"style":354},[2404],{"type":46,"value":2405},"      \"",{"type":41,"tag":319,"props":2407,"children":2408},{"style":412},[2409],{"type":46,"value":2410},"Content-Type",{"type":41,"tag":319,"props":2412,"children":2413},{"style":354},[2414],{"type":46,"value":444},{"type":41,"tag":319,"props":2416,"children":2417},{"style":354},[2418],{"type":46,"value":368},{"type":41,"tag":319,"props":2420,"children":2421},{"style":354},[2422],{"type":46,"value":433},{"type":41,"tag":319,"props":2424,"children":2425},{"style":436},[2426],{"type":46,"value":2427},"application\u002Fjson",{"type":41,"tag":319,"props":2429,"children":2430},{"style":354},[2431],{"type":46,"value":444},{"type":41,"tag":319,"props":2433,"children":2434},{"style":354},[2435],{"type":46,"value":2381},{"type":41,"tag":319,"props":2437,"children":2438},{"class":321,"line":776},[2439,2444,2448,2453,2458,2463,2468,2472,2477,2481,2486,2491],{"type":41,"tag":319,"props":2440,"children":2441},{"style":412},[2442],{"type":46,"value":2443},"      Authorization",{"type":41,"tag":319,"props":2445,"children":2446},{"style":354},[2447],{"type":46,"value":368},{"type":41,"tag":319,"props":2449,"children":2450},{"style":354},[2451],{"type":46,"value":2452}," `",{"type":41,"tag":319,"props":2454,"children":2455},{"style":436},[2456],{"type":46,"value":2457},"Bearer ",{"type":41,"tag":319,"props":2459,"children":2460},{"style":354},[2461],{"type":46,"value":2462},"${",{"type":41,"tag":319,"props":2464,"children":2465},{"style":396},[2466],{"type":46,"value":2467},"process",{"type":41,"tag":319,"props":2469,"children":2470},{"style":354},[2471],{"type":46,"value":404},{"type":41,"tag":319,"props":2473,"children":2474},{"style":396},[2475],{"type":46,"value":2476},"env",{"type":41,"tag":319,"props":2478,"children":2479},{"style":354},[2480],{"type":46,"value":404},{"type":41,"tag":319,"props":2482,"children":2483},{"style":396},[2484],{"type":46,"value":2485},"OPENAI_API_KEY",{"type":41,"tag":319,"props":2487,"children":2488},{"style":354},[2489],{"type":46,"value":2490},"}`",{"type":41,"tag":319,"props":2492,"children":2493},{"style":354},[2494],{"type":46,"value":2381},{"type":41,"tag":319,"props":2496,"children":2497},{"class":321,"line":784},[2498],{"type":41,"tag":319,"props":2499,"children":2500},{"style":354},[2501],{"type":46,"value":2502},"    },\n",{"type":41,"tag":319,"props":2504,"children":2505},{"class":321,"line":792},[2506,2511,2515,2520,2524,2529,2533],{"type":41,"tag":319,"props":2507,"children":2508},{"style":412},[2509],{"type":46,"value":2510},"    body",{"type":41,"tag":319,"props":2512,"children":2513},{"style":354},[2514],{"type":46,"value":368},{"type":41,"tag":319,"props":2516,"children":2517},{"style":396},[2518],{"type":46,"value":2519}," JSON",{"type":41,"tag":319,"props":2521,"children":2522},{"style":354},[2523],{"type":46,"value":404},{"type":41,"tag":319,"props":2525,"children":2526},{"style":348},[2527],{"type":46,"value":2528},"stringify",{"type":41,"tag":319,"props":2530,"children":2531},{"style":412},[2532],{"type":46,"value":357},{"type":41,"tag":319,"props":2534,"children":2535},{"style":354},[2536],{"type":46,"value":1693},{"type":41,"tag":319,"props":2538,"children":2539},{"class":321,"line":837},[2540,2545,2549,2553,2558,2562],{"type":41,"tag":319,"props":2541,"children":2542},{"style":412},[2543],{"type":46,"value":2544},"      model",{"type":41,"tag":319,"props":2546,"children":2547},{"style":354},[2548],{"type":46,"value":368},{"type":41,"tag":319,"props":2550,"children":2551},{"style":354},[2552],{"type":46,"value":433},{"type":41,"tag":319,"props":2554,"children":2555},{"style":436},[2556],{"type":46,"value":2557},"gpt-4",{"type":41,"tag":319,"props":2559,"children":2560},{"style":354},[2561],{"type":46,"value":444},{"type":41,"tag":319,"props":2563,"children":2564},{"style":354},[2565],{"type":46,"value":2381},{"type":41,"tag":319,"props":2567,"children":2568},{"class":321,"line":877},[2569,2574,2578,2583,2587,2592,2596,2600,2605,2609,2613,2618,2622,2626,2630,2635],{"type":41,"tag":319,"props":2570,"children":2571},{"style":412},[2572],{"type":46,"value":2573},"      messages",{"type":41,"tag":319,"props":2575,"children":2576},{"style":354},[2577],{"type":46,"value":368},{"type":41,"tag":319,"props":2579,"children":2580},{"style":412},[2581],{"type":46,"value":2582}," [",{"type":41,"tag":319,"props":2584,"children":2585},{"style":354},[2586],{"type":46,"value":419},{"type":41,"tag":319,"props":2588,"children":2589},{"style":412},[2590],{"type":46,"value":2591}," role",{"type":41,"tag":319,"props":2593,"children":2594},{"style":354},[2595],{"type":46,"value":368},{"type":41,"tag":319,"props":2597,"children":2598},{"style":354},[2599],{"type":46,"value":433},{"type":41,"tag":319,"props":2601,"children":2602},{"style":436},[2603],{"type":46,"value":2604},"user",{"type":41,"tag":319,"props":2606,"children":2607},{"style":354},[2608],{"type":46,"value":444},{"type":41,"tag":319,"props":2610,"children":2611},{"style":354},[2612],{"type":46,"value":1108},{"type":41,"tag":319,"props":2614,"children":2615},{"style":412},[2616],{"type":46,"value":2617}," content",{"type":41,"tag":319,"props":2619,"children":2620},{"style":354},[2621],{"type":46,"value":368},{"type":41,"tag":319,"props":2623,"children":2624},{"style":396},[2625],{"type":46,"value":2262},{"type":41,"tag":319,"props":2627,"children":2628},{"style":354},[2629],{"type":46,"value":449},{"type":41,"tag":319,"props":2631,"children":2632},{"style":412},[2633],{"type":46,"value":2634},"]",{"type":41,"tag":319,"props":2636,"children":2637},{"style":354},[2638],{"type":46,"value":2381},{"type":41,"tag":319,"props":2640,"children":2641},{"class":321,"line":930},[2642,2647,2651],{"type":41,"tag":319,"props":2643,"children":2644},{"style":354},[2645],{"type":46,"value":2646},"    }",{"type":41,"tag":319,"props":2648,"children":2649},{"style":412},[2650],{"type":46,"value":379},{"type":41,"tag":319,"props":2652,"children":2653},{"style":354},[2654],{"type":46,"value":2381},{"type":41,"tag":319,"props":2656,"children":2657},{"class":321,"line":938},[2658,2663,2667],{"type":41,"tag":319,"props":2659,"children":2660},{"style":354},[2661],{"type":46,"value":2662},"  }",{"type":41,"tag":319,"props":2664,"children":2665},{"style":412},[2666],{"type":46,"value":379},{"type":41,"tag":319,"props":2668,"children":2669},{"style":354},[2670],{"type":46,"value":458},{"type":41,"tag":319,"props":2672,"children":2673},{"class":321,"line":946},[2674],{"type":41,"tag":319,"props":2675,"children":2676},{"emptyLinePlaceholder":600},[2677],{"type":46,"value":603},{"type":41,"tag":319,"props":2679,"children":2680},{"class":321,"line":991},[2681,2685,2690,2694,2698,2702,2706,2710,2714],{"type":41,"tag":319,"props":2682,"children":2683},{"style":342},[2684],{"type":46,"value":658},{"type":41,"tag":319,"props":2686,"children":2687},{"style":396},[2688],{"type":46,"value":2689}," data",{"type":41,"tag":319,"props":2691,"children":2692},{"style":354},[2693],{"type":46,"value":668},{"type":41,"tag":319,"props":2695,"children":2696},{"style":336},[2697],{"type":46,"value":673},{"type":41,"tag":319,"props":2699,"children":2700},{"style":396},[2701],{"type":46,"value":2313},{"type":41,"tag":319,"props":2703,"children":2704},{"style":354},[2705],{"type":46,"value":404},{"type":41,"tag":319,"props":2707,"children":2708},{"style":348},[2709],{"type":46,"value":409},{"type":41,"tag":319,"props":2711,"children":2712},{"style":412},[2713],{"type":46,"value":691},{"type":41,"tag":319,"props":2715,"children":2716},{"style":354},[2717],{"type":46,"value":458},{"type":41,"tag":319,"props":2719,"children":2720},{"class":321,"line":1046},[2721,2725,2729,2733,2737,2741,2746,2750],{"type":41,"tag":319,"props":2722,"children":2723},{"style":336},[2724],{"type":46,"value":393},{"type":41,"tag":319,"props":2726,"children":2727},{"style":396},[2728],{"type":46,"value":399},{"type":41,"tag":319,"props":2730,"children":2731},{"style":354},[2732],{"type":46,"value":404},{"type":41,"tag":319,"props":2734,"children":2735},{"style":348},[2736],{"type":46,"value":409},{"type":41,"tag":319,"props":2738,"children":2739},{"style":412},[2740],{"type":46,"value":357},{"type":41,"tag":319,"props":2742,"children":2743},{"style":396},[2744],{"type":46,"value":2745},"data",{"type":41,"tag":319,"props":2747,"children":2748},{"style":412},[2749],{"type":46,"value":379},{"type":41,"tag":319,"props":2751,"children":2752},{"style":354},[2753],{"type":46,"value":458},{"type":41,"tag":319,"props":2755,"children":2757},{"class":321,"line":2756},19,[2758],{"type":41,"tag":319,"props":2759,"children":2760},{"style":354},[2761],{"type":46,"value":467},{"type":41,"tag":53,"props":2763,"children":2764},{},[2765],{"type":46,"value":2766},"Set environment variables:",{"type":41,"tag":116,"props":2768,"children":2769},{},[2770,2788],{"type":41,"tag":120,"props":2771,"children":2772},{},[2773,2778,2780,2786],{"type":41,"tag":57,"props":2774,"children":2775},{},[2776],{"type":46,"value":2777},"Local",{"type":46,"value":2779},": Create ",{"type":41,"tag":87,"props":2781,"children":2783},{"className":2782},[],[2784],{"type":46,"value":2785},".env",{"type":46,"value":2787}," file (never commit)",{"type":41,"tag":120,"props":2789,"children":2790},{},[2791,2795,2797,2803],{"type":41,"tag":57,"props":2792,"children":2793},{},[2794],{"type":46,"value":47},{"type":46,"value":2796},": Use ",{"type":41,"tag":87,"props":2798,"children":2800},{"className":2799},[],[2801],{"type":46,"value":2802},"eas env:create",{"type":46,"value":2804}," or Expo dashboard",{"type":41,"tag":104,"props":2806,"children":2808},{"id":2807},"cors-headers",[2809],{"type":46,"value":2810},"CORS Headers",{"type":41,"tag":53,"props":2812,"children":2813},{},[2814],{"type":46,"value":2815},"Add CORS for web clients:",{"type":41,"tag":292,"props":2817,"children":2819},{"className":311,"code":2818,"language":313,"meta":300,"style":300},"const corsHeaders = {\n  \"Access-Control-Allow-Origin\": \"*\",\n  \"Access-Control-Allow-Methods\": \"GET, POST, PUT, DELETE, OPTIONS\",\n  \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\n};\n\nexport function OPTIONS() {\n  return new Response(null, { headers: corsHeaders });\n}\n\nexport function GET() {\n  return Response.json({ data: \"value\" }, { headers: corsHeaders });\n}\n",[2820],{"type":41,"tag":87,"props":2821,"children":2822},{"__ignoreMap":300},[2823,2845,2883,2920,2957,2965,2972,2996,3049,3056,3063,3086,3166],{"type":41,"tag":319,"props":2824,"children":2825},{"class":321,"line":322},[2826,2831,2836,2841],{"type":41,"tag":319,"props":2827,"children":2828},{"style":342},[2829],{"type":46,"value":2830},"const",{"type":41,"tag":319,"props":2832,"children":2833},{"style":396},[2834],{"type":46,"value":2835}," corsHeaders ",{"type":41,"tag":319,"props":2837,"children":2838},{"style":354},[2839],{"type":46,"value":2840},"=",{"type":41,"tag":319,"props":2842,"children":2843},{"style":354},[2844],{"type":46,"value":384},{"type":41,"tag":319,"props":2846,"children":2847},{"class":321,"line":332},[2848,2853,2858,2862,2866,2870,2875,2879],{"type":41,"tag":319,"props":2849,"children":2850},{"style":354},[2851],{"type":46,"value":2852},"  \"",{"type":41,"tag":319,"props":2854,"children":2855},{"style":412},[2856],{"type":46,"value":2857},"Access-Control-Allow-Origin",{"type":41,"tag":319,"props":2859,"children":2860},{"style":354},[2861],{"type":46,"value":444},{"type":41,"tag":319,"props":2863,"children":2864},{"style":354},[2865],{"type":46,"value":368},{"type":41,"tag":319,"props":2867,"children":2868},{"style":354},[2869],{"type":46,"value":433},{"type":41,"tag":319,"props":2871,"children":2872},{"style":436},[2873],{"type":46,"value":2874},"*",{"type":41,"tag":319,"props":2876,"children":2877},{"style":354},[2878],{"type":46,"value":444},{"type":41,"tag":319,"props":2880,"children":2881},{"style":354},[2882],{"type":46,"value":2381},{"type":41,"tag":319,"props":2884,"children":2885},{"class":321,"line":387},[2886,2890,2895,2899,2903,2907,2912,2916],{"type":41,"tag":319,"props":2887,"children":2888},{"style":354},[2889],{"type":46,"value":2852},{"type":41,"tag":319,"props":2891,"children":2892},{"style":412},[2893],{"type":46,"value":2894},"Access-Control-Allow-Methods",{"type":41,"tag":319,"props":2896,"children":2897},{"style":354},[2898],{"type":46,"value":444},{"type":41,"tag":319,"props":2900,"children":2901},{"style":354},[2902],{"type":46,"value":368},{"type":41,"tag":319,"props":2904,"children":2905},{"style":354},[2906],{"type":46,"value":433},{"type":41,"tag":319,"props":2908,"children":2909},{"style":436},[2910],{"type":46,"value":2911},"GET, POST, PUT, DELETE, OPTIONS",{"type":41,"tag":319,"props":2913,"children":2914},{"style":354},[2915],{"type":46,"value":444},{"type":41,"tag":319,"props":2917,"children":2918},{"style":354},[2919],{"type":46,"value":2381},{"type":41,"tag":319,"props":2921,"children":2922},{"class":321,"line":461},[2923,2927,2932,2936,2940,2944,2949,2953],{"type":41,"tag":319,"props":2924,"children":2925},{"style":354},[2926],{"type":46,"value":2852},{"type":41,"tag":319,"props":2928,"children":2929},{"style":412},[2930],{"type":46,"value":2931},"Access-Control-Allow-Headers",{"type":41,"tag":319,"props":2933,"children":2934},{"style":354},[2935],{"type":46,"value":444},{"type":41,"tag":319,"props":2937,"children":2938},{"style":354},[2939],{"type":46,"value":368},{"type":41,"tag":319,"props":2941,"children":2942},{"style":354},[2943],{"type":46,"value":433},{"type":41,"tag":319,"props":2945,"children":2946},{"style":436},[2947],{"type":46,"value":2948},"Content-Type, Authorization",{"type":41,"tag":319,"props":2950,"children":2951},{"style":354},[2952],{"type":46,"value":444},{"type":41,"tag":319,"props":2954,"children":2955},{"style":354},[2956],{"type":46,"value":2381},{"type":41,"tag":319,"props":2958,"children":2959},{"class":321,"line":596},[2960],{"type":41,"tag":319,"props":2961,"children":2962},{"style":354},[2963],{"type":46,"value":2964},"};\n",{"type":41,"tag":319,"props":2966,"children":2967},{"class":321,"line":606},[2968],{"type":41,"tag":319,"props":2969,"children":2970},{"emptyLinePlaceholder":600},[2971],{"type":46,"value":603},{"type":41,"tag":319,"props":2973,"children":2974},{"class":321,"line":652},[2975,2979,2983,2988,2992],{"type":41,"tag":319,"props":2976,"children":2977},{"style":336},[2978],{"type":46,"value":339},{"type":41,"tag":319,"props":2980,"children":2981},{"style":342},[2982],{"type":46,"value":345},{"type":41,"tag":319,"props":2984,"children":2985},{"style":348},[2986],{"type":46,"value":2987}," OPTIONS",{"type":41,"tag":319,"props":2989,"children":2990},{"style":354},[2991],{"type":46,"value":691},{"type":41,"tag":319,"props":2993,"children":2994},{"style":354},[2995],{"type":46,"value":384},{"type":41,"tag":319,"props":2997,"children":2998},{"class":321,"line":698},[2999,3003,3007,3011,3015,3019,3023,3028,3032,3037,3041,3045],{"type":41,"tag":319,"props":3000,"children":3001},{"style":336},[3002],{"type":46,"value":393},{"type":41,"tag":319,"props":3004,"children":3005},{"style":354},[3006],{"type":46,"value":1001},{"type":41,"tag":319,"props":3008,"children":3009},{"style":348},[3010],{"type":46,"value":399},{"type":41,"tag":319,"props":3012,"children":3013},{"style":412},[3014],{"type":46,"value":357},{"type":41,"tag":319,"props":3016,"children":3017},{"style":354},[3018],{"type":46,"value":1014},{"type":41,"tag":319,"props":3020,"children":3021},{"style":354},[3022],{"type":46,"value":746},{"type":41,"tag":319,"props":3024,"children":3025},{"style":412},[3026],{"type":46,"value":3027}," headers",{"type":41,"tag":319,"props":3029,"children":3030},{"style":354},[3031],{"type":46,"value":368},{"type":41,"tag":319,"props":3033,"children":3034},{"style":396},[3035],{"type":46,"value":3036}," corsHeaders",{"type":41,"tag":319,"props":3038,"children":3039},{"style":354},[3040],{"type":46,"value":449},{"type":41,"tag":319,"props":3042,"children":3043},{"style":412},[3044],{"type":46,"value":379},{"type":41,"tag":319,"props":3046,"children":3047},{"style":354},[3048],{"type":46,"value":458},{"type":41,"tag":319,"props":3050,"children":3051},{"class":321,"line":776},[3052],{"type":41,"tag":319,"props":3053,"children":3054},{"style":354},[3055],{"type":46,"value":467},{"type":41,"tag":319,"props":3057,"children":3058},{"class":321,"line":784},[3059],{"type":41,"tag":319,"props":3060,"children":3061},{"emptyLinePlaceholder":600},[3062],{"type":46,"value":603},{"type":41,"tag":319,"props":3064,"children":3065},{"class":321,"line":792},[3066,3070,3074,3078,3082],{"type":41,"tag":319,"props":3067,"children":3068},{"style":336},[3069],{"type":46,"value":339},{"type":41,"tag":319,"props":3071,"children":3072},{"style":342},[3073],{"type":46,"value":345},{"type":41,"tag":319,"props":3075,"children":3076},{"style":348},[3077],{"type":46,"value":351},{"type":41,"tag":319,"props":3079,"children":3080},{"style":354},[3081],{"type":46,"value":691},{"type":41,"tag":319,"props":3083,"children":3084},{"style":354},[3085],{"type":46,"value":384},{"type":41,"tag":319,"props":3087,"children":3088},{"class":321,"line":837},[3089,3093,3097,3101,3105,3109,3113,3117,3121,3125,3130,3134,3138,3142,3146,3150,3154,3158,3162],{"type":41,"tag":319,"props":3090,"children":3091},{"style":336},[3092],{"type":46,"value":393},{"type":41,"tag":319,"props":3094,"children":3095},{"style":396},[3096],{"type":46,"value":399},{"type":41,"tag":319,"props":3098,"children":3099},{"style":354},[3100],{"type":46,"value":404},{"type":41,"tag":319,"props":3102,"children":3103},{"style":348},[3104],{"type":46,"value":409},{"type":41,"tag":319,"props":3106,"children":3107},{"style":412},[3108],{"type":46,"value":357},{"type":41,"tag":319,"props":3110,"children":3111},{"style":354},[3112],{"type":46,"value":419},{"type":41,"tag":319,"props":3114,"children":3115},{"style":412},[3116],{"type":46,"value":2689},{"type":41,"tag":319,"props":3118,"children":3119},{"style":354},[3120],{"type":46,"value":368},{"type":41,"tag":319,"props":3122,"children":3123},{"style":354},[3124],{"type":46,"value":433},{"type":41,"tag":319,"props":3126,"children":3127},{"style":436},[3128],{"type":46,"value":3129},"value",{"type":41,"tag":319,"props":3131,"children":3132},{"style":354},[3133],{"type":46,"value":444},{"type":41,"tag":319,"props":3135,"children":3136},{"style":354},[3137],{"type":46,"value":741},{"type":41,"tag":319,"props":3139,"children":3140},{"style":354},[3141],{"type":46,"value":746},{"type":41,"tag":319,"props":3143,"children":3144},{"style":412},[3145],{"type":46,"value":3027},{"type":41,"tag":319,"props":3147,"children":3148},{"style":354},[3149],{"type":46,"value":368},{"type":41,"tag":319,"props":3151,"children":3152},{"style":396},[3153],{"type":46,"value":3036},{"type":41,"tag":319,"props":3155,"children":3156},{"style":354},[3157],{"type":46,"value":449},{"type":41,"tag":319,"props":3159,"children":3160},{"style":412},[3161],{"type":46,"value":379},{"type":41,"tag":319,"props":3163,"children":3164},{"style":354},[3165],{"type":46,"value":458},{"type":41,"tag":319,"props":3167,"children":3168},{"class":321,"line":877},[3169],{"type":41,"tag":319,"props":3170,"children":3171},{"style":354},[3172],{"type":46,"value":467},{"type":41,"tag":104,"props":3174,"children":3176},{"id":3175},"error-handling",[3177],{"type":46,"value":3178},"Error Handling",{"type":41,"tag":292,"props":3180,"children":3182},{"className":311,"code":3181,"language":313,"meta":300,"style":300},"export async function POST(request: Request) {\n  try {\n    const body = await request.json();\n    \u002F\u002F Process...\n    return Response.json({ success: true });\n  } catch (error) {\n    console.error(\"API error:\", error);\n    return Response.json({ error: \"Internal server error\" }, { status: 500 });\n  }\n}\n",[3183],{"type":41,"tag":87,"props":3184,"children":3185},{"__ignoreMap":300},[3186,3229,3241,3281,3289,3340,3369,3418,3499,3506],{"type":41,"tag":319,"props":3187,"children":3188},{"class":321,"line":322},[3189,3193,3197,3201,3205,3209,3213,3217,3221,3225],{"type":41,"tag":319,"props":3190,"children":3191},{"style":336},[3192],{"type":46,"value":339},{"type":41,"tag":319,"props":3194,"children":3195},{"style":342},[3196],{"type":46,"value":616},{"type":41,"tag":319,"props":3198,"children":3199},{"style":342},[3200],{"type":46,"value":345},{"type":41,"tag":319,"props":3202,"children":3203},{"style":348},[3204],{"type":46,"value":625},{"type":41,"tag":319,"props":3206,"children":3207},{"style":354},[3208],{"type":46,"value":357},{"type":41,"tag":319,"props":3210,"children":3211},{"style":360},[3212],{"type":46,"value":363},{"type":41,"tag":319,"props":3214,"children":3215},{"style":354},[3216],{"type":46,"value":368},{"type":41,"tag":319,"props":3218,"children":3219},{"style":371},[3220],{"type":46,"value":374},{"type":41,"tag":319,"props":3222,"children":3223},{"style":354},[3224],{"type":46,"value":379},{"type":41,"tag":319,"props":3226,"children":3227},{"style":354},[3228],{"type":46,"value":384},{"type":41,"tag":319,"props":3230,"children":3231},{"class":321,"line":332},[3232,3237],{"type":41,"tag":319,"props":3233,"children":3234},{"style":336},[3235],{"type":46,"value":3236},"  try",{"type":41,"tag":319,"props":3238,"children":3239},{"style":354},[3240],{"type":46,"value":384},{"type":41,"tag":319,"props":3242,"children":3243},{"class":321,"line":387},[3244,3249,3253,3257,3261,3265,3269,3273,3277],{"type":41,"tag":319,"props":3245,"children":3246},{"style":342},[3247],{"type":46,"value":3248},"    const",{"type":41,"tag":319,"props":3250,"children":3251},{"style":396},[3252],{"type":46,"value":663},{"type":41,"tag":319,"props":3254,"children":3255},{"style":354},[3256],{"type":46,"value":668},{"type":41,"tag":319,"props":3258,"children":3259},{"style":336},[3260],{"type":46,"value":673},{"type":41,"tag":319,"props":3262,"children":3263},{"style":396},[3264],{"type":46,"value":678},{"type":41,"tag":319,"props":3266,"children":3267},{"style":354},[3268],{"type":46,"value":404},{"type":41,"tag":319,"props":3270,"children":3271},{"style":348},[3272],{"type":46,"value":409},{"type":41,"tag":319,"props":3274,"children":3275},{"style":412},[3276],{"type":46,"value":691},{"type":41,"tag":319,"props":3278,"children":3279},{"style":354},[3280],{"type":46,"value":458},{"type":41,"tag":319,"props":3282,"children":3283},{"class":321,"line":461},[3284],{"type":41,"tag":319,"props":3285,"children":3286},{"style":326},[3287],{"type":46,"value":3288},"    \u002F\u002F Process...\n",{"type":41,"tag":319,"props":3290,"children":3291},{"class":321,"line":596},[3292,3296,3300,3304,3308,3312,3316,3320,3324,3328,3332,3336],{"type":41,"tag":319,"props":3293,"children":3294},{"style":336},[3295],{"type":46,"value":1701},{"type":41,"tag":319,"props":3297,"children":3298},{"style":396},[3299],{"type":46,"value":399},{"type":41,"tag":319,"props":3301,"children":3302},{"style":354},[3303],{"type":46,"value":404},{"type":41,"tag":319,"props":3305,"children":3306},{"style":348},[3307],{"type":46,"value":409},{"type":41,"tag":319,"props":3309,"children":3310},{"style":412},[3311],{"type":46,"value":357},{"type":41,"tag":319,"props":3313,"children":3314},{"style":354},[3315],{"type":46,"value":419},{"type":41,"tag":319,"props":3317,"children":3318},{"style":412},[3319],{"type":46,"value":2142},{"type":41,"tag":319,"props":3321,"children":3322},{"style":354},[3323],{"type":46,"value":368},{"type":41,"tag":319,"props":3325,"children":3326},{"style":1830},[3327],{"type":46,"value":1833},{"type":41,"tag":319,"props":3329,"children":3330},{"style":354},[3331],{"type":46,"value":449},{"type":41,"tag":319,"props":3333,"children":3334},{"style":412},[3335],{"type":46,"value":379},{"type":41,"tag":319,"props":3337,"children":3338},{"style":354},[3339],{"type":46,"value":458},{"type":41,"tag":319,"props":3341,"children":3342},{"class":321,"line":606},[3343,3347,3352,3356,3361,3365],{"type":41,"tag":319,"props":3344,"children":3345},{"style":354},[3346],{"type":46,"value":2662},{"type":41,"tag":319,"props":3348,"children":3349},{"style":336},[3350],{"type":46,"value":3351}," catch",{"type":41,"tag":319,"props":3353,"children":3354},{"style":412},[3355],{"type":46,"value":1674},{"type":41,"tag":319,"props":3357,"children":3358},{"style":396},[3359],{"type":46,"value":3360},"error",{"type":41,"tag":319,"props":3362,"children":3363},{"style":412},[3364],{"type":46,"value":1376},{"type":41,"tag":319,"props":3366,"children":3367},{"style":354},[3368],{"type":46,"value":1693},{"type":41,"tag":319,"props":3370,"children":3371},{"class":321,"line":652},[3372,3377,3381,3385,3389,3393,3398,3402,3406,3410,3414],{"type":41,"tag":319,"props":3373,"children":3374},{"style":396},[3375],{"type":46,"value":3376},"    console",{"type":41,"tag":319,"props":3378,"children":3379},{"style":354},[3380],{"type":46,"value":404},{"type":41,"tag":319,"props":3382,"children":3383},{"style":348},[3384],{"type":46,"value":3360},{"type":41,"tag":319,"props":3386,"children":3387},{"style":412},[3388],{"type":46,"value":357},{"type":41,"tag":319,"props":3390,"children":3391},{"style":354},[3392],{"type":46,"value":444},{"type":41,"tag":319,"props":3394,"children":3395},{"style":436},[3396],{"type":46,"value":3397},"API error:",{"type":41,"tag":319,"props":3399,"children":3400},{"style":354},[3401],{"type":46,"value":444},{"type":41,"tag":319,"props":3403,"children":3404},{"style":354},[3405],{"type":46,"value":1108},{"type":41,"tag":319,"props":3407,"children":3408},{"style":396},[3409],{"type":46,"value":1726},{"type":41,"tag":319,"props":3411,"children":3412},{"style":412},[3413],{"type":46,"value":379},{"type":41,"tag":319,"props":3415,"children":3416},{"style":354},[3417],{"type":46,"value":458},{"type":41,"tag":319,"props":3419,"children":3420},{"class":321,"line":698},[3421,3425,3429,3433,3437,3441,3445,3449,3453,3457,3462,3466,3470,3474,3478,3482,3487,3491,3495],{"type":41,"tag":319,"props":3422,"children":3423},{"style":336},[3424],{"type":46,"value":1701},{"type":41,"tag":319,"props":3426,"children":3427},{"style":396},[3428],{"type":46,"value":399},{"type":41,"tag":319,"props":3430,"children":3431},{"style":354},[3432],{"type":46,"value":404},{"type":41,"tag":319,"props":3434,"children":3435},{"style":348},[3436],{"type":46,"value":409},{"type":41,"tag":319,"props":3438,"children":3439},{"style":412},[3440],{"type":46,"value":357},{"type":41,"tag":319,"props":3442,"children":3443},{"style":354},[3444],{"type":46,"value":419},{"type":41,"tag":319,"props":3446,"children":3447},{"style":412},[3448],{"type":46,"value":1726},{"type":41,"tag":319,"props":3450,"children":3451},{"style":354},[3452],{"type":46,"value":368},{"type":41,"tag":319,"props":3454,"children":3455},{"style":354},[3456],{"type":46,"value":433},{"type":41,"tag":319,"props":3458,"children":3459},{"style":436},[3460],{"type":46,"value":3461},"Internal server error",{"type":41,"tag":319,"props":3463,"children":3464},{"style":354},[3465],{"type":46,"value":444},{"type":41,"tag":319,"props":3467,"children":3468},{"style":354},[3469],{"type":46,"value":741},{"type":41,"tag":319,"props":3471,"children":3472},{"style":354},[3473],{"type":46,"value":746},{"type":41,"tag":319,"props":3475,"children":3476},{"style":412},[3477],{"type":46,"value":751},{"type":41,"tag":319,"props":3479,"children":3480},{"style":354},[3481],{"type":46,"value":368},{"type":41,"tag":319,"props":3483,"children":3484},{"style":758},[3485],{"type":46,"value":3486}," 500",{"type":41,"tag":319,"props":3488,"children":3489},{"style":354},[3490],{"type":46,"value":449},{"type":41,"tag":319,"props":3492,"children":3493},{"style":412},[3494],{"type":46,"value":379},{"type":41,"tag":319,"props":3496,"children":3497},{"style":354},[3498],{"type":46,"value":458},{"type":41,"tag":319,"props":3500,"children":3501},{"class":321,"line":776},[3502],{"type":41,"tag":319,"props":3503,"children":3504},{"style":354},[3505],{"type":46,"value":1784},{"type":41,"tag":319,"props":3507,"children":3508},{"class":321,"line":784},[3509],{"type":41,"tag":319,"props":3510,"children":3511},{"style":354},[3512],{"type":46,"value":467},{"type":41,"tag":104,"props":3514,"children":3516},{"id":3515},"testing-locally",[3517],{"type":46,"value":3518},"Testing Locally",{"type":41,"tag":53,"props":3520,"children":3521},{},[3522],{"type":46,"value":3523},"Start the development server with API routes:",{"type":41,"tag":292,"props":3525,"children":3529},{"className":3526,"code":3527,"language":3528,"meta":300,"style":300},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npx expo serve\n","bash",[3530],{"type":41,"tag":87,"props":3531,"children":3532},{"__ignoreMap":300},[3533],{"type":41,"tag":319,"props":3534,"children":3535},{"class":321,"line":322},[3536,3541,3546],{"type":41,"tag":319,"props":3537,"children":3538},{"style":371},[3539],{"type":46,"value":3540},"npx",{"type":41,"tag":319,"props":3542,"children":3543},{"style":436},[3544],{"type":46,"value":3545}," expo",{"type":41,"tag":319,"props":3547,"children":3548},{"style":436},[3549],{"type":46,"value":3550}," serve\n",{"type":41,"tag":53,"props":3552,"children":3553},{},[3554,3556,3562],{"type":46,"value":3555},"This starts a local server at ",{"type":41,"tag":87,"props":3557,"children":3559},{"className":3558},[],[3560],{"type":46,"value":3561},"http:\u002F\u002Flocalhost:8081",{"type":46,"value":3563}," with full API route support.",{"type":41,"tag":53,"props":3565,"children":3566},{},[3567],{"type":46,"value":3568},"Test with curl:",{"type":41,"tag":292,"props":3570,"children":3572},{"className":3526,"code":3571,"language":3528,"meta":300,"style":300},"curl http:\u002F\u002Flocalhost:8081\u002Fapi\u002Fhello\ncurl -X POST http:\u002F\u002Flocalhost:8081\u002Fapi\u002Fusers -H \"Content-Type: application\u002Fjson\" -d '{\"name\":\"Test\"}'\n",[3573],{"type":41,"tag":87,"props":3574,"children":3575},{"__ignoreMap":300},[3576,3589],{"type":41,"tag":319,"props":3577,"children":3578},{"class":321,"line":322},[3579,3584],{"type":41,"tag":319,"props":3580,"children":3581},{"style":371},[3582],{"type":46,"value":3583},"curl",{"type":41,"tag":319,"props":3585,"children":3586},{"style":436},[3587],{"type":46,"value":3588}," http:\u002F\u002Flocalhost:8081\u002Fapi\u002Fhello\n",{"type":41,"tag":319,"props":3590,"children":3591},{"class":321,"line":332},[3592,3596,3601,3605,3610,3615,3619,3624,3628,3633,3638,3643],{"type":41,"tag":319,"props":3593,"children":3594},{"style":371},[3595],{"type":46,"value":3583},{"type":41,"tag":319,"props":3597,"children":3598},{"style":436},[3599],{"type":46,"value":3600}," -X",{"type":41,"tag":319,"props":3602,"children":3603},{"style":436},[3604],{"type":46,"value":625},{"type":41,"tag":319,"props":3606,"children":3607},{"style":436},[3608],{"type":46,"value":3609}," http:\u002F\u002Flocalhost:8081\u002Fapi\u002Fusers",{"type":41,"tag":319,"props":3611,"children":3612},{"style":436},[3613],{"type":46,"value":3614}," -H",{"type":41,"tag":319,"props":3616,"children":3617},{"style":354},[3618],{"type":46,"value":433},{"type":41,"tag":319,"props":3620,"children":3621},{"style":436},[3622],{"type":46,"value":3623},"Content-Type: application\u002Fjson",{"type":41,"tag":319,"props":3625,"children":3626},{"style":354},[3627],{"type":46,"value":444},{"type":41,"tag":319,"props":3629,"children":3630},{"style":436},[3631],{"type":46,"value":3632}," -d",{"type":41,"tag":319,"props":3634,"children":3635},{"style":354},[3636],{"type":46,"value":3637}," '",{"type":41,"tag":319,"props":3639,"children":3640},{"style":436},[3641],{"type":46,"value":3642},"{\"name\":\"Test\"}",{"type":41,"tag":319,"props":3644,"children":3645},{"style":354},[3646],{"type":46,"value":3647},"'\n",{"type":41,"tag":104,"props":3649,"children":3651},{"id":3650},"deployment-to-eas-hosting",[3652],{"type":46,"value":3653},"Deployment to EAS Hosting",{"type":41,"tag":1215,"props":3655,"children":3657},{"id":3656},"prerequisites",[3658],{"type":46,"value":3659},"Prerequisites",{"type":41,"tag":292,"props":3661,"children":3663},{"className":3526,"code":3662,"language":3528,"meta":300,"style":300},"npm install -g eas-cli\neas login\n",[3664],{"type":41,"tag":87,"props":3665,"children":3666},{"__ignoreMap":300},[3667,3690],{"type":41,"tag":319,"props":3668,"children":3669},{"class":321,"line":322},[3670,3675,3680,3685],{"type":41,"tag":319,"props":3671,"children":3672},{"style":371},[3673],{"type":46,"value":3674},"npm",{"type":41,"tag":319,"props":3676,"children":3677},{"style":436},[3678],{"type":46,"value":3679}," install",{"type":41,"tag":319,"props":3681,"children":3682},{"style":436},[3683],{"type":46,"value":3684}," -g",{"type":41,"tag":319,"props":3686,"children":3687},{"style":436},[3688],{"type":46,"value":3689}," eas-cli\n",{"type":41,"tag":319,"props":3691,"children":3692},{"class":321,"line":332},[3693,3698],{"type":41,"tag":319,"props":3694,"children":3695},{"style":371},[3696],{"type":46,"value":3697},"eas",{"type":41,"tag":319,"props":3699,"children":3700},{"style":436},[3701],{"type":46,"value":3702}," login\n",{"type":41,"tag":1215,"props":3704,"children":3706},{"id":3705},"deploy",[3707],{"type":46,"value":3708},"Deploy",{"type":41,"tag":53,"props":3710,"children":3711},{},[3712,3714,3719],{"type":46,"value":3713},"Deploying ships your web bundle and any Expo Router API routes together - ",{"type":41,"tag":87,"props":3715,"children":3717},{"className":3716},[],[3718],{"type":46,"value":100},{"type":46,"value":3720}," handles both. The export runs whether you have a full website, an API-routes-only backend, or both.",{"type":41,"tag":292,"props":3722,"children":3724},{"className":3526,"code":3723,"language":3528,"meta":300,"style":300},"# Export the web bundle (includes any API routes)\nnpx expo export -p web\n\n# Deploy a preview (PR-style URL)\nnpx eas-cli@latest deploy\n\n# Deploy to production\nnpx eas-cli@latest deploy --prod\n",[3725],{"type":41,"tag":87,"props":3726,"children":3727},{"__ignoreMap":300},[3728,3736,3762,3769,3777,3794,3801,3809],{"type":41,"tag":319,"props":3729,"children":3730},{"class":321,"line":322},[3731],{"type":41,"tag":319,"props":3732,"children":3733},{"style":326},[3734],{"type":46,"value":3735},"# Export the web bundle (includes any API routes)\n",{"type":41,"tag":319,"props":3737,"children":3738},{"class":321,"line":332},[3739,3743,3747,3752,3757],{"type":41,"tag":319,"props":3740,"children":3741},{"style":371},[3742],{"type":46,"value":3540},{"type":41,"tag":319,"props":3744,"children":3745},{"style":436},[3746],{"type":46,"value":3545},{"type":41,"tag":319,"props":3748,"children":3749},{"style":436},[3750],{"type":46,"value":3751}," export",{"type":41,"tag":319,"props":3753,"children":3754},{"style":436},[3755],{"type":46,"value":3756}," -p",{"type":41,"tag":319,"props":3758,"children":3759},{"style":436},[3760],{"type":46,"value":3761}," web\n",{"type":41,"tag":319,"props":3763,"children":3764},{"class":321,"line":387},[3765],{"type":41,"tag":319,"props":3766,"children":3767},{"emptyLinePlaceholder":600},[3768],{"type":46,"value":603},{"type":41,"tag":319,"props":3770,"children":3771},{"class":321,"line":461},[3772],{"type":41,"tag":319,"props":3773,"children":3774},{"style":326},[3775],{"type":46,"value":3776},"# Deploy a preview (PR-style URL)\n",{"type":41,"tag":319,"props":3778,"children":3779},{"class":321,"line":596},[3780,3784,3789],{"type":41,"tag":319,"props":3781,"children":3782},{"style":371},[3783],{"type":46,"value":3540},{"type":41,"tag":319,"props":3785,"children":3786},{"style":436},[3787],{"type":46,"value":3788}," eas-cli@latest",{"type":41,"tag":319,"props":3790,"children":3791},{"style":436},[3792],{"type":46,"value":3793}," deploy\n",{"type":41,"tag":319,"props":3795,"children":3796},{"class":321,"line":606},[3797],{"type":41,"tag":319,"props":3798,"children":3799},{"emptyLinePlaceholder":600},[3800],{"type":46,"value":603},{"type":41,"tag":319,"props":3802,"children":3803},{"class":321,"line":652},[3804],{"type":41,"tag":319,"props":3805,"children":3806},{"style":326},[3807],{"type":46,"value":3808},"# Deploy to production\n",{"type":41,"tag":319,"props":3810,"children":3811},{"class":321,"line":698},[3812,3816,3820,3825],{"type":41,"tag":319,"props":3813,"children":3814},{"style":371},[3815],{"type":46,"value":3540},{"type":41,"tag":319,"props":3817,"children":3818},{"style":436},[3819],{"type":46,"value":3788},{"type":41,"tag":319,"props":3821,"children":3822},{"style":436},[3823],{"type":46,"value":3824}," deploy",{"type":41,"tag":319,"props":3826,"children":3827},{"style":436},[3828],{"type":46,"value":3829}," --prod\n",{"type":41,"tag":53,"props":3831,"children":3832},{},[3833],{"type":46,"value":3834},"Everything lands on EAS Hosting (Cloudflare Workers).",{"type":41,"tag":1215,"props":3836,"children":3838},{"id":3837},"environment-variables-for-production",[3839],{"type":46,"value":3840},"Environment Variables for Production",{"type":41,"tag":292,"props":3842,"children":3844},{"className":3526,"code":3843,"language":3528,"meta":300,"style":300},"# Create a secret\neas env:create --name OPENAI_API_KEY --value sk-xxx --environment production\n\n# Or use the Expo dashboard\n",[3845],{"type":41,"tag":87,"props":3846,"children":3847},{"__ignoreMap":300},[3848,3856,3898,3905],{"type":41,"tag":319,"props":3849,"children":3850},{"class":321,"line":322},[3851],{"type":41,"tag":319,"props":3852,"children":3853},{"style":326},[3854],{"type":46,"value":3855},"# Create a secret\n",{"type":41,"tag":319,"props":3857,"children":3858},{"class":321,"line":332},[3859,3863,3868,3873,3878,3883,3888,3893],{"type":41,"tag":319,"props":3860,"children":3861},{"style":371},[3862],{"type":46,"value":3697},{"type":41,"tag":319,"props":3864,"children":3865},{"style":436},[3866],{"type":46,"value":3867}," env:create",{"type":41,"tag":319,"props":3869,"children":3870},{"style":436},[3871],{"type":46,"value":3872}," --name",{"type":41,"tag":319,"props":3874,"children":3875},{"style":436},[3876],{"type":46,"value":3877}," OPENAI_API_KEY",{"type":41,"tag":319,"props":3879,"children":3880},{"style":436},[3881],{"type":46,"value":3882}," --value",{"type":41,"tag":319,"props":3884,"children":3885},{"style":436},[3886],{"type":46,"value":3887}," sk-xxx",{"type":41,"tag":319,"props":3889,"children":3890},{"style":436},[3891],{"type":46,"value":3892}," --environment",{"type":41,"tag":319,"props":3894,"children":3895},{"style":436},[3896],{"type":46,"value":3897}," production\n",{"type":41,"tag":319,"props":3899,"children":3900},{"class":321,"line":387},[3901],{"type":41,"tag":319,"props":3902,"children":3903},{"emptyLinePlaceholder":600},[3904],{"type":46,"value":603},{"type":41,"tag":319,"props":3906,"children":3907},{"class":321,"line":461},[3908],{"type":41,"tag":319,"props":3909,"children":3910},{"style":326},[3911],{"type":46,"value":3912},"# Or use the Expo dashboard\n",{"type":41,"tag":1215,"props":3914,"children":3916},{"id":3915},"custom-domain",[3917],{"type":46,"value":3918},"Custom Domain",{"type":41,"tag":53,"props":3920,"children":3921},{},[3922,3924,3930],{"type":46,"value":3923},"Configure in ",{"type":41,"tag":87,"props":3925,"children":3927},{"className":3926},[],[3928],{"type":46,"value":3929},"eas.json",{"type":46,"value":3931}," or Expo dashboard.",{"type":41,"tag":1215,"props":3933,"children":3935},{"id":3934},"automate-with-eas-workflows",[3936],{"type":46,"value":3937},"Automate with EAS Workflows",{"type":41,"tag":53,"props":3939,"children":3940},{},[3941,3943,3949],{"type":46,"value":3942},"Deploy the website (and API routes) on every push to main with a ",{"type":41,"tag":87,"props":3944,"children":3946},{"className":3945},[],[3947],{"type":46,"value":3948},"type: deploy",{"type":46,"value":3950}," workflow:",{"type":41,"tag":53,"props":3952,"children":3953},{},[3954],{"type":41,"tag":87,"props":3955,"children":3957},{"className":3956},[],[3958],{"type":46,"value":3959},".eas\u002Fworkflows\u002Fdeploy.yml",{"type":41,"tag":292,"props":3961,"children":3965},{"className":3962,"code":3963,"language":3964,"meta":300,"style":300},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name: Deploy\n\non:\n  push:\n    branches:\n      - main\n\n# https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fworkflows\u002Fsyntax\u002F#deploy\njobs:\n  deploy_web:\n    type: deploy\n    params:\n      prod: true\n","yaml",[3966],{"type":41,"tag":87,"props":3967,"children":3968},{"__ignoreMap":300},[3969,3986,3993,4006,4018,4030,4043,4050,4058,4070,4082,4098,4110],{"type":41,"tag":319,"props":3970,"children":3971},{"class":321,"line":322},[3972,3977,3981],{"type":41,"tag":319,"props":3973,"children":3974},{"style":412},[3975],{"type":46,"value":3976},"name",{"type":41,"tag":319,"props":3978,"children":3979},{"style":354},[3980],{"type":46,"value":368},{"type":41,"tag":319,"props":3982,"children":3983},{"style":436},[3984],{"type":46,"value":3985}," Deploy\n",{"type":41,"tag":319,"props":3987,"children":3988},{"class":321,"line":332},[3989],{"type":41,"tag":319,"props":3990,"children":3991},{"emptyLinePlaceholder":600},[3992],{"type":46,"value":603},{"type":41,"tag":319,"props":3994,"children":3995},{"class":321,"line":387},[3996,4001],{"type":41,"tag":319,"props":3997,"children":3998},{"style":1830},[3999],{"type":46,"value":4000},"on",{"type":41,"tag":319,"props":4002,"children":4003},{"style":354},[4004],{"type":46,"value":4005},":\n",{"type":41,"tag":319,"props":4007,"children":4008},{"class":321,"line":461},[4009,4014],{"type":41,"tag":319,"props":4010,"children":4011},{"style":412},[4012],{"type":46,"value":4013},"  push",{"type":41,"tag":319,"props":4015,"children":4016},{"style":354},[4017],{"type":46,"value":4005},{"type":41,"tag":319,"props":4019,"children":4020},{"class":321,"line":596},[4021,4026],{"type":41,"tag":319,"props":4022,"children":4023},{"style":412},[4024],{"type":46,"value":4025},"    branches",{"type":41,"tag":319,"props":4027,"children":4028},{"style":354},[4029],{"type":46,"value":4005},{"type":41,"tag":319,"props":4031,"children":4032},{"class":321,"line":606},[4033,4038],{"type":41,"tag":319,"props":4034,"children":4035},{"style":354},[4036],{"type":46,"value":4037},"      -",{"type":41,"tag":319,"props":4039,"children":4040},{"style":436},[4041],{"type":46,"value":4042}," main\n",{"type":41,"tag":319,"props":4044,"children":4045},{"class":321,"line":652},[4046],{"type":41,"tag":319,"props":4047,"children":4048},{"emptyLinePlaceholder":600},[4049],{"type":46,"value":603},{"type":41,"tag":319,"props":4051,"children":4052},{"class":321,"line":698},[4053],{"type":41,"tag":319,"props":4054,"children":4055},{"style":326},[4056],{"type":46,"value":4057},"# https:\u002F\u002Fdocs.expo.dev\u002Feas\u002Fworkflows\u002Fsyntax\u002F#deploy\n",{"type":41,"tag":319,"props":4059,"children":4060},{"class":321,"line":776},[4061,4066],{"type":41,"tag":319,"props":4062,"children":4063},{"style":412},[4064],{"type":46,"value":4065},"jobs",{"type":41,"tag":319,"props":4067,"children":4068},{"style":354},[4069],{"type":46,"value":4005},{"type":41,"tag":319,"props":4071,"children":4072},{"class":321,"line":784},[4073,4078],{"type":41,"tag":319,"props":4074,"children":4075},{"style":412},[4076],{"type":46,"value":4077},"  deploy_web",{"type":41,"tag":319,"props":4079,"children":4080},{"style":354},[4081],{"type":46,"value":4005},{"type":41,"tag":319,"props":4083,"children":4084},{"class":321,"line":792},[4085,4090,4094],{"type":41,"tag":319,"props":4086,"children":4087},{"style":412},[4088],{"type":46,"value":4089},"    type",{"type":41,"tag":319,"props":4091,"children":4092},{"style":354},[4093],{"type":46,"value":368},{"type":41,"tag":319,"props":4095,"children":4096},{"style":436},[4097],{"type":46,"value":3793},{"type":41,"tag":319,"props":4099,"children":4100},{"class":321,"line":837},[4101,4106],{"type":41,"tag":319,"props":4102,"children":4103},{"style":412},[4104],{"type":46,"value":4105},"    params",{"type":41,"tag":319,"props":4107,"children":4108},{"style":354},[4109],{"type":46,"value":4005},{"type":41,"tag":319,"props":4111,"children":4112},{"class":321,"line":877},[4113,4118,4122],{"type":41,"tag":319,"props":4114,"children":4115},{"style":412},[4116],{"type":46,"value":4117},"      prod",{"type":41,"tag":319,"props":4119,"children":4120},{"style":354},[4121],{"type":46,"value":368},{"type":41,"tag":319,"props":4123,"children":4124},{"style":1830},[4125],{"type":46,"value":4126}," true\n",{"type":41,"tag":53,"props":4128,"children":4129},{},[4130,4132,4138],{"type":46,"value":4131},"Preview deploys for pull requests use the same job type with ",{"type":41,"tag":87,"props":4133,"children":4135},{"className":4134},[],[4136],{"type":46,"value":4137},"prod: false",{"type":46,"value":368},{"type":41,"tag":292,"props":4140,"children":4142},{"className":3962,"code":4141,"language":3964,"meta":300,"style":300},"name: Web PR Preview\n\non:\n  pull_request:\n    types: [opened, synchronize]\n\njobs:\n  preview:\n    type: deploy\n    params:\n      prod: false\n",[4143],{"type":41,"tag":87,"props":4144,"children":4145},{"__ignoreMap":300},[4146,4162,4169,4180,4192,4227,4234,4245,4257,4272,4283],{"type":41,"tag":319,"props":4147,"children":4148},{"class":321,"line":322},[4149,4153,4157],{"type":41,"tag":319,"props":4150,"children":4151},{"style":412},[4152],{"type":46,"value":3976},{"type":41,"tag":319,"props":4154,"children":4155},{"style":354},[4156],{"type":46,"value":368},{"type":41,"tag":319,"props":4158,"children":4159},{"style":436},[4160],{"type":46,"value":4161}," Web PR Preview\n",{"type":41,"tag":319,"props":4163,"children":4164},{"class":321,"line":332},[4165],{"type":41,"tag":319,"props":4166,"children":4167},{"emptyLinePlaceholder":600},[4168],{"type":46,"value":603},{"type":41,"tag":319,"props":4170,"children":4171},{"class":321,"line":387},[4172,4176],{"type":41,"tag":319,"props":4173,"children":4174},{"style":1830},[4175],{"type":46,"value":4000},{"type":41,"tag":319,"props":4177,"children":4178},{"style":354},[4179],{"type":46,"value":4005},{"type":41,"tag":319,"props":4181,"children":4182},{"class":321,"line":461},[4183,4188],{"type":41,"tag":319,"props":4184,"children":4185},{"style":412},[4186],{"type":46,"value":4187},"  pull_request",{"type":41,"tag":319,"props":4189,"children":4190},{"style":354},[4191],{"type":46,"value":4005},{"type":41,"tag":319,"props":4193,"children":4194},{"class":321,"line":596},[4195,4200,4204,4208,4213,4217,4222],{"type":41,"tag":319,"props":4196,"children":4197},{"style":412},[4198],{"type":46,"value":4199},"    types",{"type":41,"tag":319,"props":4201,"children":4202},{"style":354},[4203],{"type":46,"value":368},{"type":41,"tag":319,"props":4205,"children":4206},{"style":354},[4207],{"type":46,"value":2582},{"type":41,"tag":319,"props":4209,"children":4210},{"style":436},[4211],{"type":46,"value":4212},"opened",{"type":41,"tag":319,"props":4214,"children":4215},{"style":354},[4216],{"type":46,"value":1108},{"type":41,"tag":319,"props":4218,"children":4219},{"style":436},[4220],{"type":46,"value":4221}," synchronize",{"type":41,"tag":319,"props":4223,"children":4224},{"style":354},[4225],{"type":46,"value":4226},"]\n",{"type":41,"tag":319,"props":4228,"children":4229},{"class":321,"line":606},[4230],{"type":41,"tag":319,"props":4231,"children":4232},{"emptyLinePlaceholder":600},[4233],{"type":46,"value":603},{"type":41,"tag":319,"props":4235,"children":4236},{"class":321,"line":652},[4237,4241],{"type":41,"tag":319,"props":4238,"children":4239},{"style":412},[4240],{"type":46,"value":4065},{"type":41,"tag":319,"props":4242,"children":4243},{"style":354},[4244],{"type":46,"value":4005},{"type":41,"tag":319,"props":4246,"children":4247},{"class":321,"line":698},[4248,4253],{"type":41,"tag":319,"props":4249,"children":4250},{"style":412},[4251],{"type":46,"value":4252},"  preview",{"type":41,"tag":319,"props":4254,"children":4255},{"style":354},[4256],{"type":46,"value":4005},{"type":41,"tag":319,"props":4258,"children":4259},{"class":321,"line":776},[4260,4264,4268],{"type":41,"tag":319,"props":4261,"children":4262},{"style":412},[4263],{"type":46,"value":4089},{"type":41,"tag":319,"props":4265,"children":4266},{"style":354},[4267],{"type":46,"value":368},{"type":41,"tag":319,"props":4269,"children":4270},{"style":436},[4271],{"type":46,"value":3793},{"type":41,"tag":319,"props":4273,"children":4274},{"class":321,"line":784},[4275,4279],{"type":41,"tag":319,"props":4276,"children":4277},{"style":412},[4278],{"type":46,"value":4105},{"type":41,"tag":319,"props":4280,"children":4281},{"style":354},[4282],{"type":46,"value":4005},{"type":41,"tag":319,"props":4284,"children":4285},{"class":321,"line":792},[4286,4290,4294],{"type":41,"tag":319,"props":4287,"children":4288},{"style":412},[4289],{"type":46,"value":4117},{"type":41,"tag":319,"props":4291,"children":4292},{"style":354},[4293],{"type":46,"value":368},{"type":41,"tag":319,"props":4295,"children":4296},{"style":1830},[4297],{"type":46,"value":4298}," false\n",{"type":41,"tag":53,"props":4300,"children":4301},{},[4302,4304,4310],{"type":46,"value":4303},"To author or validate workflow YAML beyond these examples, use the ",{"type":41,"tag":87,"props":4305,"children":4307},{"className":4306},[],[4308],{"type":46,"value":4309},"eas-workflows",{"type":46,"value":4311}," skill.",{"type":41,"tag":104,"props":4313,"children":4315},{"id":4314},"eas-hosting-runtime-cloudflare-workers",[4316],{"type":46,"value":4317},"EAS Hosting Runtime (Cloudflare Workers)",{"type":41,"tag":53,"props":4319,"children":4320},{},[4321],{"type":46,"value":4322},"API routes run on Cloudflare Workers. Key limitations:",{"type":41,"tag":1215,"props":4324,"children":4326},{"id":4325},"missinglimited-apis",[4327],{"type":46,"value":4328},"Missing\u002FLimited APIs",{"type":41,"tag":116,"props":4330,"children":4331},{},[4332,4350,4360,4370,4380],{"type":41,"tag":120,"props":4333,"children":4334},{},[4335,4340,4342,4348],{"type":41,"tag":57,"props":4336,"children":4337},{},[4338],{"type":46,"value":4339},"No Node.js filesystem",{"type":46,"value":4341}," — ",{"type":41,"tag":87,"props":4343,"children":4345},{"className":4344},[],[4346],{"type":46,"value":4347},"fs",{"type":46,"value":4349}," module unavailable",{"type":41,"tag":120,"props":4351,"children":4352},{},[4353,4358],{"type":41,"tag":57,"props":4354,"children":4355},{},[4356],{"type":46,"value":4357},"No native Node modules",{"type":46,"value":4359}," — Use Web APIs or polyfills",{"type":41,"tag":120,"props":4361,"children":4362},{},[4363,4368],{"type":41,"tag":57,"props":4364,"children":4365},{},[4366],{"type":46,"value":4367},"Limited execution time",{"type":46,"value":4369}," — 30 second timeout for CPU-intensive tasks",{"type":41,"tag":120,"props":4371,"children":4372},{},[4373,4378],{"type":41,"tag":57,"props":4374,"children":4375},{},[4376],{"type":46,"value":4377},"No persistent connections",{"type":46,"value":4379}," — WebSockets require Durable Objects",{"type":41,"tag":120,"props":4381,"children":4382},{},[4383,4388],{"type":41,"tag":57,"props":4384,"children":4385},{},[4386],{"type":46,"value":4387},"fetch is available",{"type":46,"value":4389}," — Use standard fetch for HTTP requests",{"type":41,"tag":1215,"props":4391,"children":4393},{"id":4392},"use-web-apis-instead",[4394],{"type":46,"value":4395},"Use Web APIs Instead",{"type":41,"tag":292,"props":4397,"children":4399},{"className":311,"code":4398,"language":313,"meta":300,"style":300},"\u002F\u002F Use Web Crypto instead of Node crypto\nconst hash = await crypto.subtle.digest(\n  \"SHA-256\",\n  new TextEncoder().encode(\"data\")\n);\n\n\u002F\u002F Use fetch instead of node-fetch\nconst response = await fetch(\"https:\u002F\u002Fapi.example.com\");\n\n\u002F\u002F Use Response\u002FRequest (already available)\nreturn new Response(JSON.stringify(data), {\n  headers: { \"Content-Type\": \"application\u002Fjson\" },\n});\n",[4400],{"type":41,"tag":87,"props":4401,"children":4402},{"__ignoreMap":300},[4403,4411,4459,4479,4526,4537,4544,4552,4601,4608,4616,4658,4707],{"type":41,"tag":319,"props":4404,"children":4405},{"class":321,"line":322},[4406],{"type":41,"tag":319,"props":4407,"children":4408},{"style":326},[4409],{"type":46,"value":4410},"\u002F\u002F Use Web Crypto instead of Node crypto\n",{"type":41,"tag":319,"props":4412,"children":4413},{"class":321,"line":332},[4414,4418,4423,4427,4431,4436,4440,4445,4449,4454],{"type":41,"tag":319,"props":4415,"children":4416},{"style":342},[4417],{"type":46,"value":2830},{"type":41,"tag":319,"props":4419,"children":4420},{"style":396},[4421],{"type":46,"value":4422}," hash ",{"type":41,"tag":319,"props":4424,"children":4425},{"style":354},[4426],{"type":46,"value":2840},{"type":41,"tag":319,"props":4428,"children":4429},{"style":336},[4430],{"type":46,"value":673},{"type":41,"tag":319,"props":4432,"children":4433},{"style":396},[4434],{"type":46,"value":4435}," crypto",{"type":41,"tag":319,"props":4437,"children":4438},{"style":354},[4439],{"type":46,"value":404},{"type":41,"tag":319,"props":4441,"children":4442},{"style":396},[4443],{"type":46,"value":4444},"subtle",{"type":41,"tag":319,"props":4446,"children":4447},{"style":354},[4448],{"type":46,"value":404},{"type":41,"tag":319,"props":4450,"children":4451},{"style":348},[4452],{"type":46,"value":4453},"digest",{"type":41,"tag":319,"props":4455,"children":4456},{"style":396},[4457],{"type":46,"value":4458},"(\n",{"type":41,"tag":319,"props":4460,"children":4461},{"class":321,"line":387},[4462,4466,4471,4475],{"type":41,"tag":319,"props":4463,"children":4464},{"style":354},[4465],{"type":46,"value":2852},{"type":41,"tag":319,"props":4467,"children":4468},{"style":436},[4469],{"type":46,"value":4470},"SHA-256",{"type":41,"tag":319,"props":4472,"children":4473},{"style":354},[4474],{"type":46,"value":444},{"type":41,"tag":319,"props":4476,"children":4477},{"style":354},[4478],{"type":46,"value":2381},{"type":41,"tag":319,"props":4480,"children":4481},{"class":321,"line":461},[4482,4487,4492,4496,4500,4505,4509,4513,4517,4521],{"type":41,"tag":319,"props":4483,"children":4484},{"style":354},[4485],{"type":46,"value":4486},"  new",{"type":41,"tag":319,"props":4488,"children":4489},{"style":348},[4490],{"type":46,"value":4491}," TextEncoder",{"type":41,"tag":319,"props":4493,"children":4494},{"style":396},[4495],{"type":46,"value":691},{"type":41,"tag":319,"props":4497,"children":4498},{"style":354},[4499],{"type":46,"value":404},{"type":41,"tag":319,"props":4501,"children":4502},{"style":348},[4503],{"type":46,"value":4504},"encode",{"type":41,"tag":319,"props":4506,"children":4507},{"style":396},[4508],{"type":46,"value":357},{"type":41,"tag":319,"props":4510,"children":4511},{"style":354},[4512],{"type":46,"value":444},{"type":41,"tag":319,"props":4514,"children":4515},{"style":436},[4516],{"type":46,"value":2745},{"type":41,"tag":319,"props":4518,"children":4519},{"style":354},[4520],{"type":46,"value":444},{"type":41,"tag":319,"props":4522,"children":4523},{"style":396},[4524],{"type":46,"value":4525},")\n",{"type":41,"tag":319,"props":4527,"children":4528},{"class":321,"line":596},[4529,4533],{"type":41,"tag":319,"props":4530,"children":4531},{"style":396},[4532],{"type":46,"value":379},{"type":41,"tag":319,"props":4534,"children":4535},{"style":354},[4536],{"type":46,"value":458},{"type":41,"tag":319,"props":4538,"children":4539},{"class":321,"line":606},[4540],{"type":41,"tag":319,"props":4541,"children":4542},{"emptyLinePlaceholder":600},[4543],{"type":46,"value":603},{"type":41,"tag":319,"props":4545,"children":4546},{"class":321,"line":652},[4547],{"type":41,"tag":319,"props":4548,"children":4549},{"style":326},[4550],{"type":46,"value":4551},"\u002F\u002F Use fetch instead of node-fetch\n",{"type":41,"tag":319,"props":4553,"children":4554},{"class":321,"line":698},[4555,4559,4564,4568,4572,4576,4580,4584,4589,4593,4597],{"type":41,"tag":319,"props":4556,"children":4557},{"style":342},[4558],{"type":46,"value":2830},{"type":41,"tag":319,"props":4560,"children":4561},{"style":396},[4562],{"type":46,"value":4563}," response ",{"type":41,"tag":319,"props":4565,"children":4566},{"style":354},[4567],{"type":46,"value":2840},{"type":41,"tag":319,"props":4569,"children":4570},{"style":336},[4571],{"type":46,"value":673},{"type":41,"tag":319,"props":4573,"children":4574},{"style":348},[4575],{"type":46,"value":2326},{"type":41,"tag":319,"props":4577,"children":4578},{"style":396},[4579],{"type":46,"value":357},{"type":41,"tag":319,"props":4581,"children":4582},{"style":354},[4583],{"type":46,"value":444},{"type":41,"tag":319,"props":4585,"children":4586},{"style":436},[4587],{"type":46,"value":4588},"https:\u002F\u002Fapi.example.com",{"type":41,"tag":319,"props":4590,"children":4591},{"style":354},[4592],{"type":46,"value":444},{"type":41,"tag":319,"props":4594,"children":4595},{"style":396},[4596],{"type":46,"value":379},{"type":41,"tag":319,"props":4598,"children":4599},{"style":354},[4600],{"type":46,"value":458},{"type":41,"tag":319,"props":4602,"children":4603},{"class":321,"line":776},[4604],{"type":41,"tag":319,"props":4605,"children":4606},{"emptyLinePlaceholder":600},[4607],{"type":46,"value":603},{"type":41,"tag":319,"props":4609,"children":4610},{"class":321,"line":784},[4611],{"type":41,"tag":319,"props":4612,"children":4613},{"style":326},[4614],{"type":46,"value":4615},"\u002F\u002F Use Response\u002FRequest (already available)\n",{"type":41,"tag":319,"props":4617,"children":4618},{"class":321,"line":792},[4619,4624,4628,4632,4637,4641,4645,4650,4654],{"type":41,"tag":319,"props":4620,"children":4621},{"style":336},[4622],{"type":46,"value":4623},"return",{"type":41,"tag":319,"props":4625,"children":4626},{"style":354},[4627],{"type":46,"value":1001},{"type":41,"tag":319,"props":4629,"children":4630},{"style":348},[4631],{"type":46,"value":399},{"type":41,"tag":319,"props":4633,"children":4634},{"style":396},[4635],{"type":46,"value":4636},"(JSON",{"type":41,"tag":319,"props":4638,"children":4639},{"style":354},[4640],{"type":46,"value":404},{"type":41,"tag":319,"props":4642,"children":4643},{"style":348},[4644],{"type":46,"value":2528},{"type":41,"tag":319,"props":4646,"children":4647},{"style":396},[4648],{"type":46,"value":4649},"(data)",{"type":41,"tag":319,"props":4651,"children":4652},{"style":354},[4653],{"type":46,"value":1108},{"type":41,"tag":319,"props":4655,"children":4656},{"style":354},[4657],{"type":46,"value":384},{"type":41,"tag":319,"props":4659,"children":4660},{"class":321,"line":837},[4661,4666,4670,4674,4678,4682,4686,4690,4694,4698,4702],{"type":41,"tag":319,"props":4662,"children":4663},{"style":412},[4664],{"type":46,"value":4665},"  headers",{"type":41,"tag":319,"props":4667,"children":4668},{"style":354},[4669],{"type":46,"value":368},{"type":41,"tag":319,"props":4671,"children":4672},{"style":354},[4673],{"type":46,"value":746},{"type":41,"tag":319,"props":4675,"children":4676},{"style":354},[4677],{"type":46,"value":433},{"type":41,"tag":319,"props":4679,"children":4680},{"style":412},[4681],{"type":46,"value":2410},{"type":41,"tag":319,"props":4683,"children":4684},{"style":354},[4685],{"type":46,"value":444},{"type":41,"tag":319,"props":4687,"children":4688},{"style":354},[4689],{"type":46,"value":368},{"type":41,"tag":319,"props":4691,"children":4692},{"style":354},[4693],{"type":46,"value":433},{"type":41,"tag":319,"props":4695,"children":4696},{"style":436},[4697],{"type":46,"value":2427},{"type":41,"tag":319,"props":4699,"children":4700},{"style":354},[4701],{"type":46,"value":444},{"type":41,"tag":319,"props":4703,"children":4704},{"style":354},[4705],{"type":46,"value":4706}," },\n",{"type":41,"tag":319,"props":4708,"children":4709},{"class":321,"line":877},[4710,4714,4718],{"type":41,"tag":319,"props":4711,"children":4712},{"style":354},[4713],{"type":46,"value":578},{"type":41,"tag":319,"props":4715,"children":4716},{"style":396},[4717],{"type":46,"value":379},{"type":41,"tag":319,"props":4719,"children":4720},{"style":354},[4721],{"type":46,"value":458},{"type":41,"tag":1215,"props":4723,"children":4725},{"id":4724},"database-options",[4726],{"type":46,"value":4727},"Database Options",{"type":41,"tag":53,"props":4729,"children":4730},{},[4731],{"type":46,"value":4732},"Since filesystem is unavailable, use cloud databases:",{"type":41,"tag":116,"props":4734,"children":4735},{},[4736,4746,4756,4766,4776],{"type":41,"tag":120,"props":4737,"children":4738},{},[4739,4744],{"type":41,"tag":57,"props":4740,"children":4741},{},[4742],{"type":46,"value":4743},"Cloudflare D1",{"type":46,"value":4745}," — SQLite at the edge",{"type":41,"tag":120,"props":4747,"children":4748},{},[4749,4754],{"type":41,"tag":57,"props":4750,"children":4751},{},[4752],{"type":46,"value":4753},"Turso",{"type":46,"value":4755}," — Distributed SQLite",{"type":41,"tag":120,"props":4757,"children":4758},{},[4759,4764],{"type":41,"tag":57,"props":4760,"children":4761},{},[4762],{"type":46,"value":4763},"PlanetScale",{"type":46,"value":4765}," — Serverless MySQL",{"type":41,"tag":120,"props":4767,"children":4768},{},[4769,4774],{"type":41,"tag":57,"props":4770,"children":4771},{},[4772],{"type":46,"value":4773},"Supabase",{"type":46,"value":4775}," — Postgres with REST API",{"type":41,"tag":120,"props":4777,"children":4778},{},[4779,4784],{"type":41,"tag":57,"props":4780,"children":4781},{},[4782],{"type":46,"value":4783},"Neon",{"type":46,"value":4785}," — Serverless Postgres",{"type":41,"tag":53,"props":4787,"children":4788},{},[4789],{"type":46,"value":4790},"Example with Turso:",{"type":41,"tag":292,"props":4792,"children":4794},{"className":311,"code":4793,"language":313,"meta":300,"style":300},"\u002F\u002F app\u002Fapi\u002Fusers+api.ts\nimport { createClient } from \"@libsql\u002Fclient\u002Fweb\";\n\nconst db = createClient({\n  url: process.env.TURSO_URL!,\n  authToken: process.env.TURSO_AUTH_TOKEN!,\n});\n\nexport async function GET() {\n  const result = await db.execute(\"SELECT * FROM users\");\n  return Response.json(result.rows);\n}\n",[4795],{"type":41,"tag":87,"props":4796,"children":4797},{"__ignoreMap":300},[4798,4806,4849,4856,4884,4923,4960,4975,4982,5009,5068,5113],{"type":41,"tag":319,"props":4799,"children":4800},{"class":321,"line":322},[4801],{"type":41,"tag":319,"props":4802,"children":4803},{"style":326},[4804],{"type":46,"value":4805},"\u002F\u002F app\u002Fapi\u002Fusers+api.ts\n",{"type":41,"tag":319,"props":4807,"children":4808},{"class":321,"line":332},[4809,4814,4818,4823,4827,4832,4836,4841,4845],{"type":41,"tag":319,"props":4810,"children":4811},{"style":336},[4812],{"type":46,"value":4813},"import",{"type":41,"tag":319,"props":4815,"children":4816},{"style":354},[4817],{"type":46,"value":746},{"type":41,"tag":319,"props":4819,"children":4820},{"style":396},[4821],{"type":46,"value":4822}," createClient",{"type":41,"tag":319,"props":4824,"children":4825},{"style":354},[4826],{"type":46,"value":449},{"type":41,"tag":319,"props":4828,"children":4829},{"style":336},[4830],{"type":46,"value":4831}," from",{"type":41,"tag":319,"props":4833,"children":4834},{"style":354},[4835],{"type":46,"value":433},{"type":41,"tag":319,"props":4837,"children":4838},{"style":436},[4839],{"type":46,"value":4840},"@libsql\u002Fclient\u002Fweb",{"type":41,"tag":319,"props":4842,"children":4843},{"style":354},[4844],{"type":46,"value":444},{"type":41,"tag":319,"props":4846,"children":4847},{"style":354},[4848],{"type":46,"value":458},{"type":41,"tag":319,"props":4850,"children":4851},{"class":321,"line":387},[4852],{"type":41,"tag":319,"props":4853,"children":4854},{"emptyLinePlaceholder":600},[4855],{"type":46,"value":603},{"type":41,"tag":319,"props":4857,"children":4858},{"class":321,"line":461},[4859,4863,4868,4872,4876,4880],{"type":41,"tag":319,"props":4860,"children":4861},{"style":342},[4862],{"type":46,"value":2830},{"type":41,"tag":319,"props":4864,"children":4865},{"style":396},[4866],{"type":46,"value":4867}," db ",{"type":41,"tag":319,"props":4869,"children":4870},{"style":354},[4871],{"type":46,"value":2840},{"type":41,"tag":319,"props":4873,"children":4874},{"style":348},[4875],{"type":46,"value":4822},{"type":41,"tag":319,"props":4877,"children":4878},{"style":396},[4879],{"type":46,"value":357},{"type":41,"tag":319,"props":4881,"children":4882},{"style":354},[4883],{"type":46,"value":1693},{"type":41,"tag":319,"props":4885,"children":4886},{"class":321,"line":596},[4887,4892,4896,4901,4905,4909,4913,4918],{"type":41,"tag":319,"props":4888,"children":4889},{"style":412},[4890],{"type":46,"value":4891},"  url",{"type":41,"tag":319,"props":4893,"children":4894},{"style":354},[4895],{"type":46,"value":368},{"type":41,"tag":319,"props":4897,"children":4898},{"style":396},[4899],{"type":46,"value":4900}," process",{"type":41,"tag":319,"props":4902,"children":4903},{"style":354},[4904],{"type":46,"value":404},{"type":41,"tag":319,"props":4906,"children":4907},{"style":396},[4908],{"type":46,"value":2476},{"type":41,"tag":319,"props":4910,"children":4911},{"style":354},[4912],{"type":46,"value":404},{"type":41,"tag":319,"props":4914,"children":4915},{"style":396},[4916],{"type":46,"value":4917},"TURSO_URL",{"type":41,"tag":319,"props":4919,"children":4920},{"style":354},[4921],{"type":46,"value":4922},"!,\n",{"type":41,"tag":319,"props":4924,"children":4925},{"class":321,"line":606},[4926,4931,4935,4939,4943,4947,4951,4956],{"type":41,"tag":319,"props":4927,"children":4928},{"style":412},[4929],{"type":46,"value":4930},"  authToken",{"type":41,"tag":319,"props":4932,"children":4933},{"style":354},[4934],{"type":46,"value":368},{"type":41,"tag":319,"props":4936,"children":4937},{"style":396},[4938],{"type":46,"value":4900},{"type":41,"tag":319,"props":4940,"children":4941},{"style":354},[4942],{"type":46,"value":404},{"type":41,"tag":319,"props":4944,"children":4945},{"style":396},[4946],{"type":46,"value":2476},{"type":41,"tag":319,"props":4948,"children":4949},{"style":354},[4950],{"type":46,"value":404},{"type":41,"tag":319,"props":4952,"children":4953},{"style":396},[4954],{"type":46,"value":4955},"TURSO_AUTH_TOKEN",{"type":41,"tag":319,"props":4957,"children":4958},{"style":354},[4959],{"type":46,"value":4922},{"type":41,"tag":319,"props":4961,"children":4962},{"class":321,"line":652},[4963,4967,4971],{"type":41,"tag":319,"props":4964,"children":4965},{"style":354},[4966],{"type":46,"value":578},{"type":41,"tag":319,"props":4968,"children":4969},{"style":396},[4970],{"type":46,"value":379},{"type":41,"tag":319,"props":4972,"children":4973},{"style":354},[4974],{"type":46,"value":458},{"type":41,"tag":319,"props":4976,"children":4977},{"class":321,"line":698},[4978],{"type":41,"tag":319,"props":4979,"children":4980},{"emptyLinePlaceholder":600},[4981],{"type":46,"value":603},{"type":41,"tag":319,"props":4983,"children":4984},{"class":321,"line":776},[4985,4989,4993,4997,5001,5005],{"type":41,"tag":319,"props":4986,"children":4987},{"style":336},[4988],{"type":46,"value":339},{"type":41,"tag":319,"props":4990,"children":4991},{"style":342},[4992],{"type":46,"value":616},{"type":41,"tag":319,"props":4994,"children":4995},{"style":342},[4996],{"type":46,"value":345},{"type":41,"tag":319,"props":4998,"children":4999},{"style":348},[5000],{"type":46,"value":351},{"type":41,"tag":319,"props":5002,"children":5003},{"style":354},[5004],{"type":46,"value":691},{"type":41,"tag":319,"props":5006,"children":5007},{"style":354},[5008],{"type":46,"value":384},{"type":41,"tag":319,"props":5010,"children":5011},{"class":321,"line":784},[5012,5016,5021,5025,5029,5034,5038,5043,5047,5051,5056,5060,5064],{"type":41,"tag":319,"props":5013,"children":5014},{"style":342},[5015],{"type":46,"value":658},{"type":41,"tag":319,"props":5017,"children":5018},{"style":396},[5019],{"type":46,"value":5020}," result",{"type":41,"tag":319,"props":5022,"children":5023},{"style":354},[5024],{"type":46,"value":668},{"type":41,"tag":319,"props":5026,"children":5027},{"style":336},[5028],{"type":46,"value":673},{"type":41,"tag":319,"props":5030,"children":5031},{"style":396},[5032],{"type":46,"value":5033}," db",{"type":41,"tag":319,"props":5035,"children":5036},{"style":354},[5037],{"type":46,"value":404},{"type":41,"tag":319,"props":5039,"children":5040},{"style":348},[5041],{"type":46,"value":5042},"execute",{"type":41,"tag":319,"props":5044,"children":5045},{"style":412},[5046],{"type":46,"value":357},{"type":41,"tag":319,"props":5048,"children":5049},{"style":354},[5050],{"type":46,"value":444},{"type":41,"tag":319,"props":5052,"children":5053},{"style":436},[5054],{"type":46,"value":5055},"SELECT * FROM users",{"type":41,"tag":319,"props":5057,"children":5058},{"style":354},[5059],{"type":46,"value":444},{"type":41,"tag":319,"props":5061,"children":5062},{"style":412},[5063],{"type":46,"value":379},{"type":41,"tag":319,"props":5065,"children":5066},{"style":354},[5067],{"type":46,"value":458},{"type":41,"tag":319,"props":5069,"children":5070},{"class":321,"line":792},[5071,5075,5079,5083,5087,5091,5096,5100,5105,5109],{"type":41,"tag":319,"props":5072,"children":5073},{"style":336},[5074],{"type":46,"value":393},{"type":41,"tag":319,"props":5076,"children":5077},{"style":396},[5078],{"type":46,"value":399},{"type":41,"tag":319,"props":5080,"children":5081},{"style":354},[5082],{"type":46,"value":404},{"type":41,"tag":319,"props":5084,"children":5085},{"style":348},[5086],{"type":46,"value":409},{"type":41,"tag":319,"props":5088,"children":5089},{"style":412},[5090],{"type":46,"value":357},{"type":41,"tag":319,"props":5092,"children":5093},{"style":396},[5094],{"type":46,"value":5095},"result",{"type":41,"tag":319,"props":5097,"children":5098},{"style":354},[5099],{"type":46,"value":404},{"type":41,"tag":319,"props":5101,"children":5102},{"style":396},[5103],{"type":46,"value":5104},"rows",{"type":41,"tag":319,"props":5106,"children":5107},{"style":412},[5108],{"type":46,"value":379},{"type":41,"tag":319,"props":5110,"children":5111},{"style":354},[5112],{"type":46,"value":458},{"type":41,"tag":319,"props":5114,"children":5115},{"class":321,"line":837},[5116],{"type":41,"tag":319,"props":5117,"children":5118},{"style":354},[5119],{"type":46,"value":467},{"type":41,"tag":104,"props":5121,"children":5123},{"id":5122},"calling-api-routes-from-client",[5124],{"type":46,"value":5125},"Calling API Routes from Client",{"type":41,"tag":292,"props":5127,"children":5129},{"className":311,"code":5128,"language":313,"meta":300,"style":300},"\u002F\u002F From React Native components\nconst response = await fetch(\"\u002Fapi\u002Fhello\");\nconst data = await response.json();\n\n\u002F\u002F With body\nconst response = await fetch(\"\u002Fapi\u002Fusers\", {\n  method: \"POST\",\n  headers: { \"Content-Type\": \"application\u002Fjson\" },\n  body: JSON.stringify({ name: \"John\" }),\n});\n",[5130],{"type":41,"tag":87,"props":5131,"children":5132},{"__ignoreMap":300},[5133,5141,5189,5229,5236,5244,5292,5320,5367,5433],{"type":41,"tag":319,"props":5134,"children":5135},{"class":321,"line":322},[5136],{"type":41,"tag":319,"props":5137,"children":5138},{"style":326},[5139],{"type":46,"value":5140},"\u002F\u002F From React Native components\n",{"type":41,"tag":319,"props":5142,"children":5143},{"class":321,"line":332},[5144,5148,5152,5156,5160,5164,5168,5172,5177,5181,5185],{"type":41,"tag":319,"props":5145,"children":5146},{"style":342},[5147],{"type":46,"value":2830},{"type":41,"tag":319,"props":5149,"children":5150},{"style":396},[5151],{"type":46,"value":4563},{"type":41,"tag":319,"props":5153,"children":5154},{"style":354},[5155],{"type":46,"value":2840},{"type":41,"tag":319,"props":5157,"children":5158},{"style":336},[5159],{"type":46,"value":673},{"type":41,"tag":319,"props":5161,"children":5162},{"style":348},[5163],{"type":46,"value":2326},{"type":41,"tag":319,"props":5165,"children":5166},{"style":396},[5167],{"type":46,"value":357},{"type":41,"tag":319,"props":5169,"children":5170},{"style":354},[5171],{"type":46,"value":444},{"type":41,"tag":319,"props":5173,"children":5174},{"style":436},[5175],{"type":46,"value":5176},"\u002Fapi\u002Fhello",{"type":41,"tag":319,"props":5178,"children":5179},{"style":354},[5180],{"type":46,"value":444},{"type":41,"tag":319,"props":5182,"children":5183},{"style":396},[5184],{"type":46,"value":379},{"type":41,"tag":319,"props":5186,"children":5187},{"style":354},[5188],{"type":46,"value":458},{"type":41,"tag":319,"props":5190,"children":5191},{"class":321,"line":387},[5192,5196,5201,5205,5209,5213,5217,5221,5225],{"type":41,"tag":319,"props":5193,"children":5194},{"style":342},[5195],{"type":46,"value":2830},{"type":41,"tag":319,"props":5197,"children":5198},{"style":396},[5199],{"type":46,"value":5200}," data ",{"type":41,"tag":319,"props":5202,"children":5203},{"style":354},[5204],{"type":46,"value":2840},{"type":41,"tag":319,"props":5206,"children":5207},{"style":336},[5208],{"type":46,"value":673},{"type":41,"tag":319,"props":5210,"children":5211},{"style":396},[5212],{"type":46,"value":2313},{"type":41,"tag":319,"props":5214,"children":5215},{"style":354},[5216],{"type":46,"value":404},{"type":41,"tag":319,"props":5218,"children":5219},{"style":348},[5220],{"type":46,"value":409},{"type":41,"tag":319,"props":5222,"children":5223},{"style":396},[5224],{"type":46,"value":691},{"type":41,"tag":319,"props":5226,"children":5227},{"style":354},[5228],{"type":46,"value":458},{"type":41,"tag":319,"props":5230,"children":5231},{"class":321,"line":461},[5232],{"type":41,"tag":319,"props":5233,"children":5234},{"emptyLinePlaceholder":600},[5235],{"type":46,"value":603},{"type":41,"tag":319,"props":5237,"children":5238},{"class":321,"line":596},[5239],{"type":41,"tag":319,"props":5240,"children":5241},{"style":326},[5242],{"type":46,"value":5243},"\u002F\u002F With body\n",{"type":41,"tag":319,"props":5245,"children":5246},{"class":321,"line":606},[5247,5251,5255,5259,5263,5267,5271,5275,5280,5284,5288],{"type":41,"tag":319,"props":5248,"children":5249},{"style":342},[5250],{"type":46,"value":2830},{"type":41,"tag":319,"props":5252,"children":5253},{"style":396},[5254],{"type":46,"value":4563},{"type":41,"tag":319,"props":5256,"children":5257},{"style":354},[5258],{"type":46,"value":2840},{"type":41,"tag":319,"props":5260,"children":5261},{"style":336},[5262],{"type":46,"value":673},{"type":41,"tag":319,"props":5264,"children":5265},{"style":348},[5266],{"type":46,"value":2326},{"type":41,"tag":319,"props":5268,"children":5269},{"style":396},[5270],{"type":46,"value":357},{"type":41,"tag":319,"props":5272,"children":5273},{"style":354},[5274],{"type":46,"value":444},{"type":41,"tag":319,"props":5276,"children":5277},{"style":436},[5278],{"type":46,"value":5279},"\u002Fapi\u002Fusers",{"type":41,"tag":319,"props":5281,"children":5282},{"style":354},[5283],{"type":46,"value":444},{"type":41,"tag":319,"props":5285,"children":5286},{"style":354},[5287],{"type":46,"value":1108},{"type":41,"tag":319,"props":5289,"children":5290},{"style":354},[5291],{"type":46,"value":384},{"type":41,"tag":319,"props":5293,"children":5294},{"class":321,"line":652},[5295,5300,5304,5308,5312,5316],{"type":41,"tag":319,"props":5296,"children":5297},{"style":412},[5298],{"type":46,"value":5299},"  method",{"type":41,"tag":319,"props":5301,"children":5302},{"style":354},[5303],{"type":46,"value":368},{"type":41,"tag":319,"props":5305,"children":5306},{"style":354},[5307],{"type":46,"value":433},{"type":41,"tag":319,"props":5309,"children":5310},{"style":436},[5311],{"type":46,"value":2372},{"type":41,"tag":319,"props":5313,"children":5314},{"style":354},[5315],{"type":46,"value":444},{"type":41,"tag":319,"props":5317,"children":5318},{"style":354},[5319],{"type":46,"value":2381},{"type":41,"tag":319,"props":5321,"children":5322},{"class":321,"line":698},[5323,5327,5331,5335,5339,5343,5347,5351,5355,5359,5363],{"type":41,"tag":319,"props":5324,"children":5325},{"style":412},[5326],{"type":46,"value":4665},{"type":41,"tag":319,"props":5328,"children":5329},{"style":354},[5330],{"type":46,"value":368},{"type":41,"tag":319,"props":5332,"children":5333},{"style":354},[5334],{"type":46,"value":746},{"type":41,"tag":319,"props":5336,"children":5337},{"style":354},[5338],{"type":46,"value":433},{"type":41,"tag":319,"props":5340,"children":5341},{"style":412},[5342],{"type":46,"value":2410},{"type":41,"tag":319,"props":5344,"children":5345},{"style":354},[5346],{"type":46,"value":444},{"type":41,"tag":319,"props":5348,"children":5349},{"style":354},[5350],{"type":46,"value":368},{"type":41,"tag":319,"props":5352,"children":5353},{"style":354},[5354],{"type":46,"value":433},{"type":41,"tag":319,"props":5356,"children":5357},{"style":436},[5358],{"type":46,"value":2427},{"type":41,"tag":319,"props":5360,"children":5361},{"style":354},[5362],{"type":46,"value":444},{"type":41,"tag":319,"props":5364,"children":5365},{"style":354},[5366],{"type":46,"value":4706},{"type":41,"tag":319,"props":5368,"children":5369},{"class":321,"line":776},[5370,5375,5379,5383,5387,5391,5395,5399,5404,5408,5412,5417,5421,5425,5429],{"type":41,"tag":319,"props":5371,"children":5372},{"style":412},[5373],{"type":46,"value":5374},"  body",{"type":41,"tag":319,"props":5376,"children":5377},{"style":354},[5378],{"type":46,"value":368},{"type":41,"tag":319,"props":5380,"children":5381},{"style":396},[5382],{"type":46,"value":2519},{"type":41,"tag":319,"props":5384,"children":5385},{"style":354},[5386],{"type":46,"value":404},{"type":41,"tag":319,"props":5388,"children":5389},{"style":348},[5390],{"type":46,"value":2528},{"type":41,"tag":319,"props":5392,"children":5393},{"style":396},[5394],{"type":46,"value":357},{"type":41,"tag":319,"props":5396,"children":5397},{"style":354},[5398],{"type":46,"value":419},{"type":41,"tag":319,"props":5400,"children":5401},{"style":412},[5402],{"type":46,"value":5403}," name",{"type":41,"tag":319,"props":5405,"children":5406},{"style":354},[5407],{"type":46,"value":368},{"type":41,"tag":319,"props":5409,"children":5410},{"style":354},[5411],{"type":46,"value":433},{"type":41,"tag":319,"props":5413,"children":5414},{"style":436},[5415],{"type":46,"value":5416},"John",{"type":41,"tag":319,"props":5418,"children":5419},{"style":354},[5420],{"type":46,"value":444},{"type":41,"tag":319,"props":5422,"children":5423},{"style":354},[5424],{"type":46,"value":449},{"type":41,"tag":319,"props":5426,"children":5427},{"style":396},[5428],{"type":46,"value":379},{"type":41,"tag":319,"props":5430,"children":5431},{"style":354},[5432],{"type":46,"value":2381},{"type":41,"tag":319,"props":5434,"children":5435},{"class":321,"line":784},[5436,5440,5444],{"type":41,"tag":319,"props":5437,"children":5438},{"style":354},[5439],{"type":46,"value":578},{"type":41,"tag":319,"props":5441,"children":5442},{"style":396},[5443],{"type":46,"value":379},{"type":41,"tag":319,"props":5445,"children":5446},{"style":354},[5447],{"type":46,"value":458},{"type":41,"tag":104,"props":5449,"children":5451},{"id":5450},"common-patterns",[5452],{"type":46,"value":5453},"Common Patterns",{"type":41,"tag":1215,"props":5455,"children":5457},{"id":5456},"authentication-middleware",[5458],{"type":46,"value":5459},"Authentication Middleware",{"type":41,"tag":292,"props":5461,"children":5463},{"className":311,"code":5462,"language":313,"meta":300,"style":300},"\u002F\u002F utils\u002Fauth.ts\nexport async function requireAuth(request: Request) {\n  const token = request.headers.get(\"Authorization\")?.replace(\"Bearer \", \"\");\n\n  if (!token) {\n    throw new Response(JSON.stringify({ error: \"Unauthorized\" }), {\n      status: 401,\n      headers: { \"Content-Type\": \"application\u002Fjson\" },\n    });\n  }\n\n  \u002F\u002F Verify token...\n  return { userId: \"123\" };\n}\n\n\u002F\u002F app\u002Fapi\u002Fprotected+api.ts\nimport { requireAuth } from \"..\u002F..\u002Futils\u002Fauth\";\n\nexport async function GET(request: Request) {\n  const { userId } = await requireAuth(request);\n  return Response.json({ userId });\n}\n",[5464],{"type":41,"tag":87,"props":5465,"children":5466},{"__ignoreMap":300},[5467,5475,5519,5618,5625,5653,5730,5750,5798,5813,5820,5827,5835,5872,5879,5886,5894,5934,5941,5984,6032,6076],{"type":41,"tag":319,"props":5468,"children":5469},{"class":321,"line":322},[5470],{"type":41,"tag":319,"props":5471,"children":5472},{"style":326},[5473],{"type":46,"value":5474},"\u002F\u002F utils\u002Fauth.ts\n",{"type":41,"tag":319,"props":5476,"children":5477},{"class":321,"line":332},[5478,5482,5486,5490,5495,5499,5503,5507,5511,5515],{"type":41,"tag":319,"props":5479,"children":5480},{"style":336},[5481],{"type":46,"value":339},{"type":41,"tag":319,"props":5483,"children":5484},{"style":342},[5485],{"type":46,"value":616},{"type":41,"tag":319,"props":5487,"children":5488},{"style":342},[5489],{"type":46,"value":345},{"type":41,"tag":319,"props":5491,"children":5492},{"style":348},[5493],{"type":46,"value":5494}," requireAuth",{"type":41,"tag":319,"props":5496,"children":5497},{"style":354},[5498],{"type":46,"value":357},{"type":41,"tag":319,"props":5500,"children":5501},{"style":360},[5502],{"type":46,"value":363},{"type":41,"tag":319,"props":5504,"children":5505},{"style":354},[5506],{"type":46,"value":368},{"type":41,"tag":319,"props":5508,"children":5509},{"style":371},[5510],{"type":46,"value":374},{"type":41,"tag":319,"props":5512,"children":5513},{"style":354},[5514],{"type":46,"value":379},{"type":41,"tag":319,"props":5516,"children":5517},{"style":354},[5518],{"type":46,"value":384},{"type":41,"tag":319,"props":5520,"children":5521},{"class":321,"line":387},[5522,5526,5531,5535,5539,5543,5547,5551,5555,5559,5563,5567,5571,5575,5580,5585,5589,5593,5597,5601,5605,5610,5614],{"type":41,"tag":319,"props":5523,"children":5524},{"style":342},[5525],{"type":46,"value":658},{"type":41,"tag":319,"props":5527,"children":5528},{"style":396},[5529],{"type":46,"value":5530}," token",{"type":41,"tag":319,"props":5532,"children":5533},{"style":354},[5534],{"type":46,"value":668},{"type":41,"tag":319,"props":5536,"children":5537},{"style":396},[5538],{"type":46,"value":678},{"type":41,"tag":319,"props":5540,"children":5541},{"style":354},[5542],{"type":46,"value":404},{"type":41,"tag":319,"props":5544,"children":5545},{"style":396},[5546],{"type":46,"value":1544},{"type":41,"tag":319,"props":5548,"children":5549},{"style":354},[5550],{"type":46,"value":404},{"type":41,"tag":319,"props":5552,"children":5553},{"style":348},[5554],{"type":46,"value":1354},{"type":41,"tag":319,"props":5556,"children":5557},{"style":412},[5558],{"type":46,"value":357},{"type":41,"tag":319,"props":5560,"children":5561},{"style":354},[5562],{"type":46,"value":444},{"type":41,"tag":319,"props":5564,"children":5565},{"style":436},[5566],{"type":46,"value":1642},{"type":41,"tag":319,"props":5568,"children":5569},{"style":354},[5570],{"type":46,"value":444},{"type":41,"tag":319,"props":5572,"children":5573},{"style":412},[5574],{"type":46,"value":379},{"type":41,"tag":319,"props":5576,"children":5577},{"style":354},[5578],{"type":46,"value":5579},"?.",{"type":41,"tag":319,"props":5581,"children":5582},{"style":348},[5583],{"type":46,"value":5584},"replace",{"type":41,"tag":319,"props":5586,"children":5587},{"style":412},[5588],{"type":46,"value":357},{"type":41,"tag":319,"props":5590,"children":5591},{"style":354},[5592],{"type":46,"value":444},{"type":41,"tag":319,"props":5594,"children":5595},{"style":436},[5596],{"type":46,"value":2457},{"type":41,"tag":319,"props":5598,"children":5599},{"style":354},[5600],{"type":46,"value":444},{"type":41,"tag":319,"props":5602,"children":5603},{"style":354},[5604],{"type":46,"value":1108},{"type":41,"tag":319,"props":5606,"children":5607},{"style":354},[5608],{"type":46,"value":5609}," \"\"",{"type":41,"tag":319,"props":5611,"children":5612},{"style":412},[5613],{"type":46,"value":379},{"type":41,"tag":319,"props":5615,"children":5616},{"style":354},[5617],{"type":46,"value":458},{"type":41,"tag":319,"props":5619,"children":5620},{"class":321,"line":461},[5621],{"type":41,"tag":319,"props":5622,"children":5623},{"emptyLinePlaceholder":600},[5624],{"type":46,"value":603},{"type":41,"tag":319,"props":5626,"children":5627},{"class":321,"line":596},[5628,5632,5636,5640,5645,5649],{"type":41,"tag":319,"props":5629,"children":5630},{"style":336},[5631],{"type":46,"value":1669},{"type":41,"tag":319,"props":5633,"children":5634},{"style":412},[5635],{"type":46,"value":1674},{"type":41,"tag":319,"props":5637,"children":5638},{"style":354},[5639],{"type":46,"value":1679},{"type":41,"tag":319,"props":5641,"children":5642},{"style":396},[5643],{"type":46,"value":5644},"token",{"type":41,"tag":319,"props":5646,"children":5647},{"style":412},[5648],{"type":46,"value":1376},{"type":41,"tag":319,"props":5650,"children":5651},{"style":354},[5652],{"type":46,"value":1693},{"type":41,"tag":319,"props":5654,"children":5655},{"class":321,"line":606},[5656,5661,5665,5669,5673,5678,5682,5686,5690,5694,5698,5702,5706,5710,5714,5718,5722,5726],{"type":41,"tag":319,"props":5657,"children":5658},{"style":336},[5659],{"type":46,"value":5660},"    throw",{"type":41,"tag":319,"props":5662,"children":5663},{"style":354},[5664],{"type":46,"value":1001},{"type":41,"tag":319,"props":5666,"children":5667},{"style":348},[5668],{"type":46,"value":399},{"type":41,"tag":319,"props":5670,"children":5671},{"style":412},[5672],{"type":46,"value":357},{"type":41,"tag":319,"props":5674,"children":5675},{"style":396},[5676],{"type":46,"value":5677},"JSON",{"type":41,"tag":319,"props":5679,"children":5680},{"style":354},[5681],{"type":46,"value":404},{"type":41,"tag":319,"props":5683,"children":5684},{"style":348},[5685],{"type":46,"value":2528},{"type":41,"tag":319,"props":5687,"children":5688},{"style":412},[5689],{"type":46,"value":357},{"type":41,"tag":319,"props":5691,"children":5692},{"style":354},[5693],{"type":46,"value":419},{"type":41,"tag":319,"props":5695,"children":5696},{"style":412},[5697],{"type":46,"value":1726},{"type":41,"tag":319,"props":5699,"children":5700},{"style":354},[5701],{"type":46,"value":368},{"type":41,"tag":319,"props":5703,"children":5704},{"style":354},[5705],{"type":46,"value":433},{"type":41,"tag":319,"props":5707,"children":5708},{"style":436},[5709],{"type":46,"value":1739},{"type":41,"tag":319,"props":5711,"children":5712},{"style":354},[5713],{"type":46,"value":444},{"type":41,"tag":319,"props":5715,"children":5716},{"style":354},[5717],{"type":46,"value":449},{"type":41,"tag":319,"props":5719,"children":5720},{"style":412},[5721],{"type":46,"value":379},{"type":41,"tag":319,"props":5723,"children":5724},{"style":354},[5725],{"type":46,"value":1108},{"type":41,"tag":319,"props":5727,"children":5728},{"style":354},[5729],{"type":46,"value":384},{"type":41,"tag":319,"props":5731,"children":5732},{"class":321,"line":652},[5733,5738,5742,5746],{"type":41,"tag":319,"props":5734,"children":5735},{"style":412},[5736],{"type":46,"value":5737},"      status",{"type":41,"tag":319,"props":5739,"children":5740},{"style":354},[5741],{"type":46,"value":368},{"type":41,"tag":319,"props":5743,"children":5744},{"style":758},[5745],{"type":46,"value":1764},{"type":41,"tag":319,"props":5747,"children":5748},{"style":354},[5749],{"type":46,"value":2381},{"type":41,"tag":319,"props":5751,"children":5752},{"class":321,"line":698},[5753,5758,5762,5766,5770,5774,5778,5782,5786,5790,5794],{"type":41,"tag":319,"props":5754,"children":5755},{"style":412},[5756],{"type":46,"value":5757},"      headers",{"type":41,"tag":319,"props":5759,"children":5760},{"style":354},[5761],{"type":46,"value":368},{"type":41,"tag":319,"props":5763,"children":5764},{"style":354},[5765],{"type":46,"value":746},{"type":41,"tag":319,"props":5767,"children":5768},{"style":354},[5769],{"type":46,"value":433},{"type":41,"tag":319,"props":5771,"children":5772},{"style":412},[5773],{"type":46,"value":2410},{"type":41,"tag":319,"props":5775,"children":5776},{"style":354},[5777],{"type":46,"value":444},{"type":41,"tag":319,"props":5779,"children":5780},{"style":354},[5781],{"type":46,"value":368},{"type":41,"tag":319,"props":5783,"children":5784},{"style":354},[5785],{"type":46,"value":433},{"type":41,"tag":319,"props":5787,"children":5788},{"style":436},[5789],{"type":46,"value":2427},{"type":41,"tag":319,"props":5791,"children":5792},{"style":354},[5793],{"type":46,"value":444},{"type":41,"tag":319,"props":5795,"children":5796},{"style":354},[5797],{"type":46,"value":4706},{"type":41,"tag":319,"props":5799,"children":5800},{"class":321,"line":776},[5801,5805,5809],{"type":41,"tag":319,"props":5802,"children":5803},{"style":354},[5804],{"type":46,"value":2646},{"type":41,"tag":319,"props":5806,"children":5807},{"style":412},[5808],{"type":46,"value":379},{"type":41,"tag":319,"props":5810,"children":5811},{"style":354},[5812],{"type":46,"value":458},{"type":41,"tag":319,"props":5814,"children":5815},{"class":321,"line":784},[5816],{"type":41,"tag":319,"props":5817,"children":5818},{"style":354},[5819],{"type":46,"value":1784},{"type":41,"tag":319,"props":5821,"children":5822},{"class":321,"line":792},[5823],{"type":41,"tag":319,"props":5824,"children":5825},{"emptyLinePlaceholder":600},[5826],{"type":46,"value":603},{"type":41,"tag":319,"props":5828,"children":5829},{"class":321,"line":837},[5830],{"type":41,"tag":319,"props":5831,"children":5832},{"style":326},[5833],{"type":46,"value":5834},"  \u002F\u002F Verify token...\n",{"type":41,"tag":319,"props":5836,"children":5837},{"class":321,"line":877},[5838,5842,5846,5850,5854,5858,5863,5867],{"type":41,"tag":319,"props":5839,"children":5840},{"style":336},[5841],{"type":46,"value":393},{"type":41,"tag":319,"props":5843,"children":5844},{"style":354},[5845],{"type":46,"value":746},{"type":41,"tag":319,"props":5847,"children":5848},{"style":412},[5849],{"type":46,"value":1180},{"type":41,"tag":319,"props":5851,"children":5852},{"style":354},[5853],{"type":46,"value":368},{"type":41,"tag":319,"props":5855,"children":5856},{"style":354},[5857],{"type":46,"value":433},{"type":41,"tag":319,"props":5859,"children":5860},{"style":436},[5861],{"type":46,"value":5862},"123",{"type":41,"tag":319,"props":5864,"children":5865},{"style":354},[5866],{"type":46,"value":444},{"type":41,"tag":319,"props":5868,"children":5869},{"style":354},[5870],{"type":46,"value":5871}," };\n",{"type":41,"tag":319,"props":5873,"children":5874},{"class":321,"line":930},[5875],{"type":41,"tag":319,"props":5876,"children":5877},{"style":354},[5878],{"type":46,"value":467},{"type":41,"tag":319,"props":5880,"children":5881},{"class":321,"line":938},[5882],{"type":41,"tag":319,"props":5883,"children":5884},{"emptyLinePlaceholder":600},[5885],{"type":46,"value":603},{"type":41,"tag":319,"props":5887,"children":5888},{"class":321,"line":946},[5889],{"type":41,"tag":319,"props":5890,"children":5891},{"style":326},[5892],{"type":46,"value":5893},"\u002F\u002F app\u002Fapi\u002Fprotected+api.ts\n",{"type":41,"tag":319,"props":5895,"children":5896},{"class":321,"line":991},[5897,5901,5905,5909,5913,5917,5921,5926,5930],{"type":41,"tag":319,"props":5898,"children":5899},{"style":336},[5900],{"type":46,"value":4813},{"type":41,"tag":319,"props":5902,"children":5903},{"style":354},[5904],{"type":46,"value":746},{"type":41,"tag":319,"props":5906,"children":5907},{"style":396},[5908],{"type":46,"value":5494},{"type":41,"tag":319,"props":5910,"children":5911},{"style":354},[5912],{"type":46,"value":449},{"type":41,"tag":319,"props":5914,"children":5915},{"style":336},[5916],{"type":46,"value":4831},{"type":41,"tag":319,"props":5918,"children":5919},{"style":354},[5920],{"type":46,"value":433},{"type":41,"tag":319,"props":5922,"children":5923},{"style":436},[5924],{"type":46,"value":5925},"..\u002F..\u002Futils\u002Fauth",{"type":41,"tag":319,"props":5927,"children":5928},{"style":354},[5929],{"type":46,"value":444},{"type":41,"tag":319,"props":5931,"children":5932},{"style":354},[5933],{"type":46,"value":458},{"type":41,"tag":319,"props":5935,"children":5936},{"class":321,"line":1046},[5937],{"type":41,"tag":319,"props":5938,"children":5939},{"emptyLinePlaceholder":600},[5940],{"type":46,"value":603},{"type":41,"tag":319,"props":5942,"children":5943},{"class":321,"line":2756},[5944,5948,5952,5956,5960,5964,5968,5972,5976,5980],{"type":41,"tag":319,"props":5945,"children":5946},{"style":336},[5947],{"type":46,"value":339},{"type":41,"tag":319,"props":5949,"children":5950},{"style":342},[5951],{"type":46,"value":616},{"type":41,"tag":319,"props":5953,"children":5954},{"style":342},[5955],{"type":46,"value":345},{"type":41,"tag":319,"props":5957,"children":5958},{"style":348},[5959],{"type":46,"value":351},{"type":41,"tag":319,"props":5961,"children":5962},{"style":354},[5963],{"type":46,"value":357},{"type":41,"tag":319,"props":5965,"children":5966},{"style":360},[5967],{"type":46,"value":363},{"type":41,"tag":319,"props":5969,"children":5970},{"style":354},[5971],{"type":46,"value":368},{"type":41,"tag":319,"props":5973,"children":5974},{"style":371},[5975],{"type":46,"value":374},{"type":41,"tag":319,"props":5977,"children":5978},{"style":354},[5979],{"type":46,"value":379},{"type":41,"tag":319,"props":5981,"children":5982},{"style":354},[5983],{"type":46,"value":384},{"type":41,"tag":319,"props":5985,"children":5987},{"class":321,"line":5986},20,[5988,5992,5996,6000,6004,6008,6012,6016,6020,6024,6028],{"type":41,"tag":319,"props":5989,"children":5990},{"style":342},[5991],{"type":46,"value":658},{"type":41,"tag":319,"props":5993,"children":5994},{"style":354},[5995],{"type":46,"value":746},{"type":41,"tag":319,"props":5997,"children":5998},{"style":396},[5999],{"type":46,"value":1180},{"type":41,"tag":319,"props":6001,"children":6002},{"style":354},[6003],{"type":46,"value":449},{"type":41,"tag":319,"props":6005,"children":6006},{"style":354},[6007],{"type":46,"value":668},{"type":41,"tag":319,"props":6009,"children":6010},{"style":336},[6011],{"type":46,"value":673},{"type":41,"tag":319,"props":6013,"children":6014},{"style":348},[6015],{"type":46,"value":5494},{"type":41,"tag":319,"props":6017,"children":6018},{"style":412},[6019],{"type":46,"value":357},{"type":41,"tag":319,"props":6021,"children":6022},{"style":396},[6023],{"type":46,"value":363},{"type":41,"tag":319,"props":6025,"children":6026},{"style":412},[6027],{"type":46,"value":379},{"type":41,"tag":319,"props":6029,"children":6030},{"style":354},[6031],{"type":46,"value":458},{"type":41,"tag":319,"props":6033,"children":6035},{"class":321,"line":6034},21,[6036,6040,6044,6048,6052,6056,6060,6064,6068,6072],{"type":41,"tag":319,"props":6037,"children":6038},{"style":336},[6039],{"type":46,"value":393},{"type":41,"tag":319,"props":6041,"children":6042},{"style":396},[6043],{"type":46,"value":399},{"type":41,"tag":319,"props":6045,"children":6046},{"style":354},[6047],{"type":46,"value":404},{"type":41,"tag":319,"props":6049,"children":6050},{"style":348},[6051],{"type":46,"value":409},{"type":41,"tag":319,"props":6053,"children":6054},{"style":412},[6055],{"type":46,"value":357},{"type":41,"tag":319,"props":6057,"children":6058},{"style":354},[6059],{"type":46,"value":419},{"type":41,"tag":319,"props":6061,"children":6062},{"style":396},[6063],{"type":46,"value":1180},{"type":41,"tag":319,"props":6065,"children":6066},{"style":354},[6067],{"type":46,"value":449},{"type":41,"tag":319,"props":6069,"children":6070},{"style":412},[6071],{"type":46,"value":379},{"type":41,"tag":319,"props":6073,"children":6074},{"style":354},[6075],{"type":46,"value":458},{"type":41,"tag":319,"props":6077,"children":6079},{"class":321,"line":6078},22,[6080],{"type":41,"tag":319,"props":6081,"children":6082},{"style":354},[6083],{"type":46,"value":467},{"type":41,"tag":1215,"props":6085,"children":6087},{"id":6086},"proxy-external-api",[6088],{"type":46,"value":6089},"Proxy External API",{"type":41,"tag":292,"props":6091,"children":6093},{"className":311,"code":6092,"language":313,"meta":300,"style":300},"\u002F\u002F app\u002Fapi\u002Fweather+api.ts\nexport async function GET(request: Request) {\n  const url = new URL(request.url);\n  const city = url.searchParams.get(\"city\");\n\n  const response = await fetch(\n    `https:\u002F\u002Fapi.weather.com\u002Fv1\u002Fcurrent?city=${city}&key=${process.env.WEATHER_API_KEY}`\n  );\n\n  return Response.json(await response.json());\n}\n",[6094],{"type":41,"tag":87,"props":6095,"children":6096},{"__ignoreMap":300},[6097,6105,6148,6195,6256,6263,6290,6350,6362,6369,6418],{"type":41,"tag":319,"props":6098,"children":6099},{"class":321,"line":322},[6100],{"type":41,"tag":319,"props":6101,"children":6102},{"style":326},[6103],{"type":46,"value":6104},"\u002F\u002F app\u002Fapi\u002Fweather+api.ts\n",{"type":41,"tag":319,"props":6106,"children":6107},{"class":321,"line":332},[6108,6112,6116,6120,6124,6128,6132,6136,6140,6144],{"type":41,"tag":319,"props":6109,"children":6110},{"style":336},[6111],{"type":46,"value":339},{"type":41,"tag":319,"props":6113,"children":6114},{"style":342},[6115],{"type":46,"value":616},{"type":41,"tag":319,"props":6117,"children":6118},{"style":342},[6119],{"type":46,"value":345},{"type":41,"tag":319,"props":6121,"children":6122},{"style":348},[6123],{"type":46,"value":351},{"type":41,"tag":319,"props":6125,"children":6126},{"style":354},[6127],{"type":46,"value":357},{"type":41,"tag":319,"props":6129,"children":6130},{"style":360},[6131],{"type":46,"value":363},{"type":41,"tag":319,"props":6133,"children":6134},{"style":354},[6135],{"type":46,"value":368},{"type":41,"tag":319,"props":6137,"children":6138},{"style":371},[6139],{"type":46,"value":374},{"type":41,"tag":319,"props":6141,"children":6142},{"style":354},[6143],{"type":46,"value":379},{"type":41,"tag":319,"props":6145,"children":6146},{"style":354},[6147],{"type":46,"value":384},{"type":41,"tag":319,"props":6149,"children":6150},{"class":321,"line":387},[6151,6155,6159,6163,6167,6171,6175,6179,6183,6187,6191],{"type":41,"tag":319,"props":6152,"children":6153},{"style":342},[6154],{"type":46,"value":658},{"type":41,"tag":319,"props":6156,"children":6157},{"style":396},[6158],{"type":46,"value":1278},{"type":41,"tag":319,"props":6160,"children":6161},{"style":354},[6162],{"type":46,"value":668},{"type":41,"tag":319,"props":6164,"children":6165},{"style":354},[6166],{"type":46,"value":1001},{"type":41,"tag":319,"props":6168,"children":6169},{"style":348},[6170],{"type":46,"value":1291},{"type":41,"tag":319,"props":6172,"children":6173},{"style":412},[6174],{"type":46,"value":357},{"type":41,"tag":319,"props":6176,"children":6177},{"style":396},[6178],{"type":46,"value":363},{"type":41,"tag":319,"props":6180,"children":6181},{"style":354},[6182],{"type":46,"value":404},{"type":41,"tag":319,"props":6184,"children":6185},{"style":396},[6186],{"type":46,"value":1308},{"type":41,"tag":319,"props":6188,"children":6189},{"style":412},[6190],{"type":46,"value":379},{"type":41,"tag":319,"props":6192,"children":6193},{"style":354},[6194],{"type":46,"value":458},{"type":41,"tag":319,"props":6196,"children":6197},{"class":321,"line":461},[6198,6202,6207,6211,6215,6219,6223,6227,6231,6235,6239,6244,6248,6252],{"type":41,"tag":319,"props":6199,"children":6200},{"style":342},[6201],{"type":46,"value":658},{"type":41,"tag":319,"props":6203,"children":6204},{"style":396},[6205],{"type":46,"value":6206}," city",{"type":41,"tag":319,"props":6208,"children":6209},{"style":354},[6210],{"type":46,"value":668},{"type":41,"tag":319,"props":6212,"children":6213},{"style":396},[6214],{"type":46,"value":1278},{"type":41,"tag":319,"props":6216,"children":6217},{"style":354},[6218],{"type":46,"value":404},{"type":41,"tag":319,"props":6220,"children":6221},{"style":396},[6222],{"type":46,"value":1345},{"type":41,"tag":319,"props":6224,"children":6225},{"style":354},[6226],{"type":46,"value":404},{"type":41,"tag":319,"props":6228,"children":6229},{"style":348},[6230],{"type":46,"value":1354},{"type":41,"tag":319,"props":6232,"children":6233},{"style":412},[6234],{"type":46,"value":357},{"type":41,"tag":319,"props":6236,"children":6237},{"style":354},[6238],{"type":46,"value":444},{"type":41,"tag":319,"props":6240,"children":6241},{"style":436},[6242],{"type":46,"value":6243},"city",{"type":41,"tag":319,"props":6245,"children":6246},{"style":354},[6247],{"type":46,"value":444},{"type":41,"tag":319,"props":6249,"children":6250},{"style":412},[6251],{"type":46,"value":379},{"type":41,"tag":319,"props":6253,"children":6254},{"style":354},[6255],{"type":46,"value":458},{"type":41,"tag":319,"props":6257,"children":6258},{"class":321,"line":596},[6259],{"type":41,"tag":319,"props":6260,"children":6261},{"emptyLinePlaceholder":600},[6262],{"type":46,"value":603},{"type":41,"tag":319,"props":6264,"children":6265},{"class":321,"line":606},[6266,6270,6274,6278,6282,6286],{"type":41,"tag":319,"props":6267,"children":6268},{"style":342},[6269],{"type":46,"value":658},{"type":41,"tag":319,"props":6271,"children":6272},{"style":396},[6273],{"type":46,"value":2313},{"type":41,"tag":319,"props":6275,"children":6276},{"style":354},[6277],{"type":46,"value":668},{"type":41,"tag":319,"props":6279,"children":6280},{"style":336},[6281],{"type":46,"value":673},{"type":41,"tag":319,"props":6283,"children":6284},{"style":348},[6285],{"type":46,"value":2326},{"type":41,"tag":319,"props":6287,"children":6288},{"style":412},[6289],{"type":46,"value":4458},{"type":41,"tag":319,"props":6291,"children":6292},{"class":321,"line":652},[6293,6298,6303,6307,6311,6315,6320,6324,6328,6332,6336,6340,6345],{"type":41,"tag":319,"props":6294,"children":6295},{"style":354},[6296],{"type":46,"value":6297},"    `",{"type":41,"tag":319,"props":6299,"children":6300},{"style":436},[6301],{"type":46,"value":6302},"https:\u002F\u002Fapi.weather.com\u002Fv1\u002Fcurrent?city=",{"type":41,"tag":319,"props":6304,"children":6305},{"style":354},[6306],{"type":46,"value":2462},{"type":41,"tag":319,"props":6308,"children":6309},{"style":396},[6310],{"type":46,"value":6243},{"type":41,"tag":319,"props":6312,"children":6313},{"style":354},[6314],{"type":46,"value":578},{"type":41,"tag":319,"props":6316,"children":6317},{"style":436},[6318],{"type":46,"value":6319},"&key=",{"type":41,"tag":319,"props":6321,"children":6322},{"style":354},[6323],{"type":46,"value":2462},{"type":41,"tag":319,"props":6325,"children":6326},{"style":396},[6327],{"type":46,"value":2467},{"type":41,"tag":319,"props":6329,"children":6330},{"style":354},[6331],{"type":46,"value":404},{"type":41,"tag":319,"props":6333,"children":6334},{"style":396},[6335],{"type":46,"value":2476},{"type":41,"tag":319,"props":6337,"children":6338},{"style":354},[6339],{"type":46,"value":404},{"type":41,"tag":319,"props":6341,"children":6342},{"style":396},[6343],{"type":46,"value":6344},"WEATHER_API_KEY",{"type":41,"tag":319,"props":6346,"children":6347},{"style":354},[6348],{"type":46,"value":6349},"}`\n",{"type":41,"tag":319,"props":6351,"children":6352},{"class":321,"line":698},[6353,6358],{"type":41,"tag":319,"props":6354,"children":6355},{"style":412},[6356],{"type":46,"value":6357},"  )",{"type":41,"tag":319,"props":6359,"children":6360},{"style":354},[6361],{"type":46,"value":458},{"type":41,"tag":319,"props":6363,"children":6364},{"class":321,"line":776},[6365],{"type":41,"tag":319,"props":6366,"children":6367},{"emptyLinePlaceholder":600},[6368],{"type":46,"value":603},{"type":41,"tag":319,"props":6370,"children":6371},{"class":321,"line":784},[6372,6376,6380,6384,6388,6392,6397,6401,6405,6409,6414],{"type":41,"tag":319,"props":6373,"children":6374},{"style":336},[6375],{"type":46,"value":393},{"type":41,"tag":319,"props":6377,"children":6378},{"style":396},[6379],{"type":46,"value":399},{"type":41,"tag":319,"props":6381,"children":6382},{"style":354},[6383],{"type":46,"value":404},{"type":41,"tag":319,"props":6385,"children":6386},{"style":348},[6387],{"type":46,"value":409},{"type":41,"tag":319,"props":6389,"children":6390},{"style":412},[6391],{"type":46,"value":357},{"type":41,"tag":319,"props":6393,"children":6394},{"style":336},[6395],{"type":46,"value":6396},"await",{"type":41,"tag":319,"props":6398,"children":6399},{"style":396},[6400],{"type":46,"value":2313},{"type":41,"tag":319,"props":6402,"children":6403},{"style":354},[6404],{"type":46,"value":404},{"type":41,"tag":319,"props":6406,"children":6407},{"style":348},[6408],{"type":46,"value":409},{"type":41,"tag":319,"props":6410,"children":6411},{"style":412},[6412],{"type":46,"value":6413},"())",{"type":41,"tag":319,"props":6415,"children":6416},{"style":354},[6417],{"type":46,"value":458},{"type":41,"tag":319,"props":6419,"children":6420},{"class":321,"line":792},[6421],{"type":41,"tag":319,"props":6422,"children":6423},{"style":354},[6424],{"type":46,"value":467},{"type":41,"tag":104,"props":6426,"children":6428},{"id":6427},"rules",[6429],{"type":46,"value":6430},"Rules",{"type":41,"tag":116,"props":6432,"children":6433},{},[6434,6439,6444,6449,6454,6459,6464],{"type":41,"tag":120,"props":6435,"children":6436},{},[6437],{"type":46,"value":6438},"NEVER expose API keys or secrets in client code",{"type":41,"tag":120,"props":6440,"children":6441},{},[6442],{"type":46,"value":6443},"ALWAYS validate and sanitize user input",{"type":41,"tag":120,"props":6445,"children":6446},{},[6447],{"type":46,"value":6448},"Use proper HTTP status codes (200, 201, 400, 401, 404, 500)",{"type":41,"tag":120,"props":6450,"children":6451},{},[6452],{"type":46,"value":6453},"Handle errors gracefully with try\u002Fcatch",{"type":41,"tag":120,"props":6455,"children":6456},{},[6457],{"type":46,"value":6458},"Keep API routes focused — one responsibility per endpoint",{"type":41,"tag":120,"props":6460,"children":6461},{},[6462],{"type":46,"value":6463},"Use TypeScript for type safety",{"type":41,"tag":120,"props":6465,"children":6466},{},[6467],{"type":46,"value":6468},"Log errors server-side for debugging",{"type":41,"tag":104,"props":6470,"children":6472},{"id":6471},"submitting-feedback",[6473],{"type":46,"value":6474},"Submitting Feedback",{"type":41,"tag":53,"props":6476,"children":6477},{},[6478],{"type":46,"value":6479},"If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:",{"type":41,"tag":292,"props":6481,"children":6483},{"className":3526,"code":6482,"language":3528,"meta":300,"style":300},"npx --yes submit-expo-feedback@latest --category skills --subject \"eas-hosting\" \"\u003Cactionable feedback>\"\n",[6484],{"type":41,"tag":87,"props":6485,"children":6486},{"__ignoreMap":300},[6487],{"type":41,"tag":319,"props":6488,"children":6489},{"class":321,"line":322},[6490,6494,6499,6504,6509,6514,6519,6523,6527,6531,6535,6540],{"type":41,"tag":319,"props":6491,"children":6492},{"style":371},[6493],{"type":46,"value":3540},{"type":41,"tag":319,"props":6495,"children":6496},{"style":436},[6497],{"type":46,"value":6498}," --yes",{"type":41,"tag":319,"props":6500,"children":6501},{"style":436},[6502],{"type":46,"value":6503}," submit-expo-feedback@latest",{"type":41,"tag":319,"props":6505,"children":6506},{"style":436},[6507],{"type":46,"value":6508}," --category",{"type":41,"tag":319,"props":6510,"children":6511},{"style":436},[6512],{"type":46,"value":6513}," skills",{"type":41,"tag":319,"props":6515,"children":6516},{"style":436},[6517],{"type":46,"value":6518}," --subject",{"type":41,"tag":319,"props":6520,"children":6521},{"style":354},[6522],{"type":46,"value":433},{"type":41,"tag":319,"props":6524,"children":6525},{"style":436},[6526],{"type":46,"value":4},{"type":41,"tag":319,"props":6528,"children":6529},{"style":354},[6530],{"type":46,"value":444},{"type":41,"tag":319,"props":6532,"children":6533},{"style":354},[6534],{"type":46,"value":433},{"type":41,"tag":319,"props":6536,"children":6537},{"style":436},[6538],{"type":46,"value":6539},"\u003Cactionable feedback>",{"type":41,"tag":319,"props":6541,"children":6542},{"style":354},[6543],{"type":46,"value":6544},"\"\n",{"type":41,"tag":53,"props":6546,"children":6547},{},[6548],{"type":46,"value":6549},"Only submit when you have something specific and actionable to report. Include as much relevant context as possible.",{"type":41,"tag":6551,"props":6552,"children":6553},"style",{},[6554],{"type":46,"value":6555},"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":6557,"total":6723},[6558,6576,6583,6598,6612,6626,6642,6653,6668,6686,6701,6712],{"slug":6559,"name":6559,"fn":6560,"description":6561,"org":6562,"tags":6563,"stars":23,"repoUrl":24,"updatedAt":6575},"eas-app-stores","deploy and submit Expo apps to stores","EAS service (paid). Deploy Expo apps to the app stores with EAS - build and submit to the iOS App Store, Google Play Store, and TestFlight, configure eas.json build and submit profiles, manage app versions and build numbers, and publish App Store metadata and ASO. Use whenever the user wants to deploy, release, or ship an app to production or the app stores, is preparing a production build, running eas build or eas submit, shipping to TestFlight, bumping version or build numbers, or setting up store listing metadata. For deploying an Expo website or API routes, use the eas-hosting skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6564,6567,6568,6569,6572],{"name":6565,"slug":6566,"type":13},"Android","android",{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"name":6570,"slug":6571,"type":13},"iOS","ios",{"name":6573,"slug":6574,"type":13},"Mobile","mobile","2026-07-24T05:36:44.164663",{"slug":4,"name":4,"fn":5,"description":6,"org":6577,"tags":6578,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6579,6580,6581,6582],{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"name":21,"slug":22,"type":13},{"name":18,"slug":19,"type":13},{"slug":6584,"name":6584,"fn":6585,"description":6586,"org":6587,"tags":6588,"stars":23,"repoUrl":24,"updatedAt":6597},"eas-observe","configure EAS Observe for Expo apps","EAS service (paid). Use for anything related to EAS Observe - adding `expo-observe` to an Expo project (AppMetricsRoot\u002FObserveRoot HOC, markInteractive, the useObserve hook, the Expo Router \u002F React Navigation integrations for per-route metrics, and user-defined events via `Observe.logEvent`), querying via the EAS CLI (`eas observe:metrics-summary`, `observe:metrics`, `observe:routes`, `observe:events`, `observe:versions`), or interpreting the resulting metrics (cold\u002Fwarm launch, TTR, TTI, navigation cold\u002Fwarm TTR, update download, and the TTI frameRate params for triaging slow startups).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6589,6590,6591,6594],{"name":9,"slug":8,"type":13},{"name":6573,"slug":6574,"type":13},{"name":6592,"slug":6593,"type":13},"Observability","observability",{"name":6595,"slug":6596,"type":13},"React Native","react-native","2026-07-24T05:36:45.220605",{"slug":6599,"name":6599,"fn":6600,"description":6601,"org":6602,"tags":6603,"stars":23,"repoUrl":24,"updatedAt":6611},"eas-simulator","run and control remote iOS and Android simulators","EAS service (paid). Run and control a user's app on a remote iOS\u002FAndroid simulator hosted on EAS cloud. Read before running any `eas simulator:*` commands - it has the current syntax for this experimental API. Use whenever the user needs a simulator they can't run locally - 'run my app on a cloud simulator', 'use eas simulator to run\u002Finstall\u002Fscreenshot my app', 'I'm on Linux\u002FCursor and need an iOS device', 'no sim on this box \u002F headless CI', 'let an agent click through my app and screenshot it', 'test my dev build on a remote sim with live reload', 'stream a sim to my browser' - even when they don't say 'EAS Simulator' or 'cloud'. On a host WITHOUT a local simulator (Linux, CI, cloud sandbox) it's the default; on macOS, do NOT auto-trigger for a plain 'run on the simulator' - use it only for a cloud\u002Fremote\u002Fshareable sim, an iOS version they lack, or an agent-driven session. NOT for local sims (expo run:ios, Xcode, Android Studio), EAS Build\u002FUpdate, web preview, or physical devices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6604,6605,6608,6609,6610],{"name":6565,"slug":6566,"type":13},{"name":6606,"slug":6607,"type":13},"CLI","cli",{"name":9,"slug":8,"type":13},{"name":6570,"slug":6571,"type":13},{"name":6573,"slug":6574,"type":13},"2026-07-31T05:52:18.602058",{"slug":6613,"name":6613,"fn":6614,"description":6615,"org":6616,"tags":6617,"stars":23,"repoUrl":24,"updatedAt":6625},"eas-update-insights","check health of EAS Updates","EAS service (paid). Check the health of published EAS Update: crash rates, install\u002Flaunch counts, unique users, payload size, and the split between embedded and OTA users per channel. Use when the user asks how an update is performing, whether a rollout is healthy, how many users are on the embedded build vs OTA, or wants to gate CI on update health.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6618,6621,6622,6623,6624],{"name":6619,"slug":6620,"type":13},"Analytics","analytics",{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"name":6573,"slug":6574,"type":13},{"name":6592,"slug":6593,"type":13},"2026-07-24T05:36:50.17095",{"slug":4309,"name":4309,"fn":6627,"description":6628,"org":6629,"tags":6630,"stars":23,"repoUrl":24,"updatedAt":6641},"configure EAS workflows for Expo projects","EAS service (paid). Helps understand and write EAS workflow YAML files for Expo projects. Use this skill when the user asks about CI\u002FCD or workflows in an Expo or EAS context, mentions .eas\u002Fworkflows\u002F, or wants help with EAS build pipelines or deployment automation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6631,6634,6637,6638,6639],{"name":6632,"slug":6633,"type":13},"Automation","automation",{"name":6635,"slug":6636,"type":13},"CI\u002FCD","ci-cd",{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"name":6640,"slug":3964,"type":13},"YAML","2026-07-24T05:36:43.205514",{"slug":6643,"name":6643,"fn":6644,"description":6645,"org":6646,"tags":6647,"stars":23,"repoUrl":24,"updatedAt":6652},"expo-app-clip","add iOS App Clip targets to Expo","Framework (OSS). Add an iOS App Clip target to an Expo app. Use when the user mentions App Clip, AASA, apple-app-site-association, appclips, smart app banner, or wants to ship a lightweight iOS Clip invoked from a URL alongside their parent app.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6648,6649,6650,6651],{"name":9,"slug":8,"type":13},{"name":6570,"slug":6571,"type":13},{"name":6573,"slug":6574,"type":13},{"name":6595,"slug":6596,"type":13},"2026-07-24T05:36:46.195935",{"slug":6654,"name":6654,"fn":6655,"description":6656,"org":6657,"tags":6658,"stars":23,"repoUrl":24,"updatedAt":6667},"expo-brownfield","integrate Expo and React Native into native apps","Framework (OSS). Integrate Expo and React Native into an existing native iOS or Android app. Use when the user mentions brownfield, embedding React Native in a native app, AAR\u002FXCFramework, or adding Expo to an existing Kotlin\u002FSwift project. Covers both the isolated approach and the integrated approach.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6659,6660,6661,6664,6665,6666],{"name":6565,"slug":6566,"type":13},{"name":9,"slug":8,"type":13},{"name":6662,"slug":6663,"type":13},"Integrations","integrations",{"name":6570,"slug":6571,"type":13},{"name":6573,"slug":6574,"type":13},{"name":6595,"slug":6596,"type":13},"2026-07-24T05:36:39.682299",{"slug":6669,"name":6669,"fn":6670,"description":6671,"org":6672,"tags":6673,"stars":23,"repoUrl":24,"updatedAt":6685},"expo-data-fetching","fetch and manage data in Expo apps","Framework (OSS). Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (`useLoaderData`).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6674,6677,6680,6681,6682],{"name":6675,"slug":6676,"type":13},"API Development","api-development",{"name":6678,"slug":6679,"type":13},"Caching","caching",{"name":9,"slug":8,"type":13},{"name":6573,"slug":6574,"type":13},{"name":6683,"slug":6684,"type":13},"React","react","2026-07-24T05:36:42.177188",{"slug":6687,"name":6687,"fn":6688,"description":6689,"org":6690,"tags":6691,"stars":23,"repoUrl":24,"updatedAt":6700},"expo-dev-client","build and distribute Expo development clients","Framework (OSS). Build and distribute Expo development clients locally or via TestFlight for internal testing. For production TestFlight releases and store submission, use the eas-app-stores skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6692,6693,6694,6695,6696,6699],{"name":6565,"slug":6566,"type":13},{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"name":6570,"slug":6571,"type":13},{"name":6697,"slug":6698,"type":13},"Local Development","local-development",{"name":6573,"slug":6574,"type":13},"2026-07-24T05:36:51.160719",{"slug":6702,"name":6702,"fn":6703,"description":6704,"org":6705,"tags":6706,"stars":23,"repoUrl":24,"updatedAt":6711},"expo-dom","run web components in native apps","Framework (OSS). Use Expo DOM components to run web code in a webview on native and as-is on web. Migrate web code to native incrementally. For the end-to-end migration of a whole web app, use the expo-web-to-native skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6707,6708,6709,6710],{"name":9,"slug":8,"type":13},{"name":21,"slug":22,"type":13},{"name":6573,"slug":6574,"type":13},{"name":6595,"slug":6596,"type":13},"2026-07-24T05:36:41.176872",{"slug":6713,"name":6713,"fn":6714,"description":6715,"org":6716,"tags":6717,"stars":23,"repoUrl":24,"updatedAt":6722},"expo-examples","integrate Expo example projects","Framework (OSS). Expo's official example projects - the expo\u002Fexamples repo of ~70 `with-*` integrations (Stripe, Clerk, Supabase, OpenAI, maps, Reanimated, SQLite, Skia, NativeWind, and more). Use when integrating a third-party library or service into an existing Expo app and you want the canonical, version-matched pattern to adapt, or when scaffolding a new project from one with `npx create-expo --example`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6718,6719,6720,6721],{"name":9,"slug":8,"type":13},{"name":6662,"slug":6663,"type":13},{"name":6573,"slug":6574,"type":13},{"name":6595,"slug":6596,"type":13},"2026-07-24T05:36:35.174379",24,{"items":6725,"total":6078},[6726,6734,6741,6748,6756,6764,6772],{"slug":6559,"name":6559,"fn":6560,"description":6561,"org":6727,"tags":6728,"stars":23,"repoUrl":24,"updatedAt":6575},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6729,6730,6731,6732,6733],{"name":6565,"slug":6566,"type":13},{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"name":6570,"slug":6571,"type":13},{"name":6573,"slug":6574,"type":13},{"slug":4,"name":4,"fn":5,"description":6,"org":6735,"tags":6736,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6737,6738,6739,6740],{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"name":21,"slug":22,"type":13},{"name":18,"slug":19,"type":13},{"slug":6584,"name":6584,"fn":6585,"description":6586,"org":6742,"tags":6743,"stars":23,"repoUrl":24,"updatedAt":6597},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6744,6745,6746,6747],{"name":9,"slug":8,"type":13},{"name":6573,"slug":6574,"type":13},{"name":6592,"slug":6593,"type":13},{"name":6595,"slug":6596,"type":13},{"slug":6599,"name":6599,"fn":6600,"description":6601,"org":6749,"tags":6750,"stars":23,"repoUrl":24,"updatedAt":6611},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6751,6752,6753,6754,6755],{"name":6565,"slug":6566,"type":13},{"name":6606,"slug":6607,"type":13},{"name":9,"slug":8,"type":13},{"name":6570,"slug":6571,"type":13},{"name":6573,"slug":6574,"type":13},{"slug":6613,"name":6613,"fn":6614,"description":6615,"org":6757,"tags":6758,"stars":23,"repoUrl":24,"updatedAt":6625},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6759,6760,6761,6762,6763],{"name":6619,"slug":6620,"type":13},{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"name":6573,"slug":6574,"type":13},{"name":6592,"slug":6593,"type":13},{"slug":4309,"name":4309,"fn":6627,"description":6628,"org":6765,"tags":6766,"stars":23,"repoUrl":24,"updatedAt":6641},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6767,6768,6769,6770,6771],{"name":6632,"slug":6633,"type":13},{"name":6635,"slug":6636,"type":13},{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"name":6640,"slug":3964,"type":13},{"slug":6643,"name":6643,"fn":6644,"description":6645,"org":6773,"tags":6774,"stars":23,"repoUrl":24,"updatedAt":6652},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[6775,6776,6777,6778],{"name":9,"slug":8,"type":13},{"name":6570,"slug":6571,"type":13},{"name":6573,"slug":6574,"type":13},{"name":6595,"slug":6596,"type":13}]