[{"data":1,"prerenderedAt":1642},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-vite-plugin":297,"-core-concepts-vite-plugin-surround":1637},[4,30,70,115,203,267,283],{"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,65],{"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,"icon":69},"Better Auth Integration","\u002Flogging\u002Fbetter-auth","2.logging\u002F6.better-auth","i-simple-icons-betterauth",{"title":71,"path":72,"stem":73,"children":74,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[75,80,85,90,95,100,105,110],{"title":76,"path":77,"stem":78,"icon":79},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":81,"path":82,"stem":83,"icon":84},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":86,"path":87,"stem":88,"icon":89},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":91,"path":92,"stem":93,"icon":94},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":96,"path":97,"stem":98,"icon":99},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices","i-lucide-shield-check",{"title":101,"path":102,"stem":103,"icon":104},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":106,"path":107,"stem":108,"icon":109},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":111,"path":112,"stem":113,"icon":114},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":116,"path":117,"stem":118,"children":119,"page":29},"Frameworks","\u002Fframeworks","4.frameworks",[120,124,129,134,139,144,149,154,159,164,169,174,179,184,188,193,198],{"title":36,"path":121,"stem":122,"icon":123},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":125,"path":126,"stem":127,"icon":128},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":130,"path":131,"stem":132,"icon":133},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":135,"path":136,"stem":137,"icon":138},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":140,"path":141,"stem":142,"icon":143},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":145,"path":146,"stem":147,"icon":148},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":150,"path":151,"stem":152,"icon":153},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":155,"path":156,"stem":157,"icon":158},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":160,"path":161,"stem":162,"icon":163},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":165,"path":166,"stem":167,"icon":168},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":170,"path":171,"stem":172,"icon":173},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":175,"path":176,"stem":177,"icon":178},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":180,"path":181,"stem":182,"icon":183},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":185,"path":186,"stem":187,"icon":94},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":189,"path":190,"stem":191,"icon":192},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":194,"path":195,"stem":196,"icon":197},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F15.custom-integration","i-lucide-puzzle",{"title":199,"path":200,"stem":201,"icon":202},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":204,"path":205,"stem":206,"children":207,"page":29},"Adapters","\u002Fadapters","5.adapters",[208,212,217,222,227,232,237,242,247,252,257,262],{"title":36,"path":209,"stem":210,"icon":211},"\u002Fadapters\u002Foverview","5.adapters\u002F1.overview","i-custom-plug",{"title":213,"path":214,"stem":215,"icon":216},"Custom Adapters","\u002Fadapters\u002Fcustom","5.adapters\u002F10.custom","i-lucide-code",{"title":218,"path":219,"stem":220,"icon":221},"Pipeline","\u002Fadapters\u002Fpipeline","5.adapters\u002F11.pipeline","i-lucide-workflow",{"title":223,"path":224,"stem":225,"icon":226},"HTTP","\u002Fadapters\u002Fhttp","5.adapters\u002F12.http","i-lucide-globe",{"title":228,"path":229,"stem":230,"icon":231},"Axiom","\u002Fadapters\u002Faxiom","5.adapters\u002F2.axiom","i-custom-axiom",{"title":233,"path":234,"stem":235,"icon":236},"OTLP","\u002Fadapters\u002Fotlp","5.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":238,"path":239,"stem":240,"icon":241},"PostHog","\u002Fadapters\u002Fposthog","5.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":243,"path":244,"stem":245,"icon":246},"Sentry","\u002Fadapters\u002Fsentry","5.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":248,"path":249,"stem":250,"icon":251},"Better Stack","\u002Fadapters\u002Fbetter-stack","5.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":253,"path":254,"stem":255,"icon":256},"File System","\u002Fadapters\u002Ffs","5.adapters\u002F7.fs","i-lucide-hard-drive",{"title":258,"path":259,"stem":260,"icon":261},"Datadog","\u002Fadapters\u002Fdatadog","5.adapters\u002F8.datadog","i-simple-icons-datadog",{"title":263,"path":264,"stem":265,"icon":266},"HyperDX","\u002Fadapters\u002Fhyperdx","5.adapters\u002F9.hyperdx","i-custom-hyperdx",{"title":268,"path":269,"stem":270,"children":271,"page":29},"Enrichers","\u002Fenrichers","6.enrichers",[272,275,279],{"title":36,"path":273,"stem":274,"icon":28},"\u002Fenrichers\u002Foverview","6.enrichers\u002F1.overview",{"title":276,"path":277,"stem":278,"icon":197},"Built-in","\u002Fenrichers\u002Fbuilt-in","6.enrichers\u002F2.built-in",{"title":280,"path":281,"stem":282,"icon":216},"Custom","\u002Fenrichers\u002Fcustom","6.enrichers\u002F3.custom",{"title":284,"path":285,"stem":286,"children":287,"page":29},"NuxtHub","\u002Fnuxthub","7.nuxthub",[288,292],{"title":36,"path":289,"stem":290,"icon":291},"\u002Fnuxthub\u002Foverview","7.nuxthub\u002F1.overview","i-lucide-database",{"title":293,"path":294,"stem":295,"icon":296},"Retention","\u002Fnuxthub\u002Fretention","7.nuxthub\u002F2.retention","i-lucide-clock",{"id":298,"title":106,"body":299,"description":1624,"extension":1625,"links":1626,"meta":1633,"navigation":1634,"path":107,"seo":1635,"stem":108,"__hash__":1636},"docs\u002F3.core-concepts\u002F6.vite-plugin.md",{"type":300,"value":301,"toc":1607},"minimark",[302,311,332,336,341,367,374,539,542,560,564,568,590,718,739,743,749,821,832,836,843,900,903,949,952,1005,1009,1021,1065,1068,1087,1108,1112,1130,1231,1234,1443,1447,1458,1581,1585,1603],[303,304,305,306,310],"p",{},"The ",[307,308,309],"code",{},"evlog\u002Fvite"," plugin adds build-time DX features to any Vite-based project. It works with SvelteKit, Hono, Express, Fastify, Elysia, and any framework using Vite as its build tool.",[312,313,315,319,320,323,324,327,328,331],"callout",{"color":314,"icon":13},"info",[316,317,318],"strong",{},"Nuxt users",": These features are already integrated into the ",[307,321,322],{},"evlog\u002Fnuxt"," module via ",[307,325,326],{},"strip"," and ",[307,329,330],{},"sourceLocation"," options. You don't need to install the Vite plugin separately.",[333,334,20],"h2",{"id":335},"quick-start",[337,338,340],"h3",{"id":339},"_1-install","1. Install",[342,343,349],"pre",{"className":344,"code":345,"filename":346,"language":347,"meta":348,"style":348},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bun add evlog\n","Terminal","bash","",[307,350,351],{"__ignoreMap":348},[352,353,356,360,364],"span",{"class":354,"line":355},"line",1,[352,357,359],{"class":358},"sBMFI","bun",[352,361,363],{"class":362},"sfazB"," add",[352,365,366],{"class":362}," evlog\n",[337,368,370,371],{"id":369},"_2-add-to-viteconfigts","2. Add to ",[307,372,373],{},"vite.config.ts",[342,375,379],{"className":376,"code":377,"filename":373,"language":378,"meta":348,"style":348},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineConfig } from 'vite'\nimport evlog from 'evlog\u002Fvite'\n\nexport default defineConfig({\n  plugins: [\n    evlog({\n      service: 'my-api',\n      environment: 'production',\n    }),\n  ],\n})\n","typescript",[307,380,381,410,427,434,452,465,475,494,511,522,530],{"__ignoreMap":348},[352,382,383,387,391,395,398,401,404,407],{"class":354,"line":355},[352,384,386],{"class":385},"s7zQu","import",[352,388,390],{"class":389},"sMK4o"," {",[352,392,394],{"class":393},"sTEyZ"," defineConfig",[352,396,397],{"class":389}," }",[352,399,400],{"class":385}," from",[352,402,403],{"class":389}," '",[352,405,406],{"class":362},"vite",[352,408,409],{"class":389},"'\n",[352,411,413,415,418,421,423,425],{"class":354,"line":412},2,[352,414,386],{"class":385},[352,416,417],{"class":393}," evlog ",[352,419,420],{"class":385},"from",[352,422,403],{"class":389},[352,424,309],{"class":362},[352,426,409],{"class":389},[352,428,430],{"class":354,"line":429},3,[352,431,433],{"emptyLinePlaceholder":432},true,"\n",[352,435,437,440,443,446,449],{"class":354,"line":436},4,[352,438,439],{"class":385},"export",[352,441,442],{"class":385}," default",[352,444,394],{"class":445},"s2Zo4",[352,447,448],{"class":393},"(",[352,450,451],{"class":389},"{\n",[352,453,455,459,462],{"class":354,"line":454},5,[352,456,458],{"class":457},"swJcz","  plugins",[352,460,461],{"class":389},":",[352,463,464],{"class":393}," [\n",[352,466,468,471,473],{"class":354,"line":467},6,[352,469,470],{"class":445},"    evlog",[352,472,448],{"class":393},[352,474,451],{"class":389},[352,476,478,481,483,485,488,491],{"class":354,"line":477},7,[352,479,480],{"class":457},"      service",[352,482,461],{"class":389},[352,484,403],{"class":389},[352,486,487],{"class":362},"my-api",[352,489,490],{"class":389},"'",[352,492,493],{"class":389},",\n",[352,495,497,500,502,504,507,509],{"class":354,"line":496},8,[352,498,499],{"class":457},"      environment",[352,501,461],{"class":389},[352,503,403],{"class":389},[352,505,506],{"class":362},"production",[352,508,490],{"class":389},[352,510,493],{"class":389},[352,512,514,517,520],{"class":354,"line":513},9,[352,515,516],{"class":389},"    }",[352,518,519],{"class":393},")",[352,521,493],{"class":389},[352,523,525,528],{"class":354,"line":524},10,[352,526,527],{"class":393},"  ]",[352,529,493],{"class":389},[352,531,533,536],{"class":354,"line":532},11,[352,534,535],{"class":389},"}",[352,537,538],{"class":393},")\n",[303,540,541],{},"That's it. The plugin automatically:",[543,544,545,553],"ul",{},[546,547,548,549,552],"li",{},"Initializes the logger at compile time (no ",[307,550,551],{},"initLogger()"," call needed)",[546,554,555,556,559],{},"Strips ",[307,557,558],{},"log.debug()"," calls from production builds",[333,561,563],{"id":562},"features","Features",[337,565,567],{"id":566},"auto-initialization","Auto-initialization",[303,569,570,571,574,575,578,579,582,583,586,587,589],{},"The plugin injects logger configuration at compile time via Vite's ",[307,572,573],{},"define"," hook. Your code can use ",[307,576,577],{},"log",", ",[307,580,581],{},"createLogger()",", and ",[307,584,585],{},"createRequestLogger()"," immediately, no ",[307,588,551],{}," call required.",[342,591,594],{"className":376,"code":592,"filename":593,"language":378,"meta":348,"style":348},"\u002F\u002F Before (manual setup)\nimport { initLogger, createLogger } from 'evlog'\ninitLogger({ env: { service: 'my-api' } })\nconst log = createLogger()\n\n\u002F\u002F After (with Vite plugin)\nimport { createLogger } from 'evlog'\nconst log = createLogger()\n","logger-setup.ts",[307,595,596,602,628,662,679,683,688,706],{"__ignoreMap":348},[352,597,598],{"class":354,"line":355},[352,599,601],{"class":600},"sHwdD","\u002F\u002F Before (manual setup)\n",[352,603,604,606,608,611,614,617,619,621,623,626],{"class":354,"line":412},[352,605,386],{"class":385},[352,607,390],{"class":389},[352,609,610],{"class":393}," initLogger",[352,612,613],{"class":389},",",[352,615,616],{"class":393}," createLogger",[352,618,397],{"class":389},[352,620,400],{"class":385},[352,622,403],{"class":389},[352,624,625],{"class":362},"evlog",[352,627,409],{"class":389},[352,629,630,633,635,638,641,643,645,648,650,652,654,656,658,660],{"class":354,"line":429},[352,631,632],{"class":445},"initLogger",[352,634,448],{"class":393},[352,636,637],{"class":389},"{",[352,639,640],{"class":457}," env",[352,642,461],{"class":389},[352,644,390],{"class":389},[352,646,647],{"class":457}," service",[352,649,461],{"class":389},[352,651,403],{"class":389},[352,653,487],{"class":362},[352,655,490],{"class":389},[352,657,397],{"class":389},[352,659,397],{"class":389},[352,661,538],{"class":393},[352,663,664,668,671,674,676],{"class":354,"line":436},[352,665,667],{"class":666},"spNyl","const",[352,669,670],{"class":393}," log ",[352,672,673],{"class":389},"=",[352,675,616],{"class":445},[352,677,678],{"class":393},"()\n",[352,680,681],{"class":354,"line":454},[352,682,433],{"emptyLinePlaceholder":432},[352,684,685],{"class":354,"line":467},[352,686,687],{"class":600},"\u002F\u002F After (with Vite plugin)\n",[352,689,690,692,694,696,698,700,702,704],{"class":354,"line":477},[352,691,386],{"class":385},[352,693,390],{"class":389},[352,695,616],{"class":393},[352,697,397],{"class":389},[352,699,400],{"class":385},[352,701,403],{"class":389},[352,703,625],{"class":362},[352,705,409],{"class":389},[352,707,708,710,712,714,716],{"class":354,"line":496},[352,709,667],{"class":666},[352,711,670],{"class":393},[352,713,673],{"class":389},[352,715,616],{"class":445},[352,717,678],{"class":393},[303,719,305,720,578,723,578,726,578,729,578,732,582,735,738],{},[307,721,722],{},"service",[307,724,725],{},"environment",[307,727,728],{},"pretty",[307,730,731],{},"silent",[307,733,734],{},"enabled",[307,736,737],{},"sampling"," options are serialized and injected at build time.",[337,740,742],{"id":741},"debug-stripping","Debug stripping",[303,744,745,746,748],{},"By default, all ",[307,747,558],{}," calls are removed from production builds. This is a compile-time transformation, the calls are completely eliminated from the output, not just silenced.",[342,750,752],{"className":376,"code":751,"filename":373,"language":378,"meta":348,"style":348},"evlog({\n  service: 'my-api',\n  \u002F\u002F Default: strip debug logs in production builds\n  \u002F\u002F strip: ['debug'],\n\n  \u002F\u002F Strip debug and info in production:\n  \u002F\u002F strip: ['debug', 'info'],\n\n  \u002F\u002F Disable stripping:\n  \u002F\u002F strip: [],\n})\n",[307,753,754,762,777,782,787,791,796,801,805,810,815],{"__ignoreMap":348},[352,755,756,758,760],{"class":354,"line":355},[352,757,625],{"class":445},[352,759,448],{"class":393},[352,761,451],{"class":389},[352,763,764,767,769,771,773,775],{"class":354,"line":412},[352,765,766],{"class":457},"  service",[352,768,461],{"class":389},[352,770,403],{"class":389},[352,772,487],{"class":362},[352,774,490],{"class":389},[352,776,493],{"class":389},[352,778,779],{"class":354,"line":429},[352,780,781],{"class":600},"  \u002F\u002F Default: strip debug logs in production builds\n",[352,783,784],{"class":354,"line":436},[352,785,786],{"class":600},"  \u002F\u002F strip: ['debug'],\n",[352,788,789],{"class":354,"line":454},[352,790,433],{"emptyLinePlaceholder":432},[352,792,793],{"class":354,"line":467},[352,794,795],{"class":600},"  \u002F\u002F Strip debug and info in production:\n",[352,797,798],{"class":354,"line":477},[352,799,800],{"class":600},"  \u002F\u002F strip: ['debug', 'info'],\n",[352,802,803],{"class":354,"line":496},[352,804,433],{"emptyLinePlaceholder":432},[352,806,807],{"class":354,"line":513},[352,808,809],{"class":600},"  \u002F\u002F Disable stripping:\n",[352,811,812],{"class":354,"line":524},[352,813,814],{"class":600},"  \u002F\u002F strip: [],\n",[352,816,817,819],{"class":354,"line":532},[352,818,535],{"class":389},[352,820,538],{"class":393},[303,822,823,824,827,828,831],{},"Stripping only activates during ",[307,825,826],{},"vite build"," (not ",[307,829,830],{},"vite dev",").",[337,833,835],{"id":834},"source-location-injection","Source location injection",[303,837,838,839,842],{},"When enabled, the plugin injects ",[307,840,841],{},"__source: 'file:line'"," into object-form log calls. This tells you exactly which file and line produced each log entry.",[342,844,846],{"className":376,"code":845,"filename":373,"language":378,"meta":348,"style":348},"evlog({\n  service: 'my-api',\n  sourceLocation: true,      \u002F\u002F Always inject\n  \u002F\u002F sourceLocation: 'dev',  \u002F\u002F Only in development\n})\n",[307,847,848,856,870,886,894],{"__ignoreMap":348},[352,849,850,852,854],{"class":354,"line":355},[352,851,625],{"class":445},[352,853,448],{"class":393},[352,855,451],{"class":389},[352,857,858,860,862,864,866,868],{"class":354,"line":412},[352,859,766],{"class":457},[352,861,461],{"class":389},[352,863,403],{"class":389},[352,865,487],{"class":362},[352,867,490],{"class":389},[352,869,493],{"class":389},[352,871,872,875,877,881,883],{"class":354,"line":429},[352,873,874],{"class":457},"  sourceLocation",[352,876,461],{"class":389},[352,878,880],{"class":879},"sfNiH"," true",[352,882,613],{"class":389},[352,884,885],{"class":600},"      \u002F\u002F Always inject\n",[352,887,888,891],{"class":354,"line":436},[352,889,890],{"class":600},"  \u002F\u002F sourceLocation: 'dev',",[352,892,893],{"class":600},"  \u002F\u002F Only in development\n",[352,895,896,898],{"class":354,"line":454},[352,897,535],{"class":389},[352,899,538],{"class":393},[303,901,902],{},"Before transform:",[342,904,907],{"className":376,"code":905,"filename":906,"language":378,"meta":348,"style":348},"log.info({ action: 'checkout', total: 99 })\n","src\u002Fcheckout.ts",[307,908,909],{"__ignoreMap":348},[352,910,911,913,916,918,920,922,925,927,929,932,934,936,939,941,945,947],{"class":354,"line":355},[352,912,577],{"class":393},[352,914,915],{"class":389},".",[352,917,314],{"class":445},[352,919,448],{"class":393},[352,921,637],{"class":389},[352,923,924],{"class":457}," action",[352,926,461],{"class":389},[352,928,403],{"class":389},[352,930,931],{"class":362},"checkout",[352,933,490],{"class":389},[352,935,613],{"class":389},[352,937,938],{"class":457}," total",[352,940,461],{"class":389},[352,942,944],{"class":943},"sbssI"," 99",[352,946,397],{"class":389},[352,948,538],{"class":393},[303,950,951],{},"After transform:",[342,953,955],{"className":376,"code":954,"filename":906,"language":378,"meta":348,"style":348},"log.info({ action: 'checkout', total: 99, __source: 'src\u002Fcheckout.ts:42' })\n",[307,956,957],{"__ignoreMap":348},[352,958,959,961,963,965,967,969,971,973,975,977,979,981,983,985,987,989,992,994,996,999,1001,1003],{"class":354,"line":355},[352,960,577],{"class":393},[352,962,915],{"class":389},[352,964,314],{"class":445},[352,966,448],{"class":393},[352,968,637],{"class":389},[352,970,924],{"class":457},[352,972,461],{"class":389},[352,974,403],{"class":389},[352,976,931],{"class":362},[352,978,490],{"class":389},[352,980,613],{"class":389},[352,982,938],{"class":457},[352,984,461],{"class":389},[352,986,944],{"class":943},[352,988,613],{"class":389},[352,990,991],{"class":457}," __source",[352,993,461],{"class":389},[352,995,403],{"class":389},[352,997,998],{"class":362},"src\u002Fcheckout.ts:42",[352,1000,490],{"class":389},[352,1002,397],{"class":389},[352,1004,538],{"class":393},[337,1006,1008],{"id":1007},"auto-imports-opt-in","Auto-imports (opt-in)",[303,1010,1011,1012,578,1014,578,1017,1020],{},"Automatically detect and import evlog symbols (",[307,1013,577],{},[307,1015,1016],{},"createEvlogError",[307,1018,1019],{},"parseError",", etc.) without manual import statements. Disabled by default.",[342,1022,1024],{"className":376,"code":1023,"filename":373,"language":378,"meta":348,"style":348},"evlog({\n  service: 'my-api',\n  autoImports: true,\n})\n",[307,1025,1026,1034,1048,1059],{"__ignoreMap":348},[352,1027,1028,1030,1032],{"class":354,"line":355},[352,1029,625],{"class":445},[352,1031,448],{"class":393},[352,1033,451],{"class":389},[352,1035,1036,1038,1040,1042,1044,1046],{"class":354,"line":412},[352,1037,766],{"class":457},[352,1039,461],{"class":389},[352,1041,403],{"class":389},[352,1043,487],{"class":362},[352,1045,490],{"class":389},[352,1047,493],{"class":389},[352,1049,1050,1053,1055,1057],{"class":354,"line":429},[352,1051,1052],{"class":457},"  autoImports",[352,1054,461],{"class":389},[352,1056,880],{"class":879},[352,1058,493],{"class":389},[352,1060,1061,1063],{"class":354,"line":436},[352,1062,535],{"class":389},[352,1064,538],{"class":393},[303,1066,1067],{},"When enabled, the plugin:",[1069,1070,1071,1074,1080],"ol",{},[546,1072,1073],{},"Scans your code for evlog symbols",[546,1075,1076,1077,1079],{},"Adds the correct ",[307,1078,386],{}," statements automatically",[546,1081,1082,1083,1086],{},"Generates a ",[307,1084,1085],{},".d.ts"," file for TypeScript support",[312,1088,1091,1092,1094,1095,1098,1099,1101,1102,1104,1105,1107],{"color":1089,"icon":1090},"amber","i-lucide-triangle-alert","The auto-imported error constructor is ",[307,1093,1016],{},", not ",[307,1096,1097],{},"createError",". This avoids conflicts with framework-native ",[307,1100,1097],{}," (Nuxt, Nitro, h3). The standalone ",[307,1103,1097],{}," from ",[307,1106,625],{}," is still available via explicit import.",[337,1109,1111],{"id":1110},"client-side-injection","Client-side injection",[303,1113,1114,1115,1118,1119,1122,1123,578,1126,1129],{},"When the ",[307,1116,1117],{},"client"," option is provided, the plugin injects a ",[307,1120,1121],{},"\u003Cscript>"," tag into HTML pages that initializes the client-side logger. This enables ",[307,1124,1125],{},"log.info()",[307,1127,1128],{},"log.error()",", etc. in browser code.",[342,1131,1133],{"className":376,"code":1132,"filename":373,"language":378,"meta":348,"style":348},"evlog({\n  service: 'my-api',\n  client: {\n    console: false,\n    transport: {\n      enabled: true,\n      endpoint: '\u002Fapi\u002F_evlog\u002Fingest',\n    },\n  },\n})\n",[307,1134,1135,1143,1157,1167,1179,1188,1199,1215,1220,1225],{"__ignoreMap":348},[352,1136,1137,1139,1141],{"class":354,"line":355},[352,1138,625],{"class":445},[352,1140,448],{"class":393},[352,1142,451],{"class":389},[352,1144,1145,1147,1149,1151,1153,1155],{"class":354,"line":412},[352,1146,766],{"class":457},[352,1148,461],{"class":389},[352,1150,403],{"class":389},[352,1152,487],{"class":362},[352,1154,490],{"class":389},[352,1156,493],{"class":389},[352,1158,1159,1162,1164],{"class":354,"line":429},[352,1160,1161],{"class":457},"  client",[352,1163,461],{"class":389},[352,1165,1166],{"class":389}," {\n",[352,1168,1169,1172,1174,1177],{"class":354,"line":436},[352,1170,1171],{"class":457},"    console",[352,1173,461],{"class":389},[352,1175,1176],{"class":879}," false",[352,1178,493],{"class":389},[352,1180,1181,1184,1186],{"class":354,"line":454},[352,1182,1183],{"class":457},"    transport",[352,1185,461],{"class":389},[352,1187,1166],{"class":389},[352,1189,1190,1193,1195,1197],{"class":354,"line":467},[352,1191,1192],{"class":457},"      enabled",[352,1194,461],{"class":389},[352,1196,880],{"class":879},[352,1198,493],{"class":389},[352,1200,1201,1204,1206,1208,1211,1213],{"class":354,"line":477},[352,1202,1203],{"class":457},"      endpoint",[352,1205,461],{"class":389},[352,1207,403],{"class":389},[352,1209,1210],{"class":362},"\u002Fapi\u002F_evlog\u002Fingest",[352,1212,490],{"class":389},[352,1214,493],{"class":389},[352,1216,1217],{"class":354,"line":496},[352,1218,1219],{"class":389},"    },\n",[352,1221,1222],{"class":354,"line":513},[352,1223,1224],{"class":389},"  },\n",[352,1226,1227,1229],{"class":354,"line":524},[352,1228,535],{"class":389},[352,1230,538],{"class":393},[333,1232,81],{"id":1233},"configuration",[1235,1236,1237,1256],"table",{},[1238,1239,1240],"thead",{},[1241,1242,1243,1247,1250,1253],"tr",{},[1244,1245,1246],"th",{},"Option",[1244,1248,1249],{},"Type",[1244,1251,1252],{},"Default",[1244,1254,1255],{},"Description",[1257,1258,1259,1279,1295,1315,1333,1350,1369,1387,1405,1428],"tbody",{},[1241,1260,1261,1266,1271,1276],{},[1262,1263,1264],"td",{},[307,1265,722],{},[1262,1267,1268],{},[307,1269,1270],{},"string",[1262,1272,1273],{},[307,1274,1275],{},"'app'",[1262,1277,1278],{},"Service name in logs",[1241,1280,1281,1285,1289,1292],{},[1262,1282,1283],{},[307,1284,725],{},[1262,1286,1287],{},[307,1288,1270],{},[1262,1290,1291],{},"Auto-detected",[1262,1293,1294],{},"Environment name",[1241,1296,1297,1301,1306,1312],{},[1262,1298,1299],{},[307,1300,728],{},[1262,1302,1303],{},[307,1304,1305],{},"boolean",[1262,1307,1308,1311],{},[307,1309,1310],{},"true"," in dev",[1262,1313,1314],{},"Pretty print logs",[1241,1316,1317,1321,1325,1330],{},[1262,1318,1319],{},[307,1320,731],{},[1262,1322,1323],{},[307,1324,1305],{},[1262,1326,1327],{},[307,1328,1329],{},"false",[1262,1331,1332],{},"Suppress console output",[1241,1334,1335,1339,1343,1347],{},[1262,1336,1337],{},[307,1338,734],{},[1262,1340,1341],{},[307,1342,1305],{},[1262,1344,1345],{},[307,1346,1310],{},[1262,1348,1349],{},"Enable\u002Fdisable all logging",[1241,1351,1352,1356,1361,1366],{},[1262,1353,1354],{},[307,1355,326],{},[1262,1357,1358],{},[307,1359,1360],{},"LogLevel[]",[1262,1362,1363],{},[307,1364,1365],{},"['debug']",[1262,1367,1368],{},"Log levels to remove from production builds",[1241,1370,1371,1375,1380,1384],{},[1262,1372,1373],{},[307,1374,330],{},[1262,1376,1377],{},[307,1378,1379],{},"boolean | 'dev'",[1262,1381,1382],{},[307,1383,1329],{},[1262,1385,1386],{},"Inject source file:line into log calls",[1241,1388,1389,1394,1398,1402],{},[1262,1390,1391],{},[307,1392,1393],{},"autoImports",[1262,1395,1396],{},[307,1397,1305],{},[1262,1399,1400],{},[307,1401,1329],{},[1262,1403,1404],{},"Auto-import evlog symbols",[1241,1406,1407,1411,1416,1419],{},[1262,1408,1409],{},[307,1410,1117],{},[1262,1412,1413],{},[307,1414,1415],{},"object",[1262,1417,1418],{},"—",[1262,1420,1421,1422,578,1425,519],{},"Client-side injection config (",[307,1423,1424],{},"console",[307,1426,1427],{},"transport",[1241,1429,1430,1434,1438,1440],{},[1262,1431,1432],{},[307,1433,737],{},[1262,1435,1436],{},[307,1437,1415],{},[1262,1439,1418],{},[1262,1441,1442],{},"Head\u002Ftail sampling rates",[333,1444,1446],{"id":1445},"nuxt-integration","Nuxt Integration",[303,1448,1449,1450,327,1452,1454,1455,461],{},"The Nuxt module exposes ",[307,1451,326],{},[307,1453,330],{}," directly in ",[307,1456,1457],{},"nuxt.config.ts",[342,1459,1461],{"className":376,"code":1460,"filename":1457,"language":378,"meta":348,"style":348},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: { service: 'my-app' },\n    strip: ['debug'],           \u002F\u002F Default\n    sourceLocation: 'dev',      \u002F\u002F Inject in dev only\n  },\n})\n",[307,1462,1463,1476,1497,1506,1529,1552,1571,1575],{"__ignoreMap":348},[352,1464,1465,1467,1469,1472,1474],{"class":354,"line":355},[352,1466,439],{"class":385},[352,1468,442],{"class":385},[352,1470,1471],{"class":445}," defineNuxtConfig",[352,1473,448],{"class":393},[352,1475,451],{"class":389},[352,1477,1478,1481,1483,1486,1488,1490,1492,1495],{"class":354,"line":412},[352,1479,1480],{"class":457},"  modules",[352,1482,461],{"class":389},[352,1484,1485],{"class":393}," [",[352,1487,490],{"class":389},[352,1489,322],{"class":362},[352,1491,490],{"class":389},[352,1493,1494],{"class":393},"]",[352,1496,493],{"class":389},[352,1498,1499,1502,1504],{"class":354,"line":429},[352,1500,1501],{"class":457},"  evlog",[352,1503,461],{"class":389},[352,1505,1166],{"class":389},[352,1507,1508,1511,1513,1515,1517,1519,1521,1524,1526],{"class":354,"line":436},[352,1509,1510],{"class":457},"    env",[352,1512,461],{"class":389},[352,1514,390],{"class":389},[352,1516,647],{"class":457},[352,1518,461],{"class":389},[352,1520,403],{"class":389},[352,1522,1523],{"class":362},"my-app",[352,1525,490],{"class":389},[352,1527,1528],{"class":389}," },\n",[352,1530,1531,1534,1536,1538,1540,1543,1545,1547,1549],{"class":354,"line":454},[352,1532,1533],{"class":457},"    strip",[352,1535,461],{"class":389},[352,1537,1485],{"class":393},[352,1539,490],{"class":389},[352,1541,1542],{"class":362},"debug",[352,1544,490],{"class":389},[352,1546,1494],{"class":393},[352,1548,613],{"class":389},[352,1550,1551],{"class":600},"           \u002F\u002F Default\n",[352,1553,1554,1557,1559,1561,1564,1566,1568],{"class":354,"line":467},[352,1555,1556],{"class":457},"    sourceLocation",[352,1558,461],{"class":389},[352,1560,403],{"class":389},[352,1562,1563],{"class":362},"dev",[352,1565,490],{"class":389},[352,1567,613],{"class":389},[352,1569,1570],{"class":600},"      \u002F\u002F Inject in dev only\n",[352,1572,1573],{"class":354,"line":477},[352,1574,1224],{"class":389},[352,1576,1577,1579],{"class":354,"line":496},[352,1578,535],{"class":389},[352,1580,538],{"class":393},[333,1582,1584],{"id":1583},"vite-compatibility","Vite Compatibility",[303,1586,1587,1588,1591,1592,1595,1596,327,1599,1602],{},"The plugin supports ",[316,1589,1590],{},"Vite 7+"," and is optimized for ",[316,1593,1594],{},"Vite 8"," (Rolldown). On Vite 8, transform hooks use Rolldown-native ",[307,1597,1598],{},"filter",[307,1600,1601],{},"moduleType"," for maximum performance, non-matching files are skipped entirely on the Rust side without crossing the JS bridge.",[1604,1605,1606],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .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 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}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":348,"searchDepth":412,"depth":412,"links":1608},[1609,1614,1621,1622,1623],{"id":335,"depth":412,"text":20,"children":1610},[1611,1612],{"id":339,"depth":429,"text":340},{"id":369,"depth":429,"text":1613},"2. Add to vite.config.ts",{"id":562,"depth":412,"text":563,"children":1615},[1616,1617,1618,1619,1620],{"id":566,"depth":429,"text":567},{"id":741,"depth":429,"text":742},{"id":834,"depth":429,"text":835},{"id":1007,"depth":429,"text":1008},{"id":1110,"depth":429,"text":1111},{"id":1233,"depth":412,"text":81},{"id":1445,"depth":412,"text":1446},{"id":1583,"depth":412,"text":1584},"Build-time optimizations for any Vite-based framework. Auto-init, debug stripping, source location injection, and optional auto-imports.","md",[1627],{"label":1628,"icon":1629,"to":1630,"color":1631,"variant":1632},"Source Code","i-simple-icons-github","https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog\u002Ftree\u002Fmain\u002Fpackages\u002Fevlog\u002Fsrc\u002Fvite","neutral","subtle",{},{"icon":109},{"title":106,"description":1624},"4FFd_h3Mb6mguh9R2d0HNdUZCLC1NHW6Bi8nj0QgYEE",[1638,1640],{"title":101,"path":102,"stem":103,"description":1639,"icon":104,"children":-1},"evlog adds ~3µs per request. Faster than pino, consola, and winston in most scenarios while emitting richer, more useful events.",{"title":111,"path":112,"stem":113,"description":1641,"icon":114,"children":-1},"Automatically scrub PII from wide events before console output and drains. Built-in smart masking for credit cards, emails, IPs, phone numbers, JWTs, and more.",1776287857064]