@resonatehq/sdk 0.3.3 → 0.3.5

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 (105) hide show
  1. package/dist/async.d.ts +144 -0
  2. package/dist/async.d.ts.map +1 -0
  3. package/dist/async.js +235 -0
  4. package/dist/async.js.map +1 -0
  5. package/dist/core/encoder.d.ts +5 -0
  6. package/dist/core/encoder.d.ts.map +1 -0
  7. package/dist/core/encoder.js +3 -0
  8. package/dist/core/encoder.js.map +1 -0
  9. package/dist/core/encoders/base64.d.ts +6 -0
  10. package/dist/core/encoders/base64.d.ts.map +1 -0
  11. package/dist/core/encoders/base64.js +13 -0
  12. package/dist/core/encoders/base64.js.map +1 -0
  13. package/dist/core/encoders/json.d.ts +6 -0
  14. package/dist/core/encoders/json.d.ts.map +1 -0
  15. package/dist/core/encoders/json.js +65 -0
  16. package/dist/core/encoders/json.js.map +1 -0
  17. package/dist/core/errors.d.ts +21 -0
  18. package/dist/core/errors.d.ts.map +1 -0
  19. package/dist/core/errors.js +38 -0
  20. package/dist/core/errors.js.map +1 -0
  21. package/dist/core/execution.d.ts +44 -0
  22. package/dist/core/execution.d.ts.map +1 -0
  23. package/dist/core/execution.js +206 -0
  24. package/dist/core/execution.js.map +1 -0
  25. package/dist/core/future.d.ts +54 -0
  26. package/dist/core/future.d.ts.map +1 -0
  27. package/dist/core/future.js +101 -0
  28. package/dist/core/future.js.map +1 -0
  29. package/dist/core/invocation.d.ts +43 -0
  30. package/dist/core/invocation.d.ts.map +1 -0
  31. package/dist/core/invocation.js +77 -0
  32. package/dist/core/invocation.js.map +1 -0
  33. package/dist/core/logger.d.ts +10 -0
  34. package/dist/core/logger.d.ts.map +1 -0
  35. package/dist/core/logger.js +3 -0
  36. package/dist/core/logger.js.map +1 -0
  37. package/dist/core/loggers/logger.d.ts +13 -0
  38. package/dist/core/loggers/logger.d.ts.map +1 -0
  39. package/dist/core/loggers/logger.js +48 -0
  40. package/dist/core/loggers/logger.js.map +1 -0
  41. package/dist/core/options.d.ts +84 -0
  42. package/dist/core/options.d.ts.map +1 -0
  43. package/dist/core/options.js +8 -0
  44. package/dist/core/options.js.map +1 -0
  45. package/dist/core/promises/promises.d.ts +48 -0
  46. package/dist/core/promises/promises.d.ts.map +1 -0
  47. package/dist/core/promises/promises.js +133 -0
  48. package/dist/core/promises/promises.js.map +1 -0
  49. package/dist/core/promises/types.d.ts +99 -0
  50. package/dist/core/promises/types.d.ts.map +1 -0
  51. package/dist/core/promises/types.js +40 -0
  52. package/dist/core/promises/types.js.map +1 -0
  53. package/dist/core/retries/retry.d.ts +20 -0
  54. package/dist/core/retries/retry.d.ts.map +1 -0
  55. package/dist/core/retries/retry.js +41 -0
  56. package/dist/core/retries/retry.js.map +1 -0
  57. package/dist/core/retry.d.ts +27 -0
  58. package/dist/core/retry.d.ts.map +1 -0
  59. package/dist/core/retry.js +22 -0
  60. package/dist/core/retry.js.map +1 -0
  61. package/dist/core/schedules/types.d.ts +19 -0
  62. package/dist/core/schedules/types.d.ts.map +1 -0
  63. package/dist/core/schedules/types.js +8 -0
  64. package/dist/core/schedules/types.js.map +1 -0
  65. package/dist/core/storage.d.ts +6 -0
  66. package/dist/core/storage.d.ts.map +1 -0
  67. package/dist/core/storage.js +3 -0
  68. package/dist/core/storage.js.map +1 -0
  69. package/dist/core/storages/memory.d.ts +8 -0
  70. package/dist/core/storages/memory.d.ts.map +1 -0
  71. package/dist/core/storages/memory.js +27 -0
  72. package/dist/core/storages/memory.js.map +1 -0
  73. package/dist/core/storages/withTimeout.d.ts +10 -0
  74. package/dist/core/storages/withTimeout.d.ts.map +1 -0
  75. package/dist/core/storages/withTimeout.js +43 -0
  76. package/dist/core/storages/withTimeout.js.map +1 -0
  77. package/dist/core/store.d.ts +139 -0
  78. package/dist/core/store.d.ts.map +1 -0
  79. package/dist/core/store.js +3 -0
  80. package/dist/core/store.js.map +1 -0
  81. package/dist/core/stores/local.d.ts +54 -0
  82. package/dist/core/stores/local.d.ts.map +1 -0
  83. package/dist/core/stores/local.js +399 -0
  84. package/dist/core/stores/local.js.map +1 -0
  85. package/dist/core/stores/remote.d.ts +48 -0
  86. package/dist/core/stores/remote.d.ts.map +1 -0
  87. package/dist/core/stores/remote.js +407 -0
  88. package/dist/core/stores/remote.js.map +1 -0
  89. package/dist/core/utils.d.ts +3 -0
  90. package/dist/core/utils.d.ts.map +1 -0
  91. package/dist/core/utils.js +19 -0
  92. package/dist/core/utils.js.map +1 -0
  93. package/dist/generator.d.ts +187 -0
  94. package/dist/generator.d.ts.map +1 -0
  95. package/dist/generator.js +426 -0
  96. package/dist/generator.js.map +1 -0
  97. package/dist/index.d.ts +4 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.js +32 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/resonate.d.ts +74 -0
  102. package/dist/resonate.d.ts.map +1 -0
  103. package/dist/resonate.js +172 -0
  104. package/dist/resonate.js.map +1 -0
  105. package/package.json +15 -11
