@volontariapp/database 3.5.0 → 3.6.0-snap-c3c90e2

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 (34) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/outbox/entities/event-queue.entity.d.ts +1 -0
  3. package/dist/outbox/entities/event-queue.entity.d.ts.map +1 -1
  4. package/dist/outbox/entities/event-queue.entity.js +2 -0
  5. package/dist/outbox/entities/event-queue.entity.js.map +1 -1
  6. package/dist/outbox/entities/jobs-outbox.entity.d.ts +1 -0
  7. package/dist/outbox/entities/jobs-outbox.entity.d.ts.map +1 -1
  8. package/dist/outbox/entities/jobs-outbox.entity.js +2 -0
  9. package/dist/outbox/entities/jobs-outbox.entity.js.map +1 -1
  10. package/dist/outbox/entities/outbox.entity.d.ts +1 -0
  11. package/dist/outbox/entities/outbox.entity.d.ts.map +1 -1
  12. package/dist/outbox/entities/outbox.entity.js +1 -0
  13. package/dist/outbox/entities/outbox.entity.js.map +1 -1
  14. package/dist/outbox/index.d.ts +1 -0
  15. package/dist/outbox/index.d.ts.map +1 -1
  16. package/dist/outbox/index.js +1 -0
  17. package/dist/outbox/index.js.map +1 -1
  18. package/dist/outbox/utils/capture-traceparent.d.ts +3 -0
  19. package/dist/outbox/utils/capture-traceparent.d.ts.map +1 -0
  20. package/dist/outbox/utils/capture-traceparent.js +10 -0
  21. package/dist/outbox/utils/capture-traceparent.js.map +1 -0
  22. package/dist/outbox/utils/index.d.ts +2 -0
  23. package/dist/outbox/utils/index.d.ts.map +1 -0
  24. package/dist/outbox/utils/index.js +2 -0
  25. package/dist/outbox/utils/index.js.map +1 -0
  26. package/dist/test/outbox/entities/span-context.factory.d.ts +7 -0
  27. package/dist/test/outbox/entities/span-context.factory.d.ts.map +1 -0
  28. package/dist/test/outbox/entities/span-context.factory.js +12 -0
  29. package/dist/test/outbox/entities/span-context.factory.js.map +1 -0
  30. package/dist/test/outbox/entities/traceparent-capture.unit.spec.d.ts +2 -0
  31. package/dist/test/outbox/entities/traceparent-capture.unit.spec.d.ts.map +1 -0
  32. package/dist/test/outbox/entities/traceparent-capture.unit.spec.js +107 -0
  33. package/dist/test/outbox/entities/traceparent-capture.unit.spec.js.map +1 -0
  34. package/package.json +4 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Capture the active OpenTelemetry context into `traceparent` when an outbox row is created (`EventQueueEntity.createEvent`, `JobsOutboxEntity.createJob`), and carry it in Redis Stream fields / event JSON and in the BullMQ job envelope. Adds `captureTraceparent` and `normalizeTraceparent`, and optional `traceparent` on `JobEnvelope`, `RedisEventMessage` and `RedisEventStreamFields`. Without an active span the field stays empty.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies []:
12
+ - @volontariapp/messaging@2.25.0
13
+
3
14
  ## 3.5.0
4
15
 
5
16
  ### Minor Changes
@@ -16,6 +16,7 @@ export declare class EventQueueEntity<K extends EventType = EventType, P = Event
16
16
  emitter: string;
17
17
  emitterId: string;
18
18
  traceId?: string;
19
+ traceparent?: string;
19
20
  correlationId?: string;
20
21
  payload: EventPayload<K>;
21
22
  targetServices: Streams[];
