evlog 2.19.0 → 2.19.2

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 (215) hide show
  1. package/README.md +14 -16
  2. package/dist/adapters/axiom.d.mts +3 -3
  3. package/dist/adapters/axiom.d.mts.map +1 -1
  4. package/dist/adapters/axiom.mjs +10 -14
  5. package/dist/adapters/axiom.mjs.map +1 -1
  6. package/dist/adapters/better-stack.d.mts +2 -2
  7. package/dist/adapters/better-stack.d.mts.map +1 -1
  8. package/dist/adapters/better-stack.mjs +9 -13
  9. package/dist/adapters/better-stack.mjs.map +1 -1
  10. package/dist/adapters/datadog.d.mts +3 -3
  11. package/dist/adapters/datadog.mjs +9 -5
  12. package/dist/adapters/datadog.mjs.map +1 -1
  13. package/dist/adapters/fs.d.mts +1 -1
  14. package/dist/adapters/fs.d.mts.map +1 -1
  15. package/dist/adapters/fs.mjs +14 -1
  16. package/dist/adapters/fs.mjs.map +1 -1
  17. package/dist/adapters/hyperdx.d.mts +2 -2
  18. package/dist/adapters/hyperdx.mjs +3 -3
  19. package/dist/adapters/hyperdx.mjs.map +1 -1
  20. package/dist/adapters/memory.d.mts +2 -3
  21. package/dist/adapters/memory.d.mts.map +1 -1
  22. package/dist/adapters/memory.mjs +2 -3
  23. package/dist/adapters/memory.mjs.map +1 -1
  24. package/dist/adapters/otlp.d.mts +4 -4
  25. package/dist/adapters/otlp.mjs +17 -9
  26. package/dist/adapters/otlp.mjs.map +1 -1
  27. package/dist/adapters/posthog.d.mts +2 -2
  28. package/dist/adapters/posthog.mjs +5 -5
  29. package/dist/adapters/posthog.mjs.map +1 -1
  30. package/dist/adapters/sentry.d.mts +3 -3
  31. package/dist/adapters/sentry.mjs +5 -5
  32. package/dist/adapters/sentry.mjs.map +1 -1
  33. package/dist/ai/index.d.mts +1 -1
  34. package/dist/{audit-BUAajsPU.d.mts → audit-CBfv3rl1.d.mts} +77 -53
  35. package/dist/audit-CBfv3rl1.d.mts.map +1 -0
  36. package/dist/{audit-BFwTUxBJ.mjs → audit-CL0q7GJU.mjs} +37 -110
  37. package/dist/audit-CL0q7GJU.mjs.map +1 -0
  38. package/dist/audit-action.d.mts +2 -0
  39. package/dist/audit-action.mjs +74 -0
  40. package/dist/audit-action.mjs.map +1 -0
  41. package/dist/audit.d.mts +2 -0
  42. package/dist/audit.mjs +3 -0
  43. package/dist/better-auth/index.d.mts +1 -1
  44. package/dist/browser.d.mts +1 -1
  45. package/dist/{index-CE7kH0II.d.mts → catalog-CyemiLYG.d.mts} +4 -3
  46. package/dist/catalog-CyemiLYG.d.mts.map +1 -0
  47. package/dist/catalog.d.mts +2 -0
  48. package/dist/catalog.mjs +205 -0
  49. package/dist/catalog.mjs.map +1 -0
  50. package/dist/deferred-drain-jeajC8QF.mjs +36 -0
  51. package/dist/deferred-drain-jeajC8QF.mjs.map +1 -0
  52. package/dist/{define-DGwZkZ7x.d.mts → define-BuDJpV2b.d.mts} +3 -3
  53. package/dist/{define-DGwZkZ7x.d.mts.map → define-BuDJpV2b.d.mts.map} +1 -1
  54. package/dist/{drain-D_fy7m0n.mjs → drain-6lV-g7JB.mjs} +34 -3
  55. package/dist/drain-6lV-g7JB.mjs.map +1 -0
  56. package/dist/elysia/index.d.mts +4 -4
  57. package/dist/elysia/index.d.mts.map +1 -1
  58. package/dist/elysia/index.mjs +2 -2
  59. package/dist/elysia/index.mjs.map +1 -1
  60. package/dist/enrich-error-stack-next.node-BecxSKUc.mjs +120 -0
  61. package/dist/enrich-error-stack-next.node-BecxSKUc.mjs.map +1 -0
  62. package/dist/{enricher-CuMbbdqp.d.mts → enricher-VdBVX4oT.d.mts} +2 -2
  63. package/dist/{enricher-CuMbbdqp.d.mts.map → enricher-VdBVX4oT.d.mts.map} +1 -1
  64. package/dist/enrichers.d.mts +2 -2
  65. package/dist/{error-DwajXSKM.d.mts → error-CPCM5a1D.d.mts} +2 -2
  66. package/dist/{error-DwajXSKM.d.mts.map → error-CPCM5a1D.d.mts.map} +1 -1
  67. package/dist/error.d.mts +1 -1
  68. package/dist/{errors-CAq8pYpW.d.mts → errors-ZdY6Ohi6.d.mts} +2 -2
  69. package/dist/{errors-CAq8pYpW.d.mts.map → errors-ZdY6Ohi6.d.mts.map} +1 -1
  70. package/dist/express/index.d.mts +4 -4
  71. package/dist/express/index.d.mts.map +1 -1
  72. package/dist/express/index.mjs +3 -3
  73. package/dist/express/index.mjs.map +1 -1
  74. package/dist/fastify/index.d.mts +4 -4
  75. package/dist/fastify/index.d.mts.map +1 -1
  76. package/dist/fastify/index.mjs +4 -2
  77. package/dist/fastify/index.mjs.map +1 -1
  78. package/dist/{fork-CYm453dq.mjs → fork-Di44utlp.mjs} +2 -2
  79. package/dist/fork-Di44utlp.mjs.map +1 -0
  80. package/dist/hono/index.d.mts +3 -3
  81. package/dist/hono/index.d.mts.map +1 -1
  82. package/dist/hono/index.mjs +3 -6
  83. package/dist/hono/index.mjs.map +1 -1
  84. package/dist/{http-Bept5EIC.mjs → http-DA3RWQrm.mjs} +2 -2
  85. package/dist/{http-Bept5EIC.mjs.map → http-DA3RWQrm.mjs.map} +1 -1
  86. package/dist/http.d.mts +1 -1
  87. package/dist/index.d.mts +9 -9
  88. package/dist/index.mjs +3 -203
  89. package/dist/instrumentation-create-STGmQGQt.d.mts +115 -0
  90. package/dist/instrumentation-create-STGmQGQt.d.mts.map +1 -0
  91. package/dist/{integration-CR601uyW.mjs → integration-2PpI-bCm.mjs} +2 -2
  92. package/dist/{integration-CR601uyW.mjs.map → integration-2PpI-bCm.mjs.map} +1 -1
  93. package/dist/{logger-BccCJUyD.d.mts → logger-DWTPZ0c1.d.mts} +7 -3
  94. package/dist/logger-DWTPZ0c1.d.mts.map +1 -0
  95. package/dist/logger.d.mts +2 -2
  96. package/dist/logger.mjs +1 -1
  97. package/dist/{middleware-DQ6-h8h0.d.mts → middleware-CjVyGyrG.d.mts} +3 -3
  98. package/dist/middleware-CjVyGyrG.d.mts.map +1 -0
  99. package/dist/nestjs/index.d.mts +5 -5
  100. package/dist/nestjs/index.d.mts.map +1 -1
  101. package/dist/nestjs/index.mjs +3 -3
  102. package/dist/nestjs/index.mjs.map +1 -1
  103. package/dist/next/client.d.mts +1 -1
  104. package/dist/next/index.d.mts +5 -5
  105. package/dist/next/index.d.mts.map +1 -1
  106. package/dist/next/index.mjs +16 -3
  107. package/dist/next/index.mjs.map +1 -1
  108. package/dist/next/instrumentation/create.d.mts +2 -0
  109. package/dist/next/instrumentation/create.mjs +157 -0
  110. package/dist/next/instrumentation/create.mjs.map +1 -0
  111. package/dist/next/instrumentation.d.mts +2 -77
  112. package/dist/next/instrumentation.mjs +32 -81
  113. package/dist/next/instrumentation.mjs.map +1 -1
  114. package/dist/next/stream.d.mts +1 -1
  115. package/dist/next/stream.mjs +2 -2
  116. package/dist/next/stream.mjs.map +1 -1
  117. package/dist/nitro/errorHandler.mjs +23 -7
  118. package/dist/nitro/errorHandler.mjs.map +1 -1
  119. package/dist/nitro/module.d.mts +2 -2
  120. package/dist/nitro/module.mjs +1 -1
  121. package/dist/nitro/plugin.mjs +89 -4
  122. package/dist/nitro/plugin.mjs.map +1 -1
  123. package/dist/nitro/v3/errorHandler.d.mts +0 -10
  124. package/dist/nitro/v3/errorHandler.mjs +13 -3
  125. package/dist/nitro/v3/errorHandler.mjs.map +1 -1
  126. package/dist/nitro/v3/index.d.mts +2 -2
  127. package/dist/nitro/v3/module.d.mts +1 -1
  128. package/dist/nitro/v3/module.mjs +1 -1
  129. package/dist/nitro/v3/plugin.mjs +4 -4
  130. package/dist/nitro/v3/plugin.mjs.map +1 -1
  131. package/dist/nitro/v3/useLogger.d.mts +2 -2
  132. package/dist/nitro/v3/useLogger.d.mts.map +1 -1
  133. package/dist/nitro/v3/useLogger.mjs.map +1 -1
  134. package/dist/{nitro-zCXTylj4.d.mts → nitro--E4op34w.d.mts} +2 -2
  135. package/dist/{nitro-zCXTylj4.d.mts.map → nitro--E4op34w.d.mts.map} +1 -1
  136. package/dist/{nitro-ClRZLD1g.mjs → nitro-ClHmVj1H.mjs} +29 -2
  137. package/dist/nitro-ClHmVj1H.mjs.map +1 -0
  138. package/dist/{nodeResponse-CIEEbrNE.mjs → nodeResponse-DKrYWrxk.mjs} +1 -1
  139. package/dist/{nodeResponse-CIEEbrNE.mjs.map → nodeResponse-DKrYWrxk.mjs.map} +1 -1
  140. package/dist/nuxt/module.d.mts +1 -1
  141. package/dist/nuxt/module.mjs +3 -3
  142. package/dist/orpc/index.d.mts +4 -4
  143. package/dist/orpc/index.d.mts.map +1 -1
  144. package/dist/orpc/index.mjs +2 -2
  145. package/dist/orpc/index.mjs.map +1 -1
  146. package/dist/{package-CUhII9DA.mjs → package-Bgs0VSDF.mjs} +2 -2
  147. package/dist/package-Bgs0VSDF.mjs.map +1 -0
  148. package/dist/{parseError-Cagr-Ctc.d.mts → parseError-BwBg-iW4.d.mts} +2 -2
  149. package/dist/parseError-BwBg-iW4.d.mts.map +1 -0
  150. package/dist/pipeline.d.mts +0 -19
  151. package/dist/pipeline.d.mts.map +1 -1
  152. package/dist/pipeline.mjs +12 -0
  153. package/dist/pipeline.mjs.map +1 -1
  154. package/dist/{pretty-error-CVVgwlTn.mjs → pretty-error-THg0U0w9.mjs} +37 -27
  155. package/dist/pretty-error-THg0U0w9.mjs.map +1 -0
  156. package/dist/{pretty-error-snippet.node-c_bzjg7g.mjs → pretty-error-snippet.node-itfCajBM.mjs} +3 -2
  157. package/dist/{pretty-error-snippet.node-c_bzjg7g.mjs.map → pretty-error-snippet.node-itfCajBM.mjs.map} +1 -1
  158. package/dist/react-router/index.d.mts +4 -4
  159. package/dist/react-router/index.d.mts.map +1 -1
  160. package/dist/react-router/index.mjs +2 -2
  161. package/dist/react-router/index.mjs.map +1 -1
  162. package/dist/register-disk-snippet-B_JyhodL.mjs +21 -0
  163. package/dist/register-disk-snippet-B_JyhodL.mjs.map +1 -0
  164. package/dist/runtime/client/log.d.mts +1 -1
  165. package/dist/runtime/server/routes/_evlog/ingest.post.d.mts +7 -0
  166. package/dist/runtime/server/routes/_evlog/ingest.post.mjs +39 -3
  167. package/dist/runtime/server/routes/_evlog/ingest.post.mjs.map +1 -1
  168. package/dist/runtime/server/useLogger.d.mts +1 -1
  169. package/dist/runtime/server/useLogger.mjs.map +1 -1
  170. package/dist/runtime/utils/parseError.d.mts +2 -2
  171. package/dist/{source-location-xkDGiERl.mjs → source-location-CHOPF2nd.mjs} +2 -1
  172. package/dist/{source-location-xkDGiERl.mjs.map → source-location-CHOPF2nd.mjs.map} +1 -1
  173. package/dist/{storage-7X37OToT.mjs → storage-D4sBVffQ.mjs} +1 -1
  174. package/dist/storage-D4sBVffQ.mjs.map +1 -0
  175. package/dist/stream.d.mts +1 -1
  176. package/dist/stream.mjs +1 -1
  177. package/dist/sveltekit/index.d.mts +3 -4
  178. package/dist/sveltekit/index.d.mts.map +1 -1
  179. package/dist/sveltekit/index.mjs +5 -3
  180. package/dist/sveltekit/index.mjs.map +1 -1
  181. package/dist/toolkit.d.mts +22 -8
  182. package/dist/toolkit.d.mts.map +1 -1
  183. package/dist/toolkit.mjs +7 -7
  184. package/dist/types.d.mts +1 -1
  185. package/dist/{useLogger-Dv52PDpH.d.mts → useLogger-DiRWGD33.d.mts} +3 -3
  186. package/dist/useLogger-DiRWGD33.d.mts.map +1 -0
  187. package/dist/{utils-DmNbZwBZ.d.mts → utils-XPMPENUK.d.mts} +2 -2
  188. package/dist/{utils-DmNbZwBZ.d.mts.map → utils-XPMPENUK.d.mts.map} +1 -1
  189. package/dist/utils.d.mts +1 -1
  190. package/dist/utils.mjs +2 -1
  191. package/dist/utils.mjs.map +1 -1
  192. package/dist/vite/index.d.mts +1 -1
  193. package/dist/vite/index.mjs +1 -1
  194. package/dist/workers.d.mts +3 -3
  195. package/dist/workers.d.mts.map +1 -1
  196. package/dist/workers.mjs +1 -1
  197. package/dist/workers.mjs.map +1 -1
  198. package/package.json +20 -1
  199. package/dist/audit-BFwTUxBJ.mjs.map +0 -1
  200. package/dist/audit-BUAajsPU.d.mts.map +0 -1
  201. package/dist/drain-D_fy7m0n.mjs.map +0 -1
  202. package/dist/enrich-drain-CG_2Nix-.mjs +0 -122
  203. package/dist/enrich-drain-CG_2Nix-.mjs.map +0 -1
  204. package/dist/fork-CYm453dq.mjs.map +0 -1
  205. package/dist/index-CE7kH0II.d.mts.map +0 -1
  206. package/dist/index.mjs.map +0 -1
  207. package/dist/logger-BccCJUyD.d.mts.map +0 -1
  208. package/dist/middleware-DQ6-h8h0.d.mts.map +0 -1
  209. package/dist/next/instrumentation.d.mts.map +0 -1
  210. package/dist/nitro-ClRZLD1g.mjs.map +0 -1
  211. package/dist/package-CUhII9DA.mjs.map +0 -1
  212. package/dist/parseError-Cagr-Ctc.d.mts.map +0 -1
  213. package/dist/pretty-error-CVVgwlTn.mjs.map +0 -1
  214. package/dist/storage-7X37OToT.mjs.map +0 -1
  215. package/dist/useLogger-Dv52PDpH.d.mts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrumentation.d.mts","names":[],"sources":["../../src/next/instrumentation.ts"],"mappings":";;;;UAIiB,0BAAA;EACf,IAAA;EACA,MAAA;EACA,OAAA,EAAS,MAAA;AAAA;;UAIM,+BAAA;EACf,UAAA;EACA,SAAA;EACA,SAAA;EACA,YAAA;AAAA;;;;;UAOe,yBAAA;EACf,QAAA,eAAuB,OAAA;EACvB,cAAA,GACE,KAAA;IAAS,MAAA;EAAA,IAAoB,KAAA,EAC7B,OAAA,EAAS,0BAAA,EACT,OAAA,EAAS,+BAAA,YACC,OAAA;AAAA;;;;;;;;;;;;;;iBAgBE,yBAAA,CAA0B,MAAA,QAAc,OAAA,CAAQ,yBAAA;;;IAejD,MAAA;EAAA,IAAoB,KAAA,EAAK,OAAA,EACzB,0BAAA,EAA0B,OAAA,EAC1B,+BAAA,GAA+B,OAAA;AAAA;AAAA,UAS7B,sBAAA;EA1CI;EA4CnB,OAAA;EA5Bc;EA8Bd,OAAA;;EAEA,GAAA,GAAM,OAAA,CAAQ,kBAAA;EAhCwC;EAkCtD,MAAA;EAnBiC;EAqBjC,MAAA;EAnBa;EAqBb,QAAA,GAAW,cAAA;EArBiC;EAuB5C,QAAA,GAAW,QAAA;EAxC2C;EA0CtD,SAAA;EA1CwC;EA4CxC,KAAA,IAAS,GAAA,EAAK,YAAA,YAAwB,OAAA;;EAEtC,aAAA;AAAA;AAAA,UAGQ,qBAAA;EACR,QAAA;EACA,cAAA,GACE,KAAA;IAAS,MAAA;EAAA,IAAoB,KAAA,EAC7B,OAAA,EAAS,0BAAA,EACT,OAAA,EAAS,+BAAA;AAAA;AAAA,iBAMG,qBAAA,CAAsB,OAAA,GAAS,sBAAA,GAA8B,qBAAA"}
