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