@livestore/utils-dev 0.0.0-snapshot-b2d2d2bd4f754072b38d5bc668a0bf75add60cf1 → 0.0.0-snapshot-bb19fcffa450084e917adc1f3ead601acb4b83c2

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.
@@ -1 +1 @@
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,EAAY,KAAK,EAAY,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE/F,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAM1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAA;AAC3E,cAAc,UAAU,CAAA;AACxB,OAAO,EACL,KAAK,iBAAiB,EACtB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,gCAAgC,GACjC,MAAM,gDAAgD,CAAA;AACvD,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C,eAAO,MAAM,YAAY,GAAI,iGAO1B;IACD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;IAC3B,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,CAuFxC,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"}
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,EAAY,KAAK,EAAY,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE/F,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAM1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAA;AAC3E,cAAc,UAAU,CAAA;AACxB,OAAO,EACL,KAAK,iBAAiB,EACtB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,gCAAgC,GACjC,MAAM,gDAAgD,CAAA;AACvD,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C,eAAO,MAAM,YAAY,GAAI,iGAO1B;IACD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;IAC3B,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,CA0FxC,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
@@ -62,7 +62,9 @@ export const OtelLiveHttp = ({ serviceName, rootSpanName, rootSpanAttributes, pa
62
62
  yield* Effect.gen(function* () {
63
63
  const tracer = yield* OtelTracer.OtelTracer;
64
64
  const currentSpan = yield* OtelTracer.currentOtelSpan;
65
- const { nodeTiming, endAbs, durationAttr } = computeBootstrapTiming();
65
+ const nodeTiming = performance.nodeTiming;
66
+ // TODO get rid of this workaround for Bun once Bun properly supports performance.nodeTiming
67
+ const startTime = IS_BUN ? nodeTiming.startTime : performance.timeOrigin + nodeTiming.nodeStart;
66
68
  const bootSpan = tracer.startSpan('node-bootstrap', {
67
69
  startTime: nodeTiming.nodeStart,
68
70
  attributes: {
@@ -70,10 +72,10 @@ export const OtelLiveHttp = ({ serviceName, rootSpanName, rootSpanAttributes, pa
70
72
  'node.timing.environment': nodeTiming.environment,
71
73
  'node.timing.bootstrapComplete': nodeTiming.bootstrapComplete,
72
74
  'node.timing.loopStart': nodeTiming.loopStart,
73
- 'node.timing.duration': durationAttr,
75
+ 'node.timing.duration': nodeTiming.duration,
74
76
  },
75
77
  }, otel.trace.setSpanContext(otel.context.active(), currentSpan.spanContext()));
76
- bootSpan.end(endAbs);
78
+ bootSpan.end(startTime + nodeTiming.duration);
77
79
  }).pipe(Effect.provide(layer), Effect.orDie);
78
80
  }
79
81
  return layer;
@@ -109,48 +111,4 @@ export const getTracingBackendUrl = (span) => Effect.gen(function* () {
109
111
  // TODO make dynamic via env var
110
112
  return `${grafanaEndpoint}/explore?${searchParams.toString()}`;
111
113
  });
112
- /**
113
- * Compute absolute start/end timestamps for the Node.js bootstrap span in a
114
- * way that works in both Node and Bun.
115
- *
116
- * Context: Bun's perf_hooks PerformanceNodeTiming currently throws when
117
- * accessing standard PerformanceEntry getters like `startTime` and
118
- * `duration`, and some fields differ in semantics (e.g. `nodeStart` appears
119
- * as an epoch timestamp rather than an offset). See:
120
- * https://github.com/oven-sh/bun/issues/23041
121
- *
122
- * We therefore avoid the problematic getters and derive absolute timestamps
123
- * using fields that exist in both runtimes.
124
- *
125
- * TODO: Simplify to a single, non-branching computation once the Bun issue
126
- * above is fixed and Bun matches Node's semantics for PerformanceNodeTiming.
127
- */
128
- const computeBootstrapTiming = () => {
129
- const nodeTiming = performance.nodeTiming;
130
- // Absolute start time in ms since epoch.
131
- const startAbs = IS_BUN
132
- ? typeof nodeTiming.nodeStart === 'number'
133
- ? nodeTiming.nodeStart
134
- : performance.timeOrigin
135
- : performance.timeOrigin + nodeTiming.nodeStart;
136
- // Absolute end time.
137
- const endAbs = IS_BUN
138
- ? (() => {
139
- const { loopStart, bootstrapComplete } = nodeTiming;
140
- if (typeof loopStart === 'number' && loopStart > 0)
141
- return startAbs + loopStart;
142
- if (typeof bootstrapComplete === 'number' && bootstrapComplete >= startAbs)
143
- return bootstrapComplete;
144
- return startAbs + 1;
145
- })()
146
- : startAbs + nodeTiming.duration;
147
- // Duration attribute value for the span.
148
- const durationAttr = IS_BUN
149
- ? (() => {
150
- const { loopStart } = nodeTiming;
151
- return typeof loopStart === 'number' && loopStart > 0 ? loopStart : 0;
152
- })()
153
- : nodeTiming.duration;
154
- return { nodeTiming, startAbs, endAbs, durationAttr };
155
- };
156
114
  //# sourceMappingURL=mod.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"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"}
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-b2d2d2bd4f754072b38d5bc668a0bf75add60cf1",
3
+ "version": "0.0.0-snapshot-bb19fcffa450084e917adc1f3ead601acb4b83c2",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "./src/node-vitest/global.ts",
@@ -22,7 +22,7 @@
22
22
  "@opentelemetry/sdk-trace-base": "2.0.1",
23
23
  "@opentelemetry/sdk-trace-node": "2.0.1",
24
24
  "wrangler": "4.38.0",
25
- "@livestore/utils": "0.0.0-snapshot-b2d2d2bd4f754072b38d5bc668a0bf75add60cf1"
25
+ "@livestore/utils": "0.0.0-snapshot-bb19fcffa450084e917adc1f3ead601acb4b83c2"
26
26
  },
27
27
  "devDependencies": {},
28
28
  "files": [
package/src/node/mod.ts CHANGED
@@ -104,7 +104,10 @@ export const OtelLiveHttp = ({
104
104
  const tracer = yield* OtelTracer.OtelTracer
105
105
  const currentSpan = yield* OtelTracer.currentOtelSpan
106
106
 
107
- const { nodeTiming, endAbs, durationAttr } = computeBootstrapTiming()
107
+ const nodeTiming = performance.nodeTiming
108
+
109
+ // TODO get rid of this workaround for Bun once Bun properly supports performance.nodeTiming
110
+ const startTime = IS_BUN ? nodeTiming.startTime : performance.timeOrigin + nodeTiming.nodeStart
108
111
 
109
112
  const bootSpan = tracer.startSpan(
110
113
  'node-bootstrap',
@@ -115,13 +118,13 @@ export const OtelLiveHttp = ({
115
118
  'node.timing.environment': nodeTiming.environment,
116
119
  'node.timing.bootstrapComplete': nodeTiming.bootstrapComplete,
117
120
  'node.timing.loopStart': nodeTiming.loopStart,
118
- 'node.timing.duration': durationAttr,
121
+ 'node.timing.duration': nodeTiming.duration,
119
122
  },
120
123
  },
121
124
  otel.trace.setSpanContext(otel.context.active(), currentSpan.spanContext()),
122
125
  )
123
126
 
124
- bootSpan.end(endAbs)
127
+ bootSpan.end(startTime + nodeTiming.duration)
125
128
  }).pipe(Effect.provide(layer), Effect.orDie)
126
129
  }
127
130
 
@@ -165,50 +168,3 @@ export const getTracingBackendUrl = (span: otel.Span) =>
165
168
  // TODO make dynamic via env var
166
169
  return `${grafanaEndpoint}/explore?${searchParams.toString()}`
167
170
  })
