@superblocksteam/telemetry 2.0.119-next.1 → 2.0.120-next.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 (41) hide show
  1. package/dist/common/contracts/tier2-traces.d.ts +4 -4
  2. package/dist/common/contracts/tier2-traces.d.ts.map +1 -1
  3. package/dist/common/contracts/tier2-traces.js +34 -9
  4. package/dist/common/contracts/tier2-traces.js.map +1 -1
  5. package/dist/common/index.d.ts +1 -0
  6. package/dist/common/index.d.ts.map +1 -1
  7. package/dist/common/index.js +1 -0
  8. package/dist/common/index.js.map +1 -1
  9. package/dist/common/log-sanitizer.d.ts +13 -9
  10. package/dist/common/log-sanitizer.d.ts.map +1 -1
  11. package/dist/common/log-sanitizer.js +32 -13
  12. package/dist/common/log-sanitizer.js.map +1 -1
  13. package/dist/common/normalize-metric-path.d.ts +9 -0
  14. package/dist/common/normalize-metric-path.d.ts.map +1 -0
  15. package/dist/common/normalize-metric-path.js +29 -0
  16. package/dist/common/normalize-metric-path.js.map +1 -0
  17. package/dist/node/sanitizing-processor.d.ts +16 -5
  18. package/dist/node/sanitizing-processor.d.ts.map +1 -1
  19. package/dist/node/sanitizing-processor.js +59 -13
  20. package/dist/node/sanitizing-processor.js.map +1 -1
  21. package/dist-esm/common/contracts/tier2-traces.d.ts +4 -4
  22. package/dist-esm/common/contracts/tier2-traces.d.ts.map +1 -1
  23. package/dist-esm/common/contracts/tier2-traces.js +34 -9
  24. package/dist-esm/common/contracts/tier2-traces.js.map +1 -1
  25. package/dist-esm/common/index.d.ts +1 -0
  26. package/dist-esm/common/index.d.ts.map +1 -1
  27. package/dist-esm/common/index.js +1 -0
  28. package/dist-esm/common/index.js.map +1 -1
  29. package/dist-esm/common/log-sanitizer.d.ts +13 -9
  30. package/dist-esm/common/log-sanitizer.d.ts.map +1 -1
  31. package/dist-esm/common/log-sanitizer.js +32 -13
  32. package/dist-esm/common/log-sanitizer.js.map +1 -1
  33. package/dist-esm/common/normalize-metric-path.d.ts +9 -0
  34. package/dist-esm/common/normalize-metric-path.d.ts.map +1 -0
  35. package/dist-esm/common/normalize-metric-path.js +26 -0
  36. package/dist-esm/common/normalize-metric-path.js.map +1 -0
  37. package/dist-esm/node/sanitizing-processor.d.ts +16 -5
  38. package/dist-esm/node/sanitizing-processor.d.ts.map +1 -1
  39. package/dist-esm/node/sanitizing-processor.js +59 -13
  40. package/dist-esm/node/sanitizing-processor.js.map +1 -1
  41. package/package.json +7 -7
