vestig 0.11.5 → 0.13.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 +95 -2
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +4 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/index.d.ts +9 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +7 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/logger.d.ts +85 -0
  10. package/dist/logger.d.ts.map +1 -1
  11. package/dist/logger.js +209 -2
  12. package/dist/logger.js.map +1 -1
  13. package/dist/metrics/index.d.ts +2 -0
  14. package/dist/metrics/index.d.ts.map +1 -0
  15. package/dist/metrics/index.js +2 -0
  16. package/dist/metrics/index.js.map +1 -0
  17. package/dist/metrics/prometheus.d.ts +109 -0
  18. package/dist/metrics/prometheus.d.ts.map +1 -0
  19. package/dist/metrics/prometheus.js +162 -0
  20. package/dist/metrics/prometheus.js.map +1 -0
  21. package/dist/sampling/index.d.ts +2 -0
  22. package/dist/sampling/index.d.ts.map +1 -1
  23. package/dist/sampling/index.js +2 -0
  24. package/dist/sampling/index.js.map +1 -1
  25. package/dist/sampling/tail.d.ts +76 -0
  26. package/dist/sampling/tail.d.ts.map +1 -0
  27. package/dist/sampling/tail.js +138 -0
  28. package/dist/sampling/tail.js.map +1 -0
  29. package/dist/transports/batch.d.ts +2 -0
  30. package/dist/transports/batch.d.ts.map +1 -1
  31. package/dist/transports/batch.js +13 -3
  32. package/dist/transports/batch.js.map +1 -1
  33. package/dist/transports/file.d.ts +14 -1
  34. package/dist/transports/file.d.ts.map +1 -1
  35. package/dist/transports/file.js +59 -4
  36. package/dist/transports/file.js.map +1 -1
  37. package/dist/transports/http.d.ts +29 -1
  38. package/dist/transports/http.d.ts.map +1 -1
  39. package/dist/transports/http.js +63 -6
  40. package/dist/transports/http.js.map +1 -1
  41. package/dist/transports/sentry.d.ts +83 -0
  42. package/dist/transports/sentry.d.ts.map +1 -0
  43. package/dist/transports/sentry.js +283 -0
  44. package/dist/transports/sentry.js.map +1 -0
  45. package/dist/types.d.ts +149 -2
  46. package/dist/types.d.ts.map +1 -1
  47. package/dist/utils/buffer.d.ts +33 -1
  48. package/dist/utils/buffer.d.ts.map +1 -1
  49. package/dist/utils/buffer.js +40 -2
  50. package/dist/utils/buffer.js.map +1 -1
  51. package/dist/utils/dedupe.d.ts +80 -0
  52. package/dist/utils/dedupe.d.ts.map +1 -0
  53. package/dist/utils/dedupe.js +173 -0
  54. package/dist/utils/dedupe.js.map +1 -0
  55. package/dist/utils/sanitize.d.ts +23 -1
  56. package/dist/utils/sanitize.d.ts.map +1 -1
  57. package/dist/utils/sanitize.js +113 -8
  58. package/dist/utils/sanitize.js.map +1 -1
  59. package/dist/version.d.ts +1 -1
  60. package/dist/version.js +1 -1
  61. package/dist/wide-events/builder.d.ts +51 -0
  62. package/dist/wide-events/builder.d.ts.map +1 -0
  63. package/dist/wide-events/builder.js +177 -0
  64. package/dist/wide-events/builder.js.map +1 -0
  65. package/dist/wide-events/context.d.ts +57 -0
  66. package/dist/wide-events/context.d.ts.map +1 -0
  67. package/dist/wide-events/context.js +148 -0
  68. package/dist/wide-events/context.js.map +1 -0
  69. package/dist/wide-events/index.d.ts +6 -0
  70. package/dist/wide-events/index.d.ts.map +1 -0
  71. package/dist/wide-events/index.js +7 -0
  72. package/dist/wide-events/index.js.map +1 -0
  73. package/dist/wide-events/schemas/http.d.ts +179 -0
  74. package/dist/wide-events/schemas/http.d.ts.map +1 -0
  75. package/dist/wide-events/schemas/http.js +25 -0
  76. package/dist/wide-events/schemas/http.js.map +1 -0
  77. package/dist/wide-events/schemas/index.d.ts +5 -0
  78. package/dist/wide-events/schemas/index.d.ts.map +1 -0
  79. package/dist/wide-events/schemas/index.js +5 -0
  80. package/dist/wide-events/schemas/index.js.map +1 -0
  81. package/dist/wide-events/schemas/job.d.ts +130 -0
  82. package/dist/wide-events/schemas/job.d.ts.map +1 -0
  83. package/dist/wide-events/schemas/job.js +27 -0
  84. package/dist/wide-events/schemas/job.js.map +1 -0
  85. package/dist/wide-events/types.d.ts +216 -0
  86. package/dist/wide-events/types.d.ts.map +1 -0
  87. package/dist/wide-events/types.js +2 -0
  88. package/dist/wide-events/types.js.map +1 -0
  89. package/package.json +1 -1
