@nifrajs/otel 5.2.0 → 5.4.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/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @nifrajs/otel
2
2
 
3
+ ## 5.4.0
4
+
5
+ No changes in this release.
6
+
7
+ ## 5.3.0
8
+
9
+ ### Minor Changes
10
+
11
+ - 7ab9692: Add build-time schema compilation that emits typed static validators without runtime code generation. Generated modules preserve strict validation and structured issues while avoiding the schema builder and dynamic compiler in deployed bundles.
12
+
13
+ A schema whose property key, `format` name or custom kind holds a quote, backslash or line break, or whose literal holds a backslash or line break, now validates on the eval-free checker and is refused by build-time compilation. TypeBox splices that text into generated source unescaped, so a quote could end the string and run the rest as code.
14
+
15
+ Prepare immutable route modules and layout chains in production while executing authorization gates and loaders for every request. Mutable manifests can disable module preparation with `cacheRouteModules: false`.
16
+
17
+ Reduce output projection bookkeeping for uniform subtrees, reuse request-bound cache views, and record completed cache spans without allocating an active observation. Span parentage, sampling, redaction, exporter isolation, and capability enforcement remain intact.
18
+
19
+ Keep custom start-only `ObservationLifecycle` implementations compatible. The factory returns the extended `RecordingObservationLifecycle` interface with the new `record` method.
20
+
21
+ Mark the migration parser's TypeScript keyword-kind comparison as syntax, so the security check does not mistake it for a secret comparison.
22
+
23
+ ### Patch Changes
24
+
25
+ - 3553267: `otlpExporter`'s `flush()` and `shutdown()` no longer resolve while a span queued before the call is still exporting. Settlement counted spans sent, failed or dropped, so a later span dropped on queue overflow counted toward an earlier flush and resolved it before its batch had settled; a flush now waits until every span queued before it has left the queue and the export in flight.
26
+
27
+ ## 5.2.1
28
+
29
+ No changes in this release.
30
+
3
31
  ## 5.2.0
4
32
 
5
33
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAEnE,yGAAyG;AACzG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,CAAA;AAEzF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAA;CAC1C;AAED,2CAA2C;AAC3C,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;AAWrE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,oBAAoB,CAqDpF"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAEnE,yGAAyG;AACzG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,CAAA;AAEzF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAA;CAC1C;AAED,2CAA2C;AAC3C,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;AAWrE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,oBAAoB,CAsDpF"}
package/dist/cache.js CHANGED
@@ -62,8 +62,7 @@ export function cacheTracing(options = {}) {
62
62
  if (event.tag !== undefined)
63
63
  keyAttributes(attributes, event.tag, "nifra.cache.tag_prefix", "nifra.cache.tag");
64
64
  const revalidation = event.op === "revalidate";
65
- lifecycle
66
- .start({
65
+ lifecycle.record({
67
66
  name: `cache ${event.op}`,
68
67
  kind: "internal",
69
68
  startTime: event.startedAt,
@@ -71,8 +70,7 @@ export function cacheTracing(options = {}) {
71
70
  ...(revalidation
72
71
  ? { parent: null, links: [{ traceId: trace.traceId, spanId: trace.spanId }] }
73
72
  : { parent: trace }),
74
- })
75
- .end({ status: event.outcome === "error" ? "error" : "ok", durationMs: event.durationMs });
73
+ }, { status: event.outcome === "error" ? "error" : "ok", durationMs: event.durationMs });
76
74
  };
77
75
  }
78
76
  //# sourceMappingURL=cache.js.map
package/dist/cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@
10
10
  */
11
11
  export { causalitySpanLink } from "./causality.js";
12
12
  export { type EffectTracingOptions, type EffectTracingPlugin, effectTracing, } from "./effects.js";
