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