@@ -1 +1 @@
1
- {"version":3,"file":"event-queue.entity.d.ts","sourceRoot":"","sources":["../../../src/outbox/entities/event-queue.entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAIpD,qBAAa,gBAAgB,CAC3B,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/B,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CACnB,SAAQ,YAAY,CAAC,CAAC,CAAC;IACvB,OAAO,EAAG,MAAM,CAAC;IAEjB,aAAa,EAAG,MAAM,CAAC;IAEvB,cAAc,EAAE,OAAO,EAAE,CAAM;IAE/B,OAAO,EAAG;QACR,MAAM,CAAC,EAAE,CAAC,CAAC;QACX,KAAK,EAAE,CAAC,CAAC;KACV,CAAC;IAEF,WAAW,CAAC,EAAE,IAAI,CAAC;IAEnB,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,KAAK,EAAE;QACzD,IAAI,EAAE,CAAC,CAAC;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QACzB,cAAc,EAAE,OAAO,EAAE,CAAC;KAC3B,GAAG,gBAAgB,CAAC,CAAC,CAAC;CAiBxB"}
1
+ {"version":3,"file":"event-queue.entity.d.ts","sourceRoot":"","sources":["../../../src/outbox/entities/event-queue.entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAKpD,qBAAa,gBAAgB,CAC3B,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/B,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CACnB,SAAQ,YAAY,CAAC,CAAC,CAAC;IACvB,OAAO,EAAG,MAAM,CAAC;IAEjB,aAAa,EAAG,MAAM,CAAC;IAEvB,cAAc,EAAE,OAAO,EAAE,CAAM;IAE/B,OAAO,EAAG;QACR,MAAM,CAAC,EAAE,CAAC,CAAC;QACX,KAAK,EAAE,CAAC,CAAC;KACV,CAAC;IAEF,WAAW,CAAC,EAAE,IAAI,CAAC;IAEnB,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,KAAK,EAAE;QACzD,IAAI,EAAE,CAAC,CAAC;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QACzB,cAAc,EAAE,OAAO,EAAE,CAAC;KAC3B,GAAG,gBAAgB,CAAC,CAAC,CAAC;CAkBxB"}
@@ -1,6 +1,7 @@
1
1
  import { OutboxEntity } from './outbox.entity.js';
2
2
  import { randomUUID } from 'crypto';
3
3
  import { OutboxStatus } from '../types/outbox.status.js';
4
+ import { captureTraceparent } from '../utils/capture-traceparent.js';
4
5
  export class EventQueueEntity extends OutboxEntity {
5
6
  version;
6
7
  correlationId;
@@ -14,6 +15,7 @@ export class EventQueueEntity extends OutboxEntity {
14
15
  entity.emitter = props.emitter;
15
16
  entity.emitterId = props.emitterId;
16
17
  entity.traceId = props.traceId;
18
+ entity.traceparent = props.traceparent ?? captureTraceparent();
17
19
  entity.correlationId = props.correlationId ?? randomUUID();
18
20
  entity.payload = { after: props.payload };
19
21
  entity.targetServices = props.targetServices;
@@ -1 +1 @@
1
- {"version":3,"file":"event-queue.entity.js","sourceRoot":"","sources":["../../../src/outbox/entities/event-queue.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,OAAO,gBAGX,SAAQ,YAAe;IACvB,OAAO,CAAU;IAEjB,aAAa,CAAU;IAEvB,cAAc,GAAc,EAAE,CAAC;IAE/B,OAAO,CAGL;IAEF,WAAW,CAAQ;IAEnB,MAAM,CAAC,WAAW,CAAkC,KAQnD;QACC,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAK,CAAC;QACzC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACzB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACnC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,UAAU,EAAE,CAAC;QAC3D,MAAM,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1C,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAC7C,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC;QACrC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;QACnB,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"event-queue.entity.js","sourceRoot":"","sources":["../../../src/outbox/entities/event-queue.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,MAAM,OAAO,gBAGX,SAAQ,YAAe;IACvB,OAAO,CAAU;IAEjB,aAAa,CAAU;IAEvB,cAAc,GAAc,EAAE,CAAC;IAE/B,OAAO,CAGL;IAEF,WAAW,CAAQ;IAEnB,MAAM,CAAC,WAAW,CAAkC,KASnD;QACC,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAK,CAAC;QACzC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACzB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACnC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,kBAAkB,EAAE,CAAC;QAC/D,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,UAAU,EAAE,CAAC;QAC3D,MAAM,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1C,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAC7C,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC;QACrC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;QACnB,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -10,6 +10,7 @@ export declare class JobsOutboxEntity<K extends JobType = JobType, P = JobPayloa
10
10
  emitter: string;
11
11
  emitterId: string;
12
12
  traceId?: string;
13
+ traceparent?: string;
13
14
  target: string;
14
15
  payload: JobPayload<K>;
15
16
  scheduledAt?: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"jobs-outbox.entity.d.ts","sourceRoot":"","sources":["../../../src/outbox/entities/jobs-outbox.entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,qBAAa,gBAAgB,CAC3B,CAAC,SAAS,OAAO,GAAG,OAAO,EAC3B,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CACjB,SAAQ,YAAY,CAAC,CAAC,CAAC;IACvB,MAAM,EAAG,MAAM,CAAC;IAEhB,OAAO,EAAG,CAAC,CAAC;IAEZ,WAAW,CAAC,EAAE,IAAI,CAAC;IAEnB,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,KAAK,EAAE;QACnD,IAAI,EAAE,CAAC,CAAC;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACvB,WAAW,CAAC,EAAE,IAAI,CAAC;KACpB,GAAG,gBAAgB,CAAC,CAAC,CAAC;CAgBxB"}
1
+ {"version":3,"file":"jobs-outbox.entity.d.ts","sourceRoot":"","sources":["../../../src/outbox/entities/jobs-outbox.entity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAIpD,qBAAa,gBAAgB,CAC3B,CAAC,SAAS,OAAO,GAAG,OAAO,EAC3B,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CACjB,SAAQ,YAAY,CAAC,CAAC,CAAC;IACvB,MAAM,EAAG,MAAM,CAAC;IAEhB,OAAO,EAAG,CAAC,CAAC;IAEZ,WAAW,CAAC,EAAE,IAAI,CAAC;IAEnB,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,KAAK,EAAE;QACnD,IAAI,EAAE,CAAC,CAAC;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACvB,WAAW,CAAC,EAAE,IAAI,CAAC;KACpB,GAAG,gBAAgB,CAAC,CAAC,CAAC;CAiBxB"}
@@ -1,6 +1,7 @@
1
1
  import { OutboxEntity } from './outbox.entity.js';
2
2
  import { randomUUID } from 'crypto';
3
3
  import { OutboxStatus } from '../index.js';
4
+ import { captureTraceparent } from '../utils/capture-traceparent.js';
4
5
  export class JobsOutboxEntity extends OutboxEntity {
5
6
  target;
6
7
  payload;
@@ -12,6 +13,7 @@ export class JobsOutboxEntity extends OutboxEntity {
12
13
  entity.emitter = props.emitter;
13
14
  entity.emitterId = props.emitterId;
14
15
  entity.traceId = props.traceId;
16
+ entity.traceparent = props.traceparent ?? captureTraceparent();
15
17
  entity.target = props.target;
16
18
  entity.payload = props.payload;
17
19
  entity.scheduledAt = props.scheduledAt;
@@ -1 +1 @@
1
- {"version":3,"file":"jobs-outbox.entity.js","sourceRoot":"","sources":["../../../src/outbox/entities/jobs-outbox.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,OAAO,gBAGX,SAAQ,YAAe;IACvB,MAAM,CAAU;IAEhB,OAAO,CAAK;IAEZ,WAAW,CAAQ;IAEnB,MAAM,CAAC,SAAS,CAA8B,KAQ7C;QACC,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAK,CAAC;QACzC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACzB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACnC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC7B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACvC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC;QACrC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"jobs-outbox.entity.js","sourceRoot":"","sources":["../../../src/outbox/entities/jobs-outbox.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,MAAM,OAAO,gBAGX,SAAQ,YAAe;IACvB,MAAM,CAAU;IAEhB,OAAO,CAAK;IAEZ,WAAW,CAAQ;IAEnB,MAAM,CAAC,SAAS,CAA8B,KAS7C;QACC,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAK,CAAC;QACzC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACzB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACnC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,kBAAkB,EAAE,CAAC;QAC/D,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC7B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACvC,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC;QACrC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -9,6 +9,7 @@ export declare class OutboxEntity<T extends OutboxType = OutboxType> extends Bas
9
9
  type: T;
10
10
  emitter: string;
11
11
  traceId?: string;
12
+ traceparent?: string;
12
13
  emitterId: string;
13
14
  }
14
15
  //# sourceMappingURL=outbox.entity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"outbox.entity.d.ts","sourceRoot":"","sources":["../../../src/outbox/entities/outbox.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,qBAAa,YAAY,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CACzD,SAAQ,UACR,YAAW,aAAa,CAAC,CAAC,CAAC;IAE3B,MAAM,EAAG,YAAY,CAAC;IAEtB,QAAQ,EAAG,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,IAAI,EAAG,CAAC,CAAC;IAET,OAAO,EAAG,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,SAAS,EAAG,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"outbox.entity.d.ts","sourceRoot":"","sources":["../../../src/outbox/entities/outbox.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,qBAAa,YAAY,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CACzD,SAAQ,UACR,YAAW,aAAa,CAAC,CAAC,CAAC;IAE3B,MAAM,EAAG,YAAY,CAAC;IAEtB,QAAQ,EAAG,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,IAAI,EAAG,CAAC,CAAC;IAET,OAAO,EAAG,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,SAAS,EAAG,MAAM,CAAC;CACpB"}
@@ -6,6 +6,7 @@ export class OutboxEntity extends BaseEntity {
6
6
  type;
7
7
  emitter;
8
8
  traceId;
9
+ traceparent;
9
10
  emitterId;
10
11
  }
11
12
  //# sourceMappingURL=outbox.entity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"outbox.entity.js","sourceRoot":"","sources":["../../../src/outbox/entities/outbox.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAKvD,MAAM,OAAO,YACX,SAAQ,UAAU;IAGlB,MAAM,CAAgB;IAEtB,QAAQ,CAAU;IAElB,SAAS,CAAU;IAEnB,IAAI,CAAK;IAET,OAAO,CAAU;IAEjB,OAAO,CAAU;IAEjB,SAAS,CAAU;CACpB"}
1
+ {"version":3,"file":"outbox.entity.js","sourceRoot":"","sources":["../../../src/outbox/entities/outbox.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAKvD,MAAM,OAAO,YACX,SAAQ,UAAU;IAGlB,MAAM,CAAgB;IAEtB,QAAQ,CAAU;IAElB,SAAS,CAAU;IAEnB,IAAI,CAAK;IAET,OAAO,CAAU;IAEjB,OAAO,CAAU;IAEjB,WAAW,CAAU;IAErB,SAAS,CAAU;CACpB"}
@@ -6,6 +6,7 @@ export * from './entities/index.js';
6
6
  export * from './interfaces/index.js';
7
7
  export * from './models/index.js';
8
8
  export * from './types/index.js';
9
+ export * from './utils/index.js';
9
10
  export * from './writers/index.js';
10
11
  export * from './dispatchers/index.js';
11
12
  export * from './pushers/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/outbox/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAE3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/outbox/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAE3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
@@ -6,6 +6,7 @@ export * from './entities/index.js';
6
6
  export * from './interfaces/index.js';
7
7
  export * from './models/index.js';
8
8
  export * from './types/index.js';
9
+ export * from './utils/index.js';
9
10
  export * from './writers/index.js';
10
11
  export * from './dispatchers/index.js';
11
12
  export * from './pushers/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/outbox/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAE3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/outbox/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAE3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function captureTraceparent(): string | undefined;
2
+ export declare function normalizeTraceparent(value: string | null | undefined): string | undefined;
3
+ //# sourceMappingURL=capture-traceparent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-traceparent.d.ts","sourceRoot":"","sources":["../../../src/outbox/utils/capture-traceparent.ts"],"names":[],"mappings":"AASA,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAIvD;AAOD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAEzF"}
@@ -0,0 +1,10 @@
1
+ import { context, propagation } from '@opentelemetry/api';
2
+ export function captureTraceparent() {
3
+ const carrier = {};
4
+ propagation.inject(context.active(), carrier);
5
+ return carrier.traceparent;
6
+ }
7
+ export function normalizeTraceparent(value) {
8
+ return value ?? undefined;
9
+ }
10
+ //# sourceMappingURL=capture-traceparent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-traceparent.js","sourceRoot":"","sources":["../../../src/outbox/utils/capture-traceparent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAS1D,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC,WAAW,CAAC;AAC7B,CAAC;AAOD,MAAM,UAAU,oBAAoB,CAAC,KAAgC;IACnE,OAAO,KAAK,IAAI,SAAS,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './capture-traceparent.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/outbox/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './capture-traceparent.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/outbox/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Context, SpanContext } from '@opentelemetry/api';
2
+ export declare const TRACE_ID_HEX = "0af7651916cd43dd8448eb211c80319c";
3
+ export declare const SPAN_ID_HEX = "b7ad6b7169203331";
4
+ export declare const SAMPLED_TRACEPARENT = "00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01";
5
+ export declare const createSpanContext: (overrides?: Partial<SpanContext>) => SpanContext;
6
+ export declare const createActiveContext: (spanContext?: SpanContext) => Context;
7
+ //# sourceMappingURL=span-context.factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"span-context.factory.d.ts","sourceRoot":"","sources":["../../../../src/test/outbox/entities/span-context.factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE/D,eAAO,MAAM,YAAY,qCAAqC,CAAC;AAC/D,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,4DAAyC,CAAC;AAE1E,eAAO,MAAM,iBAAiB,eAAe,OAAO,CAAC,WAAW,CAAC,KAAQ,WAKvE,CAAC;AAEH,eAAO,MAAM,mBAAmB,iBAAiB,WAAW,KAAyB,OACpC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { ROOT_CONTEXT, TraceFlags, trace } from '@opentelemetry/api';
2
+ export const TRACE_ID_HEX = '0af7651916cd43dd8448eb211c80319c';
3
+ export const SPAN_ID_HEX = 'b7ad6b7169203331';
4
+ export const SAMPLED_TRACEPARENT = `00-${TRACE_ID_HEX}-${SPAN_ID_HEX}-01`;
5
+ export const createSpanContext = (overrides = {}) => ({
6
+ traceId: TRACE_ID_HEX,
7
+ spanId: SPAN_ID_HEX,
8
+ traceFlags: TraceFlags.SAMPLED,
9
+ ...overrides,
10
+ });
11
+ export const createActiveContext = (spanContext = createSpanContext()) => trace.setSpanContext(ROOT_CONTEXT, spanContext);
12
+ //# sourceMappingURL=span-context.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"span-context.factory.js","sourceRoot":"","sources":["../../../../src/test/outbox/entities/span-context.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGrE,MAAM,CAAC,MAAM,YAAY,GAAG,kCAAkC,CAAC;AAC/D,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAC9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,YAAY,IAAI,WAAW,KAAK,CAAC;AAE1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAAkC,EAAE,EAAe,EAAE,CAAC,CAAC;IACvF,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE,UAAU,CAAC,OAAO;IAC9B,GAAG,SAAS;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,cAA2B,iBAAiB,EAAE,EAAW,EAAE,CAC7F,KAAK,CAAC,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=traceparent-capture.unit.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceparent-capture.unit.spec.d.ts","sourceRoot":"","sources":["../../../../src/test/outbox/entities/traceparent-capture.unit.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,107 @@
1
+ import { afterAll, afterEach, beforeAll, describe, expect, it, jest } from '@jest/globals';
2
+ import { ROOT_CONTEXT, context, propagation } from '@opentelemetry/api';
3
+ import { W3CTraceContextPropagator } from '@opentelemetry/core';
4
+ import { captureTraceparent, normalizeTraceparent, } from '../../../outbox/utils/capture-traceparent.js';
5
+ import { EventQueueEntity } from '../../../outbox/entities/event-queue.entity.js';
6
+ import { JobsOutboxEntity } from '../../../outbox/entities/jobs-outbox.entity.js';
7
+ import { SAMPLED_TRACEPARENT, createActiveContext, createSpanContext, } from './span-context.factory.js';
8
+ const EMITTER_ID = '00000000-0000-0000-0000-000000000000';
9
+ const EXPLICIT_TRACEPARENT = '00-11111111111111111111111111111111-2222222222222222-00';
10
+ describe('traceparent capture (Unit)', () => {
11
+ beforeAll(() => {
12
+ propagation.setGlobalPropagator(new W3CTraceContextPropagator());
13
+ });
14
+ afterAll(() => {
15
+ propagation.disable();
16
+ });
17
+ afterEach(() => {
18
+ jest.restoreAllMocks();
19
+ });
20
+ const withActiveSpan = (spanContext = createSpanContext()) => {
21
+ jest.spyOn(context, 'active').mockReturnValue(createActiveContext(spanContext));
22
+ };
23
+ const withoutActiveSpan = () => {
24
+ jest.spyOn(context, 'active').mockReturnValue(ROOT_CONTEXT);
25
+ };
26
+ describe('captureTraceparent', () => {
27
+ it('should serialise the active span as a 55 character W3C traceparent', () => {
28
+ withActiveSpan();
29
+ const traceparent = captureTraceparent();
30
+ expect(traceparent).toBe(SAMPLED_TRACEPARENT);
31
+ expect(traceparent).toHaveLength(55);
32
+ });
33
+ it('should keep the sampled flag of the active span', () => {
34
+ withActiveSpan(createSpanContext({ traceFlags: 0 }));
35
+ const traceparent = captureTraceparent();
36
+ expect(traceparent?.endsWith('-00')).toBe(true);
37
+ });
38
+ it('should return undefined without an active span', () => {
39
+ withoutActiveSpan();
40
+ expect(captureTraceparent()).toBeUndefined();
41
+ });
42
+ it('should return undefined when the active span context is invalid', () => {
43
+ withActiveSpan(createSpanContext({ traceId: '0'.repeat(32), spanId: '0'.repeat(16) }));
44
+ expect(captureTraceparent()).toBeUndefined();
45
+ });
46
+ });
47
+ describe('normalizeTraceparent', () => {
48
+ it('should turn the null read from a nullable column into undefined', () => {
49
+ expect(normalizeTraceparent(null)).toBeUndefined();
50
+ });
51
+ it('should keep undefined and string values unchanged', () => {
52
+ expect(normalizeTraceparent(undefined)).toBeUndefined();
53
+ expect(normalizeTraceparent(SAMPLED_TRACEPARENT)).toBe(SAMPLED_TRACEPARENT);
54
+ });
55
+ });
56
+ describe('EventQueueEntity.createEvent', () => {
57
+ const makeProps = (traceparent) => ({
58
+ type: 'user.created',
59
+ emitter: 'ms-user',
60
+ emitterId: EMITTER_ID,
61
+ payload: { id: 'user-1' },
62
+ targetServices: [],
63
+ traceparent,
64
+ });
65
+ it('should store the active trace context in traceparent', () => {
66
+ withActiveSpan();
67
+ const entity = EventQueueEntity.createEvent(makeProps());
68
+ expect(entity.traceparent).toBe(SAMPLED_TRACEPARENT);
69
+ });
70
+ it('should leave traceparent undefined without an active span', () => {
71
+ withoutActiveSpan();
72
+ const entity = EventQueueEntity.createEvent(makeProps());
73
+ expect(entity.traceparent).toBeUndefined();
74
+ });
75
+ it('should prefer an explicit traceparent over the active span', () => {
76
+ withActiveSpan();
77
+ const entity = EventQueueEntity.createEvent(makeProps(EXPLICIT_TRACEPARENT));
78
+ expect(entity.traceparent).toBe(EXPLICIT_TRACEPARENT);
79
+ });
80
+ });
81
+ describe('JobsOutboxEntity.createJob', () => {
82
+ const makeProps = (traceparent) => ({
83
+ type: 'user.cleanup',
84
+ emitter: 'ms-user',
85
+ emitterId: EMITTER_ID,
86
+ target: 'worker-user',
87
+ payload: { id: 'user-1' },
88
+ traceparent,
89
+ });
90
+ it('should store the active trace context in traceparent', () => {
91
+ withActiveSpan();
92
+ const entity = JobsOutboxEntity.createJob(makeProps());
93
+ expect(entity.traceparent).toBe(SAMPLED_TRACEPARENT);
94
+ });
95
+ it('should leave traceparent undefined without an active span', () => {
96
+ withoutActiveSpan();
97
+ const entity = JobsOutboxEntity.createJob(makeProps());
98
+ expect(entity.traceparent).toBeUndefined();
99
+ });
100
+ it('should prefer an explicit traceparent over the active span', () => {
101
+ withActiveSpan();
102
+ const entity = JobsOutboxEntity.createJob(makeProps(EXPLICIT_TRACEPARENT));
103
+ expect(entity.traceparent).toBe(EXPLICIT_TRACEPARENT);
104
+ });
105
+ });
106
+ });
107
+ //# sourceMappingURL=traceparent-capture.unit.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceparent-capture.unit.spec.js","sourceRoot":"","sources":["../../../../src/test/outbox/entities/traceparent-capture.unit.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volontariapp/database",
3
- "version": "3.5.0",
3
+ "version": "3.6.0-snap-c3c90e2",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -40,11 +40,12 @@
40
40
  "db:down": "docker-compose -f ../../docker-compose.test.yml down"
41
41
  },
42
42
  "dependencies": {
43
+ "@opentelemetry/api": "^1.9.0",
43
44
  "@volontariapp/bridge": "1.0.7",
44
45
  "@volontariapp/config": "3.2.3",
45
46
  "@volontariapp/errors": "0.6.3",
46
47
  "@volontariapp/logger": "0.3.0",
47
- "@volontariapp/messaging": "2.24.0",
48
+ "@volontariapp/messaging": "2.25.0-snap-c3c90e2",
48
49
  "@volontariapp/shared": "0.14.0",
49
50
  "class-transformer": "^0.5.1",
50
51
  "class-validator": "^0.14.1",
@@ -53,6 +54,7 @@
53
54
  },
54
55
  "devDependencies": {
55
56
  "@jest/globals": "^30.3.0",
57
+ "@opentelemetry/core": "^2.6.1",
56
58
  "@types/jest": "^30.0.0",
57
59
  "@types/node": "^22.10.7",
58
60
  "@types/pg": "^8",