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