[{"data":1,"prerenderedAt":1921},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-astro":258,"-frameworks-astro-surround":1916},[4,30,115,174,228,244],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Frameworks","\u002Fframeworks","2.frameworks",[35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Fframeworks\u002Foverview","2.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":41,"path":42,"stem":43,"icon":44},"Nuxt","\u002Fframeworks\u002Fnuxt","2.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":46,"path":47,"stem":48,"icon":49},"Next.js","\u002Fframeworks\u002Fnextjs","2.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":51,"path":52,"stem":53,"icon":54},"SvelteKit","\u002Fframeworks\u002Fsveltekit","2.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":56,"path":57,"stem":58,"icon":59},"Nitro","\u002Fframeworks\u002Fnitro","2.frameworks\u002F04.nitro","i-custom-nitro",{"title":61,"path":62,"stem":63,"icon":64},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","2.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":66,"path":67,"stem":68,"icon":69},"NestJS","\u002Fframeworks\u002Fnestjs","2.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":71,"path":72,"stem":73,"icon":74},"Express","\u002Fframeworks\u002Fexpress","2.frameworks\u002F07.express","i-simple-icons-express",{"title":76,"path":77,"stem":78,"icon":79},"Hono","\u002Fframeworks\u002Fhono","2.frameworks\u002F08.hono","i-simple-icons-hono",{"title":81,"path":82,"stem":83,"icon":84},"Fastify","\u002Fframeworks\u002Ffastify","2.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":86,"path":87,"stem":88,"icon":89},"Elysia","\u002Fframeworks\u002Felysia","2.frameworks\u002F10.elysia","i-custom-elysia",{"title":91,"path":92,"stem":93,"icon":94},"React Router","\u002Fframeworks\u002Freact-router","2.frameworks\u002F11.react-router","i-simple-icons-reactrouter",{"title":96,"path":97,"stem":98,"icon":99},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","2.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":101,"path":102,"stem":103,"icon":104},"Standalone","\u002Fframeworks\u002Fstandalone","2.frameworks\u002F13.standalone","i-simple-icons-typescript",{"title":106,"path":107,"stem":108,"icon":109},"Astro","\u002Fframeworks\u002Fastro","2.frameworks\u002F14.astro","i-simple-icons-astro",{"title":111,"path":112,"stem":113,"icon":114},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","2.frameworks\u002F15.custom-integration","i-lucide-puzzle",{"title":116,"path":117,"stem":118,"children":119,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[120,125,130,135,140,145,150,154,159,164,169],{"title":121,"path":122,"stem":123,"icon":124},"Request Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":126,"path":127,"stem":128,"icon":129},"Wide Events","\u002Fcore-concepts\u002Fwide-events","3.core-concepts\u002F1.wide-events","i-lucide-layers",{"title":131,"path":132,"stem":133,"icon":134},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F10.vite-plugin","i-custom-vite",{"title":136,"path":137,"stem":138,"icon":139},"AI SDK Integration","\u002Fcore-concepts\u002Fai-sdk","3.core-concepts\u002F11.ai-sdk","i-lucide-scan-eye",{"title":141,"path":142,"stem":143,"icon":144},"Structured Errors","\u002Fcore-concepts\u002Fstructured-errors","3.core-concepts\u002F2.structured-errors","i-lucide-shield-alert",{"title":146,"path":147,"stem":148,"icon":149},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F3.best-practices","i-lucide-shield-check",{"title":151,"path":152,"stem":153,"icon":104},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F4.typed-fields",{"title":155,"path":156,"stem":157,"icon":158},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F5.sampling","i-lucide-filter",{"title":160,"path":161,"stem":162,"icon":163},"Client Logging","\u002Fcore-concepts\u002Fclient-logging","3.core-concepts\u002F6.client-logging","i-lucide-monitor",{"title":165,"path":166,"stem":167,"icon":168},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F7.configuration","i-lucide-settings",{"title":170,"path":171,"stem":172,"icon":173},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F8.performance","i-lucide-gauge",{"title":175,"path":176,"stem":177,"children":178,"page":29},"Adapters","\u002Fadapters","4.adapters",[179,183,188,193,198,203,208,213,218,223],{"title":36,"path":180,"stem":181,"icon":182},"\u002Fadapters\u002Foverview","4.adapters\u002F1.overview","i-custom-plug",{"title":184,"path":185,"stem":186,"icon":187},"Browser","\u002Fadapters\u002Fbrowser","4.adapters\u002F10.browser","i-lucide-globe",{"title":189,"path":190,"stem":191,"icon":192},"Axiom","\u002Fadapters\u002Faxiom","4.adapters\u002F2.axiom","i-custom-axiom",{"title":194,"path":195,"stem":196,"icon":197},"OTLP","\u002Fadapters\u002Fotlp","4.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":199,"path":200,"stem":201,"icon":202},"PostHog","\u002Fadapters\u002Fposthog","4.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":204,"path":205,"stem":206,"icon":207},"Sentry","\u002Fadapters\u002Fsentry","4.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":209,"path":210,"stem":211,"icon":212},"Better Stack","\u002Fadapters\u002Fbetter-stack","4.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":214,"path":215,"stem":216,"icon":217},"File System","\u002Fadapters\u002Ffs","4.adapters\u002F7.fs","i-lucide-hard-drive",{"title":219,"path":220,"stem":221,"icon":222},"Custom Adapters","\u002Fadapters\u002Fcustom","4.adapters\u002F8.custom","i-lucide-code",{"title":224,"path":225,"stem":226,"icon":227},"Pipeline","\u002Fadapters\u002Fpipeline","4.adapters\u002F9.pipeline","i-lucide-workflow",{"title":229,"path":230,"stem":231,"children":232,"page":29},"Enrichers","\u002Fenrichers","5.enrichers",[233,236,240],{"title":36,"path":234,"stem":235,"icon":28},"\u002Fenrichers\u002Foverview","5.enrichers\u002F1.overview",{"title":237,"path":238,"stem":239,"icon":114},"Built-in","\u002Fenrichers\u002Fbuilt-in","5.enrichers\u002F2.built-in",{"title":241,"path":242,"stem":243,"icon":222},"Custom","\u002Fenrichers\u002Fcustom","5.enrichers\u002F3.custom",{"title":245,"path":246,"stem":247,"children":248,"page":29},"NuxtHub","\u002Fnuxthub","6.nuxthub",[249,253],{"title":36,"path":250,"stem":251,"icon":252},"\u002Fnuxthub\u002Foverview","6.nuxthub\u002F1.overview","i-lucide-database",{"title":254,"path":255,"stem":256,"icon":257},"Retention","\u002Fnuxthub\u002Fretention","6.nuxthub\u002F2.retention","i-lucide-clock",{"id":259,"title":106,"body":260,"description":1909,"extension":1910,"links":1911,"meta":1912,"navigation":1913,"path":107,"seo":1914,"stem":108,"__hash__":1915},"docs\u002F2.frameworks\u002F14.astro.md",{"type":261,"value":262,"toc":1898},"minimark",[263,272,353,362,366,371,391,395,824,828,936,939,946,1214,1259,1263,1270,1649,1652,1663,1667,1673,1889,1894],[264,265,266,267,271],"p",{},"Astro doesn't have a dedicated evlog integration. Instead, use the core ",[268,269,270],"code",{},"evlog"," package with Astro's middleware to create request-scoped loggers manually.",[273,274,275],"code-collapse",{},[276,277,283],"pre",{"className":278,"code":279,"filename":280,"language":281,"meta":282,"style":282},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Set up evlog in my Astro app.\n\n- Install evlog: pnpm add evlog\n- Import initLogger and createRequestLogger from 'evlog'\n- Call initLogger({ env: { service: 'my-app' } }) in Astro middleware\n- Create a request logger with createRequestLogger({ method, path }) per request\n- Use log.set() in API routes and middleware to accumulate context\n- Call log.emit() before returning the response (no auto-emit lifecycle)\n\nDocs: https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Fastro\nAdapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n","Prompt","txt","",[268,284,285,293,300,306,312,318,324,330,336,341,347],{"__ignoreMap":282},[286,287,290],"span",{"class":288,"line":289},"line",1,[286,291,292],{},"Set up evlog in my Astro app.\n",[286,294,296],{"class":288,"line":295},2,[286,297,299],{"emptyLinePlaceholder":298},true,"\n",[286,301,303],{"class":288,"line":302},3,[286,304,305],{},"- Install evlog: pnpm add evlog\n",[286,307,309],{"class":288,"line":308},4,[286,310,311],{},"- Import initLogger and createRequestLogger from 'evlog'\n",[286,313,315],{"class":288,"line":314},5,[286,316,317],{},"- Call initLogger({ env: { service: 'my-app' } }) in Astro middleware\n",[286,319,321],{"class":288,"line":320},6,[286,322,323],{},"- Create a request logger with createRequestLogger({ method, path }) per request\n",[286,325,327],{"class":288,"line":326},7,[286,328,329],{},"- Use log.set() in API routes and middleware to accumulate context\n",[286,331,333],{"class":288,"line":332},8,[286,334,335],{},"- Call log.emit() before returning the response (no auto-emit lifecycle)\n",[286,337,339],{"class":288,"line":338},9,[286,340,299],{"emptyLinePlaceholder":298},[286,342,344],{"class":288,"line":343},10,[286,345,346],{},"Docs: https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Fastro\n",[286,348,350],{"class":288,"line":349},11,[286,351,352],{},"Adapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n",[354,355,357,358,361],"callout",{"color":356,"icon":13},"info","This is a guide-level integration. It uses the generic ",[268,359,360],{},"createRequestLogger"," API rather than a framework-specific module.",[363,364,20],"h2",{"id":365},"quick-start",[367,368,370],"h3",{"id":369},"_1-install","1. Install",[276,372,376],{"className":373,"code":374,"language":375,"meta":282,"style":282},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bun add evlog\n","bash",[268,377,378],{"__ignoreMap":282},[286,379,380,384,388],{"class":288,"line":289},[286,381,383],{"class":382},"sBMFI","bun",[286,385,387],{"class":386},"sfazB"," add",[286,389,390],{"class":386}," evlog\n",[367,392,394],{"id":393},"_2-create-a-middleware","2. Create a middleware",[276,396,401],{"className":397,"code":398,"filename":399,"language":400,"meta":282,"style":282},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineMiddleware } from 'astro:middleware'\nimport { initLogger, createRequestLogger } from 'evlog'\n\ninitLogger({\n  env: { service: 'my-astro-app' },\n})\n\nexport const onRequest = defineMiddleware(async ({ request, locals }, next) => {\n  const url = new URL(request.url)\n\n  const log = createRequestLogger({\n    method: request.method,\n    path: url.pathname,\n  })\n\n  locals.log = log\n\n  try {\n    const response = await next()\n    log.emit()\n    return response\n  } catch (error) {\n    log.error(error instanceof Error ? error : new Error(String(error)))\n    log.emit()\n    throw error\n  }\n})\n","src\u002Fmiddleware.ts","typescript",[268,402,403,432,457,461,473,500,508,512,561,591,595,610,628,645,653,658,674,679,687,706,719,728,747,791,802,811,817],{"__ignoreMap":282},[286,404,405,409,413,417,420,423,426,429],{"class":288,"line":289},[286,406,408],{"class":407},"s7zQu","import",[286,410,412],{"class":411},"sMK4o"," {",[286,414,416],{"class":415},"sTEyZ"," defineMiddleware",[286,418,419],{"class":411}," }",[286,421,422],{"class":407}," from",[286,424,425],{"class":411}," '",[286,427,428],{"class":386},"astro:middleware",[286,430,431],{"class":411},"'\n",[286,433,434,436,438,441,444,447,449,451,453,455],{"class":288,"line":295},[286,435,408],{"class":407},[286,437,412],{"class":411},[286,439,440],{"class":415}," initLogger",[286,442,443],{"class":411},",",[286,445,446],{"class":415}," createRequestLogger",[286,448,419],{"class":411},[286,450,422],{"class":407},[286,452,425],{"class":411},[286,454,270],{"class":386},[286,456,431],{"class":411},[286,458,459],{"class":288,"line":302},[286,460,299],{"emptyLinePlaceholder":298},[286,462,463,467,470],{"class":288,"line":308},[286,464,466],{"class":465},"s2Zo4","initLogger",[286,468,469],{"class":415},"(",[286,471,472],{"class":411},"{\n",[286,474,475,479,482,484,487,489,491,494,497],{"class":288,"line":314},[286,476,478],{"class":477},"swJcz","  env",[286,480,481],{"class":411},":",[286,483,412],{"class":411},[286,485,486],{"class":477}," service",[286,488,481],{"class":411},[286,490,425],{"class":411},[286,492,493],{"class":386},"my-astro-app",[286,495,496],{"class":411},"'",[286,498,499],{"class":411}," },\n",[286,501,502,505],{"class":288,"line":320},[286,503,504],{"class":411},"}",[286,506,507],{"class":415},")\n",[286,509,510],{"class":288,"line":326},[286,511,299],{"emptyLinePlaceholder":298},[286,513,514,517,521,524,527,529,531,534,537,541,543,546,549,552,555,558],{"class":288,"line":332},[286,515,516],{"class":407},"export",[286,518,520],{"class":519},"spNyl"," const",[286,522,523],{"class":415}," onRequest ",[286,525,526],{"class":411},"=",[286,528,416],{"class":465},[286,530,469],{"class":415},[286,532,533],{"class":519},"async",[286,535,536],{"class":411}," ({",[286,538,540],{"class":539},"sHdIc"," request",[286,542,443],{"class":411},[286,544,545],{"class":539}," locals",[286,547,548],{"class":411}," },",[286,550,551],{"class":539}," next",[286,553,554],{"class":411},")",[286,556,557],{"class":519}," =>",[286,559,560],{"class":411}," {\n",[286,562,563,566,569,572,575,578,580,583,586,589],{"class":288,"line":338},[286,564,565],{"class":519},"  const",[286,567,568],{"class":415}," url",[286,570,571],{"class":411}," =",[286,573,574],{"class":411}," new",[286,576,577],{"class":465}," URL",[286,579,469],{"class":477},[286,581,582],{"class":415},"request",[286,584,585],{"class":411},".",[286,587,588],{"class":415},"url",[286,590,507],{"class":477},[286,592,593],{"class":288,"line":343},[286,594,299],{"emptyLinePlaceholder":298},[286,596,597,599,602,604,606,608],{"class":288,"line":349},[286,598,565],{"class":519},[286,600,601],{"class":415}," log",[286,603,571],{"class":411},[286,605,446],{"class":465},[286,607,469],{"class":477},[286,609,472],{"class":411},[286,611,613,616,618,620,622,625],{"class":288,"line":612},12,[286,614,615],{"class":477},"    method",[286,617,481],{"class":411},[286,619,540],{"class":415},[286,621,585],{"class":411},[286,623,624],{"class":415},"method",[286,626,627],{"class":411},",\n",[286,629,631,634,636,638,640,643],{"class":288,"line":630},13,[286,632,633],{"class":477},"    path",[286,635,481],{"class":411},[286,637,568],{"class":415},[286,639,585],{"class":411},[286,641,642],{"class":415},"pathname",[286,644,627],{"class":411},[286,646,648,651],{"class":288,"line":647},14,[286,649,650],{"class":411},"  }",[286,652,507],{"class":477},[286,654,656],{"class":288,"line":655},15,[286,657,299],{"emptyLinePlaceholder":298},[286,659,661,664,666,669,671],{"class":288,"line":660},16,[286,662,663],{"class":415},"  locals",[286,665,585],{"class":411},[286,667,668],{"class":415},"log",[286,670,571],{"class":411},[286,672,673],{"class":415}," log\n",[286,675,677],{"class":288,"line":676},17,[286,678,299],{"emptyLinePlaceholder":298},[286,680,682,685],{"class":288,"line":681},18,[286,683,684],{"class":407},"  try",[286,686,560],{"class":411},[286,688,690,693,696,698,701,703],{"class":288,"line":689},19,[286,691,692],{"class":519},"    const",[286,694,695],{"class":415}," response",[286,697,571],{"class":411},[286,699,700],{"class":407}," await",[286,702,551],{"class":465},[286,704,705],{"class":477},"()\n",[286,707,709,712,714,717],{"class":288,"line":708},20,[286,710,711],{"class":415},"    log",[286,713,585],{"class":411},[286,715,716],{"class":465},"emit",[286,718,705],{"class":477},[286,720,722,725],{"class":288,"line":721},21,[286,723,724],{"class":407},"    return",[286,726,727],{"class":415}," response\n",[286,729,731,733,736,739,742,745],{"class":288,"line":730},22,[286,732,650],{"class":411},[286,734,735],{"class":407}," catch",[286,737,738],{"class":477}," (",[286,740,741],{"class":415},"error",[286,743,744],{"class":477},") ",[286,746,472],{"class":411},[286,748,750,752,754,756,758,760,763,766,769,772,775,777,779,781,784,786,788],{"class":288,"line":749},23,[286,751,711],{"class":415},[286,753,585],{"class":411},[286,755,741],{"class":465},[286,757,469],{"class":477},[286,759,741],{"class":415},[286,761,762],{"class":411}," instanceof",[286,764,765],{"class":382}," Error",[286,767,768],{"class":411}," ?",[286,770,771],{"class":415}," error",[286,773,774],{"class":411}," :",[286,776,574],{"class":411},[286,778,765],{"class":465},[286,780,469],{"class":477},[286,782,783],{"class":465},"String",[286,785,469],{"class":477},[286,787,741],{"class":415},[286,789,790],{"class":477},")))\n",[286,792,794,796,798,800],{"class":288,"line":793},24,[286,795,711],{"class":415},[286,797,585],{"class":411},[286,799,716],{"class":465},[286,801,705],{"class":477},[286,803,805,808],{"class":288,"line":804},25,[286,806,807],{"class":407},"    throw",[286,809,810],{"class":415}," error\n",[286,812,814],{"class":288,"line":813},26,[286,815,816],{"class":411},"  }\n",[286,818,820,822],{"class":288,"line":819},27,[286,821,504],{"class":411},[286,823,507],{"class":415},[367,825,827],{"id":826},"_3-type-your-locals","3. Type your locals",[276,829,832],{"className":397,"code":830,"filename":831,"language":400,"meta":282,"style":282},"\u002F\u002F\u002F \u003Creference types=\"astro\u002Fclient\" \u002F>\n\nimport type { RequestLogger } from 'evlog'\n\ndeclare namespace App {\n  interface Locals {\n    log: RequestLogger\n  }\n}\n","src\u002Fenv.d.ts",[268,833,834,865,869,891,895,908,918,927,931],{"__ignoreMap":282},[286,835,836,840,843,847,851,853,856,860,862],{"class":288,"line":289},[286,837,839],{"class":838},"sHwdD","\u002F\u002F\u002F ",[286,841,842],{"class":407},"\u003C",[286,844,846],{"class":845},"s5tWE","reference",[286,848,850],{"class":849},"s6hCs"," types",[286,852,526],{"class":407},[286,854,855],{"class":407},"\"",[286,857,859],{"class":858},"smbvS","astro\u002Fclient",[286,861,855],{"class":407},[286,863,864],{"class":407}," \u002F>\n",[286,866,867],{"class":288,"line":295},[286,868,299],{"emptyLinePlaceholder":298},[286,870,871,873,876,878,881,883,885,887,889],{"class":288,"line":302},[286,872,408],{"class":407},[286,874,875],{"class":407}," type",[286,877,412],{"class":411},[286,879,880],{"class":415}," RequestLogger",[286,882,419],{"class":411},[286,884,422],{"class":407},[286,886,425],{"class":411},[286,888,270],{"class":386},[286,890,431],{"class":411},[286,892,893],{"class":288,"line":308},[286,894,299],{"emptyLinePlaceholder":298},[286,896,897,900,903,906],{"class":288,"line":314},[286,898,899],{"class":519},"declare",[286,901,902],{"class":519}," namespace",[286,904,905],{"class":382}," App",[286,907,560],{"class":411},[286,909,910,913,916],{"class":288,"line":320},[286,911,912],{"class":519},"  interface",[286,914,915],{"class":382}," Locals",[286,917,560],{"class":411},[286,919,920,922,924],{"class":288,"line":326},[286,921,711],{"class":477},[286,923,481],{"class":411},[286,925,926],{"class":382}," RequestLogger\n",[286,928,929],{"class":288,"line":332},[286,930,816],{"class":411},[286,932,933],{"class":288,"line":338},[286,934,935],{"class":411},"}\n",[363,937,126],{"id":938},"wide-events",[264,940,941,942,945],{},"Access the logger from ",[268,943,944],{},"Astro.locals"," in your pages and API routes:",[276,947,950],{"className":397,"code":948,"filename":949,"language":400,"meta":282,"style":282},"import type { APIRoute } from 'astro'\n\nexport const GET: APIRoute = async ({ params, locals }) => {\n  locals.log.set({ user: { id: params.id } })\n\n  const user = await db.findUser(params.id)\n  locals.log.set({ user: { name: user.name, plan: user.plan } })\n\n  return new Response(JSON.stringify(user), {\n    headers: { 'Content-Type': 'application\u002Fjson' },\n  })\n}\n","src\u002Fpages\u002Fapi\u002Fusers\u002F[id].ts",[268,951,952,974,978,1012,1055,1059,1088,1142,1146,1177,1204,1210],{"__ignoreMap":282},[286,953,954,956,958,960,963,965,967,969,972],{"class":288,"line":289},[286,955,408],{"class":407},[286,957,875],{"class":407},[286,959,412],{"class":411},[286,961,962],{"class":415}," APIRoute",[286,964,419],{"class":411},[286,966,422],{"class":407},[286,968,425],{"class":411},[286,970,971],{"class":386},"astro",[286,973,431],{"class":411},[286,975,976],{"class":288,"line":295},[286,977,299],{"emptyLinePlaceholder":298},[286,979,980,982,984,987,989,991,993,996,998,1001,1003,1005,1008,1010],{"class":288,"line":302},[286,981,516],{"class":407},[286,983,520],{"class":519},[286,985,986],{"class":415}," GET",[286,988,481],{"class":411},[286,990,962],{"class":382},[286,992,571],{"class":411},[286,994,995],{"class":519}," async",[286,997,536],{"class":411},[286,999,1000],{"class":539}," params",[286,1002,443],{"class":411},[286,1004,545],{"class":539},[286,1006,1007],{"class":411}," })",[286,1009,557],{"class":519},[286,1011,560],{"class":411},[286,1013,1014,1016,1018,1020,1022,1025,1027,1030,1033,1035,1037,1040,1042,1044,1046,1049,1051,1053],{"class":288,"line":308},[286,1015,663],{"class":415},[286,1017,585],{"class":411},[286,1019,668],{"class":415},[286,1021,585],{"class":411},[286,1023,1024],{"class":465},"set",[286,1026,469],{"class":477},[286,1028,1029],{"class":411},"{",[286,1031,1032],{"class":477}," user",[286,1034,481],{"class":411},[286,1036,412],{"class":411},[286,1038,1039],{"class":477}," id",[286,1041,481],{"class":411},[286,1043,1000],{"class":415},[286,1045,585],{"class":411},[286,1047,1048],{"class":415},"id",[286,1050,419],{"class":411},[286,1052,419],{"class":411},[286,1054,507],{"class":477},[286,1056,1057],{"class":288,"line":314},[286,1058,299],{"emptyLinePlaceholder":298},[286,1060,1061,1063,1065,1067,1069,1072,1074,1077,1079,1082,1084,1086],{"class":288,"line":320},[286,1062,565],{"class":519},[286,1064,1032],{"class":415},[286,1066,571],{"class":411},[286,1068,700],{"class":407},[286,1070,1071],{"class":415}," db",[286,1073,585],{"class":411},[286,1075,1076],{"class":465},"findUser",[286,1078,469],{"class":477},[286,1080,1081],{"class":415},"params",[286,1083,585],{"class":411},[286,1085,1048],{"class":415},[286,1087,507],{"class":477},[286,1089,1090,1092,1094,1096,1098,1100,1102,1104,1106,1108,1110,1113,1115,1117,1119,1122,1124,1127,1129,1131,1133,1136,1138,1140],{"class":288,"line":326},[286,1091,663],{"class":415},[286,1093,585],{"class":411},[286,1095,668],{"class":415},[286,1097,585],{"class":411},[286,1099,1024],{"class":465},[286,1101,469],{"class":477},[286,1103,1029],{"class":411},[286,1105,1032],{"class":477},[286,1107,481],{"class":411},[286,1109,412],{"class":411},[286,1111,1112],{"class":477}," name",[286,1114,481],{"class":411},[286,1116,1032],{"class":415},[286,1118,585],{"class":411},[286,1120,1121],{"class":415},"name",[286,1123,443],{"class":411},[286,1125,1126],{"class":477}," plan",[286,1128,481],{"class":411},[286,1130,1032],{"class":415},[286,1132,585],{"class":411},[286,1134,1135],{"class":415},"plan",[286,1137,419],{"class":411},[286,1139,419],{"class":411},[286,1141,507],{"class":477},[286,1143,1144],{"class":288,"line":332},[286,1145,299],{"emptyLinePlaceholder":298},[286,1147,1148,1151,1153,1156,1158,1161,1163,1166,1168,1171,1173,1175],{"class":288,"line":338},[286,1149,1150],{"class":407},"  return",[286,1152,574],{"class":411},[286,1154,1155],{"class":465}," Response",[286,1157,469],{"class":477},[286,1159,1160],{"class":415},"JSON",[286,1162,585],{"class":411},[286,1164,1165],{"class":465},"stringify",[286,1167,469],{"class":477},[286,1169,1170],{"class":415},"user",[286,1172,554],{"class":477},[286,1174,443],{"class":411},[286,1176,560],{"class":411},[286,1178,1179,1182,1184,1186,1188,1191,1193,1195,1197,1200,1202],{"class":288,"line":343},[286,1180,1181],{"class":477},"    headers",[286,1183,481],{"class":411},[286,1185,412],{"class":411},[286,1187,425],{"class":411},[286,1189,1190],{"class":477},"Content-Type",[286,1192,496],{"class":411},[286,1194,481],{"class":411},[286,1196,425],{"class":411},[286,1198,1199],{"class":386},"application\u002Fjson",[286,1201,496],{"class":411},[286,1203,499],{"class":411},[286,1205,1206,1208],{"class":288,"line":349},[286,1207,650],{"class":411},[286,1209,507],{"class":477},[286,1211,1212],{"class":288,"line":612},[286,1213,935],{"class":411},[276,1215,1218],{"className":373,"code":1216,"filename":1217,"language":375,"meta":282,"style":282},"14:58:15 INFO [my-astro-app] GET \u002Fapi\u002Fusers\u002Fusr_123\n  ├─ user: id=usr_123 name=Alice plan=pro\n  └─ requestId: 4a8ff3a8-...\n","Terminal output",[268,1219,1220,1231,1248],{"__ignoreMap":282},[286,1221,1222,1225,1228],{"class":288,"line":289},[286,1223,1224],{"class":382},"14:58:15",[286,1226,1227],{"class":386}," INFO",[286,1229,1230],{"class":415}," [my-astro-app] GET \u002Fapi\u002Fusers\u002Fusr_123\n",[286,1232,1233,1236,1239,1242,1245],{"class":288,"line":295},[286,1234,1235],{"class":382},"  ├─",[286,1237,1238],{"class":386}," user:",[286,1240,1241],{"class":386}," id=usr_123",[286,1243,1244],{"class":386}," name=Alice",[286,1246,1247],{"class":386}," plan=pro\n",[286,1249,1250,1253,1256],{"class":288,"line":302},[286,1251,1252],{"class":382},"  └─",[286,1254,1255],{"class":386}," requestId:",[286,1257,1258],{"class":386}," 4a8ff3a8-...\n",[363,1260,1262],{"id":1261},"error-handling","Error Handling",[264,1264,1265,1266,1269],{},"Use ",[268,1267,1268],{},"createError"," for structured errors:",[276,1271,1274],{"className":397,"code":1272,"filename":1273,"language":400,"meta":282,"style":282},"import type { APIRoute } from 'astro'\nimport { createError, parseError } from 'evlog'\n\nexport const POST: APIRoute = async ({ request, locals }) => {\n  const body = await request.json()\n  locals.log.set({ cart: { items: body.items } })\n\n  if (!body.paymentMethod) {\n    const error = createError({\n      status: 400,\n      message: 'Missing payment method',\n      why: 'No payment method was provided',\n      fix: 'Include a paymentMethod field in the request body',\n    })\n    locals.log.error(error)\n    const parsed = parseError(error)\n    return new Response(JSON.stringify(parsed), { status: parsed.status })\n  }\n\n  return new Response(JSON.stringify({ success: true }))\n}\n","src\u002Fpages\u002Fapi\u002Fcheckout.ts",[268,1275,1276,1296,1320,1324,1355,1375,1416,1420,1442,1456,1469,1485,1501,1517,1524,1543,1560,1603,1607,1611,1645],{"__ignoreMap":282},[286,1277,1278,1280,1282,1284,1286,1288,1290,1292,1294],{"class":288,"line":289},[286,1279,408],{"class":407},[286,1281,875],{"class":407},[286,1283,412],{"class":411},[286,1285,962],{"class":415},[286,1287,419],{"class":411},[286,1289,422],{"class":407},[286,1291,425],{"class":411},[286,1293,971],{"class":386},[286,1295,431],{"class":411},[286,1297,1298,1300,1302,1305,1307,1310,1312,1314,1316,1318],{"class":288,"line":295},[286,1299,408],{"class":407},[286,1301,412],{"class":411},[286,1303,1304],{"class":415}," createError",[286,1306,443],{"class":411},[286,1308,1309],{"class":415}," parseError",[286,1311,419],{"class":411},[286,1313,422],{"class":407},[286,1315,425],{"class":411},[286,1317,270],{"class":386},[286,1319,431],{"class":411},[286,1321,1322],{"class":288,"line":302},[286,1323,299],{"emptyLinePlaceholder":298},[286,1325,1326,1328,1330,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353],{"class":288,"line":308},[286,1327,516],{"class":407},[286,1329,520],{"class":519},[286,1331,1332],{"class":415}," POST",[286,1334,481],{"class":411},[286,1336,962],{"class":382},[286,1338,571],{"class":411},[286,1340,995],{"class":519},[286,1342,536],{"class":411},[286,1344,540],{"class":539},[286,1346,443],{"class":411},[286,1348,545],{"class":539},[286,1350,1007],{"class":411},[286,1352,557],{"class":519},[286,1354,560],{"class":411},[286,1356,1357,1359,1362,1364,1366,1368,1370,1373],{"class":288,"line":314},[286,1358,565],{"class":519},[286,1360,1361],{"class":415}," body",[286,1363,571],{"class":411},[286,1365,700],{"class":407},[286,1367,540],{"class":415},[286,1369,585],{"class":411},[286,1371,1372],{"class":465},"json",[286,1374,705],{"class":477},[286,1376,1377,1379,1381,1383,1385,1387,1389,1391,1394,1396,1398,1401,1403,1405,1407,1410,1412,1414],{"class":288,"line":320},[286,1378,663],{"class":415},[286,1380,585],{"class":411},[286,1382,668],{"class":415},[286,1384,585],{"class":411},[286,1386,1024],{"class":465},[286,1388,469],{"class":477},[286,1390,1029],{"class":411},[286,1392,1393],{"class":477}," cart",[286,1395,481],{"class":411},[286,1397,412],{"class":411},[286,1399,1400],{"class":477}," items",[286,1402,481],{"class":411},[286,1404,1361],{"class":415},[286,1406,585],{"class":411},[286,1408,1409],{"class":415},"items",[286,1411,419],{"class":411},[286,1413,419],{"class":411},[286,1415,507],{"class":477},[286,1417,1418],{"class":288,"line":326},[286,1419,299],{"emptyLinePlaceholder":298},[286,1421,1422,1425,1427,1430,1433,1435,1438,1440],{"class":288,"line":332},[286,1423,1424],{"class":407},"  if",[286,1426,738],{"class":477},[286,1428,1429],{"class":411},"!",[286,1431,1432],{"class":415},"body",[286,1434,585],{"class":411},[286,1436,1437],{"class":415},"paymentMethod",[286,1439,744],{"class":477},[286,1441,472],{"class":411},[286,1443,1444,1446,1448,1450,1452,1454],{"class":288,"line":338},[286,1445,692],{"class":519},[286,1447,771],{"class":415},[286,1449,571],{"class":411},[286,1451,1304],{"class":465},[286,1453,469],{"class":477},[286,1455,472],{"class":411},[286,1457,1458,1461,1463,1467],{"class":288,"line":343},[286,1459,1460],{"class":477},"      status",[286,1462,481],{"class":411},[286,1464,1466],{"class":1465},"sbssI"," 400",[286,1468,627],{"class":411},[286,1470,1471,1474,1476,1478,1481,1483],{"class":288,"line":349},[286,1472,1473],{"class":477},"      message",[286,1475,481],{"class":411},[286,1477,425],{"class":411},[286,1479,1480],{"class":386},"Missing payment method",[286,1482,496],{"class":411},[286,1484,627],{"class":411},[286,1486,1487,1490,1492,1494,1497,1499],{"class":288,"line":612},[286,1488,1489],{"class":477},"      why",[286,1491,481],{"class":411},[286,1493,425],{"class":411},[286,1495,1496],{"class":386},"No payment method was provided",[286,1498,496],{"class":411},[286,1500,627],{"class":411},[286,1502,1503,1506,1508,1510,1513,1515],{"class":288,"line":630},[286,1504,1505],{"class":477},"      fix",[286,1507,481],{"class":411},[286,1509,425],{"class":411},[286,1511,1512],{"class":386},"Include a paymentMethod field in the request body",[286,1514,496],{"class":411},[286,1516,627],{"class":411},[286,1518,1519,1522],{"class":288,"line":647},[286,1520,1521],{"class":411},"    }",[286,1523,507],{"class":477},[286,1525,1526,1529,1531,1533,1535,1537,1539,1541],{"class":288,"line":655},[286,1527,1528],{"class":415},"    locals",[286,1530,585],{"class":411},[286,1532,668],{"class":415},[286,1534,585],{"class":411},[286,1536,741],{"class":465},[286,1538,469],{"class":477},[286,1540,741],{"class":415},[286,1542,507],{"class":477},[286,1544,1545,1547,1550,1552,1554,1556,1558],{"class":288,"line":660},[286,1546,692],{"class":519},[286,1548,1549],{"class":415}," parsed",[286,1551,571],{"class":411},[286,1553,1309],{"class":465},[286,1555,469],{"class":477},[286,1557,741],{"class":415},[286,1559,507],{"class":477},[286,1561,1562,1564,1566,1568,1570,1572,1574,1576,1578,1581,1583,1585,1587,1590,1592,1594,1596,1599,1601],{"class":288,"line":676},[286,1563,724],{"class":407},[286,1565,574],{"class":411},[286,1567,1155],{"class":465},[286,1569,469],{"class":477},[286,1571,1160],{"class":415},[286,1573,585],{"class":411},[286,1575,1165],{"class":465},[286,1577,469],{"class":477},[286,1579,1580],{"class":415},"parsed",[286,1582,554],{"class":477},[286,1584,443],{"class":411},[286,1586,412],{"class":411},[286,1588,1589],{"class":477}," status",[286,1591,481],{"class":411},[286,1593,1549],{"class":415},[286,1595,585],{"class":411},[286,1597,1598],{"class":415},"status",[286,1600,419],{"class":411},[286,1602,507],{"class":477},[286,1604,1605],{"class":288,"line":681},[286,1606,816],{"class":411},[286,1608,1609],{"class":288,"line":689},[286,1610,299],{"emptyLinePlaceholder":298},[286,1612,1613,1615,1617,1619,1621,1623,1625,1627,1629,1631,1634,1636,1640,1642],{"class":288,"line":708},[286,1614,1150],{"class":407},[286,1616,574],{"class":411},[286,1618,1155],{"class":465},[286,1620,469],{"class":477},[286,1622,1160],{"class":415},[286,1624,585],{"class":411},[286,1626,1165],{"class":465},[286,1628,469],{"class":477},[286,1630,1029],{"class":411},[286,1632,1633],{"class":477}," success",[286,1635,481],{"class":411},[286,1637,1639],{"class":1638},"sfNiH"," true",[286,1641,419],{"class":411},[286,1643,1644],{"class":477},"))\n",[286,1646,1647],{"class":288,"line":721},[286,1648,935],{"class":411},[363,1650,165],{"id":1651},"configuration",[264,1653,1654,1655,1659,1660,1662],{},"See the ",[1656,1657,1658],"a",{"href":166},"Configuration reference"," for all available options (",[268,1661,466],{},", middleware options, sampling, silent mode, etc.).",[363,1664,1666],{"id":1665},"drain","Drain",[264,1668,1669,1670,1672],{},"Configure drain in ",[268,1671,466],{}," inside your middleware:",[276,1674,1676],{"className":397,"code":1675,"filename":399,"language":400,"meta":282,"style":282},"import { initLogger, createRequestLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\nimport type { DrainContext } from 'evlog'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({\n  batch: { size: 50, intervalMs: 5000 },\n})\nconst drain = pipeline(createAxiomDrain())\n\ninitLogger({\n  env: { service: 'my-astro-app' },\n  drain,\n})\n",[268,1677,1678,1700,1720,1740,1761,1765,1789,1818,1824,1844,1848,1856,1876,1883],{"__ignoreMap":282},[286,1679,1680,1682,1684,1686,1688,1690,1692,1694,1696,1698],{"class":288,"line":289},[286,1681,408],{"class":407},[286,1683,412],{"class":411},[286,1685,440],{"class":415},[286,1687,443],{"class":411},[286,1689,446],{"class":415},[286,1691,419],{"class":411},[286,1693,422],{"class":407},[286,1695,425],{"class":411},[286,1697,270],{"class":386},[286,1699,431],{"class":411},[286,1701,1702,1704,1706,1709,1711,1713,1715,1718],{"class":288,"line":295},[286,1703,408],{"class":407},[286,1705,412],{"class":411},[286,1707,1708],{"class":415}," createAxiomDrain",[286,1710,419],{"class":411},[286,1712,422],{"class":407},[286,1714,425],{"class":411},[286,1716,1717],{"class":386},"evlog\u002Faxiom",[286,1719,431],{"class":411},[286,1721,1722,1724,1726,1729,1731,1733,1735,1738],{"class":288,"line":302},[286,1723,408],{"class":407},[286,1725,412],{"class":411},[286,1727,1728],{"class":415}," createDrainPipeline",[286,1730,419],{"class":411},[286,1732,422],{"class":407},[286,1734,425],{"class":411},[286,1736,1737],{"class":386},"evlog\u002Fpipeline",[286,1739,431],{"class":411},[286,1741,1742,1744,1746,1748,1751,1753,1755,1757,1759],{"class":288,"line":308},[286,1743,408],{"class":407},[286,1745,875],{"class":407},[286,1747,412],{"class":411},[286,1749,1750],{"class":415}," DrainContext",[286,1752,419],{"class":411},[286,1754,422],{"class":407},[286,1756,425],{"class":411},[286,1758,270],{"class":386},[286,1760,431],{"class":411},[286,1762,1763],{"class":288,"line":314},[286,1764,299],{"emptyLinePlaceholder":298},[286,1766,1767,1770,1773,1775,1777,1779,1782,1785,1787],{"class":288,"line":320},[286,1768,1769],{"class":519},"const",[286,1771,1772],{"class":415}," pipeline ",[286,1774,526],{"class":411},[286,1776,1728],{"class":465},[286,1778,842],{"class":411},[286,1780,1781],{"class":382},"DrainContext",[286,1783,1784],{"class":411},">",[286,1786,469],{"class":415},[286,1788,472],{"class":411},[286,1790,1791,1794,1796,1798,1801,1803,1806,1808,1811,1813,1816],{"class":288,"line":326},[286,1792,1793],{"class":477},"  batch",[286,1795,481],{"class":411},[286,1797,412],{"class":411},[286,1799,1800],{"class":477}," size",[286,1802,481],{"class":411},[286,1804,1805],{"class":1465}," 50",[286,1807,443],{"class":411},[286,1809,1810],{"class":477}," intervalMs",[286,1812,481],{"class":411},[286,1814,1815],{"class":1465}," 5000",[286,1817,499],{"class":411},[286,1819,1820,1822],{"class":288,"line":332},[286,1821,504],{"class":411},[286,1823,507],{"class":415},[286,1825,1826,1828,1831,1833,1836,1838,1841],{"class":288,"line":338},[286,1827,1769],{"class":519},[286,1829,1830],{"class":415}," drain ",[286,1832,526],{"class":411},[286,1834,1835],{"class":465}," pipeline",[286,1837,469],{"class":415},[286,1839,1840],{"class":465},"createAxiomDrain",[286,1842,1843],{"class":415},"())\n",[286,1845,1846],{"class":288,"line":343},[286,1847,299],{"emptyLinePlaceholder":298},[286,1849,1850,1852,1854],{"class":288,"line":349},[286,1851,466],{"class":465},[286,1853,469],{"class":415},[286,1855,472],{"class":411},[286,1857,1858,1860,1862,1864,1866,1868,1870,1872,1874],{"class":288,"line":612},[286,1859,478],{"class":477},[286,1861,481],{"class":411},[286,1863,412],{"class":411},[286,1865,486],{"class":477},[286,1867,481],{"class":411},[286,1869,425],{"class":411},[286,1871,493],{"class":386},[286,1873,496],{"class":411},[286,1875,499],{"class":411},[286,1877,1878,1881],{"class":288,"line":630},[286,1879,1880],{"class":415},"  drain",[286,1882,627],{"class":411},[286,1884,1885,1887],{"class":288,"line":647},[286,1886,504],{"class":411},[286,1888,507],{"class":415},[354,1890,1654,1891,1893],{"color":356,"icon":13},[1656,1892,175],{"href":180}," docs for all available drain adapters.",[1895,1896,1897],"style",{},"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);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s5tWE, html code.shiki .s5tWE{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#F07178;--shiki-default-font-style:italic;--shiki-dark:#F07178;--shiki-dark-font-style:italic}html pre.shiki code .s6hCs, html code.shiki .s6hCs{--shiki-light:#9C3EDA;--shiki-light-font-style:italic;--shiki-default:#C792EA;--shiki-default-font-style:italic;--shiki-dark:#C792EA;--shiki-dark-font-style:italic}html pre.shiki code .smbvS, html code.shiki .smbvS{--shiki-light:#91B859;--shiki-light-font-style:italic;--shiki-default:#C3E88D;--shiki-default-font-style:italic;--shiki-dark:#C3E88D;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":282,"searchDepth":295,"depth":295,"links":1899},[1900,1905,1906,1907,1908],{"id":365,"depth":295,"text":20,"children":1901},[1902,1903,1904],{"id":369,"depth":302,"text":370},{"id":393,"depth":302,"text":394},{"id":826,"depth":302,"text":827},{"id":938,"depth":295,"text":126},{"id":1261,"depth":295,"text":1262},{"id":1651,"depth":295,"text":165},{"id":1665,"depth":295,"text":1666},"Wide events and structured errors in Astro server middleware.","md",null,{},{"title":106,"icon":109},{"title":106,"description":1909},"eEq5Q25-0P2Nn68rxMmeY-9dQDSTn0CnxlLmEdO3xs0",[1917,1919],{"title":101,"path":102,"stem":103,"description":1918,"icon":104,"children":-1},"Use evlog in standalone TypeScript scripts, CLI tools, queues, cron jobs, and any TypeScript process.",{"title":111,"path":112,"stem":113,"description":1920,"icon":114,"children":-1},"Build your own evlog framework integration using the toolkit API with createMiddlewareLogger, header extraction, AsyncLocalStorage, and the full drain\u002Fenrich\u002Fkeep pipeline.",1774103712287]