evlog 2.13.0 → 2.14.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 (89) hide show
  1. package/README.md +73 -0
  2. package/dist/adapters/axiom.d.mts +1 -1
  3. package/dist/adapters/better-stack.d.mts +1 -1
  4. package/dist/adapters/datadog.d.mts +1 -1
  5. package/dist/adapters/fs.d.mts +1 -1
  6. package/dist/adapters/hyperdx.d.mts +1 -1
  7. package/dist/adapters/otlp.d.mts +1 -1
  8. package/dist/adapters/posthog.d.mts +1 -1
  9. package/dist/adapters/sentry.d.mts +1 -1
  10. package/dist/ai/index.d.mts +106 -5
  11. package/dist/ai/index.d.mts.map +1 -1
  12. package/dist/ai/index.mjs +28 -5
  13. package/dist/ai/index.mjs.map +1 -1
  14. package/dist/{logger-DnobymUQ.mjs → audit-d9esRZOK.mjs} +703 -4
  15. package/dist/audit-d9esRZOK.mjs.map +1 -0
  16. package/dist/{types-DbzDln7O.d.mts → audit-mUutdf6A.d.mts} +499 -3
  17. package/dist/audit-mUutdf6A.d.mts.map +1 -0
  18. package/dist/better-auth/index.d.mts +1 -1
  19. package/dist/browser.d.mts +1 -1
  20. package/dist/elysia/index.d.mts +2 -2
  21. package/dist/elysia/index.mjs +2 -2
  22. package/dist/enrichers.d.mts +1 -1
  23. package/dist/{error-B9CiGK_i.d.mts → error-D1FZI2Kd.d.mts} +2 -2
  24. package/dist/{error-B9CiGK_i.d.mts.map → error-D1FZI2Kd.d.mts.map} +1 -1
  25. package/dist/error.d.mts +1 -1
  26. package/dist/{errors-Dr0r4OpR.d.mts → errors-NIXCyk6I.d.mts} +2 -2
  27. package/dist/{errors-Dr0r4OpR.d.mts.map → errors-NIXCyk6I.d.mts.map} +1 -1
  28. package/dist/express/index.d.mts +2 -2
  29. package/dist/express/index.mjs +2 -2
  30. package/dist/fastify/index.d.mts +2 -2
  31. package/dist/fastify/index.mjs +2 -2
  32. package/dist/{fork-Y4z8iHti.mjs → fork-CTJXnpl8.mjs} +3 -3
  33. package/dist/{fork-Y4z8iHti.mjs.map → fork-CTJXnpl8.mjs.map} +1 -1
  34. package/dist/hono/index.d.mts +2 -2
  35. package/dist/hono/index.mjs +1 -1
  36. package/dist/http.d.mts +1 -1
  37. package/dist/index.d.mts +7 -7
  38. package/dist/index.mjs +2 -2
  39. package/dist/{logger-Dp6nYWjH.d.mts → logger-b3epPH0N.d.mts} +4 -4
  40. package/dist/logger-b3epPH0N.d.mts.map +1 -0
  41. package/dist/logger.d.mts +1 -1
  42. package/dist/logger.mjs +1 -1
  43. package/dist/{middleware-BtBuosFV.mjs → middleware-BWOJ7JI0.mjs} +2 -2
  44. package/dist/{middleware-BtBuosFV.mjs.map → middleware-BWOJ7JI0.mjs.map} +1 -1
  45. package/dist/{middleware-FgC1OdOD.d.mts → middleware-BYf26Lfu.d.mts} +2 -2
  46. package/dist/{middleware-FgC1OdOD.d.mts.map → middleware-BYf26Lfu.d.mts.map} +1 -1
  47. package/dist/nestjs/index.d.mts +2 -2
  48. package/dist/nestjs/index.mjs +2 -2
  49. package/dist/next/client.d.mts +1 -1
  50. package/dist/next/index.d.mts +4 -4
  51. package/dist/next/index.mjs +2 -2
  52. package/dist/next/instrumentation.d.mts +1 -1
  53. package/dist/next/instrumentation.mjs +1 -1
  54. package/dist/nitro/module.d.mts +2 -2
  55. package/dist/nitro/plugin.mjs +1 -1
  56. package/dist/nitro/v3/index.d.mts +2 -2
  57. package/dist/nitro/v3/module.d.mts +1 -1
  58. package/dist/nitro/v3/plugin.mjs +1 -1
  59. package/dist/nitro/v3/useLogger.d.mts +1 -1
  60. package/dist/{nitro-CDHLfRdw.d.mts → nitro-DenB86W6.d.mts} +2 -2
  61. package/dist/{nitro-CDHLfRdw.d.mts.map → nitro-DenB86W6.d.mts.map} +1 -1
  62. package/dist/nuxt/module.d.mts +1 -1
  63. package/dist/nuxt/module.mjs +1 -1
  64. package/dist/{parseError-DM-lyezZ.d.mts → parseError-BR9pocvY.d.mts} +2 -2
  65. package/dist/parseError-BR9pocvY.d.mts.map +1 -0
  66. package/dist/react-router/index.d.mts +2 -2
  67. package/dist/react-router/index.mjs +2 -2
  68. package/dist/runtime/client/log.d.mts +1 -1
  69. package/dist/runtime/server/routes/_evlog/ingest.post.mjs +1 -1
  70. package/dist/runtime/server/useLogger.d.mts +1 -1
  71. package/dist/runtime/utils/parseError.d.mts +2 -2
  72. package/dist/sveltekit/index.d.mts +2 -2
  73. package/dist/sveltekit/index.mjs +2 -2
  74. package/dist/toolkit.d.mts +3 -3
  75. package/dist/toolkit.mjs +2 -2
  76. package/dist/types.d.mts +2 -2
  77. package/dist/{useLogger-N5A-d5l9.d.mts → useLogger-C56tDPwf.d.mts} +2 -2
  78. package/dist/{useLogger-N5A-d5l9.d.mts.map → useLogger-C56tDPwf.d.mts.map} +1 -1
  79. package/dist/{utils-DnX6VMNi.d.mts → utils-DzGCLRFe.d.mts} +2 -2
  80. package/dist/{utils-DnX6VMNi.d.mts.map → utils-DzGCLRFe.d.mts.map} +1 -1
  81. package/dist/utils.d.mts +1 -1
  82. package/dist/vite/index.d.mts +1 -1
  83. package/dist/workers.d.mts +1 -1
  84. package/dist/workers.mjs +1 -1
  85. package/package.json +1 -1
  86. package/dist/logger-DnobymUQ.mjs.map +0 -1
  87. package/dist/logger-Dp6nYWjH.d.mts.map +0 -1
  88. package/dist/parseError-DM-lyezZ.d.mts.map +0 -1
  89. package/dist/types-DbzDln7O.d.mts.map +0 -1
@@ -1,6 +1,6 @@
1
- import { a as getGlobalDrain, r as createRequestLogger } from "./logger-DnobymUQ.mjs";
1
+ import { g as createRequestLogger, v as getGlobalDrain } from "./audit-d9esRZOK.mjs";
2
2
  import { t as extractErrorStatus } from "./errors-BJRXUfMg.mjs";
3
- import { n as runEnrichAndDrain } from "./middleware-BtBuosFV.mjs";
3
+ import { n as runEnrichAndDrain } from "./middleware-BWOJ7JI0.mjs";
4
4
  //#region src/shared/fork.ts
