evlog 2.19.1 → 2.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/README.md +30 -1
  2. package/dist/adapters/axiom.d.mts +1 -1
  3. package/dist/adapters/axiom.mjs +2 -2
  4. package/dist/adapters/better-stack.d.mts +1 -1
  5. package/dist/adapters/better-stack.mjs +2 -2
  6. package/dist/adapters/datadog.d.mts +1 -1
  7. package/dist/adapters/datadog.mjs +2 -2
  8. package/dist/adapters/fs.d.mts +1 -1
  9. package/dist/adapters/fs.mjs +1 -1
  10. package/dist/adapters/hyperdx.d.mts +1 -1
  11. package/dist/adapters/hyperdx.mjs +1 -1
  12. package/dist/adapters/memory.d.mts +1 -1
  13. package/dist/adapters/memory.mjs +1 -1
  14. package/dist/adapters/otlp.d.mts +1 -1
  15. package/dist/adapters/otlp.mjs +2 -2
  16. package/dist/adapters/posthog.d.mts +1 -1
  17. package/dist/adapters/posthog.mjs +2 -2
  18. package/dist/adapters/sentry.d.mts +1 -1
  19. package/dist/adapters/sentry.mjs +2 -2
  20. package/dist/ai/index.d.mts +27 -10
  21. package/dist/ai/index.d.mts.map +1 -1
  22. package/dist/ai/index.mjs +80 -15
  23. package/dist/ai/index.mjs.map +1 -1
  24. package/dist/asyncStorageScope-DnF7Xk8l.mjs +81 -0
  25. package/dist/asyncStorageScope-DnF7Xk8l.mjs.map +1 -0
  26. package/dist/{audit-BQt8yAHo.mjs → audit-BXCYMjcC.mjs} +31 -93
  27. package/dist/audit-BXCYMjcC.mjs.map +1 -0
  28. package/dist/{audit-D7v6JHj0.d.mts → audit-BZrUvjfW.d.mts} +71 -53
  29. package/dist/audit-BZrUvjfW.d.mts.map +1 -0
  30. package/dist/audit-action.d.mts +2 -0
  31. package/dist/audit-action.mjs +74 -0
  32. package/dist/audit-action.mjs.map +1 -0
  33. package/dist/audit.d.mts +2 -0
  34. package/dist/audit.mjs +3 -0
  35. package/dist/better-auth/index.d.mts +1 -1
  36. package/dist/browser.d.mts +1 -1
  37. package/dist/{index-EvnrXvQM.d.mts → catalog-1cQnNxR2.d.mts} +4 -3
  38. package/dist/catalog-1cQnNxR2.d.mts.map +1 -0
  39. package/dist/catalog.d.mts +2 -0
  40. package/dist/catalog.mjs +205 -0
  41. package/dist/catalog.mjs.map +1 -0
  42. package/dist/{define-DTQpu4f6.d.mts → define-Ct2QyrE9.d.mts} +3 -3
  43. package/dist/{define-DTQpu4f6.d.mts.map → define-Ct2QyrE9.d.mts.map} +1 -1
  44. package/dist/{drain-fDb-eNwz.mjs → drain-Dl2ZJKRA.mjs} +3 -3
  45. package/dist/{drain-fDb-eNwz.mjs.map → drain-Dl2ZJKRA.mjs.map} +1 -1
  46. package/dist/elysia/index.d.mts +8 -7
  47. package/dist/elysia/index.d.mts.map +1 -1
  48. package/dist/elysia/index.mjs +11 -8
  49. package/dist/elysia/index.mjs.map +1 -1
  50. package/dist/{enrich-error-stack-next.node-Dgm_rCf5.mjs → enrich-error-stack-next.node-KB0Oap7R.mjs} +1 -1
  51. package/dist/{enrich-error-stack-next.node-Dgm_rCf5.mjs.map → enrich-error-stack-next.node-KB0Oap7R.mjs.map} +1 -1
  52. package/dist/{enricher-CBRmQw6e.d.mts → enricher-BOzt2FCi.d.mts} +2 -2
  53. package/dist/{enricher-CBRmQw6e.d.mts.map → enricher-BOzt2FCi.d.mts.map} +1 -1
  54. package/dist/enrichers.d.mts +2 -2
  55. package/dist/{error-CpghjrkY.d.mts → error-BRymuv8U.d.mts} +2 -2
  56. package/dist/{error-CpghjrkY.d.mts.map → error-BRymuv8U.d.mts.map} +1 -1
  57. package/dist/error.d.mts +1 -1
  58. package/dist/{errors-BLU4Tfpe.d.mts → errors-C7qA6CAi.d.mts} +2 -2
  59. package/dist/{errors-BLU4Tfpe.d.mts.map → errors-C7qA6CAi.d.mts.map} +1 -1
  60. package/dist/eve/index.d.mts +72 -0
  61. package/dist/eve/index.d.mts.map +1 -0
  62. package/dist/eve/index.mjs +593 -0
  63. package/dist/eve/index.mjs.map +1 -0
  64. package/dist/express/index.d.mts +4 -4
  65. package/dist/express/index.d.mts.map +1 -1
  66. package/dist/express/index.mjs +3 -3
  67. package/dist/express/index.mjs.map +1 -1
  68. package/dist/fastify/index.d.mts +4 -4
  69. package/dist/fastify/index.d.mts.map +1 -1
  70. package/dist/fastify/index.mjs +4 -2
  71. package/dist/fastify/index.mjs.map +1 -1
  72. package/dist/fork-S9gpZmF8.mjs +72 -0
  73. package/dist/fork-S9gpZmF8.mjs.map +1 -0
  74. package/dist/hono/index.d.mts +3 -3
  75. package/dist/hono/index.d.mts.map +1 -1
  76. package/dist/hono/index.mjs +3 -6
  77. package/dist/hono/index.mjs.map +1 -1
  78. package/dist/{http-ChVS9GYc.mjs → http-pKfd8UDu.mjs} +2 -2
  79. package/dist/{http-ChVS9GYc.mjs.map → http-pKfd8UDu.mjs.map} +1 -1
  80. package/dist/http.d.mts +1 -1
  81. package/dist/index.d.mts +9 -9
  82. package/dist/index.mjs +3 -203
  83. package/dist/{instrumentation-create-BrjQtSKD.d.mts → instrumentation-create-gSDk0leX.d.mts} +2 -2
  84. package/dist/{instrumentation-create-BrjQtSKD.d.mts.map → instrumentation-create-gSDk0leX.d.mts.map} +1 -1
  85. package/dist/{integration-DYp2uw8O.mjs → integration-CeL90DtN.mjs} +3 -2
  86. package/dist/{integration-DYp2uw8O.mjs.map → integration-CeL90DtN.mjs.map} +1 -1
  87. package/dist/{logger-mHIWxBhJ.d.mts → logger-CxWz7QJ3.d.mts} +7 -3
  88. package/dist/logger-CxWz7QJ3.d.mts.map +1 -0
  89. package/dist/logger.d.mts +2 -2
  90. package/dist/logger.mjs +2 -2
  91. package/dist/{fork-CgGlAaHa.mjs → middleware-Cdebyfdt.mjs} +3 -69
  92. package/dist/middleware-Cdebyfdt.mjs.map +1 -0
  93. package/dist/{middleware-B_k4Mrzg.d.mts → middleware-fbtEs6bq.d.mts} +3 -3
  94. package/dist/middleware-fbtEs6bq.d.mts.map +1 -0
  95. package/dist/nestjs/index.d.mts +5 -5
  96. package/dist/nestjs/index.d.mts.map +1 -1
  97. package/dist/nestjs/index.mjs +4 -3
  98. package/dist/nestjs/index.mjs.map +1 -1
  99. package/dist/next/client.d.mts +1 -1
  100. package/dist/next/index.d.mts +5 -5
  101. package/dist/next/index.d.mts.map +1 -1
  102. package/dist/next/index.mjs +3 -3
  103. package/dist/next/index.mjs.map +1 -1
  104. package/dist/next/instrumentation/create.d.mts +1 -1
  105. package/dist/next/instrumentation/create.mjs +3 -1
  106. package/dist/next/instrumentation/create.mjs.map +1 -1
  107. package/dist/next/instrumentation.d.mts +1 -1
  108. package/dist/next/stream.d.mts +1 -1
  109. package/dist/nitro/errorHandler.mjs +9 -4
  110. package/dist/nitro/errorHandler.mjs.map +1 -1
  111. package/dist/nitro/module.d.mts +2 -2
  112. package/dist/nitro/module.mjs +1 -1
  113. package/dist/nitro/plugin.mjs +2 -2
  114. package/dist/nitro/v3/errorHandler.d.mts +0 -10
  115. package/dist/nitro/v3/errorHandler.mjs +13 -3
  116. package/dist/nitro/v3/errorHandler.mjs.map +1 -1
  117. package/dist/nitro/v3/index.d.mts +2 -2
  118. package/dist/nitro/v3/module.d.mts +1 -1
  119. package/dist/nitro/v3/module.mjs +1 -1
  120. package/dist/nitro/v3/plugin.mjs +2 -2
  121. package/dist/nitro/v3/useLogger.d.mts +2 -2
  122. package/dist/nitro/v3/useLogger.d.mts.map +1 -1
  123. package/dist/nitro/v3/useLogger.mjs.map +1 -1
  124. package/dist/{nitro-_Hda8Deo.d.mts → nitro-CcN7HDnr.d.mts} +2 -2
  125. package/dist/{nitro-_Hda8Deo.d.mts.map → nitro-CcN7HDnr.d.mts.map} +1 -1
  126. package/dist/{nitro-ClRZLD1g.mjs → nitro-DYFCSlho.mjs} +30 -3
  127. package/dist/nitro-DYFCSlho.mjs.map +1 -0
  128. package/dist/{nitroConfigBridge-BkVWnSV3.mjs → nitroConfigBridge-lHPsE5zG.mjs} +8 -6
  129. package/dist/nitroConfigBridge-lHPsE5zG.mjs.map +1 -0
  130. package/dist/{nodeResponse-CIEEbrNE.mjs → nodeResponse-Dsl7gZUf.mjs} +1 -1
  131. package/dist/{nodeResponse-CIEEbrNE.mjs.map → nodeResponse-Dsl7gZUf.mjs.map} +1 -1
  132. package/dist/nuxt/module.d.mts +1 -1
  133. package/dist/nuxt/module.mjs +2 -2
  134. package/dist/orpc/index.d.mts +4 -4
  135. package/dist/orpc/index.d.mts.map +1 -1
  136. package/dist/orpc/index.mjs +2 -2
  137. package/dist/orpc/index.mjs.map +1 -1
  138. package/dist/{package-CNV_CXs8.mjs → package-Drb3wqqt.mjs} +2 -2
  139. package/dist/package-Drb3wqqt.mjs.map +1 -0
  140. package/dist/{parseError-BeBXEd2V.d.mts → parseError-BmoJ7XeF.d.mts} +2 -2
  141. package/dist/parseError-BmoJ7XeF.d.mts.map +1 -0
  142. package/dist/react-router/index.d.mts +4 -4
  143. package/dist/react-router/index.d.mts.map +1 -1
  144. package/dist/react-router/index.mjs +3 -2
  145. package/dist/react-router/index.mjs.map +1 -1
  146. package/dist/register-disk-snippet-B5svlT8-.mjs +21 -0
  147. package/dist/register-disk-snippet-B5svlT8-.mjs.map +1 -0
  148. package/dist/runtime/client/log.d.mts +1 -1
  149. package/dist/runtime/server/routes/_evlog/ingest.post.mjs +1 -1
  150. package/dist/runtime/server/useLogger.d.mts +1 -1
  151. package/dist/runtime/server/useLogger.mjs.map +1 -1
  152. package/dist/runtime/utils/parseError.d.mts +2 -2
  153. package/dist/{storage-7X37OToT.mjs → storage-BeFdoGTI.mjs} +1 -1
  154. package/dist/storage-BeFdoGTI.mjs.map +1 -0
  155. package/dist/stream.d.mts +1 -1
  156. package/dist/stream.d.mts.map +1 -1
  157. package/dist/stream.mjs +7 -1
  158. package/dist/stream.mjs.map +1 -1
  159. package/dist/sveltekit/index.d.mts +3 -4
  160. package/dist/sveltekit/index.d.mts.map +1 -1
  161. package/dist/sveltekit/index.mjs +6 -3
  162. package/dist/sveltekit/index.mjs.map +1 -1
  163. package/dist/toolkit.d.mts +7 -7
  164. package/dist/toolkit.d.mts.map +1 -1
  165. package/dist/toolkit.mjs +7 -6
  166. package/dist/types.d.mts +1 -1
  167. package/dist/{useLogger-Cfv8Ck8b.d.mts → useLogger-BupVLO9_.d.mts} +3 -3
  168. package/dist/useLogger-BupVLO9_.d.mts.map +1 -0
  169. package/dist/{utils-CJJG0ZYW.d.mts → utils-D_LY-J1k.d.mts} +2 -2
  170. package/dist/{utils-CJJG0ZYW.d.mts.map → utils-D_LY-J1k.d.mts.map} +1 -1
  171. package/dist/utils.d.mts +1 -1
  172. package/dist/vite/index.d.mts +1 -1
  173. package/dist/workers.d.mts +3 -3
  174. package/dist/workers.d.mts.map +1 -1
  175. package/dist/workers.mjs +1 -1
  176. package/dist/workers.mjs.map +1 -1
  177. package/package.json +25 -2
  178. package/dist/audit-BQt8yAHo.mjs.map +0 -1
  179. package/dist/audit-D7v6JHj0.d.mts.map +0 -1
  180. package/dist/fork-CgGlAaHa.mjs.map +0 -1
  181. package/dist/index-EvnrXvQM.d.mts.map +0 -1
  182. package/dist/index.mjs.map +0 -1
  183. package/dist/logger-mHIWxBhJ.d.mts.map +0 -1
  184. package/dist/middleware-B_k4Mrzg.d.mts.map +0 -1
  185. package/dist/nitro-ClRZLD1g.mjs.map +0 -1
  186. package/dist/nitroConfigBridge-BkVWnSV3.mjs.map +0 -1
  187. package/dist/package-CNV_CXs8.mjs.map +0 -1
  188. package/dist/parseError-BeBXEd2V.d.mts.map +0 -1
  189. package/dist/storage-7X37OToT.mjs.map +0 -1
  190. package/dist/useLogger-Cfv8Ck8b.d.mts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit-D7v6JHj0.d.mts","names":[],"sources":["../src/shared/plugin.ts","../src/shared/dev-terminal.ts","../src/types.ts","../src/audit.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fork-CgGlAaHa.mjs","names":[],"sources":["../src/shared/middleware.ts","../src/shared/fork.ts"],"sourcesContent":["import type { DrainContext, EnrichContext, RedactConfig, RequestLogger, RouteConfig, TailSamplingContext, WideEvent } from '../types'\nimport { createRequestLogger, getGlobalDrain, getGlobalPluginRunner, isEnabled, markWideEventDrainStarted, shouldKeep } from '../logger'\nimport { isGloballyRedacted, redactEvent, resolveRedactConfig } from '../redact'\nimport { extractErrorStatus } from './errors'\nimport type { EvlogPlugin, PluginRunner } from './plugin'\nimport { createPluginRunner, getEmptyPluginRunner } from './plugin'\nimport { shouldLog, getServiceForPath } from './routes'\nimport { bindStreamingResponseLifecycle, shouldDeferEmitForResponse } from './streamResponse'\n\n/**\n * Base options shared by every framework integration. Re-exported via\n * `evlog/toolkit` so custom integrations can extend it.\n */\nexport interface BaseEvlogOptions {\n /** Route glob patterns to include. If unset, all routes are logged. */\n include?: string[]\n /** Route glob patterns to exclude. Takes precedence over `include`. */\n exclude?: string[]\n /** Per-route service overrides. */\n routes?: Record<string, RouteConfig>\n /** Drain callback invoked with every emitted event. */\n drain?: (ctx: DrainContext) => void | Promise<void>\n /** Enrich callback invoked after emit, before drain. */\n enrich?: (ctx: EnrichContext) => void | Promise<void>\n /** Tail sampling callback. Set `ctx.shouldKeep = true` to force-keep. */\n keep?: (ctx: TailSamplingContext) => void | Promise<void>\n /**\n * PII auto-redaction. `true` enables built-in patterns; pass an object for\n * fine-grained control. Applied before enrich/drain.\n */\n redact?: boolean | RedactConfig\n /** Plugins for this middleware, merged with globally-registered ones. */\n plugins?: EvlogPlugin[]\n}\n\n/** Internal options accepted by `createMiddlewareLogger`. */\nexport interface MiddlewareLoggerOptions extends BaseEvlogOptions {\n method: string\n path: string\n requestId?: string\n /** Pre-filtered safe request headers used for enrich/drain context. */\n headers?: Record<string, string>\n}\n\nexport interface MiddlewareLoggerResult {\n logger: RequestLogger\n finish: (opts?: { status?: number; error?: Error }) => Promise<WideEvent | null>\n /**\n * Finish request logging, deferring emit until a streaming response body completes.\n * Returns the original response or a wrapped copy when the body is a stream.\n */\n finishResponse: (response: Response, opts?: { status?: number }) => Promise<Response>\n skipped: boolean\n}\n\nconst noopResult: MiddlewareLoggerResult = {\n logger: {\n set() {},\n error() {},\n info() {},\n warn() {},\n setLevel() {},\n emit() {\n return null \n },\n getContext() {\n return {} \n },\n },\n finish: () => Promise.resolve(null),\n finishResponse: (response) => Promise.resolve(response),\n skipped: true,\n}\n\n// Memoizes the merged runner per local plugins array (stable across requests\n// because it lives in the middleware factory closure). Invalidated when\n// `initLogger` swaps the global runner, so the merge cost is paid once.\nconst runnerCache = new WeakMap<EvlogPlugin[], { global: PluginRunner; merged: PluginRunner }>()\n\n/**\n * Resolve the plugin runner for a middleware invocation by merging local\n * plugins with the globally-registered ones (deduplicated by `name`).\n */\nexport function resolveMiddlewarePluginRunner(options: { plugins?: EvlogPlugin[] }): PluginRunner {\n const global = getGlobalPluginRunner()\n const local = options.plugins\n if (!local || local.length === 0) return global\n\n const cached = runnerCache.get(local)\n if (cached && cached.global === global) return cached.merged\n\n const merged = new Map<string, EvlogPlugin>()\n for (const plugin of global.plugins) merged.set(plugin.name, plugin)\n for (const plugin of local) merged.set(plugin.name, plugin)\n if (merged.size === 0) return getEmptyPluginRunner()\n\n const runner = createPluginRunner(Array.from(merged.values()))\n runnerCache.set(local, { global, merged: runner })\n return runner\n}\n\n/** Copy redacted fields onto the emitted event without replacing its identity. */\nfunction assignRedactedEvent(target: WideEvent, redacted: Partial<WideEvent>): void {\n for (const key of Object.keys(target) as Array<keyof WideEvent>) {\n if (!(key in redacted)) {\n delete target[key]\n }\n }\n Object.assign(target, redacted)\n}\n\n/**\n * Apply redact, enrich, and drain to an emitted wide event — the same\n * pipeline used by {@link createMiddlewareLogger}'s `finish`.\n */\n// eslint-disable-next-line max-params\nexport async function runEnrichAndDrain(\n emittedEvent: WideEvent,\n options: MiddlewareLoggerOptions,\n requestInfo: { method: string; path: string; requestId?: string },\n responseStatus?: number,\n plugins?: PluginRunner,\n): Promise<void> {\n const runner = plugins ?? resolveMiddlewarePluginRunner(options)\n const resolvedRedact = resolveRedactConfig(options.redact)\n if (resolvedRedact && !isGloballyRedacted(emittedEvent)) {\n assignRedactedEvent(emittedEvent, redactEvent(emittedEvent, resolvedRedact) as Partial<WideEvent>)\n }\n\n if (options.enrich || runner.hasEnrich) {\n const enrichCtx: EnrichContext = {\n event: emittedEvent,\n request: requestInfo,\n headers: options.headers,\n response: { status: responseStatus },\n }\n if (options.enrich) {\n try {\n await options.enrich(enrichCtx)\n } catch (err) {\n console.error('[evlog] enrich failed:', err)\n }\n }\n if (runner.hasEnrich) {\n await runner.runEnrich(enrichCtx)\n }\n }\n\n markWideEventDrainStarted(emittedEvent)\n\n const drain = options.drain ?? getGlobalDrain()\n const hasUserDrain = !!drain\n const hasPluginDrain = runner.hasDrain\n if (hasUserDrain || hasPluginDrain) {\n const drainCtx: DrainContext = {\n event: emittedEvent,\n request: requestInfo,\n headers: options.headers,\n }\n const tasks: Array<Promise<unknown>> = []\n if (hasUserDrain) {\n tasks.push(\n (async () => {\n try {\n await drain!(drainCtx)\n } catch (err) {\n console.error('[evlog] drain failed:', err)\n }\n })(),\n )\n }\n if (hasPluginDrain) {\n tasks.push(runner.runDrain(drainCtx))\n }\n await Promise.all(tasks)\n }\n}\n\n/**\n * Create a request logger with the full middleware pipeline: route filtering,\n * service overrides, duration tracking, tail sampling, emit, enrich, drain.\n *\n * Framework adapters extract method/path/requestId/headers, call this once\n * per request, and call `finish({ status | error })` when the response ends.\n * If `skipped` is `true`, the route was filtered out — bypass logging.\n */\nexport function createMiddlewareLogger(options: MiddlewareLoggerOptions): MiddlewareLoggerResult {\n if (!isEnabled()) return noopResult\n\n const { method, path, requestId, include, exclude, routes, keep } = options\n\n if (!shouldLog(path, include, exclude)) {\n return noopResult\n }\n\n const resolvedRequestId = requestId || crypto.randomUUID()\n\n const logger = createRequestLogger({\n method,\n path,\n requestId: resolvedRequestId,\n }, { _deferDrain: true })\n\n const routeService = getServiceForPath(path, routes)\n if (routeService) {\n logger.set({ service: routeService })\n }\n\n const pluginRunner = resolveMiddlewarePluginRunner(options)\n if (pluginRunner.hasExtendLogger) {\n pluginRunner.applyExtendLogger(logger)\n }\n\n const startTime = Date.now()\n const requestInfo = { method, path, requestId: resolvedRequestId }\n\n if (pluginRunner.hasRequestLifecycle) {\n pluginRunner.runOnRequestStart({\n logger,\n request: requestInfo,\n headers: options.headers,\n })\n }\n\n const finish = (opts?: { status?: number; error?: Error }): Promise<WideEvent | null> => {\n return performFinish(logger, opts)\n }\n\n const finishResponse = async (response: Response, opts?: { status?: number }): Promise<Response> => {\n const status = opts?.status ?? response.status\n if (!shouldDeferEmitForResponse(response)) {\n await performFinish(logger, { status })\n return response\n }\n\n return bindStreamingResponseLifecycle(response, async (meta) => {\n await performFinish(logger, {\n status: meta.status ?? status,\n error: meta.error,\n })\n })\n }\n\n async function performFinish(\n requestLogger: RequestLogger,\n opts?: { status?: number; error?: Error },\n ): Promise<WideEvent | null> {\n const { status, error } = opts ?? {}\n\n if (error) {\n requestLogger.error(error)\n const errorStatus = extractErrorStatus(error)\n requestLogger.set({ status: errorStatus })\n } else if (status !== undefined) {\n requestLogger.set({ status })\n }\n\n const durationMs = Date.now() - startTime\n\n const resolvedStatus = error\n ? extractErrorStatus(error)\n : status ?? (requestLogger.getContext().status as number | undefined)\n\n const tailCtx: TailSamplingContext = {\n status: resolvedStatus,\n duration: durationMs,\n path,\n method,\n context: requestLogger.getContext(),\n shouldKeep: false,\n }\n\n if (keep) {\n await keep(tailCtx)\n }\n if (pluginRunner.hasKeep) {\n await pluginRunner.runKeep(tailCtx)\n }\n\n const forceKeep = tailCtx.shouldKeep || shouldKeep(tailCtx)\n const emittedEvent = requestLogger.emit({ _forceKeep: forceKeep })\n\n if (\n emittedEvent\n && (options.enrich || options.drain || pluginRunner.hasEnrich || pluginRunner.hasDrain || getGlobalDrain())\n ) {\n await runEnrichAndDrain(emittedEvent, options, requestInfo, resolvedStatus, pluginRunner)\n }\n\n if (pluginRunner.hasRequestLifecycle) {\n pluginRunner.runOnRequestFinish({\n logger: requestLogger,\n request: requestInfo,\n headers: options.headers,\n event: emittedEvent,\n status: resolvedStatus,\n durationMs,\n error,\n })\n }\n\n return emittedEvent\n }\n\n return { logger, finish, finishResponse, skipped: false }\n}\n","import type { AsyncLocalStorage } from 'node:async_hooks'\nimport type { RequestLogger } from '../types'\nimport { createRequestLogger, getGlobalDrain } from '../logger'\nimport { extractErrorStatus } from './errors'\nimport type { MiddlewareLoggerOptions } from './middleware'\nimport { runEnrichAndDrain } from './middleware'\n\n/**\n * Optional hooks for integrations that track active loggers (e.g. Elysia `activeLoggers`).\n */\nexport interface ForkLifecycle {\n /** Called after the child logger is installed in storage, before `fn` runs. */\n onChildEnter?: (child: RequestLogger) => void\n /** Called after the child has finished (emit + enrich/drain), success or failure. */\n onChildExit?: (child: RequestLogger) => void\n}\n\n/**\n * Options for {@link forkBackgroundLogger}.\n *\n * @beta Part of `evlog/toolkit`\n */\nexport interface ForkBackgroundLoggerOptions {\n storage: AsyncLocalStorage<RequestLogger>\n parent: RequestLogger\n middlewareOptions: MiddlewareLoggerOptions\n label: string\n fn: () => void | Promise<void>\n lifecycle?: ForkLifecycle\n}\n\n/**\n * Attach {@link RequestLogger.fork} to a request logger. Replaces any existing `fork`.\n */\nexport function attachForkToLogger(\n storage: AsyncLocalStorage<RequestLogger>,\n parent: RequestLogger,\n middlewareOptions: MiddlewareLoggerOptions,\n lifecycle?: ForkLifecycle,\n): void {\n const log = parent as RequestLogger & { fork?: (label: string, fn: () => void | Promise<void>) => void }\n log.fork = (label: string, fn: () => void | Promise<void>) => {\n forkBackgroundLogger({ storage, parent, middlewareOptions, label, fn, lifecycle })\n }\n}\n\n/**\n * Run background work under a child request logger so `useLogger()` resolves to the\n * child while `fn` runs. The child emits a separate wide event when `fn` settles,\n * with `operation` and `_parentRequestId` set for correlation.\n *\n * @beta Part of `evlog/toolkit` — used by framework integrations; prefer `log.fork()`\n * on the request logger when available.\n */\nexport function forkBackgroundLogger(options: ForkBackgroundLoggerOptions): void {\n const { storage, parent, middlewareOptions, label, fn, lifecycle } = options\n\n const parentCtx = parent.getContext() as Record<string, unknown>\n const parentRequestId = parentCtx.requestId\n if (typeof parentRequestId !== 'string' || parentRequestId.length === 0) {\n throw new Error(\n '[evlog] log.fork() requires the parent logger to have a requestId. '\n + 'Ensure the request was created by evlog middleware.',\n )\n }\n\n const method = String(parentCtx.method ?? middlewareOptions.method)\n const path = String(parentCtx.path ?? middlewareOptions.path)\n\n const child = createRequestLogger(\n {\n method,\n path,\n requestId: crypto.randomUUID(),\n },\n { _deferDrain: true },\n )\n\n child.set({\n operation: label,\n _parentRequestId: parentRequestId,\n })\n\n const childRequestInfo = {\n method,\n path,\n requestId: child.getContext().requestId as string,\n }\n\n storage.run(child, () => {\n lifecycle?.onChildEnter?.(child)\n void Promise.resolve()\n .then(() => fn())\n .then(async () => {\n const emittedEvent = child.emit()\n const ctxStatus = child.getContext().status\n const status = (emittedEvent?.status\n ?? (typeof ctxStatus === 'number' ? ctxStatus : undefined)) as number | undefined\n if (\n emittedEvent\n && (middlewareOptions.enrich || middlewareOptions.drain || getGlobalDrain())\n ) {\n await runEnrichAndDrain(emittedEvent, middlewareOptions, childRequestInfo, status)\n }\n })\n .catch(async (err: unknown) => {\n const error = err instanceof Error ? err : new Error(String(err))\n child.error(error)\n child.set({ status: extractErrorStatus(error) })\n const emittedEvent = child.emit()\n const status = extractErrorStatus(error)\n if (\n emittedEvent\n && (middlewareOptions.enrich || middlewareOptions.drain || getGlobalDrain())\n ) {\n await runEnrichAndDrain(emittedEvent, middlewareOptions, childRequestInfo, status)\n }\n })\n .finally(() => {\n lifecycle?.onChildExit?.(child)\n })\n })\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-EvnrXvQM.d.mts","names":[],"sources":["../src/catalog.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/catalog.ts"],"sourcesContent":["import type { AuditActionDefinition, AuditTarget } from './types'\nimport { defineAuditAction } from './audit'\nimport { EvlogError } from './error'\n\n/**\n * Static metadata for a single entry in an error catalog.\n *\n * `message` is either a constant string or a function that receives required\n * params at the call site (typed). All other fields are templated defaults\n * that can be overridden at the call site.\n */\nexport interface ErrorCatalogEntry {\n /** HTTP status code (default: 500). */\n status?: number\n /**\n * Either a constant string or a typed function whose params become required\n * arguments at the call site (`factory({ available, required })`).\n */\n message: string | ((params: never) => string)\n /** Why this error occurred (technical reason). */\n why?: string\n /** Actionable fix shown to the user. */\n fix?: string\n /** Link to documentation. */\n link?: string\n /** Free-form metadata for grouping / filtering (not surfaced on the wire). */\n tags?: readonly string[]\n /**\n * Backend-only context defaults. Merged with call-site `internal` (call-site wins).\n */\n internal?: Record<string, unknown>\n}\n\n/**\n * Subset of {@link import('./types').ErrorOptions} that callers may override\n * when invoking a catalog factory. `code` is always derived from the catalog\n * and intentionally excluded — pass `cause` here for error chaining.\n */\nexport interface ErrorFactoryOverrides {\n message?: string\n status?: number\n why?: string\n fix?: string\n link?: string\n internal?: Record<string, unknown>\n cause?: Error\n}\n\n/** @internal Extract the params object type from a templated message function. */\ntype MessageParams<TMessage> = TMessage extends (params: infer P) => string ? P : Record<string, never>\n\n/**\n * Call-site argument type for a catalog factory:\n * - if `message` is a function: required params object merged with overrides\n * - if `message` is a string: optional overrides only\n */\nexport type ErrorFactoryOpts<TEntry extends ErrorCatalogEntry> =\n TEntry['message'] extends (params: infer _P) => string\n ? MessageParams<TEntry['message']> & ErrorFactoryOverrides\n : ErrorFactoryOverrides\n\n/** @internal When message is a string, the call-site argument is optional. */\ntype FactoryArgs<TEntry extends ErrorCatalogEntry> =\n TEntry['message'] extends (params: never) => string\n ? [opts: ErrorFactoryOpts<TEntry>]\n : [opts?: ErrorFactoryOpts<TEntry>]\n\n/**\n * A factory produced by {@link defineError} or each entry of\n * {@link defineErrorCatalog}. Calling it returns a fully-formed\n * {@link EvlogError} with the catalog's defaults applied. Static metadata\n * is exposed as readonly properties for introspection / refactor-safe\n * comparisons (`err.code === MyError.code`).\n */\nexport type DefinedError<TCode extends string, TEntry extends ErrorCatalogEntry> =\n & ((...args: FactoryArgs<TEntry>) => EvlogError)\n & {\n readonly code: TCode\n readonly status: number\n readonly message: TEntry['message']\n readonly why: TEntry['why']\n readonly fix: TEntry['fix']\n readonly link: TEntry['link']\n readonly tags: TEntry['tags']\n readonly internal: TEntry['internal']\n }\n\nfunction buildEvlogError(\n code: string,\n entry: ErrorCatalogEntry,\n rawArgs: Record<string, unknown> | undefined,\n): EvlogError {\n const args = rawArgs ?? {}\n const {\n message: messageOverride,\n status,\n why,\n fix,\n link,\n cause,\n internal: callInternal,\n ...maybeParams\n } = args as ErrorFactoryOverrides & Record<string, unknown>\n\n let message: string\n if (typeof messageOverride === 'string') {\n message = messageOverride\n } else if (typeof entry.message === 'function') {\n message = (entry.message as (p: unknown) => string)(maybeParams)\n } else {\n ({ message } = entry as { message: string })\n }\n\n let internal: Record<string, unknown> | undefined\n if (entry.internal || callInternal) {\n internal = { ...(entry.internal ?? {}), ...(callInternal ?? {}) }\n }\n\n return new EvlogError({\n code,\n message,\n status: status ?? entry.status ?? 500,\n why: why ?? entry.why,\n fix: fix ?? entry.fix,\n link: link ?? entry.link,\n cause: cause as Error | undefined,\n internal,\n })\n}\n\n/**\n * Define a single, standalone error factory bound to a stable `code`.\n *\n * Each factory produces an {@link EvlogError} with the entry's defaults\n * applied. Call-site overrides (`cause`, `internal`, `message`, ...) are\n * shallow-merged onto those defaults.\n *\n * @example\n * ```ts\n * import { defineError } from 'evlog'\n *\n * export const PaymentDeclined = defineError('billing.PAYMENT_DECLINED', {\n * status: 402,\n * message: 'Card declined',\n * why: 'Issuer declined the charge',\n * fix: 'Try another card',\n * })\n *\n * throw PaymentDeclined()\n * throw PaymentDeclined({ cause: stripeErr, internal: { ref: 'ch_x' } })\n * ```\n *\n * @example Templated message with typed params\n * ```ts\n * export const InsufficientFunds = defineError('billing.INSUFFICIENT_FUNDS', {\n * status: 402,\n * message: ({ available, required }: { available: number, required: number }) =>\n * `Insufficient funds: $${available}/$${required}`,\n * })\n *\n * throw InsufficientFunds({ available: 5, required: 100 })\n * ```\n */\nexport function defineError<\n const TCode extends string,\n const TEntry extends ErrorCatalogEntry,\n>(code: TCode, entry: TEntry): DefinedError<TCode, TEntry> {\n const factory = ((...args: unknown[]) =>\n buildEvlogError(code, entry, args[0] as Record<string, unknown> | undefined)) as unknown as DefinedError<TCode, TEntry>\n\n Object.defineProperties(factory, {\n code: { value: code, enumerable: true },\n status: { value: entry.status ?? 500, enumerable: true },\n message: { value: entry.message, enumerable: true },\n why: { value: entry.why, enumerable: true },\n fix: { value: entry.fix, enumerable: true },\n link: { value: entry.link, enumerable: true },\n tags: { value: entry.tags, enumerable: true },\n internal: { value: entry.internal, enumerable: true },\n })\n\n return factory\n}\n\n/** Map of error catalog entries keyed by their (UPPER_SNAKE) name. */\nexport interface ErrorCatalogMap {\n readonly [key: string]: ErrorCatalogEntry\n}\n\n/**\n * The object returned by {@link defineErrorCatalog}. Each map key becomes a\n * dot-accessed factory whose `code` is `${prefix}.${key}` (preserved casing).\n *\n * Catalog metadata (`_prefix`, `_codes`) is exposed as non-enumerable readonly\n * properties so it does not pollute iteration but is available for typing\n * (`declare module 'evlog'`) and runtime introspection.\n */\nexport type ErrorCatalog<TPrefix extends string, TMap extends ErrorCatalogMap> =\n & { [K in keyof TMap & string]: DefinedError<`${TPrefix}.${K}`, TMap[K]> }\n & {\n readonly _prefix: TPrefix\n readonly _codes: ReadonlyArray<`${TPrefix}.${keyof TMap & string}`>\n }\n\n/**\n * Define a bundle of errors that share a common prefix. The wire `code` for\n * each entry is `${prefix}.${KEY}` (the key's casing is preserved — convention\n * is `UPPER_SNAKE_CASE`).\n *\n * Pair with `declare module 'evlog'` to surface autocomplete + literal-typed\n * `code` everywhere across the codebase.\n *\n * @example\n * ```ts\n * import { defineErrorCatalog } from 'evlog'\n *\n * export const billingErrors = defineErrorCatalog('billing', {\n * PAYMENT_DECLINED: { status: 402, message: 'Card declined' },\n * INSUFFICIENT_FUNDS: {\n * status: 402,\n * message: ({ available, required }: { available: number, required: number }) =>\n * `Insufficient funds: $${available}/$${required}`,\n * },\n * })\n *\n * declare module 'evlog' {\n * interface RegisteredErrorCatalogs {\n * billing: typeof billingErrors\n * }\n * }\n *\n * throw billingErrors.PAYMENT_DECLINED()\n * throw billingErrors.INSUFFICIENT_FUNDS({ available: 5, required: 100 })\n * ```\n */\nexport function defineErrorCatalog<\n const TPrefix extends string,\n const TMap extends ErrorCatalogMap,\n>(prefix: TPrefix, map: TMap): ErrorCatalog<TPrefix, TMap> {\n const out: Record<string, unknown> = {}\n const codes: string[] = []\n\n for (const key of Object.keys(map)) {\n const code = `${prefix}.${key}`\n out[key] = defineError(code, map[key])\n codes.push(code)\n }\n\n Object.defineProperties(out, {\n _prefix: { value: prefix, enumerable: false },\n _codes: { value: Object.freeze(codes), enumerable: false },\n })\n\n return out as ErrorCatalog<TPrefix, TMap>\n}\n\n/** Static metadata for a single entry in an audit catalog. */\nexport type AuditCatalogEntry = AuditActionDefinition\n\n/** Map of audit catalog entries keyed by their (UPPER_SNAKE) name. */\nexport interface AuditCatalogMap {\n readonly [key: string]: AuditCatalogEntry\n}\n\n/** A factory produced by an audit catalog entry. Returns an {@link AuditInput}. */\nexport type DefinedCatalogAudit<TAction extends string, TEntry extends AuditCatalogEntry> =\n & ((\n input: TEntry['target'] extends string\n ? Omit<AuditInput, 'action' | 'target'> & { target?: Omit<AuditTarget, 'type'> & { type?: TEntry['target'] } }\n : Omit<AuditInput, 'action'>,\n ) => AuditInput)\n & {\n readonly action: TAction\n readonly target: TEntry['target']\n readonly description: TEntry['description']\n readonly severity: TEntry['severity']\n readonly requiresChanges: TEntry['requiresChanges']\n readonly requiresReason: TEntry['requiresReason']\n readonly redactPaths: TEntry['redactPaths']\n }\n\n/**\n * The object returned by {@link defineAuditCatalog}. Mirrors\n * {@link ErrorCatalog} but each factory produces an {@link AuditInput}\n * (typically passed to `log.audit(...)`).\n */\nexport type AuditCatalog<TPrefix extends string, TMap extends AuditCatalogMap> =\n & { [K in keyof TMap & string]: DefinedCatalogAudit<`${TPrefix}.${K}`, TMap[K]> }\n & {\n readonly _prefix: TPrefix\n readonly _actions: ReadonlyArray<`${TPrefix}.${keyof TMap & string}`>\n }\n\n/**\n * Define a bundle of audit actions that share a common prefix. The wire\n * `action` for each entry is `${prefix}.${KEY}`.\n *\n * Each entry produces a thin wrapper around {@link defineAuditAction} (target\n * type is fixed at definition time, action name is auto-prefixed).\n *\n * @example\n * ```ts\n * import { defineAuditCatalog } from 'evlog'\n *\n * export const billingAudit = defineAuditCatalog('billing', {\n * INVOICE_REFUND: {\n * target: 'invoice',\n * severity: 'high',\n * requiresChanges: true,\n * description: 'Refund an invoice to the customer',\n * },\n * INVOICE_CREATE: { target: 'invoice' },\n * })\n *\n * declare module 'evlog' {\n * interface RegisteredAuditCatalogs {\n * billing: typeof billingAudit\n * }\n * }\n *\n * log.audit(billingAudit.INVOICE_REFUND({\n * actor: { type: 'user', id: u.id },\n * target: { id: 'inv_889' },\n * }))\n * ```\n */\nexport function defineAuditCatalog<\n const TPrefix extends string,\n const TMap extends AuditCatalogMap,\n>(prefix: TPrefix, map: TMap): AuditCatalog<TPrefix, TMap> {\n const out: Record<string, unknown> = {}\n const actions: string[] = []\n\n for (const key of Object.keys(map)) {\n const action = `${prefix}.${key}`\n const entry = map[key]\n out[key] = defineAuditAction(action, entry)\n actions.push(action)\n }\n\n Object.defineProperties(out, {\n _prefix: { value: prefix, enumerable: false },\n _actions: { value: Object.freeze(actions), enumerable: false },\n })\n\n return out as AuditCatalog<TPrefix, TMap>\n}\n"],"mappings":";;;;;;;AAuFA,SAAS,gBACP,MACA,OACA,SACY;CAEZ,MAAM,EACJ,SAAS,iBACT,QACA,KACA,KACA,MACA,OACA,UAAU,cACV,GAAG,gBATQ,WAAW,EAAE;CAY1B,IAAI;AACJ,KAAI,OAAO,oBAAoB,SAC7B,WAAU;UACD,OAAO,MAAM,YAAY,WAClC,WAAW,MAAM,QAAmC,YAAY;KAEhE,EAAC,CAAE,WAAY;CAGjB,IAAI;AACJ,KAAI,MAAM,YAAY,aACpB,YAAW;EAAE,GAAI,MAAM,YAAY,EAAE;EAAG,GAAI,gBAAgB,EAAE;EAAG;AAGnE,QAAO,IAAI,WAAW;EACpB;EACA;EACA,QAAQ,UAAU,MAAM,UAAU;EAClC,KAAK,OAAO,MAAM;EAClB,KAAK,OAAO,MAAM;EAClB,MAAM,QAAQ,MAAM;EACb;EACP;EACD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCJ,SAAgB,YAGd,MAAa,OAA4C;CACzD,MAAM,YAAY,GAAG,SACnB,gBAAgB,MAAM,OAAO,KAAK,GAA0C;AAE9E,QAAO,iBAAiB,SAAS;EAC/B,MAAM;GAAE,OAAO;GAAM,YAAY;GAAM;EACvC,QAAQ;GAAE,OAAO,MAAM,UAAU;GAAK,YAAY;GAAM;EACxD,SAAS;GAAE,OAAO,MAAM;GAAS,YAAY;GAAM;EACnD,KAAK;GAAE,OAAO,MAAM;GAAK,YAAY;GAAM;EAC3C,KAAK;GAAE,OAAO,MAAM;GAAK,YAAY;GAAM;EAC3C,MAAM;GAAE,OAAO,MAAM;GAAM,YAAY;GAAM;EAC7C,MAAM;GAAE,OAAO,MAAM;GAAM,YAAY;GAAM;EAC7C,UAAU;GAAE,OAAO,MAAM;GAAU,YAAY;GAAM;EACtD,CAAC;AAEF,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDT,SAAgB,mBAGd,QAAiB,KAAwC;CACzD,MAAM,MAA+B,EAAE;CACvC,MAAM,QAAkB,EAAE;AAE1B,MAAK,MAAM,OAAO,OAAO,KAAK,IAAI,EAAE;EAClC,MAAM,OAAO,GAAG,OAAO,GAAG;AAC1B,MAAI,OAAO,YAAY,MAAM,IAAI,KAAK;AACtC,QAAM,KAAK,KAAK;;AAGlB,QAAO,iBAAiB,KAAK;EAC3B,SAAS;GAAE,OAAO;GAAQ,YAAY;GAAO;EAC7C,QAAQ;GAAE,OAAO,OAAO,OAAO,MAAM;GAAE,YAAY;GAAO;EAC3D,CAAC;AAEF,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyET,SAAgB,mBAGd,QAAiB,KAAwC;CACzD,MAAM,MAA+B,EAAE;CACvC,MAAM,UAAoB,EAAE;AAE5B,MAAK,MAAM,OAAO,OAAO,KAAK,IAAI,EAAE;EAClC,MAAM,SAAS,GAAG,OAAO,GAAG;EAC5B,MAAM,QAAQ,IAAI;AAClB,MAAI,OAAO,kBAAkB,QAAQ,MAAM;AAC3C,UAAQ,KAAK,OAAO;;AAGtB,QAAO,iBAAiB,KAAK;EAC3B,SAAS;GAAE,OAAO;GAAQ,YAAY;GAAO;EAC7C,UAAU;GAAE,OAAO,OAAO,OAAO,QAAQ;GAAE,YAAY;GAAO;EAC/D,CAAC;AAEF,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger-mHIWxBhJ.d.mts","names":[],"sources":["../src/logger.ts"],"mappings":";;;AAkBA;AAAA,UAAiB,wBAAA;EACf,wBAAA,UAAkC,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA;AAAA,iBA6B1C,SAAA,CAAU,MAAA,EAAQ,MAAA,mBAAyB,MAAA,EAAQ,MAAA;;;;;;AA5B3D;iBAwDe,yBAAA,CAA0B,KAAA,EAAO,SAAA;;;;;iBAsCjC,UAAA,CAAW,MAAA,GAAQ,YAAA;;;;;AAAnC;iBA+CgB,qBAAA,CAAA,GAAyB,YAAA;;;;iBAOzB,SAAA,CAAA;;;;;AAAhB;iBASgB,UAAA,CAAA;;;;iBAOA,cAAA,CAAA;;;;;AAAhB;iBASgB,cAAA,CAAA,KAAoB,GAAA,EAAK,YAAA,YAAwB,OAAA;;;;AAAjE;iBA8BgB,UAAA,CAAW,GAAA,EAAK,mBAAA;;;;;;;;AAAhC;;cA4gBM,IAAA,EAAM,GAAA;;AA5fX;;UAwhBS,2BAAA;EA5BE;;AAOU;;EA0BpB,WAAA;EAI6B;;;EAA7B,SAAA,IAAa,OAAA,EAAS,OAAA;AAAA;;;AAkBxB;;;;;;;;;;;;;iBAAgB,YAAA,oBAAgC,MAAA,kBAAA,CAAyB,cAAA,GAAgB,MAAA,mBAA8B,eAAA,GAAkB,2BAAA,GAA8B,eAAA,CAAgB,CAAA;;;;;;;AAiOvL;;;;;;;;;;;;;;;;;;;;AAeA;iBAfgB,mBAAA,oBAAuC,MAAA,kBAAA,CAAyB,OAAA,GAAS,oBAAA,EAA2B,eAAA,GAAkB,2BAAA,GAA8B,eAAA,CAAgB,CAAA;;;;iBAepK,cAAA,CAAA,GAAkB,kBAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"middleware-B_k4Mrzg.d.mts","names":[],"sources":["../src/shared/middleware.ts"],"mappings":";;;;AAaA;;;UAAiB,gBAAA;EAMN;EAJT,OAAA;EAMsC;EAJtC,OAAA;EAMwC;EAJxC,MAAA,GAAS,MAAA,SAAe,WAAA;EAMoB;EAJ5C,KAAA,IAAS,GAAA,EAAK,YAAA,YAAwB,OAAA;EAW5B;EATV,MAAA,IAAU,GAAA,EAAK,aAAA,YAAyB,OAAA;EASnB;EAPrB,IAAA,IAAQ,GAAA,EAAK,mBAAA,YAA+B,OAAA;EAR5C;;;;EAaA,MAAA,aAAmB,YAAA;EATL;EAWd,OAAA,GAAU,WAAA;AAAA;;UAIK,uBAAA,SAAgC,gBAAA;EAC/C,MAAA;EACA,IAAA;EACA,SAAA;EAda;EAgBb,OAAA,GAAU,MAAA;AAAA;AAAA,UAGK,sBAAA;EACf,MAAA,EAAQ,aAAA;EACR,MAAA,GAAS,IAAA;IAAS,MAAA;IAAiB,KAAA,GAAQ,KAAA;EAAA,MAAY,OAAA,CAAQ,SAAA;EAVhD;;;;EAef,cAAA,GAAiB,QAAA,EAAU,QAAA,EAAU,IAAA;IAAS,MAAA;EAAA,MAAsB,OAAA,CAAQ,QAAA;EAC5E,OAAA;AAAA;;;;AARF;iBAuCgB,6BAAA,CAA8B,OAAA;EAAW,OAAA,GAAU,WAAA;AAAA,IAAkB,YAAA;;;;;iBAiC/D,iBAAA,CACpB,YAAA,EAAc,SAAA,EACd,OAAA,EAAS,uBAAA,EACT,WAAA;EAAe,MAAA;EAAgB,IAAA;EAAc,SAAA;AAAA,GAC7C,cAAA,WACA,OAAA,GAAU,YAAA,GACT,OAAA;;;;;;;;;iBAgEa,sBAAA,CAAuB,OAAA,EAAS,uBAAA,GAA0B,sBAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nitro-ClRZLD1g.mjs","names":[],"sources":["../src/nitro.ts"],"sourcesContent":["import type { EnvironmentContext, LogLevel, RedactConfig, RouteConfig, SamplingConfig } from './types'\nimport type { DevTerminalInput, DevTerminalResolveInput } from './shared/dev-terminal'\nimport { extractErrorStatus } from './shared/errors'\nimport { resolveDevTerminal, shouldShowFrameworkOverlay } from './shared/dev-terminal'\nimport { readEvlogConfigSync } from './shared/nitroConfigBridge'\n\nexport type { DevTerminalInput, DevTerminalPreset, DevPrettyErrorConfig, DevTerminalConfigObject, ResolvedPrettyError } from './shared/dev-terminal'\nexport { resolveDevTerminal, shouldShowFrameworkOverlay } from './shared/dev-terminal'\n\nexport { shouldLog, getServiceForPath } from './shared/routes'\n\nexport interface NitroModuleOptions {\n /**\n * Enable or disable all logging globally.\n * @default true\n */\n enabled?: boolean\n\n /**\n * Environment context overrides.\n */\n env?: Partial<EnvironmentContext>\n\n /**\n * Enable pretty printing.\n * @default true in development, false in production\n */\n pretty?: boolean\n\n /**\n * Dev terminal output: preset or explicit overlay + pretty-error settings.\n * @default 'evlog' when pretty in development\n */\n dev?: DevTerminalInput\n\n /**\n * Suppress built-in console output.\n * When true, events are still built, sampled, and passed to drains,\n * but nothing is written to console. Use when drains own the output\n * channel (e.g., stdout-based platforms like GCP Cloud Run, AWS Lambda).\n * @default false\n */\n silent?: boolean\n\n /**\n * Route patterns to include in logging.\n * Supports glob patterns like '/api/**'.\n * If not set, all routes are logged.\n */\n include?: string[]\n\n /**\n * Route patterns to exclude from logging.\n * Supports glob patterns like '/_nitro/**'.\n * Exclusions take precedence over inclusions.\n */\n exclude?: string[]\n\n /**\n * Route-specific service configuration.\n */\n routes?: Record<string, RouteConfig>\n\n /**\n * Sampling configuration for filtering logs.\n */\n sampling?: SamplingConfig\n\n /**\n * Minimum severity for the global `log` API (not request wide events).\n * Order: debug < info < warn < error.\n * @default 'debug'\n */\n minLevel?: LogLevel\n\n /**\n * Auto-redaction configuration for PII protection.\n * `true` enables all built-in PII patterns. Pass an object for fine-grained control.\n */\n redact?: boolean | RedactConfig\n}\n\n/**\n * JSON-friendly subset of evlog Nitro plugin options consumed by the Nitro/Nuxt\n * runtime (read from `runtimeConfig.evlog` or the `__EVLOG_CONFIG` env bridge).\n *\n * @internal Internal Nitro contract — do not use from application code. Use\n * {@link import('./shared/define').EvlogConfig} for the canonical user-facing\n * config shape.\n */\nexport interface NitroPluginEvlogConfig extends DevTerminalResolveInput {\n enabled?: boolean\n env?: Record<string, unknown>\n silent?: boolean\n include?: string[]\n exclude?: string[]\n routes?: Record<string, RouteConfig>\n sampling?: SamplingConfig\n minLevel?: LogLevel\n redact?: boolean | RedactConfig | Record<string, unknown>\n}\n\n/** @deprecated Renamed to {@link NitroPluginEvlogConfig}. Kept for backward compat. */\nexport type EvlogConfig = NitroPluginEvlogConfig\n\n/**\n * Resolve an EvlogError from an error or its cause chain.\n * Both Nitro v2 (h3) and v3 wrap thrown errors — this unwraps them.\n */\nexport function resolveEvlogError(error: Error): Error | null {\n if (error.name === 'EvlogError') return error\n if ((error.cause as Error)?.name === 'EvlogError') return error.cause as Error\n return null\n}\n\nexport { extractErrorStatus } from './shared/errors'\n\n/**\n * Mark an h3 event handled synchronously.\n * Nitro chains a built-in dev handler after custom handlers; `send()` defers\n * `res.end`, so without this the Youch overlay still runs.\n * @internal\n */\nexport function markH3ErrorHandled(event: { _handled?: boolean }): void {\n event._handled = true\n}\n\n/**\n * Prepend evlog's Nitro error handler so it runs before framework handlers (e.g. Nuxt).\n * @internal\n */\nexport function prependNitroErrorHandler(\n errorHandler: string | string[] | undefined,\n handlerPath: string,\n): string | string[] {\n if (!errorHandler) return handlerPath\n if (Array.isArray(errorHandler)) {\n const rest = errorHandler.filter(h => h !== handlerPath)\n return [handlerPath, ...rest]\n }\n if (errorHandler === handlerPath) return handlerPath\n return [handlerPath, errorHandler]\n}\n\n/**\n * Whether the Nitro dev Youch overlay should be suppressed for this process.\n * @internal\n */\nlet cachedConfigKey: string | undefined\nlet cachedSuppressOverlay: boolean | undefined\n\nexport function shouldSuppressNitroDevOverlay(): boolean {\n const config = readEvlogConfigSync()\n const key = config ? JSON.stringify(config) : ''\n if (cachedSuppressOverlay !== undefined && cachedConfigKey === key) {\n return cachedSuppressOverlay\n }\n\n cachedConfigKey = key\n cachedSuppressOverlay = !resolveDevTerminal(config ?? {}).frameworkOverlay\n return cachedSuppressOverlay\n}\n\n/** @internal Reset overlay decision cache — tests only. */\nexport function resetNitroDevOverlayCache(): void {\n cachedConfigKey = undefined\n cachedSuppressOverlay = undefined\n}\n\n/**\n * Clear Nitro/h3 unhandled flags so the dev Youch logger skips this error.\n * @internal\n */\nexport function suppressNitroDevOverlay(error: Error): void {\n const err = error as Error & { unhandled?: boolean; fatal?: boolean }\n err.unhandled = false\n err.fatal = false\n}\n\n/**\n * Build Nitro-compatible JSON for non-EvlogError throws.\n * Sanitizes 5xx messages in production.\n */\nexport function buildPlainNitroErrorBody(\n error: Error,\n url: string,\n isDev = process.env.NODE_ENV === 'development',\n): Record<string, unknown> {\n const status = extractErrorStatus(error)\n const rawMessage = ((error as { statusText?: string }).statusText\n ?? (error as { statusMessage?: string }).statusMessage\n ?? error.message) || 'Internal Server Error'\n const message = isDev\n ? rawMessage\n : (status >= 500 ? 'Internal Server Error' : rawMessage)\n\n return {\n url,\n status,\n statusCode: status,\n statusText: message,\n statusMessage: message,\n message,\n error: true,\n }\n}\n\n/**\n * Build a standard evlog error JSON response body.\n * Used by both v2 and v3 error handlers to ensure consistent shape.\n */\nexport function serializeEvlogErrorResponse(error: Error, url: string): Record<string, unknown> {\n const status = extractErrorStatus(error)\n const { data } = error as { data?: unknown }\n const statusMessage = (error as { statusMessage?: string }).statusMessage || error.message\n return {\n url,\n status,\n statusCode: status,\n statusText: statusMessage,\n statusMessage,\n message: error.message,\n error: true,\n ...(data !== undefined && { data }),\n }\n}\n\n"],"mappings":";;;;;;;;AA6GA,SAAgB,kBAAkB,OAA4B;AAC5D,KAAI,MAAM,SAAS,aAAc,QAAO;AACxC,KAAK,MAAM,OAAiB,SAAS,aAAc,QAAO,MAAM;AAChE,QAAO;;;;;;;;AAWT,SAAgB,mBAAmB,OAAqC;AACtE,OAAM,WAAW;;;;;;AAOnB,SAAgB,yBACd,cACA,aACmB;AACnB,KAAI,CAAC,aAAc,QAAO;AAC1B,KAAI,MAAM,QAAQ,aAAa,CAE7B,QAAO,CAAC,aAAa,GADR,aAAa,QAAO,MAAK,MAAM,YAChB,CAAC;AAE/B,KAAI,iBAAiB,YAAa,QAAO;AACzC,QAAO,CAAC,aAAa,aAAa;;;;;;AAOpC,IAAI;AACJ,IAAI;AAEJ,SAAgB,gCAAyC;CACvD,MAAM,SAAS,qBAAqB;CACpC,MAAM,MAAM,SAAS,KAAK,UAAU,OAAO,GAAG;AAC9C,KAAI,0BAA0B,KAAA,KAAa,oBAAoB,IAC7D,QAAO;AAGT,mBAAkB;AAClB,yBAAwB,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;AAC1D,QAAO;;;;;;AAaT,SAAgB,wBAAwB,OAAoB;CAC1D,MAAM,MAAM;AACZ,KAAI,YAAY;AAChB,KAAI,QAAQ;;;;;;AAOd,SAAgB,yBACd,OACA,KACA,QAAQ,QAAQ,IAAI,aAAa,eACR;CACzB,MAAM,SAAS,mBAAmB,MAAM;CACxC,MAAM,cAAe,MAAkC,cACjD,MAAqC,iBACtC,MAAM,YAAY;CACvB,MAAM,UAAU,QACZ,aACC,UAAU,MAAM,0BAA0B;AAE/C,QAAO;EACL;EACA;EACA,YAAY;EACZ,YAAY;EACZ,eAAe;EACf;EACA,OAAO;EACR;;;;;;AAOH,SAAgB,4BAA4B,OAAc,KAAsC;CAC9F,MAAM,SAAS,mBAAmB,MAAM;CACxC,MAAM,EAAE,SAAS;CACjB,MAAM,gBAAiB,MAAqC,iBAAiB,MAAM;AACnF,QAAO;EACL;EACA;EACA,YAAY;EACZ,YAAY;EACZ;EACA,SAAS,MAAM;EACf,OAAO;EACP,GAAI,SAAS,KAAA,KAAa,EAAE,MAAM;EACnC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nitroConfigBridge-BkVWnSV3.mjs","names":[],"sources":["../src/shared/nitroConfigBridge.ts"],"sourcesContent":["/**\n * How evlog reads Nitro runtime config from **published** ESM.\n *\n * **Why not** `import('nitro/runtime-config')` as a string literal in source?\n * Those subpaths are virtual or specially resolved. App Rollup can resolve them\n * for first-party code; for dependency chunks (`node_modules/evlog/dist/...`),\n * strict presets (e.g. `cloudflare-durable`) may fail with “externals are not\n * allowed”. A literal dynamic import is enough for Rollup to pre-resolve.\n *\n * **Strategy**\n *\n * 1. `__EVLOG_CONFIG__` — build-time literal baked in by the evlog Nitro\n * modules via `nitro.options.replace`. When present, all runtime probing is\n * skipped (see issue #312: Vercel + Bun crashes if the v3 probe runs).\n * 2. `process.env.__EVLOG_CONFIG` — JSON set by evlog Nitro modules during\n * build; survives into runtime on platforms that propagate build env vars.\n * 3. Computed module IDs — `['a','b'].join('/')` passed to `import()` so emitted\n * JS does not contain a static `import(\"a/b\")`.\n * 4. Plugins call {@link setActiveNitroRuntime} so adapters never probe modules\n * from the other major version.\n * 5. When the active runtime is unknown (standalone use outside a Nitro\n * plugin), the bridge falls back to the historical probe order.\n *\n * Not exported from `evlog/toolkit` — package-internal only.\n */\n\nimport type { NitroPluginEvlogConfig } from '../nitro'\n\ntype EvlogConfig = NitroPluginEvlogConfig\n\nconst EVLOG_NITRO_ENV = '__EVLOG_CONFIG' as const\n\n// Replaced at build time by `nitro.options.replace` in the evlog Nitro\n// modules. Outside of a Nitro build, this identifier is undeclared and the\n// `typeof` guard below evaluates safely.\n// eslint-disable-next-line @typescript-eslint/naming-convention\ndeclare const __EVLOG_CONFIG__: EvlogConfig | undefined\n\n/** Build-time inlined config, or `undefined` if the bundle was not produced by an evlog Nitro module. */\nexport function readEvlogConfigFromInline(): EvlogConfig | undefined {\n if (typeof __EVLOG_CONFIG__ === 'undefined') return undefined\n if (__EVLOG_CONFIG__ === null || typeof __EVLOG_CONFIG__ !== 'object') return undefined\n return __EVLOG_CONFIG__\n}\n\ntype NitroMajor = 'v2' | 'v3'\n\nlet activeNitroRuntime: NitroMajor | undefined\n\n/**\n * Declare the active Nitro major version so adapters never probe the other\n * version's modules at runtime. The evlog Nitro plugins call this in their\n * first synchronous statement.\n *\n * Bun's auto-install behavior writes to `node_modules/.cache` whenever a\n * dynamic import targets a missing package, which crashes on Vercel's\n * read-only function filesystem. Restricting probes to the runtime that is\n * actually installed avoids that path entirely.\n */\nexport function setActiveNitroRuntime(version: NitroMajor): void {\n activeNitroRuntime = version\n}\n\n/** @internal Reset the active runtime declaration. Used by tests only. */\nexport function resetActiveNitroRuntime(): void {\n activeNitroRuntime = undefined\n}\n\ntype NitroRuntimeConfigModule = {\n useRuntimeConfig: () => Record<string, any>\n}\n\nfunction nitroV3RuntimeConfigSpecifier(): string {\n return ['nitro', 'runtime-config'].join('/')\n}\n\nfunction nitropackRuntimeSpecifier(): string {\n return ['nitropack', 'runtime'].join('/')\n}\n\nfunction nitropackInternalRuntimeConfigSpecifier(): string {\n return ['nitropack', 'runtime', 'internal', 'config'].join('/')\n}\n\nasync function importOrNull(specifier: string): Promise<unknown> {\n try {\n return await import(specifier)\n } catch {\n return null\n }\n}\n\nfunction isRuntimeConfigModule(mod: unknown): mod is NitroRuntimeConfigModule {\n return (\n typeof mod === 'object'\n && mod !== null\n && 'useRuntimeConfig' in mod\n && typeof (mod as NitroRuntimeConfigModule).useRuntimeConfig === 'function'\n )\n}\n\n/** Snapshot from env, or `undefined` if unset / invalid JSON. */\nexport function readEvlogConfigFromNitroEnv(): EvlogConfig | undefined {\n const raw = process.env[EVLOG_NITRO_ENV]\n if (raw === undefined || raw === '') return undefined\n try {\n return JSON.parse(raw) as EvlogConfig\n } catch {\n return undefined\n }\n}\n\n/**\n * Synchronous evlog config for hot paths (error handler overlay, etc.).\n * Matches {@link resolveEvlogConfigForNitroPlugin} steps 1–2 only.\n */\nexport function readEvlogConfigSync(): EvlogConfig | undefined {\n return readEvlogConfigFromInline() ?? readEvlogConfigFromNitroEnv()\n}\n\nlet cachedNitropackRuntime: NitroRuntimeConfigModule | null | undefined\nlet cachedNitroV3Runtime: NitroRuntimeConfigModule | null | undefined\nlet cachedNitropackInternalConfig: NitroRuntimeConfigModule | null | undefined\n\nasync function getNitropackRuntime(): Promise<NitroRuntimeConfigModule | null> {\n if (cachedNitropackRuntime !== undefined) return cachedNitropackRuntime\n const mod = await importOrNull(nitropackRuntimeSpecifier())\n cachedNitropackRuntime = isRuntimeConfigModule(mod) ? mod : null\n return cachedNitropackRuntime\n}\n\nasync function getNitroV3Runtime(): Promise<NitroRuntimeConfigModule | null> {\n if (cachedNitroV3Runtime !== undefined) return cachedNitroV3Runtime\n const mod = await importOrNull(nitroV3RuntimeConfigSpecifier())\n cachedNitroV3Runtime = isRuntimeConfigModule(mod) ? mod : null\n return cachedNitroV3Runtime\n}\n\nasync function getNitropackInternalRuntimeConfig(): Promise<NitroRuntimeConfigModule | null> {\n if (cachedNitropackInternalConfig !== undefined) return cachedNitropackInternalConfig\n const mod = await importOrNull(nitropackInternalRuntimeConfigSpecifier())\n cachedNitropackInternalConfig = isRuntimeConfigModule(mod) ? mod : null\n return cachedNitropackInternalConfig\n}\n\nfunction evlogSlice(config: Record<string, any>): EvlogConfig | undefined {\n const { evlog } = config\n if (evlog && typeof evlog === 'object') return evlog as EvlogConfig\n return undefined\n}\n\n/**\n * Options for evlog Nitro plugins (nitropack v2 and Nitro v3).\n *\n * Lookup order:\n * 1. `__EVLOG_CONFIG__` — inlined at build time by the evlog Nitro module.\n * Hits in every deployed bundle and skips runtime probing entirely.\n * 2. `process.env.__EVLOG_CONFIG`\n * 3. The active runtime declared by {@link setActiveNitroRuntime} — either\n * Nitro v3 `runtime-config` or nitropack internal config, never both.\n * 4. When no active runtime has been declared (standalone use): probe v3 then\n * nitropack v2 as a best-effort fallback.\n */\nexport async function resolveEvlogConfigForNitroPlugin(): Promise<EvlogConfig | undefined> {\n const fromInline = readEvlogConfigFromInline()\n if (fromInline !== undefined) return fromInline\n\n const fromEnv = readEvlogConfigFromNitroEnv()\n if (fromEnv !== undefined) return fromEnv\n\n if (activeNitroRuntime === 'v3') {\n const v3 = await getNitroV3Runtime()\n if (v3) {\n const slice = evlogSlice(v3.useRuntimeConfig())\n if (slice !== undefined) return slice\n }\n return undefined\n }\n\n if (activeNitroRuntime === 'v2') {\n const internal = await getNitropackInternalRuntimeConfig()\n if (internal) {\n const slice = evlogSlice(internal.useRuntimeConfig())\n if (slice !== undefined) return slice\n }\n return undefined\n }\n\n const v3 = await getNitroV3Runtime()\n if (v3) {\n const slice = evlogSlice(v3.useRuntimeConfig())\n if (slice !== undefined) return slice\n }\n\n const internal = await getNitropackInternalRuntimeConfig()\n if (internal) {\n const slice = evlogSlice(internal.useRuntimeConfig())\n if (slice !== undefined) return slice\n }\n\n return undefined\n}\n\n/**\n * Full `useRuntimeConfig()` object for drain adapters.\n *\n * Honors {@link setActiveNitroRuntime}: when a Nitro plugin has declared its\n * version, only that version's runtime module is probed. When no version has\n * been declared (standalone use outside Nitro), falls back to the historical\n * order: nitropack v2 first, then Nitro v3.\n *\n * When `__EVLOG_CONFIG__` was inlined at build time, returns a synthetic\n * `{ evlog: <inlined> }` record so adapters can read `runtimeConfig.evlog.*`\n * without triggering the dynamic import (issue #312).\n */\nexport async function getNitroRuntimeConfigRecord(): Promise<Record<string, any> | undefined> {\n const inline = readEvlogConfigFromInline()\n if (inline !== undefined) return { evlog: inline }\n\n if (activeNitroRuntime === 'v3') {\n const v3 = await getNitroV3Runtime()\n return v3 ? v3.useRuntimeConfig() : undefined\n }\n\n if (activeNitroRuntime === 'v2') {\n const nitropack = await getNitropackRuntime()\n return nitropack ? nitropack.useRuntimeConfig() : undefined\n }\n\n const nitropack = await getNitropackRuntime()\n if (nitropack) return nitropack.useRuntimeConfig()\n\n const v3 = await getNitroV3Runtime()\n if (v3) return v3.useRuntimeConfig()\n\n return undefined\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-CNV_CXs8.mjs","names":[],"sources":["../package.json"],"sourcesContent":[""],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseError-BeBXEd2V.d.mts","names":[],"sources":["../src/runtime/utils/parseError.ts"],"mappings":";;;iBAcgB,UAAA,CAAW,KAAA,YAAiB,WAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage-7X37OToT.mjs","names":[],"sources":["../src/shared/storage.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks'\nimport type { RequestLogger } from '../types'\n\n/**\n * Create a request-scoped `AsyncLocalStorage` and matching `useLogger`\n * accessor. Every framework that exposes `useLogger()` (Express, Fastify,\n * NestJS, SvelteKit) calls this once at module level.\n *\n * @param contextHint - Appended to the error message when `useLogger()` is\n * called outside of a request, e.g. `\"middleware context. Make sure\n * app.use(evlog()) is registered before your routes.\"`.\n */\nexport function createLoggerStorage(contextHint: string) {\n const storage = new AsyncLocalStorage<RequestLogger>()\n\n function useLogger<T extends object = Record<string, unknown>>(): RequestLogger<T> {\n const logger = storage.getStore()\n if (!logger) {\n throw new Error(\n `[evlog] useLogger() was called outside of an evlog ${contextHint}`,\n )\n }\n /** @internal ALS store is untyped; cast satisfies the caller's generic `T`. */\n return logger as RequestLogger<T>\n }\n\n return { storage, useLogger }\n}\n"],"mappings":";;;;;;;;;;;AAYA,SAAgB,oBAAoB,aAAqB;CACvD,MAAM,UAAU,IAAI,mBAAkC;CAEtD,SAAS,YAA0E;EACjF,MAAM,SAAS,QAAQ,UAAU;AACjC,MAAI,CAAC,OACH,OAAM,IAAI,MACR,sDAAsD,cACvD;;AAGH,SAAO;;AAGT,QAAO;EAAE;EAAS;EAAW"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useLogger-Cfv8Ck8b.d.mts","names":[],"sources":["../src/runtime/server/useLogger.ts"],"mappings":";;;;;AAkCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,SAAA,oBAA6B,MAAA,kBAAA,CAAyB,KAAA,EAAO,WAAA,EAAa,OAAA,YAAmB,aAAA,CAAc,CAAA"}