13
- export { type ActiveObservation, createObservationLifecycle, type EndObservation, type ObservationClock, type ObservationContext, type ObservationLifecycle, type ObservationLifecycleOptions, type ObservationParent, type ObservationScope, type StartObservation, } from "./lifecycle.js";
13
+ export { type ActiveObservation, createObservationLifecycle, type EndObservation, type ObservationClock, type ObservationContext, type ObservationLifecycle, type ObservationLifecycleOptions, type ObservationParent, type ObservationScope, type RecordingObservationLifecycle, type StartObservation, } from "./lifecycle.js";
14
14
  export { type OtlpExporter, type OtlpExporterOptions, otlpExporter } from "./otlp.js";
15
15
  export { type AttributeValue, combineObservationAdapters, consoleSpanExporter, type NifraSpan, type ObservationAdapter, type ObservationLink, type SpanKind, type SpanStatus, } from "./span.js";
16
16
  export { formatTraceparent, generateSpanId, generateTraceId, type ParsedTraceparent, parseTraceparent, } from "./traceparent.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,aAAa,GACd,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,KAAK,iBAAiB,EACtB,0BAA0B,EAC1B,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACrF,OAAO,EACL,KAAK,cAAc,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,KAAK,iBAAiB,EACtB,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,aAAa,GACd,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,KAAK,iBAAiB,EACtB,0BAA0B,EAC1B,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACrF,OAAO,EACL,KAAK,cAAc,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,KAAK,iBAAiB,EACtB,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAGL,aAAa,GACd,MAAM,cAAc,CAAA;AACrB,OAAO,EAEL,0BAA0B,GAS3B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAA+C,YAAY,EAAE,MAAM,WAAW,CAAA;AACrF,OAAO,EAEL,0BAA0B,EAC1B,mBAAmB,GAMpB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,EAEf,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAA0C,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAGL,aAAa,GACd,MAAM,cAAc,CAAA;AACrB,OAAO,EAEL,0BAA0B,GAU3B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAA+C,YAAY,EAAE,MAAM,WAAW,CAAA;AACrF,OAAO,EAEL,0BAA0B,EAC1B,mBAAmB,GAMpB,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,EAEf,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAA0C,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