5
5
  /**
6
6
  * Attach {@link RequestLogger.fork} to a request logger. Replaces any existing `fork`.
@@ -69,4 +69,4 @@ function forkBackgroundLogger(options) {
69
69
  //#endregion
70
70
  export { forkBackgroundLogger as n, attachForkToLogger as t };
71
71
 
72
- //# sourceMappingURL=fork-Y4z8iHti.mjs.map
72
+ //# sourceMappingURL=fork-CTJXnpl8.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"fork-Y4z8iHti.mjs","names":[],"sources":["../src/shared/fork.ts"],"sourcesContent":["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":";;;;;;;AAkCA,SAAgB,mBACd,SACA,QACA,mBACA,WACM;CACN,MAAM,MAAM;AACZ,KAAI,QAAQ,OAAe,OAAmC;AAC5D,uBAAqB;GAAE;GAAS;GAAQ;GAAmB;GAAO;GAAI;GAAW,CAAC;;;;;;;;;;;AAYtF,SAAgB,qBAAqB,SAA4C;CAC/E,MAAM,EAAE,SAAS,QAAQ,mBAAmB,OAAO,IAAI,cAAc;CAErE,MAAM,YAAY,OAAO,YAAY;CACrC,MAAM,kBAAkB,UAAU;AAClC,KAAI,OAAO,oBAAoB,YAAY,gBAAgB,WAAW,EACpE,OAAM,IAAI,MACR,yHAED;CAGH,MAAM,SAAS,OAAO,UAAU,UAAU,kBAAkB,OAAO;CACnE,MAAM,OAAO,OAAO,UAAU,QAAQ,kBAAkB,KAAK;CAE7D,MAAM,QAAQ,oBACZ;EACE;EACA;EACA,WAAW,OAAO,YAAY;EAC/B,EACD,EAAE,aAAa,MAAM,CACtB;AAED,OAAM,IAAI;EACR,WAAW;EACX,kBAAkB;EACnB,CAAC;CAEF,MAAM,mBAAmB;EACvB;EACA;EACA,WAAW,MAAM,YAAY,CAAC;EAC/B;AAED,SAAQ,IAAI,aAAa;AACvB,aAAW,eAAe,MAAM;AAC3B,UAAQ,SAAS,CACnB,WAAW,IAAI,CAAC,CAChB,KAAK,YAAY;GAChB,MAAM,eAAe,MAAM,MAAM;GACjC,MAAM,YAAY,MAAM,YAAY,CAAC;GACrC,MAAM,SAAU,cAAc,WACxB,OAAO,cAAc,WAAW,YAAY,KAAA;AAClD,OACE,iBACI,kBAAkB,UAAU,kBAAkB,SAAS,gBAAgB,EAE3E,OAAM,kBAAkB,cAAc,mBAAmB,kBAAkB,OAAO;IAEpF,CACD,MAAM,OAAO,QAAiB;GAC7B,MAAM,QAAQ,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,IAAI,CAAC;AACjE,SAAM,MAAM,MAAM;AAClB,SAAM,IAAI,EAAE,QAAQ,mBAAmB,MAAM,EAAE,CAAC;GAChD,MAAM,eAAe,MAAM,MAAM;GACjC,MAAM,SAAS,mBAAmB,MAAM;AACxC,OACE,iBACI,kBAAkB,UAAU,kBAAkB,SAAS,gBAAgB,EAE3E,OAAM,kBAAkB,cAAc,mBAAmB,kBAAkB,OAAO;IAEpF,CACD,cAAc;AACb,cAAW,cAAc,MAAM;IAC/B;GACJ"}
1
+ {"version":3,"file":"fork-CTJXnpl8.mjs","names":[],"sources":["../src/shared/fork.ts"],"sourcesContent":["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":";;;;;;;AAkCA,SAAgB,mBACd,SACA,QACA,mBACA,WACM;CACN,MAAM,MAAM;AACZ,KAAI,QAAQ,OAAe,OAAmC;AAC5D,uBAAqB;GAAE;GAAS;GAAQ;GAAmB;GAAO;GAAI;GAAW,CAAC;;;;;;;;;;;AAYtF,SAAgB,qBAAqB,SAA4C;CAC/E,MAAM,EAAE,SAAS,QAAQ,mBAAmB,OAAO,IAAI,cAAc;CAErE,MAAM,YAAY,OAAO,YAAY;CACrC,MAAM,kBAAkB,UAAU;AAClC,KAAI,OAAO,oBAAoB,YAAY,gBAAgB,WAAW,EACpE,OAAM,IAAI,MACR,yHAED;CAGH,MAAM,SAAS,OAAO,UAAU,UAAU,kBAAkB,OAAO;CACnE,MAAM,OAAO,OAAO,UAAU,QAAQ,kBAAkB,KAAK;CAE7D,MAAM,QAAQ,oBACZ;EACE;EACA;EACA,WAAW,OAAO,YAAY;EAC/B,EACD,EAAE,aAAa,MAAM,CACtB;AAED,OAAM,IAAI;EACR,WAAW;EACX,kBAAkB;EACnB,CAAC;CAEF,MAAM,mBAAmB;EACvB;EACA;EACA,WAAW,MAAM,YAAY,CAAC;EAC/B;AAED,SAAQ,IAAI,aAAa;AACvB,aAAW,eAAe,MAAM;AAC3B,UAAQ,SAAS,CACnB,WAAW,IAAI,CAAC,CAChB,KAAK,YAAY;GAChB,MAAM,eAAe,MAAM,MAAM;GACjC,MAAM,YAAY,MAAM,YAAY,CAAC;GACrC,MAAM,SAAU,cAAc,WACxB,OAAO,cAAc,WAAW,YAAY,KAAA;AAClD,OACE,iBACI,kBAAkB,UAAU,kBAAkB,SAAS,gBAAgB,EAE3E,OAAM,kBAAkB,cAAc,mBAAmB,kBAAkB,OAAO;IAEpF,CACD,MAAM,OAAO,QAAiB;GAC7B,MAAM,QAAQ,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,IAAI,CAAC;AACjE,SAAM,MAAM,MAAM;AAClB,SAAM,IAAI,EAAE,QAAQ,mBAAmB,MAAM,EAAE,CAAC;GAChD,MAAM,eAAe,MAAM,MAAM;GACjC,MAAM,SAAS,mBAAmB,MAAM;AACxC,OACE,iBACI,kBAAkB,UAAU,kBAAkB,SAAS,gBAAgB,EAE3E,OAAM,kBAAkB,cAAc,mBAAmB,kBAAkB,OAAO;IAEpF,CACD,cAAc;AACb,cAAW,cAAc,MAAM;IAC/B;GACJ"}
@@ -1,5 +1,5 @@
1
- import { _ as RequestLogger } from "../types-DbzDln7O.mjs";
2
- import { t as BaseEvlogOptions } from "../middleware-FgC1OdOD.mjs";
1
+ import { Y as RequestLogger } from "../audit-mUutdf6A.mjs";
2
+ import { t as BaseEvlogOptions } from "../middleware-BYf26Lfu.mjs";
3
3
  import { MiddlewareHandler } from "hono";
4
4
 
5
5
  //#region src/hono/index.d.ts
@@ -1,4 +1,4 @@
1
- import { t as createMiddlewareLogger } from "../middleware-BtBuosFV.mjs";
1
+ import { t as createMiddlewareLogger } from "../middleware-BWOJ7JI0.mjs";
2
2
  import { t as extractSafeHeaders } from "../headers-D74M0wsg.mjs";
3
3
  //#region src/hono/index.ts
4
4
  /**
package/dist/http.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { r as DrainContext } from "./types-DbzDln7O.mjs";
1
+ import { F as DrainContext } from "./audit-mUutdf6A.mjs";
2
2
  import { DrainPipelineOptions, PipelineDrainFn } from "./pipeline.mjs";
3
3
 
4
4
  //#region src/http.d.ts
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- import { C as TailSamplingCondition, E as WideEvent, S as ServerEvent, T as TransportConfig, _ as RequestLogger, a as EnvironmentContext, b as SamplingConfig, c as H3EventContext, d as Log, f as LogLevel, h as RedactConfig, i as EnrichContext, l as IngestPayload, m as ParsedError, n as DeepPartial, o as ErrorOptions, p as LoggerConfig, r as DrainContext, s as FieldContext, t as BaseWideEvent, u as InternalFields, v as RequestLoggerOptions, w as TailSamplingContext, x as SamplingRates } from "./types-DbzDln7O.mjs";
2
- import { n as createError, t as EvlogError } from "./error-B9CiGK_i.mjs";
3
- import { i as getEnvironment, n as createLogger, o as initLogger, r as createRequestLogger, s as isEnabled, t as _log, u as shouldKeep } from "./logger-Dp6nYWjH.mjs";
4
- import { p as isLevelEnabled } from "./utils-DnX6VMNi.mjs";
5
- import { t as useLogger } from "./useLogger-N5A-d5l9.mjs";
6
- import { t as parseError } from "./parseError-DM-lyezZ.mjs";
7
- export { type BaseWideEvent, type DeepPartial, type DrainContext, type EnrichContext, type EnvironmentContext, type ErrorOptions, EvlogError, type FieldContext, type H3EventContext, type IngestPayload, type InternalFields, type Log, type LogLevel, type LoggerConfig, type ParsedError, type RedactConfig, type RequestLogger, type RequestLoggerOptions, type SamplingConfig, type SamplingRates, type ServerEvent, type TailSamplingCondition, type TailSamplingContext, type TransportConfig, type WideEvent, createError, createError as createEvlogError, createLogger, createRequestLogger, getEnvironment, initLogger, isEnabled, isLevelEnabled, _log as log, parseError, shouldKeep, useLogger };
1
+ import { $ as SamplingRates, A as AuditFields, B as H3EventContext, C as buildAuditFields, D as withAudit, E as signed, F as DrainContext, G as LoggerConfig, H as InternalFields, I as EnrichContext, K as ParsedError, L as EnvironmentContext, M as AuditTarget, N as BaseWideEvent, O as withAuditMethods, P as DeepPartial, Q as SamplingConfig, R as ErrorOptions, S as auditRedactPreset, T as mockAudit, U as Log, V as IngestPayload, W as LogLevel, X as RequestLoggerOptions, Y as RequestLogger, _ as WithAuditOptions, a as AuditInput, b as auditEnricher, c as AuditOnlyOptions, d as DefinedAuditAction, et as ServerEvent, f as DrainFn, g as WithAuditContext, h as SignedOptions, i as AuditEnricherOptions, it as WideEvent, j as AuditLoggerMethod, k as AuditActor, l as AuditPatchOp, m as SignedChainState, n as AuditDeniedError, nt as TailSamplingContext, o as AuditMatcher, p as MockAudit, q as RedactConfig, r as AuditDiffOptions, rt as TransportConfig, s as AuditMethod, t as AUDIT_SCHEMA_VERSION, tt as TailSamplingCondition, u as AuditableLogger, v as audit, w as defineAuditAction, x as auditOnly, y as auditDiff, z as FieldContext } from "./audit-mUutdf6A.mjs";
2
+ import { n as createError, t as EvlogError } from "./error-D1FZI2Kd.mjs";
3
+ import { i as getEnvironment, n as createLogger, o as initLogger, r as createRequestLogger, s as isEnabled, t as _log, u as shouldKeep } from "./logger-b3epPH0N.mjs";
4
+ import { p as isLevelEnabled } from "./utils-DzGCLRFe.mjs";
5
+ import { t as useLogger } from "./useLogger-C56tDPwf.mjs";
6
+ import { t as parseError } from "./parseError-BR9pocvY.mjs";
7
+ export { AUDIT_SCHEMA_VERSION, type AuditActor, AuditDeniedError, type AuditDiffOptions, type AuditEnricherOptions, type AuditFields, type AuditInput, type AuditLoggerMethod, type AuditMatcher, type AuditMethod, type AuditOnlyOptions, type AuditPatchOp, type AuditTarget, type AuditableLogger, type BaseWideEvent, type DeepPartial, type DefinedAuditAction, type DrainContext, type DrainFn, type EnrichContext, type EnvironmentContext, type ErrorOptions, EvlogError, type FieldContext, type H3EventContext, type IngestPayload, type InternalFields, type Log, type LogLevel, type LoggerConfig, type MockAudit, type ParsedError, type RedactConfig, type RequestLogger, type RequestLoggerOptions, type SamplingConfig, type SamplingRates, type ServerEvent, type SignedChainState, type SignedOptions, type TailSamplingCondition, type TailSamplingContext, type TransportConfig, type WideEvent, type WithAuditContext, type WithAuditOptions, audit, auditDiff, auditEnricher, auditOnly, auditRedactPreset, buildAuditFields, createError, createError as createEvlogError, createLogger, createRequestLogger, defineAuditAction, getEnvironment, initLogger, isEnabled, isLevelEnabled, _log as log, mockAudit, parseError, shouldKeep, signed, useLogger, withAudit, withAuditMethods };
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
+ import { C as shouldKeep, _ as getEnvironment, a as auditEnricher, b as isEnabled, c as buildAuditFields, d as signed, f as withAudit, g as createRequestLogger, h as createLogger, i as auditDiff, l as defineAuditAction, m as _log, n as AuditDeniedError, o as auditOnly, p as withAuditMethods, r as audit, s as auditRedactPreset, t as AUDIT_SCHEMA_VERSION, u as mockAudit, y as initLogger } from "./audit-d9esRZOK.mjs";
1
2
  import { isLevelEnabled } from "./utils.mjs";
2
3
  import { EvlogError, createError } from "./error.mjs";
3
- import { i as getEnvironment, n as createLogger, o as initLogger, r as createRequestLogger, s as isEnabled, t as _log, u as shouldKeep } from "./logger-DnobymUQ.mjs";
4
4
  import { useLogger } from "./runtime/server/useLogger.mjs";
5
5
  import { parseError } from "./runtime/utils/parseError.mjs";
6
- export { EvlogError, createError, createError as createEvlogError, createLogger, createRequestLogger, getEnvironment, initLogger, isEnabled, isLevelEnabled, _log as log, parseError, shouldKeep, useLogger };
6
+ export { AUDIT_SCHEMA_VERSION, AuditDeniedError, EvlogError, audit, auditDiff, auditEnricher, auditOnly, auditRedactPreset, buildAuditFields, createError, createError as createEvlogError, createLogger, createRequestLogger, defineAuditAction, getEnvironment, initLogger, isEnabled, isLevelEnabled, _log as log, mockAudit, parseError, shouldKeep, signed, useLogger, withAudit, withAuditMethods };
@@ -1,4 +1,4 @@
1
- import { _ as RequestLogger, a as EnvironmentContext, d as Log, p as LoggerConfig, r as DrainContext, v as RequestLoggerOptions, w as TailSamplingContext } from "./types-DbzDln7O.mjs";
1
+ import { F as DrainContext, G as LoggerConfig, L as EnvironmentContext, U as Log, X as RequestLoggerOptions, nt as TailSamplingContext, u as AuditableLogger } from "./audit-mUutdf6A.mjs";
2
2
 
3
3
  //#region src/logger.d.ts
4
4
  /**
@@ -66,7 +66,7 @@ interface CreateLoggerInternalOptions {
66
66
  * log.emit()
67
67
  * ```
68
68
  */