@@ -0,0 +1,399 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.LocalLockStore = exports.LocalScheduleStore = exports.LocalPromiseStore = exports.LocalStore = void 0;
27
+ const cronParser = __importStar(require("cron-parser"));
28
+ const errors_1 = require("../errors");
29
+ const logger_1 = require("../loggers/logger");
30
+ const types_1 = require("../promises/types");
31
+ const memory_1 = require("../storages/memory");
32
+ const withTimeout_1 = require("../storages/withTimeout");
33
+ class LocalStore {
34
+ logger;
35
+ promises;
36
+ schedules;
37
+ locks;
38
+ toSchedule = [];
39
+ next = undefined;
40
+ constructor(logger = new logger_1.Logger(), promiseStorage = new withTimeout_1.WithTimeout(new memory_1.MemoryStorage()), scheduleStorage = new memory_1.MemoryStorage(), lockStorage = new memory_1.MemoryStorage()) {
41
+ this.logger = logger;
42
+ this.promises = new LocalPromiseStore(promiseStorage);
43
+ this.schedules = new LocalScheduleStore(scheduleStorage, this);
44
+ this.locks = new LocalLockStore(lockStorage);
45
+ this.init();
46
+ }
47
+ // handler the schedule store can call
48
+ addSchedule(schedule) {
49
+ this.toSchedule = this.toSchedule.filter((s) => s.id != schedule.id).concat(schedule);
50
+ this.setSchedule();
51
+ }
52
+ // handler the schedule store can call
53
+ deleteSchedule(id) {
54
+ this.toSchedule = this.toSchedule.filter((s) => s.id != id);
55
+ this.setSchedule();
56
+ }
57
+ async init() {
58
+ for await (const schedules of this.schedules.search("*", undefined, undefined)) {
59
+ this.toSchedule = this.toSchedule.concat(schedules);
60
+ }
61
+ this.setSchedule();
62
+ }
63
+ setSchedule() {
64
+ // clear timeout
65
+ if (this.next) {
66
+ clearTimeout(this.next);
67
+ }
68
+ // sort array in ascending order by nextRunTime
69
+ this.toSchedule.sort((a, b) => a.nextRunTime - b.nextRunTime);
70
+ if (this.toSchedule.length > 0) {
71
+ // set new timeout to schedule promise
72
+ // + converts to number
73
+ this.next = +setTimeout(() => this.schedulePromise(), this.toSchedule[0].nextRunTime - Date.now());
74
+ }
75
+ }
76
+ schedulePromise() {
77
+ this.next = undefined;
78
+ const schedule = this.toSchedule.shift();
79
+ if (schedule) {
80
+ const id = this.generatePromiseId(schedule);
81
+ // create promise
82
+ try {
83
+ this.promises.create(id, id, false, schedule.promiseParam?.headers, schedule.promiseParam?.data, Date.now() + schedule.promiseTimeout, { ...schedule.promiseTags, "resonate:schedule": schedule.id, "resonate:invocation": "true" });
84
+ }
85
+ catch (error) {
86
+ this.logger.warn("error creating scheduled promise", error);
87
+ }
88
+ // update schedule
89
+ try {
90
+ this.schedules.update(schedule.id, schedule.nextRunTime);
91
+ }
92
+ catch (error) {
93
+ this.logger.warn("error updating schedule", error);
94
+ }
95
+ }
96
+ }
97
+ generatePromiseId(schedule) {
98
+ return schedule.promiseId
99
+ .replace("{{.id}}", schedule.id)
100
+ .replace("{{.timestamp}}", schedule.nextRunTime.toString());
101
+ }
102
+ }
103
+ exports.LocalStore = LocalStore;
104
+ class LocalPromiseStore {
105
+ storage;
106
+ constructor(storage = new memory_1.MemoryStorage()) {
107
+ this.storage = storage;
108
+ }
109
+ async create(id, ikey, strict, headers, data, timeout, tags) {
110
+ return this.storage.rmw(id, (promise) => {
111
+ if (!promise) {
112
+ return {
113
+ state: "PENDING",
114
+ id: id,
115
+ timeout: timeout,
116
+ param: {
117
+ headers: headers,
118
+ data: data,
119
+ },
120
+ value: {
121
+ headers: undefined,
122
+ data: undefined,
123
+ },
124
+ createdOn: Date.now(),
125
+ completedOn: undefined,
126
+ idempotencyKeyForCreate: ikey,
127
+ idempotencyKeyForComplete: undefined,
128
+ tags: tags,
129
+ };
130
+ }
131
+ if (strict && !(0, types_1.isPendingPromise)(promise)) {
132
+ throw new errors_1.ResonateError("Forbidden request", errors_1.ErrorCodes.STORE_FORBIDDEN);
133
+ }
134
+ if (promise.idempotencyKeyForCreate === undefined || ikey !== promise.idempotencyKeyForCreate) {
135
+ throw new errors_1.ResonateError("Forbidden request", errors_1.ErrorCodes.STORE_FORBIDDEN);
136
+ }
137
+ return promise;
138
+ });
139
+ }
140
+ async resolve(id, ikey, strict, headers, data) {
141
+ return this.storage.rmw(id, (promise) => {
142
+ if (!promise) {
143
+ throw new errors_1.ResonateError("Not found", errors_1.ErrorCodes.STORE_NOT_FOUND);
144
+ }
145
+ if ((0, types_1.isPendingPromise)(promise)) {
146
+ return {
147
+ state: "RESOLVED",
148
+ id: promise.id,
149
+ timeout: promise.timeout,
150
+ param: promise.param,
151
+ value: {
152
+ headers: headers,
153
+ data: data,
154
+ },
155
+ createdOn: promise.createdOn,
156
+ completedOn: Date.now(),
157
+ idempotencyKeyForCreate: promise.idempotencyKeyForCreate,
158
+ idempotencyKeyForComplete: ikey,
159
+ tags: promise.tags,
160
+ };
161
+ }
162
+ if (strict && !(0, types_1.isResolvedPromise)(promise)) {
163
+ throw new errors_1.ResonateError("Forbidden request", errors_1.ErrorCodes.STORE_FORBIDDEN);
164
+ }
165
+ if (!(0, types_1.isTimedoutPromise)(promise) &&
166
+ (promise.idempotencyKeyForComplete === undefined || ikey !== promise.idempotencyKeyForComplete)) {
167
+ throw new errors_1.ResonateError("Forbidden request", errors_1.ErrorCodes.STORE_FORBIDDEN);
168
+ }
169
+ return promise;
170
+ });
171
+ }
172
+ async reject(id, ikey, strict, headers, data) {
173
+ return this.storage.rmw(id, (promise) => {
174
+ if (!promise) {
175
+ throw new errors_1.ResonateError("Not found", errors_1.ErrorCodes.STORE_NOT_FOUND);
176
+ }
177
+ if ((0, types_1.isPendingPromise)(promise)) {
178
+ return {
179
+ state: "REJECTED",
180
+ id: promise.id,
181
+ timeout: promise.timeout,
182
+ param: promise.param,
183
+ value: {
184
+ headers: headers,
185
+ data: data,
186
+ },
187
+ createdOn: promise.createdOn,
188
+ completedOn: Date.now(),
189
+ idempotencyKeyForCreate: promise.idempotencyKeyForCreate,
190
+ idempotencyKeyForComplete: ikey,
191
+ tags: promise.tags,
192
+ };
193
+ }
194
+ if (strict && !(0, types_1.isRejectedPromise)(promise)) {
195
+ throw new errors_1.ResonateError("Forbidden request", errors_1.ErrorCodes.STORE_FORBIDDEN);
196
+ }
197
+ if (!(0, types_1.isTimedoutPromise)(promise) &&
198
+ (promise.idempotencyKeyForComplete === undefined || ikey !== promise.idempotencyKeyForComplete)) {
199
+ throw new errors_1.ResonateError("Forbidden request", errors_1.ErrorCodes.STORE_FORBIDDEN);
200
+ }
201
+ return promise;
202
+ });
203
+ }
204
+ async cancel(id, ikey, strict, headers, data) {
205
+ return this.storage.rmw(id, (promise) => {
206
+ if (!promise) {
207
+ throw new errors_1.ResonateError("Not found", errors_1.ErrorCodes.STORE_NOT_FOUND);
208
+ }
209
+ if ((0, types_1.isPendingPromise)(promise)) {
210
+ return {
211
+ state: "REJECTED_CANCELED",
212
+ id: promise.id,
213
+ timeout: promise.timeout,
214
+ param: promise.param,
215
+ value: {
216
+ headers: headers,
217
+ data: data,
218
+ },
219
+ createdOn: promise.createdOn,
220
+ completedOn: Date.now(),
221
+ idempotencyKeyForCreate: promise.idempotencyKeyForCreate,
222
+ idempotencyKeyForComplete: ikey,
223
+ tags: promise.tags,
224
+ };
225
+ }
226
+ if (strict && !(0, types_1.isCanceledPromise)(promise)) {
227
+ throw new errors_1.ResonateError("Forbidden request", errors_1.ErrorCodes.STORE_FORBIDDEN);
228
+ }
229
+ if (!(0, types_1.isTimedoutPromise)(promise) &&
230
+ (promise.idempotencyKeyForComplete === undefined || ikey !== promise.idempotencyKeyForComplete)) {
231
+ throw new errors_1.ResonateError("Forbidden request", errors_1.ErrorCodes.STORE_FORBIDDEN);
232
+ }
233
+ return promise;
234
+ });
235
+ }
236
+ async get(id) {
237
+ const promise = await this.storage.rmw(id, (p) => p);
238
+ if (!promise) {
239
+ throw new errors_1.ResonateError("Not found", errors_1.ErrorCodes.STORE_NOT_FOUND);
240
+ }
241
+ return promise;
242
+ }
243
+ async *search(id, state, tags, limit) {
244
+ // filter the promises returned from all storage
245
+ const regex = new RegExp(id.replaceAll("*", ".*"));
246
+ const states = searchStates(state);
247
+ const tagEntries = Object.entries(tags ?? {});
248
+ for await (const promises of this.storage.all()) {
249
+ yield promises
250
+ .filter((p) => states.includes(p.state))
251
+ .filter((p) => regex.test(p.id))
252
+ .filter((p) => tagEntries.every(([k, v]) => p.tags?.[k] == v));
253
+ }
254
+ }
255
+ }
256
+ exports.LocalPromiseStore = LocalPromiseStore;
257
+ class LocalScheduleStore {
258
+ storage;
259
+ store;
260
+ constructor(storage = new memory_1.MemoryStorage(), store = undefined) {
261
+ this.storage = storage;
262
+ this.store = store;
263
+ }
264
+ async create(id, ikey, description, cron, tags, promiseId, promiseTimeout, promiseHeaders, promiseData, promiseTags) {
265
+ const schedule = await this.storage.rmw(id, (schedule) => {
266
+ if (schedule) {
267
+ if (schedule.idempotencyKey === undefined || ikey != schedule.idempotencyKey) {
268
+ throw new errors_1.ResonateError("Already exists", errors_1.ErrorCodes.STORE_ALREADY_EXISTS);
269
+ }
270
+ return schedule;
271
+ }
272
+ const createdOn = Date.now();
273
+ let nextRunTime;
274
+ try {
275
+ nextRunTime = this.nextRunTime(cron, createdOn);
276
+ }
277
+ catch (error) {
278
+ throw errors_1.ResonateError.fromError(error);
279
+ }
280
+ return {
281
+ id,
282
+ description,
283
+ cron,
284
+ tags,
285
+ promiseId,
286
+ promiseTimeout,
287
+ promiseParam: {
288
+ headers: promiseHeaders,
289
+ data: promiseData,
290
+ },
291
+ promiseTags,
292
+ lastRunTime: undefined,
293
+ nextRunTime: nextRunTime,
294
+ idempotencyKey: ikey,
295
+ createdOn: createdOn,
296
+ };
297
+ });
298
+ if (this.store) {
299
+ this.store.addSchedule(schedule);
300
+ }
301
+ return schedule;
302
+ }
303
+ async update(id, lastRunTime) {
304
+ const schedule = await this.storage.rmw(id, (schedule) => {
305
+ if (!schedule) {
306
+ throw new errors_1.ResonateError("Not found", errors_1.ErrorCodes.STORE_NOT_FOUND);
307
+ }
308
+ // update iff not already updated
309
+ if (schedule.nextRunTime === lastRunTime) {
310
+ let nextRunTime;
311
+ try {
312
+ nextRunTime = this.nextRunTime(schedule.cron, lastRunTime);
313
+ }
314
+ catch (error) {
315
+ throw errors_1.ResonateError.fromError(error);
316
+ }
317
+ schedule.lastRunTime = lastRunTime;
318
+ schedule.nextRunTime = nextRunTime;
319
+ }
320
+ return schedule;
321
+ });
322
+ if (this.store) {
323
+ this.store.addSchedule(schedule);
324
+ }
325
+ return schedule;
326
+ }
327
+ async delete(id) {
328
+ const result = await this.storage.rmd(id, () => true);
329
+ if (!result) {
330
+ throw new errors_1.ResonateError("Not found", errors_1.ErrorCodes.STORE_NOT_FOUND);
331
+ }
332
+ }
333
+ async get(id) {
334
+ const schedule = await this.storage.rmw(id, (s) => s);
335
+ if (!schedule) {
336
+ throw new errors_1.ResonateError("Not found", errors_1.ErrorCodes.STORE_NOT_FOUND);
337
+ }
338
+ return schedule;
339
+ }
340
+ async *search(id, tags, limit) {
341
+ // filter the schedules returned from storage
342
+ const regex = new RegExp(id.replaceAll("*", ".*"));
343
+ const tagEntries = Object.entries(tags ?? {});
344
+ for await (const schedules of this.storage.all()) {
345
+ yield schedules.filter((s) => regex.test(s.id)).filter((s) => tagEntries.every(([k, v]) => s.tags?.[k] == v));
346
+ }
347
+ }
348
+ nextRunTime(cron, lastRunTime) {
349
+ return cronParser
350
+ .parseExpression(cron, { currentDate: new Date(lastRunTime) })
351
+ .next()
352
+ .getTime();
353
+ }
354
+ }
355
+ exports.LocalScheduleStore = LocalScheduleStore;
356
+ class LocalLockStore {
357
+ storage;
358
+ constructor(storage = new memory_1.MemoryStorage()) {
359
+ this.storage = storage;
360
+ }
361
+ async tryAcquire(id, eid) {
362
+ const lock = await this.storage.rmw(id, (lock) => {
363
+ if (!lock || lock.eid === eid) {
364
+ return {
365
+ id,
366
+ eid,
367
+ };
368
+ }
369
+ return lock;
370
+ });
371
+ if (lock.eid !== eid) {
372
+ throw new errors_1.ResonateError("Forbidden request", errors_1.ErrorCodes.STORE_FORBIDDEN);
373
+ }
374
+ return lock.eid === eid;
375
+ }
376
+ async release(id, eid) {
377
+ const result = await this.storage.rmd(id, (lock) => lock.eid === eid);
378
+ if (!result) {
379
+ throw new errors_1.ResonateError("Not found", errors_1.ErrorCodes.STORE_NOT_FOUND);
380
+ }
381
+ }
382
+ }
383
+ exports.LocalLockStore = LocalLockStore;
384
+ // Utils
385
+ function searchStates(state) {
386
+ if (state?.toLowerCase() == "pending") {
387
+ return ["PENDING"];
388
+ }
389
+ else if (state?.toLowerCase() == "resolved") {
390
+ return ["RESOLVED"];
391
+ }
392
+ else if (state?.toLowerCase() == "rejected") {
393
+ return ["REJECTED", "REJECTED_CANCELED", "REJECTED_TIMEDOUT"];
394
+ }
395
+ else {
396
+ return ["PENDING", "RESOLVED", "REJECTED", "REJECTED_CANCELED", "REJECTED_TIMEDOUT"];
397
+ }
398
+ }
399
+ //# sourceMappingURL=local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../../lib/core/stores/local.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { IEncoder } from "../encoder";
2
+ import { ILogger } from "../logger";
3
+ import { DurablePromise, PendingPromise, ResolvedPromise, RejectedPromise, CanceledPromise, TimedoutPromise } from "../promises/types";
4
+ import { Schedule } from "../schedules/types";
5
+ import { IStore, IPromiseStore, IScheduleStore, ILockStore } from "../store";
6
+ export declare class RemoteStore implements IStore {
7
+ promises: RemotePromiseStore;
8
+ schedules: RemoteScheduleStore;
9
+ locks: RemoteLockStore;
10
+ constructor(url: string, pid: string, logger?: ILogger, encoder?: IEncoder<string, string>);
11
+ }
12
+ export declare class RemotePromiseStore implements IPromiseStore {
13
+ private url;
14
+ private logger;
15
+ private encoder;
16
+ constructor(url: string, logger?: ILogger, encoder?: IEncoder<string, string>);
17
+ create(id: string, ikey: string | undefined, strict: boolean, headers: Record<string, string> | undefined, data: string | undefined, timeout: number, tags: Record<string, string> | undefined): Promise<PendingPromise | CanceledPromise | ResolvedPromise | RejectedPromise | TimedoutPromise>;
18
+ cancel(id: string, ikey: string | undefined, strict: boolean, headers: Record<string, string> | undefined, data: string | undefined): Promise<ResolvedPromise | RejectedPromise | CanceledPromise | TimedoutPromise>;
19
+ resolve(id: string, ikey: string | undefined, strict: boolean, headers: Record<string, string> | undefined, data: string | undefined): Promise<ResolvedPromise | RejectedPromise | CanceledPromise | TimedoutPromise>;
20
+ reject(id: string, ikey: string | undefined, strict: boolean, headers: Record<string, string> | undefined, data: string | undefined): Promise<ResolvedPromise | RejectedPromise | CanceledPromise | TimedoutPromise>;
21
+ get(id: string): Promise<DurablePromise>;
22
+ search(id: string, state: string | undefined, tags: Record<string, string> | undefined, limit: number | undefined): AsyncGenerator<DurablePromise[], void>;
23
+ }
24
+ export declare class RemoteScheduleStore implements IScheduleStore {
25
+ private url;
26
+ private logger;
27
+ private encoder;
28
+ constructor(url: string, logger?: ILogger, encoder?: IEncoder<string, string>);
29
+ create(id: string, ikey: string | undefined, description: string | undefined, cron: string, tags: Record<string, string> | undefined, promiseId: string, promiseTimeout: number, promiseHeaders: Record<string, string> | undefined, promiseData: string | undefined, promiseTags: Record<string, string> | undefined): Promise<Schedule>;
30
+ get(id: string): Promise<Schedule>;
31
+ delete(id: string): Promise<void>;
32
+ search(id: string, tags: Record<string, string> | undefined, limit: number | undefined): AsyncGenerator<Schedule[], void>;
33
+ }
34
+ export declare class RemoteLockStore implements ILockStore {
35
+ private url;
36
+ private pid;
37
+ private logger;
38
+ private lockTimeout;
39
+ private heartbeatDelay;
40
+ private hearbeatInterval;
41
+ constructor(url: string, pid: string, logger?: ILogger, lockTimeout?: number);
42
+ tryAcquire(resourceId: string, executionId: string): Promise<boolean>;
43
+ release(resourceId: string, executionId: string): Promise<void>;
44
+ private startHeartbeat;
45
+ private stopHeartbeat;
46
+ private heartbeat;
47
+ }
48
+ //# sourceMappingURL=remote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../lib/core/stores/remote.ts"],"names":[],"mappings":"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"}