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