69
- declare function createLogger<T extends object = Record<string, unknown>>(initialContext?: Record<string, unknown>, internalOptions?: CreateLoggerInternalOptions): RequestLogger<T>;
69
+ declare function createLogger<T extends object = Record<string, unknown>>(initialContext?: Record<string, unknown>, internalOptions?: CreateLoggerInternalOptions): AuditableLogger<T>;
70
70
  /**
71
71
  * Create a request-scoped logger for building wide events.
72
72
  * Convenience wrapper around `createLogger` that pre-populates HTTP request fields.
@@ -79,11 +79,11 @@ declare function createLogger<T extends object = Record<string, unknown>>(initia
79
79
  * log.emit()
80
80
  * ```
81
81
  */
82
- declare function createRequestLogger<T extends object = Record<string, unknown>>(options?: RequestLoggerOptions, internalOptions?: CreateLoggerInternalOptions): RequestLogger<T>;
82
+ declare function createRequestLogger<T extends object = Record<string, unknown>>(options?: RequestLoggerOptions, internalOptions?: CreateLoggerInternalOptions): AuditableLogger<T>;
83
83
  /**
84
84
  * Get the current environment context.
85
85
  */
86
86
  declare function getEnvironment(): EnvironmentContext;
87
87
  //#endregion
88
88
  export { getGlobalDrain as a, isLoggerLocked as c, getEnvironment as i, lockLogger as l, createLogger as n, initLogger as o, createRequestLogger as r, isEnabled as s, _log as t, shouldKeep as u };
89
- //# sourceMappingURL=logger-Dp6nYWjH.d.mts.map
89
+ //# sourceMappingURL=logger-b3epPH0N.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-b3epPH0N.d.mts","names":[],"sources":["../src/logger.ts"],"mappings":";;;;AA6DA;;;iBAAgB,UAAA,CAAW,MAAA,GAAQ,YAAA;;AA4BnC;;iBAAgB,SAAA,CAAA;;;AAShB;;;iBAAgB,UAAA,CAAA;;AAOhB;;iBAAgB,cAAA,CAAA;;;AAShB;;;iBAAgB,cAAA,CAAA,KAAoB,GAAA,EAAK,YAAA,YAAwB,OAAA;;;;;iBA8BjD,UAAA,CAAW,GAAA,EAAK,mBAAA;AAAhC;;;;;AAgBC;;;;AAhBD,cAgXM,IAAA,EAAM,GAAA;;;;UA2BF,2BAAA;EAuBM;;;;EAlBd,WAAA;AAAA;;;;;;;;;;;;;;;AAgMF;iBA9KgB,YAAA,oBAAgC,MAAA,kBAAA,CAAyB,cAAA,GAAgB,MAAA,mBAA8B,eAAA,GAAkB,2BAAA,GAA8B,eAAA,CAAgB,CAAA;;;;;;;;;;;;;iBA8KvK,mBAAA,oBAAuC,MAAA,kBAAA,CAAyB,OAAA,GAAS,oBAAA,EAA2B,eAAA,GAAkB,2BAAA,GAA8B,eAAA,CAAgB,CAAA;;;;iBAWpK,cAAA,CAAA,GAAkB,kBAAA"}
package/dist/logger.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as getGlobalDrain, c as isLoggerLocked, i as getEnvironment, l as lockLogger, n as createLogger, o as initLogger, r as createRequestLogger, s as isEnabled, t as _log, u as shouldKeep } from "./logger-Dp6nYWjH.mjs";
1
+ import { a as getGlobalDrain, c as isLoggerLocked, i as getEnvironment, l as lockLogger, n as createLogger, o as initLogger, r as createRequestLogger, s as isEnabled, t as _log, u as shouldKeep } from "./logger-b3epPH0N.mjs";
2
2
  export { createLogger, createRequestLogger, getEnvironment, getGlobalDrain, initLogger, isEnabled, isLoggerLocked, lockLogger, _log as log, shouldKeep };
package/dist/logger.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { a as getGlobalDrain, c as isLoggerLocked, i as getEnvironment, l as lockLogger, n as createLogger, o as initLogger, r as createRequestLogger, s as isEnabled, t as _log, u as shouldKeep } from "./logger-DnobymUQ.mjs";
1
+ import { C as shouldKeep, S as lockLogger, _ as getEnvironment, b as isEnabled, g as createRequestLogger, h as createLogger, m as _log, v as getGlobalDrain, x as isLoggerLocked, y as initLogger } from "./audit-d9esRZOK.mjs";
2
2
  export { createLogger, createRequestLogger, getEnvironment, getGlobalDrain, initLogger, isEnabled, isLoggerLocked, lockLogger, _log as log, shouldKeep };
@@ -1,4 +1,4 @@
1
- import { a as getGlobalDrain, f as redactEvent, p as resolveRedactConfig, r as createRequestLogger, s as isEnabled, u as shouldKeep } from "./logger-DnobymUQ.mjs";
1
+ import { C as shouldKeep, E as resolveRedactConfig, T as redactEvent, b as isEnabled, g as createRequestLogger, v as getGlobalDrain } from "./audit-d9esRZOK.mjs";
2
2
  import { t as extractErrorStatus } from "./errors-BJRXUfMg.mjs";
3
3
  import { n as shouldLog, t as getServiceForPath } from "./routes-CGPmbzCZ.mjs";
4
4
  //#region src/shared/middleware.ts
