node-cqrs 1.0.0-rc.37 → 1.0.0-rc.38

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 (50) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +2 -1
  3. package/dist/cjs/AbstractProjection.js +1 -2
  4. package/dist/cjs/AbstractProjection.js.map +1 -1
  5. package/dist/cjs/CqrsContainerBuilder.js +5 -3
  6. package/dist/cjs/CqrsContainerBuilder.js.map +1 -1
  7. package/dist/cjs/in-memory/InMemoryLock.js +6 -2
  8. package/dist/cjs/in-memory/InMemoryLock.js.map +1 -1
  9. package/dist/cjs/in-memory/InMemoryView.js +2 -5
  10. package/dist/cjs/in-memory/InMemoryView.js.map +1 -1
  11. package/dist/cjs/workers/AbstractWorkerProjection.js +13 -119
  12. package/dist/cjs/workers/AbstractWorkerProjection.js.map +1 -1
  13. package/dist/cjs/workers/WorkerProxyProjection.js +142 -0
  14. package/dist/cjs/workers/WorkerProxyProjection.js.map +1 -0
  15. package/dist/cjs/workers/index.js +1 -0
  16. package/dist/cjs/workers/index.js.map +1 -1
  17. package/dist/cjs/workers/protocol.js.map +1 -1
  18. package/dist/esm/AbstractProjection.js +1 -2
  19. package/dist/esm/AbstractProjection.js.map +1 -1
  20. package/dist/esm/CqrsContainerBuilder.js +6 -4
  21. package/dist/esm/CqrsContainerBuilder.js.map +1 -1
  22. package/dist/esm/in-memory/InMemoryLock.js +6 -2
  23. package/dist/esm/in-memory/InMemoryLock.js.map +1 -1
  24. package/dist/esm/in-memory/InMemoryView.js +2 -5
  25. package/dist/esm/in-memory/InMemoryView.js.map +1 -1
  26. package/dist/esm/workers/AbstractWorkerProjection.js +15 -121
  27. package/dist/esm/workers/AbstractWorkerProjection.js.map +1 -1
  28. package/dist/esm/workers/WorkerProxyProjection.js +105 -0
  29. package/dist/esm/workers/WorkerProxyProjection.js.map +1 -0
  30. package/dist/esm/workers/index.js +1 -0
  31. package/dist/esm/workers/index.js.map +1 -1
  32. package/dist/esm/workers/protocol.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/AbstractProjection.ts +1 -3
  35. package/src/CqrsContainerBuilder.ts +10 -5
  36. package/src/in-memory/InMemoryLock.ts +11 -5
  37. package/src/in-memory/InMemoryView.ts +2 -6
  38. package/src/interfaces/IProjection.ts +1 -1
  39. package/src/workers/AbstractWorkerProjection.ts +17 -182
  40. package/src/workers/WorkerProxyProjection.ts +154 -0
  41. package/src/workers/index.ts +1 -0
  42. package/src/workers/protocol.ts +7 -0
  43. package/types/AbstractProjection.d.ts +1 -1
  44. package/types/CqrsContainerBuilder.d.ts +2 -2
  45. package/types/in-memory/InMemoryLock.d.ts +5 -3
  46. package/types/interfaces/IProjection.d.ts +1 -1
  47. package/types/workers/AbstractWorkerProjection.d.ts +8 -53
  48. package/types/workers/WorkerProxyProjection.d.ts +32 -0
  49. package/types/workers/index.d.ts +1 -0
  50. package/types/workers/protocol.d.ts +6 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # [1.0.0-rc.38](https://github.com/snatalenko/node-cqrs/compare/v1.0.0-rc.37...v1.0.0-rc.38) (2026-02-24)
