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