@entity-access/entity-access 1.0.161 → 1.0.163

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 (63) hide show
  1. package/dist/index.d.ts +4 -4
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +4 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/tests/eternity/child-tests.js +8 -8
  6. package/dist/tests/eternity/child-tests.js.map +1 -1
  7. package/dist/tests/eternity/eternity-tests.js +8 -8
  8. package/dist/tests/eternity/eternity-tests.js.map +1 -1
  9. package/dist/tests/eternity/external-event-tests.js +8 -8
  10. package/dist/tests/eternity/external-event-tests.js.map +1 -1
  11. package/dist/tsconfig.tsbuildinfo +1 -1
  12. package/dist/workflows/ActivitySuspendedError.d.ts.map +1 -0
  13. package/dist/workflows/ActivitySuspendedError.js.map +1 -0
  14. package/dist/workflows/Waiter.d.ts +11 -0
  15. package/dist/workflows/Waiter.d.ts.map +1 -0
  16. package/dist/workflows/Waiter.js +22 -0
  17. package/dist/workflows/Waiter.js.map +1 -0
  18. package/dist/{eternity → workflows}/Workflow.d.ts +3 -3
  19. package/dist/workflows/Workflow.d.ts.map +1 -0
  20. package/dist/workflows/Workflow.js.map +1 -0
  21. package/dist/workflows/WorkflowClock.d.ts.map +1 -0
  22. package/dist/workflows/WorkflowClock.js.map +1 -0
  23. package/dist/{eternity/EternityContext.d.ts → workflows/WorkflowContext.d.ts} +13 -8
  24. package/dist/workflows/WorkflowContext.d.ts.map +1 -0
  25. package/dist/{eternity/EternityContext.js → workflows/WorkflowContext.js} +37 -26
  26. package/dist/workflows/WorkflowContext.js.map +1 -0
  27. package/dist/workflows/WorkflowRegistry.d.ts.map +1 -0
  28. package/dist/workflows/WorkflowRegistry.js.map +1 -0
  29. package/dist/{eternity/EternityStorage.d.ts → workflows/WorkflowStorage.d.ts} +6 -5
  30. package/dist/workflows/WorkflowStorage.d.ts.map +1 -0
  31. package/dist/{eternity/EternityStorage.js → workflows/WorkflowStorage.js} +45 -33
  32. package/dist/workflows/WorkflowStorage.js.map +1 -0
  33. package/package.json +1 -1
  34. package/src/index.ts +4 -4
  35. package/src/tests/eternity/child-tests.ts +8 -8
  36. package/src/tests/eternity/eternity-tests.ts +8 -8
  37. package/src/tests/eternity/external-event-tests.ts +8 -8
  38. package/src/workflows/Waiter.ts +24 -0
  39. package/src/{eternity → workflows}/Workflow.ts +2 -2
  40. package/src/{eternity/EternityContext.ts → workflows/WorkflowContext.ts} +15 -16
  41. package/src/{eternity/EternityStorage.ts → workflows/WorkflowStorage.ts} +22 -11
  42. package/dist/eternity/ActivitySuspendedError.d.ts.map +0 -1
  43. package/dist/eternity/ActivitySuspendedError.js.map +0 -1
  44. package/dist/eternity/EternityContext.d.ts.map +0 -1
  45. package/dist/eternity/EternityContext.js.map +0 -1
  46. package/dist/eternity/EternityStorage.d.ts.map +0 -1
  47. package/dist/eternity/EternityStorage.js.map +0 -1
  48. package/dist/eternity/Workflow.d.ts.map +0 -1
  49. package/dist/eternity/Workflow.js.map +0 -1
  50. package/dist/eternity/WorkflowClock.d.ts.map +0 -1
  51. package/dist/eternity/WorkflowClock.js.map +0 -1
  52. package/dist/eternity/WorkflowRegistry.d.ts.map +0 -1
  53. package/dist/eternity/WorkflowRegistry.js.map +0 -1
  54. /package/dist/{eternity → workflows}/ActivitySuspendedError.d.ts +0 -0
  55. /package/dist/{eternity → workflows}/ActivitySuspendedError.js +0 -0
  56. /package/dist/{eternity → workflows}/Workflow.js +0 -0
  57. /package/dist/{eternity → workflows}/WorkflowClock.d.ts +0 -0
  58. /package/dist/{eternity → workflows}/WorkflowClock.js +0 -0
  59. /package/dist/{eternity → workflows}/WorkflowRegistry.d.ts +0 -0
  60. /package/dist/{eternity → workflows}/WorkflowRegistry.js +0 -0
  61. /package/src/{eternity → workflows}/ActivitySuspendedError.ts +0 -0
  62. /package/src/{eternity → workflows}/WorkflowClock.ts +0 -0
  63. /package/src/{eternity → workflows}/WorkflowRegistry.ts +0 -0
@@ -4,12 +4,13 @@ import { randomUUID } from "crypto";
4
4
  import EntityAccessError from "../common/EntityAccessError.js";
5
5
  import Inject, { ServiceProvider, injectServiceKeysSymbol } from "../di/di.js";