168
-
169
- /**
170
- * Compute absolute start/end timestamps for the Node.js bootstrap span in a
171
- * way that works in both Node and Bun.
172
- *
173
- * Context: Bun's perf_hooks PerformanceNodeTiming currently throws when
174
- * accessing standard PerformanceEntry getters like `startTime` and
175
- * `duration`, and some fields differ in semantics (e.g. `nodeStart` appears
176
- * as an epoch timestamp rather than an offset). See:
177
- * https://github.com/oven-sh/bun/issues/23041
178
- *
179
- * We therefore avoid the problematic getters and derive absolute timestamps
180
- * using fields that exist in both runtimes.
181
- *
182
- * TODO: Simplify to a single, non-branching computation once the Bun issue
183
- * above is fixed and Bun matches Node's semantics for PerformanceNodeTiming.
184
- */
185
- const computeBootstrapTiming = () => {
186
- const nodeTiming = performance.nodeTiming
187
-
188
- // Absolute start time in ms since epoch.
189
- const startAbs = IS_BUN
190
- ? typeof nodeTiming.nodeStart === 'number'
191
- ? nodeTiming.nodeStart
192
- : performance.timeOrigin
193
- : performance.timeOrigin + nodeTiming.nodeStart
194
-
195
- // Absolute end time.
196
- const endAbs = IS_BUN
197
- ? (() => {
198
- const { loopStart, bootstrapComplete } = nodeTiming
199
- if (typeof loopStart === 'number' && loopStart > 0) return startAbs + loopStart
200
- if (typeof bootstrapComplete === 'number' && bootstrapComplete >= startAbs) return bootstrapComplete
201
- return startAbs + 1
202
- })()
203
- : startAbs + nodeTiming.duration
204
-
205
- // Duration attribute value for the span.
206
- const durationAttr = IS_BUN
207
- ? (() => {
208
- const { loopStart } = nodeTiming
209
- return typeof loopStart === 'number' && loopStart > 0 ? loopStart : 0
210
- })()
211
- : nodeTiming.duration
212
-
213
- return { nodeTiming, startAbs, endAbs, durationAttr } as const
214
- }