2
+
3
+
4
+ ### Tests
5
+
6
+ * Allow running individual integration tests with `npm t` ([cfef9a8](https://github.com/snatalenko/node-cqrs/commit/cfef9a87b6e0fce159205a1d55f38e51c6f9e8de))
7
+
8
+ ### Internal Fixes
9
+
10
+ * Split AbstractWorkerProjection into worker-side and main-thread proxy ([751bfcf](https://github.com/snatalenko/node-cqrs/commit/751bfcf9f63547bafcec51af4e949d77ca1d0077))
11
+ * Rename InMemoryLock event to match IViewLocker interface ([1fe2eb1](https://github.com/snatalenko/node-cqrs/commit/1fe2eb149f8801e1b7e935a90cca05691d5d2017))
12
+ * Separate projection restoring from subscription; start explicitly in DI container ([3ddc649](https://github.com/snatalenko/node-cqrs/commit/3ddc649feaa65e267d7eb5646289e88f8a4a332b))
13
+
14
+
1
15
  # [1.0.0-rc.37](https://github.com/snatalenko/node-cqrs/compare/v1.0.0-rc.36...v1.0.0-rc.37) (2026-02-23)
2
16
 
3
17
 
package/README.md CHANGED
@@ -136,7 +136,8 @@ const aggregateCommandHandler = new AggregateCommandHandler({ eventStore, aggreg
136
136
  aggregateCommandHandler.subscribe(commandBus);
137
137
 
138
138
  const projection = new UsersProjection();
139
- await projection.subscribe(eventStore);
139
+ projection.subscribe(eventStore);
140
+ projection.restore(eventStore);
140
141
  const users = projection.view;
141
142
  ```
142
143
 
@@ -66,11 +66,10 @@ class AbstractProjection {
66
66
  * Subscribe to event store
67
67
  * and restore view state from not yet projected events
68
68
  */
69
- async subscribe(eventStore) {
69
+ subscribe(eventStore) {
70
70
  (0, index_ts_2.subscribe)(eventStore, this, {
71
71
  masterHandler: this.project
72
72
  });
73
- await this.restore(eventStore);
74
73
  }
75
74
  /** Pass event to projection event handler */
76
75
  async project(event) {
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractProjection.js","sourceRoot":"","sources":["../../src/AbstractProjection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractProjection.js","sourceRoot":"","sources":["../../src/AbstractProjection.ts"],"names":[],"mappings":"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"}
@@ -50,11 +50,13 @@ class CqrsContainerBuilder extends di0_1.ContainerBuilder {
50
50
  * Register projection, which will expose view and will be subscribed
51
51
  * to eventStore and will restore its state upon instance creation
52
52
  */
53
- registerProjection(ProjectionType, exposedViewAlias) {
54
- (0, assert_ts_1.assertClass)(ProjectionType, 'ProjectionType');
53
+ registerProjection(typeOrFactory, exposedViewAlias) {
54
+ (0, assert_ts_1.assertFunction)(typeOrFactory, 'typeOrFactory');
55
55
  const projectionFactory = (container) => {
56
- const projection = container.createInstance(ProjectionType);
56
+ const projection = container.createInstance(typeOrFactory);
57
57
  projection.subscribe(container.eventStore);
58
+ // start async projection restoring
59
+ void projection.restore(container.eventStore);
58
60
  if (exposedViewAlias)
59
61
  return projection.view;
60
62
  return projection;
@@ -1 +1 @@
1
- {"version":3,"file":"CqrsContainerBuilder.js","sourceRoot":"","sources":["../../src/CqrsContainerBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CqrsContainerBuilder.js","sourceRoot":"","sources":["../../src/CqrsContainerBuilder.ts"],"names":[],"mappings":"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"}
@@ -10,14 +10,18 @@ class InMemoryLock {
10
10
  get locked() {
11
11
  return !!this.#lockMarker;
12
12
  }
13
+ get ready() {
14
+ return !this.locked;
15
+ }
13
16
  /**
14
17
  * Acquire the lock on the current instance.
15
18
  * Resolves when the lock is successfully acquired
16
19
  */
17
20
  async lock() {
18
21
  while (this.locked)
19
- await this.once('unlocked');
22
+ await this.once('ready');
20
23
  this.#lockMarker = new index_ts_1.Deferred();
24
+ return this.locked;
21
25
  }
22
26
  /**
23
27
  * Release the lock acquired earlier
@@ -31,7 +35,7 @@ class InMemoryLock {
31
35
  * Resolves immediately if the lock is not acquired
32
36
  */
33
37
  once(event) {
34
- if (event !== 'unlocked')
38
+ if (event !== 'ready')
35
39
  throw new TypeError(`Unexpected event type: ${event}`);
36
40
  return this.#lockMarker?.promise ?? Promise.resolve();
37
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryLock.js","sourceRoot":"","sources":["../../../src/in-memory/InMemoryLock.ts"],"names":[],"mappings":";;;AAAA,gDAA6C;AAE7C,MAAa,YAAY;IAExB,WAAW,CAA6B;IAExC;;OAEG;IACH,IAAI,MAAM;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI;QACT,OAAO,IAAI,CAAC,MAAM;YACjB,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,IAAI,CAAC,WAAW,GAAG,IAAI,mBAAQ,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACX,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,KAAiB;QACrB,IAAI,KAAK,KAAK,UAAU;YACvB,MAAM,IAAI,SAAS,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;QAExD,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC;CACD;AAxCD,oCAwCC"}
1
+ {"version":3,"file":"InMemoryLock.js","sourceRoot":"","sources":["../../../src/in-memory/InMemoryLock.ts"],"names":[],"mappings":";;;AACA,gDAA6C;AAE7C,MAAa,YAAY;IAExB,WAAW,CAA6B;IAExC;;OAEG;IACH,IAAI,MAAM;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;QACR,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI;QACT,OAAO,IAAI,CAAC,MAAM;YACjB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE1B,IAAI,CAAC,WAAW,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACX,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,KAAc;QAClB,IAAI,KAAK,KAAK,OAAO;YACpB,MAAM,IAAI,SAAS,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;QAExD,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC;CACD;AA7CD,oCA6CC"}
@@ -40,8 +40,7 @@ class InMemoryView {
40
40
  }
41
41
  /** Lock the view to prevent concurrent modifications */
42
42
  async lock() {
43
- await this.#lock.lock();
44
- return this.#lock.locked;
43
+ return this.#lock.lock();
45
44
  }
46
45
  /** Release the lock */
47
46
  async unlock() {
@@ -49,9 +48,7 @@ class InMemoryView {
49
48
  }
50
49
  /** Create a Promise which will resolve to a first emitted event of a given type */
51
50
  once(eventType) {
52
- if (eventType !== 'ready')
53
- throw new TypeError(`Unexpected event type: ${eventType}`);
54
- return this.#lock.once('unlocked');
51
+ return this.#lock.once(eventType);
55
52
  }
56
53
  /**
57
54
  * Check if view contains a record with a given key.
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryView.js","sourceRoot":"","sources":["../../../src/in-memory/InMemoryView.ts"],"names":[],"mappings":";;;AAAA,uDAAiD;AAEjD,+CAA6C;AAC7C,kDAAmE;AAEnE;;;GAGG;AACH,SAAS,WAAW,CAAI,IAAO,EAAE,MAAmB;IACnD,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,qBAAqB,KAAK,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,CAAC;QACN,qBAAqB,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAa,YAAY;IAExB,MAAM,CAAC,OAAO;QACb,OAAQ,IAAI,YAAY,EAAuB,CAAC;IACjD,CAAC;IAES,IAAI,GAA6B,IAAI,GAAG,EAAE,CAAC;IAErD,KAAK,CAAe;IAEpB,mCAAmC;IACnC,IAAI,KAAK;QACR,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,oCAAoC;IACpC,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;QACC,IAAI,CAAC,KAAK,GAAG,IAAI,8BAAY,EAAE,CAAC;QAEhC,+EAA+E;QAC/E,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YAC1C,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAC;IACJ,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,IAAI;QACT,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,MAAM;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,mFAAmF;IACnF,IAAI,CAAC,SAAkB;QACtB,IAAI,SAAS,KAAK,OAAO;YACxB,MAAM,IAAI,SAAS,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;QAE5D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,GAAe;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,GAAG,CAAC,GAAe,EAAE,OAA8B;QACxD,IAAA,yBAAa,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE1B,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM;YAClC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE1B,MAAM,IAAA,oBAAS,GAAE,CAAC;QAElB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,GAAe;QACtB,IAAA,yBAAa,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE1B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,MAAM,CAAC,MAA2D;QAEvE,IAAI,MAAM;YACT,IAAA,0BAAc,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAElC,IAAI,CAAC,IAAI,CAAC,KAAK;YACd,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE1B,MAAM,IAAA,oBAAS,GAAE,CAAC;QAElB,MAAM,CAAC,GAA6C,EAAE,CAAC;QACvD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,CAAC;IACV,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,MAAM,CAAC,GAAe,EAAE,QAAiB,EAAa;QAC3D,IAAA,yBAAa,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1B,IAAI,OAAO,KAAK,KAAK,UAAU;YAC9B,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;QAExE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,kBAAkB,CAAC,CAAC;QAEhD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,MAAM,CAAC,GAAe,EAAE,MAA+B;QAC5D,IAAA,yBAAa,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1B,IAAA,0BAAc,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,kBAAkB,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,kBAAkB,CAAC,GAAe,EAAE,MAAgC;QACzE,IAAA,yBAAa,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1B,IAAA,0BAAc,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAEzD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,SAAS,CAAC,MAA+B,EAAE,MAA+B;QAC/E,IAAI,MAAM;YACT,IAAA,0BAAc,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClC,IAAA,0BAAc,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;gBAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC;IACF,CAAC;IAED,6BAA6B;IACrB,KAAK,CAAC,OAAO,CAAC,GAAe,EAAE,MAA+B;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK;YACT,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,kBAAkB,CAAC,CAAC;QAEhD,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,YAAY,KAAK,SAAS;YAC7B,OAAO;QAER,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,MAAM,CAAC,GAAe;QAC3B,IAAA,yBAAa,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,SAAS,CAAC,MAAgC;QAC/C,IAAI,MAAM;YACT,IAAA,0BAAc,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAElC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;gBAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;IAED,iCAAiC;IACjC,QAAQ;QACP,OAAO,GAAG,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC3D,CAAC;CACD;AApLD,oCAoLC"}
1
+ {"version":3,"file":"InMemoryView.js","sourceRoot":"","sources":["../../../src/in-memory/InMemoryView.ts"],"names":[],"mappings":"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"}
@@ -38,18 +38,13 @@ const node_worker_threads_1 = require("node:worker_threads");
38
38
  const AbstractProjection_ts_1 = require("../AbstractProjection.js");
39
39
  const Comlink = __importStar(require("comlink"));
40
40
  const index_ts_1 = require("./utils/index.js");
41
- const index_ts_2 = require("../utils/index.js");
42
41
  const protocol_ts_1 = require("./protocol.js");
42
+ const WorkerProxyProjection_ts_1 = require("./WorkerProxyProjection.js");
43
43
  /**
44
44
  * Projection base class that can run projection handlers and the associated view in a worker thread
45
45
  * to isolate CPU-heavy work and keep the main thread responsive
46
46
  */
47
47
  class AbstractWorkerProjection extends AbstractProjection_ts_1.AbstractProjection {
48
- #worker;
49
- #workerInit;
50
- #remoteProjection;
51
- #remoteView;
52
- #useWorkerThreads;
53
48
  /**
54
49
  * Creates an instance of a class derived from AbstractWorkerProjection in a Worker thread
55
50
  *
@@ -82,127 +77,26 @@ class AbstractWorkerProjection extends AbstractProjection_ts_1.AbstractProjectio
82
77
  return undefined;
83
78
  return this.createWorkerInstance(factory);
84
79
  }
85
- async project(event) {
86
- if (this.#useWorkerThreads && node_worker_threads_1.isMainThread) {
87
- if (!this.#worker)
88
- await this.#workerInit;
89
- return this.remoteProjection.project(event);
90
- }
91
- return super.project(event);
92
- }
93
- /**
94
- * Proxy to the projection instance in the worker thread
95
- */
96
- get remoteProjection() {
97
- this.assertMainThread();
98
- return this.#remoteProjection;
99
- }
100
- /**
101
- * Proxy to the projection instance in the worker thread (awaits worker init)
102
- */
103
- get remoteProjectionInitializer() {
104
- this.assertMainThread();
105
- return this.ensureWorkerReady().then(() => this.remoteProjection);
106
- }
107
- /**
108
- * Proxy to the view instance in the worker thread
109
- */
110
- get remoteView() {
111
- this.assertMainThread();
112
- return this.#remoteView;
113
- }
114
- get view() {
115
- if (this.#useWorkerThreads && node_worker_threads_1.isMainThread)
116
- return this.remoteView;
117
- return super.view;
118
- }
119
80
  /**
120
- * Proxy to the view instance in the worker thread (awaits worker init)
81
+ * Creates a factory that returns a `WorkerProxyProjection` for this projection type.
82
+ * Use it in the main thread (for example, `builder.registerProjection(MyProjection.workerProxyFactory)`),
83
+ * so events are proxied to the worker instance while exposing the remote view API.
121
84
  */
122
- get remoteViewInitializer() {
123
- this.assertMainThread();
124
- return this.ensureWorkerReady().then(() => this.remoteView);
125
- }
126
- constructor({ workerModulePath, useWorkerThreads = true, view, viewLocker, eventLocker, logger } = {}) {
127
- super({
128
- view,
129
- viewLocker,
130
- eventLocker,
131
- logger
85
+ static get workerProxyFactory() {
86
+ const ProjectionType = this;
87
+ return () => new WorkerProxyProjection_ts_1.WorkerProxyProjection({
88
+ workerModulePath: ProjectionType.workerModulePath,
89
+ messageTypes: ProjectionType.handles
132
90
  });
133
- this.#useWorkerThreads = useWorkerThreads;
134
- if (this.#useWorkerThreads && node_worker_threads_1.isMainThread) {
135
- if (!workerModulePath)
136
- throw new TypeError('workerModulePath parameter is required in the main thread when useWorkerThreads=true');
137
- const { port1: projectionPortMain, port2: projectionPort } = new node_worker_threads_1.MessageChannel();
138
- const { port1: viewPortMain, port2: viewPort } = new node_worker_threads_1.MessageChannel();
139
- this.#workerInit = this._createWorker(workerModulePath, {
140
- projectionPort,
141
- viewPort
142
- }).then(worker => {
143
- this.#worker = worker;
144
- worker.once('error', this._onWorkerError);
145
- worker.once('exit', this._onWorkerExit);
146
- return worker;
147
- });
148
- this.#workerInit.catch(() => { });
149
- this.#remoteProjection = Comlink.wrap((0, index_ts_1.nodeEndpoint)(projectionPortMain));
150
- this.#remoteView = Comlink.wrap((0, index_ts_1.nodeEndpoint)(viewPortMain));
151
- }
152
91
  }
153
- // eslint-disable-next-line class-methods-use-this
154
- async _createWorker(workerModulePath, data) {
155
- return (0, index_ts_1.createWorker)(workerModulePath, data);
92
+ static get workerModulePath() {
93
+ throw new Error('not implemented');
156
94
  }
157
- _onWorkerError = (error) => {
158
- this._logger?.error('worker error', {
159
- error: (0, index_ts_2.extractErrorDetails)(error)
160
- });
161
- };
162
- _onWorkerExit = (exitCode) => {
163
- if (exitCode !== 0)
164
- this._logger?.error(`worker exited with code ${exitCode}`);
165
- };
95
+ /** Responds to a ping from the main thread to confirm the worker is alive */
96
+ // eslint-disable-next-line class-methods-use-this
166
97
  _pong() {
167
- this.assertWorkerThread();
168
98
  return true;
169
99
  }
170
- assertMainThread() {
171
- if (!node_worker_threads_1.isMainThread)
172
- throw new Error('This method can only be called from the main thread');
173
- if (!this.#useWorkerThreads)
174
- throw new Error('Worker threads are disabled for this projection instance');
175
- if (!this.#workerInit)
176
- throw new Error('Worker instance is not initialized');
177
- if (!this.#remoteProjection)
178
- throw new Error('Remote projection instance is not initialized');
179
- if (!this.#remoteView)
180
- throw new Error('Remote view instance is not initialized');
181
- }
182
- // eslint-disable-next-line class-methods-use-this
183
- assertWorkerThread() {
184
- if (!node_worker_threads_1.parentPort)
185
- throw new Error('This method can only be called from a Worker thread');
186
- }
187
- async ensureWorkerReady() {
188
- if (this.#useWorkerThreads && node_worker_threads_1.isMainThread)
189
- await this.#workerInit;
190
- }
191
- async _project(event) {
192
- if (this.#useWorkerThreads && node_worker_threads_1.isMainThread) {
193
- if (!this.#worker)
194
- await this.#workerInit;
195
- return this.remoteProjection._project(event);
196
- }
197
- return super._project(event);
198
- }
199
- dispose() {
200
- if (this.#useWorkerThreads && node_worker_threads_1.isMainThread) {
201
- this.#remoteProjection?.[Comlink.releaseProxy]();
202
- this.#remoteView?.[Comlink.releaseProxy]();
203
- this.#worker?.terminate();
204
- }
205
- }
206
100
  }
207
101
  exports.AbstractWorkerProjection = AbstractWorkerProjection;
208
102
  //# sourceMappingURL=AbstractWorkerProjection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractWorkerProjection.js","sourceRoot":"","sources":["../../../src/workers/AbstractWorkerProjection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractWorkerProjection.js","sourceRoot":"","sources":["../../../src/workers/AbstractWorkerProjection.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA2E;AAC3E,oEAA8D;AAC9D,iDAAmC;AACnC,+CAAgD;AAChD,+CAAgG;AAChG,yEAAmE;AAEnE;;;GAGG;AACH,MAAsB,wBAAgC,SAAQ,0CAAyB;IAEtF;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAE1B,OAAiB;QAEjB,IAAI,CAAC,gCAAU;YACd,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QACjF,IAAI,CAAC,IAAA,0BAAY,EAAC,gCAAU,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAE5E,MAAM,wBAAwB,GAAG,OAAO,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;QAC3D,MAAM,2BAA2B,GAAyB;YACzD,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC;YACzD,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC3D,IAAI,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,KAAK,EAAE;SAC5C,CAAC;QAEF,OAAO,CAAC,MAAM,CAAC,2BAA2B,EAAE,IAAA,uBAAY,EAAC,gCAAU,CAAC,cAAc,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,IAAA,uBAAY,EAAC,gCAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEjF,gCAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAA8B,CAAC,CAAC;QAEtE,OAAO,wBAAwB,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,4BAA4B,CAElC,OAAiB;QAEjB,IAAI,kCAAY;YACf,OAAO,SAAS,CAAC;QAElB,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,MAAM,KAAK,kBAAkB;QAC5B,MAAM,cAAc,GAAG,IAAuC,CAAC;QAC/D,OAAO,GAAG,EAAE,CAAC,IAAI,gDAAqB,CAAM;YAC3C,gBAAgB,EAAE,cAAc,CAAC,gBAAgB;YACjD,YAAY,EAAE,cAAc,CAAC,OAAO;SACpC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,gBAAgB;QAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpC,CAAC;IAED,6EAA6E;IAC7E,kDAAkD;IACxC,KAAK;QACd,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AArED,4DAqEC"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.WorkerProxyProjection = void 0;
37
+ const node_worker_threads_1 = require("node:worker_threads");
38
+ const Comlink = __importStar(require("comlink"));
39
+ const index_ts_1 = require("./utils/index.js");
40
+ const index_ts_2 = require("../utils/index.js");
41
+ const Event_ts_1 = require("../Event.js");
42
+ const InMemoryLock_ts_1 = require("../in-memory/InMemoryLock.js");
43
+ /**
44
+ * Projection being automatically created in the main thread to proxy events
45
+ * and view calls to AbstractWorkerThreadProjection instance
46
+ */
47
+ class WorkerProxyProjection {
48
+ #worker;
49
+ #workerInit;
50
+ #remoteProjection;
51
+ #remoteView;
52
+ #logger;
53
+ #messageTypes;
54
+ #viewLocker = new InMemoryLock_ts_1.InMemoryLock();
55
+ get remoteProjection() {
56
+ return this.#remoteProjection;
57
+ }
58
+ get view() {
59
+ return this.#remoteView;
60
+ }
61
+ constructor({ workerModulePath, messageTypes, logger }) {
62
+ (0, index_ts_2.assertString)(workerModulePath, 'workerModulePath');
63
+ (0, index_ts_2.assertArray)(messageTypes, 'messageTypes');
64
+ this.#messageTypes = messageTypes;
65
+ this.#logger = logger && 'child' in logger ? logger.child({ service: new.target.name }) : logger;
66
+ const { port1: projectionPortMain, port2: projectionPort } = new node_worker_threads_1.MessageChannel();
67
+ const { port1: viewPortMain, port2: viewPort } = new node_worker_threads_1.MessageChannel();
68
+ this.#workerInit = (0, index_ts_1.createWorker)(workerModulePath, {
69
+ projectionPort,
70
+ viewPort
71
+ }).then(worker => {
72
+ this.#worker = worker;
73
+ worker.once('error', this._onWorkerError);
74
+ worker.once('exit', this._onWorkerExit);
75
+ return worker;
76
+ });
77
+ this.#workerInit.catch(() => { });
78
+ this.#remoteProjection = Comlink.wrap((0, index_ts_1.nodeEndpoint)(projectionPortMain));
79
+ this.#remoteView = Comlink.wrap((0, index_ts_1.nodeEndpoint)(viewPortMain));
80
+ }
81
+ subscribe(eventStore) {
82
+ (0, index_ts_2.subscribe)(eventStore, this, {
83
+ masterHandler: this.project,
84
+ messageTypes: this.#messageTypes
85
+ });
86
+ }
87
+ async restore(eventStore) {
88
+ if (this.#viewLocker)
89
+ await this.#viewLocker.lock();
90
+ await this._restore(eventStore);
91
+ if (this.#viewLocker)
92
+ this.#viewLocker.unlock();
93
+ }
94
+ /** Restore view state from not-yet-projected events */
95
+ async _restore(eventStore) {
96
+ if (!this.#worker)
97
+ await this.#workerInit;
98
+ this.#logger?.debug('retrieving last event projected');
99
+ const lastEvent = await this.view.getLastEvent();
100
+ this.#logger?.debug(`retrieving ${lastEvent ? `events after ${(0, Event_ts_1.describe)(lastEvent)}` : 'all events'}...`);
101
+ const eventsIterable = eventStore.getEventsByTypes(this.#messageTypes, { afterEvent: lastEvent });
102
+ let eventsCount = 0;
103
+ const startTs = Date.now();
104
+ for await (const event of eventsIterable) {
105
+ await this._project(event);
106
+ eventsCount += 1;
107
+ }
108
+ this.#logger?.info(`view restored from ${eventsCount} event(s) in ${Date.now() - startTs} ms`);
109
+ }
110
+ _onWorkerError = (error) => {
111
+ this.#logger?.error('worker error', {
112
+ error: (0, index_ts_2.extractErrorDetails)(error)
113
+ });
114
+ };
115
+ _onWorkerExit = (exitCode) => {
116
+ if (exitCode !== 0)
117
+ this.#logger?.error(`worker exited with code ${exitCode}`);
118
+ };
119
+ async ensureWorkerReady() {
120
+ await this.#workerInit;
121
+ }
122
+ async project(event) {
123
+ if (!this.#worker)
124
+ await this.#workerInit;
125
+ if (!this.#viewLocker.ready) {
126
+ this.#logger?.debug(`view is locked, awaiting until it is ready to process ${(0, Event_ts_1.describe)(event)}`);
127
+ await this.#viewLocker.once('ready');
128
+ this.#logger?.debug(`view is ready, processing ${(0, Event_ts_1.describe)(event)}`);
129
+ }
130
+ return this.#remoteProjection.project(event);
131
+ }
132
+ async _project(event) {
133
+ await this.#remoteProjection._project(event);
134
+ }
135
+ dispose() {
136
+ this.#remoteProjection[Comlink.releaseProxy]();
137
+ this.#remoteView[Comlink.releaseProxy]();
138
+ this.#worker?.terminate();
139
+ }
140
+ }
141
+ exports.WorkerProxyProjection = WorkerProxyProjection;
142
+ //# sourceMappingURL=WorkerProxyProjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerProxyProjection.js","sourceRoot":"","sources":["../../../src/workers/WorkerProxyProjection.ts"],"names":[],"mappings":"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"}
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./AbstractWorkerProjection.js"), exports);
18
+ __exportStar(require("./WorkerProxyProjection.js"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,6DAA2C"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/workers/protocol.ts"],"names":[],"mappings":";;;AAOO,MAAM,YAAY,GAAG,CAAC,GAAY,EAAsB,EAAE,CAChE,OAAO,GAAG,KAAK,QAAQ;OACpB,GAAG,KAAK,IAAI;OACZ,gBAAgB,IAAI,GAAG;OACvB,CAAC,CAAC,GAAG,CAAC,cAAc;OACpB,UAAU,IAAI,GAAG;OACjB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AANN,QAAA,YAAY,gBAMN;AAIZ,MAAM,mBAAmB,GAAG,CAAC,GAAY,EAA4B,EAAE,CAC7E,OAAO,GAAG,KAAK,QAAQ;OACpB,GAAG,KAAK,IAAI;OACZ,MAAM,IAAI,GAAG;OACb,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAJZ,QAAA,mBAAmB,uBAIP"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/workers/protocol.ts"],"names":[],"mappings":";;;AAQO,MAAM,YAAY,GAAG,CAAC,GAAY,EAAsB,EAAE,CAChE,OAAO,GAAG,KAAK,QAAQ;OACpB,GAAG,KAAK,IAAI;OACZ,gBAAgB,IAAI,GAAG;OACvB,CAAC,CAAC,GAAG,CAAC,cAAc;OACpB,UAAU,IAAI,GAAG;OACjB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AANN,QAAA,YAAY,gBAMN;AAIZ,MAAM,mBAAmB,GAAG,CAAC,GAAY,EAA4B,EAAE,CAC7E,OAAO,GAAG,KAAK,QAAQ;OACpB,GAAG,KAAK,IAAI;OACZ,MAAM,IAAI,GAAG;OACb,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AAJZ,QAAA,mBAAmB,uBAIP"}
@@ -63,11 +63,10 @@ export class AbstractProjection {
63
63
  * Subscribe to event store
64
64
  * and restore view state from not yet projected events
65
65
  */
66
- async subscribe(eventStore) {
66
+ subscribe(eventStore) {
67
67
  subscribe(eventStore, this, {
68
68
  masterHandler: this.project
69
69
  });
70
- await this.restore(eventStore);
71
70
  }
72
71
  /** Pass event to projection event handler */
73
72
  async project(event) {
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractProjection.js","sourceRoot":"","sources":["../../src/AbstractProjection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractProjection.js","sourceRoot":"","sources":["../../src/AbstractProjection.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { SagaEventHandler } from "./SagaEventHandler.js";
6
6
  import { EventDispatcher } from "./EventDispatcher.js";
7
7
  import { InMemoryMessageBus } from "./in-memory/index.js";
8
8
  import { isDispatchPipelineProcessor, isExecutionLocker, isAggregateSnapshotStorage, isIdentifierProvider, isEventStorageReader, isEventStorageWriter } from "./interfaces/index.js";
9
- import { assertClass } from "./utils/assert.js";
9
+ import { assertClass, assertFunction } from "./utils/assert.js";
10
10
  export class CqrsContainerBuilder extends ContainerBuilder {
11
11
  constructor(options) {
12
12
  super(options);
@@ -47,11 +47,13 @@ export class CqrsContainerBuilder extends ContainerBuilder {
47
47
  * Register projection, which will expose view and will be subscribed
48
48
  * to eventStore and will restore its state upon instance creation
49
49
  */
50
- registerProjection(ProjectionType, exposedViewAlias) {
51
- assertClass(ProjectionType, 'ProjectionType');
50
+ registerProjection(typeOrFactory, exposedViewAlias) {
51
+ assertFunction(typeOrFactory, 'typeOrFactory');
52
52
  const projectionFactory = (container) => {
53
- const projection = container.createInstance(ProjectionType);
53
+ const projection = container.createInstance(typeOrFactory);
54
54
  projection.subscribe(container.eventStore);
55
+ // start async projection restoring
56
+ void projection.restore(container.eventStore);
55
57
  if (exposedViewAlias)
56
58
  return projection.view;
57
59
  return projection;
@@ -1 +1 @@
1
- {"version":3,"file":"CqrsContainerBuilder.js","sourceRoot":"","sources":["../../src/CqrsContainerBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CqrsContainerBuilder.js","sourceRoot":"","sources":["../../src/CqrsContainerBuilder.ts"],"names":[],"mappings":"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"}