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
@@ -244,6 +244,13 @@ interface RedactConfig {
244
244
  replacement?: string;
245
245
  /** @internal Resolved masker functions from built-in patterns. Not user-facing. */
246
246
  _maskers?: Array<[RegExp, (match: string) => string]>;
247
+ /** @internal Precompiled matchers for `paths`, built once by `resolveRedactConfig`. Not user-facing. */
248
+ _pathMatchers?: {
249
+ exactPaths: Set<string>;
250
+ pathGlobs: RegExp[];
251
+ keyGlobs: RegExp[];
252
+ caseInsensitiveLeaves: Set<string>;
253
+ };
247
254
  }
248
255
  /**
249
256
  * Sampling rates per log level (0-100 percentage)
@@ -823,6 +830,9 @@ interface RequestLogger<T extends object = Record<string, unknown>> {
823
830
  * Available on every logger returned by `createLogger()` / `createRequestLogger()`
824
831
  * and on framework loggers exposed via `useLogger()` / `c.get('log')` etc.
825
832
  *
833
+ * Optional on the base {@link RequestLogger} interface for structural typing;
834
+ * always present (required) on {@link import('./audit').AuditableLogger}.
835
+ *
826
836
  * @example
827
837
  * ```ts
828
838
  * log.audit({
@@ -982,7 +992,7 @@ interface RequestLoggerOptions {
982
992
  * H3 event context with evlog logger attached
983
993
  */
984
994
  interface H3EventContext {
985
- log?: RequestLogger;
995
+ log?: AuditableLogger;
986
996
  requestId?: string;
987
997
  status?: number;
988
998
  /** Internal: start time for duration calculation in tail sampling */
@@ -1036,12 +1046,7 @@ interface ParsedError {
1036
1046
  raw: unknown;
1037
1047
  }
1038
1048
  //#endregion
1039
- //#region src/audit.d.ts
1040
- /**
1041
- * Current version of the audit envelope. Bumped when `AuditFields` evolves
1042
- * in a backward-incompatible way so downstream pipelines can branch on it.
1043
- */
1044
- declare const AUDIT_SCHEMA_VERSION = 1;
1049
+ //#region src/audit-action.d.ts
1045
1050
  /**
1046
1051
  * Input accepted by `log.audit()`, `audit()`, and `withAudit()`.
1047
1052
  *
@@ -1060,6 +1065,57 @@ interface AuditInput {
1060
1065
  correlationId?: string;
1061
1066
  version?: number;
1062
1067
  }
1068
+ /** Options for {@link defineAuditAction}. Same shape as {@link AuditActionDefinition}. */
1069
+ type DefineAuditActionOptions = AuditActionDefinition;
1070
+ /**
1071
+ * Define a typed audit action with optional fixed target type and catalog metadata.
1072
+ *
1073
+ * Returns a curried helper that fills in the action name (and target shape
1074
+ * if provided) so call sites stay terse and the action set is discoverable
1075
+ * in one place. Metadata (`description`, `severity`, `requiresChanges`, …)
1076
+ * is exposed on the factory for introspection, docs, and review tooling.
1077
+ *
1078
+ * @example
1079
+ * ```ts
1080
+ * const refund = defineAuditAction('invoice.refund', {
1081
+ * target: 'invoice',
1082
+ * severity: 'high',
1083
+ * requiresChanges: true,
1084
+ * redactPaths: ['cardNumber'],
1085
+ * })
1086
+ *
1087
+ * log.audit(refund({
1088
+ * actor: { type: 'user', id: user.id },
1089
+ * target: { id: 'inv_889' }, // type inferred as 'invoice'
1090
+ * outcome: 'success',
1091
+ * }))
1092
+ * ```
1093
+ */
1094
+ declare function defineAuditAction<const TAction extends string, const TOptions extends DefineAuditActionOptions = DefineAuditActionOptions>(action: TAction, options?: TOptions): DefinedAuditAction<TAction, TOptions>;
1095
+ /**
1096
+ * Return type of {@link defineAuditAction}. Accepts a partial input (no
1097
+ * `action`, target type pre-filled when provided).
1098
+ */
1099
+ type DefinedAuditAction<TAction extends string = string, TOptions extends DefineAuditActionOptions = DefineAuditActionOptions> = ((input: TOptions['target'] extends string ? Omit<AuditInput, 'action' | 'target'> & {
1100
+ target?: Omit<AuditTarget, 'type'> & {
1101
+ type?: TOptions['target'];
1102
+ };
1103
+ } : Omit<AuditInput, 'action'>) => AuditInput) & {
1104
+ readonly action: TAction;
1105
+ readonly target: TOptions['target'];
1106
+ readonly description: TOptions['description'];
1107
+ readonly severity: TOptions['severity'];
1108
+ readonly requiresChanges: TOptions['requiresChanges'];
1109
+ readonly requiresReason: TOptions['requiresReason'];
1110
+ readonly redactPaths: TOptions['redactPaths'];
1111
+ };
1112
+ //#endregion
1113
+ //#region src/audit.d.ts
1114
+ /**
1115
+ * Current version of the audit envelope. Bumped when `AuditFields` evolves
1116
+ * in a backward-incompatible way so downstream pipelines can branch on it.
1117
+ */
1118
+ declare const AUDIT_SCHEMA_VERSION = 1;
1063
1119
  /**
1064
1120
  * Build a normalised {@link AuditFields} from caller input. Defaults:
1065
1121
  * - `outcome` → `'success'`
@@ -1206,50 +1262,6 @@ interface AuditDiffOptions {
1206
1262
  /** Include the full redacted `after` snapshot alongside the patch. */
1207
1263
  includeAfter?: boolean;
1208
1264
  }
