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