@davidilie/telemetry-node 0.0.0-bootstrap.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/LICENSE +201 -0
- package/README.md +224 -0
- package/THIRD_PARTY_NOTICES.md +11 -0
- package/UPSTREAM.yml +56 -0
- package/dist/client-BzoFCwmQ.d.cts +85 -0
- package/dist/client-BzoFCwmQ.d.mts +85 -0
- package/dist/index.cjs +15 -0
- package/dist/index.d.cts +34 -0
- package/dist/index.d.mts +34 -0
- package/dist/index.mjs +2 -0
- package/dist/register.cjs +53 -0
- package/dist/register.d.cts +10 -0
- package/dist/register.d.mts +10 -0
- package/dist/register.mjs +51 -0
- package/dist/sampler-BnXptsJ8.cjs +513 -0
- package/dist/sampler-fxBt_DLP.mjs +436 -0
- package/package.json +85 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_sampler = require("./sampler-BnXptsJ8.cjs");
|
|
3
|
+
exports.DynamicTelemetrySampler = require_sampler.DynamicTelemetrySampler;
|
|
4
|
+
exports.NodeTelemetryClient = require_sampler.NodeTelemetryClient;
|
|
5
|
+
exports.OpenTelemetryAdapter = require_sampler.OpenTelemetryAdapter;
|
|
6
|
+
exports.OpenTelemetrySpan = require_sampler.OpenTelemetrySpan;
|
|
7
|
+
exports.createNodeTelemetry = require_sampler.createNodeTelemetry;
|
|
8
|
+
exports.createOpenTelemetryAdapter = require_sampler.createOpenTelemetryAdapter;
|
|
9
|
+
exports.currentTraceContext = require_sampler.currentTraceContext;
|
|
10
|
+
exports.recordException = require_sampler.recordException;
|
|
11
|
+
exports.startSpan = require_sampler.startSpan;
|
|
12
|
+
exports.telemetryResourceAttributes = require_sampler.telemetryResourceAttributes;
|
|
13
|
+
exports.toOtelAttributeValue = require_sampler.toOtelAttributeValue;
|
|
14
|
+
exports.toOtelAttributes = require_sampler.toOtelAttributes;
|
|
15
|
+
exports.withSpan = require_sampler.withSpan;
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { a as OpenTelemetryAdapter, c as createOpenTelemetryAdapter, d as startSpan, f as withSpan, i as MeasurementMode, l as currentTraceContext, n as NodeTelemetryConfig, o as OpenTelemetryAdapterConfig, r as createNodeTelemetry, s as OpenTelemetrySpan, t as NodeTelemetryClient, u as recordException } from "./client-BzoFCwmQ.cjs";
|
|
2
|
+
import { AttributeValue, Attributes, Context, Link, SpanKind } from "@opentelemetry/api";
|
|
3
|
+
import { AttributeValue as AttributeValue$1, Attributes as Attributes$1, TelemetryResource } from "@davidilie/telemetry-core";
|
|
4
|
+
import { Sampler, SamplingResult } from "@opentelemetry/sdk-trace-base";
|
|
5
|
+
//#region src/attributes.d.ts
|
|
6
|
+
declare function toOtelAttributeValue(value: AttributeValue$1): AttributeValue;
|
|
7
|
+
declare function toOtelAttributes(attributes?: Attributes$1): Attributes;
|
|
8
|
+
declare function telemetryResourceAttributes(resource: TelemetryResource): Attributes;
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region src/sampler.d.ts
|
|
11
|
+
/** Runtime state understood by the provider-wide dynamic sampler. */
|
|
12
|
+
interface TelemetrySamplingState {
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
consent: "granted" | "denied" | "pending";
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A mutable gate around an ordinary OpenTelemetry sampler.
|
|
18
|
+
*
|
|
19
|
+
* OpenTelemetry providers are registered once, but consent and operational
|
|
20
|
+
* switches can change later. This wrapper drops every span—including children
|
|
21
|
+
* of sampled remote parents—while collection is disabled, then delegates to
|
|
22
|
+
* the configured sampler immediately after collection is re-enabled.
|
|
23
|
+
*/
|
|
24
|
+
declare class DynamicTelemetrySampler implements Sampler {
|
|
25
|
+
#private;
|
|
26
|
+
private readonly delegate;
|
|
27
|
+
constructor(delegate: Sampler, state: TelemetrySamplingState);
|
|
28
|
+
setEnabled(enabled: boolean): void;
|
|
29
|
+
setConsent(consent: "granted" | "denied" | "pending"): void;
|
|
30
|
+
shouldSample(parentContext: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: Attributes, links: Link[]): SamplingResult;
|
|
31
|
+
toString(): string;
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { DynamicTelemetrySampler, type MeasurementMode, NodeTelemetryClient, type NodeTelemetryConfig, OpenTelemetryAdapter, type OpenTelemetryAdapterConfig, OpenTelemetrySpan, type TelemetrySamplingState, createNodeTelemetry, createOpenTelemetryAdapter, currentTraceContext, recordException, startSpan, telemetryResourceAttributes, toOtelAttributeValue, toOtelAttributes, withSpan };
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { a as OpenTelemetryAdapter, c as createOpenTelemetryAdapter, d as startSpan, f as withSpan, i as MeasurementMode, l as currentTraceContext, n as NodeTelemetryConfig, o as OpenTelemetryAdapterConfig, r as createNodeTelemetry, s as OpenTelemetrySpan, t as NodeTelemetryClient, u as recordException } from "./client-BzoFCwmQ.mjs";
|
|
2
|
+
import { AttributeValue, Attributes, Context, Link, SpanKind } from "@opentelemetry/api";
|
|
3
|
+
import { AttributeValue as AttributeValue$1, Attributes as Attributes$1, TelemetryResource } from "@davidilie/telemetry-core";
|
|
4
|
+
import { Sampler, SamplingResult } from "@opentelemetry/sdk-trace-base";
|
|
5
|
+
//#region src/attributes.d.ts
|
|
6
|
+
declare function toOtelAttributeValue(value: AttributeValue$1): AttributeValue;
|
|
7
|
+
declare function toOtelAttributes(attributes?: Attributes$1): Attributes;
|
|
8
|
+
declare function telemetryResourceAttributes(resource: TelemetryResource): Attributes;
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region src/sampler.d.ts
|
|
11
|
+
/** Runtime state understood by the provider-wide dynamic sampler. */
|
|
12
|
+
interface TelemetrySamplingState {
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
consent: "granted" | "denied" | "pending";
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A mutable gate around an ordinary OpenTelemetry sampler.
|
|
18
|
+
*
|
|
19
|
+
* OpenTelemetry providers are registered once, but consent and operational
|
|
20
|
+
* switches can change later. This wrapper drops every span—including children
|
|
21
|
+
* of sampled remote parents—while collection is disabled, then delegates to
|
|
22
|
+
* the configured sampler immediately after collection is re-enabled.
|
|
23
|
+
*/
|
|
24
|
+
declare class DynamicTelemetrySampler implements Sampler {
|
|
25
|
+
#private;
|
|
26
|
+
private readonly delegate;
|
|
27
|
+
constructor(delegate: Sampler, state: TelemetrySamplingState);
|
|
28
|
+
setEnabled(enabled: boolean): void;
|
|
29
|
+
setConsent(consent: "granted" | "denied" | "pending"): void;
|
|
30
|
+
shouldSample(parentContext: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: Attributes, links: Link[]): SamplingResult;
|
|
31
|
+
toString(): string;
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { DynamicTelemetrySampler, type MeasurementMode, NodeTelemetryClient, type NodeTelemetryConfig, OpenTelemetryAdapter, type OpenTelemetryAdapterConfig, OpenTelemetrySpan, type TelemetrySamplingState, createNodeTelemetry, createOpenTelemetryAdapter, currentTraceContext, recordException, startSpan, telemetryResourceAttributes, toOtelAttributeValue, toOtelAttributes, withSpan };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as OpenTelemetrySpan, c as recordException, d as telemetryResourceAttributes, f as toOtelAttributeValue, i as OpenTelemetryAdapter, l as startSpan, n as NodeTelemetryClient, o as createOpenTelemetryAdapter, p as toOtelAttributes, r as createNodeTelemetry, s as currentTraceContext, t as DynamicTelemetrySampler, u as withSpan } from "./sampler-fxBt_DLP.mjs";
|
|
2
|
+
export { DynamicTelemetrySampler, NodeTelemetryClient, OpenTelemetryAdapter, OpenTelemetrySpan, createNodeTelemetry, createOpenTelemetryAdapter, currentTraceContext, recordException, startSpan, telemetryResourceAttributes, toOtelAttributeValue, toOtelAttributes, withSpan };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_sampler = require("./sampler-BnXptsJ8.cjs");
|
|
3
|
+
let _davidilie_telemetry_core = require("@davidilie/telemetry-core");
|
|
4
|
+
let _opentelemetry_sdk_trace_base = require("@opentelemetry/sdk-trace-base");
|
|
5
|
+
let _opentelemetry_resources = require("@opentelemetry/resources");
|
|
6
|
+
let _opentelemetry_sdk_node = require("@opentelemetry/sdk-node");
|
|
7
|
+
//#region src/register.ts
|
|
8
|
+
const REGISTRATION = Symbol.for("@davidilie/telemetry-node/registration");
|
|
9
|
+
function traceSampleRate(config) {
|
|
10
|
+
if (!Number.isFinite(config.sampleRate)) return 1;
|
|
11
|
+
return Math.min(1, Math.max(0, config.sampleRate ?? 1));
|
|
12
|
+
}
|
|
13
|
+
function registerNodeTelemetry(config) {
|
|
14
|
+
const sharedGlobal = globalThis;
|
|
15
|
+
const existing = sharedGlobal[REGISTRATION];
|
|
16
|
+
if (existing) return existing.client;
|
|
17
|
+
const resource = (0, _davidilie_telemetry_core.sanitizeResource)(config.resource);
|
|
18
|
+
const sampler = new require_sampler.DynamicTelemetrySampler(config.sdk?.sampler ?? new _opentelemetry_sdk_trace_base.ParentBasedSampler({ root: new _opentelemetry_sdk_trace_base.TraceIdRatioBasedSampler(traceSampleRate(config)) }), {
|
|
19
|
+
enabled: config.enabled ?? true,
|
|
20
|
+
consent: config.consent ?? "granted"
|
|
21
|
+
});
|
|
22
|
+
const sdk = new _opentelemetry_sdk_node.NodeSDK({
|
|
23
|
+
...config.sdk,
|
|
24
|
+
sampler,
|
|
25
|
+
resource: (0, _opentelemetry_resources.resourceFromAttributes)(require_sampler.telemetryResourceAttributes(resource)),
|
|
26
|
+
serviceName: resource.serviceName
|
|
27
|
+
});
|
|
28
|
+
sdk.start();
|
|
29
|
+
let client;
|
|
30
|
+
client = new require_sampler.NodeTelemetryClient({
|
|
31
|
+
...config,
|
|
32
|
+
resource,
|
|
33
|
+
providerManagedSampling: true,
|
|
34
|
+
onCollectionStateChange: (state) => {
|
|
35
|
+
sampler.setEnabled(state.enabled);
|
|
36
|
+
sampler.setConsent(state.consent);
|
|
37
|
+
},
|
|
38
|
+
measurementMode: config.measurementMode ?? (config.sdk?.metricReaders?.length ? "metrics" : "spans"),
|
|
39
|
+
shutdown: async () => {
|
|
40
|
+
await sdk.shutdown();
|
|
41
|
+
if (sharedGlobal[REGISTRATION]?.client === client) delete sharedGlobal[REGISTRATION];
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
sharedGlobal[REGISTRATION] = {
|
|
45
|
+
client,
|
|
46
|
+
sdk
|
|
47
|
+
};
|
|
48
|
+
return client;
|
|
49
|
+
}
|
|
50
|
+
const register = registerNodeTelemetry;
|
|
51
|
+
//#endregion
|
|
52
|
+
exports.register = register;
|
|
53
|
+
exports.registerNodeTelemetry = registerNodeTelemetry;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { n as NodeTelemetryConfig, t as NodeTelemetryClient } from "./client-BzoFCwmQ.cjs";
|
|
2
|
+
import { NodeSDKConfiguration, NodeSDKConfiguration as NodeSDKConfiguration$1 } from "@opentelemetry/sdk-node";
|
|
3
|
+
//#region src/register.d.ts
|
|
4
|
+
interface RegisterNodeTelemetryConfig extends NodeTelemetryConfig {
|
|
5
|
+
sdk?: Omit<Partial<NodeSDKConfiguration$1>, "resource" | "serviceName">;
|
|
6
|
+
}
|
|
7
|
+
declare function registerNodeTelemetry(config: RegisterNodeTelemetryConfig): NodeTelemetryClient;
|
|
8
|
+
declare const register: typeof registerNodeTelemetry;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { type NodeSDKConfiguration, RegisterNodeTelemetryConfig, register, registerNodeTelemetry };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { n as NodeTelemetryConfig, t as NodeTelemetryClient } from "./client-BzoFCwmQ.mjs";
|
|
2
|
+
import { NodeSDKConfiguration, NodeSDKConfiguration as NodeSDKConfiguration$1 } from "@opentelemetry/sdk-node";
|
|
3
|
+
//#region src/register.d.ts
|
|
4
|
+
interface RegisterNodeTelemetryConfig extends NodeTelemetryConfig {
|
|
5
|
+
sdk?: Omit<Partial<NodeSDKConfiguration$1>, "resource" | "serviceName">;
|
|
6
|
+
}
|
|
7
|
+
declare function registerNodeTelemetry(config: RegisterNodeTelemetryConfig): NodeTelemetryClient;
|
|
8
|
+
declare const register: typeof registerNodeTelemetry;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { type NodeSDKConfiguration, RegisterNodeTelemetryConfig, register, registerNodeTelemetry };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { d as telemetryResourceAttributes, n as NodeTelemetryClient, t as DynamicTelemetrySampler } from "./sampler-fxBt_DLP.mjs";
|
|
2
|
+
import { sanitizeResource } from "@davidilie/telemetry-core";
|
|
3
|
+
import { ParentBasedSampler, TraceIdRatioBasedSampler } from "@opentelemetry/sdk-trace-base";
|
|
4
|
+
import { resourceFromAttributes } from "@opentelemetry/resources";
|
|
5
|
+
import { NodeSDK } from "@opentelemetry/sdk-node";
|
|
6
|
+
//#region src/register.ts
|
|
7
|
+
const REGISTRATION = Symbol.for("@davidilie/telemetry-node/registration");
|
|
8
|
+
function traceSampleRate(config) {
|
|
9
|
+
if (!Number.isFinite(config.sampleRate)) return 1;
|
|
10
|
+
return Math.min(1, Math.max(0, config.sampleRate ?? 1));
|
|
11
|
+
}
|
|
12
|
+
function registerNodeTelemetry(config) {
|
|
13
|
+
const sharedGlobal = globalThis;
|
|
14
|
+
const existing = sharedGlobal[REGISTRATION];
|
|
15
|
+
if (existing) return existing.client;
|
|
16
|
+
const resource = sanitizeResource(config.resource);
|
|
17
|
+
const sampler = new DynamicTelemetrySampler(config.sdk?.sampler ?? new ParentBasedSampler({ root: new TraceIdRatioBasedSampler(traceSampleRate(config)) }), {
|
|
18
|
+
enabled: config.enabled ?? true,
|
|
19
|
+
consent: config.consent ?? "granted"
|
|
20
|
+
});
|
|
21
|
+
const sdk = new NodeSDK({
|
|
22
|
+
...config.sdk,
|
|
23
|
+
sampler,
|
|
24
|
+
resource: resourceFromAttributes(telemetryResourceAttributes(resource)),
|
|
25
|
+
serviceName: resource.serviceName
|
|
26
|
+
});
|
|
27
|
+
sdk.start();
|
|
28
|
+
let client;
|
|
29
|
+
client = new NodeTelemetryClient({
|
|
30
|
+
...config,
|
|
31
|
+
resource,
|
|
32
|
+
providerManagedSampling: true,
|
|
33
|
+
onCollectionStateChange: (state) => {
|
|
34
|
+
sampler.setEnabled(state.enabled);
|
|
35
|
+
sampler.setConsent(state.consent);
|
|
36
|
+
},
|
|
37
|
+
measurementMode: config.measurementMode ?? (config.sdk?.metricReaders?.length ? "metrics" : "spans"),
|
|
38
|
+
shutdown: async () => {
|
|
39
|
+
await sdk.shutdown();
|
|
40
|
+
if (sharedGlobal[REGISTRATION]?.client === client) delete sharedGlobal[REGISTRATION];
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
sharedGlobal[REGISTRATION] = {
|
|
44
|
+
client,
|
|
45
|
+
sdk
|
|
46
|
+
};
|
|
47
|
+
return client;
|
|
48
|
+
}
|
|
49
|
+
const register = registerNodeTelemetry;
|
|
50
|
+
//#endregion
|
|
51
|
+
export { register, registerNodeTelemetry };
|