@pristine-ts/common 3.0.1 → 3.0.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.
Files changed (36) hide show
  1. package/dist/lib/cjs/managers/event-context.als.browser.js +28 -0
  2. package/dist/lib/cjs/managers/event-context.als.browser.js.map +1 -0
  3. package/dist/lib/cjs/managers/event-context.als.js +12 -0
  4. package/dist/lib/cjs/managers/event-context.als.js.map +1 -0
  5. package/dist/lib/cjs/managers/event-context.manager.js +12 -16
  6. package/dist/lib/cjs/managers/event-context.manager.js.map +1 -1
  7. package/dist/lib/cjs/models/span.model.js +2 -2
  8. package/dist/lib/cjs/models/span.model.js.map +1 -1
  9. package/dist/lib/cjs/models/trace.model.js +2 -2
  10. package/dist/lib/cjs/models/trace.model.js.map +1 -1
  11. package/dist/lib/cjs/utils/utils.js +1 -0
  12. package/dist/lib/cjs/utils/utils.js.map +1 -1
  13. package/dist/lib/cjs/utils/uuid.util.js +46 -0
  14. package/dist/lib/cjs/utils/uuid.util.js.map +1 -0
  15. package/dist/lib/esm/managers/event-context.als.browser.js +25 -0
  16. package/dist/lib/esm/managers/event-context.als.browser.js.map +1 -0
  17. package/dist/lib/esm/managers/event-context.als.js +9 -0
  18. package/dist/lib/esm/managers/event-context.als.js.map +1 -0
  19. package/dist/lib/esm/managers/event-context.manager.js +12 -16
  20. package/dist/lib/esm/managers/event-context.manager.js.map +1 -1
  21. package/dist/lib/esm/models/span.model.js +2 -2
  22. package/dist/lib/esm/models/span.model.js.map +1 -1
  23. package/dist/lib/esm/models/trace.model.js +2 -2
  24. package/dist/lib/esm/models/trace.model.js.map +1 -1
  25. package/dist/lib/esm/utils/utils.js +1 -0
  26. package/dist/lib/esm/utils/utils.js.map +1 -1
  27. package/dist/lib/esm/utils/uuid.util.js +42 -0
  28. package/dist/lib/esm/utils/uuid.util.js.map +1 -0
  29. package/dist/lib/tsconfig.cjs.tsbuildinfo +1 -1
  30. package/dist/lib/tsconfig.tsbuildinfo +1 -1
  31. package/dist/types/managers/event-context.als.browser.d.ts +2 -0
  32. package/dist/types/managers/event-context.als.d.ts +19 -0
  33. package/dist/types/managers/event-context.manager.d.ts +5 -7
  34. package/dist/types/utils/utils.d.ts +1 -0
  35. package/dist/types/utils/uuid.util.d.ts +15 -0
  36. package/package.json +6 -2
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.eventContextStorage = void 0;
4
+ /**
5
+ * Browser substitute for the Node `AsyncLocalStorage`-backed {@link EventContextStorage}.
6
+ * Browsers have no `async_hooks`, so this keeps the active `EventContext` in a single
7
+ * synchronous slot: it correctly scopes — and restores — the context for the synchronous
8
+ * portion of `run()` (including nested `run()` calls), but, unlike Node's
9
+ * `AsyncLocalStorage`, it cannot propagate across `await` boundaries, which no browser API
10
+ * supports.
11
+ */
12
+ class SynchronousEventContextStorage {
13
+ run(store, callback) {
14
+ const previous = this.store;
15
+ this.store = store;
16
+ try {
17
+ return callback();
18
+ }
19
+ finally {
20
+ this.store = previous;
21
+ }
22
+ }
23
+ getStore() {
24
+ return this.store;
25
+ }
26
+ }
27
+ exports.eventContextStorage = new SynchronousEventContextStorage();
28
+ //# sourceMappingURL=event-context.als.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-context.als.browser.js","sourceRoot":"","sources":["../../../../src/managers/event-context.als.browser.ts"],"names":[],"mappings":";;;AAGA;;;;;;;GAOG;AACH,MAAM,8BAA8B;IAGlC,GAAG,CAAI,KAAmB,EAAE,QAAiB;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC;YACH,OAAO,QAAQ,EAAE,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACxB,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAEY,QAAA,mBAAmB,GAAwB,IAAI,8BAA8B,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.eventContextStorage = void 0;
4
+ const async_hooks_1 = require("async_hooks");
5
+ /**
6
+ * Process-wide storage backing the active `EventContext`. A single instance is essential —
7
+ * multiple `AsyncLocalStorage` instances would each track their own propagation chain and
8
+ * contexts wouldn't be visible across them. On Node this propagates the context across
9
+ * `await` boundaries, `Promise.all`, `setImmediate`, and the rest of the async machinery.
10
+ */
11
+ exports.eventContextStorage = new async_hooks_1.AsyncLocalStorage();
12
+ //# sourceMappingURL=event-context.als.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-context.als.js","sourceRoot":"","sources":["../../../../src/managers/event-context.als.ts"],"names":[],"mappings":";;;AAAA,6CAA8C;AAe9C;;;;;GAKG;AACU,QAAA,mBAAmB,GAAwB,IAAI,+BAAiB,EAAgB,CAAC"}
@@ -8,8 +8,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var EventContextManager_1;
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.EventContextManager = void 0;
11
- const async_hooks_1 = require("async_hooks");
12
11
  const tsyringe_1 = require("tsyringe");
