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