@@ -66,6 +66,11 @@ export interface ActiveObservation {
66
66
  export interface ObservationLifecycle {
67
67
  start(input: StartObservation, additionalAdapters?: readonly ObservationAdapter[]): ActiveObservation;
68
68
  }
69
+ /** Factory lifecycles can record completed work; custom start-only implementations remain valid. */
70
+ export interface RecordingObservationLifecycle extends ObservationLifecycle {
71
+ /** Record already-completed work without allocating an active observation. */
72
+ record(input: StartObservation, end: EndObservation): NifraSpan;
73
+ }
69
74
  export interface ObservationClock {
70
75
  /** Epoch milliseconds for interoperable start/end timestamps. */
71
76
  wallTime(): number;
@@ -80,5 +85,5 @@ export interface ObservationLifecycleOptions {
80
85
  readonly generateSpanId?: () => string;
81
86
  }
82
87
  /** Creates an independent lifecycle factory. Adapters are always called fail-open. */
83
- export declare function createObservationLifecycle(options?: ObservationLifecycleOptions): ObservationLifecycle;
88
+ export declare function createObservationLifecycle(options?: ObservationLifecycleOptions): RecordingObservationLifecycle;
84
89
  //# sourceMappingURL=lifecycle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,UAAU,EACX,MAAM,WAAW,CAAA;AAQlB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;AAEhF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;IACxB,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC1C,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IAC9D,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,CAAA;IAC3C,iFAAiF;IACjF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IAC9D,0GAA0G;IAC1G,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAA;IACpC,oFAAoF;IACpF,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAC7C,qFAAqF;IACrF,UAAU,CACR,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,aAAa,CAAC,EACvD,kBAAkB,CAAC,EAAE,SAAS,kBAAkB,EAAE,GACjD,iBAAiB,CAAA;IACpB;;;;OAIG;IACH,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,GAAG,IAAI,CAAA;IACzE,8FAA8F;IAC9F,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IACjC,oGAAoG;IACpG,GAAG,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CACH,KAAK,EAAE,gBAAgB,EACvB,kBAAkB,CAAC,EAAE,SAAS,kBAAkB,EAAE,GACjD,iBAAiB,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iEAAiE;IACjE,QAAQ,IAAI,MAAM,CAAA;IAClB,4CAA4C;IAC5C,aAAa,IAAI,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACjD,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,MAAM,CAAA;IACvC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,MAAM,CAAA;CACvC;AAOD,sFAAsF;AACtF,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAiJtB"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
package/dist/lifecycle.js CHANGED
@@ -11,6 +11,18 @@ const defaultClock = {
11
11
  /** Creates an independent lifecycle factory. Adapters are always called fail-open. */
12
12
  export function createObservationLifecycle(options = {}) {
13
13
  const adapters = options.adapters ?? [];
14
+ let adapterSnapshot = [...adapters];
15
+ let recordedAdapters = [...new Set(adapterSnapshot)];
16
+ const adaptersForRecord = () => {
17
+ let changed = adapterSnapshot.length !== adapters.length;
18
+ for (let i = 0; !changed && i < adapters.length; i++)
19
+ changed = adapterSnapshot[i] !== adapters[i];
20
+ if (changed) {
21
+ adapterSnapshot = [...adapters];
22
+ recordedAdapters = [...new Set(adapterSnapshot)];
23
+ }
24
+ return recordedAdapters;
25
+ };
14
26
  const clock = options.clock ?? defaultClock;
15
27
  const newTraceId = options.generateTraceId ?? generateTraceId;
16
28
  const newSpanId = options.generateSpanId ?? generateSpanId;
@@ -34,8 +46,7 @@ export function createObservationLifecycle(options = {}) {
34
46
  }
35
47
  }
36
48
  };
37
- const start = (input, additionalAdapters = []) => {
38
- const spanAdapters = new Set([...adapters, ...additionalAdapters]);
49
+ const makeSpan = (input) => {
39
50
  const parent = input.parent === undefined ? parseTraceparent(input.traceparent ?? null) : input.parent;
40
51
  const traceId = parent?.traceId ?? newTraceId();
41
52
  const spanId = newSpanId();
@@ -43,8 +54,7 @@ export function createObservationLifecycle(options = {}) {
43
54
  const startTime = input.startTime !== undefined && Number.isFinite(input.startTime)
44
55
  ? input.startTime
45
56
  : clock.wallTime();
46
- const monotonicStart = clock.monotonicTime();
47
- const span = {
57
+ return {
48
58
  traceId,
49
59
  spanId,
50
60
  ...(parent === null ? {} : { parentSpanId: parent.spanId }),
@@ -66,10 +76,38 @@ export function createObservationLifecycle(options = {}) {
66
76
  }))),
67
77
  }),
68
78
  };
79
+ };
80
+ const finish = (span, endInput, monotonicStart, recordedError = false) => {
81
+ Object.assign(span.attributes, endInput.attributes);
82
+ if (endInput.durationMs !== undefined && Number.isFinite(endInput.durationMs)) {
83
+ span.durationMs = Math.max(0, endInput.durationMs);
84
+ span.endTime = span.startTime + span.durationMs;
85
+ }
86
+ else {
87
+ span.endTime = clock.wallTime();
88
+ span.durationMs = Math.max(0, clock.monotonicTime() - monotonicStart);
89
+ }
90
+ span.status =
91
+ endInput.status ??
92
+ (endInput.statusCode === undefined
93
+ ? recordedError
94
+ ? "error"
95
+ : "ok"
96
+ : endInput.statusCode >= 500
97
+ ? "error"
98
+ : "ok");
99
+ Object.freeze(span.attributes);
100
+ return Object.freeze(span);
101
+ };
102
+ const start = (input, additionalAdapters = []) => {
103
+ const spanAdapters = new Set([...adapters, ...additionalAdapters]);
104
+ const span = makeSpan(input);
105
+ const { traceId, spanId, parentSpanId, sampled } = span;
106
+ const monotonicStart = clock.monotonicTime();
69
107
  const context = {
70
108
  traceId,
71
109
  spanId,
72
- ...(parent === null ? {} : { parentSpanId: parent.spanId }),
110
+ ...(parentSpanId === undefined ? {} : { parentSpanId }),
73
111
  sampled,
74
112
  traceparent: formatTraceparent(traceId, spanId, sampled),
75
113
  };
@@ -113,29 +151,7 @@ export function createObservationLifecycle(options = {}) {
113
151
  if (ended)
114
152
  return span;
115
153
  ended = true;
116
- Object.assign(span.attributes, endInput.attributes);
117
- if (endInput.durationMs !== undefined && Number.isFinite(endInput.durationMs)) {
118
- span.durationMs = Math.max(0, endInput.durationMs);
119
- span.endTime = span.startTime + span.durationMs;
120
- }
121
- else {
122
- span.endTime = clock.wallTime();
123
- span.durationMs = Math.max(0, clock.monotonicTime() - monotonicStart);
124
- }
125
- span.status =
126
- endInput.status ??
127
- (endInput.statusCode === undefined
128
- ? recordedError
129
- ? "error"
130
- : "ok"
131
- : endInput.statusCode >= 500
132
- ? "error"
133
- : "ok");
134
- // Publish an immutable completed span: a misbehaving adapter can no longer mutate the shared
135
- // attributes bag and corrupt what other adapters (or the caller) observe. Adapters are fail-open,
136
- // so a stray write throws into their own try/catch rather than changing request behavior.
137
- Object.freeze(span.attributes);
138
- Object.freeze(span);
154
+ finish(span, endInput, monotonicStart, recordedError);
139
155
  notifyEnd(span, [...spanAdapters]);
140
156
  return span;
141
157
  },
@@ -143,6 +159,19 @@ export function createObservationLifecycle(options = {}) {
143
159
  notifyStart(span, [...spanAdapters]);
144
160
  return active;
145
161
  };
146
- return { start };
162
+ return {
163
+ start,
164
+ record(input, endInput) {
165
+ const spanAdapters = adaptersForRecord();
166
+ const span = makeSpan(input);
167
+ const monotonicStart = endInput.durationMs !== undefined && Number.isFinite(endInput.durationMs)
168
+ ? 0
169
+ : clock.monotonicTime();
170
+ notifyStart(span, spanAdapters);
171
+ finish(span, endInput, monotonicStart);
172
+ notifyEnd(span, spanAdapters);
173
+ return span;
174
+ },
175
+ };
147
176
  }
