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