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