1209
- /** Options for {@link defineAuditAction}. Same shape as {@link AuditCatalogEntry}. */
1210
- type DefineAuditActionOptions = AuditActionDefinition;
1211
- /**
1212
- * Define a typed audit action with optional fixed target type and catalog metadata.
1213
- *
1214
- * Returns a curried helper that fills in the action name (and target shape
1215
- * if provided) so call sites stay terse and the action set is discoverable
1216
- * in one place. Metadata (`description`, `severity`, `requiresChanges`, …)
1217
- * is exposed on the factory for introspection, docs, and review tooling.
1218
- *
1219
- * @example
1220
- * ```ts
1221
- * const refund = defineAuditAction('invoice.refund', {
1222
- * target: 'invoice',
1223
- * severity: 'high',
1224
- * requiresChanges: true,
1225
- * redactPaths: ['cardNumber'],
1226
- * })
1227
- *
1228
- * log.audit(refund({
1229
- * actor: { type: 'user', id: user.id },
1230
- * target: { id: 'inv_889' }, // type inferred as 'invoice'
1231
- * outcome: 'success',
1232
- * }))
1233
- * ```
1234
- */
1235
- declare function defineAuditAction<const TAction extends string, const TOptions extends DefineAuditActionOptions = DefineAuditActionOptions>(action: TAction, options?: TOptions): DefinedAuditAction<TAction, TOptions>;
1236
- /**
1237
- * Return type of {@link defineAuditAction}. Accepts a partial input (no
1238
- * `action`, target type pre-filled when provided).
1239
- */
1240
- type DefinedAuditAction<TAction extends string = string, TOptions extends DefineAuditActionOptions = DefineAuditActionOptions> = ((input: TOptions['target'] extends string ? Omit<AuditInput, 'action' | 'target'> & {
1241
- target?: Omit<AuditTarget, 'type'> & {
1242
- type?: TOptions['target'];
1243
- };
1244
- } : Omit<AuditInput, 'action'>) => AuditInput) & {
1245
- readonly action: TAction;
1246
- readonly target: TOptions['target'];
1247
- readonly description: TOptions['description'];
1248
- readonly severity: TOptions['severity'];
1249
- readonly requiresChanges: TOptions['requiresChanges'];
1250
- readonly requiresReason: TOptions['requiresReason'];
1251
- readonly redactPaths: TOptions['redactPaths'];
1252
- };
1253
1265
  /**
1254
1266
  * Test helper that captures every audit event emitted while it is active.
1255
1267
  *
@@ -1287,6 +1299,18 @@ interface AuditMatcher {
1287
1299
  actor?: Partial<AuditActor>;
1288
1300
  target?: Partial<AuditTarget>;
1289
1301
  }
1302
+ /**
1303
+ * @internal Hook used by `RequestLogger.emit()` to detect audit-driven
1304
+ * force-keep flags on the accumulated context. Returns whether the event was
1305
+ * marked by `log.audit()` and clears the flag.
1306
+ */
1307
+ declare function consumeAuditForceKeep(context: Record<string, unknown>): boolean;
1308
+ /**
1309
+ * @internal Decorate the audit field on an event right before drain — fills
1310
+ * in the deterministic idempotency key. Called by the logger pipeline so
1311
+ * it works for both `log.audit()` and direct `log.set({ audit })` paths.
1312
+ */
1313
+ declare function finalizeAudit(event: WideEvent): void;
1290
1314
  /** Shape of the optional better-auth bridge for the audit enricher. */
