[{"data":1,"prerenderedAt":2130},["ShallowReactive",2],{"navigation_docs":3,"-adapters-browser":263,"-adapters-browser-surround":2125},[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":2115,"extension":2116,"links":2117,"meta":2121,"navigation":2122,"path":190,"seo":2123,"stem":191,"__hash__":2124},"docs\u002F4.adapters\u002F11.browser.md","Browser Drain",{"type":267,"value":268,"toc":2095},"minimark",[269,273,277,483,487,544,548,555,569,757,763,766,971,975,981,1104,1110,1173,1177,1191,1196,1200,1203,1297,1324,1328,1334,1337,1488,1491,1635,1639,1649,2048,2061,2068,2072,2091],[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,1077],"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",[988,1078,1079,1084,1089],{},[1006,1080,1081],{},[286,1082,1083],{},"credentials",[1006,1085,1086],{},[286,1087,1088],{},"'same-origin'",[1006,1090,1091,1092,1038,1095,1038,1097,1100,1101,1103],{},"Fetch credentials mode (",[286,1093,1094],{},"'omit'",[286,1096,1088],{},[286,1098,1099],{},"'include'","). Set to ",[286,1102,1099],{}," for cross-origin endpoints",[549,1105,1107],{"id":1106},"browserlogdrainoptions",[286,1108,1109],{},"BrowserLogDrainOptions",[982,1111,1112,1122],{},[985,1113,1114],{},[988,1115,1116,1118,1120],{},[991,1117,993],{},[991,1119,996],{},[991,1121,999],{},[1001,1123,1124,1141,1156],{},[988,1125,1126,1131,1133],{},[1006,1127,1128],{},[286,1129,1130],{},"drain",[1006,1132,1013],{},[1006,1134,1135,1137,1138,1140],{},[505,1136,1018],{}," ",[286,1139,980],{}," object",[988,1142,1143,1148,1153],{},[1006,1144,1145],{},[286,1146,1147],{},"pipeline",[1006,1149,1150],{},[286,1151,1152],{},"{ batch: { size: 25, intervalMs: 2000 }, retry: { maxAttempts: 2 } }",[1006,1154,1155],{},"Pipeline configuration overrides",[988,1157,1158,1163,1167],{},[1006,1159,1160],{},[286,1161,1162],{},"autoFlush",[1006,1164,1165],{},[286,1166,1069],{},[1006,1168,1169,1170,1172],{},"Auto-register ",[286,1171,560],{}," flush listener",[274,1174,1176],{"id":1175},"sendbeacon-fallback","sendBeacon Fallback",[1178,1179,1181,1182,1184,1185,1187,1188,1190],"callout",{"color":447,"icon":1180},"i-lucide-radio","When ",[286,1183,1064],{}," is enabled (the default) and the page becomes hidden, the drain automatically switches from ",[286,1186,520],{}," to ",[286,1189,531],{},". This ensures logs are delivered even when the user closes the tab or navigates away, preventing data loss on page exit.",[270,1192,1193,1195],{},[286,1194,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,1197,1199],{"id":1198},"authentication","Authentication",[270,1201,1202],{},"Pass custom headers to protect your ingest endpoint:",[278,1204,1206],{"className":280,"code":1205,"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,1207,1208,1222,1231,1246,1255,1281,1286,1291],{"__ignoreMap":284},[289,1209,1210,1212,1214,1216,1218,1220],{"class":291,"line":292},[289,1211,361],{"class":360},[289,1213,364],{"class":303},[289,1215,367],{"class":299},[289,1217,336],{"class":370},[289,1219,373],{"class":303},[289,1221,376],{"class":299},[289,1223,1224,1226,1228],{"class":291,"line":329},[289,1225,383],{"class":382},[289,1227,386],{"class":299},[289,1229,1230],{"class":299}," {\n",[289,1232,1233,1236,1238,1240,1242,1244],{"class":291,"line":350},[289,1234,1235],{"class":382},"    endpoint",[289,1237,386],{"class":299},[289,1239,319],{"class":299},[289,1241,398],{"class":322},[289,1243,401],{"class":299},[289,1245,866],{"class":299},[289,1247,1248,1251,1253],{"class":291,"line":357},[289,1249,1250],{"class":382},"    headers",[289,1252,386],{"class":299},[289,1254,1230],{"class":299},[289,1256,1257,1260,1262,1264,1266,1268,1271,1273,1276,1279],{"class":291,"line":379},[289,1258,1259],{"class":299},"      '",[289,1261,1037],{"class":382},[289,1263,401],{"class":299},[289,1265,386],{"class":299},[289,1267,319],{"class":299},[289,1269,1270],{"class":322},"Bearer ",[289,1272,401],{"class":299},[289,1274,1275],{"class":299}," +",[289,1277,1278],{"class":303}," token",[289,1280,866],{"class":299},[289,1282,1283],{"class":291,"line":407},[289,1284,1285],{"class":299},"    },\n",[289,1287,1288],{"class":291,"line":416},[289,1289,1290],{"class":299},"  },\n",[289,1292,1293,1295],{"class":291,"line":433},[289,1294,410],{"class":299},[289,1296,413],{"class":303},[1178,1298,1300,1302,1303,1305,1306,1308,1309,1311,1312,1315,1316,1318,1319,521,1321,444],{"color":1299,"icon":144},"warning",[286,1301,1026],{}," are applied to ",[286,1304,520],{}," requests only. The ",[286,1307,1075],{}," API does not support custom headers, so when the page is hidden and ",[286,1310,1075],{}," is used, headers are not sent. If your endpoint requires authentication, consider validating via a session cookie (set ",[286,1313,1314],{},"credentials: 'include'"," for cross-origin endpoints, defaults to ",[286,1317,1088],{},") or disable ",[286,1320,1075],{},[286,1322,1323],{},"useBeacon: false",[274,1325,1327],{"id":1326},"server-endpoint","Server Endpoint",[270,1329,1330,1331,1333],{},"Your server needs a POST endpoint that accepts a ",[286,1332,542],{}," JSON body. Here are examples for common frameworks:",[549,1335,71],{"id":1336},"express",[278,1338,1341],{"className":280,"code":1339,"filename":1340,"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,1342,1343,1396,1424,1460,1465,1482],{"__ignoreMap":284},[289,1344,1345,1348,1350,1353,1355,1357,1360,1362,1364,1367,1369,1372,1375,1377,1380,1384,1386,1389,1391,1394],{"class":291,"line":292},[289,1346,1347],{"class":303},"app",[289,1349,444],{"class":299},[289,1351,1352],{"class":370},"post",[289,1354,373],{"class":303},[289,1356,401],{"class":299},[289,1358,1359],{"class":322},"\u002Fv1\u002Fingest",[289,1361,401],{"class":299},[289,1363,307],{"class":299},[289,1365,1366],{"class":303}," express",[289,1368,444],{"class":299},[289,1370,1371],{"class":370},"json",[289,1373,1374],{"class":303},"()",[289,1376,307],{"class":299},[289,1378,1379],{"class":299}," (",[289,1381,1383],{"class":1382},"sHdIc","req",[289,1385,307],{"class":299},[289,1387,1388],{"class":1382}," res",[289,1390,1042],{"class":299},[289,1392,1393],{"class":360}," =>",[289,1395,1230],{"class":299},[289,1397,1398,1401,1403,1405,1408,1411,1414,1416,1419,1422],{"class":291,"line":329},[289,1399,1400],{"class":295},"  for",[289,1402,1379],{"class":382},[289,1404,361],{"class":360},[289,1406,1407],{"class":303}," entry",[289,1409,1410],{"class":299}," of",[289,1412,1413],{"class":303}," req",[289,1415,444],{"class":299},[289,1417,1418],{"class":303},"body",[289,1420,1421],{"class":382},") ",[289,1423,376],{"class":299},[289,1425,1426,1429,1431,1433,1435,1437,1440,1442,1444,1447,1449,1452,1454,1457],{"class":291,"line":350},[289,1427,1428],{"class":303},"    console",[289,1430,444],{"class":299},[289,1432,441],{"class":370},[289,1434,373],{"class":382},[289,1436,401],{"class":299},[289,1438,1439],{"class":322},"[BROWSER]",[289,1441,401],{"class":299},[289,1443,307],{"class":299},[289,1445,1446],{"class":303}," JSON",[289,1448,444],{"class":299},[289,1450,1451],{"class":370},"stringify",[289,1453,373],{"class":382},[289,1455,1456],{"class":303},"entry",[289,1458,1459],{"class":382},"))\n",[289,1461,1462],{"class":291,"line":357},[289,1463,1464],{"class":299},"  }\n",[289,1466,1467,1470,1472,1475,1477,1480],{"class":291,"line":379},[289,1468,1469],{"class":303},"  res",[289,1471,444],{"class":299},[289,1473,1474],{"class":370},"sendStatus",[289,1476,373],{"class":382},[289,1478,1479],{"class":675},"204",[289,1481,413],{"class":382},[289,1483,1484,1486],{"class":291,"line":407},[289,1485,410],{"class":299},[289,1487,413],{"class":303},[549,1489,76],{"id":1490},"hono",[278,1492,1494],{"className":280,"code":1493,"filename":1340,"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,1495,1496,1528,1556,1574,1604,1608,1629],{"__ignoreMap":284},[289,1497,1498,1500,1502,1504,1506,1508,1510,1512,1514,1517,1519,1522,1524,1526],{"class":291,"line":292},[289,1499,1347],{"class":303},[289,1501,444],{"class":299},[289,1503,1352],{"class":370},[289,1505,373],{"class":303},[289,1507,401],{"class":299},[289,1509,1359],{"class":322},[289,1511,401],{"class":299},[289,1513,307],{"class":299},[289,1515,1516],{"class":360}," async",[289,1518,1379],{"class":299},[289,1520,1521],{"class":1382},"c",[289,1523,1042],{"class":299},[289,1525,1393],{"class":360},[289,1527,1230],{"class":299},[289,1529,1530,1533,1536,1539,1542,1545,1547,1549,1551,1553],{"class":291,"line":329},[289,1531,1532],{"class":360},"  const",[289,1534,1535],{"class":303}," body",[289,1537,1538],{"class":299}," =",[289,1540,1541],{"class":295}," await",[289,1543,1544],{"class":303}," c",[289,1546,444],{"class":299},[289,1548,1383],{"class":303},[289,1550,444],{"class":299},[289,1552,1371],{"class":370},[289,1554,1555],{"class":382},"()\n",[289,1557,1558,1560,1562,1564,1566,1568,1570,1572],{"class":291,"line":350},[289,1559,1400],{"class":295},[289,1561,1379],{"class":382},[289,1563,361],{"class":360},[289,1565,1407],{"class":303},[289,1567,1410],{"class":299},[289,1569,1535],{"class":303},[289,1571,1421],{"class":382},[289,1573,376],{"class":299},[289,1575,1576,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596,1598,1600,1602],{"class":291,"line":357},[289,1577,1428],{"class":303},[289,1579,444],{"class":299},[289,1581,441],{"class":370},[289,1583,373],{"class":382},[289,1585,401],{"class":299},[289,1587,1439],{"class":322},[289,1589,401],{"class":299},[289,1591,307],{"class":299},[289,1593,1446],{"class":303},[289,1595,444],{"class":299},[289,1597,1451],{"class":370},[289,1599,373],{"class":382},[289,1601,1456],{"class":303},[289,1603,1459],{"class":382},[289,1605,1606],{"class":291,"line":379},[289,1607,1464],{"class":299},[289,1609,1610,1613,1615,1617,1619,1621,1624,1627],{"class":291,"line":407},[289,1611,1612],{"class":295},"  return",[289,1614,1544],{"class":303},[289,1616,444],{"class":299},[289,1618,1418],{"class":370},[289,1620,373],{"class":382},[289,1622,1623],{"class":299},"null,",[289,1625,1626],{"class":675}," 204",[289,1628,413],{"class":382},[289,1630,1631,1633],{"class":291,"line":416},[289,1632,410],{"class":299},[289,1634,413],{"class":303},[274,1636,1638],{"id":1637},"full-control","Full Control",[270,1640,1641,1642,521,1645,1648],{},"Combine ",[286,1643,1644],{},"createBrowserDrain",[286,1646,1647],{},"createDrainPipeline"," for maximum flexibility:",[278,1650,1652],{"className":280,"code":1651,"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,1653,1654,1676,1696,1714,1732,1736,1756,1780,1810,1822,1840,1876,1880,1886,1891,1910,1925,1938,1945,1950,1965,1970,1998,2003,2010],{"__ignoreMap":284},[289,1655,1656,1658,1660,1662,1664,1666,1668,1670,1672,1674],{"class":291,"line":292},[289,1657,296],{"class":295},[289,1659,300],{"class":299},[289,1661,304],{"class":303},[289,1663,307],{"class":299},[289,1665,310],{"class":303},[289,1667,313],{"class":299},[289,1669,316],{"class":295},[289,1671,319],{"class":299},[289,1673,323],{"class":322},[289,1675,326],{"class":299},[289,1677,1678,1680,1682,1684,1686,1688,1690,1692,1694],{"class":291,"line":329},[289,1679,296],{"class":295},[289,1681,816],{"class":295},[289,1683,300],{"class":299},[289,1685,821],{"class":303},[289,1687,313],{"class":299},[289,1689,316],{"class":295},[289,1691,319],{"class":299},[289,1693,323],{"class":322},[289,1695,326],{"class":299},[289,1697,1698,1700,1702,1704,1706,1708,1710,1712],{"class":291,"line":350},[289,1699,296],{"class":295},[289,1701,300],{"class":299},[289,1703,779],{"class":303},[289,1705,313],{"class":299},[289,1707,316],{"class":295},[289,1709,319],{"class":299},[289,1711,345],{"class":322},[289,1713,326],{"class":299},[289,1715,1716,1718,1720,1722,1724,1726,1728,1730],{"class":291,"line":357},[289,1717,296],{"class":295},[289,1719,300],{"class":299},[289,1721,798],{"class":303},[289,1723,313],{"class":299},[289,1725,316],{"class":295},[289,1727,319],{"class":299},[289,1729,807],{"class":322},[289,1731,326],{"class":299},[289,1733,1734],{"class":291,"line":379},[289,1735,354],{"emptyLinePlaceholder":353},[289,1737,1738,1740,1742,1744,1746,1748,1750,1752,1754],{"class":291,"line":407},[289,1739,361],{"class":360},[289,1741,879],{"class":303},[289,1743,367],{"class":299},[289,1745,798],{"class":370},[289,1747,886],{"class":299},[289,1749,890],{"class":889},[289,1751,893],{"class":299},[289,1753,373],{"class":303},[289,1755,376],{"class":299},[289,1757,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778],{"class":291,"line":416},[289,1759,902],{"class":382},[289,1761,386],{"class":299},[289,1763,300],{"class":299},[289,1765,670],{"class":382},[289,1767,386],{"class":299},[289,1769,913],{"class":675},[289,1771,307],{"class":299},[289,1773,681],{"class":382},[289,1775,386],{"class":299},[289,1777,922],{"class":675},[289,1779,404],{"class":299},[289,1781,1782,1784,1786,1788,1790,1792,1794,1796,1799,1801,1803,1806,1808],{"class":291,"line":433},[289,1783,929],{"class":382},[289,1785,386],{"class":299},[289,1787,300],{"class":299},[289,1789,936],{"class":382},[289,1791,386],{"class":299},[289,1793,941],{"class":675},[289,1795,307],{"class":299},[289,1797,1798],{"class":382}," backoff",[289,1800,386],{"class":299},[289,1802,319],{"class":299},[289,1804,1805],{"class":322},"exponential",[289,1807,401],{"class":299},[289,1809,404],{"class":299},[289,1811,1812,1815,1817,1820],{"class":291,"line":438},[289,1813,1814],{"class":382},"  maxBufferSize",[289,1816,386],{"class":299},[289,1818,1819],{"class":675}," 500",[289,1821,866],{"class":299},[289,1823,1824,1827,1829,1831,1834,1836,1838],{"class":291,"line":717},[289,1825,1826],{"class":370},"  onDropped",[289,1828,386],{"class":299},[289,1830,1379],{"class":299},[289,1832,1833],{"class":1382},"events",[289,1835,1042],{"class":299},[289,1837,1393],{"class":360},[289,1839,1230],{"class":299},[289,1841,1842,1844,1846,1849,1851,1854,1857,1860,1862,1864,1867,1869,1872,1874],{"class":291,"line":946},[289,1843,1428],{"class":303},[289,1845,444],{"class":299},[289,1847,1848],{"class":370},"warn",[289,1850,373],{"class":382},[289,1852,1853],{"class":299},"`",[289,1855,1856],{"class":322},"Dropped ",[289,1858,1859],{"class":299},"${",[289,1861,1833],{"class":303},[289,1863,444],{"class":299},[289,1865,1866],{"class":303},"length",[289,1868,410],{"class":299},[289,1870,1871],{"class":322}," browser events",[289,1873,1853],{"class":299},[289,1875,413],{"class":382},[289,1877,1878],{"class":291,"line":953},[289,1879,1290],{"class":299},[289,1881,1882,1884],{"class":291,"line":958},[289,1883,410],{"class":299},[289,1885,413],{"class":303},[289,1887,1889],{"class":291,"line":1888},14,[289,1890,354],{"emptyLinePlaceholder":353},[289,1892,1894,1896,1898,1900,1902,1904,1906,1908],{"class":291,"line":1893},15,[289,1895,361],{"class":360},[289,1897,364],{"class":303},[289,1899,367],{"class":299},[289,1901,967],{"class":370},[289,1903,373],{"class":303},[289,1905,1644],{"class":370},[289,1907,373],{"class":303},[289,1909,376],{"class":299},[289,1911,1913,1915,1917,1919,1921,1923],{"class":291,"line":1912},16,[289,1914,855],{"class":382},[289,1916,386],{"class":299},[289,1918,319],{"class":299},[289,1920,398],{"class":322},[289,1922,401],{"class":299},[289,1924,866],{"class":299},[289,1926,1928,1931,1933,1936],{"class":291,"line":1927},17,[289,1929,1930],{"class":382},"  timeout",[289,1932,386],{"class":299},[289,1934,1935],{"class":675}," 3000",[289,1937,866],{"class":299},[289,1939,1941,1943],{"class":291,"line":1940},18,[289,1942,410],{"class":299},[289,1944,1459],{"class":303},[289,1946,1948],{"class":291,"line":1947},19,[289,1949,354],{"emptyLinePlaceholder":353},[289,1951,1953,1955,1957,1959,1961,1963],{"class":291,"line":1952},20,[289,1954,419],{"class":370},[289,1956,373],{"class":303},[289,1958,424],{"class":299},[289,1960,364],{"class":303},[289,1962,410],{"class":299},[289,1964,413],{"class":303},[289,1966,1968],{"class":291,"line":1967},21,[289,1969,354],{"emptyLinePlaceholder":353},[289,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989,1992,1994,1996],{"class":291,"line":1972},22,[289,1974,441],{"class":303},[289,1976,444],{"class":299},[289,1978,447],{"class":370},[289,1980,373],{"class":303},[289,1982,424],{"class":299},[289,1984,454],{"class":382},[289,1986,386],{"class":299},[289,1988,319],{"class":299},[289,1990,1991],{"class":322},"app_init",[289,1993,401],{"class":299},[289,1995,313],{"class":299},[289,1997,413],{"class":303},[289,1999,2001],{"class":291,"line":2000},23,[289,2002,354],{"emptyLinePlaceholder":353},[289,2004,2006],{"class":291,"line":2005},24,[289,2007,2009],{"class":2008},"sHwdD","\u002F\u002F Flush on page unload\n",[289,2011,2013,2016,2018,2021,2023,2025,2028,2030,2032,2035,2037,2040,2042,2045],{"class":291,"line":2012},25,[289,2014,2015],{"class":303},"window",[289,2017,444],{"class":299},[289,2019,2020],{"class":370},"addEventListener",[289,2022,373],{"class":303},[289,2024,401],{"class":299},[289,2026,2027],{"class":322},"beforeunload",[289,2029,401],{"class":299},[289,2031,307],{"class":299},[289,2033,2034],{"class":299}," ()",[289,2036,1393],{"class":360},[289,2038,2039],{"class":303}," drain",[289,2041,444],{"class":299},[289,2043,2044],{"class":370},"flush",[289,2046,2047],{"class":303},"())\n",[1178,2049,2052,2053,2060],{"color":2050,"icon":2051},"neutral","i-lucide-arrow-right","See the full ",[2054,2055,2059],"a",{"href":2056,"rel":2057},"https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Fbrowser",[2058],"nofollow","browser example"," for a working Hono server + browser page that demonstrates the complete flow end to end.",[1178,2062,2063,2064,2067],{"color":2050,"icon":232},"See the ",[2054,2065,2066],{"href":47},"Next.js guide"," for a working implementation.",[274,2069,2071],{"id":2070},"next-steps","Next Steps",[2073,2074,2075,2081,2086],"ul",{},[491,2076,2077,2080],{},[2054,2078,2079],{"href":180},"Adapters Overview"," - Available built-in adapters",[491,2082,2083,2085],{},[2054,2084,184],{"href":185}," - Batching, retry, and buffer overflow handling",[491,2087,2088,2090],{},[2054,2089,229],{"href":230}," - Build your own drain function",[2092,2093,2094],"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":2096},[2097,2098,2099,2103,2107,2108,2109,2113,2114],{"id":276,"depth":329,"text":20},{"id":485,"depth":329,"text":486},{"id":546,"depth":329,"text":547,"children":2100},[2101,2102],{"id":551,"depth":350,"text":554},{"id":759,"depth":350,"text":762},{"id":973,"depth":329,"text":974,"children":2104},[2105,2106],{"id":977,"depth":350,"text":980},{"id":1106,"depth":350,"text":1109},{"id":1175,"depth":329,"text":1176},{"id":1198,"depth":329,"text":1199},{"id":1326,"depth":329,"text":1327,"children":2110},[2111,2112],{"id":1336,"depth":350,"text":71},{"id":1490,"depth":350,"text":76},{"id":1637,"depth":329,"text":1638},{"id":2070,"depth":329,"text":2071},"Framework-agnostic browser log transport for sending client-side logs to your server via fetch or sendBeacon. Works with any frontend stack.","md",[2118,2120],{"label":2079,"icon":182,"to":180,"color":2050,"variant":2119},"subtle",{"label":184,"icon":187,"to":185,"color":2050,"variant":2119},{},{"title":189,"icon":192},{"title":265,"description":2115},"AjvY7OU1MLY-pVMsWEDB0UCUKvkku4Womf5Pgs0VJHU",[2126,2128],{"title":184,"path":185,"stem":186,"description":2127,"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":2129,"icon":197,"children":-1},"Send wide events to Axiom for powerful querying, dashboards, and alerting. Zero-config setup with environment variables and automatic batching.",1775236130046]