148
177
  //# sourceMappingURL=lifecycle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"otlp.d.ts","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAA6B,kBAAkB,EAAwB,MAAM,WAAW,CAAA;AAEpG,MAAM,WAAW,mBAAmB;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,sBAAsB;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,2FAA2F;QAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAC1B,oGAAoG;QACpG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAC1B,mFAAmF;QACnF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAClC,CAAA;IACD;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,qGAAqG;IACrG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3C,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChG;AAED,MAAM,WAAW,YAAa,SAAQ,kBAAkB;IACtD;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,0GAA0G;IAC1G,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAiED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAmIvE"}
1
+ {"version":3,"file":"otlp.d.ts","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAA6B,kBAAkB,EAAwB,MAAM,WAAW,CAAA;AAEpG,MAAM,WAAW,mBAAmB;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACzC,4DAA4D;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,sBAAsB;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,2FAA2F;QAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAC1B,oGAAoG;QACpG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAC1B,mFAAmF;QACnF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAClC,CAAA;IACD;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,qGAAqG;IACrG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3C,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChG;AAED,MAAM,WAAW,YAAa,SAAQ,kBAAkB;IACtD;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,0GAA0G;IAC1G,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAiED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAuIvE"}
package/dist/otlp.js CHANGED
@@ -77,10 +77,12 @@ export function otlpExporter(options) {
77
77
  const resourceAttributes = keyValues({ "service.name": options.serviceName ?? "nifra" });
78
78
  const queue = [];
79
79
  let timer;
80
- // Spans ever queued, and spans since sent, failed or dropped. The queue is FIFO and drops its
81
- // oldest, so every span queued before a flush is settled once `settled` reaches that flush's mark.
80
+ // Spans ever queued, numbered in order. The queue holds the newest `queue.length` of them and the
81
+ // batch in flight the run starting at `inFlightFrom`, so every span numbered below the older of the
82
+ // two has been sent, failed or dropped. A count of settled spans is not enough: a later span dropped
83
+ // on overflow would count toward an earlier flush whose batch is still exporting.
82
84
  let queued = 0;
83
- let settled = 0;
85
+ let inFlightFrom;
84
86
  const waiters = [];
85
87
  let pumping = false;
86
88
  const report = (error) => {
@@ -133,11 +135,11 @@ export function otlpExporter(options) {
133
135
  clearTimeout(deadline);
134
136
  }
135
137
  };
136
- const settle = (count) => {
137
- settled += count;
138
+ const settle = () => {
139
+ const unsettled = inFlightFrom ?? queued - queue.length;
138
140
  for (let i = waiters.length - 1; i >= 0; i--) {
139
141
  const waiter = waiters[i];
140
- if (waiter === undefined || waiter.mark > settled)
142
+ if (waiter === undefined || waiter.mark > unsettled)
141
143
  continue;
142
144
  waiters.splice(i, 1);
143
145
  waiter.resolve();
@@ -146,9 +148,11 @@ export function otlpExporter(options) {
146
148
  // One export in flight at a time; spans arriving meanwhile wait in the bounded queue.
147
149
  const pump = async () => {
148
150
  while (queue.length > 0) {
151
+ inFlightFrom = queued - queue.length;
149
152
  const batch = queue.splice(0, maxBatch);
150
153
  await send(batch);
151
- settle(batch.length);
154
+ inFlightFrom = undefined;
155
+ settle();
152
156
  }
153
157
  };
154
158
  const kick = () => {
@@ -162,7 +166,7 @@ export function otlpExporter(options) {
162
166
  });
163
167
  };
164
168
  const flush = () => {
165
- if (settled === queued)
169
+ if (inFlightFrom === undefined && queue.length === 0)
166
170
  return Promise.resolve();
167
171
  const done = new Promise((resolve) => waiters.push({ mark: queued, resolve }));
168
172
  kick();
@@ -180,7 +184,7 @@ export function otlpExporter(options) {
180
184
  queued++;
181
185
  if (queue.length > maxQueue) {
182
186
  queue.shift(); // drop the oldest under sustained backpressure rather than grow unbounded
183
- settle(1);
187
+ settle();
184
188
  report(new Error("otlp_queue_overflow_span_dropped"));
185
189
  }
186
190
  if (queue.length >= maxBatch)
package/dist/otlp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"otlp.js","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"otlp.js","sourceRoot":"","sources":["../src/otlp.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nifrajs/otel",
3
- "version": "5.2.0",
3
+ "version": "5.4.0",
4
4
  "description": "Distributed tracing for nifra - W3C traceparent/tracestate propagation + OpenTelemetry-semantic-convention spans via a pluggable exporter. Bridge to the OpenTelemetry SDK or log spans directly; no SDK bundled. Edge-safe.",
5
5
  "keywords": [
6
6
  "bun",
@@ -73,7 +73,7 @@
73
73
  "access": "public"
74
74
  },
75
75
  "peerDependencies": {
76
- "@nifrajs/core": "^5.2.0"
76
+ "@nifrajs/core": "^5.4.0"
77
77
  },
78
78
  "devDependencies": {
79
79
  "@nifrajs/cache": "workspace:*",
package/src/cache.ts CHANGED
@@ -100,8 +100,8 @@ export function cacheTracing(options: CacheTracingOptions = {}): CacheTracingObs
100
100
  if (event.tag !== undefined)
101
101
  keyAttributes(attributes, event.tag, "nifra.cache.tag_prefix", "nifra.cache.tag")
102
102
  const revalidation = event.op === "revalidate"
103
- lifecycle
104
- .start({
103
+ lifecycle.record(
104
+ {
105
105
  name: `cache ${event.op}`,
106
106
  kind: "internal",
107
107
  startTime: event.startedAt,
@@ -109,7 +109,8 @@ export function cacheTracing(options: CacheTracingOptions = {}): CacheTracingObs
109
109
  ...(revalidation
110
110
  ? { parent: null, links: [{ traceId: trace.traceId, spanId: trace.spanId }] }
111
111
  : { parent: trace }),
112
- })
113
- .end({ status: event.outcome === "error" ? "error" : "ok", durationMs: event.durationMs })
112
+ },
113
+ { status: event.outcome === "error" ? "error" : "ok", durationMs: event.durationMs },
114
+ )
114
115
  }
115
116
  }
package/src/index.ts CHANGED
@@ -25,6 +25,7 @@ export {
25
25
  type ObservationLifecycleOptions,
26
26
  type ObservationParent,
27
27
  type ObservationScope,
28
+ type RecordingObservationLifecycle,
28
29
  type StartObservation,
29
30
  } from "./lifecycle.ts"
30
31
  export { type OtlpExporter, type OtlpExporterOptions, otlpExporter } from "./otlp.ts"
package/src/lifecycle.ts CHANGED
@@ -94,6 +94,12 @@ export interface ObservationLifecycle {
94
94
  ): ActiveObservation
95
95
  }
96
96
 
97
+ /** Factory lifecycles can record completed work; custom start-only implementations remain valid. */
98
+ export interface RecordingObservationLifecycle extends ObservationLifecycle {
99
+ /** Record already-completed work without allocating an active observation. */
100
+ record(input: StartObservation, end: EndObservation): NifraSpan
101
+ }
102
+
97
103
  export interface ObservationClock {
98
104
  /** Epoch milliseconds for interoperable start/end timestamps. */
99
105
  wallTime(): number
@@ -117,8 +123,20 @@ const defaultClock: ObservationClock = {
117
123
  /** Creates an independent lifecycle factory. Adapters are always called fail-open. */
118
124
  export function createObservationLifecycle(
119
125
  options: ObservationLifecycleOptions = {},
120
- ): ObservationLifecycle {
126
+ ): RecordingObservationLifecycle {
121
127
  const adapters = options.adapters ?? []
128
+ let adapterSnapshot = [...adapters]
129
+ let recordedAdapters = [...new Set(adapterSnapshot)]
130
+ const adaptersForRecord = (): readonly ObservationAdapter[] => {
131
+ let changed = adapterSnapshot.length !== adapters.length
132
+ for (let i = 0; !changed && i < adapters.length; i++)
133
+ changed = adapterSnapshot[i] !== adapters[i]
134
+ if (changed) {
135
+ adapterSnapshot = [...adapters]
136
+ recordedAdapters = [...new Set(adapterSnapshot)]
137
+ }
138
+ return recordedAdapters
139
+ }
122
140
  const clock = options.clock ?? defaultClock
123
141
  const newTraceId = options.generateTraceId ?? generateTraceId
124
142
  const newSpanId = options.generateSpanId ?? generateSpanId
@@ -143,11 +161,7 @@ export function createObservationLifecycle(
143
161
  }
144
162
  }
145
163
 
146
- const start = (
147
- input: StartObservation,
148
- additionalAdapters: readonly ObservationAdapter[] = [],
149
- ): ActiveObservation => {
150
- const spanAdapters = new Set([...adapters, ...additionalAdapters])
164
+ const makeSpan = (input: StartObservation): NifraSpan => {
151
165
  const parent =
152
166
  input.parent === undefined ? parseTraceparent(input.traceparent ?? null) : input.parent
153
167
  const traceId = parent?.traceId ?? newTraceId()
@@ -157,8 +171,7 @@ export function createObservationLifecycle(
157
171
  input.startTime !== undefined && Number.isFinite(input.startTime)
158
172
  ? input.startTime
159
173
  : clock.wallTime()
160
- const monotonicStart = clock.monotonicTime()
161
- const span: NifraSpan = {
174
+ return {
162
175
  traceId,
163
176
  spanId,
164
177
  ...(parent === null ? {} : { parentSpanId: parent.spanId }),
@@ -184,10 +197,47 @@ export function createObservationLifecycle(
184
197
  ),
185
198
  }),
186
199
  }
200
+ }
201
+
202
+ const finish = (
203
+ span: NifraSpan,
204
+ endInput: EndObservation,
205
+ monotonicStart: number,
206
+ recordedError = false,
207
+ ): NifraSpan => {
208
+ Object.assign(span.attributes, endInput.attributes)
209
+ if (endInput.durationMs !== undefined && Number.isFinite(endInput.durationMs)) {
210
+ span.durationMs = Math.max(0, endInput.durationMs)
211
+ span.endTime = span.startTime + span.durationMs
212
+ } else {
213
+ span.endTime = clock.wallTime()
214
+ span.durationMs = Math.max(0, clock.monotonicTime() - monotonicStart)
215
+ }
216
+ span.status =
217
+ endInput.status ??
218
+ (endInput.statusCode === undefined
219
+ ? recordedError
220
+ ? "error"
221
+ : "ok"
222
+ : endInput.statusCode >= 500
223
+ ? "error"
224
+ : "ok")
225
+ Object.freeze(span.attributes)
226
+ return Object.freeze(span)
227
+ }
228
+
229
+ const start = (
230
+ input: StartObservation,
231
+ additionalAdapters: readonly ObservationAdapter[] = [],
232
+ ): ActiveObservation => {
233
+ const spanAdapters = new Set([...adapters, ...additionalAdapters])
234
+ const span = makeSpan(input)
235
+ const { traceId, spanId, parentSpanId, sampled } = span
236
+ const monotonicStart = clock.monotonicTime()
187
237
  const context: ObservationContext = {
188
238
  traceId,
189
239
  spanId,
190
- ...(parent === null ? {} : { parentSpanId: parent.spanId }),
240
+ ...(parentSpanId === undefined ? {} : { parentSpanId }),
191
241
  sampled,
192
242
  traceparent: formatTraceparent(traceId, spanId, sampled),
193
243
  }
@@ -230,28 +280,7 @@ export function createObservationLifecycle(
230
280
  end(endInput = {}) {
231
281
  if (ended) return span
232
282
  ended = true
233
- Object.assign(span.attributes, endInput.attributes)
234
- if (endInput.durationMs !== undefined && Number.isFinite(endInput.durationMs)) {
235
- span.durationMs = Math.max(0, endInput.durationMs)
236
- span.endTime = span.startTime + span.durationMs
237
- } else {
238
- span.endTime = clock.wallTime()
239
- span.durationMs = Math.max(0, clock.monotonicTime() - monotonicStart)
240
- }
241
- span.status =
242
- endInput.status ??
243
- (endInput.statusCode === undefined
244
- ? recordedError
245
- ? "error"
246
- : "ok"
247
- : endInput.statusCode >= 500
248
- ? "error"
249
- : "ok")
250
- // Publish an immutable completed span: a misbehaving adapter can no longer mutate the shared
251
- // attributes bag and corrupt what other adapters (or the caller) observe. Adapters are fail-open,
252
- // so a stray write throws into their own try/catch rather than changing request behavior.
253
- Object.freeze(span.attributes)
254
- Object.freeze(span)
283
+ finish(span, endInput, monotonicStart, recordedError)
255
284
  notifyEnd(span, [...spanAdapters])
256
285
  return span
257
286
  },
@@ -261,5 +290,19 @@ export function createObservationLifecycle(
261
290
  return active
262
291
  }
263
292
 
264
- return { start }
293
+ return {
294
+ start,
295
+ record(input, endInput) {
296
+ const spanAdapters = adaptersForRecord()
297
+ const span = makeSpan(input)
298
+ const monotonicStart =
299
+ endInput.durationMs !== undefined && Number.isFinite(endInput.durationMs)
300
+ ? 0
301
+ : clock.monotonicTime()
302
+ notifyStart(span, spanAdapters)
303
+ finish(span, endInput, monotonicStart)
304
+ notifyEnd(span, spanAdapters)
305
+ return span
306
+ },
307
+ }
265
308
  }
package/src/otlp.ts CHANGED
@@ -125,10 +125,12 @@ export function otlpExporter(options: OtlpExporterOptions): OtlpExporter {
125
125
 
126
126
  const queue: NifraSpan[] = []
127
127
  let timer: ReturnType<typeof setInterval> | undefined
128
- // Spans ever queued, and spans since sent, failed or dropped. The queue is FIFO and drops its
129
- // oldest, so every span queued before a flush is settled once `settled` reaches that flush's mark.
128
+ // Spans ever queued, numbered in order. The queue holds the newest `queue.length` of them and the
129
+ // batch in flight the run starting at `inFlightFrom`, so every span numbered below the older of the
130
+ // two has been sent, failed or dropped. A count of settled spans is not enough: a later span dropped
131
+ // on overflow would count toward an earlier flush whose batch is still exporting.
130
132
  let queued = 0
131
- let settled = 0
133
+ let inFlightFrom: number | undefined
132
134
  const waiters: Array<{ readonly mark: number; readonly resolve: () => void }> = []
133
135
  let pumping = false
134
136
 
@@ -180,11 +182,11 @@ export function otlpExporter(options: OtlpExporterOptions): OtlpExporter {
180
182
  }
181
183
  }
182
184
 
183
- const settle = (count: number): void => {
184
- settled += count
185
+ const settle = (): void => {
186
+ const unsettled = inFlightFrom ?? queued - queue.length
185
187
  for (let i = waiters.length - 1; i >= 0; i--) {
186
188
  const waiter = waiters[i]
187
- if (waiter === undefined || waiter.mark > settled) continue
189
+ if (waiter === undefined || waiter.mark > unsettled) continue
188
190
  waiters.splice(i, 1)
189
191
  waiter.resolve()
190
192
  }
@@ -193,9 +195,11 @@ export function otlpExporter(options: OtlpExporterOptions): OtlpExporter {
193
195
  // One export in flight at a time; spans arriving meanwhile wait in the bounded queue.
194
196
  const pump = async (): Promise<void> => {
195
197
  while (queue.length > 0) {
198
+ inFlightFrom = queued - queue.length
196
199
  const batch = queue.splice(0, maxBatch)
197
200
  await send(batch)
198
- settle(batch.length)
201
+ inFlightFrom = undefined
202
+ settle()
199
203
  }
200
204
  }
201
205
 
@@ -209,7 +213,7 @@ export function otlpExporter(options: OtlpExporterOptions): OtlpExporter {
209
213
  }
210
214
 
211
215
  const flush = (): Promise<void> => {
212
- if (settled === queued) return Promise.resolve()
216
+ if (inFlightFrom === undefined && queue.length === 0) return Promise.resolve()
213
217
  const done = new Promise<void>((resolve) => waiters.push({ mark: queued, resolve }))
214
218
  kick()
215
219
  return done
@@ -227,7 +231,7 @@ export function otlpExporter(options: OtlpExporterOptions): OtlpExporter {
227
231
  queued++
228
232
  if (queue.length > maxQueue) {
229
233
  queue.shift() // drop the oldest under sustained backpressure rather than grow unbounded
230
- settle(1)
234
+ settle()
231
235
  report(new Error("otlp_queue_overflow_span_dropped"))
232
236
  }
233
237
  if (queue.length >= maxBatch) kick()