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