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