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