@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.
- package/README.md +24 -130
- package/dist/async.d.ts +99 -49
- package/dist/async.d.ts.map +1 -1
- package/dist/async.js +173 -100
- package/dist/async.js.map +1 -1
- package/dist/core/execution.d.ts +13 -10
- package/dist/core/execution.d.ts.map +1 -1
- package/dist/core/execution.js +174 -69
- package/dist/core/execution.js.map +1 -1
- package/dist/core/future.d.ts +6 -4
- package/dist/core/future.d.ts.map +1 -1
- package/dist/core/future.js +7 -1
- package/dist/core/future.js.map +1 -1
- package/dist/core/invocation.d.ts +6 -5
- package/dist/core/invocation.d.ts.map +1 -1
- package/dist/core/invocation.js +40 -14
- package/dist/core/invocation.js.map +1 -1
- package/dist/core/options.d.ts +32 -11
- package/dist/core/options.d.ts.map +1 -1
- package/dist/core/options.js +3 -3
- package/dist/core/options.js.map +1 -1
- package/dist/core/promises/promises.d.ts +4 -3
- package/dist/core/promises/promises.d.ts.map +1 -1
- package/dist/core/promises/promises.js +7 -3
- package/dist/core/promises/promises.js.map +1 -1
- package/dist/core/promises/types.d.ts.map +1 -1
- package/dist/core/promises/types.js +2 -5
- package/dist/core/promises/types.js.map +1 -1
- package/dist/core/schedules/schedules.d.ts +22 -0
- package/dist/core/schedules/schedules.d.ts.map +1 -0
- package/dist/core/schedules/schedules.js +29 -0
- package/dist/core/schedules/schedules.js.map +1 -0
- package/dist/core/store.d.ts +5 -2
- package/dist/core/store.d.ts.map +1 -1
- package/dist/core/stores/local.d.ts +1 -1
- package/dist/core/stores/local.d.ts.map +1 -1
- package/dist/core/stores/local.js +7 -5
- package/dist/core/stores/local.js.map +1 -1
- package/dist/core/stores/remote.d.ts +7 -7
- package/dist/core/stores/remote.d.ts.map +1 -1
- package/dist/core/stores/remote.js +30 -23
- package/dist/core/stores/remote.js.map +1 -1
- package/dist/generator.d.ts +39 -18
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +72 -73
- package/dist/generator.js.map +1 -1
- package/dist/index.d.ts +23 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -6
- package/dist/index.js.map +1 -1
- package/dist/resonate.d.ts +109 -32
- package/dist/resonate.d.ts.map +1 -1
- package/dist/resonate.js +144 -60
- package/dist/resonate.js.map +1 -1
- package/package.json +1 -1
package/dist/core/execution.js
CHANGED
|
@@ -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
|
-
|
|
41
|
-
|
|
42
|
-
return
|
|
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
|
-
|
|
51
|
-
constructor(invocation, func,
|
|
52
|
-
super(invocation);
|
|
72
|
+
durablePromise;
|
|
73
|
+
constructor(resonate, invocation, func, durablePromise) {
|
|
74
|
+
super(resonate, invocation);
|
|
53
75
|
this.func = func;
|
|
54
|
-
this.
|
|
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
|
-
//
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
74
|
-
|
|
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
|
-
|
|
107
|
-
super(invocation);
|
|
108
|
-
}
|
|
180
|
+
durablePromise = null;
|
|
109
181
|
async fork() {
|
|
110
182
|
try {
|
|
111
183
|
// create a durable promise
|
|
112
|
-
|
|
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
|
-
//
|
|
120
|
-
|
|
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
|
-
|
|
136
|
-
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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
|
-
|
|
153
|
-
|
|
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(
|
|
257
|
+
async resolve(value) {
|
|
163
258
|
try {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
this.
|
|
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
|
|
171
|
-
|
|
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(
|
|
280
|
+
async reject(error) {
|
|
181
281
|
try {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
this.
|
|
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
|
|
189
|
-
|
|
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":";;;
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../lib/core/execution.ts"],"names":[],"mappings":"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"}
|
package/dist/core/future.d.ts
CHANGED
|
@@ -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<
|
|
14
|
+
constructor(id: string, created: Promise<Future<T>>, completed: Promise<T>);
|
|
15
15
|
}
|
|
16
|
-
export type
|
|
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
|
|
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():
|
|
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,
|
|
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"}
|
package/dist/core/future.js
CHANGED
|
@@ -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(() =>
|
|
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 };
|
package/dist/core/future.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"future.js","sourceRoot":"","sources":["../../lib/core/future.ts"],"names":[],"mappings":";;;AAEA,qEAAqE;AACrE,UAAU;AACV,qEAAqE;AAErE,MAAa,eAAmB,SAAQ,OAAU;IAkBvC;IAjBT,4CAA4C;IAC5C,gDAAgD;IAChD,OAAO,CAAkB;IAEzB,4DAA4D;IAC5D,qGAAqG;IACrG,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAElC;;;;;;;OAOG;IACH,YACS,EAAU,EACjB,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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"}
|
package/dist/core/invocation.js
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
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
|
-
|
|
54
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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,
|
|
1
|
+
{"version":3,"file":"invocation.js","sourceRoot":"","sources":["../../lib/core/invocation.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAClC,uCAA+D;AAE/D,qEAAqE;AACrE,aAAa;AACb,qEAAqE;AAErE,MAAa,UAAU;IAgCH;IACA;IACA;IACA;IACA;IACA;IApClB,MAAM,CAAY;IAClB,OAAO,CAAiB;IACxB,MAAM,CAAuB;IAE7B,GAAG,CAAS;IACZ,cAAc,CAAS;IACvB,OAAO,CAAS;IAEhB,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,EAAU,EACV,OAA2C,EAC3C,KAAc,EACd,IAAa,EACb,QAAiB,EACjC,MAAwB;QANR,SAAI,GAAJ,IAAI,CAAQ;QACZ,OAAE,GAAF,EAAE,CAAQ;QACV,YAAO,GAAP,OAAO,CAAoC;QAC3C,UAAK,GAAL,KAAK,CAAS;QACd,SAAI,GAAJ,IAAI,CAAS;QACb,aAAQ,GAAR,QAAQ,CAAS;QAGjC,+CAA+C;QAC/C,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;QAE7B,oCAAoC;QACpC,wBAAwB;QACxB,6DAA6D;QAC7D,IAAI,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAExF,uCAAuC;QACvC,wBAAwB;QACxB,6DAA6D;QAC7D,IAAI,CAAC,cAAc;YACjB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAEhH,iCAAiC;QACjC,0DAA0D;QAC1D,uBAAuB;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC,CAAC;IAChG,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,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEjC,aAAa;QACb,IAAI,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC;YACpB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,GAAG;gBACL,GAAG,IAAI,CAAC,QAAQ;gBAChB,GAAG,IAAI;gBACP,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,kBAAkB;aAClE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,gBAAgB;YAChB,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;QAE/B,+BAA+B;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAErC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;CACF;AA1GD,gCA0GC"}
|