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