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