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