12
+ const event_context_als_1 = require("./event-context.als");
13
13
  /**
14
14
  * Owns the `AsyncLocalStorage` instance that propagates the active `EventContext`
15
15
  * across `await` boundaries, `Promise.all`, `setImmediate`, and the rest of Node's
@@ -25,21 +25,20 @@ const tsyringe_1 = require("tsyringe");
25
25
  * Captures the current context and returns a wrapped function that restores it
26
26
  * on call.
27
27
  *
28
- * Why static state inside an `@injectable()` class: the `AsyncLocalStorage` instance
29
- * itself must be a single process-wide singleton multiple instances would each track
30
- * their own propagation chain and contexts wouldn't be visible across them. Making the
31
- * ALS `private static readonly` while keeping the class `@injectable()` lets DI consumers
32
- * resolve it normally (and substitute fakes in tests) while the underlying state stays
33
- * shared and consistent.
28
+ * The backing storage lives in `./event-context.als` (a single process-wide
29
+ * `AsyncLocalStorage`) rather than being constructed here, so a browser build can swap it
30
+ * for a synchronous shim `async_hooks` is Node-only. Keeping the storage shared while the
31
+ * class stays `@injectable()` lets DI consumers resolve the manager normally (and substitute
32
+ * fakes in tests) while the underlying state stays shared and consistent.
34
33
  */