@@ -120,4 +120,4 @@ function createMiddlewareLogger(options) {
120
120
  //#endregion
121
121
  export { runEnrichAndDrain as n, createMiddlewareLogger as t };
122
122
 
123
- //# sourceMappingURL=middleware-BtBuosFV.mjs.map
123
+ //# sourceMappingURL=middleware-BWOJ7JI0.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-BtBuosFV.mjs","names":[],"sources":["../src/shared/middleware.ts"],"sourcesContent":["import type { DrainContext, EnrichContext, RedactConfig, RequestLogger, RouteConfig, TailSamplingContext, WideEvent } from '../types'\nimport { createRequestLogger, getGlobalDrain, isEnabled, shouldKeep } from '../logger'\nimport { redactEvent, resolveRedactConfig } from '../redact'\nimport { extractErrorStatus } from './errors'\nimport { shouldLog, getServiceForPath } from './routes'\n\n/**\n * Base options shared by all framework integrations.\n *\n * Every framework-specific options interface (e.g. `EvlogExpressOptions`)\n * extends this type. If a framework needs extra fields it can add them\n * on top; otherwise the base is used as-is.\n *\n * @beta Part of `evlog/toolkit` — the public API for building custom integrations.\n */\nexport interface BaseEvlogOptions {\n /** Route patterns to include in logging (glob). If not set, all routes are logged */\n include?: string[]\n /** Route patterns to exclude from logging. Exclusions take precedence over inclusions */\n exclude?: string[]\n /** Route-specific service configuration */\n routes?: Record<string, RouteConfig>\n /**\n * Drain callback called with every emitted event.\n * Use with drain adapters (Axiom, OTLP, Sentry, etc.) or custom endpoints.\n */\n drain?: (ctx: DrainContext) => void | Promise<void>\n /**\n * Enrich callback called after emit, before drain.\n * Use to add derived context (geo, deployment info, user agent, etc.).\n */\n enrich?: (ctx: EnrichContext) => void | Promise<void>\n /**\n * Custom tail sampling callback.\n * Set `ctx.shouldKeep = true` to force-keep the log regardless of head sampling.\n */\n keep?: (ctx: TailSamplingContext) => void | Promise<void>\n /**\n * Auto-redaction configuration for PII protection.\n * `true` enables all built-in PII patterns. Pass an object for fine-grained control.\n * Applied before enrich/drain. Also applied at the core `emitWideEvent` level\n * when configured via `initLogger()`.\n */\n redact?: boolean | RedactConfig\n}\n\n/**\n * Internal options consumed by `createMiddlewareLogger`.\n * Extends `BaseEvlogOptions` with the request-specific fields\n * that framework adapters must provide.\n */\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 skipped: boolean\n}\n\nconst noopResult: MiddlewareLoggerResult = {\n logger: {\n set() {},\n error() {},\n info() {},\n warn() {},\n emit() {\n return null \n },\n getContext() {\n return {} \n },\n },\n finish: () => Promise.resolve(null),\n skipped: true,\n}\n\n/**\n * Apply redact, enrich, and drain to an emitted wide event — same pipeline as\n * {@link createMiddlewareLogger}'s `finish`.\n *\n * @beta Part of `evlog/toolkit` — used by framework integrations and `fork()`.\n */\nexport async function runEnrichAndDrain(\n emittedEvent: WideEvent,\n options: MiddlewareLoggerOptions,\n requestInfo: { method: string; path: string; requestId?: string },\n responseStatus?: number,\n): Promise<void> {\n const resolvedRedact = resolveRedactConfig(options.redact)\n if (resolvedRedact) {\n redactEvent(emittedEvent, resolvedRedact)\n }\n\n if (options.enrich) {\n const enrichCtx: EnrichContext = {\n event: emittedEvent,\n request: requestInfo,\n headers: options.headers,\n response: { status: responseStatus },\n }\n try {\n await options.enrich(enrichCtx)\n } catch (err) {\n console.error('[evlog] enrich failed:', err)\n }\n }\n\n const drain = options.drain ?? getGlobalDrain()\n if (drain) {\n const drainCtx: DrainContext = {\n event: emittedEvent,\n request: requestInfo,\n headers: options.headers,\n }\n try {\n await drain(drainCtx)\n } catch (err) {\n console.error('[evlog] drain failed:', err)\n }\n }\n}\n\n/**\n * Create a middleware-aware request logger with full lifecycle management.\n *\n * Handles the complete pipeline shared across all framework integrations:\n * route filtering, logger creation, service overrides, duration tracking,\n * tail sampling evaluation, event emission, enrichment, and draining.\n *\n * Framework adapters only need to:\n * 1. Extract method/path/requestId/headers from the framework request\n * 2. Call `createMiddlewareLogger()` with those + user options\n * 3. Check `skipped` — if true, skip to next middleware\n * 4. Store `logger` in framework-specific context (e.g., `c.set('log', logger)`)\n * 5. Call `finish({ status })` or `finish({ error })` at response end\n *\n * @beta Part of `evlog/toolkit` — the public API for building custom integrations.\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 startTime = Date.now()\n const requestInfo = { method, path, requestId: resolvedRequestId }\n\n const finish = async (opts?: { status?: number; error?: Error }): Promise<WideEvent | null> => {\n const { status, error } = opts ?? {}\n\n if (error) {\n logger.error(error)\n const errorStatus = extractErrorStatus(error)\n logger.set({ status: errorStatus })\n } else if (status !== undefined) {\n logger.set({ status })\n }\n\n const durationMs = Date.now() - startTime\n\n const resolvedStatus = error\n ? extractErrorStatus(error)\n : status ?? (logger.getContext().status as number | undefined)\n\n const tailCtx: TailSamplingContext = {\n status: resolvedStatus,\n duration: durationMs,\n path,\n method,\n context: logger.getContext(),\n shouldKeep: false,\n }\n\n if (keep) {\n await keep(tailCtx)\n }\n\n const forceKeep = tailCtx.shouldKeep || shouldKeep(tailCtx)\n const emittedEvent = logger.emit({ _forceKeep: forceKeep })\n\n if (emittedEvent && (options.enrich || options.drain || getGlobalDrain())) {\n await runEnrichAndDrain(emittedEvent, options, requestInfo, resolvedStatus)\n }\n\n return emittedEvent\n }\n\n return { logger, finish, skipped: false }\n}\n"],"mappings":";;;;AAiEA,MAAM,aAAqC;CACzC,QAAQ;EACN,MAAM;EACN,QAAQ;EACR,OAAO;EACP,OAAO;EACP,OAAO;AACL,UAAO;;EAET,aAAa;AACX,UAAO,EAAE;;EAEZ;CACD,cAAc,QAAQ,QAAQ,KAAK;CACnC,SAAS;CACV;;;;;;;AAQD,eAAsB,kBACpB,cACA,SACA,aACA,gBACe;CACf,MAAM,iBAAiB,oBAAoB,QAAQ,OAAO;AAC1D,KAAI,eACF,aAAY,cAAc,eAAe;AAG3C,KAAI,QAAQ,QAAQ;EAClB,MAAM,YAA2B;GAC/B,OAAO;GACP,SAAS;GACT,SAAS,QAAQ;GACjB,UAAU,EAAE,QAAQ,gBAAgB;GACrC;AACD,MAAI;AACF,SAAM,QAAQ,OAAO,UAAU;WACxB,KAAK;AACZ,WAAQ,MAAM,0BAA0B,IAAI;;;CAIhD,MAAM,QAAQ,QAAQ,SAAS,gBAAgB;AAC/C,KAAI,OAAO;EACT,MAAM,WAAyB;GAC7B,OAAO;GACP,SAAS;GACT,SAAS,QAAQ;GAClB;AACD,MAAI;AACF,SAAM,MAAM,SAAS;WACd,KAAK;AACZ,WAAQ,MAAM,yBAAyB,IAAI;;;;;;;;;;;;;;;;;;;;AAqBjD,SAAgB,uBAAuB,SAA0D;AAC/F,KAAI,CAAC,WAAW,CAAE,QAAO;CAEzB,MAAM,EAAE,QAAQ,MAAM,WAAW,SAAS,SAAS,QAAQ,SAAS;AAEpE,KAAI,CAAC,UAAU,MAAM,SAAS,QAAQ,CACpC,QAAO;CAGT,MAAM,oBAAoB,aAAa,OAAO,YAAY;CAE1D,MAAM,SAAS,oBAAoB;EACjC;EACA;EACA,WAAW;EACZ,EAAE,EAAE,aAAa,MAAM,CAAC;CAEzB,MAAM,eAAe,kBAAkB,MAAM,OAAO;AACpD,KAAI,aACF,QAAO,IAAI,EAAE,SAAS,cAAc,CAAC;CAGvC,MAAM,YAAY,KAAK,KAAK;CAC5B,MAAM,cAAc;EAAE;EAAQ;EAAM,WAAW;EAAmB;CAElE,MAAM,SAAS,OAAO,SAAyE;EAC7F,MAAM,EAAE,QAAQ,UAAU,QAAQ,EAAE;AAEpC,MAAI,OAAO;AACT,UAAO,MAAM,MAAM;GACnB,MAAM,cAAc,mBAAmB,MAAM;AAC7C,UAAO,IAAI,EAAE,QAAQ,aAAa,CAAC;aAC1B,WAAW,KAAA,EACpB,QAAO,IAAI,EAAE,QAAQ,CAAC;EAGxB,MAAM,aAAa,KAAK,KAAK,GAAG;EAEhC,MAAM,iBAAiB,QACnB,mBAAmB,MAAM,GACzB,UAAW,OAAO,YAAY,CAAC;EAEnC,MAAM,UAA+B;GACnC,QAAQ;GACR,UAAU;GACV;GACA;GACA,SAAS,OAAO,YAAY;GAC5B,YAAY;GACb;AAED,MAAI,KACF,OAAM,KAAK,QAAQ;EAGrB,MAAM,YAAY,QAAQ,cAAc,WAAW,QAAQ;EAC3D,MAAM,eAAe,OAAO,KAAK,EAAE,YAAY,WAAW,CAAC;AAE3D,MAAI,iBAAiB,QAAQ,UAAU,QAAQ,SAAS,gBAAgB,EACtE,OAAM,kBAAkB,cAAc,SAAS,aAAa,eAAe;AAG7E,SAAO;;AAGT,QAAO;EAAE;EAAQ;EAAQ,SAAS;EAAO"}
1
+ {"version":3,"file":"middleware-BWOJ7JI0.mjs","names":[],"sources":["../src/shared/middleware.ts"],"sourcesContent":["import type { DrainContext, EnrichContext, RedactConfig, RequestLogger, RouteConfig, TailSamplingContext, WideEvent } from '../types'\nimport { createRequestLogger, getGlobalDrain, isEnabled, shouldKeep } from '../logger'\nimport { redactEvent, resolveRedactConfig } from '../redact'\nimport { extractErrorStatus } from './errors'\nimport { shouldLog, getServiceForPath } from './routes'\n\n/**\n * Base options shared by all framework integrations.\n *\n * Every framework-specific options interface (e.g. `EvlogExpressOptions`)\n * extends this type. If a framework needs extra fields it can add them\n * on top; otherwise the base is used as-is.\n *\n * @beta Part of `evlog/toolkit` — the public API for building custom integrations.\n */\nexport interface BaseEvlogOptions {\n /** Route patterns to include in logging (glob). If not set, all routes are logged */\n include?: string[]\n /** Route patterns to exclude from logging. Exclusions take precedence over inclusions */\n exclude?: string[]\n /** Route-specific service configuration */\n routes?: Record<string, RouteConfig>\n /**\n * Drain callback called with every emitted event.\n * Use with drain adapters (Axiom, OTLP, Sentry, etc.) or custom endpoints.\n */\n drain?: (ctx: DrainContext) => void | Promise<void>\n /**\n * Enrich callback called after emit, before drain.\n * Use to add derived context (geo, deployment info, user agent, etc.).\n */\n enrich?: (ctx: EnrichContext) => void | Promise<void>\n /**\n * Custom tail sampling callback.\n * Set `ctx.shouldKeep = true` to force-keep the log regardless of head sampling.\n */\n keep?: (ctx: TailSamplingContext) => void | Promise<void>\n /**\n * Auto-redaction configuration for PII protection.\n * `true` enables all built-in PII patterns. Pass an object for fine-grained control.\n * Applied before enrich/drain. Also applied at the core `emitWideEvent` level\n * when configured via `initLogger()`.\n */\n redact?: boolean | RedactConfig\n}\n\n/**\n * Internal options consumed by `createMiddlewareLogger`.\n * Extends `BaseEvlogOptions` with the request-specific fields\n * that framework adapters must provide.\n */\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 skipped: boolean\n}\n\nconst noopResult: MiddlewareLoggerResult = {\n logger: {\n set() {},\n error() {},\n info() {},\n warn() {},\n emit() {\n return null \n },\n getContext() {\n return {} \n },\n },\n finish: () => Promise.resolve(null),\n skipped: true,\n}\n\n/**\n * Apply redact, enrich, and drain to an emitted wide event — same pipeline as\n * {@link createMiddlewareLogger}'s `finish`.\n *\n * @beta Part of `evlog/toolkit` — used by framework integrations and `fork()`.\n */\nexport async function runEnrichAndDrain(\n emittedEvent: WideEvent,\n options: MiddlewareLoggerOptions,\n requestInfo: { method: string; path: string; requestId?: string },\n responseStatus?: number,\n): Promise<void> {\n const resolvedRedact = resolveRedactConfig(options.redact)\n if (resolvedRedact) {\n redactEvent(emittedEvent, resolvedRedact)\n }\n\n if (options.enrich) {\n const enrichCtx: EnrichContext = {\n event: emittedEvent,\n request: requestInfo,\n headers: options.headers,\n response: { status: responseStatus },\n }\n try {\n await options.enrich(enrichCtx)\n } catch (err) {\n console.error('[evlog] enrich failed:', err)\n }\n }\n\n const drain = options.drain ?? getGlobalDrain()\n if (drain) {\n const drainCtx: DrainContext = {\n event: emittedEvent,\n request: requestInfo,\n headers: options.headers,\n }\n try {\n await drain(drainCtx)\n } catch (err) {\n console.error('[evlog] drain failed:', err)\n }\n }\n}\n\n/**\n * Create a middleware-aware request logger with full lifecycle management.\n *\n * Handles the complete pipeline shared across all framework integrations:\n * route filtering, logger creation, service overrides, duration tracking,\n * tail sampling evaluation, event emission, enrichment, and draining.\n *\n * Framework adapters only need to:\n * 1. Extract method/path/requestId/headers from the framework request\n * 2. Call `createMiddlewareLogger()` with those + user options\n * 3. Check `skipped` — if true, skip to next middleware\n * 4. Store `logger` in framework-specific context (e.g., `c.set('log', logger)`)\n * 5. Call `finish({ status })` or `finish({ error })` at response end\n *\n * @beta Part of `evlog/toolkit` — the public API for building custom integrations.\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 startTime = Date.now()\n const requestInfo = { method, path, requestId: resolvedRequestId }\n\n const finish = async (opts?: { status?: number; error?: Error }): Promise<WideEvent | null> => {\n const { status, error } = opts ?? {}\n\n if (error) {\n logger.error(error)\n const errorStatus = extractErrorStatus(error)\n logger.set({ status: errorStatus })\n } else if (status !== undefined) {\n logger.set({ status })\n }\n\n const durationMs = Date.now() - startTime\n\n const resolvedStatus = error\n ? extractErrorStatus(error)\n : status ?? (logger.getContext().status as number | undefined)\n\n const tailCtx: TailSamplingContext = {\n status: resolvedStatus,\n duration: durationMs,\n path,\n method,\n context: logger.getContext(),\n shouldKeep: false,\n }\n\n if (keep) {\n await keep(tailCtx)\n }\n\n const forceKeep = tailCtx.shouldKeep || shouldKeep(tailCtx)\n const emittedEvent = logger.emit({ _forceKeep: forceKeep })\n\n if (emittedEvent && (options.enrich || options.drain || getGlobalDrain())) {\n await runEnrichAndDrain(emittedEvent, options, requestInfo, resolvedStatus)\n }\n\n return emittedEvent\n }\n\n return { logger, finish, skipped: false }\n}\n"],"mappings":";;;;AAiEA,MAAM,aAAqC;CACzC,QAAQ;EACN,MAAM;EACN,QAAQ;EACR,OAAO;EACP,OAAO;EACP,OAAO;AACL,UAAO;;EAET,aAAa;AACX,UAAO,EAAE;;EAEZ;CACD,cAAc,QAAQ,QAAQ,KAAK;CACnC,SAAS;CACV;;;;;;;AAQD,eAAsB,kBACpB,cACA,SACA,aACA,gBACe;CACf,MAAM,iBAAiB,oBAAoB,QAAQ,OAAO;AAC1D,KAAI,eACF,aAAY,cAAc,eAAe;AAG3C,KAAI,QAAQ,QAAQ;EAClB,MAAM,YAA2B;GAC/B,OAAO;GACP,SAAS;GACT,SAAS,QAAQ;GACjB,UAAU,EAAE,QAAQ,gBAAgB;GACrC;AACD,MAAI;AACF,SAAM,QAAQ,OAAO,UAAU;WACxB,KAAK;AACZ,WAAQ,MAAM,0BAA0B,IAAI;;;CAIhD,MAAM,QAAQ,QAAQ,SAAS,gBAAgB;AAC/C,KAAI,OAAO;EACT,MAAM,WAAyB;GAC7B,OAAO;GACP,SAAS;GACT,SAAS,QAAQ;GAClB;AACD,MAAI;AACF,SAAM,MAAM,SAAS;WACd,KAAK;AACZ,WAAQ,MAAM,yBAAyB,IAAI;;;;;;;;;;;;;;;;;;;;AAqBjD,SAAgB,uBAAuB,SAA0D;AAC/F,KAAI,CAAC,WAAW,CAAE,QAAO;CAEzB,MAAM,EAAE,QAAQ,MAAM,WAAW,SAAS,SAAS,QAAQ,SAAS;AAEpE,KAAI,CAAC,UAAU,MAAM,SAAS,QAAQ,CACpC,QAAO;CAGT,MAAM,oBAAoB,aAAa,OAAO,YAAY;CAE1D,MAAM,SAAS,oBAAoB;EACjC;EACA;EACA,WAAW;EACZ,EAAE,EAAE,aAAa,MAAM,CAAC;CAEzB,MAAM,eAAe,kBAAkB,MAAM,OAAO;AACpD,KAAI,aACF,QAAO,IAAI,EAAE,SAAS,cAAc,CAAC;CAGvC,MAAM,YAAY,KAAK,KAAK;CAC5B,MAAM,cAAc;EAAE;EAAQ;EAAM,WAAW;EAAmB;CAElE,MAAM,SAAS,OAAO,SAAyE;EAC7F,MAAM,EAAE,QAAQ,UAAU,QAAQ,EAAE;AAEpC,MAAI,OAAO;AACT,UAAO,MAAM,MAAM;GACnB,MAAM,cAAc,mBAAmB,MAAM;AAC7C,UAAO,IAAI,EAAE,QAAQ,aAAa,CAAC;aAC1B,WAAW,KAAA,EACpB,QAAO,IAAI,EAAE,QAAQ,CAAC;EAGxB,MAAM,aAAa,KAAK,KAAK,GAAG;EAEhC,MAAM,iBAAiB,QACnB,mBAAmB,MAAM,GACzB,UAAW,OAAO,YAAY,CAAC;EAEnC,MAAM,UAA+B;GACnC,QAAQ;GACR,UAAU;GACV;GACA;GACA,SAAS,OAAO,YAAY;GAC5B,YAAY;GACb;AAED,MAAI,KACF,OAAM,KAAK,QAAQ;EAGrB,MAAM,YAAY,QAAQ,cAAc,WAAW,QAAQ;EAC3D,MAAM,eAAe,OAAO,KAAK,EAAE,YAAY,WAAW,CAAC;AAE3D,MAAI,iBAAiB,QAAQ,UAAU,QAAQ,SAAS,gBAAgB,EACtE,OAAM,kBAAkB,cAAc,SAAS,aAAa,eAAe;AAG7E,SAAO;;AAGT,QAAO;EAAE;EAAQ;EAAQ,SAAS;EAAO"}
@@ -1,4 +1,4 @@
1
- import { E as WideEvent, _ as RequestLogger, h as RedactConfig, i as EnrichContext, r as DrainContext, w as TailSamplingContext, y as RouteConfig } from "./types-DbzDln7O.mjs";
1
+ import { F as DrainContext, I as EnrichContext, Y as RequestLogger, Z as RouteConfig, it as WideEvent, nt as TailSamplingContext, q as RedactConfig } from "./audit-mUutdf6A.mjs";
2
2
 
3
3
  //#region src/shared/middleware.d.ts
4
4
  /**
@@ -90,4 +90,4 @@ declare function runEnrichAndDrain(emittedEvent: WideEvent, options: MiddlewareL
90
90
  declare function createMiddlewareLogger(options: MiddlewareLoggerOptions): MiddlewareLoggerResult;
91
91
  //#endregion
92
92
  export { runEnrichAndDrain as a, createMiddlewareLogger as i, MiddlewareLoggerOptions as n, MiddlewareLoggerResult as r, BaseEvlogOptions as t };
93
- //# sourceMappingURL=middleware-FgC1OdOD.d.mts.map
93
+ //# sourceMappingURL=middleware-BYf26Lfu.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-FgC1OdOD.d.mts","names":[],"sources":["../src/shared/middleware.ts"],"mappings":";;;;;AAeA;;;;;;;UAAiB,gBAAA;EAgByB;EAdxC,OAAA;EAmB4C;EAjB5C,OAAA;EAwB+B;EAtB/B,MAAA,GAAS,MAAA,SAAe,WAAA;EAJxB;;;;EASA,KAAA,IAAS,GAAA,EAAK,YAAA,YAAwB,OAAA;EAAtC;;;;EAKA,MAAA,IAAU,GAAA,EAAK,aAAA,YAAyB,OAAA;EAAzB;;;;EAKf,IAAA,IAAQ,GAAA,EAAK,mBAAA,YAA+B,OAAA;EAApC;;;;;;EAOR,MAAA,aAAmB,YAAA;AAAA;;;;;;UAQJ,uBAAA,SAAgC,gBAAA;EAC/C,MAAA;EACA,IAAA;EACA,SAAA;EAEgB;EAAhB,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;EAC/D,OAAA;AAAA;;;;;;;iBA0BoB,iBAAA,CACpB,YAAA,EAAc,SAAA,EACd,OAAA,EAAS,uBAAA,EACT,WAAA;EAAe,MAAA;EAAgB,IAAA;EAAc,SAAA;AAAA,GAC7C,cAAA,YACC,OAAA;AALH;;;;;;;;;;;;;;;;AAAA,iBAwDgB,sBAAA,CAAuB,OAAA,EAAS,uBAAA,GAA0B,sBAAA"}
1
+ {"version":3,"file":"middleware-BYf26Lfu.d.mts","names":[],"sources":["../src/shared/middleware.ts"],"mappings":";;;;;AAeA;;;;;;;UAAiB,gBAAA;EAgByB;EAdxC,OAAA;EAmB4C;EAjB5C,OAAA;EAwB+B;EAtB/B,MAAA,GAAS,MAAA,SAAe,WAAA;EAJxB;;;;EASA,KAAA,IAAS,GAAA,EAAK,YAAA,YAAwB,OAAA;EAAtC;;;;EAKA,MAAA,IAAU,GAAA,EAAK,aAAA,YAAyB,OAAA;EAAzB;;;;EAKf,IAAA,IAAQ,GAAA,EAAK,mBAAA,YAA+B,OAAA;EAApC;;;;;;EAOR,MAAA,aAAmB,YAAA;AAAA;;;;;;UAQJ,uBAAA,SAAgC,gBAAA;EAC/C,MAAA;EACA,IAAA;EACA,SAAA;EAEgB;EAAhB,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;EAC/D,OAAA;AAAA;;;;;;;iBA0BoB,iBAAA,CACpB,YAAA,EAAc,SAAA,EACd,OAAA,EAAS,uBAAA,EACT,WAAA;EAAe,MAAA;EAAgB,IAAA;EAAc,SAAA;AAAA,GAC7C,cAAA,YACC,OAAA;AALH;;;;;;;;;;;;;;;;AAAA,iBAwDgB,sBAAA,CAAuB,OAAA,EAAS,uBAAA,GAA0B,sBAAA"}
@@ -1,5 +1,5 @@
1
- import { _ as RequestLogger } from "../types-DbzDln7O.mjs";
2
- import { t as BaseEvlogOptions } from "../middleware-FgC1OdOD.mjs";
1
+ import { Y as RequestLogger } from "../audit-mUutdf6A.mjs";
2
+ import { t as BaseEvlogOptions } from "../middleware-BYf26Lfu.mjs";
3
3
  import { DynamicModule, MiddlewareConsumer, NestModule } from "@nestjs/common";
4
4
 
5
5
  //#region src/nestjs/index.d.ts
@@ -1,5 +1,5 @@
1
- import { t as createMiddlewareLogger } from "../middleware-BtBuosFV.mjs";
2
- import { t as attachForkToLogger } from "../fork-Y4z8iHti.mjs";
1
+ import { t as createMiddlewareLogger } from "../middleware-BWOJ7JI0.mjs";
2
+ import { t as attachForkToLogger } from "../fork-CTJXnpl8.mjs";
3
3
  import { n as extractSafeNodeHeaders } from "../headers-D74M0wsg.mjs";
4
4
  import { t as createLoggerStorage } from "../storage-CFGTn37X.mjs";
5
5
  //#region src/nestjs/index.ts
@@ -1,4 +1,4 @@
1
- import { T as TransportConfig, f as LogLevel } from "../types-DbzDln7O.mjs";
1
+ import { W as LogLevel, rt as TransportConfig } from "../audit-mUutdf6A.mjs";
2
2
  import { clearIdentity, log as _clientLog, setIdentity, setMinLevel } from "../runtime/client/log.mjs";
3
3
  import * as _$react from "react";
4
4
 
@@ -1,7 +1,7 @@
1
- import { _ as RequestLogger, a as EnvironmentContext, b as SamplingConfig, d as Log, f as LogLevel } from "../types-DbzDln7O.mjs";
2
- import { n as createError } from "../error-B9CiGK_i.mjs";
3
- import { t as _log } from "../logger-Dp6nYWjH.mjs";
4
- import { t as BaseEvlogOptions } from "../middleware-FgC1OdOD.mjs";
1
+ import { L as EnvironmentContext, Q as SamplingConfig, U as Log, W as LogLevel, Y as RequestLogger } from "../audit-mUutdf6A.mjs";
2
+ import { n as createError } from "../error-D1FZI2Kd.mjs";
3
+ import { t as _log } from "../logger-b3epPH0N.mjs";
4
+ import { t as BaseEvlogOptions } from "../middleware-BYf26Lfu.mjs";
5
5
  import { AsyncLocalStorage } from "node:async_hooks";
6
6
 
7
7
  //#region src/next/types.d.ts
@@ -1,8 +1,8 @@
1
+ import { b as isEnabled, g as createRequestLogger, m as _log, v as getGlobalDrain, x as isLoggerLocked, y as initLogger } from "../audit-d9esRZOK.mjs";
1
2
  import { filterSafeHeaders } from "../utils.mjs";
2
3
  import { EvlogError, createError } from "../error.mjs";
3
- import { a as getGlobalDrain, c as isLoggerLocked, o as initLogger, r as createRequestLogger, s as isEnabled, t as _log } from "../logger-DnobymUQ.mjs";
4
4
  import { n as shouldLog, t as getServiceForPath } from "../routes-CGPmbzCZ.mjs";
5
- import { t as attachForkToLogger } from "../fork-Y4z8iHti.mjs";
5
+ import { t as attachForkToLogger } from "../fork-CTJXnpl8.mjs";
6
6
  import { AsyncLocalStorage } from "node:async_hooks";
7
7
  //#region src/next/storage.ts
8
8
  const evlogStorage = new AsyncLocalStorage();
@@ -1,4 +1,4 @@
1
- import { a as EnvironmentContext, b as SamplingConfig, f as LogLevel, r as DrainContext } from "../types-DbzDln7O.mjs";
1
+ import { F as DrainContext, L as EnvironmentContext, Q as SamplingConfig, W as LogLevel } from "../audit-mUutdf6A.mjs";
2
2
 
3
3
  //#region src/next/instrumentation.d.ts
4
4
  /** Request payload passed to Next.js `onRequestError` (App Router). */
@@ -1,4 +1,4 @@
1
- import { l as lockLogger, o as initLogger, t as _log } from "../logger-DnobymUQ.mjs";
1
+ import { S as lockLogger, m as _log, y as initLogger } from "../audit-d9esRZOK.mjs";
2
2
  //#region src/next/instrumentation.ts
3
3
  /**
4
4
  * Root `instrumentation.ts` entry: load your real config only in the Node.js runtime so Edge
@@ -1,5 +1,5 @@
1
- import { t as useLogger } from "../useLogger-N5A-d5l9.mjs";
2
- import { t as NitroModuleOptions } from "../nitro-CDHLfRdw.mjs";
1
+ import { t as useLogger } from "../useLogger-C56tDPwf.mjs";
2
+ import { t as NitroModuleOptions } from "../nitro-DenB86W6.mjs";
3
3
  import { Nitro } from "nitropack";
4
4
 
5
5
  //#region src/nitro/module.d.ts
@@ -1,5 +1,5 @@
1
+ import { b as isEnabled, g as createRequestLogger, w as normalizeRedactConfig, y as initLogger } from "../audit-d9esRZOK.mjs";
1
2
  import { filterSafeHeaders } from "../utils.mjs";
2
- import { d as normalizeRedactConfig, o as initLogger, r as createRequestLogger, s as isEnabled } from "../logger-DnobymUQ.mjs";
3
3
  import { t as extractErrorStatus } from "../errors-BJRXUfMg.mjs";
4
4
  import { n as shouldLog, t as getServiceForPath } from "../routes-CGPmbzCZ.mjs";
5
5
  import { n as resolveEvlogConfigForNitroPlugin } from "../nitroConfigBridge-C37lXaNm.mjs";
@@ -1,5 +1,5 @@
1
- import { n as createError, t as EvlogError } from "../../error-B9CiGK_i.mjs";
2
- import { t as parseError } from "../../parseError-DM-lyezZ.mjs";
1
+ import { n as createError, t as EvlogError } from "../../error-D1FZI2Kd.mjs";
2
+ import { t as parseError } from "../../parseError-BR9pocvY.mjs";
3
3
  import evlog from "./module.mjs";
4
4
  import { useLogger } from "./useLogger.mjs";
5
5
  import { evlogErrorHandler } from "./middleware.mjs";
@@ -1,4 +1,4 @@
1
- import { t as NitroModuleOptions } from "../../nitro-CDHLfRdw.mjs";
1
+ import { t as NitroModuleOptions } from "../../nitro-DenB86W6.mjs";
2
2
  import { Nitro } from "nitro/types";
3
3
 
4
4
  //#region src/nitro-v3/module.d.ts
@@ -1,5 +1,5 @@
1
+ import { b as isEnabled, g as createRequestLogger, w as normalizeRedactConfig, y as initLogger } from "../../audit-d9esRZOK.mjs";
1
2
  import { filterSafeHeaders } from "../../utils.mjs";
2
- import { d as normalizeRedactConfig, o as initLogger, r as createRequestLogger, s as isEnabled } from "../../logger-DnobymUQ.mjs";
3
3
  import { t as extractErrorStatus } from "../../errors-BJRXUfMg.mjs";
4
4
  import { n as shouldLog, t as getServiceForPath } from "../../routes-CGPmbzCZ.mjs";
5
5
  import { n as resolveEvlogConfigForNitroPlugin } from "../../nitroConfigBridge-C37lXaNm.mjs";
@@ -1,4 +1,4 @@
1
- import { _ as RequestLogger } from "../../types-DbzDln7O.mjs";
1
+ import { Y as RequestLogger } from "../../audit-mUutdf6A.mjs";
2
2
  import { HTTPEvent } from "nitro/h3";
3
3
 
4
4
  //#region src/nitro-v3/useLogger.d.ts
@@ -1,4 +1,4 @@
1
- import { a as EnvironmentContext, b as SamplingConfig, f as LogLevel, h as RedactConfig, y as RouteConfig } from "./types-DbzDln7O.mjs";
1
+ import { L as EnvironmentContext, Q as SamplingConfig, W as LogLevel, Z as RouteConfig, q as RedactConfig } from "./audit-mUutdf6A.mjs";
2
2
  //#region src/nitro.d.ts
3
3
  interface NitroModuleOptions {
4
4
  /**
@@ -57,4 +57,4 @@ interface NitroModuleOptions {
57
57
  }
58
58
  //#endregion
59
59
  export { NitroModuleOptions as t };
60
- //# sourceMappingURL=nitro-CDHLfRdw.d.mts.map
60
+ //# sourceMappingURL=nitro-DenB86W6.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nitro-CDHLfRdw.d.mts","names":[],"sources":["../src/nitro.ts"],"mappings":";;UAKiB,kBAAA;;AAAjB;;;EAKE,OAAA;EAKM;;;EAAN,GAAA,GAAM,OAAA,CAAQ,kBAAA;EA8CH;;;;EAxCX,MAAA;EANA;;;;;;;EAeA,MAAA;EAmBS;;;;;EAZT,OAAA;EA8BA;;;;;EAvBA,OAAA;;;;EAKA,MAAA,GAAS,MAAA,SAAe,WAAA;;;;EAKxB,QAAA,GAAW,cAAA;;;;;;EAOX,QAAA,GAAW,QAAA;;;;;EAMX,MAAA,aAAmB,YAAA;AAAA"}
1
+ {"version":3,"file":"nitro-DenB86W6.d.mts","names":[],"sources":["../src/nitro.ts"],"mappings":";;UAKiB,kBAAA;;AAAjB;;;EAKE,OAAA;EAKM;;;EAAN,GAAA,GAAM,OAAA,CAAQ,kBAAA;EA8CH;;;;EAxCX,MAAA;EANA;;;;;;;EAeA,MAAA;EAmBS;;;;;EAZT,OAAA;EA8BA;;;;;EAvBA,OAAA;;;;EAKA,MAAA,GAAS,MAAA,SAAe,WAAA;;;;EAKxB,QAAA,GAAW,cAAA;;;;;;EAOX,QAAA,GAAW,QAAA;;;;;EAMX,MAAA,aAAmB,YAAA;AAAA"}
@@ -1,4 +1,4 @@
1
- import { T as TransportConfig, a as EnvironmentContext, b as SamplingConfig, f as LogLevel, h as RedactConfig, y as RouteConfig } from "../types-DbzDln7O.mjs";
1
+ import { L as EnvironmentContext, Q as SamplingConfig, W as LogLevel, Z as RouteConfig, q as RedactConfig, rt as TransportConfig } from "../audit-mUutdf6A.mjs";
2
2
  import * as _$_nuxt_schema0 from "@nuxt/schema";
3
3
 
4
4
  //#region src/nuxt/module.d.ts
@@ -7,7 +7,7 @@ var name = "evlog";
7
7
  var module_default = defineNuxtModule({
8
8
  meta: {
9
9
  name,
10
- version: "2.13.0",
10
+ version: "2.14.0",
11
11
  configKey: name,
12
12
  docs: "https://evlog.dev"
13
13
  },
@@ -1,7 +1,7 @@
1
- import { m as ParsedError } from "./types-DbzDln7O.mjs";
1
+ import { K as ParsedError } from "./audit-mUutdf6A.mjs";
2
2
 
3
3
  //#region src/runtime/utils/parseError.d.ts
4
4
  declare function parseError(error: unknown): ParsedError;
5
5
  //#endregion
6
6
  export { parseError as t };
7
- //# sourceMappingURL=parseError-DM-lyezZ.d.mts.map
7
+ //# sourceMappingURL=parseError-BR9pocvY.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseError-BR9pocvY.d.mts","names":[],"sources":["../src/runtime/utils/parseError.ts"],"mappings":";;;iBAMgB,UAAA,CAAW,KAAA,YAAiB,WAAA"}
@@ -1,5 +1,5 @@
1
- import { _ as RequestLogger } from "../types-DbzDln7O.mjs";
2
- import { t as BaseEvlogOptions } from "../middleware-FgC1OdOD.mjs";
1
+ import { Y as RequestLogger } from "../audit-mUutdf6A.mjs";
2
+ import { t as BaseEvlogOptions } from "../middleware-BYf26Lfu.mjs";
3
3
  import * as _$react_router0 from "react-router";
4
4
 
5
5
  //#region src/react-router/index.d.ts
@@ -1,5 +1,5 @@
1
- import { t as createMiddlewareLogger } from "../middleware-BtBuosFV.mjs";
2
- import { t as attachForkToLogger } from "../fork-Y4z8iHti.mjs";
1
+ import { t as createMiddlewareLogger } from "../middleware-BWOJ7JI0.mjs";
2
+ import { t as attachForkToLogger } from "../fork-CTJXnpl8.mjs";
3
3
  import { t as extractSafeHeaders } from "../headers-D74M0wsg.mjs";
4
4
  import { t as createLoggerStorage } from "../storage-CFGTn37X.mjs";
5
5
  import { createContext } from "react-router";
@@ -1,4 +1,4 @@
1
- import { T as TransportConfig, d as Log, f as LogLevel } from "../../types-DbzDln7O.mjs";
1
+ import { U as Log, W as LogLevel, rt as TransportConfig } from "../../audit-mUutdf6A.mjs";
2
2
 
3
3
  //#region src/runtime/client/log.d.ts
4
4
  declare function setIdentity(identity: Record<string, unknown>): void;
@@ -1,5 +1,5 @@
1
+ import { _ as getEnvironment } from "../../../../audit-d9esRZOK.mjs";
1
2
  import { filterSafeHeaders } from "../../../../utils.mjs";
2
- import { i as getEnvironment } from "../../../../logger-DnobymUQ.mjs";
3
3
  import { createError, defineEventHandler, getHeader, getHeaders, getRequestHost, readBody, setResponseStatus } from "h3";
4
4
  import { useNitroApp } from "nitropack/runtime";
5
5
  //#region src/runtime/server/routes/_evlog/ingest.post.ts
@@ -1,2 +1,2 @@
1
- import { t as useLogger } from "../../useLogger-N5A-d5l9.mjs";
1
+ import { t as useLogger } from "../../useLogger-C56tDPwf.mjs";
2
2
  export { useLogger };
@@ -1,3 +1,3 @@
1
- import { m as ParsedError } from "../../types-DbzDln7O.mjs";
2
- import { t as parseError } from "../../parseError-DM-lyezZ.mjs";
1
+ import { K as ParsedError } from "../../audit-mUutdf6A.mjs";
2
+ import { t as parseError } from "../../parseError-BR9pocvY.mjs";
3
3
  export { ParsedError, parseError };
@@ -1,5 +1,5 @@
1
- import { _ as RequestLogger } from "../types-DbzDln7O.mjs";
2
- import { t as BaseEvlogOptions } from "../middleware-FgC1OdOD.mjs";
1
+ import { Y as RequestLogger } from "../audit-mUutdf6A.mjs";
2
+ import { t as BaseEvlogOptions } from "../middleware-BYf26Lfu.mjs";
3
3
 
4
4
  //#region src/sveltekit/index.d.ts
5
5
  declare const useLogger: <T extends object = Record<string, unknown>>() => RequestLogger<T>;
@@ -1,8 +1,8 @@
1
1
  import { EvlogError } from "../error.mjs";
2
2
  import { t as extractErrorStatus } from "../errors-BJRXUfMg.mjs";
3
3
  import { n as serializeEvlogErrorResponse, t as resolveEvlogError } from "../nitro-OmT_M4Pb.mjs";
4
- import { t as createMiddlewareLogger } from "../middleware-BtBuosFV.mjs";
5
- import { t as attachForkToLogger } from "../fork-Y4z8iHti.mjs";
4
+ import { t as createMiddlewareLogger } from "../middleware-BWOJ7JI0.mjs";
5
+ import { t as attachForkToLogger } from "../fork-CTJXnpl8.mjs";
6
6
  import { t as extractSafeHeaders } from "../headers-D74M0wsg.mjs";
7
7
  import { t as createLoggerStorage } from "../storage-CFGTn37X.mjs";
8
8
  //#region src/sveltekit/index.ts
@@ -1,6 +1,6 @@
1
- import { _ as RequestLogger } from "./types-DbzDln7O.mjs";
2
- import { a as runEnrichAndDrain, i as createMiddlewareLogger, n as MiddlewareLoggerOptions, r as MiddlewareLoggerResult, t as BaseEvlogOptions } from "./middleware-FgC1OdOD.mjs";
3
- import { n as getServiceForPath, r as shouldLog, t as extractErrorStatus } from "./errors-Dr0r4OpR.mjs";
1
+ import { Y as RequestLogger } from "./audit-mUutdf6A.mjs";
2
+ import { a as runEnrichAndDrain, i as createMiddlewareLogger, n as MiddlewareLoggerOptions, r as MiddlewareLoggerResult, t as BaseEvlogOptions } from "./middleware-BYf26Lfu.mjs";
3
+ import { n as getServiceForPath, r as shouldLog, t as extractErrorStatus } from "./errors-NIXCyk6I.mjs";
4
4
  import { AsyncLocalStorage } from "node:async_hooks";
5
5
 
6
6
  //#region src/shared/fork.d.ts
package/dist/toolkit.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { t as extractErrorStatus } from "./errors-BJRXUfMg.mjs";
2
2
  import { n as shouldLog, t as getServiceForPath } from "./routes-CGPmbzCZ.mjs";
3
- import { n as runEnrichAndDrain, t as createMiddlewareLogger } from "./middleware-BtBuosFV.mjs";
4
- import { n as forkBackgroundLogger, t as attachForkToLogger } from "./fork-Y4z8iHti.mjs";
3
+ import { n as runEnrichAndDrain, t as createMiddlewareLogger } from "./middleware-BWOJ7JI0.mjs";
4
+ import { n as forkBackgroundLogger, t as attachForkToLogger } from "./fork-CTJXnpl8.mjs";
5
5
  import { n as extractSafeNodeHeaders, t as extractSafeHeaders } from "./headers-D74M0wsg.mjs";
6
6
  import { t as createLoggerStorage } from "./storage-CFGTn37X.mjs";
7
7
  export { attachForkToLogger, createLoggerStorage, createMiddlewareLogger, extractErrorStatus, extractSafeHeaders, extractSafeNodeHeaders, forkBackgroundLogger, getServiceForPath, runEnrichAndDrain, shouldLog };
package/dist/types.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { C as TailSamplingCondition, E as WideEvent, S as ServerEvent, T as TransportConfig, _ as RequestLogger, a as EnvironmentContext, b as SamplingConfig, c as H3EventContext, d as Log, f as LogLevel, g as RequestLogEntry, h as RedactConfig, i as EnrichContext, l as IngestPayload, m as ParsedError, n as DeepPartial, o as ErrorOptions, p as LoggerConfig, r as DrainContext, s as FieldContext, t as BaseWideEvent, u as InternalFields, v as RequestLoggerOptions, w as TailSamplingContext, x as SamplingRates, y as RouteConfig } from "./types-DbzDln7O.mjs";
2
- export { BaseWideEvent, DeepPartial, DrainContext, EnrichContext, EnvironmentContext, ErrorOptions, FieldContext, H3EventContext, IngestPayload, InternalFields, Log, LogLevel, LoggerConfig, ParsedError, RedactConfig, RequestLogEntry, RequestLogger, RequestLoggerOptions, RouteConfig, SamplingConfig, SamplingRates, ServerEvent, TailSamplingCondition, TailSamplingContext, TransportConfig, WideEvent };
1
+ import { $ as SamplingRates, A as AuditFields, B as H3EventContext, F as DrainContext, G as LoggerConfig, H as InternalFields, I as EnrichContext, J as RequestLogEntry, K as ParsedError, L as EnvironmentContext, M as AuditTarget, N as BaseWideEvent, P as DeepPartial, Q as SamplingConfig, R as ErrorOptions, U as Log, V as IngestPayload, W as LogLevel, X as RequestLoggerOptions, Y as RequestLogger, Z as RouteConfig, et as ServerEvent, it as WideEvent, j as AuditLoggerMethod, k as AuditActor, nt as TailSamplingContext, q as RedactConfig, rt as TransportConfig, tt as TailSamplingCondition, z as FieldContext } from "./audit-mUutdf6A.mjs";
2
+ export { AuditActor, AuditFields, AuditLoggerMethod, AuditTarget, BaseWideEvent, DeepPartial, DrainContext, EnrichContext, EnvironmentContext, ErrorOptions, FieldContext, H3EventContext, IngestPayload, InternalFields, Log, LogLevel, LoggerConfig, ParsedError, RedactConfig, RequestLogEntry, RequestLogger, RequestLoggerOptions, RouteConfig, SamplingConfig, SamplingRates, ServerEvent, TailSamplingCondition, TailSamplingContext, TransportConfig, WideEvent };
@@ -1,4 +1,4 @@
1
- import { S as ServerEvent, _ as RequestLogger } from "./types-DbzDln7O.mjs";
1
+ import { Y as RequestLogger, et as ServerEvent } from "./audit-mUutdf6A.mjs";
2
2
 
3
3
  //#region src/runtime/server/useLogger.d.ts
4
4
  /**
@@ -36,4 +36,4 @@ import { S as ServerEvent, _ as RequestLogger } from "./types-DbzDln7O.mjs";
36
36
  declare function useLogger<T extends object = Record<string, unknown>>(event: ServerEvent, service?: string): RequestLogger<T>;
37
37
  //#endregion
38
38
  export { useLogger as t };
39
- //# sourceMappingURL=useLogger-N5A-d5l9.d.mts.map
39
+ //# sourceMappingURL=useLogger-C56tDPwf.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLogger-N5A-d5l9.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"}
1
+ {"version":3,"file":"useLogger-C56tDPwf.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"}
@@ -1,4 +1,4 @@
1
- import { a as EnvironmentContext, f as LogLevel } from "./types-DbzDln7O.mjs";
1
+ import { L as EnvironmentContext, W as LogLevel } from "./audit-mUutdf6A.mjs";
2
2
 
3
3
  //#region src/utils.d.ts
4
4
  declare function formatDuration(ms: number): string;
@@ -51,4 +51,4 @@ declare function filterSafeHeaders(headers: Record<string, string>): Record<stri
51
51
  declare function matchesPattern(path: string, pattern: string): boolean;
52
52
  //#endregion
53
53
  export { escapeFormatString as a, getConsoleMethod as c, isClient as d, isDev as f, matchesPattern as h, detectEnvironment as i, getCssLevelColor as l, isServer as m, colors as n, filterSafeHeaders as o, isLevelEnabled as p, cssColors as r, formatDuration as s, SENSITIVE_HEADERS as t, getLevelColor as u };
54
- //# sourceMappingURL=utils-DnX6VMNi.d.mts.map
54
+ //# sourceMappingURL=utils-DzGCLRFe.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils-DnX6VMNi.d.mts","names":[],"sources":["../src/utils.ts"],"mappings":";;;iBAEgB,cAAA,CAAe,EAAA;AAAA,iBAOf,QAAA,CAAA;AAAA,iBAIA,QAAA,CAAA;AAAA,iBAIA,KAAA,CAAA;AAAA,iBAUA,iBAAA,CAAA,GAAqB,OAAA,CAAQ,kBAAA;;;AAlB7C;iBA+CgB,cAAA,CAAe,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,QAAA;AAAA,iBAI1C,gBAAA,CAAiB,KAAA,EAAO,QAAA,GAAW,QAAA;AAAA,cAItC,MAAA;EAAA;;;;;;;;;;;;iBAgBG,aAAA,CAAc,KAAA;AAAA,cAIjB,SAAA;EAAA;;;;;;;;iBAYG,gBAAA,CAAiB,KAAA;;;;AApCjC;;iBA6CgB,kBAAA,CAAmB,GAAA;;cAKtB,iBAAA;AAAA,iBASG,iBAAA,CAAkB,OAAA,EAAS,MAAA,mBAAyB,MAAA;;;;AAvDpE;iBAyEgB,cAAA,CAAe,IAAA,UAAc,OAAA"}
1
+ {"version":3,"file":"utils-DzGCLRFe.d.mts","names":[],"sources":["../src/utils.ts"],"mappings":";;;iBAEgB,cAAA,CAAe,EAAA;AAAA,iBAOf,QAAA,CAAA;AAAA,iBAIA,QAAA,CAAA;AAAA,iBAIA,KAAA,CAAA;AAAA,iBAUA,iBAAA,CAAA,GAAqB,OAAA,CAAQ,kBAAA;;;AAlB7C;iBA+CgB,cAAA,CAAe,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,QAAA;AAAA,iBAI1C,gBAAA,CAAiB,KAAA,EAAO,QAAA,GAAW,QAAA;AAAA,cAItC,MAAA;EAAA;;;;;;;;;;;;iBAgBG,aAAA,CAAc,KAAA;AAAA,cAIjB,SAAA;EAAA;;;;;;;;iBAYG,gBAAA,CAAiB,KAAA;;;;AApCjC;;iBA6CgB,kBAAA,CAAmB,GAAA;;cAKtB,iBAAA;AAAA,iBASG,iBAAA,CAAkB,OAAA,EAAS,MAAA,mBAAyB,MAAA;;;;AAvDpE;iBAyEgB,cAAA,CAAe,IAAA,UAAc,OAAA"}
package/dist/utils.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as escapeFormatString, c as getConsoleMethod, d as isClient, f as isDev, h as matchesPattern, i as detectEnvironment, l as getCssLevelColor, m as isServer, n as colors, o as filterSafeHeaders, p as isLevelEnabled, r as cssColors, s as formatDuration, t as SENSITIVE_HEADERS, u as getLevelColor } from "./utils-DnX6VMNi.mjs";
1
+ import { a as escapeFormatString, c as getConsoleMethod, d as isClient, f as isDev, h as matchesPattern, i as detectEnvironment, l as getCssLevelColor, m as isServer, n as colors, o as filterSafeHeaders, p as isLevelEnabled, r as cssColors, s as formatDuration, t as SENSITIVE_HEADERS, u as getLevelColor } from "./utils-DzGCLRFe.mjs";
2
2
  export { SENSITIVE_HEADERS, colors, cssColors, detectEnvironment, escapeFormatString, filterSafeHeaders, formatDuration, getConsoleMethod, getCssLevelColor, getLevelColor, isClient, isDev, isLevelEnabled, isServer, matchesPattern };
@@ -1,4 +1,4 @@
1
- import { T as TransportConfig, b as SamplingConfig, f as LogLevel } from "../types-DbzDln7O.mjs";
1
+ import { Q as SamplingConfig, W as LogLevel, rt as TransportConfig } from "../audit-mUutdf6A.mjs";
2
2
  import { Plugin } from "vite";
3
3
 
4
4
  //#region src/vite/types.d.ts
@@ -1,4 +1,4 @@
1
- import { _ as RequestLogger, p as LoggerConfig } from "./types-DbzDln7O.mjs";
1
+ import { G as LoggerConfig, Y as RequestLogger } from "./audit-mUutdf6A.mjs";
2
2
 
3
3
  //#region src/workers/index.d.ts
4
4
  /**
package/dist/workers.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { o as initLogger, r as createRequestLogger } from "./logger-DnobymUQ.mjs";
1
+ import { g as createRequestLogger, y as initLogger } from "./audit-d9esRZOK.mjs";
2
2
  //#region src/workers/index.ts
3
3
  function isRecord(value) {
4
4
  return typeof value === "object" && value !== null && !Array.isArray(value);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "evlog",
3
- "version": "2.13.0",
3
+ "version": "2.14.0",
4
4
  "description": "Wide event logging library with structured error handling. Inspired by LoggingSucks.",
5
5
  "author": "HugoRCD <contact@hrcd.fr>",
6
6
  "homepage": "https://evlog.dev",