@@ -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":"package-CUhII9DA.mjs","names":[],"sources":["../package.json"],"sourcesContent":[""],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseError-Cagr-Ctc.d.mts","names":[],"sources":["../src/runtime/utils/parseError.ts"],"mappings":";;;iBAcgB,UAAA,CAAW,KAAA,YAAiB,WAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pretty-error-CVVgwlTn.mjs","names":[],"sources":["../src/shared/pretty-error.ts"],"sourcesContent":["import { colors, isBrowser, isDev } from '../utils'\nimport type { ResolvedPrettyError } from './dev-terminal'\n\n/** @internal Server-only snippet reader registered by Nitro plugin or initLogger. */\ntype SnippetReader = (file: string, line: number, contextLines?: number) => CodeSnippetLine[] | null\n\nlet snippetReader: SnippetReader | null = null\n\n/**\n * Register a disk-backed snippet reader (Node.js integrations only).\n * @internal\n */\nexport function registerPrettyErrorSnippetReader(reader: SnippetReader | null): void {\n snippetReader = reader\n}\n\n/** Tree-only breathing line (connector without content). */\nexport const PRETTY_ERROR_TREE_SPACER = '__EVLOG_TREE_SPACER__'\n\nfunction pushTreeSpacer(children: string[]) {\n children.push(PRETTY_ERROR_TREE_SPACER)\n}\n\n/** Pretty-print tree node for error sections. */\nexport interface PrettyErrorTreeEntry {\n key: string\n value: string\n /** Optional ANSI color for the value (server only). */\n valueColor?: string\n children?: string[]\n}\n\n/** Normalized error fields extracted from wide-event `error` context. */\nexport interface NormalizedErrorContext {\n message: string\n name?: string\n code?: string\n why?: string\n fix?: string\n link?: string\n status?: number\n stack?: string\n cause?: string\n}\n\n/** Parsed V8 stack frame. */\nexport interface StackFrame {\n raw: string\n file?: string\n line?: number\n column?: number\n fn?: string\n /** True for application source (not node_modules / build output). */\n isApp: boolean\n}\n\n/** Options for {@link buildErrorEntries}. */\nexport type PrettyErrorOptions = Partial<ResolvedPrettyError> & {\n /** Project root for relative paths in snippets. @default process.cwd() */\n cwd?: string\n}\n\nexport interface CodeSnippetLine {\n line: number\n content: string\n isErrorLine: boolean\n}\n\nconst SKIP_PATH_RE = /(?:^|[/\\\\])(?:node_modules|\\.nuxt|\\.output)(?:[/\\\\]|$)/\nconst SKIP_FRAME_PATH_RE = /(?:^|[/\\\\])(?:packages[/\\\\]evlog|evlog[/\\\\](?:dist|src))(?:[/\\\\]|$)/\nconst SKIP_FRAME_FN_RE = /^(?:createError|EvlogError|new EvlogError)$/\n\nfunction isPlainObject(val: unknown): val is Record<string, unknown> {\n return val !== null && typeof val === 'object' && !Array.isArray(val)\n}\n\nfunction pickString(obj: Record<string, unknown>, key: string): string | undefined {\n const val = obj[key]\n return typeof val === 'string' && val.length > 0 ? val : undefined\n}\n\nfunction pickNumber(obj: Record<string, unknown>, key: string): number | undefined {\n const val = obj[key]\n return typeof val === 'number' ? val : undefined\n}\n\nfunction extractGuidance(data: Record<string, unknown>): Pick<NormalizedErrorContext, 'code' | 'why' | 'fix' | 'link'> {\n return {\n code: pickString(data, 'code'),\n why: pickString(data, 'why'),\n fix: pickString(data, 'fix'),\n link: pickString(data, 'link'),\n }\n}\n\n/**\n * Extract structured error fields from a wide-event `error` value.\n */\nexport function normalizeErrorContext(error: unknown): NormalizedErrorContext | null {\n if (error === null || error === undefined) return null\n\n if (typeof error === 'string') {\n return { message: error }\n }\n\n if (!isPlainObject(error)) {\n return { message: String(error) }\n }\n\n const message = pickString(error, 'message')\n ?? pickString(error, 'statusText')\n ?? pickString(error, 'statusMessage')\n ?? 'Unknown error'\n\n const result: NormalizedErrorContext = {\n message,\n name: pickString(error, 'name'),\n code: pickString(error, 'code'),\n why: pickString(error, 'why'),\n fix: pickString(error, 'fix'),\n link: pickString(error, 'link'),\n status: pickNumber(error, 'status') ?? pickNumber(error, 'statusCode'),\n stack: pickString(error, 'stack'),\n }\n\n const { data, cause } = error\n if (isPlainObject(data)) {\n const guidance = extractGuidance(data)\n if (!result.code) result.code = guidance.code\n if (!result.why) result.why = guidance.why\n if (!result.fix) result.fix = guidance.fix\n if (!result.link) result.link = guidance.link\n }\n\n if (cause instanceof Error) {\n result.cause = cause.message\n } else if (isPlainObject(cause) && pickString(cause, 'message')) {\n result.cause = pickString(cause, 'message')\n }\n\n return result\n}\n\n/** Decode a `file://` URL or path for display and snippet lookup. */\nexport function decodeFileUrl(file: string): string {\n if (file.startsWith('file://')) {\n try {\n return decodeURIComponent(new URL(file).pathname)\n } catch {\n return file.slice('file://'.length)\n }\n }\n return file\n}\n\nfunction isAppPath(file: string): boolean {\n const normalized = file.replace(/\\\\/g, '/')\n if (SKIP_PATH_RE.test(normalized)) return false\n if (normalized.includes('/node_modules/')) return false\n return true\n}\n\nfunction formatDisplayPath(file: string, cwd: string): string {\n const decoded = decodeFileUrl(file).replace(/\\\\/g, '/')\n const cwdNorm = cwd.replace(/\\\\/g, '/').replace(/\\/$/, '')\n if (cwdNorm && decoded.startsWith(`${cwdNorm}/`)) {\n const rel = decoded.slice(cwdNorm.length + 1)\n return rel.startsWith('./') ? rel.slice(2) : rel\n }\n const serverIdx = decoded.indexOf('/server/')\n if (serverIdx >= 0) return decoded.slice(serverIdx + 1)\n const srcIdx = decoded.indexOf('/src/')\n if (srcIdx >= 0) return decoded.slice(srcIdx + 1)\n return decoded\n}\n\n/**\n * Parse a V8 stack trace string into frames.\n */\nexport function parseStackFrames(stack: string | undefined): StackFrame[] {\n if (!stack) return []\n\n const lines = stack.split('\\n')\n const frames: StackFrame[] = []\n\n for (const line of lines) {\n const trimmed = line.trim()\n if (!trimmed.startsWith('at ')) continue\n\n const withFn = trimmed.match(/^at (.+?) \\((.+):(\\d+):(\\d+)\\)$/)\n if (withFn) {\n const [, fn, file, lineStr, colStr] = withFn\n frames.push({\n raw: trimmed,\n fn,\n file,\n line: Number(lineStr),\n column: Number(colStr),\n isApp: isAppPath(file!),\n })\n continue\n }\n\n const withoutFn = trimmed.match(/^at (.+):(\\d+):(\\d+)$/)\n if (withoutFn) {\n const [, file, lineStr, colStr] = withoutFn\n frames.push({\n raw: trimmed,\n file,\n line: Number(lineStr),\n column: Number(colStr),\n isApp: isAppPath(file!),\n })\n continue\n }\n\n const asyncFn = trimmed.match(/^at async (.+?) \\((.+):(\\d+):(\\d+)\\)$/)\n if (asyncFn) {\n const [, fn, file, lineStr, colStr] = asyncFn\n frames.push({\n raw: trimmed,\n fn: `async ${fn}`,\n file,\n line: Number(lineStr),\n column: Number(colStr),\n isApp: isAppPath(file!),\n })\n }\n }\n\n return frames\n}\n\nfunction isInternalErrorFrame(frame: StackFrame): boolean {\n if (frame.fn) {\n const fn = frame.fn.replace(/^async /, '')\n if (SKIP_FRAME_FN_RE.test(fn)) return true\n }\n if (!frame.file) return true\n const path = decodeFileUrl(frame.file).replace(/\\\\/g, '/')\n if (SKIP_FRAME_PATH_RE.test(path)) return true\n if (path.includes('.nuxt/')) return true\n return false\n}\n\n/**\n * Pick the most useful frame for code snippets (prefer app source over bundles).\n */\nexport function pickPrimaryFrame(frames: StackFrame[]): StackFrame | undefined {\n const appFrames = frames.filter(f => f.isApp && f.file && f.line && !isInternalErrorFrame(f))\n if (appFrames.length === 0) return undefined\n\n const scored = appFrames.map((frame) => {\n const path = decodeFileUrl(frame.file!).replace(/\\\\/g, '/')\n let score = 0\n if (path.includes('/server/')) score += 8\n if (/\\.(?:ts|tsx|vue)$/.test(path)) score += 6\n if (path.includes('/src/')) score += 3\n if (path.startsWith('./')) score += 2\n if (/\\.(?:js|jsx|mjs)$/.test(path)) score += 1\n if (path.includes('.nuxt/')) score -= 20\n if (path.includes('/packages/evlog/')) score -= 20\n return { frame, score }\n })\n\n scored.sort((a, b) => b.score - a.score)\n return scored[0]?.frame ?? appFrames[0]\n}\n\n/**\n * Read source lines around a stack frame when a server snippet reader is registered.\n */\nexport function readCodeSnippet(\n file: string,\n line: number,\n contextLines = 2,\n): CodeSnippetLine[] | null {\n if (!isDev() || isBrowser() || !snippetReader) return null\n return snippetReader(file, line, contextLines)\n}\n\nfunction formatSnippetLines(snippet: CodeSnippetLine[]): string[] {\n const width = String(snippet[snippet.length - 1]?.line ?? 0).length\n return snippet.map(({ line, content, isErrorLine }) => {\n const marker = isErrorLine ? `${colors.red}❯${colors.reset}` : `${colors.dim} ${colors.reset}`\n const numColor = isErrorLine ? colors.red : colors.gray\n const trimmed = content.length > 120 ? `${content.slice(0, 117)}…` : content\n return `${marker} ${numColor}${String(line).padStart(width, ' ')}${colors.reset} ${colors.dim}┃${colors.reset} ${colors.dim}${trimmed}${colors.reset}`\n })\n}\n\nfunction formatFrameLocation(frame: StackFrame, cwd: string): string {\n const file = frame.file ? formatDisplayPath(frame.file, cwd) : 'unknown'\n const loc = frame.line ? `${file}:${frame.line}` : file\n return frame.fn ? `at ${frame.fn} (${loc})` : `at ${loc}`\n}\n\nfunction formatCollapsedFrame(frame: StackFrame, cwd: string): string {\n const file = frame.file ? formatDisplayPath(frame.file, cwd) : 'unknown'\n const loc = frame.line ? `${file}:${frame.line}` : file\n const prefix = frame.fn?.startsWith('async') ? 'at async ' : 'at '\n const fn = frame.fn?.replace(/^async /, '') ?? loc\n if (frame.fn && frame.fn !== loc) {\n return `${prefix}${fn} (${loc})`\n }\n return `${prefix}${loc}`\n}\n\nconst GUIDANCE_WRAP_WIDTH = 76\nconst GUIDANCE_CONTINUATION = ' '\n\n/** Wrap guidance text with hanging indent for long Why/Fix lines. */\nfunction formatGuidanceLine(label: string, text: string, labelColor: string): string[] {\n const prefix = `${labelColor}${label}:${colors.reset} `\n const lines: string[] = []\n let remaining = text.trim()\n let first = true\n\n while (remaining.length > 0) {\n const budget = first\n ? Math.max(24, GUIDANCE_WRAP_WIDTH - prefix.length)\n : Math.max(24, GUIDANCE_WRAP_WIDTH - GUIDANCE_CONTINUATION.length)\n if (remaining.length <= budget) {\n lines.push(first ? `${prefix}${remaining}` : `${GUIDANCE_CONTINUATION}${remaining}`)\n break\n }\n let split = remaining.lastIndexOf(' ', budget)\n if (split <= 0) split = budget\n const chunk = remaining.slice(0, split).trimEnd()\n lines.push(first ? `${prefix}${chunk}` : `${GUIDANCE_CONTINUATION}${chunk}`)\n remaining = remaining.slice(split).trimStart()\n first = false\n }\n\n return lines\n}\n\n/**\n * Build pretty-print tree entries for a wide-event `error` field.\n */\nexport function buildErrorEntries(\n error: unknown,\n options: PrettyErrorOptions = {},\n): PrettyErrorTreeEntry[] {\n const normalized = normalizeErrorContext(error)\n if (!normalized) return []\n\n const cwd = options.cwd ?? (typeof process !== 'undefined' && typeof process.cwd === 'function' ? process.cwd() : '.')\n const compact = options.compact ?? isDev()\n const detail = options.detail ?? 'full'\n const guidanceOnly = detail === 'guidance'\n const showFrames = !guidanceOnly && !isBrowser() && (options.snippet ?? isDev())\n const stackDepth = guidanceOnly\n ? 0\n : (options.stackDepth ?? (compact ? 2 : 3))\n const snippetContextLines = compact ? 1 : 2\n\n const children: string[] = []\n const frames = guidanceOnly ? [] : parseStackFrames(normalized.stack)\n const primary = guidanceOnly ? undefined : pickPrimaryFrame(frames)\n\n if (!guidanceOnly && primary?.file && primary.line) {\n pushTreeSpacer(children)\n if (showFrames) {\n const snippet = readCodeSnippet(primary.file, primary.line, snippetContextLines)\n children.push(`${colors.dim} ${formatFrameLocation(primary, cwd)}${colors.reset}`)\n if (snippet) {\n children.push(...formatSnippetLines(snippet))\n }\n } else {\n children.push(`${colors.dim} ${formatFrameLocation(primary, cwd)}${colors.reset}`)\n }\n }\n\n if (normalized.code) {\n children.push(`${colors.dim}Code:${colors.reset} ${normalized.code}`)\n }\n\n const hasGuidance = Boolean(normalized.why || normalized.fix || normalized.link)\n if (hasGuidance) {\n pushTreeSpacer(children)\n }\n\n if (normalized.why) {\n children.push(...formatGuidanceLine('Why', normalized.why, colors.yellow))\n }\n if (normalized.fix) {\n children.push(...formatGuidanceLine('Fix', normalized.fix, colors.cyan))\n }\n if (normalized.link) {\n children.push(`${colors.dim}More:${colors.reset} ${normalized.link}`)\n }\n\n if (normalized.cause && normalized.cause !== normalized.message) {\n children.push(`${colors.dim}Caused by:${colors.reset} ${normalized.cause}`)\n }\n\n const hiddenCount = guidanceOnly ? 0 : frames.filter(f => !f.isApp || isInternalErrorFrame(f)).length\n const tailFrames = stackDepth > 0\n ? frames.filter(f => f !== primary && !isInternalErrorFrame(f)).slice(0, stackDepth)\n : []\n\n if (!guidanceOnly && (hiddenCount > 0 || tailFrames.length > 0)) {\n pushTreeSpacer(children)\n if (hiddenCount > 0) {\n children.push(`${colors.gray}stack (${hiddenCount} frame${hiddenCount === 1 ? '' : 's'} hidden in node_modules)${colors.reset}`)\n } else {\n children.push(`${colors.gray}stack${colors.reset}`)\n }\n for (const frame of tailFrames) {\n children.push(`${colors.gray} ${formatCollapsedFrame(frame, cwd)}${colors.reset}`)\n }\n }\n\n return [\n {\n key: 'error',\n value: `${colors.red}${colors.bold}${normalized.message}${colors.reset}`,\n children: children.length > 0 ? children : undefined,\n },\n ]\n}\n"],"mappings":"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"}
@@ -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-Dv52PDpH.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"}