@superblocksteam/telemetry 2.0.171 → 2.0.173-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.
- package/dist/browser/console-logging.js +2 -7
- package/dist/browser/console-logging.js.map +1 -1
- package/dist/browser/early-console-buffer.js +12 -14
- package/dist/browser/early-console-buffer.js.map +1 -1
- package/dist/browser/index.js +12 -41
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/init.d.ts +1 -1
- package/dist/browser/init.d.ts.map +1 -1
- package/dist/browser/init.js +42 -52
- package/dist/browser/init.js.map +1 -1
- package/dist/browser/instrumentations.js +11 -15
- package/dist/browser/instrumentations.js.map +1 -1
- package/dist/browser/logs.d.ts +1 -1
- package/dist/browser/logs.d.ts.map +1 -1
- package/dist/browser/logs.js +11 -18
- package/dist/browser/logs.js.map +1 -1
- package/dist/browser/metrics.js +9 -12
- package/dist/browser/metrics.js.map +1 -1
- package/dist/browser/resilient-exporter.d.ts +1 -1
- package/dist/browser/resilient-exporter.d.ts.map +1 -1
- package/dist/browser/resilient-exporter.js +8 -12
- package/dist/browser/resilient-exporter.js.map +1 -1
- package/dist/browser/sanitizer.js +2 -6
- package/dist/browser/sanitizer.js.map +1 -1
- package/dist/browser/traced-socket.js +14 -18
- package/dist/browser/traced-socket.js.map +1 -1
- package/dist/common/contracts/tier2-traces.js +33 -44
- package/dist/common/contracts/tier2-traces.js.map +1 -1
- package/dist/common/deployment-type.js +5 -8
- package/dist/common/deployment-type.js.map +1 -1
- package/dist/common/guardrails.js +26 -38
- package/dist/common/guardrails.js.map +1 -1
- package/dist/common/index.js +8 -24
- package/dist/common/index.js.map +1 -1
- package/dist/common/log-sanitizer.js +37 -55
- package/dist/common/log-sanitizer.js.map +1 -1
- package/dist/common/policy-evaluator.d.ts +1 -1
- package/dist/common/policy-evaluator.d.ts.map +1 -1
- package/dist/common/policy-evaluator.js +5 -9
- package/dist/common/policy-evaluator.js.map +1 -1
- package/dist/common/resource.js +18 -25
- package/dist/common/resource.js.map +1 -1
- package/dist/common/tier-hints.js +12 -22
- package/dist/common/tier-hints.js.map +1 -1
- package/dist/common/trace-sanitizer.js +6 -10
- package/dist/common/trace-sanitizer.js.map +1 -1
- package/dist/common/traced-socket-types.js +1 -2
- package/dist/common/traced-socket-types.js.map +1 -1
- package/dist/index.js +6 -38
- package/dist/index.js.map +1 -1
- package/dist/lint/forbidden-attributes.js +19 -24
- package/dist/lint/forbidden-attributes.js.map +1 -1
- package/dist/lint/index.js +1 -8
- package/dist/lint/index.js.map +1 -1
- package/dist/llmobs/index.js +2 -9
- package/dist/llmobs/index.js.map +1 -1
- package/dist/llmobs/tier1-exporter.js +6 -12
- package/dist/llmobs/tier1-exporter.js.map +1 -1
- package/dist/llmobs/tier2-summarizer.js +1 -5
- package/dist/llmobs/tier2-summarizer.js.map +1 -1
- package/dist/node/dynamic-attribute-processor.js +2 -7
- package/dist/node/dynamic-attribute-processor.js.map +1 -1
- package/dist/node/exporters/resilient-exporter.d.ts +1 -1
- package/dist/node/exporters/resilient-exporter.d.ts.map +1 -1
- package/dist/node/exporters/resilient-exporter.js +8 -12
- package/dist/node/exporters/resilient-exporter.js.map +1 -1
- package/dist/node/index.js +7 -26
- package/dist/node/index.js.map +1 -1
- package/dist/node/init.d.ts +3 -3
- package/dist/node/init.d.ts.map +1 -1
- package/dist/node/init.js +66 -72
- package/dist/node/init.js.map +1 -1
- package/dist/node/local-obs-mode.js +1 -4
- package/dist/node/local-obs-mode.js.map +1 -1
- package/dist/node/log-processor.d.ts +1 -1
- package/dist/node/log-processor.d.ts.map +1 -1
- package/dist/node/log-processor.js +47 -55
- package/dist/node/log-processor.js.map +1 -1
- package/dist/node/metrics-client.js +1 -5
- package/dist/node/metrics-client.js.map +1 -1
- package/dist/node/safe-logger.js +8 -12
- package/dist/node/safe-logger.js.map +1 -1
- package/dist/node/sanitizing-processor.d.ts +2 -2
- package/dist/node/sanitizing-processor.d.ts.map +1 -1
- package/dist/node/sanitizing-processor.js +6 -10
- package/dist/node/sanitizing-processor.js.map +1 -1
- package/dist/node/service-tracers.js +7 -10
- package/dist/node/service-tracers.js.map +1 -1
- package/dist/node/traced-socket.d.ts +3 -3
- package/dist/node/traced-socket.d.ts.map +1 -1
- package/dist/node/traced-socket.js +48 -52
- package/dist/node/traced-socket.js.map +1 -1
- package/dist/npm-registry/emitter.js +34 -47
- package/dist/npm-registry/emitter.js.map +1 -1
- package/dist/npm-registry/index.js +3 -19
- package/dist/npm-registry/index.js.map +1 -1
- package/dist/npm-registry/sanitize.js +16 -27
- package/dist/npm-registry/sanitize.js.map +1 -1
- package/dist/npm-registry/spans.js +7 -12
- package/dist/npm-registry/spans.js.map +1 -1
- package/dist/testing/in-memory-exporter.d.ts +1 -1
- package/dist/testing/in-memory-exporter.d.ts.map +1 -1
- package/dist/testing/in-memory-exporter.js +6 -12
- package/dist/testing/in-memory-exporter.js.map +1 -1
- package/dist/testing/index.js +3 -15
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/metrics-capture.js +12 -15
- package/dist/testing/metrics-capture.js.map +1 -1
- package/dist/testing/test-init.js +24 -31
- package/dist/testing/test-init.js.map +1 -1
- package/dist/types/index.js +1 -17
- package/dist/types/index.js.map +1 -1
- package/dist/types/policy.js +21 -24
- package/dist/types/policy.js.map +1 -1
- package/package.json +11 -17
- package/dist-esm/browser/console-logging.d.ts +0 -18
- package/dist-esm/browser/console-logging.d.ts.map +0 -1
- package/dist-esm/browser/console-logging.js +0 -27
- package/dist-esm/browser/console-logging.js.map +0 -1
- package/dist-esm/browser/early-console-buffer.d.ts +0 -49
- package/dist-esm/browser/early-console-buffer.d.ts.map +0 -1
- package/dist-esm/browser/early-console-buffer.js +0 -181
- package/dist-esm/browser/early-console-buffer.js.map +0 -1
- package/dist-esm/browser/index.d.ts +0 -18
- package/dist-esm/browser/index.d.ts.map +0 -1
- package/dist-esm/browser/index.js +0 -23
- package/dist-esm/browser/index.js.map +0 -1
- package/dist-esm/browser/init.d.ts +0 -100
- package/dist-esm/browser/init.d.ts.map +0 -1
- package/dist-esm/browser/init.js +0 -317
- package/dist-esm/browser/init.js.map +0 -1
- package/dist-esm/browser/instrumentations.d.ts +0 -67
- package/dist-esm/browser/instrumentations.d.ts.map +0 -1
- package/dist-esm/browser/instrumentations.js +0 -79
- package/dist-esm/browser/instrumentations.js.map +0 -1
- package/dist-esm/browser/logs.d.ts +0 -57
- package/dist-esm/browser/logs.d.ts.map +0 -1
- package/dist-esm/browser/logs.js +0 -80
- package/dist-esm/browser/logs.js.map +0 -1
- package/dist-esm/browser/metrics.d.ts +0 -29
- package/dist-esm/browser/metrics.d.ts.map +0 -1
- package/dist-esm/browser/metrics.js +0 -46
- package/dist-esm/browser/metrics.js.map +0 -1
- package/dist-esm/browser/resilient-exporter.d.ts +0 -43
- package/dist-esm/browser/resilient-exporter.d.ts.map +0 -1
- package/dist-esm/browser/resilient-exporter.js +0 -84
- package/dist-esm/browser/resilient-exporter.js.map +0 -1
- package/dist-esm/browser/sanitizer.d.ts +0 -35
- package/dist-esm/browser/sanitizer.d.ts.map +0 -1
- package/dist-esm/browser/sanitizer.js +0 -207
- package/dist-esm/browser/sanitizer.js.map +0 -1
- package/dist-esm/browser/traced-socket.d.ts +0 -102
- package/dist-esm/browser/traced-socket.d.ts.map +0 -1
- package/dist-esm/browser/traced-socket.js +0 -199
- package/dist-esm/browser/traced-socket.js.map +0 -1
- package/dist-esm/common/contracts/tier2-traces.d.ts +0 -116
- package/dist-esm/common/contracts/tier2-traces.d.ts.map +0 -1
- package/dist-esm/common/contracts/tier2-traces.js +0 -725
- package/dist-esm/common/contracts/tier2-traces.js.map +0 -1
- package/dist-esm/common/deployment-type.d.ts +0 -18
- package/dist-esm/common/deployment-type.d.ts.map +0 -1
- package/dist-esm/common/deployment-type.js +0 -27
- package/dist-esm/common/deployment-type.js.map +0 -1
- package/dist-esm/common/guardrails.d.ts +0 -132
- package/dist-esm/common/guardrails.d.ts.map +0 -1
- package/dist-esm/common/guardrails.js +0 -230
- package/dist-esm/common/guardrails.js.map +0 -1
- package/dist-esm/common/index.d.ts +0 -17
- package/dist-esm/common/index.d.ts.map +0 -1
- package/dist-esm/common/index.js +0 -17
- package/dist-esm/common/index.js.map +0 -1
- package/dist-esm/common/log-sanitizer.d.ts +0 -163
- package/dist-esm/common/log-sanitizer.d.ts.map +0 -1
- package/dist-esm/common/log-sanitizer.js +0 -745
- package/dist-esm/common/log-sanitizer.js.map +0 -1
- package/dist-esm/common/policy-evaluator.d.ts +0 -103
- package/dist-esm/common/policy-evaluator.d.ts.map +0 -1
- package/dist-esm/common/policy-evaluator.js +0 -196
- package/dist-esm/common/policy-evaluator.js.map +0 -1
- package/dist-esm/common/resource.d.ts +0 -79
- package/dist-esm/common/resource.d.ts.map +0 -1
- package/dist-esm/common/resource.js +0 -121
- package/dist-esm/common/resource.js.map +0 -1
- package/dist-esm/common/tier-hints.d.ts +0 -182
- package/dist-esm/common/tier-hints.d.ts.map +0 -1
- package/dist-esm/common/tier-hints.js +0 -199
- package/dist-esm/common/tier-hints.js.map +0 -1
- package/dist-esm/common/trace-sanitizer.d.ts +0 -82
- package/dist-esm/common/trace-sanitizer.d.ts.map +0 -1
- package/dist-esm/common/trace-sanitizer.js +0 -230
- package/dist-esm/common/trace-sanitizer.js.map +0 -1
- package/dist-esm/common/traced-socket-types.d.ts +0 -43
- package/dist-esm/common/traced-socket-types.d.ts.map +0 -1
- package/dist-esm/common/traced-socket-types.js +0 -16
- package/dist-esm/common/traced-socket-types.js.map +0 -1
- package/dist-esm/index.d.ts +0 -45
- package/dist-esm/index.d.ts.map +0 -1
- package/dist-esm/index.js +0 -56
- package/dist-esm/index.js.map +0 -1
- package/dist-esm/lint/forbidden-attributes.d.ts +0 -149
- package/dist-esm/lint/forbidden-attributes.d.ts.map +0 -1
- package/dist-esm/lint/forbidden-attributes.js +0 -210
- package/dist-esm/lint/forbidden-attributes.js.map +0 -1
- package/dist-esm/lint/index.d.ts +0 -9
- package/dist-esm/lint/index.d.ts.map +0 -1
- package/dist-esm/lint/index.js +0 -9
- package/dist-esm/lint/index.js.map +0 -1
- package/dist-esm/llmobs/index.d.ts +0 -22
- package/dist-esm/llmobs/index.d.ts.map +0 -1
- package/dist-esm/llmobs/index.js +0 -22
- package/dist-esm/llmobs/index.js.map +0 -1
- package/dist-esm/llmobs/tier1-exporter.d.ts +0 -146
- package/dist-esm/llmobs/tier1-exporter.d.ts.map +0 -1
- package/dist-esm/llmobs/tier1-exporter.js +0 -193
- package/dist-esm/llmobs/tier1-exporter.js.map +0 -1
- package/dist-esm/llmobs/tier2-summarizer.d.ts +0 -268
- package/dist-esm/llmobs/tier2-summarizer.d.ts.map +0 -1
- package/dist-esm/llmobs/tier2-summarizer.js +0 -652
- package/dist-esm/llmobs/tier2-summarizer.js.map +0 -1
- package/dist-esm/node/dynamic-attribute-processor.d.ts +0 -43
- package/dist-esm/node/dynamic-attribute-processor.d.ts.map +0 -1
- package/dist-esm/node/dynamic-attribute-processor.js +0 -74
- package/dist-esm/node/dynamic-attribute-processor.js.map +0 -1
- package/dist-esm/node/exporters/resilient-exporter.d.ts +0 -91
- package/dist-esm/node/exporters/resilient-exporter.d.ts.map +0 -1
- package/dist-esm/node/exporters/resilient-exporter.js +0 -132
- package/dist-esm/node/exporters/resilient-exporter.js.map +0 -1
- package/dist-esm/node/index.d.ts +0 -13
- package/dist-esm/node/index.d.ts.map +0 -1
- package/dist-esm/node/index.js +0 -13
- package/dist-esm/node/index.js.map +0 -1
- package/dist-esm/node/init.d.ts +0 -97
- package/dist-esm/node/init.d.ts.map +0 -1
- package/dist-esm/node/init.js +0 -359
- package/dist-esm/node/init.js.map +0 -1
- package/dist-esm/node/local-obs-mode.d.ts +0 -17
- package/dist-esm/node/local-obs-mode.d.ts.map +0 -1
- package/dist-esm/node/local-obs-mode.js +0 -19
- package/dist-esm/node/local-obs-mode.js.map +0 -1
- package/dist-esm/node/log-processor.d.ts +0 -132
- package/dist-esm/node/log-processor.d.ts.map +0 -1
- package/dist-esm/node/log-processor.js +0 -389
- package/dist-esm/node/log-processor.js.map +0 -1
- package/dist-esm/node/metrics-client.d.ts +0 -88
- package/dist-esm/node/metrics-client.d.ts.map +0 -1
- package/dist-esm/node/metrics-client.js +0 -205
- package/dist-esm/node/metrics-client.js.map +0 -1
- package/dist-esm/node/safe-logger.d.ts +0 -55
- package/dist-esm/node/safe-logger.d.ts.map +0 -1
- package/dist-esm/node/safe-logger.js +0 -154
- package/dist-esm/node/safe-logger.js.map +0 -1
- package/dist-esm/node/sanitizing-processor.d.ts +0 -67
- package/dist-esm/node/sanitizing-processor.d.ts.map +0 -1
- package/dist-esm/node/sanitizing-processor.js +0 -163
- package/dist-esm/node/sanitizing-processor.js.map +0 -1
- package/dist-esm/node/service-tracers.d.ts +0 -52
- package/dist-esm/node/service-tracers.d.ts.map +0 -1
- package/dist-esm/node/service-tracers.js +0 -78
- package/dist-esm/node/service-tracers.js.map +0 -1
- package/dist-esm/node/traced-socket.d.ts +0 -120
- package/dist-esm/node/traced-socket.d.ts.map +0 -1
- package/dist-esm/node/traced-socket.js +0 -334
- package/dist-esm/node/traced-socket.js.map +0 -1
- package/dist-esm/npm-registry/emitter.d.ts +0 -330
- package/dist-esm/npm-registry/emitter.d.ts.map +0 -1
- package/dist-esm/npm-registry/emitter.js +0 -546
- package/dist-esm/npm-registry/emitter.js.map +0 -1
- package/dist-esm/npm-registry/index.d.ts +0 -12
- package/dist-esm/npm-registry/index.d.ts.map +0 -1
- package/dist-esm/npm-registry/index.js +0 -12
- package/dist-esm/npm-registry/index.js.map +0 -1
- package/dist-esm/npm-registry/sanitize.d.ts +0 -174
- package/dist-esm/npm-registry/sanitize.d.ts.map +0 -1
- package/dist-esm/npm-registry/sanitize.js +0 -331
- package/dist-esm/npm-registry/sanitize.js.map +0 -1
- package/dist-esm/npm-registry/spans.d.ts +0 -61
- package/dist-esm/npm-registry/spans.d.ts.map +0 -1
- package/dist-esm/npm-registry/spans.js +0 -86
- package/dist-esm/npm-registry/spans.js.map +0 -1
- package/dist-esm/package.json +0 -1
- package/dist-esm/testing/in-memory-exporter.d.ts +0 -179
- package/dist-esm/testing/in-memory-exporter.d.ts.map +0 -1
- package/dist-esm/testing/in-memory-exporter.js +0 -250
- package/dist-esm/testing/in-memory-exporter.js.map +0 -1
- package/dist-esm/testing/index.d.ts +0 -9
- package/dist-esm/testing/index.d.ts.map +0 -1
- package/dist-esm/testing/index.js +0 -9
- package/dist-esm/testing/index.js.map +0 -1
- package/dist-esm/testing/metrics-capture.d.ts +0 -29
- package/dist-esm/testing/metrics-capture.d.ts.map +0 -1
- package/dist-esm/testing/metrics-capture.js +0 -71
- package/dist-esm/testing/metrics-capture.js.map +0 -1
- package/dist-esm/testing/test-init.d.ts +0 -80
- package/dist-esm/testing/test-init.d.ts.map +0 -1
- package/dist-esm/testing/test-init.js +0 -137
- package/dist-esm/testing/test-init.js.map +0 -1
- package/dist-esm/types/index.d.ts +0 -84
- package/dist-esm/types/index.d.ts.map +0 -1
- package/dist-esm/types/index.js +0 -7
- package/dist-esm/types/index.js.map +0 -1
- package/dist-esm/types/policy.d.ts +0 -92
- package/dist-esm/types/policy.d.ts.map +0 -1
- package/dist-esm/types/policy.js +0 -122
- package/dist-esm/types/policy.js.map +0 -1
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tier 2 Trace Sanitizer
|
|
3
|
-
*
|
|
4
|
-
* Sanitizes spans for Tier 2 export per epic-a3-sanitized-traces.
|
|
5
|
-
* - Drops spans for high-volume, low-value routes (health, metrics)
|
|
6
|
-
* - Drops spans not in the contract
|
|
7
|
-
* - Drops forbidden attributes (PII, Tier 1 content)
|
|
8
|
-
* - Drops high-cardinality attributes (e.g. binding_keys) when configured
|
|
9
|
-
* - Hashes configured attributes using keyed HMAC (when hash config provided)
|
|
10
|
-
* - Only includes attributes in the allowlist for each span type
|
|
11
|
-
*/
|
|
12
|
-
import { createHmac } from "node:crypto";
|
|
13
|
-
/** http.route values for which we never export spans (high volume, no operational value). */
|
|
14
|
-
const DROPPED_HTTP_ROUTES = new Set([
|
|
15
|
-
"/health/liveness",
|
|
16
|
-
"/health/readiness",
|
|
17
|
-
"/metrics",
|
|
18
|
-
"/api/v1/metrics",
|
|
19
|
-
]);
|
|
20
|
-
import { getAttributeName, TIER_2_TRACE_CONTRACT, } from "./contracts/tier2-traces.js";
|
|
21
|
-
/** Normalize span name for pattern matching. Server uses "POST /path" but contract uses "HTTP POST *". */
|
|
22
|
-
function normalizeSpanNameForMatching(name) {
|
|
23
|
-
const candidates = [name];
|
|
24
|
-
const methodPrefix = /^(GET|POST|PUT|PATCH|DELETE)\s+/i;
|
|
25
|
-
const match = name.match(methodPrefix);
|
|
26
|
-
if (match) {
|
|
27
|
-
const method = match[1].toUpperCase();
|
|
28
|
-
candidates.push(`HTTP ${method} ${name.slice(match[0].length)}`);
|
|
29
|
-
}
|
|
30
|
-
return candidates;
|
|
31
|
-
}
|
|
32
|
-
export class TraceSanitizer {
|
|
33
|
-
contractMap;
|
|
34
|
-
hashConfig;
|
|
35
|
-
forbiddenAttributes;
|
|
36
|
-
droppedAttributes;
|
|
37
|
-
hashedAttributes;
|
|
38
|
-
attributeAllowlistPassthrough;
|
|
39
|
-
constructor(options) {
|
|
40
|
-
this.hashConfig = options.hashConfig;
|
|
41
|
-
this.forbiddenAttributes = options.forbiddenAttributes;
|
|
42
|
-
this.droppedAttributes = options.droppedAttributes;
|
|
43
|
-
this.hashedAttributes = options.hashedAttributes;
|
|
44
|
-
this.attributeAllowlistPassthrough =
|
|
45
|
-
options.attributeAllowlistPassthrough ?? false;
|
|
46
|
-
const definitions = options.spanDefinitions ?? TIER_2_TRACE_CONTRACT;
|
|
47
|
-
this.contractMap = new Map();
|
|
48
|
-
for (const def of definitions) {
|
|
49
|
-
this.contractMap.set(def.name, def);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Check if a span should be exported to Tier 2.
|
|
54
|
-
*/
|
|
55
|
-
shouldExport(span) {
|
|
56
|
-
return this.findMatchingDefinition(span.name) !== undefined;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Sanitize span attributes for Tier 2 export.
|
|
60
|
-
* Returns null if span should not be exported.
|
|
61
|
-
*
|
|
62
|
-
* Returns a ReadableSpan-like object that delegates to the original span for
|
|
63
|
-
* spanContext() and other methods (spread does not copy prototype methods,
|
|
64
|
-
* and the OTLP exporter calls span.spanContext()).
|
|
65
|
-
*/
|
|
66
|
-
sanitize(span) {
|
|
67
|
-
const httpRoute = span.attributes["http.route"];
|
|
68
|
-
const routeStr = typeof httpRoute === "string"
|
|
69
|
-
? httpRoute
|
|
70
|
-
: typeof httpRoute === "number"
|
|
71
|
-
? String(httpRoute)
|
|
72
|
-
: undefined;
|
|
73
|
-
if (routeStr !== undefined && DROPPED_HTTP_ROUTES.has(routeStr)) {
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
const definition = this.findMatchingDefinition(span.name);
|
|
77
|
-
if (!definition) {
|
|
78
|
-
return null;
|
|
79
|
-
}
|
|
80
|
-
const sanitizedAttributes = this.sanitizeAttributes(span.attributes, definition.allowedAttributes);
|
|
81
|
-
return {
|
|
82
|
-
name: span.name,
|
|
83
|
-
kind: span.kind,
|
|
84
|
-
spanContext: () => span.spanContext(),
|
|
85
|
-
// Preserve parent context exactly as OTLP serializers consume it.
|
|
86
|
-
// In current OTel SDK versions, parent linkage is read from
|
|
87
|
-
// `parentSpanContext` (not `parentSpanId`).
|
|
88
|
-
// https://github.com/open-telemetry/opentelemetry-js/blob/main/experimental/packages/otlp-transformer/src/trace/internal.ts#L44
|
|
89
|
-
parentSpanContext: span.parentSpanContext,
|
|
90
|
-
startTime: span.startTime,
|
|
91
|
-
endTime: span.endTime,
|
|
92
|
-
status: span.status,
|
|
93
|
-
attributes: sanitizedAttributes,
|
|
94
|
-
resource: span.resource,
|
|
95
|
-
instrumentationScope: span.instrumentationScope,
|
|
96
|
-
events: this.sanitizeEvents(span.events),
|
|
97
|
-
links: this.sanitizeLinks(span.links),
|
|
98
|
-
duration: span.duration,
|
|
99
|
-
ended: span.ended,
|
|
100
|
-
droppedAttributesCount: span.droppedAttributesCount,
|
|
101
|
-
droppedEventsCount: span.droppedEventsCount,
|
|
102
|
-
droppedLinksCount: span.droppedLinksCount,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
findMatchingDefinition(spanName) {
|
|
106
|
-
const candidates = normalizeSpanNameForMatching(spanName);
|
|
107
|
-
for (const name of candidates) {
|
|
108
|
-
if (this.contractMap.has(name)) {
|
|
109
|
-
return this.contractMap.get(name);
|
|
110
|
-
}
|
|
111
|
-
for (const [pattern, def] of this.contractMap) {
|
|
112
|
-
if (this.matchesPattern(name, pattern)) {
|
|
113
|
-
return def;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return undefined;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Pattern matching: "*" matches any name; suffix wildcards (e.g. "HTTP POST *", "ws.*").
|
|
121
|
-
* For "HTTP POST *", matches "HTTP POST" (exact) or "HTTP POST /path" (prefix + rest).
|
|
122
|
-
*/
|
|
123
|
-
matchesPattern(name, pattern) {
|
|
124
|
-
if (pattern === "*") {
|
|
125
|
-
return true;
|
|
126
|
-
}
|
|
127
|
-
if (pattern.endsWith("*")) {
|
|
128
|
-
const prefix = pattern.slice(0, -1);
|
|
129
|
-
const prefixNoSpace = prefix.trimEnd();
|
|
130
|
-
return (name === prefixNoSpace ||
|
|
131
|
-
name === prefix ||
|
|
132
|
-
(prefix.length > 0 && name.startsWith(prefix)));
|
|
133
|
-
}
|
|
134
|
-
return name === pattern;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Sanitize span links for Tier 2: link attributes are filtered the same way as
|
|
138
|
-
* event attributes (forbidden dropped, high-cardinality dropped, hashed values).
|
|
139
|
-
* Link context (trace/span IDs) is preserved.
|
|
140
|
-
*/
|
|
141
|
-
sanitizeLinks(links) {
|
|
142
|
-
if (!links?.length) {
|
|
143
|
-
return links ?? [];
|
|
144
|
-
}
|
|
145
|
-
return links.map((link) => ({
|
|
146
|
-
...link,
|
|
147
|
-
attributes: this.sanitizeEventOrLinkAttributes(link.attributes ?? {}),
|
|
148
|
-
}));
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Sanitize span events for Tier 2: event attributes are filtered the same way as
|
|
152
|
-
* span attributes (forbidden dropped, high-cardinality dropped, hashed values).
|
|
153
|
-
* Event names and timestamps are preserved.
|
|
154
|
-
*/
|
|
155
|
-
sanitizeEvents(events) {
|
|
156
|
-
if (!events?.length) {
|
|
157
|
-
return events ?? [];
|
|
158
|
-
}
|
|
159
|
-
return events.map((event) => ({
|
|
160
|
-
name: event.name,
|
|
161
|
-
time: event.time,
|
|
162
|
-
attributes: this.sanitizeEventOrLinkAttributes(event.attributes ?? {}),
|
|
163
|
-
}));
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Sanitize attributes that appear on events or links (no allowlist; only
|
|
167
|
-
* drop forbidden/high-cardinality and hash hashed).
|
|
168
|
-
*/
|
|
169
|
-
sanitizeEventOrLinkAttributes(attributes) {
|
|
170
|
-
const result = {};
|
|
171
|
-
for (const [key, value] of Object.entries(attributes)) {
|
|
172
|
-
if (this.forbiddenAttributes.has(key)) {
|
|
173
|
-
continue;
|
|
174
|
-
}
|
|
175
|
-
if (this.droppedAttributes.has(key)) {
|
|
176
|
-
continue;
|
|
177
|
-
}
|
|
178
|
-
if (this.hashedAttributes.has(key)) {
|
|
179
|
-
result[key] = this.hashValue(String(value));
|
|
180
|
-
continue;
|
|
181
|
-
}
|
|
182
|
-
result[key] = value;
|
|
183
|
-
}
|
|
184
|
-
return result;
|
|
185
|
-
}
|
|
186
|
-
sanitizeAttributes(attributes, allowedAttrs) {
|
|
187
|
-
const result = {};
|
|
188
|
-
const allowedMap = new Map();
|
|
189
|
-
for (const attr of allowedAttrs) {
|
|
190
|
-
allowedMap.set(getAttributeName(attr), attr);
|
|
191
|
-
}
|
|
192
|
-
for (const [key, value] of Object.entries(attributes)) {
|
|
193
|
-
if (this.forbiddenAttributes.has(key)) {
|
|
194
|
-
continue;
|
|
195
|
-
}
|
|
196
|
-
if (this.droppedAttributes.has(key)) {
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
if (this.hashedAttributes.has(key)) {
|
|
200
|
-
result[key] = this.hashValue(String(value));
|
|
201
|
-
continue;
|
|
202
|
-
}
|
|
203
|
-
if (this.attributeAllowlistPassthrough) {
|
|
204
|
-
result[key] = value;
|
|
205
|
-
continue;
|
|
206
|
-
}
|
|
207
|
-
if (!allowedMap.has(key)) {
|
|
208
|
-
continue;
|
|
209
|
-
}
|
|
210
|
-
const attrDef = allowedMap.get(key);
|
|
211
|
-
if (typeof attrDef === "object" && attrDef.allowedValues != null) {
|
|
212
|
-
if (!attrDef.allowedValues.includes(String(value))) {
|
|
213
|
-
continue;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
result[key] = value;
|
|
217
|
-
}
|
|
218
|
-
return result;
|
|
219
|
-
}
|
|
220
|
-
hashValue(value) {
|
|
221
|
-
if (!this.hashConfig) {
|
|
222
|
-
return "[redacted]";
|
|
223
|
-
}
|
|
224
|
-
const hmac = createHmac(this.hashConfig.algorithm, this.hashConfig.secretKey);
|
|
225
|
-
hmac.update(this.hashConfig.salt);
|
|
226
|
-
hmac.update(value);
|
|
227
|
-
return hmac.digest("hex").slice(0, this.hashConfig.outputLengthBytes * 2);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
//# sourceMappingURL=trace-sanitizer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trace-sanitizer.js","sourceRoot":"","sources":["../../src/common/trace-sanitizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared TracedSocket types for WebSocket message envelopes.
|
|
3
|
-
*
|
|
4
|
-
* Both the browser (TracedSocket in telemetry/browser) and the server
|
|
5
|
-
* (TracedSocket in telemetry/node) inject and extract trace context using
|
|
6
|
-
* these field names. Keeping them in one place ensures the two sides speak
|
|
7
|
-
* the same envelope protocol so traces link correctly end-to-end.
|
|
8
|
-
*
|
|
9
|
-
* Envelope structure mirrors @superblocksteam/shared SocketRequest:
|
|
10
|
-
* { request?: { method, payload, id, traceparent?, tracestate?, ... } }
|
|
11
|
-
*
|
|
12
|
-
* The W3C Trace Context propagator writes/reads exactly these two fields.
|
|
13
|
-
* See: https://www.w3.org/TR/trace-context/
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* W3C Trace Context fields that live inside a socket message's request object.
|
|
17
|
-
* The propagator uses these as the carrier for context injection/extraction.
|
|
18
|
-
*/
|
|
19
|
-
export interface SocketTraceContext {
|
|
20
|
-
traceparent?: string;
|
|
21
|
-
tracestate?: string;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Minimal shape of the request portion of a socket message envelope.
|
|
25
|
-
* Both browser and server code passes this object as the propagation carrier.
|
|
26
|
-
*/
|
|
27
|
-
export interface SocketRequestEnvelope extends SocketTraceContext {
|
|
28
|
-
method?: string;
|
|
29
|
-
id?: number;
|
|
30
|
-
[key: string]: unknown;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Minimal shape of the full socket message envelope.
|
|
34
|
-
* Request messages carry trace context; response messages do not.
|
|
35
|
-
*/
|
|
36
|
-
export interface SocketMessageEnvelope {
|
|
37
|
-
request?: SocketRequestEnvelope;
|
|
38
|
-
response?: {
|
|
39
|
-
id?: number;
|
|
40
|
-
[key: string]: unknown;
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=traced-socket-types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traced-socket-types.d.ts","sourceRoot":"","sources":["../../src/common/traced-socket-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,QAAQ,CAAC,EAAE;QACT,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared TracedSocket types for WebSocket message envelopes.
|
|
3
|
-
*
|
|
4
|
-
* Both the browser (TracedSocket in telemetry/browser) and the server
|
|
5
|
-
* (TracedSocket in telemetry/node) inject and extract trace context using
|
|
6
|
-
* these field names. Keeping them in one place ensures the two sides speak
|
|
7
|
-
* the same envelope protocol so traces link correctly end-to-end.
|
|
8
|
-
*
|
|
9
|
-
* Envelope structure mirrors @superblocksteam/shared SocketRequest:
|
|
10
|
-
* { request?: { method, payload, id, traceparent?, tracestate?, ... } }
|
|
11
|
-
*
|
|
12
|
-
* The W3C Trace Context propagator writes/reads exactly these two fields.
|
|
13
|
-
* See: https://www.w3.org/TR/trace-context/
|
|
14
|
-
*/
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=traced-socket-types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traced-socket-types.js","sourceRoot":"","sources":["../../src/common/traced-socket-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
|
package/dist-esm/index.d.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @superblocksteam/telemetry
|
|
3
|
-
*
|
|
4
|
-
* Canonical telemetry bootstrap package for all Superblocks services.
|
|
5
|
-
* Provides policy-aware OpenTelemetry initialization with tier-based routing.
|
|
6
|
-
*
|
|
7
|
-
* This package is the ONLY approved way to initialize telemetry.
|
|
8
|
-
* Direct usage of NodeSDK or WebTracerProvider is prohibited.
|
|
9
|
-
*
|
|
10
|
-
* ## Usage
|
|
11
|
-
*
|
|
12
|
-
* ### Node.js Services
|
|
13
|
-
*
|
|
14
|
-
* ```typescript
|
|
15
|
-
* import { initNodeTelemetry } from '@superblocksteam/telemetry/node';
|
|
16
|
-
* import { getDefaultPolicy, DeploymentType } from '@superblocksteam/shared';
|
|
17
|
-
*
|
|
18
|
-
* const policy = getDefaultPolicy(DeploymentType.CLOUD_PREM);
|
|
19
|
-
* const telemetry = initNodeTelemetry({
|
|
20
|
-
* serviceName: 'my-service',
|
|
21
|
-
* serviceVersion: '1.0.0',
|
|
22
|
-
* environment: 'production',
|
|
23
|
-
* otlpUrl: 'http://localhost:4318',
|
|
24
|
-
* }, policy);
|
|
25
|
-
* ```
|
|
26
|
-
*
|
|
27
|
-
* ### Browser
|
|
28
|
-
*
|
|
29
|
-
* ```typescript
|
|
30
|
-
* import { initBrowserTelemetry } from '@superblocksteam/telemetry/browser';
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* ### Testing
|
|
34
|
-
*
|
|
35
|
-
* ```typescript
|
|
36
|
-
* import { initTestTelemetry } from '@superblocksteam/telemetry/testing';
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
export * from "./types/index.js";
|
|
40
|
-
export * from "./common/index.js";
|
|
41
|
-
export * from "./npm-registry/index.js";
|
|
42
|
-
export * from "./llmobs/index.js";
|
|
43
|
-
export { REDACTED_PLACEHOLDER } from "./common/index.js";
|
|
44
|
-
export { createSafeLogger, getLoggingPolicy, getMinimumPinoLevelForDeployment, getMinimumPinoLevelFromLoggingPolicy, parseLogExportMode, getTelemetryInstance, initNodeTelemetry, isLocalObsMode, isTelemetryInitialized, LogExportMode, redactForbiddenFields, resetTelemetry, type NodeTelemetryInstance, type LoggingPolicyConfig, type SafeLoggerLike, MetricsClient, type Labels, type CounterHandle, type CounterOptions, type GaugeHandle, type HistogramHandle, type HistogramOptions, TracedSocket, type TracedSocketConfig, type TracedSocketOptions, } from "./node/index.js";
|
|
45
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist-esm/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,mBAAmB,CAAC;AAIlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gCAAgC,EAChC,oCAAoC,EACpC,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,aAAa,EACb,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC"}
|
package/dist-esm/index.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @superblocksteam/telemetry
|
|
3
|
-
*
|
|
4
|
-
* Canonical telemetry bootstrap package for all Superblocks services.
|
|
5
|
-
* Provides policy-aware OpenTelemetry initialization with tier-based routing.
|
|
6
|
-
*
|
|
7
|
-
* This package is the ONLY approved way to initialize telemetry.
|
|
8
|
-
* Direct usage of NodeSDK or WebTracerProvider is prohibited.
|
|
9
|
-
*
|
|
10
|
-
* ## Usage
|
|
11
|
-
*
|
|
12
|
-
* ### Node.js Services
|
|
13
|
-
*
|
|
14
|
-
* ```typescript
|
|
15
|
-
* import { initNodeTelemetry } from '@superblocksteam/telemetry/node';
|
|
16
|
-
* import { getDefaultPolicy, DeploymentType } from '@superblocksteam/shared';
|
|
17
|
-
*
|
|
18
|
-
* const policy = getDefaultPolicy(DeploymentType.CLOUD_PREM);
|
|
19
|
-
* const telemetry = initNodeTelemetry({
|
|
20
|
-
* serviceName: 'my-service',
|
|
21
|
-
* serviceVersion: '1.0.0',
|
|
22
|
-
* environment: 'production',
|
|
23
|
-
* otlpUrl: 'http://localhost:4318',
|
|
24
|
-
* }, policy);
|
|
25
|
-
* ```
|
|
26
|
-
*
|
|
27
|
-
* ### Browser
|
|
28
|
-
*
|
|
29
|
-
* ```typescript
|
|
30
|
-
* import { initBrowserTelemetry } from '@superblocksteam/telemetry/browser';
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* ### Testing
|
|
34
|
-
*
|
|
35
|
-
* ```typescript
|
|
36
|
-
* import { initTestTelemetry } from '@superblocksteam/telemetry/testing';
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
// Re-export types
|
|
40
|
-
export * from "./types/index.js";
|
|
41
|
-
// Re-export common utilities
|
|
42
|
-
export * from "./common/index.js";
|
|
43
|
-
// Re-export npm-registry telemetry (sanitization, metrics emitter, spans)
|
|
44
|
-
export * from "./npm-registry/index.js";
|
|
45
|
-
// Re-export LLMObs tiered telemetry
|
|
46
|
-
export * from "./llmobs/index.js";
|
|
47
|
-
// Re-export Node.js telemetry functions for convenience
|
|
48
|
-
// This allows imports like: import { initNodeTelemetry } from '@superblocksteam/telemetry'
|
|
49
|
-
export { REDACTED_PLACEHOLDER } from "./common/index.js";
|
|
50
|
-
export { createSafeLogger, getLoggingPolicy, getMinimumPinoLevelForDeployment, getMinimumPinoLevelFromLoggingPolicy, parseLogExportMode, getTelemetryInstance, initNodeTelemetry, isLocalObsMode, isTelemetryInitialized, LogExportMode, redactForbiddenFields, resetTelemetry, MetricsClient, TracedSocket, } from "./node/index.js";
|
|
51
|
-
// Note: Browser and Testing modules are still exported via package.json subpath exports
|
|
52
|
-
// Import them as:
|
|
53
|
-
// - @superblocksteam/telemetry/browser
|
|
54
|
-
// - @superblocksteam/telemetry/testing
|
|
55
|
-
// - @superblocksteam/telemetry/llmobs
|
|
56
|
-
//# sourceMappingURL=index.js.map
|
package/dist-esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,kBAAkB;AAClB,cAAc,kBAAkB,CAAC;AAEjC,6BAA6B;AAC7B,cAAc,mBAAmB,CAAC;AAElC,0EAA0E;AAC1E,cAAc,yBAAyB,CAAC;AAExC,oCAAoC;AACpC,cAAc,mBAAmB,CAAC;AAElC,wDAAwD;AACxD,2FAA2F;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gCAAgC,EAChC,oCAAoC,EACpC,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,cAAc,EAId,aAAa,EAOb,YAAY,GAGb,MAAM,iBAAiB,CAAC;AAEzB,wFAAwF;AACxF,kBAAkB;AAClB,yCAAyC;AACzC,yCAAyC;AACzC,wCAAwC"}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ESLint Rule: No Forbidden Telemetry Attributes
|
|
3
|
-
*
|
|
4
|
-
* This rule detects usage of forbidden attributes in span/metric instrumentation.
|
|
5
|
-
* It catches common leak paths before code is merged.
|
|
6
|
-
*
|
|
7
|
-
* Usage in eslint.config.js:
|
|
8
|
-
* ```
|
|
9
|
-
* import { noForbiddenTelemetryAttributes } from '@superblocksteam/telemetry/lint';
|
|
10
|
-
*
|
|
11
|
-
* export default [
|
|
12
|
-
* {
|
|
13
|
-
* plugins: {
|
|
14
|
-
* telemetry: { rules: { 'no-forbidden-attributes': noForbiddenTelemetryAttributes } }
|
|
15
|
-
* },
|
|
16
|
-
* rules: {
|
|
17
|
-
* 'telemetry/no-forbidden-attributes': 'error'
|
|
18
|
-
* }
|
|
19
|
-
* }
|
|
20
|
-
* ];
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
/**
|
|
24
|
-
* Forbidden attribute patterns for static analysis.
|
|
25
|
-
*/
|
|
26
|
-
export declare const FORBIDDEN_ATTRIBUTE_PATTERNS: string[];
|
|
27
|
-
/**
|
|
28
|
-
* ESLint rule metadata.
|
|
29
|
-
*/
|
|
30
|
-
export declare const noForbiddenTelemetryAttributesMeta: {
|
|
31
|
-
type: string;
|
|
32
|
-
docs: {
|
|
33
|
-
description: string;
|
|
34
|
-
category: string;
|
|
35
|
-
recommended: boolean;
|
|
36
|
-
};
|
|
37
|
-
messages: {
|
|
38
|
-
forbiddenAttribute: string;
|
|
39
|
-
resourceOnlyAttribute: string;
|
|
40
|
-
};
|
|
41
|
-
schema: never[];
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* ESLint rule implementation.
|
|
45
|
-
*
|
|
46
|
-
* Detects patterns like:
|
|
47
|
-
* - span.setAttribute('prompt', value)
|
|
48
|
-
* - span.setAttributes({ prompt: value })
|
|
49
|
-
* - { 'prompt': value }
|
|
50
|
-
*/
|
|
51
|
-
export declare function noForbiddenTelemetryAttributesCreate(context: any): {
|
|
52
|
-
CallExpression(node: any): void;
|
|
53
|
-
Property(node: any): void;
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* Complete ESLint rule export.
|
|
57
|
-
*/
|
|
58
|
-
export declare const noForbiddenTelemetryAttributes: {
|
|
59
|
-
meta: {
|
|
60
|
-
type: string;
|
|
61
|
-
docs: {
|
|
62
|
-
description: string;
|
|
63
|
-
category: string;
|
|
64
|
-
recommended: boolean;
|
|
65
|
-
};
|
|
66
|
-
messages: {
|
|
67
|
-
forbiddenAttribute: string;
|
|
68
|
-
resourceOnlyAttribute: string;
|
|
69
|
-
};
|
|
70
|
-
schema: never[];
|
|
71
|
-
};
|
|
72
|
-
create: typeof noForbiddenTelemetryAttributesCreate;
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* ESLint rule: No Direct OTEL SDK Usage
|
|
76
|
-
*
|
|
77
|
-
* Detects direct usage of NodeSDK or WebTracerProvider outside the telemetry package.
|
|
78
|
-
*/
|
|
79
|
-
export declare const noDirectOtelSdkMeta: {
|
|
80
|
-
type: string;
|
|
81
|
-
docs: {
|
|
82
|
-
description: string;
|
|
83
|
-
category: string;
|
|
84
|
-
recommended: boolean;
|
|
85
|
-
};
|
|
86
|
-
messages: {
|
|
87
|
-
directSdkUsage: string;
|
|
88
|
-
};
|
|
89
|
-
schema: never[];
|
|
90
|
-
};
|
|
91
|
-
export declare function noDirectOtelSdkCreate(context: any): {
|
|
92
|
-
ImportSpecifier?: undefined;
|
|
93
|
-
CallExpression?: undefined;
|
|
94
|
-
} | {
|
|
95
|
-
ImportSpecifier(node: any): void;
|
|
96
|
-
CallExpression(node: any): void;
|
|
97
|
-
};
|
|
98
|
-
export declare const noDirectOtelSdk: {
|
|
99
|
-
meta: {
|
|
100
|
-
type: string;
|
|
101
|
-
docs: {
|
|
102
|
-
description: string;
|
|
103
|
-
category: string;
|
|
104
|
-
recommended: boolean;
|
|
105
|
-
};
|
|
106
|
-
messages: {
|
|
107
|
-
directSdkUsage: string;
|
|
108
|
-
};
|
|
109
|
-
schema: never[];
|
|
110
|
-
};
|
|
111
|
-
create: typeof noDirectOtelSdkCreate;
|
|
112
|
-
};
|
|
113
|
-
/**
|
|
114
|
-
* All telemetry ESLint rules.
|
|
115
|
-
*/
|
|
116
|
-
export declare const telemetryRules: {
|
|
117
|
-
"no-forbidden-attributes": {
|
|
118
|
-
meta: {
|
|
119
|
-
type: string;
|
|
120
|
-
docs: {
|
|
121
|
-
description: string;
|
|
122
|
-
category: string;
|
|
123
|
-
recommended: boolean;
|
|
124
|
-
};
|
|
125
|
-
messages: {
|
|
126
|
-
forbiddenAttribute: string;
|
|
127
|
-
resourceOnlyAttribute: string;
|
|
128
|
-
};
|
|
129
|
-
schema: never[];
|
|
130
|
-
};
|
|
131
|
-
create: typeof noForbiddenTelemetryAttributesCreate;
|
|
132
|
-
};
|
|
133
|
-
"no-direct-otel-sdk": {
|
|
134
|
-
meta: {
|
|
135
|
-
type: string;
|
|
136
|
-
docs: {
|
|
137
|
-
description: string;
|
|
138
|
-
category: string;
|
|
139
|
-
recommended: boolean;
|
|
140
|
-
};
|
|
141
|
-
messages: {
|
|
142
|
-
directSdkUsage: string;
|
|
143
|
-
};
|
|
144
|
-
schema: never[];
|
|
145
|
-
};
|
|
146
|
-
create: typeof noDirectOtelSdkCreate;
|
|
147
|
-
};
|
|
148
|
-
};
|
|
149
|
-
//# sourceMappingURL=forbidden-attributes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"forbidden-attributes.d.ts","sourceRoot":"","sources":["../../src/lint/forbidden-attributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH;;GAEG;AACH,eAAO,MAAM,4BAA4B,UAKxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;CAgB9C,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,GAAG;yBAsBxC,GAAG;mBAgCT,GAAG;EAuBrB;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;CAG1C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;CAc/B,CAAC;AAYF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,GAAG;;;;0BASxB,GAAG;yBAYJ,GAAG;EAsB3B;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;CAG3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG1B,CAAC"}
|