35
34
  let EventContextManager = EventContextManager_1 = class EventContextManager {
36
35
  run(ctx, fn) {
37
- return EventContextManager_1.als.run(ctx, fn);
36
+ return event_context_als_1.eventContextStorage.run(ctx, fn);
38
37
  }
39
38
  /** Returns the active `EventContext`, or `undefined` if no context is installed
40
39
  * (i.e. we're outside any `run()` call). */
41
40
  current() {
42
- return EventContextManager_1.als.getStore();
41
+ return event_context_als_1.eventContextStorage.getStore();
43
42
  }
44
43
  /** Convenience: the `eventId` of the active context, or `undefined`. */
45
44
  eventId() {
@@ -74,15 +73,14 @@ let EventContextManager = EventContextManager_1 = class EventContextManager {
74
73
  const ctx = this.current();
75
74
  if (ctx === undefined)
76
75
  return fn;
77
- const als = EventContextManager_1.als;
78
- return ((...args) => als.run(ctx, () => fn(...args)));
76
+ return ((...args) => event_context_als_1.eventContextStorage.run(ctx, () => fn(...args)));
79
77
  }
80
78
  // ── Static convenience mirrors. ────────────────────────────────────────────────
81
79
  // For callers that don't want DI noise (e.g. utility code, decorators, helpers
82
80
  // that don't have a constructor to inject through). All forwarding to the same
83
- // shared ALS instance.
81
+ // shared storage instance.
84
82
  static current() {
85
- return EventContextManager_1.als.getStore();
83
+ return event_context_als_1.eventContextStorage.getStore();
86
84
  }
87
85
  static eventId() {
88
86
  var _a;
@@ -104,12 +102,10 @@ let EventContextManager = EventContextManager_1 = class EventContextManager {
104
102
  const ctx = EventContextManager_1.current();
105
103
  if (ctx === undefined)
106
104
  return fn;
107
- const als = EventContextManager_1.als;
108
- return ((...args) => als.run(ctx, () => fn(...args)));
105
+ return ((...args) => event_context_als_1.eventContextStorage.run(ctx, () => fn(...args)));
109
106
  }
110
107
  };
111
108
  exports.EventContextManager = EventContextManager;
112
- EventContextManager.als = new async_hooks_1.AsyncLocalStorage();
113
109
  exports.EventContextManager = EventContextManager = EventContextManager_1 = __decorate([
114
110
  (0, tsyringe_1.injectable)()
115
111
  ], EventContextManager);
@@ -1 +1 @@
1
- {"version":3,"file":"event-context.manager.js","sourceRoot":"","sources":["../../../../src/managers/event-context.manager.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,6CAA8C;AAC9C,uCAAyD;AAIzD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEI,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAU9B,GAAG,CAAI,GAAiB,EAAE,EAAwB;QAChD,OAAO,qBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;iDAC6C;IAC7C,OAAO;QACL,OAAO,qBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;IAED,wEAAwE;IACxE,OAAO;;QACL,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IACjC,CAAC;IAED,wEAAwE;IACxE,OAAO;;QACL,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IACjC,CAAC;IAED,qEAAqE;IACrE,SAAS;;QACP,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,SAAS,CAAC;IACnC,CAAC;IAED,sFAAsF;IACtF,cAAc;;QACZ,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,cAAc,CAAC;IACxC,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,CAAoC,EAAK;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,qBAAmB,CAAC,GAAG,CAAC;QACpC,OAAO,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAM,CAAC;IACpE,CAAC;IAED,kFAAkF;IAClF,+EAA+E;IAC/E,+EAA+E;IAC/E,uBAAuB;IAEvB,MAAM,CAAC,OAAO;QACZ,OAAO,qBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,OAAO;;QACZ,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,OAAO;;QACZ,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,SAAS;;QACd,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,SAAS,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,cAAc;;QACnB,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,cAAc,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,IAAI,CAAoC,EAAK;QAClD,MAAM,GAAG,GAAG,qBAAmB,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,qBAAmB,CAAC,GAAG,CAAC;QACpC,OAAO,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAM,CAAC;IACpE,CAAC;;AAtFU,kDAAmB;AACN,uBAAG,GAAG,IAAI,+BAAiB,EAAgB,AAAxC,CAAyC;8BADzD,mBAAmB;IAD/B,IAAA,qBAAU,GAAE;GACA,mBAAmB,CAuF/B"}
1
+ {"version":3,"file":"event-context.manager.js","sourceRoot":"","sources":["../../../../src/managers/event-context.manager.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,uCAAyD;AAGzD,2DAAwD;AAExD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEI,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAQ9B,GAAG,CAAI,GAAiB,EAAE,EAAwB;QAChD,OAAO,uCAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;iDAC6C;IAC7C,OAAO;QACL,OAAO,uCAAmB,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC;IAED,wEAAwE;IACxE,OAAO;;QACL,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IACjC,CAAC;IAED,wEAAwE;IACxE,OAAO;;QACL,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IACjC,CAAC;IAED,qEAAqE;IACrE,SAAS;;QACP,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,SAAS,CAAC;IACnC,CAAC;IAED,sFAAsF;IACtF,cAAc;;QACZ,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,cAAc,CAAC;IACxC,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,CAAoC,EAAK;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,uCAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAM,CAAC;IACpF,CAAC;IAED,kFAAkF;IAClF,+EAA+E;IAC/E,+EAA+E;IAC/E,2BAA2B;IAE3B,MAAM,CAAC,OAAO;QACZ,OAAO,uCAAmB,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,OAAO;;QACZ,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,OAAO;;QACZ,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,SAAS;;QACd,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,SAAS,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,cAAc;;QACnB,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,cAAc,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,IAAI,CAAoC,EAAK;QAClD,MAAM,GAAG,GAAG,qBAAmB,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,uCAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAM,CAAC;IACpF,CAAC;CACF,CAAA;AAnFY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,qBAAU,GAAE;GACA,mBAAmB,CAmF/B"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Span = void 0;
4
- const crypto_1 = require("crypto");
4
+ const uuid_util_1 = require("../utils/uuid.util");
5
5
  /**
6
6
  * This model represents a span.
7
7
  */
@@ -40,7 +40,7 @@ class Span {
40
40
  * Whether or not the span is in progress, meaning it has not ended.
41
41
  */
42
42
  this.inProgress = true;
43
- this.id = id !== null && id !== void 0 ? id : (0, crypto_1.randomUUID)();
43
+ this.id = id !== null && id !== void 0 ? id : uuid_util_1.UuidGenerator.generate();
44
44
  this.context = context !== null && context !== void 0 ? context : {};
45
45
  }
46
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"span.model.js","sourceRoot":"","sources":["../../../../src/models/span.model.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAKlC;;GAEG;AACH,MAAa,IAAI;IA0Df;;;;;OAKG;IACH,YAA0B,OAAe,EAAE,EAAW,EAAE,OAAmC;QAAjE,YAAO,GAAP,OAAO,CAAQ;QA/CzC;;WAEG;QACI,cAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAYtC;;WAEG;QACI,aAAQ,GAAW,EAAE,CAAC;QAE7B;;;;;;;;WAQG;QACI,YAAO,GAAiB,EAAE,CAAC;QAElC;;WAEG;QACI,YAAO,GAA8B,EAAE,CAAC;QAE/C;;WAEG;QACI,eAAU,GAAG,IAAI,CAAC;QASvB,IAAI,CAAC,EAAE,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,IAAA,mBAAU,GAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,WAAW;;QAChB,OAAO,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,GAAG;;QACR,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,KAAY;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,IAAU;QACxB,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpF,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACF;AA3GD,oBA2GC"}
1
+ {"version":3,"file":"span.model.js","sourceRoot":"","sources":["../../../../src/models/span.model.ts"],"names":[],"mappings":";;;AAAA,kDAAiD;AAKjD;;GAEG;AACH,MAAa,IAAI;IA0Df;;;;;OAKG;IACH,YAA0B,OAAe,EAAE,EAAW,EAAE,OAAmC;QAAjE,YAAO,GAAP,OAAO,CAAQ;QA/CzC;;WAEG;QACI,cAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAYtC;;WAEG;QACI,aAAQ,GAAW,EAAE,CAAC;QAE7B;;;;;;;;WAQG;QACI,YAAO,GAAiB,EAAE,CAAC;QAElC;;WAEG;QACI,YAAO,GAA8B,EAAE,CAAC;QAE/C;;WAEG;QACI,eAAU,GAAG,IAAI,CAAC;QASvB,IAAI,CAAC,EAAE,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,yBAAa,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,WAAW;;QAChB,OAAO,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,GAAG;;QACR,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,KAAY;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,IAAU;QACxB,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpF,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACF;AA3GD,oBA2GC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Trace = void 0;
4
- const crypto_1 = require("crypto");
4
+ const uuid_util_1 = require("../utils/uuid.util");
5
5
  /**
6
6
  * This model represents a trace.
7
7
  */
@@ -31,7 +31,7 @@ class Trace {
31
31
  * Whether or not the trace was ended.
32
32
  */
33
33
  this.hasEnded = false;
34
- this.id = id !== null && id !== void 0 ? id : (0, crypto_1.randomUUID)();
34
+ this.id = id !== null && id !== void 0 ? id : uuid_util_1.UuidGenerator.generate();
35
35
  this.context = context !== null && context !== void 0 ? context : {};
36
36
  }
37
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"trace.model.js","sourceRoot":"","sources":["../../../../src/models/trace.model.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAGlC;;GAEG;AACH,MAAa,KAAK;IAuChB;;;;OAIG;IACH,YAAmB,EAAW,EAAE,OAAmC;QAtCnE;;WAEG;QACI,cAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAYtC;;;;;WAKG;QACI,mBAAc,GAAkC,EAAE,CAAC;QAE1D;;WAEG;QACI,YAAO,GAA+B,EAAE,CAAC;QAEhD;;WAEG;QACI,aAAQ,GAAY,KAAK,CAAC;QAQ/B,IAAI,CAAC,EAAE,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,IAAA,mBAAU,GAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,WAAW;;QAChB,OAAO,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IACvD,CAAC;CACF;AAvDD,sBAuDC"}
1
+ {"version":3,"file":"trace.model.js","sourceRoot":"","sources":["../../../../src/models/trace.model.ts"],"names":[],"mappings":";;;AAAA,kDAAiD;AAGjD;;GAEG;AACH,MAAa,KAAK;IAuChB;;;;OAIG;IACH,YAAmB,EAAW,EAAE,OAAmC;QAtCnE;;WAEG;QACI,cAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAYtC;;;;;WAKG;QACI,mBAAc,GAAkC,EAAE,CAAC;QAE1D;;WAEG;QACI,YAAO,GAA+B,EAAE,CAAC;QAEhD;;WAEG;QACI,aAAQ,GAAY,KAAK,CAAC;QAQ/B,IAAI,CAAC,EAAE,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,yBAAa,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,WAAW;;QAChB,OAAO,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IACvD,CAAC;CACF;AAvDD,sBAuDC"}
@@ -18,4 +18,5 @@ __exportStar(require("./date.util"), exports);
18
18
  __exportStar(require("./enum.util"), exports);
19
19
  __exportStar(require("./metadata.util"), exports);
20
20
  __exportStar(require("./object.util"), exports);
21
+ __exportStar(require("./uuid.util"), exports);
21
22
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC;AAChC,gDAA8B"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC;AAChC,gDAA8B;AAC9B,8CAA4B"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UuidGenerator = void 0;
4
+ /**
5
+ * Cross-runtime UUID generation. Replaces Node's `crypto.randomUUID()` with the Web Crypto
6
+ * API exposed on `globalThis.crypto`, which is available in browsers, Node.js (19+), Deno,
7
+ * Bun and Cloudflare Workers — keeping `@pristine-ts/common` importable outside Node without
8
+ * pulling in the Node-only `crypto` module.
9
+ */
10
+ class UuidGenerator {
11
+ /**
12
+ * Returns an RFC 4122 version 4 UUID. Prefers the native `crypto.randomUUID()`, then
13
+ * derives one from `crypto.getRandomValues()`, and only as a last resort (no Web Crypto at
14
+ * all) falls back to `Math.random()` — which is NOT cryptographically secure but keeps
15
+ * exotic runtimes working rather than throwing.
16
+ */
17
+ static generate() {
18
+ const webCrypto = globalThis.crypto;
19
+ if (typeof (webCrypto === null || webCrypto === void 0 ? void 0 : webCrypto.randomUUID) === "function") {
20
+ return webCrypto.randomUUID();
21
+ }
22
+ if (typeof (webCrypto === null || webCrypto === void 0 ? void 0 : webCrypto.getRandomValues) === "function") {
23
+ const bytes = webCrypto.getRandomValues(new Uint8Array(16));
24
+ // Set the version (4) and variant (RFC 4122) bits.
25
+ bytes[6] = (bytes[6] & 0x0f) | 0x40;
26
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
27
+ const hex = [];
28
+ for (let i = 0; i < bytes.length; i++) {
29
+ hex.push(bytes[i].toString(16).padStart(2, "0"));
30
+ }
31
+ return (hex.slice(0, 4).join("") + "-" +
32
+ hex.slice(4, 6).join("") + "-" +
33
+ hex.slice(6, 8).join("") + "-" +
34
+ hex.slice(8, 10).join("") + "-" +
35
+ hex.slice(10, 16).join(""));
36
+ }
37
+ // Last-resort, non-cryptographic fallback.
38
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (char) => {
39
+ const random = (Math.random() * 16) | 0;
40
+ const value = char === "x" ? random : (random & 0x3) | 0x8;
41
+ return value.toString(16);
42
+ });
43
+ }
44
+ }
45
+ exports.UuidGenerator = UuidGenerator;
46
+ //# sourceMappingURL=uuid.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.util.js","sourceRoot":"","sources":["../../../../src/utils/uuid.util.ts"],"names":[],"mappings":";;;AASA;;;;;GAKG;AACH,MAAa,aAAa;IACxB;;;;;OAKG;IACI,MAAM,CAAC,QAAQ;QACpB,MAAM,SAAS,GAA+B,UAAyC,CAAC,MAAM,CAAC;QAE/F,IAAI,OAAO,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,CAAA,KAAK,UAAU,EAAE,CAAC;YAChD,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,OAAO,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,eAAe,CAAA,KAAK,UAAU,EAAE,CAAC;YACrD,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5D,mDAAmD;YACnD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACpC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAEpC,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACnD,CAAC;YAED,OAAO,CACL,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG;gBAC9B,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG;gBAC9B,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG;gBAC9B,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG;gBAC/B,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAC3B,CAAC;QACJ,CAAC;QAED,2CAA2C;QAC3C,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACtE,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YAC3D,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAzCD,sCAyCC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Browser substitute for the Node `AsyncLocalStorage`-backed {@link EventContextStorage}.
3
+ * Browsers have no `async_hooks`, so this keeps the active `EventContext` in a single
4
+ * synchronous slot: it correctly scopes — and restores — the context for the synchronous
5
+ * portion of `run()` (including nested `run()` calls), but, unlike Node's
6
+ * `AsyncLocalStorage`, it cannot propagate across `await` boundaries, which no browser API
7
+ * supports.
8
+ */
9
+ class SynchronousEventContextStorage {
10
+ run(store, callback) {
11
+ const previous = this.store;
12
+ this.store = store;
13
+ try {
14
+ return callback();
15
+ }
16
+ finally {
17
+ this.store = previous;
18
+ }
19
+ }
20
+ getStore() {
21
+ return this.store;
22
+ }
23
+ }
24
+ export const eventContextStorage = new SynchronousEventContextStorage();
25
+ //# sourceMappingURL=event-context.als.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-context.als.browser.js","sourceRoot":"","sources":["../../../../src/managers/event-context.als.browser.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,8BAA8B;IAGlC,GAAG,CAAI,KAAmB,EAAE,QAAiB;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC;YACH,OAAO,QAAQ,EAAE,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACxB,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,8BAA8B,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { AsyncLocalStorage } from "async_hooks";
2
+ /**
3
+ * Process-wide storage backing the active `EventContext`. A single instance is essential —
4
+ * multiple `AsyncLocalStorage` instances would each track their own propagation chain and
5
+ * contexts wouldn't be visible across them. On Node this propagates the context across
6
+ * `await` boundaries, `Promise.all`, `setImmediate`, and the rest of the async machinery.
7
+ */
8
+ export const eventContextStorage = new AsyncLocalStorage();
9
+ //# sourceMappingURL=event-context.als.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-context.als.js","sourceRoot":"","sources":["../../../../src/managers/event-context.als.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAe9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,iBAAiB,EAAgB,CAAC"}
@@ -5,8 +5,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  var EventContextManager_1;
8
- import { AsyncLocalStorage } from "async_hooks";
9
8
  import { injectable } from "tsyringe";
9
+ import { eventContextStorage } from "./event-context.als";
10
10
  /**
11
11
  * Owns the `AsyncLocalStorage` instance that propagates the active `EventContext`
12
12
  * across `await` boundaries, `Promise.all`, `setImmediate`, and the rest of Node's
@@ -22,21 +22,20 @@ import { injectable } from "tsyringe";
22
22
  * Captures the current context and returns a wrapped function that restores it
23
23
  * on call.
24
24
  *
25
- * Why static state inside an `@injectable()` class: the `AsyncLocalStorage` instance
26
- * itself must be a single process-wide singleton multiple instances would each track
27
- * their own propagation chain and contexts wouldn't be visible across them. Making the
28
- * ALS `private static readonly` while keeping the class `@injectable()` lets DI consumers
29
- * resolve it normally (and substitute fakes in tests) while the underlying state stays
30
- * shared and consistent.
25
+ * The backing storage lives in `./event-context.als` (a single process-wide
26
+ * `AsyncLocalStorage`) rather than being constructed here, so a browser build can swap it
27
+ * for a synchronous shim `async_hooks` is Node-only. Keeping the storage shared while the
28
+ * class stays `@injectable()` lets DI consumers resolve the manager normally (and substitute
29
+ * fakes in tests) while the underlying state stays shared and consistent.
31
30
  */
32
31
  let EventContextManager = EventContextManager_1 = class EventContextManager {
33
32
  run(ctx, fn) {
34
- return EventContextManager_1.als.run(ctx, fn);
33
+ return eventContextStorage.run(ctx, fn);
35
34
  }
36
35
  /** Returns the active `EventContext`, or `undefined` if no context is installed
37
36
  * (i.e. we're outside any `run()` call). */
38
37
  current() {
39
- return EventContextManager_1.als.getStore();
38
+ return eventContextStorage.getStore();
40
39
  }
41
40
  /** Convenience: the `eventId` of the active context, or `undefined`. */
42
41
  eventId() {
@@ -71,15 +70,14 @@ let EventContextManager = EventContextManager_1 = class EventContextManager {
71
70
  const ctx = this.current();
72
71
  if (ctx === undefined)
73
72
  return fn;
74
- const als = EventContextManager_1.als;
75
- return ((...args) => als.run(ctx, () => fn(...args)));
73
+ return ((...args) => eventContextStorage.run(ctx, () => fn(...args)));
76
74
  }
77
75
  // ── Static convenience mirrors. ────────────────────────────────────────────────
78
76
  // For callers that don't want DI noise (e.g. utility code, decorators, helpers
79
77
  // that don't have a constructor to inject through). All forwarding to the same
80
- // shared ALS instance.
78
+ // shared storage instance.
81
79
  static current() {
82
- return EventContextManager_1.als.getStore();
80
+ return eventContextStorage.getStore();
83
81
  }
84
82
  static eventId() {
85
83
  var _a;
@@ -101,11 +99,9 @@ let EventContextManager = EventContextManager_1 = class EventContextManager {
101
99
  const ctx = EventContextManager_1.current();
102
100
  if (ctx === undefined)
103
101
  return fn;
104
- const als = EventContextManager_1.als;
105
- return ((...args) => als.run(ctx, () => fn(...args)));
102
+ return ((...args) => eventContextStorage.run(ctx, () => fn(...args)));
106
103
  }
107
104
  };
108
- EventContextManager.als = new AsyncLocalStorage();
109
105
  EventContextManager = EventContextManager_1 = __decorate([
110
106
  injectable()
111
107
  ], EventContextManager);
@@ -1 +1 @@
1
- {"version":3,"file":"event-context.manager.js","sourceRoot":"","sources":["../../../../src/managers/event-context.manager.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAsB,UAAU,EAAC,MAAM,UAAU,CAAC;AAIzD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEI,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAU9B,GAAG,CAAI,GAAiB,EAAE,EAAwB;QAChD,OAAO,qBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;iDAC6C;IAC7C,OAAO;QACL,OAAO,qBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;IAED,wEAAwE;IACxE,OAAO;;QACL,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IACjC,CAAC;IAED,wEAAwE;IACxE,OAAO;;QACL,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IACjC,CAAC;IAED,qEAAqE;IACrE,SAAS;;QACP,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,SAAS,CAAC;IACnC,CAAC;IAED,sFAAsF;IACtF,cAAc;;QACZ,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,cAAc,CAAC;IACxC,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,CAAoC,EAAK;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,qBAAmB,CAAC,GAAG,CAAC;QACpC,OAAO,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAM,CAAC;IACpE,CAAC;IAED,kFAAkF;IAClF,+EAA+E;IAC/E,+EAA+E;IAC/E,uBAAuB;IAEvB,MAAM,CAAC,OAAO;QACZ,OAAO,qBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,OAAO;;QACZ,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,OAAO;;QACZ,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,SAAS;;QACd,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,SAAS,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,cAAc;;QACnB,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,cAAc,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,IAAI,CAAoC,EAAK;QAClD,MAAM,GAAG,GAAG,qBAAmB,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,qBAAmB,CAAC,GAAG,CAAC;QACpC,OAAO,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAM,CAAC;IACpE,CAAC;;AArFuB,uBAAG,GAAG,IAAI,iBAAiB,EAAgB,AAAxC,CAAyC;AADzD,mBAAmB;IAD/B,UAAU,EAAE;GACA,mBAAmB,CAuF/B"}
1
+ {"version":3,"file":"event-context.manager.js","sourceRoot":"","sources":["../../../../src/managers/event-context.manager.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAsB,UAAU,EAAC,MAAM,UAAU,CAAC;AAGzD,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEI,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAQ9B,GAAG,CAAI,GAAiB,EAAE,EAAwB;QAChD,OAAO,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;iDAC6C;IAC7C,OAAO;QACL,OAAO,mBAAmB,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC;IAED,wEAAwE;IACxE,OAAO;;QACL,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IACjC,CAAC;IAED,wEAAwE;IACxE,OAAO;;QACL,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IACjC,CAAC;IAED,qEAAqE;IACrE,SAAS;;QACP,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,SAAS,CAAC;IACnC,CAAC;IAED,sFAAsF;IACtF,cAAc;;QACZ,OAAO,MAAA,IAAI,CAAC,OAAO,EAAE,0CAAE,cAAc,CAAC;IACxC,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,CAAoC,EAAK;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAM,CAAC;IACpF,CAAC;IAED,kFAAkF;IAClF,+EAA+E;IAC/E,+EAA+E;IAC/E,2BAA2B;IAE3B,MAAM,CAAC,OAAO;QACZ,OAAO,mBAAmB,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,OAAO;;QACZ,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,OAAO;;QACZ,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,SAAS;;QACd,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,SAAS,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,cAAc;;QACnB,OAAO,MAAA,qBAAmB,CAAC,OAAO,EAAE,0CAAE,cAAc,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,IAAI,CAAoC,EAAK;QAClD,MAAM,GAAG,GAAG,qBAAmB,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAM,CAAC;IACpF,CAAC;CACF,CAAA;AAnFY,mBAAmB;IAD/B,UAAU,EAAE;GACA,mBAAmB,CAmF/B"}
@@ -1,4 +1,4 @@
1
- import { randomUUID } from "crypto";
1
+ import { UuidGenerator } from "../utils/uuid.util";
2
2
  /**
3
3
  * This model represents a span.
4
4
  */
@@ -37,7 +37,7 @@ export class Span {
37
37
  * Whether or not the span is in progress, meaning it has not ended.
38
38
  */
39
39
  this.inProgress = true;
40
- this.id = id !== null && id !== void 0 ? id : randomUUID();
40
+ this.id = id !== null && id !== void 0 ? id : UuidGenerator.generate();
41
41
  this.context = context !== null && context !== void 0 ? context : {};
42
42
  }
43
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"span.model.js","sourceRoot":"","sources":["../../../../src/models/span.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,QAAQ,CAAC;AAKlC;;GAEG;AACH,MAAM,OAAO,IAAI;IA0Df;;;;;OAKG;IACH,YAA0B,OAAe,EAAE,EAAW,EAAE,OAAmC;QAAjE,YAAO,GAAP,OAAO,CAAQ;QA/CzC;;WAEG;QACI,cAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAYtC;;WAEG;QACI,aAAQ,GAAW,EAAE,CAAC;QAE7B;;;;;;;;WAQG;QACI,YAAO,GAAiB,EAAE,CAAC;QAElC;;WAEG;QACI,YAAO,GAA8B,EAAE,CAAC;QAE/C;;WAEG;QACI,eAAU,GAAG,IAAI,CAAC;QASvB,IAAI,CAAC,EAAE,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,WAAW;;QAChB,OAAO,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,GAAG;;QACR,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,KAAY;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,IAAU;QACxB,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpF,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"span.model.js","sourceRoot":"","sources":["../../../../src/models/span.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAKjD;;GAEG;AACH,MAAM,OAAO,IAAI;IA0Df;;;;;OAKG;IACH,YAA0B,OAAe,EAAE,EAAW,EAAE,OAAmC;QAAjE,YAAO,GAAP,OAAO,CAAQ;QA/CzC;;WAEG;QACI,cAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAYtC;;WAEG;QACI,aAAQ,GAAW,EAAE,CAAC;QAE7B;;;;;;;;WAQG;QACI,YAAO,GAAiB,EAAE,CAAC;QAElC;;WAEG;QACI,YAAO,GAA8B,EAAE,CAAC;QAE/C;;WAEG;QACI,eAAU,GAAG,IAAI,CAAC;QASvB,IAAI,CAAC,EAAE,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,WAAW;;QAChB,OAAO,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,GAAG;;QACR,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,KAAY;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,IAAU;QACxB,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpF,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { randomUUID } from "crypto";
1
+ import { UuidGenerator } from "../utils/uuid.util";
2
2
  /**
3
3
  * This model represents a trace.
4
4
  */
@@ -28,7 +28,7 @@ export class Trace {
28
28
  * Whether or not the trace was ended.
29
29
  */
30
30
  this.hasEnded = false;
31
- this.id = id !== null && id !== void 0 ? id : randomUUID();
31
+ this.id = id !== null && id !== void 0 ? id : UuidGenerator.generate();
32
32
  this.context = context !== null && context !== void 0 ? context : {};
33
33
  }
34
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"trace.model.js","sourceRoot":"","sources":["../../../../src/models/trace.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,QAAQ,CAAC;AAGlC;;GAEG;AACH,MAAM,OAAO,KAAK;IAuChB;;;;OAIG;IACH,YAAmB,EAAW,EAAE,OAAmC;QAtCnE;;WAEG;QACI,cAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAYtC;;;;;WAKG;QACI,mBAAc,GAAkC,EAAE,CAAC;QAE1D;;WAEG;QACI,YAAO,GAA+B,EAAE,CAAC;QAEhD;;WAEG;QACI,aAAQ,GAAY,KAAK,CAAC;QAQ/B,IAAI,CAAC,EAAE,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,WAAW;;QAChB,OAAO,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IACvD,CAAC;CACF"}
1
+ {"version":3,"file":"trace.model.js","sourceRoot":"","sources":["../../../../src/models/trace.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAGjD;;GAEG;AACH,MAAM,OAAO,KAAK;IAuChB;;;;OAIG;IACH,YAAmB,EAAW,EAAE,OAAmC;QAtCnE;;WAEG;QACI,cAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAYtC;;;;;WAKG;QACI,mBAAc,GAAkC,EAAE,CAAC;QAE1D;;WAEG;QACI,YAAO,GAA+B,EAAE,CAAC;QAEhD;;WAEG;QACI,aAAQ,GAAY,KAAK,CAAC;QAQ/B,IAAI,CAAC,EAAE,GAAG,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,WAAW;;QAChB,OAAO,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IACvD,CAAC;CACF"}
@@ -2,4 +2,5 @@ export * from "./date.util";
2
2
  export * from "./enum.util";
3
3
  export * from "./metadata.util";
4
4
  export * from "./object.util";
5
+ export * from "./uuid.util";
5
6
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Cross-runtime UUID generation. Replaces Node's `crypto.randomUUID()` with the Web Crypto
3
+ * API exposed on `globalThis.crypto`, which is available in browsers, Node.js (19+), Deno,
4
+ * Bun and Cloudflare Workers — keeping `@pristine-ts/common` importable outside Node without
5
+ * pulling in the Node-only `crypto` module.
6
+ */
7
+ export class UuidGenerator {
8
+ /**
9
+ * Returns an RFC 4122 version 4 UUID. Prefers the native `crypto.randomUUID()`, then
10
+ * derives one from `crypto.getRandomValues()`, and only as a last resort (no Web Crypto at
11
+ * all) falls back to `Math.random()` — which is NOT cryptographically secure but keeps
12
+ * exotic runtimes working rather than throwing.
13
+ */
14
+ static generate() {
15
+ const webCrypto = globalThis.crypto;
16
+ if (typeof (webCrypto === null || webCrypto === void 0 ? void 0 : webCrypto.randomUUID) === "function") {
17
+ return webCrypto.randomUUID();
18
+ }
19
+ if (typeof (webCrypto === null || webCrypto === void 0 ? void 0 : webCrypto.getRandomValues) === "function") {
20
+ const bytes = webCrypto.getRandomValues(new Uint8Array(16));
21
+ // Set the version (4) and variant (RFC 4122) bits.
22
+ bytes[6] = (bytes[6] & 0x0f) | 0x40;
23
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
24
+ const hex = [];
25
+ for (let i = 0; i < bytes.length; i++) {
26
+ hex.push(bytes[i].toString(16).padStart(2, "0"));
27
+ }
28
+ return (hex.slice(0, 4).join("") + "-" +
29
+ hex.slice(4, 6).join("") + "-" +
30
+ hex.slice(6, 8).join("") + "-" +
31
+ hex.slice(8, 10).join("") + "-" +
32
+ hex.slice(10, 16).join(""));
33
+ }
34
+ // Last-resort, non-cryptographic fallback.
35
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (char) => {
36
+ const random = (Math.random() * 16) | 0;
37
+ const value = char === "x" ? random : (random & 0x3) | 0x8;
38
+ return value.toString(16);
39
+ });
40
+ }
41
+ }
42
+ //# sourceMappingURL=uuid.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.util.js","sourceRoot":"","sources":["../../../../src/utils/uuid.util.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IACxB;;;;;OAKG;IACI,MAAM,CAAC,QAAQ;QACpB,MAAM,SAAS,GAA+B,UAAyC,CAAC,MAAM,CAAC;QAE/F,IAAI,OAAO,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,CAAA,KAAK,UAAU,EAAE,CAAC;YAChD,OAAO,SAAS,CAAC,UAAU,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,OAAO,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,eAAe,CAAA,KAAK,UAAU,EAAE,CAAC;YACrD,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5D,mDAAmD;YACnD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACpC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAEpC,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACnD,CAAC;YAED,OAAO,CACL,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG;gBAC9B,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG;gBAC9B,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG;gBAC9B,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG;gBAC/B,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAC3B,CAAC;QACJ,CAAC;QAED,2CAA2C;QAC3C,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACtE,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YAC3D,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}