@@ -0,0 +1,26 @@
1
+ const BRANCH_SEGMENT_PATTERN = /\/branches\/[^/]+/g;
2
+ const NORMALIZED_VALUE_SEGMENT_PATTERN = "(?:#val|_val)";
3
+ const APPLICATION_BUILD_DIRECTORY_HASH_PATTERN = new RegExp(`(\\/applications\\/${NORMALIZED_VALUE_SEGMENT_PATTERN})\\/[A-Za-z0-9._~%+=-]{16,}(\\/builds)(?=\\/|$)`, "g");
4
+ const API_BRANCH_FILE_PATH_PATTERN = new RegExp(`(\\/api\\/v3\\/apis\\/applications\\/${NORMALIZED_VALUE_SEGMENT_PATTERN}\\/branches\\/[^/]+)\\/.+$`);
5
+ const API_COMMIT_FILE_PATH_PATTERN = new RegExp(`(\\/api\\/v3\\/apis\\/applications\\/${NORMALIZED_VALUE_SEGMENT_PATTERN}\\/commits\\/${NORMALIZED_VALUE_SEGMENT_PATTERN})\\/.+$`);
6
+ const UNKNOWN_WELL_KNOWN_PATH_PATTERN = /^\/\.well-known\/(?!jwks\.json\/?$).+/;
7
+ const SCANNER_PROBE_PATH_PATTERN = /^\/(?:[^/]+\.php|\.env(?:[./].*)?|\.git(?:\/.*)?|wp-admin(?:\/.*)?)(?=\/|$)/i;
8
+ /**
9
+ * Replaces known high-cardinality URL path segments with `#val` to prevent
10
+ * metric label cardinality explosion from customer-controlled identifiers.
11
+ *
12
+ * Example: `/api/v2/applications/#val/branches/feature-foo/commits`
13
+ * -> `/api/v2/applications/#val/branches/#val/commits`
14
+ */
15
+ export function normalizeMetricPath(path) {
16
+ // API file-path patterns intentionally accept both raw and already-normalized
17
+ // branch segments; the final branch normalization keeps the output canonical.
18
+ return path
19
+ .replace(APPLICATION_BUILD_DIRECTORY_HASH_PATTERN, "$1/#val$2")
20
+ .replace(API_BRANCH_FILE_PATH_PATTERN, "$1/#val")
21
+ .replace(API_COMMIT_FILE_PATH_PATTERN, "$1/#val")
22
+ .replace(UNKNOWN_WELL_KNOWN_PATH_PATTERN, "/.well-known/#val")
23
+ .replace(SCANNER_PROBE_PATH_PATTERN, "/#val")
24
+ .replace(BRANCH_SEGMENT_PATTERN, "/branches/#val");
25
+ }
26
+ //# sourceMappingURL=normalize-metric-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-metric-path.js","sourceRoot":"","sources":["../../src/common/normalize-metric-path.ts"],"names":[],"mappings":"AAAA,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AACpD,MAAM,gCAAgC,GAAG,eAAe,CAAC;AACzD,MAAM,wCAAwC,GAAG,IAAI,MAAM,CACzD,sBAAsB,gCAAgC,iDAAiD,EACvG,GAAG,CACJ,CAAC;AACF,MAAM,4BAA4B,GAAG,IAAI,MAAM,CAC7C,wCAAwC,gCAAgC,4BAA4B,CACrG,CAAC;AACF,MAAM,4BAA4B,GAAG,IAAI,MAAM,CAC7C,wCAAwC,gCAAgC,gBAAgB,gCAAgC,SAAS,CAClI,CAAC;AACF,MAAM,+BAA+B,GAAG,uCAAuC,CAAC;AAChF,MAAM,0BAA0B,GAC9B,8EAA8E,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,8EAA8E;IAC9E,8EAA8E;IAC9E,OAAO,IAAI;SACR,OAAO,CAAC,wCAAwC,EAAE,WAAW,CAAC;SAC9D,OAAO,CAAC,4BAA4B,EAAE,SAAS,CAAC;SAChD,OAAO,CAAC,4BAA4B,EAAE,SAAS,CAAC;SAChD,OAAO,CAAC,+BAA+B,EAAE,mBAAmB,CAAC;SAC7D,OAAO,CAAC,0BAA0B,EAAE,OAAO,CAAC;SAC5C,OAAO,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,CAAC;AACvD,CAAC"}
@@ -20,6 +20,8 @@ declare class NoopSpanProcessor implements SpanProcessor {
20
20
  export declare const noopSpanProcessor: NoopSpanProcessor;
21
21
  /** Logger interface for processor messages (e.g. queue full, export failure). */
22
22
  interface SanitizingProcessorLogger {
23
+ debug?(obj: object, msg?: string): void;
24
+ debug?(msg: string): void;
23
25
  error?(obj: object, msg?: string): void;
24
26
  error?(msg: string): void;
25
27
  warn(obj: object, msg?: string): void;
@@ -31,8 +33,13 @@ interface SanitizingProcessorLogger {
31
33
  * CRITICAL: This processor owns the export path. The exporter is internal.
32
34
  * For Tier 1: All spans passed to localProcessor (e.g. no-op or local collector).
33
35
  * For Tier 2: Only contract-compliant spans, sanitized, then batched and exported.
36
+ *
37
+ * NOTE: The wrapped tier2Exporter must tolerate concurrent export() calls.
38
+ * The periodic timer and the batch-size trigger can both fire flushExports()
39
+ * in the same tick. OTLPTraceExporter is safe; custom exporters should verify.
34
40
  */
35
41
  export declare class SanitizingSpanProcessor implements SpanProcessor {
42
+ private readonly exportTimeoutMs;
36
43
  private readonly sanitizer;
37
44
  private readonly localProcessor;
38
45
  private readonly tier2Exporter;
@@ -40,15 +47,19 @@ export declare class SanitizingSpanProcessor implements SpanProcessor {
40
47
  private pendingExports;
41
48
  private exportTimer;
42
49
  private droppedQueueFull;
43
- constructor(policyEvaluator: TelemetryPolicyEvaluator, localProcessor: SpanProcessor, tier2Exporter: SpanExporter | null, traceSanitizer: TraceSanitizer, logger: SanitizingProcessorLogger);
50
+ /** Tracks in-flight fire-and-forget flushes so shutdown/forceFlush can await them. */
51
+ private readonly inflight;
52
+ constructor(policyEvaluator: TelemetryPolicyEvaluator, localProcessor: SpanProcessor, tier2Exporter: SpanExporter | null, traceSanitizer: TraceSanitizer, logger: SanitizingProcessorLogger, exportTimeoutMs?: number);
44
53
  onStart(span: Span, parentContext: Context): void;
45
54
  onEnd(span: ReadableSpan): void;
55
+ /** Fire-and-forget batch flush — tracks the in-flight promise so shutdown/forceFlush can await it. */
56
+ private flushExports;
46
57
  /**
47
- * Sends at most one batch (up to BATCH_SIZE) to the tier-2 exporter.
48
- * Does not wait for the export callback. Call in a loop when a full drain
49
- * is required (e.g. shutdown, forceFlush).
58
+ * Awaitable batch flush for drain paths (shutdown, forceFlush).
59
+ * Always resolves times out after exportTimeoutMs if the exporter
60
+ * never calls its callback (e.g. broken socket, hung downstream).
50
61
  */
51
- private flushExports;
62
+ private flushExportsAsync;
52
63
  shutdown(): Promise<void>;
53
64
  forceFlush(): Promise<void>;
54
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizing-processor.d.ts","sourceRoot":"","sources":["../../src/node/sanitizing-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EACV,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,aAAa,EACd,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAO9D,iFAAiF;AACjF,cAAM,iBAAkB,YAAW,aAAa;IAC9C,OAAO,IAAI,IAAI;IACf,KAAK,IAAI,IAAI;IACP,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAClC;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC;AAGzD,iFAAiF;AACjF,UAAU,yBAAyB;IACjC,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,WAAW,CAA+C;IAClE,OAAO,CAAC,gBAAgB,CAAS;gBAG/B,eAAe,EAAE,wBAAwB,EACzC,cAAc,EAAE,aAAa,EAC7B,aAAa,EAAE,YAAY,GAAG,IAAI,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,yBAAyB;IAoBnC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI;IAIjD,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IA8B/B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAkBd,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAczB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CASlC"}
1
+ {"version":3,"file":"sanitizing-processor.d.ts","sourceRoot":"","sources":["../../src/node/sanitizing-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EACV,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,aAAa,EACd,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAO9D,iFAAiF;AACjF,cAAM,iBAAkB,YAAW,aAAa;IAC9C,OAAO,IAAI,IAAI;IACf,KAAK,IAAI,IAAI;IACP,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAClC;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC;AAGzD,iFAAiF;AACjF,UAAU,yBAAyB;IACjC,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAKD;;;;;;;;;;GAUG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAiBzD,OAAO,CAAC,QAAQ,CAAC,eAAe;IAhBlC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,WAAW,CAA+C;IAClE,OAAO,CAAC,gBAAgB,CAAS;IACjC,sFAAsF;IACtF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;gBAGnD,eAAe,EAAE,wBAAwB,EACzC,cAAc,EAAE,aAAa,EAC7B,aAAa,EAAE,YAAY,GAAG,IAAI,EAClC,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,yBAAyB,EAChB,eAAe,SAAO;IAoBzC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI;IAIjD,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IA8B/B,sGAAsG;IACtG,OAAO,CAAC,YAAY;IAOpB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAyDnB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAezB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAUlC"}
@@ -26,8 +26,13 @@ const EXPORT_INTERVAL_MS = 5000;
26
26
  * CRITICAL: This processor owns the export path. The exporter is internal.
27
27
  * For Tier 1: All spans passed to localProcessor (e.g. no-op or local collector).
28
28
  * For Tier 2: Only contract-compliant spans, sanitized, then batched and exported.
29
+ *
30
+ * NOTE: The wrapped tier2Exporter must tolerate concurrent export() calls.
31
+ * The periodic timer and the batch-size trigger can both fire flushExports()
32
+ * in the same tick. OTLPTraceExporter is safe; custom exporters should verify.
29
33
  */
30
34
  export class SanitizingSpanProcessor {
35
+ exportTimeoutMs;
31
36
  sanitizer;
32
37
  localProcessor;
33
38
  tier2Exporter;
@@ -35,7 +40,10 @@ export class SanitizingSpanProcessor {
35
40
  pendingExports = [];
36
41
  exportTimer = null;
37
42
  droppedQueueFull = false;
38
- constructor(policyEvaluator, localProcessor, tier2Exporter, traceSanitizer, logger) {
43
+ /** Tracks in-flight fire-and-forget flushes so shutdown/forceFlush can await them. */
44
+ inflight = new Set();
45
+ constructor(policyEvaluator, localProcessor, tier2Exporter, traceSanitizer, logger, exportTimeoutMs = 5000) {
46
+ this.exportTimeoutMs = exportTimeoutMs;
39
47
  this.sanitizer = traceSanitizer;
40
48
  this.localProcessor = localProcessor;
41
49
  this.logger = logger;
@@ -43,7 +51,7 @@ export class SanitizingSpanProcessor {
43
51
  ? tier2Exporter
44
52
  : null;
45
53
  if (this.tier2Exporter) {
46
- this.exportTimer = setInterval(() => this.flushExports(), EXPORT_INTERVAL_MS);
54
+ this.exportTimer = setInterval(() => this.flushExports("periodic"), EXPORT_INTERVAL_MS);
47
55
  this.exportTimer.unref();
48
56
  }
49
57
  }
@@ -69,28 +77,64 @@ export class SanitizingSpanProcessor {
69
77
  else {
70
78
  this.pendingExports.push(sanitized);
71
79
  if (this.pendingExports.length >= BATCH_SIZE) {
72
- this.flushExports();
80
+ this.flushExports("batch");
73
81
  }
74
82
  }
75
83
  }
76
84
  }
77
85
  }
86
+ /** Fire-and-forget batch flush — tracks the in-flight promise so shutdown/forceFlush can await it. */
87
+ flushExports(phase) {
88
+ const p = this.flushExportsAsync(phase).finally(() => this.inflight.delete(p));
89
+ this.inflight.add(p);
90
+ }
78
91
  /**
79
- * Sends at most one batch (up to BATCH_SIZE) to the tier-2 exporter.
80
- * Does not wait for the export callback. Call in a loop when a full drain
81
- * is required (e.g. shutdown, forceFlush).
92
+ * Awaitable batch flush for drain paths (shutdown, forceFlush).
93
+ * Always resolves times out after exportTimeoutMs if the exporter
94
+ * never calls its callback (e.g. broken socket, hung downstream).
82
95
  */
83
- flushExports() {
96
+ flushExportsAsync(phase) {
84
97
  if (!this.tier2Exporter || this.pendingExports.length === 0) {
85
- return;
98
+ return Promise.resolve();
86
99
  }
87
100
  if (this.pendingExports.length < MAX_PENDING_EXPORTS) {
88
101
  this.droppedQueueFull = false;
89
102
  }
90
103
  const batch = this.pendingExports.splice(0, BATCH_SIZE);
91
- this.tier2Exporter.export(batch, (result) => {
92
- if (result.code !== ExportResultCode.SUCCESS) {
93
- this.logger.warn({ component: "SanitizingSpanProcessor", err: result.error }, "Tier 2 span export failed");
104
+ return new Promise((resolve) => {
105
+ const timer = setTimeout(() => {
106
+ this.logger.warn({
107
+ component: "SanitizingSpanProcessor",
108
+ batchSize: batch.length,
109
+ exportTimeoutMs: this.exportTimeoutMs,
110
+ phase,
111
+ }, "Tier 2 span export timed out");
112
+ resolve();
113
+ }, this.exportTimeoutMs).unref();
114
+ try {
115
+ this.tier2Exporter.export(batch, (result) => {
116
+ clearTimeout(timer);
117
+ if (result.code !== ExportResultCode.SUCCESS) {
118
+ this.logger.warn({
119
+ component: "SanitizingSpanProcessor",
120
+ err: result.error,
121
+ batchSize: batch.length,
122
+ }, "Tier 2 span export failed");
123
+ }
124
+ else {
125
+ this.logger.debug?.({ component: "SanitizingSpanProcessor", batchSize: batch.length }, "Tier 2 span export succeeded");
126
+ }
127
+ resolve();
128
+ });
129
+ }
130
+ catch (err) {
131
+ clearTimeout(timer);
132
+ this.logger.warn({
133
+ component: "SanitizingSpanProcessor",
134
+ err,
135
+ batchSize: batch.length,
136
+ }, "Tier 2 span export threw synchronously");
137
+ resolve();
94
138
  }
95
139
  });
96
140
  }
@@ -100,8 +144,9 @@ export class SanitizingSpanProcessor {
100
144
  this.exportTimer = null;
101
145
  }
102
146
  while (this.pendingExports.length > 0) {
103
- this.flushExports();
147
+ await this.flushExportsAsync("shutdown");
104
148
  }
149
+ await Promise.allSettled([...this.inflight]);
105
150
  await this.localProcessor.shutdown();
106
151
  if (this.tier2Exporter) {
107
152
  await this.tier2Exporter.shutdown();
@@ -109,8 +154,9 @@ export class SanitizingSpanProcessor {
109
154
  }
110
155
  async forceFlush() {
111
156
  while (this.pendingExports.length > 0) {
112
- this.flushExports();
157
+ await this.flushExportsAsync("forceFlush");
113
158
  }
159
+ await Promise.allSettled([...this.inflight]);
114
160
  await this.localProcessor.forceFlush();
115
161
  if (this.tier2Exporter?.forceFlush) {
116
162
  await this.tier2Exporter.forceFlush();
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizing-processor.js","sourceRoot":"","sources":["../../src/node/sanitizing-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,2GAA2G;AAC3G,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,iFAAiF;AACjF,MAAM,iBAAiB;IACrB,OAAO,KAAU,CAAC;IAClB,KAAK,KAAU,CAAC;IAChB,KAAK,CAAC,QAAQ,KAAmB,CAAC;IAClC,KAAK,CAAC,UAAU,KAAmB,CAAC;CACrC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AACzD,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAUhC;;;;;;GAMG;AACH,MAAM,OAAO,uBAAuB;IACjB,SAAS,CAAiB;IAC1B,cAAc,CAAgB;IAC9B,aAAa,CAAsB;IACnC,MAAM,CAA4B;IAC3C,cAAc,GAAmB,EAAE,CAAC;IACpC,WAAW,GAA0C,IAAI,CAAC;IAC1D,gBAAgB,GAAG,KAAK,CAAC;IAEjC,YACE,eAAyC,EACzC,cAA6B,EAC7B,aAAkC,EAClC,cAA8B,EAC9B,MAAiC;QAEjC,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,eAAe,CAClD,aAAa,CAAC,kBAAkB,CACjC;YACC,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,IAAI,CAAC;QAET,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,WAAW,CAC5B,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EACzB,kBAAkB,CACnB,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAU,EAAE,aAAsB;QACxC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,IAAkB;QACtB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,mBAAmB,EAAE,CAAC;oBACtD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;wBAC7B,MAAM,GAAG,GACP,gEAAgE,CAAC;wBACnE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;wBAClD,GAAG,CACD;4BACE,SAAS,EAAE,yBAAyB;4BACpC,iBAAiB,EAAE,mBAAmB;yBACvC,EACD,GAAG,CACJ,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACpC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;wBAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;YACrD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAChC,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,SAAS,EAAE,yBAAyB,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,EAC3D,2BAA2B,CAC5B,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"sanitizing-processor.js","sourceRoot":"","sources":["../../src/node/sanitizing-processor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superblocksteam/telemetry",
3
- "version": "2.0.119-next.1",
3
+ "version": "2.0.120-next.0",
4
4
  "description": "Superblocks Telemetry - Canonical OTEL bootstrap with tier-aware policy enforcement",
5
5
  "license": "Superblocks Community Software License",
6
6
  "repository": {
@@ -43,6 +43,9 @@
43
43
  "require": "./dist/lint/index.js"
44
44
  }
45
45
  },
46
+ "publishConfig": {
47
+ "registry": "https://registry.npmjs.org"
48
+ },
46
49
  "dependencies": {
47
50
  "@opentelemetry/api": "^1.9.1",
48
51
  "@opentelemetry/api-logs": "^0.214.0",
@@ -73,20 +76,17 @@
73
76
  "globals": "^16.5.0",
74
77
  "pino": "^8.0.0",
75
78
  "premove": "^4.0.0",
76
- "typescript": "^5.9.3",
79
+ "typescript": "^6.0.3",
77
80
  "typescript-eslint": "^8.47.0",
78
81
  "vitest": "^2.0.0",
79
- "@superblocksteam/shared": "0.9586.9"
82
+ "@superblocksteam/shared": "0.9589.2"
80
83
  },
81
84
  "peerDependencies": {
82
- "@superblocksteam/shared": "0.9586.9"
85
+ "@superblocksteam/shared": "0.9589.2"
83
86
  },
84
87
  "engines": {
85
88
  "node": ">=24"
86
89
  },
87
- "publishConfig": {
88
- "registry": "https://registry.npmjs.org"
89
- },
90
90
  "scripts": {
91
91
  "build": "tsc --build && tsc --build tsconfig.browser.json",
92
92
  "check": "npm run typecheck && npm run lint",