@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/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;
@@ -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 };
@@ -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 };