@dxos/observability 0.10.0 → 0.11.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 (60) hide show
  1. package/dist/lib/chunk-log-processor.mjs +28 -0
  2. package/dist/lib/chunk-log-processor.mjs.map +1 -0
  3. package/dist/lib/chunk-logs.mjs +89 -0
  4. package/dist/lib/chunk-logs.mjs.map +1 -0
  5. package/dist/lib/chunk-metrics.mjs +118 -0
  6. package/dist/lib/chunk-metrics.mjs.map +1 -0
  7. package/dist/lib/chunk-otel.mjs +20 -0
  8. package/dist/lib/chunk-otel.mjs.map +1 -0
  9. package/dist/lib/chunk-traces-browser.mjs +145 -0
  10. package/dist/lib/chunk-traces-browser.mjs.map +1 -0
  11. package/dist/lib/index.mjs +977 -0
  12. package/dist/lib/index.mjs.map +1 -0
  13. package/dist/types/src/cli-observability-secrets.json +2 -2
  14. package/dist/types/src/extensions/otel/logs.d.ts +1 -0
  15. package/dist/types/src/extensions/otel/logs.d.ts.map +1 -1
  16. package/dist/types/src/extensions/otel/logs.js +11 -4
  17. package/dist/types/src/extensions/otel/logs.js.map +1 -1
  18. package/dist/types/src/extensions/otel/logs.test.d.ts +2 -0
  19. package/dist/types/src/extensions/otel/logs.test.d.ts.map +1 -0
  20. package/dist/types/src/extensions/otel/logs.test.js +33 -0
  21. package/dist/types/src/extensions/otel/logs.test.js.map +1 -0
  22. package/dist/types/src/extensions/posthog/extension.d.ts.map +1 -1
  23. package/dist/types/src/extensions/posthog/extension.js +4 -0
  24. package/dist/types/src/extensions/posthog/extension.js.map +1 -1
  25. package/dist/types/tsconfig.tsbuildinfo +1 -1
  26. package/package.json +31 -31
  27. package/src/cli-observability-secrets.json +2 -2
  28. package/src/extensions/otel/logs.test.ts +39 -0
  29. package/src/extensions/otel/logs.ts +11 -4
  30. package/src/extensions/posthog/extension.ts +4 -0
  31. package/dist/lib/browser/chunk-J5LGTIGS.mjs +0 -10
  32. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +0 -7
  33. package/dist/lib/browser/chunk-PSFTIG54.mjs +0 -20
  34. package/dist/lib/browser/chunk-PSFTIG54.mjs.map +0 -7
  35. package/dist/lib/browser/index.mjs +0 -1015
  36. package/dist/lib/browser/index.mjs.map +0 -7
  37. package/dist/lib/browser/log-processor-MZCTEVJC.mjs +0 -46
  38. package/dist/lib/browser/log-processor-MZCTEVJC.mjs.map +0 -7
  39. package/dist/lib/browser/logs-UTNIFYHF.mjs +0 -116
  40. package/dist/lib/browser/logs-UTNIFYHF.mjs.map +0 -7
  41. package/dist/lib/browser/meta.json +0 -1
  42. package/dist/lib/browser/metrics-PRGSYAZJ.mjs +0 -116
  43. package/dist/lib/browser/metrics-PRGSYAZJ.mjs.map +0 -7
  44. package/dist/lib/browser/traces-browser-H4NCYCVZ.mjs +0 -154
  45. package/dist/lib/browser/traces-browser-H4NCYCVZ.mjs.map +0 -7
  46. package/dist/lib/node-esm/chunk-EDDZWPYV.mjs +0 -22
  47. package/dist/lib/node-esm/chunk-EDDZWPYV.mjs.map +0 -7
  48. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +0 -11
  49. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +0 -7
  50. package/dist/lib/node-esm/index.mjs +0 -1021
  51. package/dist/lib/node-esm/index.mjs.map +0 -7
  52. package/dist/lib/node-esm/log-processor-GA24XTJF.mjs +0 -47
  53. package/dist/lib/node-esm/log-processor-GA24XTJF.mjs.map +0 -7
  54. package/dist/lib/node-esm/logs-ARJUVN3T.mjs +0 -117
  55. package/dist/lib/node-esm/logs-ARJUVN3T.mjs.map +0 -7
  56. package/dist/lib/node-esm/meta.json +0 -1
  57. package/dist/lib/node-esm/metrics-DREJOOAC.mjs +0 -117
  58. package/dist/lib/node-esm/metrics-DREJOOAC.mjs.map +0 -7
  59. package/dist/lib/node-esm/traces-74F7JUKF.mjs +0 -125
  60. package/dist/lib/node-esm/traces-74F7JUKF.mjs.map +0 -7
