@livestore/utils-dev 0.0.0-snapshot-54e706b7e73bd685653cd43e1e34a02c1d8054a2 → 0.0.0-snapshot-412a36a7e6c9b0e9e237b553fd0522aed285228f
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/.tsbuildinfo.json +1 -1
- package/dist/node/mod.d.ts +2 -1
- package/dist/node/mod.d.ts.map +1 -1
- package/dist/node/mod.js +25 -20
- package/dist/node/mod.js.map +1 -1
- package/package.json +2 -2
- package/src/node/mod.ts +32 -24
package/dist/node/mod.d.ts
CHANGED
|
@@ -3,11 +3,12 @@ import { Effect, Layer, OtelTracer } from '@livestore/utils/effect';
|
|
|
3
3
|
import * as otel from '@opentelemetry/api';
|
|
4
4
|
export { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
5
5
|
export { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
6
|
-
export declare const OtelLiveHttp: ({ serviceName, rootSpanName, rootSpanAttributes, skipLogUrl, }?: {
|
|
6
|
+
export declare const OtelLiveHttp: ({ serviceName, rootSpanName, rootSpanAttributes, skipLogUrl, traceNodeBootstrap, }?: {
|
|
7
7
|
serviceName?: string;
|
|
8
8
|
rootSpanName?: string;
|
|
9
9
|
rootSpanAttributes?: Record<string, unknown>;
|
|
10
10
|
skipLogUrl?: boolean;
|
|
11
|
+
traceNodeBootstrap?: boolean;
|
|
11
12
|
}) => Layer.Layer<OtelTracer.OtelTracer | Tracer.ParentSpan, never, never>;
|
|
12
13
|
export declare const logTraceUiUrlForSpan: (printMsg?: (url: string) => string) => (span: otel.Span) => Effect.Effect<string | undefined, never, never>;
|
|
13
14
|
export declare const getTracingBackendUrl: (span: otel.Span) => Effect.Effect<string | undefined, never, never>;
|
package/dist/node/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAU,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE3E,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAM1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAE9E,eAAO,MAAM,YAAY,GAAI,qFAM1B;IACD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CACxB,KAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CA2ExC,CAAA;AAEpC,eAAO,MAAM,oBAAoB,GAAI,WAAW,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,MAAM,MAAM,IAAI,CAAC,IAAI,oDAazF,CAAA;AAEH,eAAO,MAAM,oBAAoB,GAAI,MAAM,IAAI,CAAC,IAAI,oDAqBhD,CAAA"}
|
package/dist/node/mod.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { performance } from 'node:perf_hooks';
|
|
2
2
|
import * as OtelNodeSdk from '@effect/opentelemetry/NodeSdk';
|
|
3
|
+
import { IS_BUN } from '@livestore/utils';
|
|
3
4
|
import { Config, Effect, Layer, OtelTracer } from '@livestore/utils/effect';
|
|
4
5
|
import { OtelLiveDummy } from '@livestore/utils/node';
|
|
5
6
|
import * as otel from '@opentelemetry/api';
|
|
@@ -9,7 +10,7 @@ import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
|
|
|
9
10
|
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
10
11
|
export { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
11
12
|
export { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
|
|
12
|
-
export const OtelLiveHttp = ({ serviceName, rootSpanName, rootSpanAttributes, skipLogUrl, } = {}) => Effect.gen(function* () {
|
|
13
|
+
export const OtelLiveHttp = ({ serviceName, rootSpanName, rootSpanAttributes, skipLogUrl, traceNodeBootstrap, } = {}) => Effect.gen(function* () {
|
|
13
14
|
const configRes = yield* Config.all({
|
|
14
15
|
exporterUrl: Config.string('OTEL_EXPORTER_OTLP_ENDPOINT'),
|
|
15
16
|
serviceName: serviceName
|
|
@@ -39,25 +40,29 @@ export const OtelLiveHttp = ({ serviceName, rootSpanName, rootSpanAttributes, sk
|
|
|
39
40
|
onEnd: skipLogUrl ? undefined : (span) => logTraceUiUrlForSpan()(span.span),
|
|
40
41
|
});
|
|
41
42
|
const layer = yield* Layer.memoize(RootSpanLive.pipe(Layer.provideMerge(OtelLive)));
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
43
|
+
if (traceNodeBootstrap) {
|
|
44
|
+
/**
|
|
45
|
+
* Create a span representing the Node.js bootstrap duration.
|
|
46
|
+
*/
|
|
47
|
+
yield* Effect.gen(function* () {
|
|
48
|
+
const tracer = yield* OtelTracer.OtelTracer;
|
|
49
|
+
const currentSpan = yield* OtelTracer.currentOtelSpan;
|
|
50
|
+
const nodeTiming = performance.nodeTiming;
|
|
51
|
+
// TODO get rid of this workaround for Bun once Bun properly supports performance.nodeTiming
|
|
52
|
+
const startTime = IS_BUN ? nodeTiming.startTime : performance.timeOrigin + nodeTiming.nodeStart;
|
|
53
|
+
const bootSpan = tracer.startSpan('node-bootstrap', {
|
|
54
|
+
startTime: nodeTiming.nodeStart,
|
|
55
|
+
attributes: {
|
|
56
|
+
'node.timing.nodeStart': nodeTiming.nodeStart,
|
|
57
|
+
'node.timing.environment': nodeTiming.environment,
|
|
58
|
+
'node.timing.bootstrapComplete': nodeTiming.bootstrapComplete,
|
|
59
|
+
'node.timing.loopStart': nodeTiming.loopStart,
|
|
60
|
+
'node.timing.duration': nodeTiming.duration,
|
|
61
|
+
},
|
|
62
|
+
}, otel.trace.setSpanContext(otel.context.active(), currentSpan.spanContext()));
|
|
63
|
+
bootSpan.end(startTime + nodeTiming.duration);
|
|
64
|
+
}).pipe(Effect.provide(layer), Effect.orDie);
|
|
65
|
+
}
|
|
61
66
|
return layer;
|
|
62
67
|
}).pipe(Layer.unwrapScoped);
|
|
63
68
|
export const logTraceUiUrlForSpan = (printMsg) => (span) => getTracingBackendUrl(span).pipe(Effect.tap((url) => {
|
package/dist/node/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/utils-dev",
|
|
3
|
-
"version": "0.0.0-snapshot-
|
|
3
|
+
"version": "0.0.0-snapshot-412a36a7e6c9b0e9e237b553fd0522aed285228f",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"./dist/node-vitest/polyfill.js"
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@opentelemetry/sdk-metrics": "2.0.0",
|
|
29
29
|
"@opentelemetry/sdk-trace-base": "2.0.0",
|
|
30
30
|
"@opentelemetry/sdk-trace-node": "2.0.0",
|
|
31
|
-
"@livestore/utils": "0.0.0-snapshot-
|
|
31
|
+
"@livestore/utils": "0.0.0-snapshot-412a36a7e6c9b0e9e237b553fd0522aed285228f"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {},
|
|
34
34
|
"files": [
|
package/src/node/mod.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { performance } from 'node:perf_hooks'
|
|
2
2
|
|
|
3
3
|
import * as OtelNodeSdk from '@effect/opentelemetry/NodeSdk'
|
|
4
|
+
import { IS_BUN } from '@livestore/utils'
|
|
4
5
|
import type { Tracer } from '@livestore/utils/effect'
|
|
5
6
|
import { Config, Effect, Layer, OtelTracer } from '@livestore/utils/effect'
|
|
6
7
|
import { OtelLiveDummy } from '@livestore/utils/node'
|
|
@@ -18,11 +19,13 @@ export const OtelLiveHttp = ({
|
|
|
18
19
|
rootSpanName,
|
|
19
20
|
rootSpanAttributes,
|
|
20
21
|
skipLogUrl,
|
|
22
|
+
traceNodeBootstrap,
|
|
21
23
|
}: {
|
|
22
24
|
serviceName?: string
|
|
23
25
|
rootSpanName?: string
|
|
24
26
|
rootSpanAttributes?: Record<string, unknown>
|
|
25
27
|
skipLogUrl?: boolean
|
|
28
|
+
traceNodeBootstrap?: boolean
|
|
26
29
|
} = {}): Layer.Layer<OtelTracer.OtelTracer | Tracer.ParentSpan, never, never> =>
|
|
27
30
|
Effect.gen(function* () {
|
|
28
31
|
const configRes = yield* Config.all({
|
|
@@ -65,32 +68,37 @@ export const OtelLiveHttp = ({
|
|
|
65
68
|
|
|
66
69
|
const layer = yield* Layer.memoize(RootSpanLive.pipe(Layer.provideMerge(OtelLive)))
|
|
67
70
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
71
|
+
if (traceNodeBootstrap) {
|
|
72
|
+
/**
|
|
73
|
+
* Create a span representing the Node.js bootstrap duration.
|
|
74
|
+
*/
|
|
75
|
+
yield* Effect.gen(function* () {
|
|
76
|
+
const tracer = yield* OtelTracer.OtelTracer
|
|
77
|
+
const currentSpan = yield* OtelTracer.currentOtelSpan
|
|
78
|
+
|
|
79
|
+
const nodeTiming = performance.nodeTiming
|
|
80
|
+
|
|
81
|
+
// TODO get rid of this workaround for Bun once Bun properly supports performance.nodeTiming
|
|
82
|
+
const startTime = IS_BUN ? nodeTiming.startTime : performance.timeOrigin + nodeTiming.nodeStart
|
|
83
|
+
|
|
84
|
+
const bootSpan = tracer.startSpan(
|
|
85
|
+
'node-bootstrap',
|
|
86
|
+
{
|
|
87
|
+
startTime: nodeTiming.nodeStart,
|
|
88
|
+
attributes: {
|
|
89
|
+
'node.timing.nodeStart': nodeTiming.nodeStart,
|
|
90
|
+
'node.timing.environment': nodeTiming.environment,
|
|
91
|
+
'node.timing.bootstrapComplete': nodeTiming.bootstrapComplete,
|
|
92
|
+
'node.timing.loopStart': nodeTiming.loopStart,
|
|
93
|
+
'node.timing.duration': nodeTiming.duration,
|
|
94
|
+
},
|
|
86
95
|
},
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
)
|
|
96
|
+
otel.trace.setSpanContext(otel.context.active(), currentSpan.spanContext()),
|
|
97
|
+
)
|
|
90
98
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
99
|
+
bootSpan.end(startTime + nodeTiming.duration)
|
|
100
|
+
}).pipe(Effect.provide(layer), Effect.orDie)
|
|
101
|
+
}
|
|
94
102
|
|
|
95
103
|
return layer
|
|
96
104
|
}).pipe(Layer.unwrapScoped) as any
|