6
6
  import DateTime from "../types/DateTime.js";
7
- import EternityStorage from "./EternityStorage.js";
7
+ import WorkflowStorage from "./WorkflowStorage.js";
8
8
  import { ActivitySuspendedError } from "./ActivitySuspendedError.js";
9
9
  import { WorkflowRegistry } from "./WorkflowRegistry.js";
10
10
  import crypto from "crypto";
11
11
  import TimeSpan from "../types/TimeSpan.js";
12
12
  import sleep from "../common/sleep.js";
13
+ import Waiter from "./Waiter.js";
13
14
  async function hash(text) {
14
15
  const sha256 = crypto.createHash("sha256");
15
16
  return sha256.update(text).digest("base64");
@@ -108,7 +109,7 @@ function bindStep(context, store, name, old, unique = false) {
108
109
  return lastResult;
109
110
  };
110
111
  }
111
- let EternityContext = class EternityContext {
112
+ let WorkflowContext = class WorkflowContext {
112
113
  constructor(storage) {
113
114
  this.storage = storage;
114
115
  this.registry = new Map();
@@ -116,21 +117,31 @@ let EternityContext = class EternityContext {
116
117
  register(type) {
117
118
  this.registry.set(type.name, WorkflowRegistry.register(type, void 0));
118
119
  }
119
- async start(signal) {
120
+ async start({ workerGroup = "default", signal = void 0 }) {
120
121
  console.log(`Started executing workflow jobs`);
121
122
  while (!signal?.aborted) {
123
+ const env_1 = { stack: [], error: void 0, hasError: false };
122
124
  try {
123
- const total = await this.processQueueOnce(signal);
124
- if (total > 0) {
125
- // do not wait till we have zero messages to process
126
- continue;
125
+ try {
126
+ const total = await this.processQueueOnce({ workerGroup, signal });
127
+ if (total > 0) {
128
+ // do not wait till we have zero messages to process
129
+ continue;
130
+ }
131
+ }
132
+ catch (error) {
133
+ console.error(error);
127
134
  }
135
+ const ws = __addDisposableResource(env_1, Waiter.create(), false);
136
+ await sleep(15000, ws.signal);
128
137
  }
129
- catch (error) {
130
- console.error(error);
138
+ catch (e_1) {
139
+ env_1.error = e_1;
140
+ env_1.hasError = true;
141
+ }
142
+ finally {
143
+ __disposeResources(env_1);
131
144
  }
132
- const ws = (this.waiter = new AbortController()).signal;
133
- await sleep(15000, ws);
134
145
  }
135
146
  }
136
147
  async get(c, id) {
@@ -183,7 +194,7 @@ let EternityContext = class EternityContext {
183
194
  eta
184
195
  });
185
196
  if (eta < clock.utcNow) {
186
- this.waiter?.abort();
197
+ Waiter.releaseAll();
187
198
  }
188
199
  }
189
200
  catch (error) {
@@ -217,13 +228,13 @@ let EternityContext = class EternityContext {
217
228
  parent.eta = w.updated;
218
229
  parent.updated = w.updated;
219
230
  await this.storage.save(parent);
220
- this.waiter?.abort();
231
+ Waiter.releaseAll();
221
232
  }
222
233
  log(...a) {
223
234
  // console.log(... a);
224
235
  }
225
- async processQueueOnce(signal) {
226
- const pending = await this.storage.dequeue(signal);
236
+ async processQueueOnce({ workerGroup = "default", signal = void 0 } = {}) {
237
+ const pending = await this.storage.dequeue(workerGroup, signal);
227
238
  // run...
228
239
  for (const iterator of pending) {
229
240
  try {
@@ -259,7 +270,7 @@ let EternityContext = class EternityContext {
259
270
  throw new ActivitySuspendedError();
260
271
  }
261
272
  async run(workflow) {
262
- const env_1 = { stack: [], error: void 0, hasError: false };
273
+ const env_2 = { stack: [], error: void 0, hasError: false };
263
274
  try {
264
275
  const clock = this.storage.clock;
265
276
  if (workflow.state === "failed" || workflow.state === "done") {
@@ -269,7 +280,7 @@ let EternityContext = class EternityContext {
269
280
  }
270
281
  return;
271
282
  }
272
- const scope = __addDisposableResource(env_1, ServiceProvider.from(this).createScope(), false);
283
+ const scope = __addDisposableResource(env_2, ServiceProvider.from(this).createScope(), false);
273
284
  this.log(`Run workflow ${workflow.id} -----------------------------------`);
274
285
  const schema = WorkflowRegistry.getByName(workflow.name);
275
286
  const { eta, id, queued } = workflow;
@@ -322,18 +333,18 @@ let EternityContext = class EternityContext {
322
333
  }
323
334
  }
324
335
  }
325
- catch (e_1) {
326
- env_1.error = e_1;
327
- env_1.hasError = true;
336
+ catch (e_2) {
337
+ env_2.error = e_2;
338
+ env_2.hasError = true;
328
339
  }
329
340
  finally {
330
- __disposeResources(env_1);
341
+ __disposeResources(env_2);
331
342
  }
332
343
  }
333
344
  };
334
- EternityContext = __decorate([
345
+ WorkflowContext = __decorate([
335
346
  __param(0, Inject),
336
- __metadata("design:paramtypes", [EternityStorage])
337
- ], EternityContext);
338
- export default EternityContext;
339
- //# sourceMappingURL=EternityContext.js.map
347
+ __metadata("design:paramtypes", [WorkflowStorage])
348
+ ], WorkflowContext);
349
+ export default WorkflowContext;
350
+ //# sourceMappingURL=WorkflowContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowContext.js","sourceRoot":"","sources":["../../src/workflows/WorkflowContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowRegistry.d.ts","sourceRoot":"","sources":["../../src/workflows/WorkflowRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAKD,eAAO,MAAM,gBAAgB;qBACR,SAAS,GAAG,CAAC;oBAgBd,MAAM;CAGzB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowRegistry.js","sourceRoot":"","sources":["../../src/workflows/WorkflowRegistry.ts"],"names":[],"mappings":"AAUA,sDAAsD;AACtD,MAAM,YAAY,GAAgC,IAAI,GAAG,EAAE,CAAC;AAE5D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,QAAQ,CAAC,MAAqB,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK;QAC/C,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;YACnH,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC1C;QACD,IAAI,GAAG,EAAE;YACL,IAAI,MAAM,EAAE;gBACR,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACtC;iBAAM;gBACH,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAChC;SACJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,SAAS,CAAC,IAAY;QAClB,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACJ,CAAC"}
@@ -2,7 +2,7 @@
2
2
  import { BaseDriver } from "../drivers/base/BaseDriver.js";
3
3
  import DateTime from "../types/DateTime.js";
4
4
  import WorkflowClock from "./WorkflowClock.js";
5
- export declare class WorkflowStorage {
5
+ export declare class WorkflowItem {
6
6
  id: string;
7
7
  isWorkflow: boolean;
8
8
  name: string;
@@ -12,6 +12,7 @@ export declare class WorkflowStorage {
12
12
  eta: DateTime;
13
13
  queued: DateTime;
14
14
  updated: DateTime;
15
+ workerGroup: string;
15
16
  priority: number;
16
17
  lockedTTL: DateTime;
17
18
  lockToken: string;
@@ -21,7 +22,7 @@ export declare class WorkflowStorage {
21
22
  parentID: string;
22
23
  lastID: string;
23
24
  }
24
- export default class EternityStorage {
25
+ export default class WorkflowStorage {
25
26
  private driver;
26
27
  readonly clock: WorkflowClock;
27
28
  private lockQuery;
@@ -58,8 +59,8 @@ export default class EternityStorage {
58
59
  * @returns true if all items are deleted
59
60
  */
60
61
  delete(id: any): Promise<boolean>;
61
- save(state: Partial<WorkflowStorage>): Promise<void>;
62
- dequeue(signal?: AbortSignal): Promise<WorkflowStorage[]>;
62
+ save(state: Partial<WorkflowItem>): Promise<void>;
63
+ dequeue(workerGroup: string, signal?: AbortSignal): Promise<WorkflowItem[]>;
63
64
  seed(): Promise<void>;
64
65
  }
65
- //# sourceMappingURL=EternityStorage.d.ts.map
66
+ //# sourceMappingURL=WorkflowStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowStorage.d.ts","sourceRoot":"","sources":["../../src/workflows/WorkflowStorage.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAG/C,qBAca,YAAY;IAGd,EAAE,EAAE,MAAM,CAAC;IAGX,UAAU,EAAE,OAAO,CAAC;IAGpB,IAAI,EAAE,MAAM,CAAC;IAGb,SAAS,EAAE,MAAM,CAAC;IAGlB,KAAK,EAAE,MAAM,CAAC;IAGd,MAAM,EAAE,MAAM,CAAC;IAGf,GAAG,EAAE,QAAQ,CAAC;IAGd,MAAM,EAAE,QAAQ,CAAC;IAGjB,OAAO,EAAE,QAAQ,CAAC;IAMlB,WAAW,EAAE,MAAM,CAAC;IAGpB,QAAQ,EAAE,MAAM,CAAC;IAGjB,SAAS,EAAE,QAAQ,CAAC;IAGpB,SAAS,EAAE,MAAM,CAAC;IAGlB,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAGpC,KAAK,EAAE,MAAM,CAAC;IAGd,KAAK,EAAE,MAAM,CAAC;IAGd,QAAQ,EAAE,MAAM,CAAC;IAGjB,MAAM,EAAE,MAAM,CAAC;CACzB;AAcD,MAAM,CAAC,OAAO,OAAO,eAAe;IAM5B,OAAO,CAAC,MAAM;aAEE,KAAK,EAAE,aAAa;IANxC,OAAO,CAAC,SAAS,CAAW;gBAIhB,MAAM,EAAE,UAAU,EAEV,KAAK,EAAE,aAAa;IAKlC,WAAW,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;IAsBtB,MAAM,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;IAqBvB;;;;OAIG;IACG,MAAM,CAAC,EAAE,KAAA;IAwBT,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC;IAuBjC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAqEjD,IAAI;CAMb"}
@@ -9,77 +9,84 @@ import EntityContext from "../model/EntityContext.js";
9
9
  import { CallExpression, Expression, NullExpression, NumberLiteral, UpdateStatement } from "../query/ast/Expressions.js";
10
10
  import DateTime from "../types/DateTime.js";
11
11
  import WorkflowClock from "./WorkflowClock.js";
12
- let WorkflowStorage = class WorkflowStorage {
12
+ let WorkflowItem = class WorkflowItem {
13
13
  };
14
14
  __decorate([
15
15
  Column({ dataType: "Char", length: 400, key: true }),
16
16
  __metadata("design:type", String)
17
- ], WorkflowStorage.prototype, "id", void 0);
17
+ ], WorkflowItem.prototype, "id", void 0);
18
18
  __decorate([
19
19
  Column({ dataType: "Boolean" }),
20
20
  __metadata("design:type", Boolean)
21
- ], WorkflowStorage.prototype, "isWorkflow", void 0);
21
+ ], WorkflowItem.prototype, "isWorkflow", void 0);
22
22
  __decorate([
23
23
  Column({ dataType: "Char", nullable: true }),
24
24
  __metadata("design:type", String)
25
- ], WorkflowStorage.prototype, "name", void 0);
25
+ ], WorkflowItem.prototype, "name", void 0);
26
26
  __decorate([
27
27
  Column({ dataType: "Char", length: 200, nullable: true }),
28
28
  __metadata("design:type", String)
29
- ], WorkflowStorage.prototype, "groupName", void 0);
29
+ ], WorkflowItem.prototype, "groupName", void 0);
30
30
  __decorate([
31
31
  Column({ dataType: "Char" }),
32
32
  __metadata("design:type", String)
33
- ], WorkflowStorage.prototype, "input", void 0);
33
+ ], WorkflowItem.prototype, "input", void 0);
34
34
  __decorate([
35
35
  Column({ dataType: "Char", nullable: true }),
36
36
  __metadata("design:type", String)
37
- ], WorkflowStorage.prototype, "output", void 0);
37
+ ], WorkflowItem.prototype, "output", void 0);
38
38
  __decorate([
39
39
  Column({}),
40
40
  __metadata("design:type", DateTime)
41
- ], WorkflowStorage.prototype, "eta", void 0);
41
+ ], WorkflowItem.prototype, "eta", void 0);
42
42
  __decorate([
43
43
  Column({}),
44
44
  __metadata("design:type", DateTime)
45
- ], WorkflowStorage.prototype, "queued", void 0);
45
+ ], WorkflowItem.prototype, "queued", void 0);
46
46
  __decorate([
47
47
  Column({}),
48
48
  __metadata("design:type", DateTime)
49
- ], WorkflowStorage.prototype, "updated", void 0);
49
+ ], WorkflowItem.prototype, "updated", void 0);
50
+ __decorate([
51
+ Column({
52
+ dataType: "Char", length: 50,
53
+ default: () => `default`
54
+ }),
55
+ __metadata("design:type", String)
56
+ ], WorkflowItem.prototype, "workerGroup", void 0);
50
57
  __decorate([
51
58
  Column({ dataType: "Int", default: () => 0 }),
52
59
  __metadata("design:type", Number)
53
- ], WorkflowStorage.prototype, "priority", void 0);
60
+ ], WorkflowItem.prototype, "priority", void 0);
54
61
  __decorate([
55
62
  Column({ nullable: true }),
56
63
  __metadata("design:type", DateTime)
57
- ], WorkflowStorage.prototype, "lockedTTL", void 0);
64
+ ], WorkflowItem.prototype, "lockedTTL", void 0);
58
65
  __decorate([
59
66
  Column({ nullable: true }),
60
67
  __metadata("design:type", String)
61
- ], WorkflowStorage.prototype, "lockToken", void 0);
68
+ ], WorkflowItem.prototype, "lockToken", void 0);
62
69
  __decorate([
63
70
  Column({ dataType: "AsciiChar", length: 10 }),
64
71
  __metadata("design:type", String)
65
- ], WorkflowStorage.prototype, "state", void 0);
72
+ ], WorkflowItem.prototype, "state", void 0);
66
73
  __decorate([
67
74
  Column({ dataType: "Char", nullable: true }),
68
75
  __metadata("design:type", String)
69
- ], WorkflowStorage.prototype, "error", void 0);
76
+ ], WorkflowItem.prototype, "error", void 0);
70
77
  __decorate([
71
78
  Column({ dataType: "Char", nullable: true }),
72
79
  __metadata("design:type", String)
73
- ], WorkflowStorage.prototype, "extra", void 0);
80
+ ], WorkflowItem.prototype, "extra", void 0);
74
81
  __decorate([
75
82
  Column({ dataType: "Char", length: 200, nullable: true }),
76
83
  __metadata("design:type", String)
77
- ], WorkflowStorage.prototype, "parentID", void 0);
84
+ ], WorkflowItem.prototype, "parentID", void 0);
78
85
  __decorate([
79
86
  Column({ dataType: "Char", length: 200, nullable: true }),
80
87
  __metadata("design:type", String)
81
- ], WorkflowStorage.prototype, "lastID", void 0);
82
- WorkflowStorage = __decorate([
88
+ ], WorkflowItem.prototype, "lastID", void 0);
89
+ WorkflowItem = __decorate([
83
90
  Table("Workflows"),
84
91
  Index({
85
92
  name: "IX_Workflows_Group",
@@ -87,16 +94,19 @@ WorkflowStorage = __decorate([
87
94
  filter: (x) => x.groupName !== null
88
95
  }),
89
96
  Index({
90
- name: "IX_Workflows_ETA",
91
- columns: [{ name: (x) => x.eta, descending: false }],
97
+ name: "IX_Workflows_WorkerGroup_ETA",
98
+ columns: [
99
+ { name: (x) => x.eta, descending: false },
100
+ { name: (x) => x.workerGroup, descending: false }
101
+ ],
92
102
  filter: (x) => x.isWorkflow === true
93
103
  })
94
- ], WorkflowStorage);
95
- export { WorkflowStorage };
104
+ ], WorkflowItem);
105
+ export { WorkflowItem };
96
106
  let WorkflowContext = class WorkflowContext extends EntityContext {
97
107
  constructor() {
98
108
  super(...arguments);
99
- this.workflows = this.model.register(WorkflowStorage);
109
+ this.workflows = this.model.register(WorkflowItem);
100
110
  this.verifyFilters = false;
101
111
  this.raiseEvents = false;
102
112
  }
@@ -104,7 +114,7 @@ let WorkflowContext = class WorkflowContext extends EntityContext {
104
114
  WorkflowContext = __decorate([
105
115
  RegisterScoped
106
116
  ], WorkflowContext);
107
- let EternityStorage = class EternityStorage {
117
+ let WorkflowStorage = class WorkflowStorage {
108
118
  constructor(driver, clock) {
109
119
  this.driver = driver;
110
120
  this.clock = clock;
@@ -191,15 +201,16 @@ let EternityStorage = class EternityStorage {
191
201
  }
192
202
  }
193
203
  w.state ||= "queued";
204
+ w.workerGroup ||= "default";
194
205
  w.updated ??= DateTime.utcNow;
195
206
  await db.saveChanges();
196
207
  });
197
208
  }
198
- async dequeue(signal) {
209
+ async dequeue(workerGroup, signal) {
199
210
  const db = new WorkflowContext(this.driver);
200
211
  const now = this.clock.utcNow;
201
212
  if (!this.lockQuery) {
202
- const type = db.model.getEntityType(WorkflowStorage);
213
+ const type = db.model.getEntityType(WorkflowItem);
203
214
  const px = Expression.parameter("x");
204
215
  const lockTokenField = type.getProperty("lockToken").field.columnName;
205
216
  const lockTTLField = type.getProperty("lockedTTL").field.columnName;
@@ -222,10 +233,11 @@ let EternityStorage = class EternityStorage {
222
233
  }
223
234
  const q = this.lockQuery;
224
235
  const items = await db.workflows
225
- .where({ now }, (p) => (x) => x.eta <= p.now
236
+ .where({ now, workerGroup }, (p) => (x) => x.eta <= p.now
226
237
  && (x.lockedTTL === null || x.lockedTTL <= p.now)
227
238
  && x.lockToken === null
228
- && x.isWorkflow === true)
239
+ && x.isWorkflow === true
240
+ && x.workerGroup === p.workerGroup)
229
241
  .orderBy({}, (p) => (x) => x.eta)
230
242
  .thenBy({}, (p) => (x) => x.priority)
231
243
  .limit(20)
@@ -249,12 +261,12 @@ let EternityStorage = class EternityStorage {
249
261
  await db.connection.automaticMigrations().migrate(db);
250
262
  }
251
263
  };
252
- EternityStorage = __decorate([
264
+ WorkflowStorage = __decorate([
253
265
  RegisterSingleton,
254
266
  __param(0, Inject),
255
267
  __param(1, Inject),
256
268
  __metadata("design:paramtypes", [BaseDriver,
257
269
  WorkflowClock])
258
- ], EternityStorage);
259
- export default EternityStorage;
260
- //# sourceMappingURL=EternityStorage.js.map
270
+ ], WorkflowStorage);
271
+ export default WorkflowStorage;
272
+ //# sourceMappingURL=WorkflowStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowStorage.js","sourceRoot":"","sources":["../../src/workflows/WorkflowStorage.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAC7C,OAAO,KAAK,MAAM,wBAAwB,CAAC;AAC3C,OAAO,KAAK,MAAM,wBAAwB,CAAC;AAC3C,OAAO,MAAM,EAAE,EAAE,cAAc,EAAE,iBAAiB,EAAmB,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAoB,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC3I,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAiBxC,IAAM,YAAY,GAAlB,MAAM,YAAY;CA0DxB,CAAA;AAvDU;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;;wCACnC;AAGX;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;;gDACL;AAGpB;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACzB;AAGb;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACjC;AAGlB;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAC,CAAC;;2CACP;AAGd;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;;4CACtB;AAGf;IADN,MAAM,CAAC,EAAG,CAAC;8BACA,QAAQ;yCAAC;AAGd;IADN,MAAM,CAAC,EAAG,CAAC;8BACG,QAAQ;4CAAC;AAGjB;IADN,MAAM,CAAC,EAAG,CAAC;8BACI,QAAQ;6CAAC;AAMlB;IAJN,MAAM,CAAC;QACJ,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;KAC3B,CAAC;;iDACyB;AAGpB;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC;;8CACrB;AAGjB;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACT,QAAQ;+CAAC;AAGpB;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACF;AAGlB;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;;2CACF;AAGpC;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;;2CACvB;AAGd;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;;2CACvB;AAGd;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAG,QAAQ,EAAE,IAAI,EAAC,CAAC;;8CAClC;AAGjB;IADN,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAG,QAAQ,EAAE,IAAI,EAAC,CAAC;;4CACpC;AAzDb,YAAY;IAdxB,KAAK,CAAC,WAAW,CAAC;IAClB,KAAK,CAAC;QACH,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC1D,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI;KACtC,CAAC;IACD,KAAK,CAAC;QACH,IAAI,EAAE,8BAA8B;QACpC,OAAO,EAAE;YACL,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE;YACzC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE;SACpD;QACD,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI;KACvC,CAAC;GACW,YAAY,CA0DxB;;AAGD,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,aAAa;IAA3C;;QAEW,cAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAErD,kBAAa,GAAY,KAAK,CAAC;QAE/B,gBAAW,GAAY,KAAK,CAAC;IAEjC,CAAC;CAAA,CAAA;AARK,eAAe;IADpB,cAAc;GACT,eAAe,CAQpB;AAGc,IAAM,eAAe,GAArB,MAAM,eAAe;IAIhC,YAEY,MAAkB,EAEV,KAAoB;QAF5B,WAAM,GAAN,MAAM,CAAY;QAEV,UAAK,GAAL,KAAK,CAAe;IAGxC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU;QACxB,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACzG,IAAI,CAAC,KAAK,IAAI,EAAE;YACZ,OAAO;gBACH,EAAE;gBACF,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,CAAC,CAAC,SAAS;gBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;aACnB,CAAC;SACL;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,KAAK,CAAC,MAAM,CAAC,EAAU;QACnB,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAChF,IAAI,CAAC,KAAK,IAAI,EAAE;YACZ,OAAO;gBACH,EAAE;gBACF,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,CAAC,CAAC,SAAS;gBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;aACnB,CAAC;SACL;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE;QACX,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;aAC9E,KAAK,CAAC,GAAG,CAAC;aACV,OAAO,EAAE,CAAC;QACf,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE;YAC7B,IAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAC;gBAC/B,OAAO,KAAK,CAAC;aAChB;SACJ;QACD,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;QACvB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YACzB,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,EAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/E,IAAI,CAAC,CAAC,EAAE;YACJ,OAAO,IAAI,CAAC;SACf;QACD,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAA4B;QACnC,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC;QACjC,MAAM,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YACzC,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YAC7E,IAAI,CAAC,CAAC,EAAE;gBACJ,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aAC/B;YAED,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;gBACrB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;oBAClD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC3B,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;iBACpB;aACJ;YAED,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC;YACrB,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC;YAC5B,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,MAAM,CAAC;YAC9B,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,MAAoB;QACnD,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAE9B,IAAG,CAAC,IAAI,CAAC,SAAS,EAAE;YAEhB,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAElD,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;YACtE,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;YAEpE,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC;gBAC/B,KAAK,EAAE,IAAI,CAAC,kBAAkB;gBAC9B,GAAG,EAAE;oBACD,UAAU,CAAC,MAAM,CACb,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,EACrC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CACrC;oBACD,UAAU,CAAC,MAAM,CACb,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,EACnC,cAAc,CAAC,MAAM,CAAC;wBAClB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC;wBAChG,SAAS,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;gCAC9B,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC;6BAC5F,CAAC;4BACF,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;yBACrC;qBACA,CAAC,CACL;iBACJ;gBACD,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CACzC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAC3B,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAC9B,EAAE,UAAU,CAAC,KAAK,CACf,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,EACrC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAC5B,CAAC;aACL,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;SAC1E;QAED,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAEzB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,SAAS;aAC3B,KAAK,CAAC,EAAC,GAAG,EAAE,WAAW,EAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG;eAChD,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC;eAC9C,CAAC,CAAC,SAAS,KAAK,IAAI;eACpB,CAAC,CAAC,UAAU,KAAK,IAAI;eACrB,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,CAAC;aACtC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;aAChC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;aACpC,KAAK,CAAC,EAAE,CAAC;aACT,UAAU,CAAC,MAAM,CAAC;aAClB,OAAO,EAAE,CAAC;QACf,MAAM,IAAI,GAAmB,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;YAC1B,yBAAyB;YACzB,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;YAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE;gBACf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACvB;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI;QACN,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;QACrC,MAAM,EAAE,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;CAEJ,CAAA;AAvLoB,eAAe;IADnC,iBAAiB;IAMT,WAAA,MAAM,CAAA;IAEN,WAAA,MAAM,CAAA;qCADS,UAAU;QAEH,aAAa;GARvB,eAAe,CAuLnC;eAvLoB,eAAe"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entity-access/entity-access",
3
- "version": "1.0.161",
3
+ "version": "1.0.163",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/src/index.ts CHANGED
@@ -2,22 +2,22 @@ export { BaseDriver } from "./drivers/base/BaseDriver.js";
2
2
  export { default as SqlServerDriver } from "./drivers/sql-server/SqlServerDriver.js";
3
3
  export { default as PostgreSqlDriver } from "./drivers/postgres/PostgreSqlDriver.js";
4
4
 
5
- export { default as EternityStorage } from "./eternity/EternityStorage.js";
5
+ export { default as EternityStorage } from "./workflows/WorkflowStorage.js";
6
6
  export { default as EntityAccessError } from "./common/EntityAccessError.js";
7
7
  export { default as DateTime } from "./types/DateTime.js";
8
8
  export { default as ChangeSet } from "./model/changes/ChangeSet.js";
9
9
  export { default as ChangeEntry } from "./model/changes/ChangeEntry.js";
10
10
  export { default as ContextEvents } from "./model/events/ContextEvents.js";
11
11
  export { default as TimedCache } from "./common/cache/TimedCache.js";
12
- export { Activity, UniqueActivity } from "./eternity/Workflow.js";
13
- export { default as Workflow } from "./eternity/Workflow.js";
12
+ export { Activity, UniqueActivity } from "./workflows/Workflow.js";
13
+ export { default as Workflow } from "./workflows/Workflow.js";
14
14
  export { default as Sql } from "./sql/Sql.js";
15
15
  export { default as Index } from "./decorators/Index.js";
16
16
  export { default as Table } from "./decorators/Table.js";
17
17
  export { RelateTo, RelateToOne } from "./decorators/Relate.js";
18
18
  export { default as Column } from "./decorators/Column.js";
19
19
  export { default as EntityContext } from "./model/EntityContext.js";
20
- export { default as EternityContext } from "./eternity/EternityContext.js";
20
+ export { default as EternityContext } from "./workflows/WorkflowContext.js";
21
21
 
22
22
  export {
23
23
  default as Inject,
@@ -1,12 +1,12 @@
1
1
  import assert from "assert";
2
2
  import Inject, { Register, RegisterSingleton, ServiceProvider } from "../../di/di.js";
3
- import EternityContext from "../../eternity/EternityContext.js";
4
- import Workflow, { Activity, UniqueActivity } from "../../eternity/Workflow.js";
5
- import WorkflowClock from "../../eternity/WorkflowClock.js";
3
+ import WorkflowContext from "../../workflows/WorkflowContext.js";
4
+ import Workflow, { Activity, UniqueActivity } from "../../workflows/Workflow.js";
5
+ import WorkflowClock from "../../workflows/WorkflowClock.js";
6
6
  import DateTime from "../../types/DateTime.js";
7
7
  import { TestConfig } from "../TestConfig.js";
8
8
  import { BaseDriver } from "../../drivers/base/BaseDriver.js";
9
- import EternityStorage from "../../eternity/EternityStorage.js";
9
+ import WorkflowStorage from "../../workflows/WorkflowStorage.js";
10
10
  import TimeSpan from "../../types/TimeSpan.js";
11
11
  import sleep from "../../common/sleep.js";
12
12
 
@@ -70,11 +70,11 @@ export default async function(this: TestConfig) {
70
70
  scope.add(WorkflowClock, mockClock);
71
71
  scope.add(BaseDriver, this.driver);
72
72
  scope.add(CallTracker, tracker);
73
- const storage = new EternityStorage(this.driver, mockClock);
74
- scope.add(EternityStorage, storage);
73
+ const storage = new WorkflowStorage(this.driver, mockClock);
74
+ scope.add(WorkflowStorage, storage);
75
75
 
76
- const c = new EternityContext(storage);
77
- scope.add(EternityContext, c);
76
+ const c = new WorkflowContext(storage);
77
+ scope.add(WorkflowContext, c);
78
78
 
79
79
  // this is an important step
80
80
  c.register(ChildWorkflow);
@@ -1,12 +1,12 @@
1
1
  import assert from "assert";
2
2
  import Inject, { Register, RegisterSingleton, ServiceProvider } from "../../di/di.js";
3
- import EternityContext from "../../eternity/EternityContext.js";
4
- import Workflow, { Activity } from "../../eternity/Workflow.js";
5
- import WorkflowClock from "../../eternity/WorkflowClock.js";
3
+ import WorkflowContext from "../../workflows/WorkflowContext.js";
4
+ import Workflow, { Activity } from "../../workflows/Workflow.js";
5
+ import WorkflowClock from "../../workflows/WorkflowClock.js";
6
6
  import DateTime from "../../types/DateTime.js";
7
7
  import { TestConfig } from "../TestConfig.js";
8
8
  import { BaseDriver } from "../../drivers/base/BaseDriver.js";
9
- import EternityStorage from "../../eternity/EternityStorage.js";
9
+ import WorkflowStorage from "../../workflows/WorkflowStorage.js";
10
10
  import TimeSpan from "../../types/TimeSpan.js";
11
11
  import sleep from "../../common/sleep.js";
12
12
 
@@ -64,12 +64,12 @@ export default async function (this: TestConfig) {
64
64
  const scope = new ServiceProvider();
65
65
  scope.add(WorkflowClock, mockClock);
66
66
  scope.add(BaseDriver, this.driver);
67
- const storage = new EternityStorage(this.driver, mockClock);
67
+ const storage = new WorkflowStorage(this.driver, mockClock);
68
68
  scope.add(Mailer, mailer);
69
- scope.add(EternityStorage, storage);
69
+ scope.add(WorkflowStorage, storage);
70
70
 
71
- const c = new EternityContext(storage);
72
- scope.add(EternityContext, c);
71
+ const c = new WorkflowContext(storage);
72
+ scope.add(WorkflowContext, c);
73
73
 
74
74
  // this is an important step
75
75
  c.register(SendWorkflow);
@@ -1,12 +1,12 @@
1
1
  import assert from "assert";
2
2
  import Inject, { Register, RegisterScoped, RegisterSingleton, ServiceProvider } from "../../di/di.js";
3
- import EternityContext from "../../eternity/EternityContext.js";
4
- import Workflow, { Activity } from "../../eternity/Workflow.js";
5
- import WorkflowClock from "../../eternity/WorkflowClock.js";
3
+ import WorkflowContext from "../../workflows/WorkflowContext.js";
4
+ import Workflow, { Activity } from "../../workflows/Workflow.js";
5
+ import WorkflowClock from "../../workflows/WorkflowClock.js";
6
6
  import DateTime from "../../types/DateTime.js";
7
7
  import { TestConfig } from "../TestConfig.js";
8
8
  import { BaseDriver } from "../../drivers/base/BaseDriver.js";
9
- import EternityStorage from "../../eternity/EternityStorage.js";
9
+ import WorkflowStorage from "../../workflows/WorkflowStorage.js";
10
10
  import TimeSpan from "../../types/TimeSpan.js";
11
11
  import sleep from "../../common/sleep.js";
12
12
 
@@ -78,11 +78,11 @@ export default async function (this: TestConfig) {
78
78
  scope.add(WorkflowClock, mockClock);
79
79
  scope.add(BaseDriver, this.driver);
80
80
  scope.add(StateLogger, stateLogger);
81
- const storage = new EternityStorage(this.driver, mockClock);
82
- scope.add(EternityStorage, storage);
81
+ const storage = new WorkflowStorage(this.driver, mockClock);
82
+ scope.add(WorkflowStorage, storage);
83
83
 
84
- const c = new EternityContext(storage);
85
- scope.add(EternityContext, c);
84
+ const c = new WorkflowContext(storage);
85
+ scope.add(WorkflowContext, c);
86
86
 
87
87
  // this is an important step
88
88
  c.register(VerifyWorkflow);
@@ -0,0 +1,24 @@
1
+ export default class Waiter {
2
+
3
+ public static create() {
4
+ return new Waiter();
5
+ }
6
+
7
+ public static releaseAll() {
8
+ const copy = Array.from(this.set);
9
+ this.set.clear();
10
+ for (const iterator of copy) {
11
+ iterator.controller.abort();
12
+ }
13
+ }
14
+
15
+ private static set = new Set<Waiter>();
16
+
17
+ constructor(private controller = new AbortController(), public readonly signal = controller.signal) {
18
+ }
19
+
20
+ [Symbol.dispose]() {
21
+ Waiter.set.delete(this);
22
+ }
23
+
24
+ }
@@ -3,7 +3,7 @@ import Inject from "../di/di.js";
3
3
  import DateTime from "../types/DateTime.js";
4
4
  import TimeSpan from "../types/TimeSpan.js";
5
5
  import { ActivitySuspendedError } from "./ActivitySuspendedError.js";
6
- import EternityContext from "./EternityContext.js";
6
+ import WorkflowContext from "./WorkflowContext.js";
7
7
  import { WorkflowRegistry } from "./WorkflowRegistry.js";
8
8
 
9
9
 
@@ -50,7 +50,7 @@ export default abstract class Workflow<TIn = any, TOut = any> {
50
50
  eta: DateTime,
51
51
  currentTime: DateTime
52
52
  },
53
- protected context: EternityContext
53
+ protected context: WorkflowContext
54
54
  ) {
55
55
  this.input = input;
56
56
  this.id = id;