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