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