[{"data":1,"prerenderedAt":2264},["ShallowReactive",2],{"navigation_docs":3,"-adapters-pipeline":276,"-adapters-pipeline-surround":2259},[4,30,65,105,187,246,262],{"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},"Logging","\u002Flogging","2.logging",[35,40,45,50,55,60],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F4.client-logging","i-lucide-monitor",{"title":61,"path":62,"stem":63,"icon":64},"AI SDK Integration","\u002Flogging\u002Fai-sdk","2.logging\u002F5.ai-sdk","i-simple-icons-vercel",{"title":66,"path":67,"stem":68,"children":69,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[70,75,80,85,90,95,100],{"title":71,"path":72,"stem":73,"icon":74},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":76,"path":77,"stem":78,"icon":79},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":81,"path":82,"stem":83,"icon":84},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":86,"path":87,"stem":88,"icon":89},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":91,"path":92,"stem":93,"icon":94},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices","i-lucide-shield-check",{"title":96,"path":97,"stem":98,"icon":99},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":101,"path":102,"stem":103,"icon":104},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":106,"path":107,"stem":108,"children":109,"page":29},"Frameworks","\u002Fframeworks","4.frameworks",[110,114,119,124,129,134,139,144,149,154,159,164,168,173,177,182],{"title":36,"path":111,"stem":112,"icon":113},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":115,"path":116,"stem":117,"icon":118},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":120,"path":121,"stem":122,"icon":123},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":125,"path":126,"stem":127,"icon":128},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":130,"path":131,"stem":132,"icon":133},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":135,"path":136,"stem":137,"icon":138},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":140,"path":141,"stem":142,"icon":143},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":145,"path":146,"stem":147,"icon":148},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":150,"path":151,"stem":152,"icon":153},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":155,"path":156,"stem":157,"icon":158},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":160,"path":161,"stem":162,"icon":163},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":165,"path":166,"stem":167},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router",{"title":169,"path":170,"stem":171,"icon":172},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":174,"path":175,"stem":176,"icon":89},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":178,"path":179,"stem":180,"icon":181},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":183,"path":184,"stem":185,"icon":186},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F15.custom-integration","i-lucide-puzzle",{"title":188,"path":189,"stem":190,"children":191,"page":29},"Adapters","\u002Fadapters","5.adapters",[192,196,201,206,211,216,221,226,231,236,241],{"title":36,"path":193,"stem":194,"icon":195},"\u002Fadapters\u002Foverview","5.adapters\u002F1.overview","i-custom-plug",{"title":197,"path":198,"stem":199,"icon":200},"Pipeline","\u002Fadapters\u002Fpipeline","5.adapters\u002F10.pipeline","i-lucide-workflow",{"title":202,"path":203,"stem":204,"icon":205},"Browser","\u002Fadapters\u002Fbrowser","5.adapters\u002F11.browser","i-lucide-globe",{"title":207,"path":208,"stem":209,"icon":210},"Axiom","\u002Fadapters\u002Faxiom","5.adapters\u002F2.axiom","i-custom-axiom",{"title":212,"path":213,"stem":214,"icon":215},"OTLP","\u002Fadapters\u002Fotlp","5.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":217,"path":218,"stem":219,"icon":220},"PostHog","\u002Fadapters\u002Fposthog","5.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":222,"path":223,"stem":224,"icon":225},"Sentry","\u002Fadapters\u002Fsentry","5.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":227,"path":228,"stem":229,"icon":230},"Better Stack","\u002Fadapters\u002Fbetter-stack","5.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":232,"path":233,"stem":234,"icon":235},"File System","\u002Fadapters\u002Ffs","5.adapters\u002F7.fs","i-lucide-hard-drive",{"title":237,"path":238,"stem":239,"icon":240},"HyperDX","\u002Fadapters\u002Fhyperdx","5.adapters\u002F8.hyperdx","i-custom-hyperdx",{"title":242,"path":243,"stem":244,"icon":245},"Custom Adapters","\u002Fadapters\u002Fcustom","5.adapters\u002F9.custom","i-lucide-code",{"title":247,"path":248,"stem":249,"children":250,"page":29},"Enrichers","\u002Fenrichers","6.enrichers",[251,254,258],{"title":36,"path":252,"stem":253,"icon":28},"\u002Fenrichers\u002Foverview","6.enrichers\u002F1.overview",{"title":255,"path":256,"stem":257,"icon":186},"Built-in","\u002Fenrichers\u002Fbuilt-in","6.enrichers\u002F2.built-in",{"title":259,"path":260,"stem":261,"icon":245},"Custom","\u002Fenrichers\u002Fcustom","6.enrichers\u002F3.custom",{"title":263,"path":264,"stem":265,"children":266,"page":29},"NuxtHub","\u002Fnuxthub","7.nuxthub",[267,271],{"title":36,"path":268,"stem":269,"icon":270},"\u002Fnuxthub\u002Foverview","7.nuxthub\u002F1.overview","i-lucide-database",{"title":272,"path":273,"stem":274,"icon":275},"Retention","\u002Fnuxthub\u002Fretention","7.nuxthub\u002F2.retention","i-lucide-clock",{"id":277,"title":278,"body":279,"description":2249,"extension":2250,"links":2251,"meta":2255,"navigation":2256,"path":198,"seo":2257,"stem":199,"__hash__":2258},"docs\u002F5.adapters\u002F10.pipeline.md","Drain Pipeline",{"type":280,"value":281,"toc":2236},"minimark",[282,286,290,552,562,566,608,611,1029,1034,1180,1184,1239,1243,1250,1310,1314,1317,1608,1612,1615,1945,1949,1960,2189,2202,2209,2213,2232],[283,284,285],"p",{},"In production, sending one HTTP request per log event is wasteful. The drain pipeline buffers events and sends them in batches, retries on transient failures, and drops the oldest events when the buffer overflows.",[287,288,20],"h2",{"id":289},"quick-start",[291,292,298],"pre",{"className":293,"code":294,"filename":295,"language":296,"meta":297,"style":297},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type { DrainContext } from 'evlog'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nexport default defineNitroPlugin((nitroApp) => {\n  const pipeline = createDrainPipeline\u003CDrainContext>()\n  const drain = pipeline(createAxiomDrain())\n\n  nitroApp.hooks.hook('evlog:drain', drain)\n  nitroApp.hooks.hook('close', () => drain.flush())\n})\n","server\u002Fplugins\u002Fevlog-drain.ts","typescript","",[299,300,301,337,358,379,386,418,446,466,471,506,544],"code",{"__ignoreMap":297},[302,303,306,310,313,317,321,324,327,330,334],"span",{"class":304,"line":305},"line",1,[302,307,309],{"class":308},"s7zQu","import",[302,311,312],{"class":308}," type",[302,314,316],{"class":315},"sMK4o"," {",[302,318,320],{"class":319},"sTEyZ"," DrainContext",[302,322,323],{"class":315}," }",[302,325,326],{"class":308}," from",[302,328,329],{"class":315}," '",[302,331,333],{"class":332},"sfazB","evlog",[302,335,336],{"class":315},"'\n",[302,338,340,342,344,347,349,351,353,356],{"class":304,"line":339},2,[302,341,309],{"class":308},[302,343,316],{"class":315},[302,345,346],{"class":319}," createDrainPipeline",[302,348,323],{"class":315},[302,350,326],{"class":308},[302,352,329],{"class":315},[302,354,355],{"class":332},"evlog\u002Fpipeline",[302,357,336],{"class":315},[302,359,361,363,365,368,370,372,374,377],{"class":304,"line":360},3,[302,362,309],{"class":308},[302,364,316],{"class":315},[302,366,367],{"class":319}," createAxiomDrain",[302,369,323],{"class":315},[302,371,326],{"class":308},[302,373,329],{"class":315},[302,375,376],{"class":332},"evlog\u002Faxiom",[302,378,336],{"class":315},[302,380,382],{"class":304,"line":381},4,[302,383,385],{"emptyLinePlaceholder":384},true,"\n",[302,387,389,392,395,399,402,404,408,411,415],{"class":304,"line":388},5,[302,390,391],{"class":308},"export",[302,393,394],{"class":308}," default",[302,396,398],{"class":397},"s2Zo4"," defineNitroPlugin",[302,400,401],{"class":319},"(",[302,403,401],{"class":315},[302,405,407],{"class":406},"sHdIc","nitroApp",[302,409,410],{"class":315},")",[302,412,414],{"class":413},"spNyl"," =>",[302,416,417],{"class":315}," {\n",[302,419,421,424,427,430,432,435,439,442],{"class":304,"line":420},6,[302,422,423],{"class":413},"  const",[302,425,426],{"class":319}," pipeline",[302,428,429],{"class":315}," =",[302,431,346],{"class":397},[302,433,434],{"class":315},"\u003C",[302,436,438],{"class":437},"sBMFI","DrainContext",[302,440,441],{"class":315},">",[302,443,445],{"class":444},"swJcz","()\n",[302,447,449,451,454,456,458,460,463],{"class":304,"line":448},7,[302,450,423],{"class":413},[302,452,453],{"class":319}," drain",[302,455,429],{"class":315},[302,457,426],{"class":397},[302,459,401],{"class":444},[302,461,462],{"class":397},"createAxiomDrain",[302,464,465],{"class":444},"())\n",[302,467,469],{"class":304,"line":468},8,[302,470,385],{"emptyLinePlaceholder":384},[302,472,474,477,480,483,485,488,490,493,496,498,501,503],{"class":304,"line":473},9,[302,475,476],{"class":319},"  nitroApp",[302,478,479],{"class":315},".",[302,481,482],{"class":319},"hooks",[302,484,479],{"class":315},[302,486,487],{"class":397},"hook",[302,489,401],{"class":444},[302,491,492],{"class":315},"'",[302,494,495],{"class":332},"evlog:drain",[302,497,492],{"class":315},[302,499,500],{"class":315},",",[302,502,453],{"class":319},[302,504,505],{"class":444},")\n",[302,507,509,511,513,515,517,519,521,523,526,528,530,533,535,537,539,542],{"class":304,"line":508},10,[302,510,476],{"class":319},[302,512,479],{"class":315},[302,514,482],{"class":319},[302,516,479],{"class":315},[302,518,487],{"class":397},[302,520,401],{"class":444},[302,522,492],{"class":315},[302,524,525],{"class":332},"close",[302,527,492],{"class":315},[302,529,500],{"class":315},[302,531,532],{"class":315}," ()",[302,534,414],{"class":413},[302,536,453],{"class":319},[302,538,479],{"class":315},[302,540,541],{"class":397},"flush",[302,543,465],{"class":444},[302,545,547,550],{"class":304,"line":546},11,[302,548,549],{"class":315},"}",[302,551,505],{"class":319},[553,554,557,558,561],"callout",{"color":555,"icon":556},"warning","i-lucide-alert-triangle","Always call ",[299,559,560],{},"drain.flush()"," on server shutdown to ensure buffered events are sent before the process exits.",[287,563,565],{"id":564},"how-it-works","How It Works",[567,568,569,576,588,594,601],"ol",{},[570,571,572,573,575],"li",{},"Events are buffered in memory as they arrive via the ",[299,574,495],{}," hook",[570,577,578,579,583,584,587],{},"A batch is flushed when either the ",[580,581,582],"strong",{},"batch size"," is reached or the ",[580,585,586],{},"interval"," expires (whichever comes first)",[570,589,590,591],{},"If the drain function fails, the batch is retried with the configured ",[580,592,593],{},"backoff strategy",[570,595,596,597,600],{},"If all retries are exhausted, ",[299,598,599],{},"onDropped"," is called with the lost events",[570,602,603,604,607],{},"If the buffer exceeds ",[299,605,606],{},"maxBufferSize",", the oldest events are dropped to prevent memory leaks",[287,609,76],{"id":610},"configuration",[291,612,614],{"className":293,"code":613,"filename":295,"language":296,"meta":297,"style":297},"import type { DrainContext } from 'evlog'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nexport default defineNitroPlugin((nitroApp) => {\n  const pipeline = createDrainPipeline\u003CDrainContext>({\n    batch: {\n      size: 50,          \u002F\u002F Flush every 50 events\n      intervalMs: 5000,  \u002F\u002F Or every 5 seconds, whichever comes first\n    },\n    retry: {\n      maxAttempts: 3,\n      backoff: 'exponential',\n      initialDelayMs: 1000,\n      maxDelayMs: 30000,\n    },\n    maxBufferSize: 1000,\n    onDropped: (events, error) => {\n      console.error(`[evlog] Dropped ${events.length} events:`, error?.message)\n    },\n  })\n\n  const drain = pipeline(createAxiomDrain())\n\n  nitroApp.hooks.hook('evlog:drain', drain)\n  nitroApp.hooks.hook('close', () => drain.flush())\n})\n",[299,615,616,636,654,672,676,696,717,727,744,759,764,773,787,804,817,830,835,847,872,920,925,933,938,955,960,987,1022],{"__ignoreMap":297},[302,617,618,620,622,624,626,628,630,632,634],{"class":304,"line":305},[302,619,309],{"class":308},[302,621,312],{"class":308},[302,623,316],{"class":315},[302,625,320],{"class":319},[302,627,323],{"class":315},[302,629,326],{"class":308},[302,631,329],{"class":315},[302,633,333],{"class":332},[302,635,336],{"class":315},[302,637,638,640,642,644,646,648,650,652],{"class":304,"line":339},[302,639,309],{"class":308},[302,641,316],{"class":315},[302,643,346],{"class":319},[302,645,323],{"class":315},[302,647,326],{"class":308},[302,649,329],{"class":315},[302,651,355],{"class":332},[302,653,336],{"class":315},[302,655,656,658,660,662,664,666,668,670],{"class":304,"line":360},[302,657,309],{"class":308},[302,659,316],{"class":315},[302,661,367],{"class":319},[302,663,323],{"class":315},[302,665,326],{"class":308},[302,667,329],{"class":315},[302,669,376],{"class":332},[302,671,336],{"class":315},[302,673,674],{"class":304,"line":381},[302,675,385],{"emptyLinePlaceholder":384},[302,677,678,680,682,684,686,688,690,692,694],{"class":304,"line":388},[302,679,391],{"class":308},[302,681,394],{"class":308},[302,683,398],{"class":397},[302,685,401],{"class":319},[302,687,401],{"class":315},[302,689,407],{"class":406},[302,691,410],{"class":315},[302,693,414],{"class":413},[302,695,417],{"class":315},[302,697,698,700,702,704,706,708,710,712,714],{"class":304,"line":420},[302,699,423],{"class":413},[302,701,426],{"class":319},[302,703,429],{"class":315},[302,705,346],{"class":397},[302,707,434],{"class":315},[302,709,438],{"class":437},[302,711,441],{"class":315},[302,713,401],{"class":444},[302,715,716],{"class":315},"{\n",[302,718,719,722,725],{"class":304,"line":448},[302,720,721],{"class":444},"    batch",[302,723,724],{"class":315},":",[302,726,417],{"class":315},[302,728,729,732,734,738,740],{"class":304,"line":468},[302,730,731],{"class":444},"      size",[302,733,724],{"class":315},[302,735,737],{"class":736},"sbssI"," 50",[302,739,500],{"class":315},[302,741,743],{"class":742},"sHwdD","          \u002F\u002F Flush every 50 events\n",[302,745,746,749,751,754,756],{"class":304,"line":473},[302,747,748],{"class":444},"      intervalMs",[302,750,724],{"class":315},[302,752,753],{"class":736}," 5000",[302,755,500],{"class":315},[302,757,758],{"class":742},"  \u002F\u002F Or every 5 seconds, whichever comes first\n",[302,760,761],{"class":304,"line":508},[302,762,763],{"class":315},"    },\n",[302,765,766,769,771],{"class":304,"line":546},[302,767,768],{"class":444},"    retry",[302,770,724],{"class":315},[302,772,417],{"class":315},[302,774,776,779,781,784],{"class":304,"line":775},12,[302,777,778],{"class":444},"      maxAttempts",[302,780,724],{"class":315},[302,782,783],{"class":736}," 3",[302,785,786],{"class":315},",\n",[302,788,790,793,795,797,800,802],{"class":304,"line":789},13,[302,791,792],{"class":444},"      backoff",[302,794,724],{"class":315},[302,796,329],{"class":315},[302,798,799],{"class":332},"exponential",[302,801,492],{"class":315},[302,803,786],{"class":315},[302,805,807,810,812,815],{"class":304,"line":806},14,[302,808,809],{"class":444},"      initialDelayMs",[302,811,724],{"class":315},[302,813,814],{"class":736}," 1000",[302,816,786],{"class":315},[302,818,820,823,825,828],{"class":304,"line":819},15,[302,821,822],{"class":444},"      maxDelayMs",[302,824,724],{"class":315},[302,826,827],{"class":736}," 30000",[302,829,786],{"class":315},[302,831,833],{"class":304,"line":832},16,[302,834,763],{"class":315},[302,836,838,841,843,845],{"class":304,"line":837},17,[302,839,840],{"class":444},"    maxBufferSize",[302,842,724],{"class":315},[302,844,814],{"class":736},[302,846,786],{"class":315},[302,848,850,853,855,858,861,863,866,868,870],{"class":304,"line":849},18,[302,851,852],{"class":397},"    onDropped",[302,854,724],{"class":315},[302,856,857],{"class":315}," (",[302,859,860],{"class":406},"events",[302,862,500],{"class":315},[302,864,865],{"class":406}," error",[302,867,410],{"class":315},[302,869,414],{"class":413},[302,871,417],{"class":315},[302,873,875,878,880,883,885,888,891,894,896,898,901,903,906,908,910,912,915,918],{"class":304,"line":874},19,[302,876,877],{"class":319},"      console",[302,879,479],{"class":315},[302,881,882],{"class":397},"error",[302,884,401],{"class":444},[302,886,887],{"class":315},"`",[302,889,890],{"class":332},"[evlog] Dropped ",[302,892,893],{"class":315},"${",[302,895,860],{"class":319},[302,897,479],{"class":315},[302,899,900],{"class":319},"length",[302,902,549],{"class":315},[302,904,905],{"class":332}," events:",[302,907,887],{"class":315},[302,909,500],{"class":315},[302,911,865],{"class":319},[302,913,914],{"class":315},"?.",[302,916,917],{"class":319},"message",[302,919,505],{"class":444},[302,921,923],{"class":304,"line":922},20,[302,924,763],{"class":315},[302,926,928,931],{"class":304,"line":927},21,[302,929,930],{"class":315},"  }",[302,932,505],{"class":444},[302,934,936],{"class":304,"line":935},22,[302,937,385],{"emptyLinePlaceholder":384},[302,939,941,943,945,947,949,951,953],{"class":304,"line":940},23,[302,942,423],{"class":413},[302,944,453],{"class":319},[302,946,429],{"class":315},[302,948,426],{"class":397},[302,950,401],{"class":444},[302,952,462],{"class":397},[302,954,465],{"class":444},[302,956,958],{"class":304,"line":957},24,[302,959,385],{"emptyLinePlaceholder":384},[302,961,963,965,967,969,971,973,975,977,979,981,983,985],{"class":304,"line":962},25,[302,964,476],{"class":319},[302,966,479],{"class":315},[302,968,482],{"class":319},[302,970,479],{"class":315},[302,972,487],{"class":397},[302,974,401],{"class":444},[302,976,492],{"class":315},[302,978,495],{"class":332},[302,980,492],{"class":315},[302,982,500],{"class":315},[302,984,453],{"class":319},[302,986,505],{"class":444},[302,988,990,992,994,996,998,1000,1002,1004,1006,1008,1010,1012,1014,1016,1018,1020],{"class":304,"line":989},26,[302,991,476],{"class":319},[302,993,479],{"class":315},[302,995,482],{"class":319},[302,997,479],{"class":315},[302,999,487],{"class":397},[302,1001,401],{"class":444},[302,1003,492],{"class":315},[302,1005,525],{"class":332},[302,1007,492],{"class":315},[302,1009,500],{"class":315},[302,1011,532],{"class":315},[302,1013,414],{"class":413},[302,1015,453],{"class":319},[302,1017,479],{"class":315},[302,1019,541],{"class":397},[302,1021,465],{"class":444},[302,1023,1025,1027],{"class":304,"line":1024},27,[302,1026,549],{"class":315},[302,1028,505],{"class":319},[1030,1031,1033],"h3",{"id":1032},"options-reference","Options Reference",[1035,1036,1037,1053],"table",{},[1038,1039,1040],"thead",{},[1041,1042,1043,1047,1050],"tr",{},[1044,1045,1046],"th",{},"Option",[1044,1048,1049],{},"Default",[1044,1051,1052],{},"Description",[1054,1055,1056,1072,1087,1102,1125,1140,1155,1168],"tbody",{},[1041,1057,1058,1064,1069],{},[1059,1060,1061],"td",{},[299,1062,1063],{},"batch.size",[1059,1065,1066],{},[299,1067,1068],{},"50",[1059,1070,1071],{},"Maximum events per batch",[1041,1073,1074,1079,1084],{},[1059,1075,1076],{},[299,1077,1078],{},"batch.intervalMs",[1059,1080,1081],{},[299,1082,1083],{},"5000",[1059,1085,1086],{},"Max time (ms) before flushing a partial batch",[1041,1088,1089,1094,1099],{},[1059,1090,1091],{},[299,1092,1093],{},"retry.maxAttempts",[1059,1095,1096],{},[299,1097,1098],{},"3",[1059,1100,1101],{},"Total attempts including the initial one",[1041,1103,1104,1109,1114],{},[1059,1105,1106],{},[299,1107,1108],{},"retry.backoff",[1059,1110,1111],{},[299,1112,1113],{},"'exponential'",[1059,1115,1116,1118,1119,1118,1122],{},[299,1117,1113],{}," | ",[299,1120,1121],{},"'linear'",[299,1123,1124],{},"'fixed'",[1041,1126,1127,1132,1137],{},[1059,1128,1129],{},[299,1130,1131],{},"retry.initialDelayMs",[1059,1133,1134],{},[299,1135,1136],{},"1000",[1059,1138,1139],{},"Base delay for the first retry",[1041,1141,1142,1147,1152],{},[1059,1143,1144],{},[299,1145,1146],{},"retry.maxDelayMs",[1059,1148,1149],{},[299,1150,1151],{},"30000",[1059,1153,1154],{},"Upper bound for any retry delay",[1041,1156,1157,1161,1165],{},[1059,1158,1159],{},[299,1160,606],{},[1059,1162,1163],{},[299,1164,1136],{},[1059,1166,1167],{},"Max buffered events before dropping oldest",[1041,1169,1170,1174,1177],{},[1059,1171,1172],{},[299,1173,599],{},[1059,1175,1176],{},"-",[1059,1178,1179],{},"Callback when events are dropped (overflow or retry exhaustion)",[287,1181,1183],{"id":1182},"backoff-strategies","Backoff Strategies",[1035,1185,1186,1199],{},[1038,1187,1188],{},[1041,1189,1190,1193,1196],{},[1044,1191,1192],{},"Strategy",[1044,1194,1195],{},"Delay Pattern",[1044,1197,1198],{},"Use Case",[1054,1200,1201,1213,1226],{},[1041,1202,1203,1207,1210],{},[1059,1204,1205],{},[299,1206,799],{},[1059,1208,1209],{},"1s, 2s, 4s, 8s...",[1059,1211,1212],{},"Default. Best for transient failures that may need time to recover",[1041,1214,1215,1220,1223],{},[1059,1216,1217],{},[299,1218,1219],{},"linear",[1059,1221,1222],{},"1s, 2s, 3s, 4s...",[1059,1224,1225],{},"Predictable delay growth",[1041,1227,1228,1233,1236],{},[1059,1229,1230],{},[299,1231,1232],{},"fixed",[1059,1234,1235],{},"1s, 1s, 1s, 1s...",[1059,1237,1238],{},"Same delay every time. Useful for rate-limited APIs",[287,1240,1242],{"id":1241},"returned-drain-function","Returned Drain Function",[283,1244,1245,1246,1249],{},"The function returned by ",[299,1247,1248],{},"pipeline(drain)"," is hook-compatible and exposes:",[1035,1251,1252,1264],{},[1038,1253,1254],{},[1041,1255,1256,1259,1262],{},[1044,1257,1258],{},"Property",[1044,1260,1261],{},"Type",[1044,1263,1052],{},[1054,1265,1266,1281,1295],{},[1041,1267,1268,1273,1278],{},[1059,1269,1270],{},[299,1271,1272],{},"drain(ctx)",[1059,1274,1275],{},[299,1276,1277],{},"(ctx: T) => void",[1059,1279,1280],{},"Push a single event into the buffer",[1041,1282,1283,1287,1292],{},[1059,1284,1285],{},[299,1286,560],{},[1059,1288,1289],{},[299,1290,1291],{},"() => Promise\u003Cvoid>",[1059,1293,1294],{},"Force-flush all buffered events",[1041,1296,1297,1302,1307],{},[1059,1298,1299],{},[299,1300,1301],{},"drain.pending",[1059,1303,1304],{},[299,1305,1306],{},"number",[1059,1308,1309],{},"Number of events currently buffered",[287,1311,1313],{"id":1312},"multiple-destinations","Multiple Destinations",[283,1315,1316],{},"Wrap multiple adapters with a single pipeline:",[291,1318,1320],{"className":293,"code":1319,"filename":295,"language":296,"meta":297,"style":297},"import type { DrainContext } from 'evlog'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createOTLPDrain } from 'evlog\u002Fotlp'\n\nexport default defineNitroPlugin((nitroApp) => {\n  const axiom = createAxiomDrain()\n  const otlp = createOTLPDrain()\n\n  const pipeline = createDrainPipeline\u003CDrainContext>()\n  const drain = pipeline(async (batch) => {\n    await Promise.allSettled([axiom(batch), otlp(batch)])\n  })\n\n  nitroApp.hooks.hook('evlog:drain', drain)\n  nitroApp.hooks.hook('close', () => drain.flush())\n})\n",[299,1321,1322,1342,1360,1378,1398,1402,1422,1435,1448,1452,1470,1496,1532,1538,1542,1568,1602],{"__ignoreMap":297},[302,1323,1324,1326,1328,1330,1332,1334,1336,1338,1340],{"class":304,"line":305},[302,1325,309],{"class":308},[302,1327,312],{"class":308},[302,1329,316],{"class":315},[302,1331,320],{"class":319},[302,1333,323],{"class":315},[302,1335,326],{"class":308},[302,1337,329],{"class":315},[302,1339,333],{"class":332},[302,1341,336],{"class":315},[302,1343,1344,1346,1348,1350,1352,1354,1356,1358],{"class":304,"line":339},[302,1345,309],{"class":308},[302,1347,316],{"class":315},[302,1349,346],{"class":319},[302,1351,323],{"class":315},[302,1353,326],{"class":308},[302,1355,329],{"class":315},[302,1357,355],{"class":332},[302,1359,336],{"class":315},[302,1361,1362,1364,1366,1368,1370,1372,1374,1376],{"class":304,"line":360},[302,1363,309],{"class":308},[302,1365,316],{"class":315},[302,1367,367],{"class":319},[302,1369,323],{"class":315},[302,1371,326],{"class":308},[302,1373,329],{"class":315},[302,1375,376],{"class":332},[302,1377,336],{"class":315},[302,1379,1380,1382,1384,1387,1389,1391,1393,1396],{"class":304,"line":381},[302,1381,309],{"class":308},[302,1383,316],{"class":315},[302,1385,1386],{"class":319}," createOTLPDrain",[302,1388,323],{"class":315},[302,1390,326],{"class":308},[302,1392,329],{"class":315},[302,1394,1395],{"class":332},"evlog\u002Fotlp",[302,1397,336],{"class":315},[302,1399,1400],{"class":304,"line":388},[302,1401,385],{"emptyLinePlaceholder":384},[302,1403,1404,1406,1408,1410,1412,1414,1416,1418,1420],{"class":304,"line":420},[302,1405,391],{"class":308},[302,1407,394],{"class":308},[302,1409,398],{"class":397},[302,1411,401],{"class":319},[302,1413,401],{"class":315},[302,1415,407],{"class":406},[302,1417,410],{"class":315},[302,1419,414],{"class":413},[302,1421,417],{"class":315},[302,1423,1424,1426,1429,1431,1433],{"class":304,"line":448},[302,1425,423],{"class":413},[302,1427,1428],{"class":319}," axiom",[302,1430,429],{"class":315},[302,1432,367],{"class":397},[302,1434,445],{"class":444},[302,1436,1437,1439,1442,1444,1446],{"class":304,"line":468},[302,1438,423],{"class":413},[302,1440,1441],{"class":319}," otlp",[302,1443,429],{"class":315},[302,1445,1386],{"class":397},[302,1447,445],{"class":444},[302,1449,1450],{"class":304,"line":473},[302,1451,385],{"emptyLinePlaceholder":384},[302,1453,1454,1456,1458,1460,1462,1464,1466,1468],{"class":304,"line":508},[302,1455,423],{"class":413},[302,1457,426],{"class":319},[302,1459,429],{"class":315},[302,1461,346],{"class":397},[302,1463,434],{"class":315},[302,1465,438],{"class":437},[302,1467,441],{"class":315},[302,1469,445],{"class":444},[302,1471,1472,1474,1476,1478,1480,1482,1485,1487,1490,1492,1494],{"class":304,"line":546},[302,1473,423],{"class":413},[302,1475,453],{"class":319},[302,1477,429],{"class":315},[302,1479,426],{"class":397},[302,1481,401],{"class":444},[302,1483,1484],{"class":413},"async",[302,1486,857],{"class":315},[302,1488,1489],{"class":406},"batch",[302,1491,410],{"class":315},[302,1493,414],{"class":413},[302,1495,417],{"class":315},[302,1497,1498,1501,1504,1506,1509,1512,1515,1517,1519,1521,1523,1525,1527,1529],{"class":304,"line":775},[302,1499,1500],{"class":308},"    await",[302,1502,1503],{"class":437}," Promise",[302,1505,479],{"class":315},[302,1507,1508],{"class":397},"allSettled",[302,1510,1511],{"class":444},"([",[302,1513,1514],{"class":397},"axiom",[302,1516,401],{"class":444},[302,1518,1489],{"class":319},[302,1520,410],{"class":444},[302,1522,500],{"class":315},[302,1524,1441],{"class":397},[302,1526,401],{"class":444},[302,1528,1489],{"class":319},[302,1530,1531],{"class":444},")])\n",[302,1533,1534,1536],{"class":304,"line":789},[302,1535,930],{"class":315},[302,1537,505],{"class":444},[302,1539,1540],{"class":304,"line":806},[302,1541,385],{"emptyLinePlaceholder":384},[302,1543,1544,1546,1548,1550,1552,1554,1556,1558,1560,1562,1564,1566],{"class":304,"line":819},[302,1545,476],{"class":319},[302,1547,479],{"class":315},[302,1549,482],{"class":319},[302,1551,479],{"class":315},[302,1553,487],{"class":397},[302,1555,401],{"class":444},[302,1557,492],{"class":315},[302,1559,495],{"class":332},[302,1561,492],{"class":315},[302,1563,500],{"class":315},[302,1565,453],{"class":319},[302,1567,505],{"class":444},[302,1569,1570,1572,1574,1576,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596,1598,1600],{"class":304,"line":832},[302,1571,476],{"class":319},[302,1573,479],{"class":315},[302,1575,482],{"class":319},[302,1577,479],{"class":315},[302,1579,487],{"class":397},[302,1581,401],{"class":444},[302,1583,492],{"class":315},[302,1585,525],{"class":332},[302,1587,492],{"class":315},[302,1589,500],{"class":315},[302,1591,532],{"class":315},[302,1593,414],{"class":413},[302,1595,453],{"class":319},[302,1597,479],{"class":315},[302,1599,541],{"class":397},[302,1601,465],{"class":444},[302,1603,1604,1606],{"class":304,"line":837},[302,1605,549],{"class":315},[302,1607,505],{"class":319},[287,1609,1611],{"id":1610},"custom-drain-function","Custom Drain Function",[283,1613,1614],{},"You don't need an adapter. Pass any async function that accepts a batch:",[291,1616,1618],{"className":293,"code":1617,"filename":295,"language":296,"meta":297,"style":297},"import type { DrainContext } from 'evlog'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nexport default defineNitroPlugin((nitroApp) => {\n  const pipeline = createDrainPipeline\u003CDrainContext>({\n    batch: { size: 100 },\n  })\n\n  const drain = pipeline(async (batch) => {\n    await fetch('https:\u002F\u002Fyour-service.com\u002Flogs', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application\u002Fjson' },\n      body: JSON.stringify(batch.map(ctx => ctx.event)),\n    })\n  })\n\n  nitroApp.hooks.hook('evlog:drain', drain)\n  nitroApp.hooks.hook('close', () => drain.flush())\n})\n",[299,1619,1620,1640,1658,1662,1682,1702,1721,1727,1731,1755,1775,1791,1818,1862,1869,1875,1879,1905,1939],{"__ignoreMap":297},[302,1621,1622,1624,1626,1628,1630,1632,1634,1636,1638],{"class":304,"line":305},[302,1623,309],{"class":308},[302,1625,312],{"class":308},[302,1627,316],{"class":315},[302,1629,320],{"class":319},[302,1631,323],{"class":315},[302,1633,326],{"class":308},[302,1635,329],{"class":315},[302,1637,333],{"class":332},[302,1639,336],{"class":315},[302,1641,1642,1644,1646,1648,1650,1652,1654,1656],{"class":304,"line":339},[302,1643,309],{"class":308},[302,1645,316],{"class":315},[302,1647,346],{"class":319},[302,1649,323],{"class":315},[302,1651,326],{"class":308},[302,1653,329],{"class":315},[302,1655,355],{"class":332},[302,1657,336],{"class":315},[302,1659,1660],{"class":304,"line":360},[302,1661,385],{"emptyLinePlaceholder":384},[302,1663,1664,1666,1668,1670,1672,1674,1676,1678,1680],{"class":304,"line":381},[302,1665,391],{"class":308},[302,1667,394],{"class":308},[302,1669,398],{"class":397},[302,1671,401],{"class":319},[302,1673,401],{"class":315},[302,1675,407],{"class":406},[302,1677,410],{"class":315},[302,1679,414],{"class":413},[302,1681,417],{"class":315},[302,1683,1684,1686,1688,1690,1692,1694,1696,1698,1700],{"class":304,"line":388},[302,1685,423],{"class":413},[302,1687,426],{"class":319},[302,1689,429],{"class":315},[302,1691,346],{"class":397},[302,1693,434],{"class":315},[302,1695,438],{"class":437},[302,1697,441],{"class":315},[302,1699,401],{"class":444},[302,1701,716],{"class":315},[302,1703,1704,1706,1708,1710,1713,1715,1718],{"class":304,"line":420},[302,1705,721],{"class":444},[302,1707,724],{"class":315},[302,1709,316],{"class":315},[302,1711,1712],{"class":444}," size",[302,1714,724],{"class":315},[302,1716,1717],{"class":736}," 100",[302,1719,1720],{"class":315}," },\n",[302,1722,1723,1725],{"class":304,"line":448},[302,1724,930],{"class":315},[302,1726,505],{"class":444},[302,1728,1729],{"class":304,"line":468},[302,1730,385],{"emptyLinePlaceholder":384},[302,1732,1733,1735,1737,1739,1741,1743,1745,1747,1749,1751,1753],{"class":304,"line":473},[302,1734,423],{"class":413},[302,1736,453],{"class":319},[302,1738,429],{"class":315},[302,1740,426],{"class":397},[302,1742,401],{"class":444},[302,1744,1484],{"class":413},[302,1746,857],{"class":315},[302,1748,1489],{"class":406},[302,1750,410],{"class":315},[302,1752,414],{"class":413},[302,1754,417],{"class":315},[302,1756,1757,1759,1762,1764,1766,1769,1771,1773],{"class":304,"line":508},[302,1758,1500],{"class":308},[302,1760,1761],{"class":397}," fetch",[302,1763,401],{"class":444},[302,1765,492],{"class":315},[302,1767,1768],{"class":332},"https:\u002F\u002Fyour-service.com\u002Flogs",[302,1770,492],{"class":315},[302,1772,500],{"class":315},[302,1774,417],{"class":315},[302,1776,1777,1780,1782,1784,1787,1789],{"class":304,"line":546},[302,1778,1779],{"class":444},"      method",[302,1781,724],{"class":315},[302,1783,329],{"class":315},[302,1785,1786],{"class":332},"POST",[302,1788,492],{"class":315},[302,1790,786],{"class":315},[302,1792,1793,1796,1798,1800,1802,1805,1807,1809,1811,1814,1816],{"class":304,"line":775},[302,1794,1795],{"class":444},"      headers",[302,1797,724],{"class":315},[302,1799,316],{"class":315},[302,1801,329],{"class":315},[302,1803,1804],{"class":444},"Content-Type",[302,1806,492],{"class":315},[302,1808,724],{"class":315},[302,1810,329],{"class":315},[302,1812,1813],{"class":332},"application\u002Fjson",[302,1815,492],{"class":315},[302,1817,1720],{"class":315},[302,1819,1820,1823,1825,1828,1830,1833,1835,1837,1839,1842,1844,1847,1849,1852,1854,1857,1860],{"class":304,"line":789},[302,1821,1822],{"class":444},"      body",[302,1824,724],{"class":315},[302,1826,1827],{"class":319}," JSON",[302,1829,479],{"class":315},[302,1831,1832],{"class":397},"stringify",[302,1834,401],{"class":444},[302,1836,1489],{"class":319},[302,1838,479],{"class":315},[302,1840,1841],{"class":397},"map",[302,1843,401],{"class":444},[302,1845,1846],{"class":406},"ctx",[302,1848,414],{"class":413},[302,1850,1851],{"class":319}," ctx",[302,1853,479],{"class":315},[302,1855,1856],{"class":319},"event",[302,1858,1859],{"class":444},"))",[302,1861,786],{"class":315},[302,1863,1864,1867],{"class":304,"line":806},[302,1865,1866],{"class":315},"    }",[302,1868,505],{"class":444},[302,1870,1871,1873],{"class":304,"line":819},[302,1872,930],{"class":315},[302,1874,505],{"class":444},[302,1876,1877],{"class":304,"line":832},[302,1878,385],{"emptyLinePlaceholder":384},[302,1880,1881,1883,1885,1887,1889,1891,1893,1895,1897,1899,1901,1903],{"class":304,"line":837},[302,1882,476],{"class":319},[302,1884,479],{"class":315},[302,1886,482],{"class":319},[302,1888,479],{"class":315},[302,1890,487],{"class":397},[302,1892,401],{"class":444},[302,1894,492],{"class":315},[302,1896,495],{"class":332},[302,1898,492],{"class":315},[302,1900,500],{"class":315},[302,1902,453],{"class":319},[302,1904,505],{"class":444},[302,1906,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931,1933,1935,1937],{"class":304,"line":849},[302,1908,476],{"class":319},[302,1910,479],{"class":315},[302,1912,482],{"class":319},[302,1914,479],{"class":315},[302,1916,487],{"class":397},[302,1918,401],{"class":444},[302,1920,492],{"class":315},[302,1922,525],{"class":332},[302,1924,492],{"class":315},[302,1926,500],{"class":315},[302,1928,532],{"class":315},[302,1930,414],{"class":413},[302,1932,453],{"class":319},[302,1934,479],{"class":315},[302,1936,541],{"class":397},[302,1938,465],{"class":444},[302,1940,1941,1943],{"class":304,"line":874},[302,1942,549],{"class":315},[302,1944,505],{"class":319},[287,1946,1948],{"id":1947},"standalone-usage-without-nitro","Standalone Usage (Without Nitro)",[283,1950,1951,1952,1955,1956,1959],{},"The pipeline works outside of Nitro. Use the ",[299,1953,1954],{},"drain"," option in ",[299,1957,1958],{},"initLogger"," to wire it up:",[291,1961,1964],{"className":293,"code":1962,"filename":1963,"language":296,"meta":297,"style":297},"import type { DrainContext } from 'evlog'\nimport { initLogger, log } from 'evlog'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({ batch: { size: 25 } })\nconst drain = pipeline(createAxiomDrain())\n\ninitLogger({ drain })\n\nlog.info({ action: 'started' }) \u002F\u002F batched and drained\n\n\u002F\u002F Flush before exit\nawait drain.flush()\n","index.ts",[299,1965,1966,1986,2010,2028,2046,2050,2094,2111,2115,2129,2133,2167,2171,2176],{"__ignoreMap":297},[302,1967,1968,1970,1972,1974,1976,1978,1980,1982,1984],{"class":304,"line":305},[302,1969,309],{"class":308},[302,1971,312],{"class":308},[302,1973,316],{"class":315},[302,1975,320],{"class":319},[302,1977,323],{"class":315},[302,1979,326],{"class":308},[302,1981,329],{"class":315},[302,1983,333],{"class":332},[302,1985,336],{"class":315},[302,1987,1988,1990,1992,1995,1997,2000,2002,2004,2006,2008],{"class":304,"line":339},[302,1989,309],{"class":308},[302,1991,316],{"class":315},[302,1993,1994],{"class":319}," initLogger",[302,1996,500],{"class":315},[302,1998,1999],{"class":319}," log",[302,2001,323],{"class":315},[302,2003,326],{"class":308},[302,2005,329],{"class":315},[302,2007,333],{"class":332},[302,2009,336],{"class":315},[302,2011,2012,2014,2016,2018,2020,2022,2024,2026],{"class":304,"line":360},[302,2013,309],{"class":308},[302,2015,316],{"class":315},[302,2017,346],{"class":319},[302,2019,323],{"class":315},[302,2021,326],{"class":308},[302,2023,329],{"class":315},[302,2025,355],{"class":332},[302,2027,336],{"class":315},[302,2029,2030,2032,2034,2036,2038,2040,2042,2044],{"class":304,"line":381},[302,2031,309],{"class":308},[302,2033,316],{"class":315},[302,2035,367],{"class":319},[302,2037,323],{"class":315},[302,2039,326],{"class":308},[302,2041,329],{"class":315},[302,2043,376],{"class":332},[302,2045,336],{"class":315},[302,2047,2048],{"class":304,"line":388},[302,2049,385],{"emptyLinePlaceholder":384},[302,2051,2052,2055,2058,2061,2063,2065,2067,2069,2071,2074,2077,2079,2081,2083,2085,2088,2090,2092],{"class":304,"line":420},[302,2053,2054],{"class":413},"const",[302,2056,2057],{"class":319}," pipeline ",[302,2059,2060],{"class":315},"=",[302,2062,346],{"class":397},[302,2064,434],{"class":315},[302,2066,438],{"class":437},[302,2068,441],{"class":315},[302,2070,401],{"class":319},[302,2072,2073],{"class":315},"{",[302,2075,2076],{"class":444}," batch",[302,2078,724],{"class":315},[302,2080,316],{"class":315},[302,2082,1712],{"class":444},[302,2084,724],{"class":315},[302,2086,2087],{"class":736}," 25",[302,2089,323],{"class":315},[302,2091,323],{"class":315},[302,2093,505],{"class":319},[302,2095,2096,2098,2101,2103,2105,2107,2109],{"class":304,"line":448},[302,2097,2054],{"class":413},[302,2099,2100],{"class":319}," drain ",[302,2102,2060],{"class":315},[302,2104,426],{"class":397},[302,2106,401],{"class":319},[302,2108,462],{"class":397},[302,2110,465],{"class":319},[302,2112,2113],{"class":304,"line":468},[302,2114,385],{"emptyLinePlaceholder":384},[302,2116,2117,2119,2121,2123,2125,2127],{"class":304,"line":473},[302,2118,1958],{"class":397},[302,2120,401],{"class":319},[302,2122,2073],{"class":315},[302,2124,2100],{"class":319},[302,2126,549],{"class":315},[302,2128,505],{"class":319},[302,2130,2131],{"class":304,"line":508},[302,2132,385],{"emptyLinePlaceholder":384},[302,2134,2135,2138,2140,2143,2145,2147,2150,2152,2154,2157,2159,2161,2164],{"class":304,"line":546},[302,2136,2137],{"class":319},"log",[302,2139,479],{"class":315},[302,2141,2142],{"class":397},"info",[302,2144,401],{"class":319},[302,2146,2073],{"class":315},[302,2148,2149],{"class":444}," action",[302,2151,724],{"class":315},[302,2153,329],{"class":315},[302,2155,2156],{"class":332},"started",[302,2158,492],{"class":315},[302,2160,323],{"class":315},[302,2162,2163],{"class":319},") ",[302,2165,2166],{"class":742},"\u002F\u002F batched and drained\n",[302,2168,2169],{"class":304,"line":775},[302,2170,385],{"emptyLinePlaceholder":384},[302,2172,2173],{"class":304,"line":789},[302,2174,2175],{"class":742},"\u002F\u002F Flush before exit\n",[302,2177,2178,2181,2183,2185,2187],{"class":304,"line":806},[302,2179,2180],{"class":308},"await",[302,2182,453],{"class":319},[302,2184,479],{"class":315},[302,2186,541],{"class":397},[302,2188,445],{"class":319},[553,2190,2193,2194,2201],{"color":2191,"icon":2192},"neutral","i-lucide-arrow-right","See the full ",[2195,2196,2200],"a",{"href":2197,"rel":2198},"https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Fbun-script",[2199],"nofollow","bun-script example"," for a complete working script.",[553,2203,2204,2205,2208],{"color":2191,"icon":245},"See the ",[2195,2206,2207],{"href":121},"Next.js guide"," for a working implementation.",[287,2210,2212],{"id":2211},"next-steps","Next Steps",[2214,2215,2216,2222,2227],"ul",{},[570,2217,2218,2221],{},[2195,2219,2220],{"href":193},"Adapters Overview"," - Available built-in adapters",[570,2223,2224,2226],{},[2195,2225,242],{"href":243}," - Build your own drain function",[570,2228,2229,2231],{},[2195,2230,91],{"href":92}," - Security and production tips",[2233,2234,2235],"style",{},"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .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":297,"searchDepth":339,"depth":339,"links":2237},[2238,2239,2240,2243,2244,2245,2246,2247,2248],{"id":289,"depth":339,"text":20},{"id":564,"depth":339,"text":565},{"id":610,"depth":339,"text":76,"children":2241},[2242],{"id":1032,"depth":360,"text":1033},{"id":1182,"depth":339,"text":1183},{"id":1241,"depth":339,"text":1242},{"id":1312,"depth":339,"text":1313},{"id":1610,"depth":339,"text":1611},{"id":1947,"depth":339,"text":1948},{"id":2211,"depth":339,"text":2212},"Batch events, retry on failure, and protect against buffer overflow with the shared drain pipeline. Supports fan-out to multiple adapters.","md",[2252,2254],{"label":2220,"icon":195,"to":193,"color":2191,"variant":2253},"subtle",{"label":242,"icon":245,"to":243,"color":2191,"variant":2253},{},{"title":197,"icon":200},{"title":278,"description":2249},"kzGjiSSKJaUXNamW79sybcz4Z3e4nKgB4DXnh-bHr8k",[2260,2262],{"title":36,"path":193,"stem":194,"description":2261,"icon":195,"children":-1},"Send your logs to external services with evlog adapters. Built-in support for popular observability platforms and custom destinations.",{"title":202,"path":203,"stem":204,"description":2263,"icon":205,"children":-1},"Framework-agnostic browser log transport for sending client-side logs to your server via fetch or sendBeacon. Works with any frontend stack.",1775288557598]