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