@bitfab/sdk 0.52.2 → 0.52.3

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.
@@ -6,7 +6,7 @@ import {
6
6
  flushTraces,
7
7
  parseRetryAfterMs,
8
8
  serializePayloadBody
9
- } from "./chunk-QWAWERYM.js";
9
+ } from "./chunk-ODF4JSYX.js";
10
10
  import "./chunk-H6LZRFMN.js";
11
11
  export {
12
12
  BitfabError,
@@ -17,4 +17,4 @@ export {
17
17
  parseRetryAfterMs,
18
18
  serializePayloadBody
19
19
  };
20
- //# sourceMappingURL=http-V2WU4EN3.js.map
20
+ //# sourceMappingURL=http-3MPIPYKC.js.map
@@ -6,7 +6,7 @@ import {
6
6
  flushTraces,
7
7
  parseRetryAfterMs,
8
8
  serializePayloadBody
9
- } from "./chunk-36ARJJ6S.js";
9
+ } from "./chunk-QHA46TT6.js";
10
10
  export {
11
11
  BitfabError,
12
12
  HttpClient,
@@ -16,4 +16,4 @@ export {
16
16
  parseRetryAfterMs,
17
17
  serializePayloadBody
18
18
  };
19
- //# sourceMappingURL=http-CVTQ3N5S.js.map
19
+ //# sourceMappingURL=http-ZW5THLTW.js.map
package/dist/index.cjs CHANGED
@@ -42,7 +42,7 @@ var __version__, __packageName__;
42
42
  var init_version_generated = __esm({
43
43
  "src/version.generated.ts"() {
44
44
  "use strict";
45
- __version__ = "0.52.2";
45
+ __version__ = "0.52.3";
46
46
  __packageName__ = "@bitfab/sdk";
47
47
  }
48
48
  });
@@ -385,15 +385,18 @@ var init_payloadBudget = __esm({
385
385
  });
386
386
 
387
387
  // src/warnOnce.ts
388
+ function warn(message) {
389
+ try {
390
+ console.warn(`[bitfab] ${message}`);
391
+ } catch {
392
+ }
393
+ }
388
394
  function warnOnce(key, message) {
389
395
  if (warned.has(key)) {
390
396
  return;
391
397
  }
392
398
  warned.add(key);
393
- try {
394
- console.warn(`[bitfab] ${message}`);
395
- } catch {
396
- }
399
+ warn(message);
397
400
  }
398
401
  var warned;
399
402
  var init_warnOnce = __esm({
@@ -535,6 +538,9 @@ var init_serializePayload = __esm({
535
538
  });
536
539
 
537
540
  // src/traceMetadata.ts
541
+ function findRecord(traceId) {
542
+ return activeRecords.get(traceId) ?? completedRecords.get(traceId);
543
+ }
538
544
  function recordCallerTraceMetadata(traceId, metadata) {
539
545
  if (typeof traceId !== "string" || traceId === "") {
540
546
  return;
@@ -545,15 +551,52 @@ function recordCallerTraceMetadata(traceId, metadata) {
545
551
  if (Object.keys(metadata).length === 0) {
546
552
  return;
547
553
  }
548
- callerMetadata.set(traceId, { ...callerMetadata.get(traceId), ...metadata });
554
+ const existing = findRecord(traceId);
555
+ if (existing) {
556
+ Object.assign(existing.caller, metadata);
557
+ return;
558
+ }
559
+ activeRecords.set(traceId, {
560
+ caller: { ...metadata },
561
+ derived: {},
562
+ warnedKeys: /* @__PURE__ */ new Set()
563
+ });
549
564
  }
550
565
  function callerTraceMetadata(traceId) {
551
- const recorded = callerMetadata.get(traceId);
552
- return recorded ? { ...recorded } : void 0;
566
+ const record = findRecord(traceId);
567
+ if (!record || Object.keys(record.caller).length === 0) {
568
+ return void 0;
569
+ }
570
+ return { ...record.caller };
553
571
  }
554
- function forgetTraceMetadata(traceId) {
555
- callerMetadata.delete(traceId);
556
- derivedMetadata.delete(traceId);
572
+ function retireTraceMetadata(traceId) {
573
+ const record = activeRecords.get(traceId);
574
+ if (!record) {
575
+ return;
576
+ }
577
+ activeRecords.delete(traceId);
578
+ completedRecords.set(traceId, record);
579
+ while (completedRecords.size > RETAINED_COMPLETED_TRACES) {
580
+ const oldest = completedRecords.keys().next();
581
+ if (oldest.done) {
582
+ return;
583
+ }
584
+ completedRecords.delete(oldest.value);
585
+ }
586
+ }
587
+ function warnAboutShadowedKeys(traceId, record) {
588
+ const shadowed = Object.keys(record.derived).filter(
589
+ (key) => key in record.caller && record.caller[key] !== record.derived[key] && !record.warnedKeys.has(key)
590
+ ).sort();
591
+ if (shadowed.length === 0) {
592
+ return;
593
+ }
594
+ for (const key of shadowed) {
595
+ record.warnedKeys.add(key);
596
+ }
597
+ warn(
598
+ `trace metadata key(s) ${shadowed.join(", ")} on trace ${traceId} were set both by the caller and by an integration's own trace export; the caller's value is the one kept on the trace.`
599
+ );
557
600
  }
558
601
  function mergeCallerMetadataIntoTracePayload(payload) {
559
602
  const externalTrace = payload.externalTrace;
@@ -565,35 +608,31 @@ function mergeCallerMetadataIntoTracePayload(payload) {
565
608
  if (typeof traceId !== "string" || traceId === "") {
566
609
  return payload;
567
610
  }
568
- const caller = callerMetadata.get(traceId);
569
- if (!caller) {
611
+ const record = findRecord(traceId);
612
+ if (!record || Object.keys(record.caller).length === 0) {
570
613
  return payload;
571
614
  }
572
- const derived = derivedMetadata.get(traceId) ?? {};
573
615
  const exported = external.metadata;
574
616
  if (typeof exported === "object" && exported !== null) {
575
- Object.assign(derived, exported);
576
- }
577
- derivedMetadata.set(traceId, derived);
578
- const shadowed = Object.keys(derived).filter((key) => key in caller && caller[key] !== derived[key]).sort();
579
- if (shadowed.length > 0) {
580
- warnOnce(
581
- `trace-metadata-shadowed:${shadowed.join(",")}`,
582
- `trace metadata key(s) ${shadowed.join(", ")} were set both by the caller and by an integration's own trace export; the caller's value is the one kept on the trace.`
583
- );
617
+ Object.assign(record.derived, exported);
584
618
  }
619
+ warnAboutShadowedKeys(traceId, record);
585
620
  return {
586
621
  ...payload,
587
- externalTrace: { ...external, metadata: { ...derived, ...caller } }
622
+ externalTrace: {
623
+ ...external,
624
+ metadata: { ...record.derived, ...record.caller }
625
+ }
588
626
  };
589
627
  }
590
- var callerMetadata, derivedMetadata;
628
+ var RETAINED_COMPLETED_TRACES, activeRecords, completedRecords;
591
629
  var init_traceMetadata = __esm({
592
630
  "src/traceMetadata.ts"() {
593
631
  "use strict";
594
632
  init_warnOnce();
595
- callerMetadata = /* @__PURE__ */ new Map();
596
- derivedMetadata = /* @__PURE__ */ new Map();
633
+ RETAINED_COMPLETED_TRACES = 128;
634
+ activeRecords = /* @__PURE__ */ new Map();
635
+ completedRecords = /* @__PURE__ */ new Map();
597
636
  }
598
637
  });
599
638
 
@@ -7458,7 +7497,7 @@ var Bitfab = class {
7458
7497
  }
7459
7498
  });
7460
7499
  activeTraceStates.delete(traceId);
7461
- forgetTraceMetadata(traceId);
7500
+ retireTraceMetadata(traceId);
7462
7501
  }
7463
7502
  } catch {
7464
7503
  }
@@ -7651,7 +7690,7 @@ var Bitfab = class {
7651
7690
  } catch (setupError) {
7652
7691
  if (registeredTraceId) {
7653
7692
  activeTraceStates.delete(registeredTraceId);
7654
- forgetTraceMetadata(registeredTraceId);
7693
+ retireTraceMetadata(registeredTraceId);
7655
7694
  }
7656
7695
  if (setupError instanceof MixedTracingError) {
7657
7696
  throw setupError;
@@ -8050,7 +8089,7 @@ var Bitfab = class {
8050
8089
  });
8051
8090
  } finally {
8052
8091
  activeTraceStates.delete(traceId);
8053
- forgetTraceMetadata(traceId);
8092
+ retireTraceMetadata(traceId);
8054
8093
  }
8055
8094
  return traceId;
8056
8095
  }
@@ -8096,7 +8135,7 @@ var Bitfab = class {
8096
8135
  await flushTraces2(3e4);
8097
8136
  } finally {
8098
8137
  unrecorded = activeTraceStates.delete(traceId);
8099
- forgetTraceMetadata(traceId);
8138
+ retireTraceMetadata(traceId);
8100
8139
  }
8101
8140
  }
8102
8141
  if (unrecorded) {