@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,84 @@
1
+ import { IEncoder } from "./encoder";
2
+ import { ILogger } from "./logger";
3
+ import { IRetry } from "./retry";
4
+ import { IStore } from "./store";
5
+ /**
6
+ * Resonate configuration options.
7
+ */
8
+ export interface ResonateOptions {
9
+ /**
10
+ * An encoder instance used for encoding and decoding values
11
+ * returned (or thrown) by registered functions. If not provided,
12
+ * a default JSON encoder will be used.
13
+ */
14
+ encoder: IEncoder<unknown, string | undefined>;
15
+ /**
16
+ * A process id that can be used to uniquely identify this Resonate
17
+ * instance. If not provided a default value will be generated.
18
+ */
19
+ pid: string;
20
+ /**
21
+ * A logger instance, if not provided a default logger will be
22
+ * used.
23
+ */
24
+ logger: ILogger;
25
+ /**
26
+ * A retry instance, defaults to exponential backoff.
27
+ */
28
+ retry: IRetry;
29
+ /**
30
+ * Tags to add to all durable promises.
31
+ */
32
+ tags: Record<string, string>;
33
+ /**
34
+ * A store instance, if provided this will take precedence over a
35
+ * remote store.
36
+ */
37
+ store: IStore;
38
+ /**
39
+ * The default promise timeout in ms, used for every function
40
+ * executed by calling run. Defaults to 1000.
41
+ */
42
+ timeout: number;
43
+ /**
44
+ * The remote promise store url. If not provided, an in-memory
45
+ * promise store will be used.
46
+ */
47
+ url: string;
48
+ }
49
+ /**
50
+ * Resonate function invocation options.
51
+ */
52
+ export interface Options {
53
+ __resonate: true;
54
+ /**
55
+ * Overrides the default encoder.
56
+ */
57
+ encoder: IEncoder<unknown, string | undefined>;
58
+ /**
59
+ * The frequency in ms to poll the promise store for a completed
60
+ * remote promise.
61
+ */
62
+ poll: number;
63
+ /**
64
+ * Overrides the default retry policy.
65
+ */
66
+ retry: IRetry;
67
+ /**
68
+ * Overrides the default store.
69
+ */
70
+ store: IStore;
71
+ /**
72
+ * Additional tags to add to the durable promise.
73
+ */
74
+ tags: Record<string, string>;
75
+ /**
76
+ * Overrides the default timeout.
77
+ */
78
+ timeout: number;
79
+ }
80
+ export type PartialOptions = Partial<Options> & {
81
+ __resonate: true;
82
+ };
83
+ export declare function isPartialOptions(o: unknown): o is PartialOptions;
84
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../lib/core/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAE/C;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,IAAI,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAE/C;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG;IAAE,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC;AAErE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,cAAc,CAEhE"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPartialOptions = void 0;
4
+ function isPartialOptions(o) {
5
+ return typeof o === "object" && o !== null && o.__resonate === true;
6
+ }
7
+ exports.isPartialOptions = isPartialOptions;
8
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../lib/core/options.ts"],"names":[],"mappings":";;;AAiGA,SAAgB,gBAAgB,CAAC,CAAU;IACzC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAK,CAAoB,CAAC,UAAU,KAAK,IAAI,CAAC;AAC1F,CAAC;AAFD,4CAEC"}
@@ -0,0 +1,48 @@
1
+ import { IEncoder } from "../encoder";
2
+ import { IPromiseStore } from "../store";
3
+ import { PendingPromise, ResolvedPromise, RejectedPromise, CanceledPromise, TimedoutPromise } from "./types";
4
+ export type CreateOptions = {
5
+ idempotencyKey: string;
6
+ headers: Record<string, string>;
7
+ param: unknown;
8
+ tags: Record<string, string>;
9
+ strict: boolean;
10
+ poll: number | undefined;
11
+ };
12
+ export type CompleteOptions = {
13
+ idempotencyKey: string;
14
+ headers: Record<string, string>;
15
+ strict: boolean;
16
+ };
17
+ export declare class DurablePromise<T> {
18
+ private store;
19
+ private encoder;
20
+ private promise;
21
+ readonly created: Promise<DurablePromise<T>>;
22
+ readonly completed: Promise<DurablePromise<T>>;
23
+ private complete;
24
+ private interval;
25
+ constructor(store: IPromiseStore, encoder: IEncoder<unknown, string | undefined>, promise: PendingPromise | ResolvedPromise | RejectedPromise | CanceledPromise | TimedoutPromise, poll?: number);
26
+ get id(): string;
27
+ get idempotencyKeyForCreate(): string | undefined;
28
+ get idempotencyKeyForComplete(): string | undefined;
29
+ get pending(): boolean;
30
+ get resolved(): boolean;
31
+ get rejected(): boolean;
32
+ get canceled(): boolean;
33
+ get timedout(): boolean;
34
+ param(): unknown;
35
+ value(): T;
36
+ error(): unknown;
37
+ static create<T>(store: IPromiseStore, encoder: IEncoder<unknown, string | undefined>, id: string, timeout: number, opts?: Partial<CreateOptions>): Promise<DurablePromise<T>>;
38
+ static resolve<T>(store: IPromiseStore, encoder: IEncoder<unknown, string | undefined>, id: string, value: T, opts?: Partial<CompleteOptions>): Promise<DurablePromise<T>>;
39
+ static reject<T>(store: IPromiseStore, encoder: IEncoder<unknown, string | undefined>, id: string, error: any, opts?: Partial<CompleteOptions>): Promise<DurablePromise<T>>;
40
+ static cancel<T>(store: IPromiseStore, encoder: IEncoder<unknown, string | undefined>, id: string, error: any, opts?: Partial<CompleteOptions>): Promise<DurablePromise<T>>;
41
+ static get<T>(store: IPromiseStore, encoder: IEncoder<unknown, string | undefined>, id: string): Promise<DurablePromise<T>>;
42
+ static search(store: IPromiseStore, encoder: IEncoder<unknown, string | undefined>, id: string, state?: string, tags?: Record<string, string>, limit?: number): AsyncGenerator<DurablePromise<any>[], void>;
43
+ resolve(value: T, opts?: Partial<CompleteOptions>): Promise<this>;
44
+ reject(error: any, opts?: Partial<CompleteOptions>): Promise<this>;
45
+ cancel(error: any, opts?: Partial<CompleteOptions>): Promise<this>;
46
+ private poll;
47
+ }
48
+ //# sourceMappingURL=promises.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promises.d.ts","sourceRoot":"","sources":["../../../lib/core/promises/promises.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DurablePromise = void 0;
4
+ const errors_1 = require("../errors");
5
+ class DurablePromise {
6
+ store;
7
+ encoder;
8
+ promise;
9
+ created;
10
+ completed;
11
+ complete;
12
+ interval;
13
+ constructor(store, encoder, promise, poll) {
14
+ this.store = store;
15
+ this.encoder = encoder;
16
+ this.promise = promise;
17
+ this.created = Promise.resolve(this);
18
+ this.completed = new Promise((resolve) => {
19
+ this.complete = resolve;
20
+ });
21
+ if (poll !== undefined) {
22
+ this.interval = setInterval(() => this.poll(), poll);
23
+ }
24
+ }
25
+ get id() {
26
+ return this.promise.id;
27
+ }
28
+ get idempotencyKeyForCreate() {
29
+ return this.promise.idempotencyKeyForCreate;
30
+ }
31
+ get idempotencyKeyForComplete() {
32
+ return this.promise.idempotencyKeyForComplete;
33
+ }
34
+ get pending() {
35
+ return this.promise.state === "PENDING";
36
+ }
37
+ get resolved() {
38
+ return this.promise.state === "RESOLVED";
39
+ }
40
+ get rejected() {
41
+ return this.promise.state === "REJECTED";
42
+ }
43
+ get canceled() {
44
+ return this.promise.state === "REJECTED_CANCELED";
45
+ }
46
+ get timedout() {
47
+ return this.promise.state === "REJECTED_TIMEDOUT";
48
+ }
49
+ param() {
50
+ return this.encoder.decode(this.promise.param.data);
51
+ }
52
+ value() {
53
+ if (!this.resolved) {
54
+ throw new Error("Promise is not resolved");
55
+ }
56
+ return this.encoder.decode(this.promise.value.data);
57
+ }
58
+ error() {
59
+ if (this.rejected) {
60
+ return this.encoder.decode(this.promise.value.data);
61
+ }
62
+ else if (this.canceled) {
63
+ return new errors_1.ResonateError("Resonate function canceled", errors_1.ErrorCodes.CANCELED, this.encoder.decode(this.promise.value.data));
64
+ }
65
+ else if (this.timedout) {
66
+ return new errors_1.ResonateError(`Resonate function timedout at ${new Date(this.promise.timeout).toISOString()}`, errors_1.ErrorCodes.TIMEDOUT);
67
+ }
68
+ else {
69
+ throw new Error("Promise is not rejected, canceled, or timedout");
70
+ }
71
+ }
72
+ static async create(store, encoder, id, timeout, opts = {}) {
73
+ return new DurablePromise(store, encoder, await store.create(id, opts.idempotencyKey, opts.strict ?? false, opts.headers, encoder.encode(opts.param), Date.now() + timeout, opts.tags), opts.poll);
74
+ }
75
+ static async resolve(store, encoder, id, value, opts = {}) {
76
+ return new DurablePromise(store, encoder, await store.resolve(id, opts.idempotencyKey, opts.strict ?? false, opts.headers, encoder.encode(value)));
77
+ }
78
+ static async reject(store, encoder, id, error, opts = {}) {
79
+ return new DurablePromise(store, encoder, await store.reject(id, opts.idempotencyKey, opts.strict ?? false, opts.headers, encoder.encode(error)));
80
+ }
81
+ static async cancel(store, encoder, id, error, opts = {}) {
82
+ return new DurablePromise(store, encoder, await store.cancel(id, opts.idempotencyKey, opts.strict ?? false, opts.headers, encoder.encode(error)));
83
+ }
84
+ static async get(store, encoder, id) {
85
+ return new DurablePromise(store, encoder, await store.get(id));
86
+ }
87
+ static async *search(store, encoder, id, state, tags, limit) {
88
+ for await (const promises of store.search(id, state, tags, limit)) {
89
+ yield promises.map((p) => new DurablePromise(store, encoder, p));
90
+ }
91
+ }
92
+ async resolve(value, opts = {}) {
93
+ this.promise = !this.pending
94
+ ? this.promise
95
+ : await this.store.resolve(this.id, opts.idempotencyKey, opts.strict ?? false, opts.headers, this.encoder.encode(value));
96
+ if (!this.pending) {
97
+ this.complete(this);
98
+ }
99
+ return this;
100
+ }
101
+ async reject(error, opts = {}) {
102
+ this.promise = !this.pending
103
+ ? this.promise
104
+ : await this.store.reject(this.id, opts.idempotencyKey, opts.strict ?? false, opts.headers, this.encoder.encode(error));
105
+ if (!this.pending) {
106
+ this.complete(this);
107
+ }
108
+ return this;
109
+ }
110
+ async cancel(error, opts = {}) {
111
+ this.promise = !this.pending
112
+ ? this.promise
113
+ : await this.store.cancel(this.id, opts.idempotencyKey, opts.strict ?? false, opts.headers, this.encoder.encode(error));
114
+ if (!this.pending) {
115
+ this.complete(this);
116
+ }
117
+ return this;
118
+ }
119
+ async poll() {
120
+ try {
121
+ this.promise = await this.store.get(this.id);
122
+ if (!this.pending) {
123
+ this.complete(this);
124
+ clearInterval(this.interval);
125
+ }
126
+ }
127
+ catch (e) {
128
+ // TODO: log
129
+ }
130
+ }
131
+ }
132
+ exports.DurablePromise = DurablePromise;
133
+ //# sourceMappingURL=promises.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promises.js","sourceRoot":"","sources":["../../../lib/core/promises/promises.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ export type DurablePromise = PendingPromise | ResolvedPromise | RejectedPromise | CanceledPromise | TimedoutPromise;
2
+ export type PendingPromise = {
3
+ state: "PENDING";
4
+ id: string;
5
+ timeout: number;
6
+ param: {
7
+ headers: Record<string, string> | undefined;
8
+ data: string | undefined;
9
+ };
10
+ value: {
11
+ headers: undefined;
12
+ data: undefined;
13
+ };
14
+ createdOn: number;
15
+ completedOn: undefined;
16
+ idempotencyKeyForCreate: string | undefined;
17
+ idempotencyKeyForComplete: undefined;
18
+ tags: Record<string, string> | undefined;
19
+ };
20
+ export type ResolvedPromise = {
21
+ state: "RESOLVED";
22
+ id: string;
23
+ timeout: number;
24
+ param: {
25
+ headers: Record<string, string> | undefined;
26
+ data: string | undefined;
27
+ };
28
+ value: {
29
+ headers: Record<string, string> | undefined;
30
+ data: string | undefined;
31
+ };
32
+ createdOn: number;
33
+ completedOn: number;
34
+ idempotencyKeyForCreate: string | undefined;
35
+ idempotencyKeyForComplete: string | undefined;
36
+ tags: Record<string, string> | undefined;
37
+ };
38
+ export type RejectedPromise = {
39
+ state: "REJECTED";
40
+ id: string;
41
+ timeout: number;
42
+ param: {
43
+ headers: Record<string, string> | undefined;
44
+ data: string | undefined;
45
+ };
46
+ value: {
47
+ headers: Record<string, string> | undefined;
48
+ data: string | undefined;
49
+ };
50
+ createdOn: number;
51
+ completedOn: number;
52
+ idempotencyKeyForCreate: string | undefined;
53
+ idempotencyKeyForComplete: string | undefined;
54
+ tags: Record<string, string> | undefined;
55
+ };
56
+ export type CanceledPromise = {
57
+ state: "REJECTED_CANCELED";
58
+ id: string;
59
+ timeout: number;
60
+ param: {
61
+ headers: Record<string, string> | undefined;
62
+ data: string | undefined;
63
+ };
64
+ value: {
65
+ headers: Record<string, string> | undefined;
66
+ data: string | undefined;
67
+ };
68
+ createdOn: number;
69
+ completedOn: number;
70
+ idempotencyKeyForCreate: string | undefined;
71
+ idempotencyKeyForComplete: string | undefined;
72
+ tags: Record<string, string> | undefined;
73
+ };
74
+ export type TimedoutPromise = {
75
+ state: "REJECTED_TIMEDOUT";
76
+ id: string;
77
+ timeout: number;
78
+ param: {
79
+ headers: Record<string, string> | undefined;
80
+ data: string | undefined;
81
+ };
82
+ value: {
83
+ headers: undefined;
84
+ data: undefined;
85
+ };
86
+ createdOn: number;
87
+ completedOn: number;
88
+ idempotencyKeyForCreate: string | undefined;
89
+ idempotencyKeyForComplete: undefined;
90
+ tags: Record<string, string> | undefined;
91
+ };
92
+ export declare function isDurablePromise(p: unknown): p is DurablePromise;
93
+ export declare function isPendingPromise(p: unknown): p is PendingPromise;
94
+ export declare function isResolvedPromise(p: unknown): p is ResolvedPromise;
95
+ export declare function isRejectedPromise(p: unknown): p is RejectedPromise;
96
+ export declare function isCanceledPromise(p: unknown): p is CanceledPromise;
97
+ export declare function isTimedoutPromise(p: unknown): p is TimedoutPromise;
98
+ export declare function isCompletedPromise(p: unknown): p is ResolvedPromise | RejectedPromise | CanceledPromise | TimedoutPromise;
99
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/core/promises/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCompletedPromise = exports.isTimedoutPromise = exports.isCanceledPromise = exports.isRejectedPromise = exports.isResolvedPromise = exports.isPendingPromise = exports.isDurablePromise = void 0;
4
+ // Type guards
5
+ function isDurablePromise(p) {
6
+ if (p !== null &&
7
+ typeof p === "object" &&
8
+ "state" in p &&
9
+ typeof p.state === "string" &&
10
+ ["PENDING", "RESOLVED", "REJECTED", "REJECTED_CANCELED", "REJECTED_TIMEDOUT"].includes(p.state)) {
11
+ return true;
12
+ }
13
+ return false;
14
+ }
15
+ exports.isDurablePromise = isDurablePromise;
16
+ function isPendingPromise(p) {
17
+ return isDurablePromise(p) && p.state === "PENDING";
18
+ }
19
+ exports.isPendingPromise = isPendingPromise;
20
+ function isResolvedPromise(p) {
21
+ return isDurablePromise(p) && p.state === "RESOLVED";
22
+ }
23
+ exports.isResolvedPromise = isResolvedPromise;
24
+ function isRejectedPromise(p) {
25
+ return isDurablePromise(p) && p.state === "REJECTED";
26
+ }
27
+ exports.isRejectedPromise = isRejectedPromise;
28
+ function isCanceledPromise(p) {
29
+ return isDurablePromise(p) && p.state === "REJECTED_CANCELED";
30
+ }
31
+ exports.isCanceledPromise = isCanceledPromise;
32
+ function isTimedoutPromise(p) {
33
+ return isDurablePromise(p) && p.state === "REJECTED_TIMEDOUT";
34
+ }
35
+ exports.isTimedoutPromise = isTimedoutPromise;
36
+ function isCompletedPromise(p) {
37
+ return isDurablePromise(p) && ["RESOLVED", "REJECTED", "REJECTED_CANCELED", "REJECTED_TIMEDOUT"].includes(p.state);
38
+ }
39
+ exports.isCompletedPromise = isCompletedPromise;
40
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/core/promises/types.ts"],"names":[],"mappings":";;;AAiGA,cAAc;AAEd,SAAgB,gBAAgB,CAAC,CAAU;IACzC,IACE,CAAC,KAAK,IAAI;QACV,OAAO,CAAC,KAAK,QAAQ;QACrB,OAAO,IAAI,CAAC;QACZ,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAC3B,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAC/F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAZD,4CAYC;AAED,SAAgB,gBAAgB,CAAC,CAAU;IACzC,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;AACtD,CAAC;AAFD,4CAEC;AAED,SAAgB,iBAAiB,CAAC,CAAU;IAC1C,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC;AACvD,CAAC;AAFD,8CAEC;AAED,SAAgB,iBAAiB,CAAC,CAAU;IAC1C,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC;AACvD,CAAC;AAFD,8CAEC;AAED,SAAgB,iBAAiB,CAAC,CAAU;IAC1C,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,mBAAmB,CAAC;AAChE,CAAC;AAFD,8CAEC;AAED,SAAgB,iBAAiB,CAAC,CAAU;IAC1C,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,mBAAmB,CAAC;AAChE,CAAC;AAFD,8CAEC;AAED,SAAgB,kBAAkB,CAChC,CAAU;IAEV,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrH,CAAC;AAJD,gDAIC"}
@@ -0,0 +1,20 @@
1
+ import { IRetry, IterableRetry } from "../retry";
2
+ export declare class Retry extends IterableRetry implements IRetry {
3
+ private initialDelay;
4
+ private backoffFactor;
5
+ private maxAttempts;
6
+ private maxDelay;
7
+ constructor(initialDelay: number, backoffFactor: number, maxAttempts: number, maxDelay: number);
8
+ static exponential(initialDelay?: number, backoffFactor?: number, maxAttempts?: number, maxDelay?: number): Retry;
9
+ static linear(delay?: number, // 1 second
10
+ maxAttempts?: number): Retry;
11
+ static never(): Retry;
12
+ next<T extends {
13
+ attempt: number;
14
+ timeout: number;
15
+ }>(ctx: T): {
16
+ done: boolean;
17
+ delay?: number;
18
+ };
19
+ }
20
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../lib/core/retries/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD,qBAAa,KAAM,SAAQ,aAAc,YAAW,MAAM;IAEtD,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,QAAQ;gBAHR,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM;IAK1B,MAAM,CAAC,WAAW,CAChB,YAAY,GAAE,MAAY,EAC1B,aAAa,GAAE,MAAU,EACzB,WAAW,GAAE,MAAiB,EAC9B,QAAQ,GAAE,MAAc,GACvB,KAAK;IAIR,MAAM,CAAC,MAAM,CACX,KAAK,GAAE,MAAa,EAAE,WAAW;IACjC,WAAW,GAAE,MAAiB,GAC7B,KAAK;IAIR,MAAM,CAAC,KAAK,IAAI,KAAK;IAIrB,IAAI,CAAC,CAAC,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,EAAE,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;CAiBhG"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Retry = void 0;
4
+ const retry_1 = require("../retry");
5
+ class Retry extends retry_1.IterableRetry {
6
+ initialDelay;
7
+ backoffFactor;
8
+ maxAttempts;
9
+ maxDelay;
10
+ constructor(initialDelay, backoffFactor, maxAttempts, maxDelay) {
11
+ super();
12
+ this.initialDelay = initialDelay;
13
+ this.backoffFactor = backoffFactor;
14
+ this.maxAttempts = maxAttempts;
15
+ this.maxDelay = maxDelay;
16
+ }
17
+ static exponential(initialDelay = 100, backoffFactor = 2, maxAttempts = Infinity, maxDelay = 60000) {
18
+ return new Retry(initialDelay, backoffFactor, maxAttempts, maxDelay);
19
+ }
20
+ static linear(delay = 1000, // 1 second
21
+ maxAttempts = Infinity) {
22
+ return new Retry(delay, 1, maxAttempts, delay);
23
+ }
24
+ static never() {
25
+ return new Retry(0, 0, 1, 0);
26
+ }
27
+ next(ctx) {
28
+ // attempt 0: 0ms delay
29
+ // attampt n: {initial * factor^(attempt-1)}ms delay (or max delay)
30
+ const delay = Math.min(Math.min(ctx.attempt, 1) * this.initialDelay * Math.pow(this.backoffFactor, ctx.attempt - 1), this.maxDelay);
31
+ if (Date.now() + delay >= ctx.timeout || ctx.attempt >= this.maxAttempts) {
32
+ return { done: true };
33
+ }
34
+ return {
35
+ done: false,
36
+ delay: delay,
37
+ };
38
+ }
39
+ }
40
+ exports.Retry = Retry;
41
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../lib/core/retries/retry.ts"],"names":[],"mappings":";;;AAAA,oCAAiD;AAEjD,MAAa,KAAM,SAAQ,qBAAa;IAE5B;IACA;IACA;IACA;IAJV,YACU,YAAoB,EACpB,aAAqB,EACrB,WAAmB,EACnB,QAAgB;QAExB,KAAK,EAAE,CAAC;QALA,iBAAY,GAAZ,YAAY,CAAQ;QACpB,kBAAa,GAAb,aAAa,CAAQ;QACrB,gBAAW,GAAX,WAAW,CAAQ;QACnB,aAAQ,GAAR,QAAQ,CAAQ;IAG1B,CAAC;IAED,MAAM,CAAC,WAAW,CAChB,eAAuB,GAAG,EAC1B,gBAAwB,CAAC,EACzB,cAAsB,QAAQ,EAC9B,WAAmB,KAAK;QAExB,OAAO,IAAI,KAAK,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,MAAM,CACX,QAAgB,IAAI,EAAE,WAAW;IACjC,cAAsB,QAAQ;QAE9B,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAiD,GAAM;QACzD,uBAAuB;QACvB,mEAAmE;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,EAC5F,IAAI,CAAC,QAAQ,CACd,CAAC;QAEF,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;CACF;AA/CD,sBA+CC"}
@@ -0,0 +1,27 @@
1
+ export interface IRetry {
2
+ next<T extends {
3
+ attempt: number;
4
+ timeout: number;
5
+ }>(ctx: T): {
6
+ done: boolean;
7
+ delay?: number;
8
+ };
9
+ iterator<T extends {
10
+ attempt: number;
11
+ timeout: number;
12
+ }>(ctx: T): IterableIterator<number>;
13
+ }
14
+ export declare class IterableRetry implements IRetry {
15
+ next<T extends {
16
+ attempt: number;
17
+ timeout: number;
18
+ }>(ctx: T): {
19
+ done: boolean;
20
+ delay?: number;
21
+ };
22
+ iterator<T extends {
23
+ attempt: number;
24
+ timeout: number;
25
+ }>(ctx: T): IterableIterator<number>;
26
+ }
27
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../lib/core/retry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,CAAC,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,EAAE,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChG,QAAQ,CAAC,CAAC,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;CAC5F;AAED,qBAAa,aAAc,YAAW,MAAM;IAC1C,IAAI,CAAC,CAAC,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,EAAE,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAI/F,QAAQ,CAAC,CAAC,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC;CAa3F"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IterableRetry = void 0;
4
+ class IterableRetry {
5
+ next(ctx) {
6
+ throw new Error("Method not implemented");
7
+ }
8
+ iterator(ctx) {
9
+ const self = this; // eslint-disable-line @typescript-eslint/no-this-alias
10
+ return {
11
+ next() {
12
+ const { done, delay } = self.next(ctx);
13
+ return { done, value: delay || 0 };
14
+ },
15
+ [Symbol.iterator]() {
16
+ return this;
17
+ },
18
+ };
19
+ }
20
+ }
21
+ exports.IterableRetry = IterableRetry;
22
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../lib/core/retry.ts"],"names":[],"mappings":";;;AAKA,MAAa,aAAa;IACxB,IAAI,CAAiD,GAAM;QACzD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,QAAQ,CAAiD,GAAM;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,uDAAuD;QAE1E,OAAO;YACL,IAAI;gBACF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACrC,CAAC;YACD,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACf,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AAlBD,sCAkBC"}
@@ -0,0 +1,19 @@
1
+ export type Schedule = {
2
+ id: string;
3
+ description: string | undefined;
4
+ cron: string;
5
+ tags: Record<string, string> | undefined;
6
+ promiseId: string;
7
+ promiseTimeout: number;
8
+ promiseParam: {
9
+ data: string | undefined;
10
+ headers: Record<string, string> | undefined;
11
+ };
12
+ promiseTags: Record<string, string> | undefined;
13
+ lastRunTime: number | undefined;
14
+ nextRunTime: number;
15
+ idempotencyKey: string | undefined;
16
+ createdOn: number;
17
+ };
18
+ export declare function isSchedule(s: unknown): s is Schedule;
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/core/schedules/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;KAC7C,CAAC;IACF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAChD,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,QAAQ,CAEpD"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSchedule = void 0;
4
+ function isSchedule(s) {
5
+ return s !== null && typeof s === "object" && "id" in s;
6
+ }
7
+ exports.isSchedule = isSchedule;
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/core/schedules/types.ts"],"names":[],"mappings":";;;AAkBA,SAAgB,UAAU,CAAC,CAAU;IACnC,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC;AAC1D,CAAC;AAFD,gCAEC"}
@@ -0,0 +1,6 @@
1
+ export interface IStorage<T> {
2
+ rmw<X extends T | undefined>(id: string, func: (item: T | undefined) => X): Promise<X>;
3
+ rmd(id: string, func: (item: T) => boolean): Promise<boolean>;
4
+ all(): AsyncGenerator<T[], void>;
5
+ }
6
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../lib/core/storage.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,GAAG,IAAI,cAAc,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;CAClC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../lib/core/storage.ts"],"names":[],"mappings":""}