@resonatehq/sdk 0.3.7 → 0.5.1

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 (55) hide show
  1. package/README.md +24 -130
  2. package/dist/async.d.ts +99 -49
  3. package/dist/async.d.ts.map +1 -1
  4. package/dist/async.js +173 -100
  5. package/dist/async.js.map +1 -1
  6. package/dist/core/execution.d.ts +13 -10
  7. package/dist/core/execution.d.ts.map +1 -1
  8. package/dist/core/execution.js +174 -69
  9. package/dist/core/execution.js.map +1 -1
  10. package/dist/core/future.d.ts +6 -4
  11. package/dist/core/future.d.ts.map +1 -1
  12. package/dist/core/future.js +7 -1
  13. package/dist/core/future.js.map +1 -1
  14. package/dist/core/invocation.d.ts +6 -5
  15. package/dist/core/invocation.d.ts.map +1 -1
  16. package/dist/core/invocation.js +40 -14
  17. package/dist/core/invocation.js.map +1 -1
  18. package/dist/core/options.d.ts +32 -11
  19. package/dist/core/options.d.ts.map +1 -1
  20. package/dist/core/options.js +3 -3
  21. package/dist/core/options.js.map +1 -1
  22. package/dist/core/promises/promises.d.ts +4 -3
  23. package/dist/core/promises/promises.d.ts.map +1 -1
  24. package/dist/core/promises/promises.js +7 -3
  25. package/dist/core/promises/promises.js.map +1 -1
  26. package/dist/core/promises/types.d.ts.map +1 -1
  27. package/dist/core/promises/types.js +2 -5
  28. package/dist/core/promises/types.js.map +1 -1
  29. package/dist/core/schedules/schedules.d.ts +22 -0
  30. package/dist/core/schedules/schedules.d.ts.map +1 -0
  31. package/dist/core/schedules/schedules.js +29 -0
  32. package/dist/core/schedules/schedules.js.map +1 -0
  33. package/dist/core/store.d.ts +5 -2
  34. package/dist/core/store.d.ts.map +1 -1
  35. package/dist/core/stores/local.d.ts +1 -1
  36. package/dist/core/stores/local.d.ts.map +1 -1
  37. package/dist/core/stores/local.js +7 -5
  38. package/dist/core/stores/local.js.map +1 -1
  39. package/dist/core/stores/remote.d.ts +7 -7
  40. package/dist/core/stores/remote.d.ts.map +1 -1
  41. package/dist/core/stores/remote.js +30 -23
  42. package/dist/core/stores/remote.js.map +1 -1
  43. package/dist/generator.d.ts +39 -18
  44. package/dist/generator.d.ts.map +1 -1
  45. package/dist/generator.js +72 -73
  46. package/dist/generator.js.map +1 -1
  47. package/dist/index.d.ts +23 -3
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +38 -6
  50. package/dist/index.js.map +1 -1
  51. package/dist/resonate.d.ts +109 -32
  52. package/dist/resonate.d.ts.map +1 -1
  53. package/dist/resonate.js +144 -60
  54. package/dist/resonate.js.map +1 -1
  55. package/package.json +1 -1
@@ -8,6 +8,7 @@ const promises_1 = require("./promises/promises");
8
8
  // Execution
9
9
  /////////////////////////////////////////////////////////////////////