@@ -1,125 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- resolveOtlpUrl
4
- } from "./chunk-EDDZWPYV.mjs";
5
- import "./chunk-HSLMI22Q.mjs";
6
-
7
- // src/extensions/otel/traces.ts
8
- import { ROOT_CONTEXT, SpanStatusCode, context as otelContext, propagation, trace } from "@opentelemetry/api";
9
- import { W3CTraceContextPropagator } from "@opentelemetry/core";
10
- import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
11
- import { BasicTracerProvider, BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
12
- import { ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
13
- import { log as log2 } from "@dxos/log";
14
- import { TRACE_PROCESSOR } from "@dxos/tracing";
15
-
16
- // src/extensions/otel/span-processors.ts
17
- import { log } from "@dxos/log";
18
- var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/extensions/otel/span-processors.ts";
19
- var TagInjectorSpanProcessor = class {
20
- _getTags;
21
- constructor(_getTags) {
22
- this._getTags = _getTags;
23
- }
24
- onStart(span, _parentContext) {
25
- let tags;
26
- try {
27
- tags = this._getTags();
28
- } catch (err) {
29
- log.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 28, S: this });
30
- return;
31
- }
32
- for (const [key, value] of Object.entries(tags)) {
33
- span.setAttribute(key, value);
34
- }
35
- }
36
- onEnd(_span) {
37
- }
38
- async shutdown() {
39
- }
40
- async forceFlush() {
41
- }
42
- };
43
-
44
- // src/extensions/otel/traces.ts
45
- var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/observability/src/extensions/otel/traces.ts";
46
- var OtelTraces = class {
47
- options;
48
- _tracer;
49
- _tracerProvider;
50
- constructor(options) {
51
- this.options = options;
52
- propagation.setGlobalPropagator(new W3CTraceContextPropagator());
53
- this._tracerProvider = new BasicTracerProvider({
54
- resource: this.options.resource,
55
- spanProcessors: [
56
- new TagInjectorSpanProcessor(this.options.getTags),
57
- new BatchSpanProcessor(new OTLPTraceExporter({
58
- url: resolveOtlpUrl(this.options.endpoint + "/v1/traces"),
59
- headers: this.options.headers,
60
- concurrencyLimit: 10
61
- }))
62
- ]
63
- });
64
- trace.setGlobalTracerProvider(this._tracerProvider);
65
- this._tracer = trace.getTracer("dxos-observability", this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString());
66
- }
67
- /**
68
- * Forcibly flush the BatchSpanProcessor. Call before process exit to avoid
69
- * losing queued spans (which manifests as "Missing Span" in SigNoz — their
70
- * already-exported children reference a parent that never made it to OTLP).
71
- */
72
- async flush() {
73
- await this._tracerProvider.forceFlush();
74
- }
75
- /**
76
- * Flush + shut down the tracer provider via `BasicTracerProvider.shutdown()`,
77
- * which forces a final export then terminates all span processors.
78
- *
79
- * Terminal and effectively one-shot: safe to call after `flush()`, but
80
- * `flush()` MUST NOT be called after `close()` — shutdown stops further
81
- * exporting, so subsequent `close()`/`flush()` calls resolve without
82
- * emitting new spans.
83
- */
84
- async close() {
85
- await this._tracerProvider.shutdown();
86
- }
87
- start() {
88
- log2("trace processor registered", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 53, S: this });
89
- const tracer = this._tracer;
90
- TRACE_PROCESSOR.tracingBackend = {
91
- startSpan: (options) => {
92
- log2("begin otel trace", {
93
- options
94
- }, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 57, S: this });
95
- const parentCtx = options.parentContext ? propagation.extract(ROOT_CONTEXT, {
96
- traceparent: options.parentContext.traceparent,
97
- tracestate: options.parentContext.tracestate ?? ""
98
- }) : otelContext.active();
99
- const span = tracer.startSpan(options.name, options, parentCtx);
100
- const sc = span.spanContext();
101
- const spanContext = sc && sc.traceId && sc.spanId ? {
102
- traceparent: `00-${sc.traceId}-${sc.spanId}-${(sc.traceFlags ?? 0).toString(16).padStart(2, "0")}`,
103
- tracestate: sc.traceState?.serialize()
104
- } : void 0;
105
- return {
106
- end: (endTime) => span.end(endTime),
107
- setError: (err) => {
108
- if (err instanceof Error) {
109
- span.recordException(err);
110
- }
111
- span.setStatus({
112
- code: SpanStatusCode.ERROR,
113
- message: err instanceof Error ? err.message : String(err)
114
- });
115
- },
116
- spanContext
117
- };
118
- }
119
- };
120
- }
121
- };
122
- export {
123
- OtelTraces
124
- };
125
- //# sourceMappingURL=traces-74F7JUKF.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extensions/otel/traces.ts", "../../../src/extensions/otel/span-processors.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n ROOT_CONTEXT,\n SpanStatusCode,\n type Tracer,\n context as otelContext,\n propagation,\n trace,\n} from '@opentelemetry/api';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { BasicTracerProvider, BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { type RemoteSpan, type StartSpanOptions, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type OtelOptions, resolveOtlpUrl } from './otel';\nimport { TagInjectorSpanProcessor } from './span-processors';\n\nexport class OtelTraces {\n private _tracer: Tracer;\n private readonly _tracerProvider: BasicTracerProvider;\n\n constructor(private readonly options: OtelOptions) {\n propagation.setGlobalPropagator(new W3CTraceContextPropagator());\n\n this._tracerProvider = new BasicTracerProvider({\n resource: this.options.resource,\n spanProcessors: [\n new TagInjectorSpanProcessor(this.options.getTags),\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: resolveOtlpUrl(this.options.endpoint + '/v1/traces'),\n headers: this.options.headers,\n concurrencyLimit: 10,\n }),\n ),\n ],\n });\n\n trace.setGlobalTracerProvider(this._tracerProvider);\n this._tracer = trace.getTracer(\n 'dxos-observability',\n this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString(),\n );\n }\n\n /**\n * Forcibly flush the BatchSpanProcessor. Call before process exit to avoid\n * losing queued spans (which manifests as \"Missing Span\" in SigNoz — their\n * already-exported children reference a parent that never made it to OTLP).\n */\n public async flush(): Promise<void> {\n await this._tracerProvider.forceFlush();\n }\n\n /**\n * Flush + shut down the tracer provider via `BasicTracerProvider.shutdown()`,\n * which forces a final export then terminates all span processors.\n *\n * Terminal and effectively one-shot: safe to call after `flush()`, but\n * `flush()` MUST NOT be called after `close()` — shutdown stops further\n * exporting, so subsequent `close()`/`flush()` calls resolve without\n * emitting new spans.\n */\n public async close(): Promise<void> {\n await this._tracerProvider.shutdown();\n }\n\n public start(): void {\n log('trace processor registered');\n\n const tracer = this._tracer;\n\n TRACE_PROCESSOR.tracingBackend = {\n startSpan: (options: StartSpanOptions): RemoteSpan => {\n log('begin otel trace', { options });\n const parentCtx = options.parentContext\n ? propagation.extract(ROOT_CONTEXT, {\n traceparent: options.parentContext.traceparent,\n tracestate: options.parentContext.tracestate ?? '',\n })\n : otelContext.active();\n\n const span = tracer.startSpan(options.name, options, parentCtx);\n\n const sc = span.spanContext();\n const spanContext =\n sc && sc.traceId && sc.spanId\n ? {\n traceparent: `00-${sc.traceId}-${sc.spanId}-${(sc.traceFlags ?? 0).toString(16).padStart(2, '0')}`,\n tracestate: sc.traceState?.serialize(),\n }\n : undefined;\n\n return {\n end: (endTime?: number) => span.end(endTime),\n setError: (err: unknown) => {\n if (err instanceof Error) {\n span.recordException(err);\n }\n span.setStatus({ code: SpanStatusCode.ERROR, message: err instanceof Error ? err.message : String(err) });\n },\n spanContext,\n };\n },\n };\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Context } from '@opentelemetry/api';\nimport { type ReadableSpan, type Span, type SpanProcessor } from '@opentelemetry/sdk-trace-base';\n\nimport { log } from '@dxos/log';\n\n/**\n * Injects dynamic tags as attributes on every span.\n *\n * This is an `onStart`-only processor; `onEnd`/`shutdown`/`forceFlush` are no-ops\n * because this processor never holds pending work (delegates export to downstream\n * processors like BatchSpanProcessor).\n *\n * Use for tags that are not known at provider construction (e.g. identity\n * resolved asynchronously after login). For values known at startup, prefer\n * putting them on the `Resource` — see `extension.ts`.\n *\n * Failures in the tag provider are swallowed so they can never break span\n * recording (the processor is best-effort and runs on the startSpan hot path).\n */\nexport class TagInjectorSpanProcessor implements SpanProcessor {\n constructor(private readonly _getTags: () => Record<string, string>) {}\n\n onStart(span: Span, _parentContext: Context): void {\n let tags: Record<string, string>;\n try {\n tags = this._getTags();\n } catch (err) {\n log.catch(err);\n return;\n }\n for (const [key, value] of Object.entries(tags)) {\n span.setAttribute(key, value);\n }\n }\n\n onEnd(_span: ReadableSpan): void {}\n\n async shutdown(): Promise<void> {}\n\n async forceFlush(): Promise<void> {}\n}\n"],
5
- "mappings": ";;;;;;;AAIA,SACEA,cACAC,gBAEAC,WAAWC,aACXC,aACAC,aACK;AACP,SAASC,iCAAiC;AAC1C,SAASC,yBAAyB;AAClC,SAASC,qBAAqBC,0BAA0B;AACxD,SAASC,4BAA4B;AAErC,SAASC,OAAAA,YAAW;AACpB,SAAiDC,uBAAuB;;;ACXxE,SAASC,WAAW;AAEpB,IAAA,eAAA;AAeE,IAA6BC,2BAA7B,MAAqE;;EAAC,YAAA,UAAA;AAEtEC,SAAQC,WAAYC;;UAEd,MAAA,gBAAA;QACFC;AACF,QAAE;AACAL,aAAIM,KAAMC,SAAAA;aACV,KAAA;AACF,UAAA,MAAA,KAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AACA;;AAEA,eAAA,CAAA,KAAA,KAAA,KAAA,OAAA,QAAA,IAAA,GAAA;AACF,WAAA,aAAA,KAAA,KAAA;IAEAC;EAEA;EAEA,MAAMC,OAAAA;EAAAA;EACR,MAAA,WAAA;EAAA;;;;;;ADrBA,IAAAC,gBAAaC;AACHC,IAAgB,aAAhBA,MAAgB;EACPC;EAEjB;;cACEC,SAAYC;AAEZ,SAAKF,UAAAA;gBACHG,oBAAuBA,IAAQ,0BAAA,CAAA;SAC/BC,kBAAgB,IAAA,oBAAA;gBACVC,KAAAA,QAAAA;sBACAC;YAEAC,yBAAyBC,KAAAA,QAAQC,OAAW;YAC5CC,mBAAcF,IAAQE,kBAAO;UAC7BC,KAAAA,eAAkB,KAAA,QAAA,WAAA,YAAA;UACpB,SAAA,KAAA,QAAA;UAEH,kBAAA;QACH,CAAA,CAAA;MAEAC;IACA,CAAA;AAIF,UAAA,wBAAA,KAAA,eAAA;AAEA,SAAA,UAAA,MAAA,UAAA,sBAAA,KAAA,QAAA,SAAA,WAAA,oBAAA,GAAA,SAAA,CAAA;;;;;;;EAOA,MAAA,QAAA;AAEA,UAAA,KAAA,gBAAA,WAAA;;;;;;;;;;;EAWA,MAAA,QAAA;AAEOC,UAAc,KAAA,gBAAA,SAAA;;UAGnB;AAEAC,IAAAA,KAAAA,8BAAiC,QAAA,EAAA,YAAA,YAAA,GAAAjB,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA;UAC/BkB,SAAW,KAACP;oBACN,iBAAoB;iBAAEA,CAAAA,YAAAA;AAAQ,QAAAQ,KAAA,oBAAA;UAClC;yBAEMC,YAAqBC,GAAAA,eAAcD,GAAAA,IAAAA,GAAAA,KAAW,CAAA;cAC9CE,YAAYX,QAAQU,gBAAcC,YAAc,QAAA,cAAA;UAClD,aACYC,QAAM,cAAA;UAEtB,YAAaC,QAAON,cAAkBO,cAAMd;QAE5C,CAAA,IAAA,YAAgBe,OAAAA;AAChB,cAAMA,OAAAA,OACJC,UAASC,QAAO,MAAOC,SACnB,SAAA;cACET,KAAAA,KAAAA,YAAsBQ;cACtBN,cAAeQ,MAAAA,GAAU,WAAEC,GAAAA,SAAAA;UAE7BC,aAAAA,MAAAA,GAAAA,OAAAA,IAAAA,GAAAA,MAAAA,KAAAA,GAAAA,cAAAA,GAAAA,SAAAA,EAAAA,EAAAA,SAAAA,GAAAA,GAAAA,CAAAA;UAEN,YAAO,GAAA,YAAA,UAAA;YACLC;eACAC;eACE,CAAA,YAAIC,KAAAA,IAAeC,OAAO;oBACxBC,CAAAA,QAAKC;AACP,gBAAA,eAAA,OAAA;AACAD,mBAAKE,gBAAU,GAAA;;iBAA8BC,UAASL;cAAiD,MAAA,eAAA;cACzG,SAAA,eAAA,QAAA,IAAA,UAAA,OAAA,GAAA;YACAT,CAAAA;UACF;UACF;QACF;MACF;IACF;;;",
6
- "names": ["ROOT_CONTEXT", "SpanStatusCode", "context", "otelContext", "propagation", "trace", "W3CTraceContextPropagator", "OTLPTraceExporter", "BasicTracerProvider", "BatchSpanProcessor", "ATTR_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "log", "_getTags", "onStart", "span", "_parentContext", "tags", "catch", "err", "onEnd", "forceFlush", "__dxlog_file", "OtelTraces", "_tracer", "_tracerProvider", "propagation", "setGlobalPropagator", "resource", "spanProcessors", "TagInjectorSpanProcessor", "BatchSpanProcessor", "url", "options", "endpoint", "headers", "concurrencyLimit", "trace", "start", "TRACE_PROCESSOR", "startSpan", "log", "traceparent", "parentContext", "tracestate", "active", "tracer", "name", "spanContext", "sc", "traceId", "spanId", "traceState", "serialize", "undefined", "end", "setError", "err", "Error", "span", "recordException", "setStatus", "message"]
7
- }