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