10
10
  class Execution {
11
+ resonate;
11
12
  invocation;
12
13
  promise = null;
13
14
  /**
@@ -16,14 +17,21 @@ class Execution {
16
17
  * @constructor
17
18
  * @param invocation - An invocation correpsonding to the Resonate function.
18
19
  */
19
- constructor(invocation) {
20
+ constructor(resonate, invocation) {
21
+ this.resonate = resonate;
20
22
  this.invocation = invocation;
21
23
  }
22
24
  execute() {
23
25
  if (this.promise) {
24
26
  return this.promise;
25
27
  }
28
+ // each execution has a fork phase and a join phase
29
+ // fork phase is responsible for spawning the invocation,
30
+ // which in general means creating a durable promise (if necessary)
26
31
  const forkPromise = this.fork();
32
+ // join phase is responsible for awaiting the invocation,
33
+ // if the invocation is backed by a durable promise the durable
34
+ // promise is completed before the invocation is completed
27
35
  const joinPromise = forkPromise.then((f) => this.join(f));
28
36
  this.promise = new future_1.ResonatePromise(this.invocation.id, forkPromise, joinPromise);
29
37
  return this.promise;
@@ -37,58 +45,124 @@ class Execution {
37
45
  // reject only the root invocation
38
46
  this.invocation.root.reject(new errors_1.ResonateError("Resonate function killed", errors_1.ErrorCodes.KILLED, error, true));
39
47
  }
40
- tags() {
41
- if (this.invocation.parent === null) {
42
- return { ...this.invocation.opts.tags, "resonate:invocation": "true" };
48
+ async acquireLock() {
49
+ try {
50
+ return await this.resonate.store.locks.tryAcquire(this.invocation.id, this.invocation.eid);
51
+ }
52
+ catch (e) {
53
+ // if lock is already acquired, return false so we can poll
54
+ if (e instanceof errors_1.ResonateError && e.code === errors_1.ErrorCodes.STORE_FORBIDDEN) {
55
+ return false;
56
+ }
57
+ throw e;
58
+ }
59
+ }
60
+ async releaseLock() {
61
+ try {
62
+ await this.resonate.store.locks.release(this.invocation.id, this.invocation.eid);
63
+ }
64
+ catch (e) {
65
+ this.resonate.logger.warn("Failed to release lock", e);
43
66
  }
44
- return this.invocation.opts.tags;
45
67
  }
46
68
  }
47
69
  exports.Execution = Execution;
48
70
  class OrdinaryExecution extends Execution {
49
71
  func;
50
- retry;
51
- constructor(invocation, func, retry = invocation.opts.retry) {
52
- super(invocation);
72
+ durablePromise;
73
+ constructor(resonate, invocation, func, durablePromise) {
74
+ super(resonate, invocation);
53
75
  this.func = func;
54
- this.retry = retry;
76
+ this.durablePromise = durablePromise;
55
77
  }
56
78
  async fork() {
79
+ if (this.invocation.opts.durable) {
80
+ // if durable, create a durable promise
81
+ try {
82
+ this.durablePromise =
83
+ this.durablePromise ??
84
+ (await promises_1.DurablePromise.create(this.resonate.store.promises, this.invocation.opts.encoder, this.invocation.id, this.invocation.timeout, {
85
+ idempotencyKey: this.invocation.idempotencyKey,
86
+ headers: this.invocation.headers,
87
+ param: this.invocation.param,
88
+ tags: this.invocation.opts.tags,
89
+ }));
90
+ }
91
+ catch (e) {
92
+ // if an error occurs, kill the execution
93
+ this.kill(e);
94
+ }
95
+ }
96
+ if (this.durablePromise) {
97
+ // override the invocation creation time
98
+ this.invocation.createdOn = this.durablePromise.createdOn;
99
+ // override the invocation timeout
100
+ this.invocation.timeout = this.durablePromise.timeout;
101
+ }
102
+ return this.invocation.future;
103
+ }
104
+ async join(future) {
57
105
  try {
58
- // create a durable promise
59
- const promise = await promises_1.DurablePromise.create(this.invocation.opts.store.promises, this.invocation.opts.encoder, this.invocation.id, this.invocation.timeout, {
60
- idempotencyKey: this.invocation.idempotencyKey,
61
- headers: this.invocation.headers,
62
- param: this.invocation.param,
63
- tags: this.tags(),
64
- });
65
- if (promise.pending) {
66
- // if pending, invoke the function and resolve/reject the durable promise
67
- await this.run().then((v) => promise.resolve(v, { idempotencyKey: this.invocation.idempotencyKey }), (e) => promise.reject(e, { idempotencyKey: this.invocation.idempotencyKey }));
106
+ // acquire lock if necessary
107
+ while (this.invocation.opts.lock && !(await this.acquireLock())) {
108
+ await new Promise((resolve) => setTimeout(resolve, this.invocation.opts.poll));
109
+ }
110
+ if (this.durablePromise) {
111
+ if (this.durablePromise.pending) {
112
+ // if durable and pending, invoke the function and resolve/reject the durable promise
113
+ let value;
114
+ let error;
115
+ // we need to hold on to a boolean to determine if the function was successful,
116
+ // we cannot rely on the value or error as these values could be undefined
117
+ let success = true;
118
+ try {
119
+ value = await this.run();
120
+ }
121
+ catch (e) {
122
+ error = e;
123
+ success = false;
124
+ }
125
+ if (success) {
126
+ await this.durablePromise.resolve(value, { idempotencyKey: this.invocation.idempotencyKey });
127
+ }
128
+ else {
129
+ await this.durablePromise.reject(error, { idempotencyKey: this.invocation.idempotencyKey });
130
+ }
131
+ }
132
+ // if durable resolve/reject the invocation
133
+ if (this.durablePromise.resolved) {
134
+ this.invocation.resolve(this.durablePromise.value());
135
+ }
136
+ else if (this.durablePromise.rejected || this.durablePromise.canceled || this.durablePromise.timedout) {
137
+ this.invocation.reject(this.durablePromise.error());
138
+ }
68
139
  }
69
- // resolve/reject the invocation
70
- if (promise.resolved) {
71
- this.invocation.resolve(promise.value());
140
+ else {
141
+ // if not durable, invoke the function and resolve/reject the invocation
142
+ try {
143
+ this.invocation.resolve(await this.run());
144
+ }
145
+ catch (e) {
146
+ this.invocation.reject(e);
147
+ }
72
148
  }
73
- else if (promise.rejected || promise.canceled || promise.timedout) {
74
- this.invocation.reject(promise.error());
149
+ // release lock if necessary
150
+ if (this.invocation.opts.lock) {
151
+ await this.releaseLock();
75
152
  }
76
153
  }
77
154
  catch (e) {
78
155
  // if an error occurs, kill the execution
79
156
  this.kill(e);
80
157
  }
81
- return this.invocation.future;
82
- }
83
- async join(future) {
84
158
  return await future.promise;
85
159
  }
86
160
  async run() {
87
161
  let error;
88
162
  // invoke the function according to the retry policy
89
- for (const delay of this.retry.iterator(this.invocation)) {
163
+ for (const delay of this.invocation.opts.retry.iterator(this.invocation)) {
164
+ await new Promise((resolve) => setTimeout(resolve, delay));
90
165
  try {
91
- await new Promise((resolve) => setTimeout(resolve, delay));
92
166
  return await this.func();
93
167
  }
94
168
  catch (e) {
@@ -103,21 +177,21 @@ class OrdinaryExecution extends Execution {
103
177
  }
104
178
  exports.OrdinaryExecution = OrdinaryExecution;
105
179
  class DeferredExecution extends Execution {
106
- constructor(invocation) {
107
- super(invocation);
108
- }
180
+ durablePromise = null;
109
181
  async fork() {
110
182
  try {
111
183
  // create a durable promise
112
- const promise = await promises_1.DurablePromise.create(this.invocation.opts.store.promises, this.invocation.opts.encoder, this.invocation.id, this.invocation.timeout, {
184
+ this.durablePromise = await promises_1.DurablePromise.create(this.resonate.store.promises, this.invocation.opts.encoder, this.invocation.id, this.invocation.timeout, {
113
185
  idempotencyKey: this.invocation.idempotencyKey,
114
186
  headers: this.invocation.headers,
115
187
  param: this.invocation.param,
116
- tags: this.tags(),
188
+ tags: this.invocation.opts.tags,
117
189
  poll: this.invocation.opts.poll,
118
190
  });
119
- // poll the completion of the durable promise
120
- promise.completed.then((p) => p.resolved ? this.invocation.resolve(p.value()) : this.invocation.reject(p.error()));
191
+ // override the invocation creation time
192
+ this.invocation.createdOn = this.durablePromise.createdOn;
193
+ // override the invocation timeout
194
+ this.invocation.timeout = this.durablePromise.timeout;
121
195
  }
122
196
  catch (e) {
123
197
  // if an error occurs, kill the execution
@@ -126,74 +200,105 @@ class DeferredExecution extends Execution {
126
200
  return this.invocation.future;
127
201
  }
128
202
  async join(future) {
203
+ if (this.durablePromise) {
204
+ // poll the completion of the durable promise
205
+ await this.durablePromise.completed;
206
+ if (this.durablePromise.resolved) {
207
+ this.invocation.resolve(this.durablePromise.value());
208
+ }
209
+ else {
210
+ this.invocation.reject(this.durablePromise.error());
211
+ }
212
+ }
129
213
  return await future.promise;
130
214
  }
131
215
  }
132
216
  exports.DeferredExecution = DeferredExecution;
133
217
  class GeneratorExecution extends Execution {
134
218
  generator;
135
- constructor(invocation, generator) {
136
- super(invocation);
219
+ durablePromise;
220
+ constructor(resonate, invocation, generator, durablePromise) {
221
+ super(resonate, invocation);
137
222
  this.generator = generator;
223
+ this.durablePromise = durablePromise;
138
224
  }
139
225
  async create() {
140
226
  try {
141
- // create a durable promise
142
- const promise = await promises_1.DurablePromise.create(this.invocation.opts.store.promises, this.invocation.opts.encoder, this.invocation.id, this.invocation.timeout, {
143
- idempotencyKey: this.invocation.idempotencyKey,
144
- headers: this.invocation.headers,
145
- param: this.invocation.param,
146
- tags: this.tags(),
147
- });
148
- // resolve/reject the invocation if already completed
149
- if (promise.resolved) {
150
- this.invocation.resolve(promise.value());
227
+ if (this.invocation.opts.durable) {
228
+ // create a durable promise
229
+ this.durablePromise =
230
+ this.durablePromise ??
231
+ (await promises_1.DurablePromise.create(this.resonate.store.promises, this.invocation.opts.encoder, this.invocation.id, this.invocation.timeout, {
232
+ idempotencyKey: this.invocation.idempotencyKey,
233
+ headers: this.invocation.headers,
234
+ param: this.invocation.param,
235
+ tags: this.invocation.opts.tags,
236
+ }));
237
+ // resolve/reject the invocation if already completed
238
+ if (this.durablePromise.resolved) {
239
+ this.invocation.resolve(this.durablePromise.value());
240
+ }
241
+ else if (this.durablePromise.rejected || this.durablePromise.canceled || this.durablePromise.timedout) {
242
+ this.invocation.reject(this.durablePromise.error());
243
+ }
151
244
  }
152
- else if (promise.rejected || promise.canceled || promise.timedout) {
153
- this.invocation.reject(promise.error());
245
+ if (this.durablePromise) {
246
+ // override the invocation creation time
247
+ this.invocation.createdOn = this.durablePromise.createdOn;
248
+ // override the invocation timeout
249
+ this.invocation.timeout = this.durablePromise.timeout;
154
250
  }
155
- return promise;
156
251
  }
157
252
  catch (e) {
158
253
  // if an error occurs, kill the execution
159
254
  this.kill(e);
160
255
  }
161
256
  }
162
- async resolve(promise, value) {
257
+ async resolve(value) {
163
258
  try {
164
- // resolve the durable promise
165
- await promise.resolve(value, { idempotencyKey: this.invocation.idempotencyKey });
166
- // resolve/reject the invocation
167
- if (promise.resolved) {
168
- this.invocation.resolve(promise.value());
259
+ if (this.durablePromise) {
260
+ // resolve the durable promise if the invocation is durable
261
+ await this.durablePromise.resolve(value, { idempotencyKey: this.invocation.idempotencyKey });
262
+ // resolve/reject the invocation
263
+ if (this.durablePromise.resolved) {
264
+ this.invocation.resolve(this.durablePromise.value());
265
+ }
266
+ else if (this.durablePromise.rejected || this.durablePromise.canceled || this.durablePromise.timedout) {
267
+ this.invocation.reject(this.durablePromise.error());
268
+ }
169
269
  }
170
- else if (promise.rejected || promise.canceled || promise.timedout) {
171
- this.invocation.reject(promise.error());
270
+ else {
271
+ // if not durable, just resolve the invocation
272
+ this.invocation.resolve(value);
172
273
  }
173
274
  }
174
275
  catch (e) {
175
276
  // if an error occurs, kill the execution
176
277
  this.kill(e);
177
278
  }
178
- return promise;
179
279
  }
180
- async reject(promise, error) {
280
+ async reject(error) {
181
281
  try {
182
- // reject the durable promise
183
- await promise.reject(error, { idempotencyKey: this.invocation.idempotencyKey });
184
- // resolve/reject the invocation
185
- if (promise.resolved) {
186
- this.invocation.resolve(promise.value());
282
+ if (this.durablePromise) {
283
+ // reject the durable promise if the invocation is durable
284
+ await this.durablePromise.reject(error, { idempotencyKey: this.invocation.idempotencyKey });
285
+ // resolve/reject the invocation
286
+ if (this.durablePromise.resolved) {
287
+ this.invocation.resolve(this.durablePromise.value());
288
+ }
289
+ else if (this.durablePromise.rejected || this.durablePromise.canceled || this.durablePromise.timedout) {
290
+ this.invocation.reject(this.durablePromise.error());
291
+ }
187
292
  }
188
- else if (promise.rejected || promise.canceled || promise.timedout) {
189
- this.invocation.reject(promise.error());
293
+ else {
294
+ // if not durable, just reject the invocation
295
+ this.invocation.reject(error);
190
296
  }
191
297
  }
192
298
  catch (e) {
193
299
  // if an error occurs, kill the execution
194
300
  this.kill(e);
195
301
  }
196
- return promise;
197
302
  }
198
303
  async fork() {
199
304
  return this.invocation.future;
@@ -1 +1 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../lib/core/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../lib/core/execution.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,9 @@ export declare class ResonatePromise<T> extends Promise<T> {
11
11
  * @param created - A promise that resolves when the durable promise has been created.
12
12
  * @param completed - A promise that resolves when the durable promise has been fulfilled.
13
13
  */
14
- constructor(id: string, created: Promise<any>, completed: Promise<T>);
14
+ constructor(id: string, created: Promise<Future<T>>, completed: Promise<T>);
15
15
  }
16
- export type Value<T> = {
16
+ export type FutureValue<T> = {
17
17
  kind: "pending";
18
18
  } | {
19
19
  kind: "resolved";
@@ -43,11 +43,13 @@ export declare class Future<T> {
43
43
  reject: (error: unknown) => void;
44
44
  };
45
45
  get id(): string;
46
- get idempotencyKey(): string | undefined;
46
+ get idempotencyKey(): string;
47
47
  get root(): Future<any>;
48
48
  get parent(): Future<any> | null;
49
49
  get children(): Future<any>[];
50
- get value(): Value<T>;
50
+ get value(): FutureValue<T>;
51
+ get pending(): boolean;
52
+ get completed(): boolean;
51
53
  private resolve;
52
54
  private reject;
53
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"future.d.ts","sourceRoot":"","sources":["../../lib/core/future.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,qBAAa,eAAe,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAkBvC,EAAE,EAAE,MAAM;IAfnB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAIzB,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAW;IAElC;;;;;;;OAOG;gBAEM,EAAE,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EACrB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;CAUxB;AAMD,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEnH,qBAAa,MAAM,CAAC,CAAC;IAejB,OAAO,CAAC,UAAU;IACX,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IAhBjB,QAAQ,CAAC,IAAI,YAAY;IAGzB,OAAO,CAAC,MAAM,CAAiC;IAE/C;;;;;;OAMG;gBAEO,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EACxB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI;IAGxC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;;;;;IAqB5C,IAAI,EAAE,WAEL;IAED,IAAI,cAAc,uBAEjB;IAED,IAAI,IAAI,gBAEP;IAED,IAAI,MAAM,uBAET;IAED,IAAI,QAAQ,kBAEX;IAED,IAAI,KAAK,aAER;IAED,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,MAAM;CAIf"}
1
+ {"version":3,"file":"future.d.ts","sourceRoot":"","sources":["../../lib/core/future.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM1C,qBAAa,eAAe,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAkBvC,EAAE,EAAE,MAAM;IAfnB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAIzB,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAW;IAElC;;;;;;;OAOG;gBAEM,EAAE,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC3B,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;CAUxB;AAMD,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEzC,qBAAa,MAAM,CAAC,CAAC;IAejB,OAAO,CAAC,UAAU;IACX,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IAhBjB,QAAQ,CAAC,IAAI,YAAY;IAGzB,OAAO,CAAC,MAAM,CAAuC;IAErD;;;;;;OAMG;gBAEO,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EACxB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI;IAGxC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;;;;;IAqB5C,IAAI,EAAE,WAEL;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,IAAI,gBAEP;IAED,IAAI,MAAM,uBAET;IAED,IAAI,QAAQ,kBAEX;IAED,IAAI,KAAK,mBAER;IAED,IAAI,OAAO,YAEV;IAED,IAAI,SAAS,YAEZ;IAED,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,MAAM;CAIf"}
@@ -27,7 +27,7 @@ class ResonatePromise extends Promise {
27
27
  });
28
28
  this.id = id;
29
29
  // expose the id when the durable promise has been created
30
- this.created = created.then(() => this.id);
30
+ this.created = created.then((future) => future.id);
31
31
  }
32
32
  }
33
33
  exports.ResonatePromise = ResonatePromise;
@@ -88,6 +88,12 @@ class Future {
88
88
  get value() {
89
89
  return this._value;
90
90
  }
91
+ get pending() {
92
+ return this._value.kind === "pending";
93
+ }
94
+ get completed() {
95
+ return !this.pending;
96
+ }
91
97
  resolve(value) {
92
98
  this._resolve(value);
93
99
  this._value = { kind: "resolved", value };
@@ -1 +1 @@
1
- {"version":3,"file":"future.js","sourceRoot":"","sources":["../../lib/core/future.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"future.js","sourceRoot":"","sources":["../../lib/core/future.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,19 @@ import { Future } from "./future";
2
2
  import { Options, PartialOptions } from "./options";
3
3
  export declare class Invocation<T> {
4
4
  readonly name: string;
5
- readonly version: number;
6
5
  readonly id: string;
7
- readonly idempotencyKey: string | undefined;
8
6
  readonly headers: Record<string, string> | undefined;
9
7
  readonly param: unknown;
10
8
  readonly opts: Options;
9
+ readonly defaults: Options;
11
10
  future: Future<T>;
12
11
  resolve: (v: T) => void;
13
12
  reject: (e: unknown) => void;
13
+ eid: string;
14
+ idempotencyKey: string;
15
+ timeout: number;
14
16
  killed: boolean;
15
- createdAt: number;
17
+ createdOn: number;
16
18
  counter: number;
17
19
  attempt: number;
18
20
  awaited: Future<any>[];
@@ -29,8 +31,7 @@ export declare class Invocation<T> {
29
31
  * @param opts - The invocation options.
30
32
  * @param parent - The parent invocation.
31
33
  */
32
- constructor(name: string, version: number, id: string, idempotencyKey: string | undefined, headers: Record<string, string> | undefined, param: unknown, opts: Options, parent?: Invocation<any>);
33
- get timeout(): number;
34
+ constructor(name: string, id: string, headers: Record<string, string> | undefined, param: unknown, opts: Options, defaults: Options, parent?: Invocation<any>);
34
35
  addChild(child: Invocation<any>): void;
35
36
  await(future: Future<any>): void;
36
37
  block(future: Future<any>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../../lib/core/invocation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAoB,MAAM,WAAW,CAAC;AAMtE,qBAAa,UAAU,CAAC,CAAC;aA4BL,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,MAAM;aACf,EAAE,EAAE,MAAM;aACV,cAAc,EAAE,MAAM,GAAG,SAAS;aAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;aAC3C,KAAK,EAAE,OAAO;aACd,IAAI,EAAE,OAAO;IAjC/B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7B,MAAM,EAAE,OAAO,CAAS;IAExB,SAAS,EAAE,MAAM,CAAc;IAC/B,OAAO,EAAE,MAAM,CAAK;IACpB,OAAO,EAAE,MAAM,CAAK;IAEpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAM;IAC5B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAQ;IAEnC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAM;IAE1C;;;;;;;;OAQG;gBAEe,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC3C,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,EAC7B,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;IAW1B,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;IAI/B,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;IAIzB,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;IAIzB,OAAO;IAIP,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,cAAc,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE;CAQvE"}
1
+ {"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../../lib/core/invocation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAa,MAAM,WAAW,CAAC;AAM/D,qBAAa,UAAU,CAAC,CAAC;aAgCL,IAAI,EAAE,MAAM;aACZ,EAAE,EAAE,MAAM;aACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;aAC3C,KAAK,EAAE,OAAO;aACd,IAAI,EAAE,OAAO;aACb,QAAQ,EAAE,OAAO;IApCnC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7B,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,EAAE,OAAO,CAAS;IAExB,SAAS,EAAE,MAAM,CAAc;IAC/B,OAAO,EAAE,MAAM,CAAK;IACpB,OAAO,EAAE,MAAM,CAAK;IAEpB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAM;IAC5B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAQ;IAEnC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAM;IAE1C;;;;;;;;OAQG;gBAEe,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC3C,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,OAAO,EACjC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;IA4B1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;IAI/B,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;IAIzB,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;IAIzB,OAAO;IAIP,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,cAAc,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE;CAwBvE"}
@@ -8,17 +8,19 @@ const options_1 = require("./options");
8
8
  /////////////////////////////////////////////////////////////////////
9
9
  class Invocation {
10
10
  name;
11
- version;
12
11
  id;
13
- idempotencyKey;
14
12
  headers;
15
13
  param;
16
14
  opts;
15
+ defaults;
17
16
  future;
18
17
  resolve;
19
18
  reject;
19
+ eid;
20
+ idempotencyKey;
21
+ timeout;
20
22
  killed = false;
21
- createdAt = Date.now();
23
+ createdOn = Date.now();
22
24
  counter = 0;
23
25
  attempt = 0;
24
26
  awaited = [];
@@ -35,23 +37,33 @@ class Invocation {
35
37
  * @param opts - The invocation options.
36
38
  * @param parent - The parent invocation.
37
39
  */
38
- constructor(name, version, id, idempotencyKey, headers, param, opts, parent) {
40
+ constructor(name, id, headers, param, opts, defaults, parent) {
39
41
  this.name = name;
40
- this.version = version;
41
42
  this.id = id;
42
- this.idempotencyKey = idempotencyKey;
43
43
  this.headers = headers;
44
44
  this.param = param;
45
45
  this.opts = opts;
46
+ this.defaults = defaults;
47
+ // create a future and hold on to its resolvers
46
48
  const { future, resolve, reject } = future_1.Future.deferred(this);
47
49
  this.future = future;
48
50
  this.resolve = resolve;
49
51
  this.reject = reject;
50
52
  this.root = parent?.root ?? this;
51
53
  this.parent = parent ?? null;
52
- }
53
- get timeout() {
54
- return Math.min(this.createdAt + this.opts.timeout, this.parent?.timeout ?? Infinity);
54
+ // get the execution id from either:
55
+ // - a hard coded string
56
+ // - a function that returns a string given the invocation id
57
+ this.eid = typeof this.opts.eid === "function" ? this.opts.eid(this.id) : this.opts.eid;
58
+ // get the idempotency key from either:
59
+ // - a hard coded string
60
+ // - a function that returns a string given the invocation id
61
+ this.idempotencyKey =
62
+ typeof this.opts.idempotencyKey === "function" ? this.opts.idempotencyKey(this.id) : this.opts.idempotencyKey;
63
+ // the timeout is the minimum of:
64
+ // - the current time plus the user provided relative time
65
+ // - the parent timeout
66
+ this.timeout = Math.min(this.createdOn + this.opts.timeout, this.parent?.timeout ?? Infinity);
55
67
  }
56
68
  addChild(child) {
57
69
  this.children.push(child);
@@ -66,11 +78,25 @@ class Invocation {
66
78
  this.blocked = null;
67
79
  }
68
80
  split(args) {
69
- const opts = args[args.length - 1];
70
- const parentOpts = this.parent?.opts ?? this.root.opts;
71
- return (0, options_1.isPartialOptions)(opts)
72
- ? { args: args.slice(0, -1), opts: { ...parentOpts, ...opts, tags: { ...parentOpts.tags, ...opts.tags } } }
73
- : { args, opts: parentOpts };
81
+ let opts = args[args.length - 1];
82
+ // merge opts
83
+ if ((0, options_1.isOptions)(opts)) {
84
+ args = args.slice(0, -1);
85
+ opts = {
86
+ ...this.defaults,
87
+ ...opts,
88
+ tags: { ...this.defaults.tags, ...opts.tags }, // tags are merged
89
+ };
90
+ }
91
+ else {
92
+ // copy defaults
93
+ opts = { ...this.defaults };
94
+ }
95
+ // lock is false by default
96
+ opts.lock = opts.lock ?? false;
97
+ // version cannot be overridden
98
+ opts.version = this.defaults.version;
99
+ return { args, opts };
74
100
  }
75
101
  }
76
102
  exports.Invocation = Invocation;
@@ -1 +1 @@
1
- {"version":3,"file":"invocation.js","sourceRoot":"","sources":["../../lib/core/invocation.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAClC,uCAAsE;AAEtE,qEAAqE;AACrE,aAAa;AACb,qEAAqE;AAErE,MAAa,UAAU;IA4BH;IACA;IACA;IACA;IACA;IACA;IACA;IAjClB,MAAM,CAAY;IAClB,OAAO,CAAiB;IACxB,MAAM,CAAuB;IAE7B,MAAM,GAAY,KAAK,CAAC;IAExB,SAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,OAAO,GAAW,CAAC,CAAC;IACpB,OAAO,GAAW,CAAC,CAAC;IAEpB,OAAO,GAAkB,EAAE,CAAC;IAC5B,OAAO,GAAuB,IAAI,CAAC;IAE1B,IAAI,CAAkB;IACtB,MAAM,CAAyB;IAC/B,QAAQ,GAAsB,EAAE,CAAC;IAE1C;;;;;;;;OAQG;IACH,YACkB,IAAY,EACZ,OAAe,EACf,EAAU,EACV,cAAkC,EAClC,OAA2C,EAC3C,KAAc,EACd,IAAa,EAC7B,MAAwB;QAPR,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAQ;QACf,OAAE,GAAF,EAAE,CAAQ;QACV,mBAAc,GAAd,cAAc,CAAoB;QAClC,YAAO,GAAP,OAAO,CAAoC;QAC3C,UAAK,GAAL,KAAK,CAAS;QACd,SAAI,GAAJ,IAAI,CAAS;QAG7B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,eAAM,CAAC,QAAQ,CAAI,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC,CAAC;IACxF,CAAC;IAED,QAAQ,CAAC,KAAsB;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAmB;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAmB;QACvB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,IAA+B;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAEvD,OAAO,IAAA,0BAAgB,EAAC,IAAI,CAAC;YAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE;YAC3G,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACjC,CAAC;CACF;AA1ED,gCA0EC"}
1
+ {"version":3,"file":"invocation.js","sourceRoot":"","sources":["../../lib/core/invocation.ts"],"names":[],"mappings":"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"}