@@ -0,0 +1,80 @@
1
+ import type { DedupeConfig, LogLevel } from '../types';
2
+ /**
3
+ * Result of checking if a log should be suppressed
4
+ */
5
+ export interface DedupeResult {
6
+ /** Whether this log should be suppressed */
7
+ suppressed: boolean;
8
+ /** If not suppressed and is a summary, how many were suppressed */
9
+ suppressedCount?: number;
10
+ /** If this is a summary log, the original key */
11
+ isFlush?: boolean;
12
+ }
13
+ /**
14
+ * Deduplicator for suppressing repeated identical log messages
15
+ *
16
+ * Uses an LRU-like eviction strategy to bound memory usage while
17
+ * tracking duplicate logs within a time window.
18
+ */
19
+ export declare class Deduplicator {
20
+ private readonly config;
21
+ private readonly tracked;
22
+ private cleanupTimer;
23
+ constructor(config?: DedupeConfig);
24
+ /**
25
+ * Check if a log should be suppressed
26
+ *
27
+ * @param message - The log message
28
+ * @param level - The log level
29
+ * @param namespace - Optional namespace
30
+ * @returns Whether the log should be suppressed
31
+ */
32
+ shouldSuppress(message: string, level: LogLevel, namespace?: string): DedupeResult;
33
+ /**
34
+ * Get counts of all currently tracked logs that were suppressed
35
+ *
36
+ * Useful for flushing all pending summaries on shutdown.
37
+ */
38
+ getPendingSummaries(): Array<{
39
+ key: string;
40
+ count: number;
41
+ level: LogLevel;
42
+ }>;
43
+ /**
44
+ * Clear all tracked entries
45
+ */
46
+ clear(): void;
47
+ /**
48
+ * Stop the cleanup timer
49
+ */
50
+ destroy(): void;
51
+ /**
52
+ * Create a deduplication key from message and optional context
53
+ */
54
+ private createKey;
55
+ /**
56
+ * Track a new log entry
57
+ */
58
+ private track;
59
+ /**
60
+ * Evict the oldest entry (LRU-style)
61
+ */
62
+ private evictOldest;
63
+ /**
64
+ * Start periodic cleanup of expired entries
65
+ *
66
+ * Only cleans up entries that have count=1 (no pending summary).
67
+ * Entries with pending summaries are kept until the next log of the same
68
+ * type, which will emit the summary and reset tracking.
69
+ */
70
+ private startCleanup;
71
+ /**
72
+ * Get statistics about the deduplicator
73
+ */
74
+ getStats(): {
75
+ tracked: number;
76
+ maxSize: number;
77
+ windowMs: number;
78
+ };
79
+ }
80
+ //# sourceMappingURL=dedupe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedupe.d.ts","sourceRoot":"","sources":["../../src/utils/dedupe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAyBtD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,4CAA4C;IAC5C,UAAU,EAAE,OAAO,CAAA;IACnB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;;;GAKG;AACH,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,YAAY,CAA8C;gBAEtD,MAAM,CAAC,EAAE,YAAY;IAajC;;;;;;;OAOG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY;IAkClF;;;;OAIG;IACH,mBAAmB,IAAI,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAC;IAgB7E;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;IACH,OAAO,CAAC,SAAS;IAcjB;;OAEG;IACH,OAAO,CAAC,KAAK;IAab;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAoBpB;;OAEG;IACH,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAOlE"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Default dedupe configuration
3
+ */
4
+ const DEFAULTS = {
5
+ enabled: true,
6
+ windowMs: 1000,
7
+ maxSize: 1000,
8
+ includeLevel: true,
9
+ includeNamespace: true,
10
+ };
11
+ /**
12
+ * Deduplicator for suppressing repeated identical log messages
13
+ *
14
+ * Uses an LRU-like eviction strategy to bound memory usage while
15
+ * tracking duplicate logs within a time window.
16
+ */
17
+ export class Deduplicator {
18
+ config;
19
+ tracked = new Map();
20
+ cleanupTimer = null;
21
+ constructor(config) {
22
+ this.config = {
23
+ ...DEFAULTS,
24
+ ...config,
25
+ enabled: config?.enabled ?? DEFAULTS.enabled,
26
+ };
27
+ // Start cleanup timer
28
+ if (this.config.enabled) {
29
+ this.startCleanup();
30
+ }
31
+ }
32
+ /**
33
+ * Check if a log should be suppressed
34
+ *
35
+ * @param message - The log message
36
+ * @param level - The log level
37
+ * @param namespace - Optional namespace
38
+ * @returns Whether the log should be suppressed
39
+ */
40
+ shouldSuppress(message, level, namespace) {
41
+ if (!this.config.enabled) {
42
+ return { suppressed: false };
43
+ }
44
+ const key = this.createKey(message, level, namespace);
45
+ const now = Date.now();
46
+ const existing = this.tracked.get(key);
47
+ if (existing) {
48
+ // Check if still within window
49
+ if (now - existing.firstSeen < this.config.windowMs) {
50
+ existing.count++;
51
+ return { suppressed: true };
52
+ }
53
+ // Window expired - emit summary and reset
54
+ const suppressedCount = existing.count - 1; // Exclude the first one
55
+ this.tracked.delete(key);
56
+ // Start tracking this new occurrence
57
+ this.track(key, now, level);
58
+ if (suppressedCount > 0) {
59
+ return { suppressed: false, suppressedCount, isFlush: true };
60
+ }
61
+ return { suppressed: false };
62
+ }
63
+ // First occurrence - track it
64
+ this.track(key, now, level);
65
+ return { suppressed: false };
66
+ }
67
+ /**
68
+ * Get counts of all currently tracked logs that were suppressed
69
+ *
70
+ * Useful for flushing all pending summaries on shutdown.
71
+ */
72
+ getPendingSummaries() {
73
+ const summaries = [];
74
+ for (const [key, entry] of this.tracked) {
75
+ if (entry.count > 1) {
76
+ summaries.push({
77
+ key,
78
+ count: entry.count - 1, // Exclude the first logged one
79
+ level: entry.level,
80
+ });
81
+ }
82
+ }
83
+ return summaries;
84
+ }
85
+ /**
86
+ * Clear all tracked entries
87
+ */
88
+ clear() {
89
+ this.tracked.clear();
90
+ }
91
+ /**
92
+ * Stop the cleanup timer
93
+ */
94
+ destroy() {
95
+ if (this.cleanupTimer) {
96
+ clearInterval(this.cleanupTimer);
97
+ this.cleanupTimer = null;
98
+ }
99
+ this.tracked.clear();
100
+ }
101
+ /**
102
+ * Create a deduplication key from message and optional context
103
+ */
104
+ createKey(message, level, namespace) {
105
+ const parts = [message];
106
+ if (this.config.includeLevel) {
107
+ parts.unshift(level);
108
+ }
109
+ if (this.config.includeNamespace && namespace) {
110
+ parts.unshift(namespace);
111
+ }
112
+ return parts.join('|');
113
+ }
114
+ /**
115
+ * Track a new log entry
116
+ */
117
+ track(key, timestamp, level) {
118
+ // Evict oldest if at capacity
119
+ if (this.tracked.size >= this.config.maxSize) {
120
+ this.evictOldest();
121
+ }
122
+ this.tracked.set(key, {
123
+ firstSeen: timestamp,
124
+ count: 1,
125
+ level,
126
+ });
127
+ }
128
+ /**
129
+ * Evict the oldest entry (LRU-style)
130
+ */
131
+ evictOldest() {
132
+ // Map maintains insertion order, so first key is oldest
133
+ const firstKey = this.tracked.keys().next().value;
134
+ if (firstKey !== undefined) {
135
+ this.tracked.delete(firstKey);
136
+ }
137
+ }
138
+ /**
139
+ * Start periodic cleanup of expired entries
140
+ *
141
+ * Only cleans up entries that have count=1 (no pending summary).
142
+ * Entries with pending summaries are kept until the next log of the same
143
+ * type, which will emit the summary and reset tracking.
144
+ */
145
+ startCleanup() {
146
+ // Clean up every windowMs (but wait 2x windowMs for first run to avoid edge cases)
147
+ this.cleanupTimer = setInterval(() => {
148
+ const now = Date.now();
149
+ const expireTime = now - this.config.windowMs;
150
+ for (const [key, entry] of this.tracked) {
151
+ // Only clean up if expired AND no pending summary
152
+ if (entry.firstSeen < expireTime && entry.count === 1) {
153
+ this.tracked.delete(key);
154
+ }
155
+ }
156
+ }, this.config.windowMs * 2); // Run less frequently to reduce timing issues
157
+ // Unref so it doesn't keep the process alive
158
+ if (typeof this.cleanupTimer === 'object' && 'unref' in this.cleanupTimer) {
159
+ this.cleanupTimer.unref();
160
+ }
161
+ }
162
+ /**
163
+ * Get statistics about the deduplicator
164
+ */
165
+ getStats() {
166
+ return {
167
+ tracked: this.tracked.size,
168
+ maxSize: this.config.maxSize,
169
+ windowMs: this.config.windowMs,
170
+ };
171
+ }
172
+ }
173
+ //# sourceMappingURL=dedupe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedupe.js","sourceRoot":"","sources":["../../src/utils/dedupe.ts"],"names":[],"mappings":"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"}
@@ -41,9 +41,27 @@ export declare class Sanitizer {
41
41
  */
42
42
  addPattern(pattern: SanitizePattern): void;
43
43
  /**
44
- * Check if a field name should be sanitized
44
+ * Check if a field name or path should be sanitized
45
+ *
46
+ * Supports:
47
+ * - Simple field names: 'password' matches any field named 'password'
48
+ * - Dot notation paths: 'user.password' matches password under user
49
+ * - Glob patterns: '**.password' matches password at any depth
50
+ * - Wildcard: 'config.*' matches any direct child of config
45
51
  */
46
52
  private isSensitiveField;
53
+ /**
54
+ * Match a field path against a FieldMatcher with glob support
55
+ */
56
+ private matchFieldPath;
57
+ /**
58
+ * Match a path against a glob pattern
59
+ *
60
+ * Supports:
61
+ * - ** matches any number of path segments (including zero)
62
+ * - * matches exactly one path segment
63
+ */
64
+ private matchGlobPattern;
47
65
  /**
48
66
  * Match a field against a FieldMatcher
49
67
  */
@@ -54,6 +72,10 @@ export declare class Sanitizer {
54
72
  private sanitizeString;
55
73
  /**
56
74
  * Recursively sanitize a value
75
+ *
76
+ * @param value - The value to sanitize
77
+ * @param depth - Current recursion depth
78
+ * @param path - Dot-notation path to current position (e.g., 'user.credentials')
57
79
  */
58
80
  private sanitizeValue;
59
81
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAa7F;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAElC,MAAM,GAAE,cAAmB;IAsBvC;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS;IAIpD;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAC7B,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,GAChC,SAAS;IAIZ;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IAKxB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAS5C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI1C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,UAAU;IAoBlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;OAEG;IACH,OAAO,CAAC,aAAa;IAiCrB;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;CAG/C;AAKD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,GAAE,MAAM,EAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAa5F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,gBAAgB,GAAE,MAAM,EAAO,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAS5F;AAGD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAa7F;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAElC,MAAM,GAAE,cAAmB;IAsBvC;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS;IAIpD;;OAEG;IACH,MAAM,CAAC,uBAAuB,CAC7B,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,GAChC,SAAS;IAIZ;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IAKxB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAS5C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAI1C;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAkDxB;;OAEG;IACH,OAAO,CAAC,UAAU;IAoBlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAoCrB;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;CAG/C;AAKD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,GAAE,MAAM,EAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAa5F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,gBAAgB,GAAE,MAAM,EAAO,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAS5F;AAGD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA"}
@@ -65,7 +65,7 @@ export class Sanitizer {
65
65
  sanitize(value) {
66
66
  if (!this.config.enabled)
67
67
  return value;
68
- return this.sanitizeValue(value, 0);
68
+ return this.sanitizeValue(value, 0, '');
69
69
  }
70
70
  /**
71
71
  * Add a field to sanitize
@@ -86,20 +86,120 @@ export class Sanitizer {
86
86
  this.config.patterns.push(pattern);
87
87
  }
88
88
  /**
89
- * Check if a field name should be sanitized
89
+ * Check if a field name or path should be sanitized
90
+ *
91
+ * Supports:
92
+ * - Simple field names: 'password' matches any field named 'password'
93
+ * - Dot notation paths: 'user.password' matches password under user
94
+ * - Glob patterns: '**.password' matches password at any depth
95
+ * - Wildcard: 'config.*' matches any direct child of config
90
96
  */
91
- isSensitiveField(fieldName) {
97
+ isSensitiveField(fieldName, path) {
92
98
  const lower = fieldName.toLowerCase();
93
- // Check simple field set
99
+ const fullPath = path ? `${path}.${fieldName}` : fieldName;
100
+ const fullPathLower = fullPath.toLowerCase();
101
+ // Check simple field set (matches by key name or full path)
94
102
  if (this.fieldSet.has(lower))
95
103
  return true;
104
+ if (this.fieldSet.has(fullPathLower))
105
+ return true;
96
106
  // Check field matchers
97
107
  for (const matcher of this.fieldMatchers) {
108
+ // Check against key name
98
109
  if (this.matchField(lower, matcher))
99
110
  return true;
111
+ // Check against full path
112
+ if (this.matchFieldPath(fullPathLower, matcher))
113
+ return true;
100
114
  }
101
115
  return false;
102
116
  }
117
+ /**
118
+ * Match a field path against a FieldMatcher with glob support
119
+ */
120
+ matchFieldPath(path, matcher) {
121
+ const value = matcher.caseSensitive ? matcher.value : matcher.value.toLowerCase();
122
+ const targetPath = matcher.caseSensitive ? path : path.toLowerCase();
123
+ // Handle glob patterns
124
+ if (value.includes('**') || value.includes('*')) {
125
+ return this.matchGlobPattern(targetPath, value);
126
+ }
127
+ // For non-glob patterns, check if the pattern matches the full path
128
+ switch (matcher.type) {
129
+ case 'exact':
130
+ return targetPath === value;
131
+ case 'prefix':
132
+ return targetPath.startsWith(value);
133
+ case 'suffix':
134
+ return targetPath.endsWith(value);
135
+ case 'contains':
136
+ return targetPath.includes(value);
137
+ case 'regex':
138
+ return new RegExp(matcher.value, matcher.caseSensitive ? '' : 'i').test(path);
139
+ default:
140
+ return false;
141
+ }
142
+ }
143
+ /**
144
+ * Match a path against a glob pattern
145
+ *
146
+ * Supports:
147
+ * - ** matches any number of path segments (including zero)
148
+ * - * matches exactly one path segment
149
+ */
150
+ matchGlobPattern(path, pattern) {
151
+ const segments = pattern.split('.');
152
+ const regexParts = [];
153
+ let addDotPrefix = false; // Track if next segment needs a dot prefix
154
+ for (let i = 0; i < segments.length; i++) {
155
+ const segment = segments[i]; // Always defined within loop bounds
156
+ const isLast = i === segments.length - 1;
157
+ if (segment === '**') {
158
+ // ** matches any number of segments (including zero)
159
+ if (i === 0 && isLast) {
160
+ // Just "**" matches everything
161
+ regexParts.push('.*');
162
+ }
163
+ else if (i === 0) {
164
+ // "**.foo" - optional prefix with dot included
165
+ regexParts.push('(?:.*\\.)?');
166
+ // Don't add dot prefix to next segment - it's included in (?:.*\.)?
167
+ }
168
+ else if (isLast) {
169
+ // "foo.**" - match foo followed by anything
170
+ regexParts.push('(?:\\..*)?');
171
+ }
172
+ else {
173
+ // "foo.**.bar" - match zero or more segments in between
174
+ regexParts.push('(?:\\.[^.]+)*');
175
+ addDotPrefix = true;
176
+ }
177
+ }
178
+ else if (segment === '*') {
179
+ // * matches exactly one segment
180
+ if (addDotPrefix) {
181
+ regexParts.push('\\.[^.]+');
182
+ }
183
+ else {
184
+ regexParts.push('[^.]+');
185
+ }
186
+ addDotPrefix = true;
187
+ }
188
+ else {
189
+ // Literal segment
190
+ const escaped = segment.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
191
+ if (addDotPrefix) {
192
+ regexParts.push(`\\.${escaped}`);
193
+ }
194
+ else {
195
+ regexParts.push(escaped);
196
+ }
197
+ addDotPrefix = true;
198
+ }
199
+ }
200
+ const regexPattern = regexParts.join('');
201
+ return new RegExp(`^${regexPattern}$`, 'i').test(path);
202
+ }
103
203
  /**
104
204
  * Match a field against a FieldMatcher
105
205
  */
@@ -139,8 +239,12 @@ export class Sanitizer {
139
239
  }
140
240
  /**
141
241
  * Recursively sanitize a value
242
+ *
243
+ * @param value - The value to sanitize
244
+ * @param depth - Current recursion depth
245
+ * @param path - Dot-notation path to current position (e.g., 'user.credentials')
142
246
  */
143
- sanitizeValue(value, depth) {
247
+ sanitizeValue(value, depth, path) {
144
248
  if (depth > this.config.depth)
145
249
  return value;
146
250
  // Handle null/undefined
@@ -152,17 +256,18 @@ export class Sanitizer {
152
256
  }
153
257
  // Handle arrays
154
258
  if (Array.isArray(value)) {
155
- return value.map((item) => this.sanitizeValue(item, depth + 1));
259
+ return value.map((item, index) => this.sanitizeValue(item, depth + 1, path ? `${path}[${index}]` : `[${index}]`));
156
260
  }
157
261
  // Handle objects
158
262
  if (typeof value === 'object') {
159
263
  const result = {};
160
264
  for (const [key, val] of Object.entries(value)) {
161
- if (this.isSensitiveField(key)) {
265
+ if (this.isSensitiveField(key, path)) {
162
266
  result[key] = this.config.replacement;
163
267
  }
164
268
  else {
165
- result[key] = this.sanitizeValue(val, depth + 1);
269
+ const newPath = path ? `${path}.${key}` : key;
270
+ result[key] = this.sanitizeValue(val, depth + 1, newPath);
166
271
  }
167
272
  }
168
273
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -2,5 +2,5 @@
2
2
  * Vestig library version
3
3
  * This is automatically updated during the release process
4
4
  */
5
- export declare const VERSION = "0.11.4";
5
+ export declare const VERSION = "0.11.5";
6
6
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -2,5 +2,5 @@
2
2
  * Vestig library version
3
3
  * This is automatically updated during the release process
4
4
  */
5
- export const VERSION = '0.11.4';
5
+ export const VERSION = '0.11.5';
6
6
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,51 @@
1
+ import type { LogMetadata } from '../types';
2
+ import type { WideEvent, WideEventBuilder, WideEventConfig, WideEventContext, WideEventEndOptions, WideEventFields } from './types';
3
+ /**
4
+ * Implementation of WideEventBuilder.
5
+ *
6
+ * Accumulates context throughout a request lifecycle and
7
+ * produces a single comprehensive event at the end.
8
+ */
9
+ export declare class WideEventBuilderImpl implements WideEventBuilder {
10
+ private readonly _type;
11
+ private readonly _startTime;
12
+ private readonly _startedAt;
13
+ private _context;
14
+ private _fields;
15
+ private _ended;
16
+ constructor(config: WideEventConfig);
17
+ get type(): string;
18
+ get startTime(): number;
19
+ get ended(): boolean;
20
+ set(category: string, key: string, value: unknown): this;
21
+ get(category: string, key: string): unknown;
22
+ merge(category: string, fields: Record<string, unknown>): this;
23
+ mergeAll(fields: WideEventFields): this;
24
+ setContext(context: Partial<WideEventContext>): this;
25
+ getContext(): WideEventContext;
26
+ getFields(): Readonly<WideEventFields>;
27
+ end(options?: WideEventEndOptions): WideEvent;
28
+ toMetadata(): LogMetadata;
29
+ private _assertNotEnded;
30
+ private _deepClone;
31
+ }
32
+ /**
33
+ * Create a new wide event builder.
34
+ *
35
+ * @param config - Event configuration (type is required)
36
+ * @returns A new WideEventBuilder instance
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const event = createWideEvent({ type: 'http.request' });
41
+ *
42
+ * event.set('http', 'method', 'POST');
43
+ * event.set('http', 'path', '/api/checkout');
44
+ * event.set('user', 'id', userId);
45
+ *
46
+ * const wideEvent = event.end({ status: 'success' });
47
+ * logger.info('Request completed', wideEvent);
48
+ * ```
49
+ */
50
+ export declare function createWideEvent(config: WideEventConfig): WideEventBuilder;
51
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/wide-events/builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,UAAU,CAAA;AAE5D,OAAO,KAAK,EACX,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EAEf,MAAM,SAAS,CAAA;AAYhB;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;IACjC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,eAAe;IAQnC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IASxD,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAI3C,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAS9D,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAQvC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAMpD,UAAU,IAAI,gBAAgB;IAI9B,SAAS,IAAI,QAAQ,CAAC,eAAe,CAAC;IAItC,GAAG,CAAC,OAAO,GAAE,mBAAwB,GAAG,SAAS;IAgDjD,UAAU,IAAI,WAAW;IAwBzB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,UAAU;CAWlB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,CAEzE"}