1291
1315
  interface AuditEnricherBetterAuthBridge {
1292
1316
  /** Read the current authenticated session for this request, if any. */
@@ -1421,5 +1445,5 @@ declare function signed(drain: DrainFn, options: SignedOptions): DrainFn;
1421
1445
  */
1422
1446
  declare const auditRedactPreset: RedactConfig;
1423
1447
  //#endregion
1424
- export { RedactConfig as $, AuditActionDefinition as A, DrainContext as B, buildAuditFields as C, enricherPlugin as Ct, withAudit as D, signed as E, AuditPatchOp as F, FieldContext as G, EnvironmentContext as H, AuditSeverity as I, InternalFields as J, H3EventContext as K, AuditTarget as L, AuditChanges as M, AuditFields as N, withAuditMethods as O, AuditLoggerMethod as P, ParsedError as Q, BaseWideEvent as R, auditRedactPreset as S, drainPlugin as St, mockAudit as T, ErrorCode as U, EnrichContext as V, ErrorOptions as W, LogLevel as X, Log as Y, LoggerConfig as Z, WithAuditOptions as _, PluginSetupContext as _t, AuditInput as a, RouteConfig as at, auditEnricher as b, createPluginRunner as bt, AuditOnlyOptions as c, ServerEvent as ct, DefinedAuditAction as d, TransportConfig as dt, RegisteredAuditCatalogs as et, DrainFn as f, WideEvent as ft, WithAuditContext as g, PluginRunner as gt, SignedOptions as h, EvlogPlugin as ht, AuditEnricherOptions as i, RequestLoggerOptions as it, AuditActor as j, AuditAction as k, AuditableLogger as l, TailSamplingCondition as lt, SignedChainState as m, ClientLogContext as mt, AuditDeniedError as n, RequestLogEntry as nt, AuditMatcher as o, SamplingConfig as ot, MockAudit as p, DevTerminalInput as pt, IngestPayload as q, AuditDiffOptions as r, RequestLogger as rt, AuditMethod as s, SamplingRates as st, AUDIT_SCHEMA_VERSION as t, RegisteredErrorCatalogs as tt, DefineAuditActionOptions as u, TailSamplingContext as ut, audit as v, RequestFinishContext as vt, defineAuditAction as w, getEmptyPluginRunner as wt, auditOnly as x, definePlugin as xt, auditDiff as y, RequestLifecycleContext as yt, DeepPartial as z };
1425
- //# sourceMappingURL=audit-BUAajsPU.d.mts.map
1448
+ export { LogLevel as $, DefinedAuditAction as A, AuditTarget as B, finalizeAudit as C, createPluginRunner as Ct, withAuditMethods as D, getEmptyPluginRunner as Dt, withAudit as E, enricherPlugin as Et, AuditChanges as F, EnvironmentContext as G, DeepPartial as H, AuditFields as I, FieldContext as J, ErrorCode as K, AuditLoggerMethod as L, AuditAction as M, AuditActionDefinition as N, AuditInput as O, AuditActor as P, Log as Q, AuditPatchOp as R, consumeAuditForceKeep as S, RequestLifecycleContext as St, signed as T, drainPlugin as Tt, DrainContext as U, BaseWideEvent as V, EnrichContext as W, IngestPayload as X, H3EventContext as Y, InternalFields as Z, auditDiff as _, ClientLogContext as _t, AuditEnricherOptions as a, RequestLogEntry as at, auditRedactPreset as b, PluginSetupContext as bt, AuditOnlyOptions as c, RouteConfig as ct, MockAudit as d, ServerEvent as dt, LoggerConfig as et, SignedChainState as f, TailSamplingCondition as ft, audit as g, DevTerminalInput as gt, WithAuditOptions as h, WideEvent as ht, AuditEnricherBetterAuthBridge as i, RegisteredErrorCatalogs as it, defineAuditAction as j, DefineAuditActionOptions as k, AuditableLogger as l, SamplingConfig as lt, WithAuditContext as m, TransportConfig as mt, AuditDeniedError as n, RedactConfig as nt, AuditMatcher as o, RequestLogger as ot, SignedOptions as p, TailSamplingContext as pt, ErrorOptions as q, AuditDiffOptions as r, RegisteredAuditCatalogs as rt, AuditMethod as s, RequestLoggerOptions as st, AUDIT_SCHEMA_VERSION as t, ParsedError as tt, DrainFn as u, SamplingRates as ut, auditEnricher as v, EvlogPlugin as vt, mockAudit as w, definePlugin as wt, buildAuditFields as x, RequestFinishContext as xt, auditOnly as y, PluginRunner as yt, AuditSeverity as z };
1449
+ //# sourceMappingURL=audit-CBfv3rl1.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-CBfv3rl1.d.mts","names":[],"sources":["../src/shared/plugin.ts","../src/shared/dev-terminal.ts","../src/types.ts","../src/audit-action.ts","../src/audit.ts"],"mappings":";AAGA;AAAA,UAAiB,kBAAA;EACf,GAAA,EAAK,kBAAA;AAAA;;UAIU,uBAAA;EACf,MAAA,EAAQ,aAAA;EACR,OAAA;IACE,MAAA;IACA,IAAA;IACA,SAAA;EAAA;EAFA;EAKF,OAAA,GAAU,MAAA;AAAA;AAAA,UAGK,oBAAA,SAA6B,uBAAA;EAHlC;EAKV,KAAA,EAAO,SAAA;EACP,MAAA;EACA,UAAA;EACA,KAAA,GAAQ,KAAA;AAAA;;UAIO,gBAAA;EAT6B;EAW5C,OAAA,EAAS,MAAA;EACT,OAAA;IACE,MAAA;IACA,IAAA;EAAA;EAEF,OAAA,GAAU,MAAA;AAAA;;;;;AAPZ;;;;;;;;;;;;;AA6BA;;UAAiB,WAAA;EAID;EAFd,IAAA;EAIe;EAFf,KAAA,IAAS,GAAA,EAAK,kBAAA,YAA8B,OAAA;EAI9B;EAFd,MAAA,IAAU,GAAA,EAAK,aAAA,YAAyB,OAAA;EAI3B;EAFb,KAAA,IAAS,GAAA,EAAK,YAAA,YAAwB,OAAA;EAGf;EADvB,IAAA,IAAQ,GAAA,EAAK,mBAAA,YAA+B,OAAA;EAC5C,cAAA,IAAkB,GAAA,EAAK,uBAAA;EACvB,eAAA,IAAmB,GAAA,EAAK,oBAAA;EAOa;EALrC,WAAA,IAAe,GAAA,EAAK,gBAAA;EAZpB;;;;EAiBA,YAAA,IAAgB,MAAA,EAAQ,aAAA;AAAA;;iBAIV,YAAA,CAAa,MAAA,EAAQ,WAAA,GAAc,WAAA;;iBAKnC,WAAA,CAAY,IAAA,UAAc,KAAA,EAAO,WAAA,CAAY,WAAA,aAAwB,WAAA;;iBAKrE,cAAA,CAAe,IAAA,UAAc,MAAA,EAAQ,WAAA,CAAY,WAAA,cAAyB,WAAA;;;;;UAQzE,YAAA;EAAA,SACN,OAAA,WAAkB,WAAA;EA/BJ;EAAA,SAiCd,SAAA;EAAA,SACA,QAAA;EAAA,SACA,OAAA;EAAA,SACA,mBAAA;EAAA,SACA,YAAA;EAAA,SACA,eAAA;EACT,iBAAA,GAAoB,MAAA,EAAQ,aAAA;EAC5B,iBAAA,GAAoB,GAAA,EAAK,uBAAA;EACzB,kBAAA,GAAqB,GAAA,EAAK,oBAAA;EAC1B,SAAA,GAAY,GAAA,EAAK,aAAA,KAAkB,OAAA;EAlCE;EAoCrC,QAAA,GAAW,GAAA,EAAK,YAAA,KAAiB,OAAA;EACjC,OAAA,GAAU,GAAA,EAAK,mBAAA,KAAwB,OAAA;EACvC,cAAA,GAAiB,GAAA,EAAK,gBAAA;EACtB,QAAA,GAAW,GAAA,EAAK,kBAAA,KAAuB,OAAA;AAAA;;iBAQzB,kBAAA,CAAmB,OAAA,GAAS,WAAA,KAAqB,YAAA;;iBAiHjD,oBAAA,CAAA,GAAwB,YAAA;;;;KCzO5B,iBAAA;;KAGA,oBAAA;;UAGK,oBAAA;EACf,OAAA;EACA,UAAA;EACA,OAAA;EACA,MAAA,GAAS,oBAAA;AAAA;;UAOM,uBAAA;EDPb;ECSF,gBAAA;EACA,WAAA,GAAc,oBAAA;AAAA;;KAIJ,gBAAA,GAAmB,iBAAA,GAAoB,uBAAA;;;;YCvBvC,iBAAA;IFAL;;;AAIP;;;;;;;;;;IEUI,iBAAA,GAAoB,GAAA,EAAK,mBAAA,YAA+B,OAAA;IFFhD;;;AAGZ;;;;;;;;IEYI,cAAA,GAAiB,GAAA,EAAK,aAAA,YAAyB,OAAA;IFVjD;;;;;;;;AAOF;;;;;;;;IEqBI,aAAA,GAAgB,GAAA,EAAK,YAAA,YAAwB,OAAA;EAAA;AAAA;AAAA;EAAA,UAKrC,iBAAA;IACR,iBAAA,GAAoB,GAAA,EAAK,mBAAA,YAA+B,OAAA;IACxD,cAAA,GAAiB,GAAA,EAAK,aAAA,YAAyB,OAAA;IAC/C,aAAA,GAAgB,GAAA,EAAK,YAAA,YAAwB,OAAA;EAAA;AAAA;;;;UAOhC,eAAA;EFGF;;;;EEEb,OAAA;EFOwB;;;;EEDxB,QAAA;EFdc;;;;EEoBd,WAAA,GAAc,kBAAA;AAAA;;;;UAMC,aAAA;EACf,SAAA;EACA,KAAA;EAAA,CACC,GAAA;AAAA;;;;;;;;UAUc,YAAA;EF7BK;;;;;;;EEqCpB,KAAA;EF5B0B;EE8B1B,QAAA,GAAW,MAAA;EF9BiD;;;;;;AAK9D;;EEkCE,QAAA,WAAmB,KAAA;EFlCwC;;;;;EEwC3D,WAAA;EFxC+C;EE0C/C,QAAA,GAAW,KAAA,EAAO,MAAA,GAAS,KAAA;EF1Ca;EE4CxC,aAAA;IACE,UAAA,EAAY,GAAA;IACZ,SAAA,EAAW,MAAA;IACX,QAAA,EAAU,MAAA;IACV,qBAAA,EAAuB,GAAA;EAAA;AAAA;;;;UAOV,aAAA;EFlDc;EEoD7B,IAAA;EFpD+D;EEsD/D,IAAA;EFtDwF;EEwDxF,KAAA;EFxDmG;EE0DnG,KAAA;AAAA;;;;;UAOe,qBAAA;EF7CE;EE+CjB,MAAA;EF7CgB;EE+ChB,QAAA;EF9Ce;EEgDf,IAAA;AAAA;;;;;UAOe,mBAAA;EFrEY;EEuE3B,MAAA;EFpES;EEsET,QAAA;EFpES;EEsET,IAAA;EFpES;EEsET,MAAA;EFrE4B;EEuE5B,OAAA,EAAS,MAAA;EFtET;;;;EE2EA,UAAA;AAAA;;;;;UAOe,aAAA;EF9EC;EEgFhB,KAAA,EAAO,SAAA;EFhF0B;EEkFjC,OAAA;IACE,MAAA;IACA,IAAA;IACA,SAAA;EAAA;EFnFoB;EEsFtB,OAAA,GAAU,MAAA;EFrFV;EEuFA,QAAA;IACE,MAAA;IACA,OAAA,GAAU,MAAA;EAAA;AAAA;AFjFd;;;;AAAA,UEyFiB,YAAA;EFzFkB;EE2FjC,KAAA,EAAO,SAAA;EF3FoE;EE6F3E,OAAA;IACE,MAAA;IACA,IAAA;IACA,SAAA;EAAA;EFiBgD;EEdlD,OAAA,GAAU,MAAA;AAAA;;AD3NZ;;UCiOiB,cAAA;EDjOY;;AAG7B;;;;;AAGA;;;;;;;;;;;EC8OE,KAAA,GAAQ,aAAA;EDnO8B;;;;;;;;AAOxC;;;;;;;;AC1B6D;EAyQ3D,IAAA,GAAO,qBAAA;AAAA;;;;UAMQ,WAAA;EA/NQ;EAiOvB,OAAA;AAAA;;;;UAMe,kBAAA;EAtQO;EAwQtB,OAAA;EA3PE;EA6PF,WAAA;EA7PmB;EA+PnB,OAAA;EA7OE;EA+OF,UAAA;EA/OkB;EAiPlB,MAAA;AAAA;;;AAjPsD;UAuPvC,YAAA;;;;;;EAMf,OAAA;EArP+C;EAuP/C,GAAA,GAAM,OAAA,CAAQ,kBAAA;EAvPwC;EAyPtD,MAAA;EA3PE;;;;EAgQF,GAAA,GAAM,gBAAA;EA/PkB;EAiQxB,QAAA,GAAW,cAAA;EAjQsC;;;;;;EAwQjD,QAAA,GAAW,QAAA;EAvQ2C;AAOxD;;;;EAsQE,SAAA;EA3PA;;;;;AAYF;;EAuPE,MAAA;EAvP4B;;;;;;AAa9B;;;;;;;;;;;;;;;;;;;;;;;;;EA0QE,MAAA,aAAmB,YAAA;EA3OjB;;;;;;;;AASJ;;;;;;;;;;AAeA;;;;;;;;;AAaA;;;;EAsOE,KAAA,IAAS,GAAA,EAAK,YAAA,YAAwB,OAAA;EAlOtC;;;;;;;;AAkBF;;;;;;;;;;;;;;;;EAyOE,OAAA,GAAU,KAAA,CAzBmC,WAAA;EAnM3C;EA8NF,qBAAA;AAAA;;;AArNF;;;;;;;KAiOY,aAAA;;;;;UAMK,qBAAA;EA7NC;EA+NhB,MAAA;EAzN6B;EA2N7B,WAAA;EArL4B;EAuL5B,QAAA,GAAW,aAAA;EA1MH;EA4MR,eAAA;EAzLO;EA2LP,cAAA;EA3L4B;EA6L5B,WAAA;AAAA;AAAA,UAGe,UAAA;EACf,IAAA;EACA,EAAA;EACA,WAAA;EACA,KAAA;EACA,KAAA;EACA,KAAA;EACA,MAAA;EACA,QAAA;AAAA;;;;;AA1KF;;;UAoLiB,WAAA;EACf,IAAA;EACA,EAAA;EAAA,CACC,GAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;UAwBc,YAAA;EACf,EAAA;EACA,IAAA;EACA,KAAA;AAAA;;UAIe,YAAA;EACf,MAAA;EACA,KAAA;EACA,KAAA,GAAQ,YAAA;AAAA;AAAA,UAGO,WAAA;EA/EQ;EAiFvB,MAAA;EACA,KAAA,EAAO,UAAA;EACP,MAAA,GAAS,WAAA;EACT,OAAA;EA9EoC;EAgFpC,MAAA;EA1EwB;EA4ExB,OAAA,GAAU,YAAA;EA9EV;EAgFA,WAAA;EA9EW;EAgFX,aAAA;EA5EA;EA8EA,OAAA;EA5EW;EA8EX,cAAA;EA3Ee;EA6Ef,OAAA;IACE,SAAA;IACA,OAAA;IACA,EAAA;IACA,SAAA;IACA,QAAA;IAAA,CACC,GAAA;EAAA;EA7EH;EAgFA,SAAA;EA9EA;EAgFA,QAAA;EAhFQ;EAkFR,IAAA;AAAA;;;;;;;UASe,aAAA;EACf,SAAA;EACA,KAAA;EACA,OAAA;EACA,WAAA;EACA,OAAA;EACA,UAAA;EACA,MAAA;EACA,KAAA,GAAQ,WAAA;AAAA;AAvDV;;;AAAA,KA6DY,SAAA,GAAY,aAAA,GAAgB,MAAA;;;;;KAM5B,WAAA,MAAiB,CAAA,SAAU,KAAA,YACnC,CAAA,GACA,CAAA,gCACgB,CAAA,IAAK,WAAA,CAAY,CAAA,CAAE,CAAA,OACjC,CAAA;;;;;UAMW,cAAA;EACf,MAAA;EACA,OAAA;EACA,WAAA,GAAc,eAAA;EAvEd;EAyEA,SAAA;EAxEA;EA0EA,gBAAA;AAAA;;;;UAMe,eAAA;EACf,KAAA;EACA,OAAA;EACA,SAAA;AAAA;;;;;;;KASU,YAAA,oBAAgC,MAAA,qBAC1C,WAAA,CAAY,IAAA,CAAK,CAAA,QAAS,cAAA,KAAmB,cAAA;;;;;AAxD/C;;;;;;;;;;;;;;;AAcA;;;;;AAMA;;;;;;;;;;;UAyEiB,aAAA,oBAAiC,MAAA;EArE3C;;;;;;;;EA8EL,GAAA,GAAM,OAAA,EAAS,YAAA,CAAa,CAAA;EA/EL;;;;;;AAOzB;;;;;;;;;;;;AAaA;EAgFE,QAAA,GAAW,KAAA,EAAO,QAAA;;;;;;EAOlB,KAAA,GAAQ,KAAA,EAAO,KAAA,WAAgB,OAAA,GAAU,YAAA,CAAa,CAAA;EApF7C;AASX;;;;EAkFE,IAAA,GAAO,OAAA,UAAiB,OAAA,GAAU,YAAA,CAAa,CAAA;EAjFrB;;;;;EAwF1B,IAAA,GAAO,OAAA,UAAiB,OAAA,GAAU,YAAA,CAAa,CAAA;EAzFxB;;;;;;;EAkGvB,IAAA,GAAO,SAAA,GAAY,YAAA,CAAa,CAAA;IAAO,UAAA;EAAA,MAA2B,SAAA;EA5DtC;;;EAiE5B,UAAA,QAAkB,YAAA,CAAa,CAAA,IAAK,MAAA;EAxDrB;;;;;;;;;;;;;;;;;;;EA6Ef,IAAA,IAAQ,KAAA,UAAe,EAAA,eAAiB,OAAA;EAtFQ;;;;;;;;;;;;;;;;;;;;;;;;;EAiHhD,KAAA,GAAQ,iBAAA;AAAA;;UAIO,iBAAA;EAAA,CACd,KAAA,EAD+B,UAAA;EAEhC,IAAA,GAAO,MAAA,UAAgB,KAAA,EAAO,IAAA,CADM,UAAA;AAAA;;;;KAO1B,QAAA;;;;;;;AARZ;;;UAmBiB,GAAA;EAlBqB;;;;;EAwBpC,IAAA,CAAK,GAAA,UAAa,OAAA;EAClB,IAAA,CAAK,KAAA,EAAO,MAAA;EAxBL;;;;;EA+BP,KAAA,CAAM,GAAA,UAAa,OAAA;EACnB,KAAA,CAAM,KAAA,EAAO,MAAA;EA1BK;;;;AAWpB;EAsBE,IAAA,CAAK,GAAA,UAAa,OAAA;EAClB,IAAA,CAAK,KAAA,EAAO,MAAA;EAhBA;;;;;EAuBZ,KAAA,CAAM,GAAA,UAAa,OAAA;EACnB,KAAA,CAAM,KAAA,EAAO,MAAA;AAAA;;;;;;;;;;;;;;;;;;;UAqBE,uBAAA;;;;;AAAjB;UAOiB,uBAAA;;KAGZ,mBAAA,MAAyB,CAAA;EAAA,SAAqB,MAAA,EAAQ,aAAA;AAAA,IAA0C,CAAA;;KAGhG,qBAAA,MAA2B,CAAA;EAAA,SAAqB,QAAA,EAAU,aAAA;AAAA,IAA0C,CAAA;;;;;;KAO7F,SAAA,iBACE,uBAAA,GAA0B,mBAAA,CAAoB,uBAAA,CAAwB,CAAA,WAC5E,uBAAA;;;;AAZ8F;KAkB1F,WAAA,iBACE,uBAAA,GAA0B,qBAAA,CAAsB,uBAAA,CAAwB,CAAA,WAC9E,uBAAA;;;;UAKS,YAAA;EAtBkE;EAwBjF,OAAA;EAxBwG;;AAO1G;;;;;;;EA2BE,IAAA,GAAO,SAAA;EAzBsB;EA2B7B,MAAA;EA5BC;EA8BD,GAAA;EA9BsC;EAgCtC,GAAA;EAhCkF;EAkClF,IAAA;EAjC6B;EAmC7B,KAAA,GAAQ,KAAA;EA7BE;;;;EAkCV,QAAA,GAAW,MAAA;AAAA;;;;UAMI,oBAAA;EACf,MAAA;EACA,IAAA;EACA,SAAA;EA1C4D;;;;;AAM9D;;;;EA8CE,SAAA,IAAa,OAAA,EAAS,OAAA;AAAA;;;;UAMP,cAAA;EACf,GAAA,GAD6B,eAAA;EAE7B,SAAA;EACA,MAAA;EArCA;EAuCA,eAAA;EAnCA;EAqCA,aAAA;EAhCA;EAkCA,cAAA;EAlCiB;EAoCjB,gBAAA;EAAA,CACC,GAAA;AAAA;;;;UAMc,WAAA;EACf,MAAA;EACA,IAAA;EACA,OAAA,EAAS,cAAA;IA3BI,yEA6BX,UAAA;MACE,OAAA;QACE,SAAA,GAAY,OAAA,EAAS,OAAA;MAAA;IAAA,GAxBY;IA4BrC,SAAA,IAAa,OAAA,EAAS,OAAA;EAAA;EAExB,IAAA;IAAS,GAAA;MAAQ,UAAA;IAAA;EAAA;EACjB,QAAA,GAAW,QAAA;AAAA;;;AAdb;UAoBiB,WAAA;EACf,OAAA;EACA,MAAA;EAf2B;;;;;;;EAuB3B,IAAA,GAAO,SAAA;EACP,GAAA;EACA,GAAA;EACA,IAAA;EACA,GAAA;AAAA;;;AF98BF;;;;;AAKA;;AALA,UGMiB,UAAA;EACf,MAAA;EACA,KAAA,EAAO,UAAA;EACP,MAAA,GAAS,WAAA;EACT,OAAA,GAAU,WAAA;EACV,MAAA;EACA,OAAA,GAAU,WAAA;EACV,WAAA;EACA,aAAA;EACA,OAAA;AAAA;;KAIU,wBAAA,GAA2B,qBAAA;;;;;;;;;;;;;;;;;AHMvC;;;;;;;;iBGoBgB,iBAAA,sDAES,wBAAA,GAA2B,wBAAA,CAAA,CAClD,MAAA,EAAQ,OAAA,EAAS,OAAA,GAAU,QAAA,GAAW,kBAAA,CAAmB,OAAA,EAAS,QAAA;;;;;KA8BxD,kBAAA,mDAEO,wBAAA,GAA2B,wBAAA,MAG1C,KAAA,EAAO,QAAA,4BACH,IAAA,CAAK,UAAA;EAAqC,MAAA,GAAS,IAAA,CAAK,WAAA;IAAyB,IAAA,GAAO,QAAA;EAAA;AAAA,IACxF,IAAA,CAAK,UAAA,gBACN,UAAA;EAAA,SAEM,MAAA,EAAQ,OAAA;EAAA,SACR,MAAA,EAAQ,QAAA;EAAA,SACR,WAAA,EAAa,QAAA;EAAA,SACb,QAAA,EAAU,QAAA;EAAA,SACV,eAAA,EAAiB,QAAA;EAAA,SACjB,cAAA,EAAgB,QAAA;EAAA,SAChB,WAAA,EAAa,QAAA;AAAA;;;;;;AHzF1B;cIIa,oBAAA;;;;;;;;;iBA4EG,gBAAA,CAAiB,KAAA,EAAO,UAAA,GAAa,WAAA;;;;AJrErD;;;;;;;;;;;;;;;iBIiHgB,gBAAA,oBAAoC,MAAA,kBAAA,CAAyB,MAAA,EAAQ,aAAA,CAAc,CAAA,IAAK,eAAA,CAAgB,CAAA;;AJxGxH;;KIuIY,eAAA,oBAAmC,MAAA,qBAA2B,aAAA,CAAc,CAAA;EAAO,KAAA,EAAO,WAAA,CAAY,CAAA;AAAA;;UAGjG,WAAA,oBAA+B,MAAA;EAAA,CAC7C,KAAA,EAAO,UAAA;EJtIN;;;;;EI4IF,IAAA,GAAO,MAAA,UAAgB,KAAA,EAAO,IAAA,CAAK,UAAA;AAAA;;;;;;;;;;;;;;;;;;;;iBAsBrB,KAAA,CAAM,KAAA,EAAO,UAAA,GAAa,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;iBA8B1B,SAAA,iBAAA,CACd,OAAA,EAAS,gBAAA,CAAiB,MAAA,GAC1B,EAAA,GAAK,KAAA,EAAO,MAAA,EAAQ,GAAA,EAAK,gBAAA,KAAqB,OAAA,CAAQ,OAAA,IAAW,OAAA,IAC/D,KAAA,EAAO,MAAA,EAAQ,GAAA,EAAK,gBAAA,KAAqB,OAAA,CAAQ,OAAA;;AJpJrD;;;;cIyLa,gBAAA,SAAyB,KAAA;cAExB,MAAA;AAAA;;UAQG,gBAAA;EACf,MAAA;EACA,MAAA,GAAS,WAAA,KAAgB,KAAA,EAAO,MAAA,KAAW,WAAA;AAAA;;;;;UAO5B,gBAAA;EACf,KAAA,EAAO,UAAA;EACP,WAAA;EACA,aAAA;AAAA;;;;AJrMF;;;;;;;;;;;;;;;AAQA;iBImNgB,SAAA,CACd,MAAA,WACA,KAAA,WACA,OAAA,GAAS,gBAAA;EACN,MAAA;EAAkB,KAAA;EAAiB,KAAA,EAAO,YAAA;AAAA;;UAmD9B,gBAAA;EJ5PC;EI8PhB,WAAA;EJ7Pe;EI+Pf,WAAA;EJ9PsB;EIgQtB,aAAA;EJ/PuC;EIiQvC,YAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;iBAwBc,SAAA,CAAA,GAAa,SAAA;;UA8BZ,SAAA;EACf,MAAA,EAAQ,WAAA;EACR,OAAA;EACA,gBAAA,GAAmB,OAAA,EAAS,YAAA;EJ5TlB;EI8TV,WAAA,GAAc,OAAA,EAAS,YAAA,KAAiB,WAAA;AAAA;;UAIzB,YAAA;EACf,MAAA,YAAkB,MAAA;EAClB,OAAA,GAAU,WAAA;EACV,KAAA,GAAQ,OAAA,CAAQ,UAAA;EAChB,MAAA,GAAS,OAAA,CAAQ,WAAA;AAAA;;AJ5TnB;;;;iBI2VgB,qBAAA,CAAsB,OAAA,EAAS,MAAA;;;;;AJ1O/C;iBIwPgB,aAAA,CAAc,KAAA,EAAO,SAAA;;UASpB,6BAAA;EJjQmC;EImQlD,UAAA,GAAa,GAAA,EAAK,aAAA,KAAkB,OAAA,CAAQ,UAAA,uBAAiC,UAAA;AAAA;;UAI9D,oBAAA;EHhfY;;;;EGqf3B,QAAA,IAAY,GAAA,EAAK,aAAA;EHlfa;;;;EGuf9B,MAAA,GAAS,6BAAA;EHpf0B;EGsfnC,SAAA;AAAA;;;;;;;;AH3eF;;;;;;;;iBG6fgB,aAAA,CAAc,OAAA,GAAS,oBAAA,IAA6B,GAAA,EAAK,aAAA,YAAyB,OAAA;AHtflG;AAAA,UG8hBiB,gBAAA;;;;;;EAMf,KAAA;AAAA;;KAIU,OAAA,IAAW,GAAA,EAAK,YAAA,YAAwB,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BpC,SAAA,CAAU,KAAA,EAAO,OAAA,EAAS,OAAA,GAAS,gBAAA,GAAwB,OAAA;;UAY1D,gBAAA;EFljBY;EEojB3B,IAAA,QAAY,OAAA;EFnjBY;EEqjBxB,IAAA,GAAO,IAAA,aAAiB,OAAA;AAAA;;KAId,aAAA;EACN,QAAA;EAAkB,MAAA;EAAgB,SAAA;AAAA;EAClC,QAAA;EAAwB,KAAA,GAAQ,gBAAA;EAAkB,SAAA;AAAA;;;;;;;;;;AFnjBxD;;;;;;;;;;AAuBA;;;;;;;iBEwjBgB,MAAA,CAAO,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,aAAA,GAAgB,OAAA;;AF3iBhE;;;;;;;;;;;;;;;cEoqBa,iBAAA,EAAmB,YAAA"}
@@ -1,5 +1,5 @@
1
1
  import { colors, cssColors, detectEnvironment, escapeFormatString, formatDuration, getConsoleMethod, getCssLevelColor, getLevelColor, globToRegExp, isBrowser, isDev, isLevelEnabled, matchesPattern } from "./utils.mjs";
2
- import { i as registerPrettyErrorSnippetReader, n as buildErrorEntries } from "./pretty-error-CVVgwlTn.mjs";
2
+ import { n as buildErrorEntries, r as compactStackForStorage } from "./pretty-error-THg0U0w9.mjs";
3
3
  import { t as resolveDevTerminal } from "./dev-terminal-D4UaEm17.mjs";
4
4
  import { EvlogError } from "./error.mjs";
5
5
  import { r as getHeader$1 } from "./headers-VtmnWcfn.mjs";
@@ -46,7 +46,7 @@ function addPathGlobPattern(pattern, exactPaths, pathGlobs, caseInsensitiveLeave
46
46
  const leaf = pattern.match(/^\*\*\.([^.?*]+)$/);
47
47
  if (leaf) {
48
48
  exactPaths.add(leaf[1]);
49
- caseInsensitiveLeaves.add(leaf[1]);
49
+ caseInsensitiveLeaves.add(leaf[1].toLowerCase());
50
50
  }
51
51
  }
52
52
  /**
@@ -55,8 +55,7 @@ function addPathGlobPattern(pattern, exactPaths, pathGlobs, caseInsensitiveLeave
55
55
  */
56
56
  function matchesRedactPath(fullPath, leafKey, matchers) {
57
57
  if (matchers.exactPaths.has(fullPath)) return true;
58
- const leafLower = leafKey.toLowerCase();
59
- for (const name of matchers.caseInsensitiveLeaves) if (leafLower === name.toLowerCase()) return true;
58
+ if (matchers.caseInsensitiveLeaves.has(leafKey.toLowerCase())) return true;
60
59
  for (const glob of matchers.pathGlobs) {
61
60
  glob.lastIndex = 0;
62
61
  if (glob.test(fullPath)) return true;
@@ -186,11 +185,15 @@ const builtinPatterns = {
186
185
  function resolveRedactConfig(input) {
187
186
  if (input === void 0 || input === false) return void 0;
188
187
  if (input === true) return { _maskers: allBuiltinMaskers() };
189
- if (input.builtins === false) return input;
188
+ if (input.builtins === false) return {
189
+ ...input,
190
+ _pathMatchers: compileRedactPathMatchers(input.paths)
191
+ };
190
192
  const maskers = Array.isArray(input.builtins) ? input.builtins.map((name) => builtinPatterns[name]).filter(Boolean).map((b) => [cloneRegex(b.pattern), b.mask]) : allBuiltinMaskers();
191
193
  return {
192
194
  ...input,
193
- _maskers: maskers
195
+ _maskers: maskers,
196
+ _pathMatchers: compileRedactPathMatchers(input.paths)
194
197
  };
195
198
  }
196
199
  function allBuiltinMaskers() {
@@ -244,7 +247,7 @@ function cloneForRedaction(event) {
244
247
  function redactEvent(event, config) {
245
248
  const clone = cloneForRedaction(event);
246
249
  const replacement = config.replacement ?? DEFAULT_REPLACEMENT;
247
- const pathMatchers = compileRedactPathMatchers(config.paths);
250
+ const pathMatchers = config._pathMatchers ?? compileRedactPathMatchers(config.paths);
248
251
  if (pathMatchers) redactPathsInTree(clone, pathMatchers, replacement);
249
252
  if (config._maskers?.length) applyMaskersToTree(clone, config._maskers);
250
253
  if (config.patterns?.length) redactPatterns(clone, config.patterns, replacement);
@@ -268,10 +271,7 @@ function redactPatterns(obj, patterns, replacement) {
268
271
  }
269
272
  function applyPatterns(value, patterns, replacement) {
270
273
  let result = value;
271
- for (const pattern of patterns) {
272
- pattern.lastIndex = 0;
273
- result = result.replace(pattern, replacement);
274
- }
274
+ for (const pattern of patterns) result = result.replace(pattern, replacement);
275
275
  return result;
276
276
  }
277
277
  function applyMaskersToTree(obj, maskers) {
@@ -292,10 +292,7 @@ function applyMaskersToTree(obj, maskers) {
292
292
  }
293
293
  function applyMaskers(value, maskers) {
294
294
  let result = value;
295
- for (const [pattern, mask] of maskers) {
296
- pattern.lastIndex = 0;
297
- result = result.replace(pattern, mask);
298
- }
295
+ for (const [pattern, mask] of maskers) result = result.replace(pattern, mask);
299
296
  return result;
300
297
  }
301
298
  /**
@@ -465,6 +462,10 @@ function getEmptyPluginRunner() {
465
462
  }
466
463
  //#endregion
467
464
  //#region src/logger.ts
465
+ const nativeStdoutWrite = typeof process !== "undefined" && typeof process.stdout?.write === "function" ? process.stdout.write.bind(process.stdout) : void 0;
466
+ function writePrettyStdout(text) {
467
+ (globalThis.__evlogNativeStdoutWrite ?? nativeStdoutWrite)?.(text);
468
+ }
468
469
  function isPlainObject$1(val) {
469
470
  return val !== null && typeof val === "object" && !Array.isArray(val);
470
471
  }
@@ -549,11 +550,6 @@ function initLogger(config = {}) {
549
550
  globalMinLevel = config.minLevel ?? "debug";
550
551
  globalPluginRunner = config.plugins?.length ? createPluginRunner(config.plugins) : getEmptyPluginRunner();
551
552
  if (globalPluginRunner.plugins.length > 0) globalPluginRunner.runSetup({ env: { ...globalEnv } });
552
- if (!isBrowser() && typeof process !== "undefined" && process.versions?.node) import("./pretty-error-snippet.node-c_bzjg7g.mjs").then((n) => n.t).then((mod) => {
553
- registerPrettyErrorSnippetReader(mod.readCodeSnippetFromDisk);
554
- }).catch(() => {
555
- registerPrettyErrorSnippetReader(null);
556
- });
557
553
  const hasAnyDrain = !!globalDrain || globalPluginRunner.hasDrain;
558
554
  if (globalSilent && !hasAnyDrain && !config._suppressDrainWarning) console.warn("[evlog] silent mode is enabled but no drain is configured. Events will be built and sampled but not output anywhere. Set a drain via initLogger({ drain }) or a framework hook (evlog:drain).");
559
555
  }
@@ -883,8 +879,8 @@ function buildAIEntries(ai) {
883
879
  function flushPrettyLines(lines) {
884
880
  if (lines.length === 0) return;
885
881
  const text = `${lines.join("\n")}\n`;
886
- if (typeof process !== "undefined" && typeof process.stdout?.write === "function" && !isBrowser() && process.env.VITEST !== "true") {
887
- process.stdout.write(text);
882
+ if (nativeStdoutWrite && !isBrowser() && process.env.VITEST !== "true") {
883
+ writePrettyStdout(text);
888
884
  return;
889
885
  }
890
886
  console.log(lines.join("\n"));
@@ -1104,7 +1100,7 @@ function createLogger(initialContext = {}, internalOptions) {
1104
1100
  const errorObj = {
1105
1101
  name: err.name,
1106
1102
  message: err.message,
1107
- stack: err.stack
1103
+ stack: isDev() ? compactStackForStorage(err.stack) : err.stack
1108
1104
  };
1109
1105
  const errRecord = err;
1110
1106
  for (const k of [
@@ -1254,11 +1250,14 @@ function isPlainObject(value) {
1254
1250
  if (Object.prototype.toString.call(value) !== "[object Object]") return false;
1255
1251
  return Object.getPrototypeOf(value) === Object.prototype || value.constructor === Object;
1256
1252
  }
1257
- function stableStringify(value) {
1253
+ function stableStringify(value, ancestors = /* @__PURE__ */ new WeakSet()) {
1258
1254
  if (value === null || typeof value !== "object") return JSON.stringify(value);
1259
- if (Array.isArray(value)) return `[${value.map(stableStringify).join(",")}]`;
1260
- if (!isPlainObject(value)) return JSON.stringify(value);
1261
- return `{${Object.keys(value).sort().map((k) => `${JSON.stringify(k)}:${stableStringify(value[k])}`).join(",")}}`;
1255
+ if (ancestors.has(value)) return "\"[Circular]\"";
1256
+ if (!Array.isArray(value) && !isPlainObject(value)) return JSON.stringify(value);
1257
+ ancestors.add(value);
1258
+ const out = Array.isArray(value) ? `[${value.map((v) => stableStringify(v, ancestors)).join(",")}]` : `{${Object.keys(value).sort().map((k) => `${JSON.stringify(k)}:${stableStringify(value[k], ancestors)}`).join(",")}}`;
1259
+ ancestors.delete(value);
1260
+ return out;
1262
1261
  }
1263
1262
  /**
1264
1263
  * @internal Sync, isomorphic 32-bit FNV-1a. Used to derive the idempotency
@@ -1538,75 +1537,6 @@ function auditDiff(before, after, options = {}) {
1538
1537
  return result;
1539
1538
  }
1540
1539
  /**
1541
- * Define a typed audit action with optional fixed target type and catalog metadata.
1542
- *
1543
- * Returns a curried helper that fills in the action name (and target shape
1544
- * if provided) so call sites stay terse and the action set is discoverable
1545
- * in one place. Metadata (`description`, `severity`, `requiresChanges`, …)
1546
- * is exposed on the factory for introspection, docs, and review tooling.
1547
- *
1548
- * @example
1549
- * ```ts
1550
- * const refund = defineAuditAction('invoice.refund', {
1551
- * target: 'invoice',
1552
- * severity: 'high',
1553
- * requiresChanges: true,
1554
- * redactPaths: ['cardNumber'],
1555
- * })
1556
- *
1557
- * log.audit(refund({
1558
- * actor: { type: 'user', id: user.id },
1559
- * target: { id: 'inv_889' }, // type inferred as 'invoice'
1560
- * outcome: 'success',
1561
- * }))
1562
- * ```
1563
- */
1564
- function defineAuditAction(action, options) {
1565
- const targetType = options?.target;
1566
- const factory = ((input) => {
1567
- const merged = {
1568
- ...input,
1569
- action
1570
- };
1571
- if (targetType && input.target && !input.target.type) merged.target = {
1572
- ...input.target,
1573
- type: targetType
1574
- };
1575
- return merged;
1576
- });
1577
- Object.defineProperties(factory, {
1578
- action: {
1579
- value: action,
1580
- enumerable: true
1581
- },
1582
- target: {
1583
- value: options?.target,
1584
- enumerable: true
1585
- },
1586
- description: {
1587
- value: options?.description,
1588
- enumerable: true
1589
- },
1590
- severity: {
1591
- value: options?.severity,
1592
- enumerable: true
1593
- },
1594
- requiresChanges: {
1595
- value: options?.requiresChanges,
1596
- enumerable: true
1597
- },
1598
- requiresReason: {
1599
- value: options?.requiresReason,
1600
- enumerable: true
1601
- },
1602
- redactPaths: {
1603
- value: options?.redactPaths,
1604
- enumerable: true
1605
- }
1606
- });
1607
- return factory;
1608
- }
1609
- /**
1610
1540
  * Test helper that captures every audit event emitted while it is active.
1611
1541
  *
1612
1542
  * Returns `{ events, restore, toIncludeAuditOf, assertAudit }`:
@@ -1858,17 +1788,14 @@ function signed(drain, options) {
1858
1788
  }
1859
1789
  /**
1860
1790
  * @internal Resolve the Web Crypto SubtleCrypto interface. Available natively
1861
- * in browsers, Node 19+, Bun, Deno, and Cloudflare Workers. Falls back to
1862
- * Node's `webcrypto` for Node 18 (where `globalThis.crypto` is gated behind
1863
- * a flag). The dynamic import keeps `node:crypto` out of browser bundles.
1791
+ * in browsers, Node 19+, Bun, Deno, Cloudflare Workers, and Convex. Requires
1792
+ * `globalThis.crypto.subtle` no `node:crypto` fallback so non-Node bundlers
1793
+ * can import the main entrypoint without resolving Node built-ins (#387).
1864
1794
  */
1865
- async function getSubtle() {
1866
- const c = globalThis.crypto;
1867
- if (c?.subtle) return c.subtle;
1868
- return (await import(
1869
- /* @vite-ignore */
1870
- "node:crypto"
1871
- )).webcrypto.subtle;
1795
+ function getSubtle() {
1796
+ const subtle = globalThis.crypto?.subtle;
1797
+ if (subtle) return subtle;
1798
+ throw new Error("[evlog/audit] Web Crypto is not available. signed() requires globalThis.crypto.subtle (Node 19+, modern browsers, Cloudflare Workers, Convex, Bun, Deno).");
1872
1799
  }
1873
1800
  function normalizeAlgo(algorithm) {
1874
1801
  switch (algorithm.toLowerCase()) {
@@ -1889,10 +1816,10 @@ function bufToHex(buf) {
1889
1816
  return out;
1890
1817
  }
1891
1818
  async function digestHex(algorithm, data) {
1892
- return bufToHex(await (await getSubtle()).digest(normalizeAlgo(algorithm), new TextEncoder().encode(data)));
1819
+ return bufToHex(await getSubtle().digest(normalizeAlgo(algorithm), new TextEncoder().encode(data)));
1893
1820
  }
1894
1821
  async function hmacHex(algorithm, secret, data) {
1895
- const subtle = await getSubtle();
1822
+ const subtle = getSubtle();
1896
1823
  const hash = normalizeAlgo(algorithm);
1897
1824
  const key = await subtle.importKey("raw", new TextEncoder().encode(secret), {
1898
1825
  name: "HMAC",
@@ -1942,6 +1869,6 @@ const auditRedactPreset = { paths: [
1942
1869
  "set-cookie"
1943
1870
  ] };
1944
1871
  //#endregion
1945
- export { enricherPlugin as A, lockLogger as C, createPluginRunner as D, shouldKeep as E, resolveRedactConfig as F, isGloballyRedacted as M, normalizeRedactConfig as N, definePlugin as O, redactEvent as P, isLoggerLocked as S, mergeInto as T, getEnvironment as _, auditEnricher as a, initLogger as b, buildAuditFields as c, signed as d, withAudit as f, createRequestLogger as g, createLogger as h, auditDiff as i, getEmptyPluginRunner as j, drainPlugin as k, defineAuditAction as l, _log as m, AuditDeniedError as n, auditOnly as o, withAuditMethods as p, audit as r, auditRedactPreset as s, AUDIT_SCHEMA_VERSION as t, mockAudit as u, getGlobalDrain as v, markWideEventDrainStarted as w, isEnabled as x, getGlobalPluginRunner as y };
1872
+ export { drainPlugin as A, isLoggerLocked as C, shouldKeep as D, mergeInto as E, redactEvent as F, resolveRedactConfig as I, getEmptyPluginRunner as M, isGloballyRedacted as N, createPluginRunner as O, normalizeRedactConfig as P, isEnabled as S, markWideEventDrainStarted as T, createRequestLogger as _, auditEnricher as a, getGlobalPluginRunner as b, buildAuditFields as c, mockAudit as d, signed as f, createLogger as g, _log as h, auditDiff as i, enricherPlugin as j, definePlugin as k, consumeAuditForceKeep as l, withAuditMethods as m, AuditDeniedError as n, auditOnly as o, withAudit as p, audit as r, auditRedactPreset as s, AUDIT_SCHEMA_VERSION as t, finalizeAudit as u, getEnvironment as v, lockLogger as w, initLogger as x, getGlobalDrain as y };
1946
1873
 
1947
- //# sourceMappingURL=audit-BFwTUxBJ.mjs.map
1874
+ //# sourceMappingURL=audit-CL0q7GJU.mjs.map