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