@resonatehq/sdk 0.6.3 → 0.7.0

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 (202) hide show
  1. package/README.md +24 -45
  2. package/dist/dev/network.d.ts +16 -0
  3. package/dist/dev/network.d.ts.map +1 -0
  4. package/dist/dev/network.js +89 -0
  5. package/dist/dev/network.js.map +1 -0
  6. package/dist/dev/server.d.ts +87 -0
  7. package/dist/dev/server.d.ts.map +1 -0
  8. package/dist/dev/server.js +891 -0
  9. package/dist/dev/server.js.map +1 -0
  10. package/dist/sim/example-1.d.ts +2 -0
  11. package/dist/sim/example-1.d.ts.map +1 -0
  12. package/dist/sim/example-1.js +94 -0
  13. package/dist/sim/example-1.js.map +1 -0
  14. package/dist/sim/example-2.d.ts +2 -0
  15. package/dist/sim/example-2.d.ts.map +1 -0
  16. package/dist/sim/example-2.js +95 -0
  17. package/dist/sim/example-2.js.map +1 -0
  18. package/dist/sim/example-3.d.ts +2 -0
  19. package/dist/sim/example-3.d.ts.map +1 -0
  20. package/dist/sim/example-3.js +95 -0
  21. package/dist/sim/example-3.js.map +1 -0
  22. package/dist/sim/main.d.ts +14 -0
  23. package/dist/sim/main.d.ts.map +1 -0
  24. package/dist/sim/main.js +206 -0
  25. package/dist/sim/main.js.map +1 -0
  26. package/dist/sim/src/server.d.ts +15 -0
  27. package/dist/sim/src/server.d.ts.map +1 -0
  28. package/dist/sim/src/server.js +85 -0
  29. package/dist/sim/src/server.js.map +1 -0
  30. package/dist/sim/src/simulator.d.ts +65 -0
  31. package/dist/sim/src/simulator.d.ts.map +1 -0
  32. package/dist/sim/src/simulator.js +235 -0
  33. package/dist/sim/src/simulator.js.map +1 -0
  34. package/dist/sim/src/worker.d.ts +22 -0
  35. package/dist/sim/src/worker.d.ts.map +1 -0
  36. package/dist/sim/src/worker.js +175 -0
  37. package/dist/sim/src/worker.js.map +1 -0
  38. package/dist/src/clock.d.ts +11 -0
  39. package/dist/src/clock.d.ts.map +1 -0
  40. package/dist/src/clock.js +17 -0
  41. package/dist/src/clock.js.map +1 -0
  42. package/dist/src/computation.d.ts +40 -0
  43. package/dist/src/computation.d.ts.map +1 -0
  44. package/dist/src/computation.js +225 -0
  45. package/dist/src/computation.js.map +1 -0
  46. package/dist/src/context.d.ts +120 -0
  47. package/dist/src/context.d.ts.map +1 -0
  48. package/dist/src/context.js +288 -0
  49. package/dist/src/context.js.map +1 -0
  50. package/dist/src/coroutine.d.ts +35 -0
  51. package/dist/src/coroutine.d.ts.map +1 -0
  52. package/dist/src/coroutine.js +251 -0
  53. package/dist/src/coroutine.js.map +1 -0
  54. package/dist/src/decorator.d.ts +14 -0
  55. package/dist/src/decorator.d.ts.map +1 -0
  56. package/dist/src/decorator.js +208 -0
  57. package/dist/src/decorator.js.map +1 -0
  58. package/dist/src/handler.d.ts +40 -0
  59. package/dist/src/handler.d.ts.map +1 -0
  60. package/dist/src/handler.js +198 -0
  61. package/dist/src/handler.js.map +1 -0
  62. package/dist/src/heartbeat.d.ts +22 -0
  63. package/dist/src/heartbeat.d.ts.map +1 -0
  64. package/dist/src/heartbeat.js +87 -0
  65. package/dist/src/heartbeat.js.map +1 -0
  66. package/dist/src/index.d.ts +8 -0
  67. package/dist/src/index.d.ts.map +1 -0
  68. package/dist/src/index.js +25 -0
  69. package/dist/src/index.js.map +1 -0
  70. package/dist/src/network/network.d.ts +216 -0
  71. package/dist/src/network/network.d.ts.map +1 -0
  72. package/dist/{core/logger.js → src/network/network.js} +2 -1
  73. package/dist/src/network/network.js.map +1 -0
  74. package/dist/src/network/remote.d.ts +67 -0
  75. package/dist/src/network/remote.d.ts.map +1 -0
  76. package/dist/src/network/remote.js +514 -0
  77. package/dist/src/network/remote.js.map +1 -0
  78. package/dist/src/nursery.d.ts +19 -0
  79. package/dist/src/nursery.d.ts.map +1 -0
  80. package/dist/src/nursery.js +102 -0
  81. package/dist/src/nursery.js.map +1 -0
  82. package/dist/src/processor/processor.d.ts +11 -0
  83. package/dist/src/processor/processor.d.ts.map +1 -0
  84. package/dist/src/processor/processor.js +24 -0
  85. package/dist/src/processor/processor.js.map +1 -0
  86. package/dist/src/promises.d.ts +23 -0
  87. package/dist/src/promises.d.ts.map +1 -0
  88. package/dist/src/promises.js +157 -0
  89. package/dist/src/promises.js.map +1 -0
  90. package/dist/src/registry.d.ts +15 -0
  91. package/dist/src/registry.d.ts.map +1 -0
  92. package/dist/src/registry.js +26 -0
  93. package/dist/src/registry.js.map +1 -0
  94. package/dist/src/resonate-inner.d.ts +45 -0
  95. package/dist/src/resonate-inner.d.ts.map +1 -0
  96. package/dist/src/resonate-inner.js +157 -0
  97. package/dist/src/resonate-inner.js.map +1 -0
  98. package/dist/src/resonate.d.ts +92 -0
  99. package/dist/src/resonate.d.ts.map +1 -0
  100. package/dist/src/resonate.js +240 -0
  101. package/dist/src/resonate.js.map +1 -0
  102. package/dist/src/schedules.d.ts +9 -0
  103. package/dist/src/schedules.d.ts.map +1 -0
  104. package/dist/src/schedules.js +65 -0
  105. package/dist/src/schedules.js.map +1 -0
  106. package/dist/src/tasks.d.ts +9 -0
  107. package/dist/src/tasks.d.ts.map +1 -0
  108. package/dist/src/tasks.js +61 -0
  109. package/dist/src/tasks.js.map +1 -0
  110. package/dist/src/types.d.ts +86 -0
  111. package/dist/src/types.d.ts.map +1 -0
  112. package/dist/src/types.js +14 -0
  113. package/dist/src/types.js.map +1 -0
  114. package/dist/src/util.d.ts +14 -0
  115. package/dist/src/util.d.ts.map +1 -0
  116. package/dist/src/util.js +69 -0
  117. package/dist/src/util.js.map +1 -0
  118. package/dist/tsconfig.build.tsbuildinfo +1 -0
  119. package/package.json +51 -52
  120. package/dist/core/encoder.d.ts +0 -5
  121. package/dist/core/encoder.d.ts.map +0 -1
  122. package/dist/core/encoder.js +0 -3
  123. package/dist/core/encoder.js.map +0 -1
  124. package/dist/core/encoders/base64.d.ts +0 -6
  125. package/dist/core/encoders/base64.d.ts.map +0 -1
  126. package/dist/core/encoders/base64.js +0 -13
  127. package/dist/core/encoders/base64.js.map +0 -1
  128. package/dist/core/encoders/json.d.ts +0 -6
  129. package/dist/core/encoders/json.d.ts.map +0 -1
  130. package/dist/core/encoders/json.js +0 -77
  131. package/dist/core/encoders/json.js.map +0 -1
  132. package/dist/core/errors.d.ts +0 -24
  133. package/dist/core/errors.d.ts.map +0 -1
  134. package/dist/core/errors.js +0 -42
  135. package/dist/core/errors.js.map +0 -1
  136. package/dist/core/logger.d.ts +0 -10
  137. package/dist/core/logger.d.ts.map +0 -1
  138. package/dist/core/logger.js.map +0 -1
  139. package/dist/core/loggers/logger.d.ts +0 -13
  140. package/dist/core/loggers/logger.d.ts.map +0 -1
  141. package/dist/core/loggers/logger.js +0 -48
  142. package/dist/core/loggers/logger.js.map +0 -1
  143. package/dist/core/options.d.ts +0 -160
  144. package/dist/core/options.d.ts.map +0 -1
  145. package/dist/core/options.js +0 -18
  146. package/dist/core/options.js.map +0 -1
  147. package/dist/core/promises/promises.d.ts +0 -210
  148. package/dist/core/promises/promises.d.ts.map +0 -1
  149. package/dist/core/promises/promises.js +0 -300
  150. package/dist/core/promises/promises.js.map +0 -1
  151. package/dist/core/promises/types.d.ts +0 -42
  152. package/dist/core/promises/types.d.ts.map +0 -1
  153. package/dist/core/promises/types.js +0 -70
  154. package/dist/core/promises/types.js.map +0 -1
  155. package/dist/core/retry.d.ts +0 -37
  156. package/dist/core/retry.d.ts.map +0 -1
  157. package/dist/core/retry.js +0 -141
  158. package/dist/core/retry.js.map +0 -1
  159. package/dist/core/schedules/schedules.d.ts +0 -22
  160. package/dist/core/schedules/schedules.d.ts.map +0 -1
  161. package/dist/core/schedules/schedules.js +0 -29
  162. package/dist/core/schedules/schedules.js.map +0 -1
  163. package/dist/core/schedules/types.d.ts +0 -19
  164. package/dist/core/schedules/types.d.ts.map +0 -1
  165. package/dist/core/schedules/types.js +0 -8
  166. package/dist/core/schedules/types.js.map +0 -1
  167. package/dist/core/storage.d.ts +0 -6
  168. package/dist/core/storage.d.ts.map +0 -1
  169. package/dist/core/storage.js +0 -3
  170. package/dist/core/storage.js.map +0 -1
  171. package/dist/core/storages/memory.d.ts +0 -8
  172. package/dist/core/storages/memory.d.ts.map +0 -1
  173. package/dist/core/storages/memory.js +0 -29
  174. package/dist/core/storages/memory.js.map +0 -1
  175. package/dist/core/storages/withTimeout.d.ts +0 -10
  176. package/dist/core/storages/withTimeout.d.ts.map +0 -1
  177. package/dist/core/storages/withTimeout.js +0 -44
  178. package/dist/core/storages/withTimeout.js.map +0 -1
  179. package/dist/core/store.d.ts +0 -142
  180. package/dist/core/store.d.ts.map +0 -1
  181. package/dist/core/store.js +0 -3
  182. package/dist/core/store.js.map +0 -1
  183. package/dist/core/stores/local.d.ts +0 -57
  184. package/dist/core/stores/local.d.ts.map +0 -1
  185. package/dist/core/stores/local.js +0 -405
  186. package/dist/core/stores/local.js.map +0 -1
  187. package/dist/core/stores/remote.d.ts +0 -51
  188. package/dist/core/stores/remote.d.ts.map +0 -1
  189. package/dist/core/stores/remote.js +0 -431
  190. package/dist/core/stores/remote.js.map +0 -1
  191. package/dist/core/utils.d.ts +0 -85
  192. package/dist/core/utils.d.ts.map +0 -1
  193. package/dist/core/utils.js +0 -121
  194. package/dist/core/utils.js.map +0 -1
  195. package/dist/index.d.ts +0 -19
  196. package/dist/index.d.ts.map +0 -1
  197. package/dist/index.js +0 -57
  198. package/dist/index.js.map +0 -1
  199. package/dist/resonate.d.ts +0 -337
  200. package/dist/resonate.d.ts.map +0 -1
  201. package/dist/resonate.js +0 -730
  202. package/dist/resonate.js.map +0 -1
@@ -1,431 +0,0 @@
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.RemoteLockStore = exports.RemoteScheduleStore = exports.RemotePromiseStore = exports.RemoteStore = void 0;
27
- const base64_1 = require("../encoders/base64");
28
- const errors_1 = require("../errors");
29
- const logger_1 = require("../loggers/logger");
30
- const types_1 = require("../promises/types");
31
- const types_2 = require("../schedules/types");
32
- const utils = __importStar(require("../utils"));
33
- class RemoteStore {
34
- url;
35
- headers = {
36
- Accept: "application/json",
37
- "Content-Type": "application/json",
38
- };
39
- promises;
40
- schedules;
41
- locks;
42
- encoder;
43
- heartbeat;
44
- logger;
45
- pid;
46
- retries;
47
- constructor(url, opts = {}) {
48
- this.url = url;
49
- // store components
50
- this.promises = new RemotePromiseStore(this);
51
- this.schedules = new RemoteScheduleStore(this);
52
- this.locks = new RemoteLockStore(this);
53
- // store options
54
- this.encoder = opts.encoder ?? new base64_1.Base64Encoder();
55
- this.logger = opts.logger ?? new logger_1.Logger();
56
- this.heartbeat = opts.heartbeat ?? 15000;
57
- this.pid = opts.pid ?? utils.randomId();
58
- this.retries = opts.retries ?? 2;
59
- // auth
60
- if (opts.auth?.basic) {
61
- this.headers["Authorization"] = `Basic ${btoa(`${opts.auth.basic.username}:${opts.auth.basic.password}`)}`;
62
- }
63
- }
64
- async call(path, guard, options) {
65
- let error;
66
- // add auth headers
67
- options.headers = { ...this.headers, ...options.headers };
68
- for (let i = 0; i < this.retries + 1; i++) {
69
- try {
70
- this.logger.debug("store:req", {
71
- url: this.url,
72
- method: options.method,
73
- headers: options.headers,
74
- body: options.body,
75
- });
76
- let r;
77
- try {
78
- r = await fetch(`${this.url}/${path}`, options);
79
- }
80
- catch (err) {
81
- // We need to differentiate between errors in this fetch and possible fetching
82
- // errors in the user code, that is why we wrap the fetch error in a resonate
83
- // error.
84
- // Some fetch errors are caused by malformed urls or wrong use of headers,
85
- // thoses shouldn't be retriable, but fetch throws a `TypeError` for those
86
- // aswell as errors when the server is unreachble which is a retriable error.
87
- // Since it is hard to identify which error was thrown, we mark all of them as retriable.
88
- throw new errors_1.ResonateError("Fetch Error", errors_1.ErrorCodes.FETCH, err, true);
89
- }
90
- const body = r.status !== 204 ? await r.json() : undefined;
91
- this.logger.debug("store:res", {
92
- status: r.status,
93
- body: body,
94
- });
95
- if (!r.ok) {
96
- switch (r.status) {
97
- case 400:
98
- throw new errors_1.ResonateError("Invalid request", errors_1.ErrorCodes.STORE_PAYLOAD, body);
99
- case 401:
100
- throw new errors_1.ResonateError("Unauthorized request", errors_1.ErrorCodes.STORE_UNAUTHORIZED, body);
101
- case 403:
102
- throw new errors_1.ResonateError("Forbidden request", errors_1.ErrorCodes.STORE_FORBIDDEN, body);
103
- case 404:
104
- throw new errors_1.ResonateError("Not found", errors_1.ErrorCodes.STORE_NOT_FOUND, body);
105
- case 409:
106
- throw new errors_1.ResonateError("Already exists", errors_1.ErrorCodes.STORE_ALREADY_EXISTS, body);
107
- default:
108
- throw new errors_1.ResonateError("Server error", errors_1.ErrorCodes.STORE, body, true);
109
- }
110
- }
111
- if (!guard(body)) {
112
- throw new errors_1.ResonateError("Invalid response", errors_1.ErrorCodes.STORE_PAYLOAD, body);
113
- }
114
- return body;
115
- }
116
- catch (e) {
117
- if (e instanceof errors_1.ResonateError && !e.retriable) {
118
- throw e;
119
- }
120
- else {
121
- error = e;
122
- }
123
- }
124
- }
125
- throw errors_1.ResonateError.fromError(error);
126
- }
127
- }
128
- exports.RemoteStore = RemoteStore;
129
- class RemotePromiseStore {
130
- store;
131
- constructor(store) {
132
- this.store = store;
133
- }
134
- async create(id, ikey, strict, headers, data, timeout, tags) {
135
- const reqHeaders = {
136
- Strict: JSON.stringify(strict),
137
- };
138
- if (ikey !== undefined) {
139
- reqHeaders["Idempotency-Key"] = ikey;
140
- }
141
- const promise = await this.store.call("promises", types_1.isDurablePromiseRecord, {
142
- method: "POST",
143
- headers: reqHeaders,
144
- body: JSON.stringify({
145
- id: id,
146
- param: {
147
- headers: headers,
148
- data: data ? encode(data, this.store.encoder) : undefined,
149
- },
150
- timeout: timeout,
151
- tags: tags,
152
- }),
153
- });
154
- return decode(promise, this.store.encoder);
155
- }
156
- async cancel(id, ikey, strict, headers, data) {
157
- const reqHeaders = {
158
- Strict: JSON.stringify(strict),
159
- };
160
- if (ikey !== undefined) {
161
- reqHeaders["Idempotency-Key"] = ikey;
162
- }
163
- const promise = await this.store.call(`promises/${id}`, types_1.isDurablePromiseRecord, {
164
- method: "PATCH",
165
- headers: reqHeaders,
166
- body: JSON.stringify({
167
- state: "REJECTED_CANCELED",
168
- value: {
169
- headers: headers,
170
- data: data ? encode(data, this.store.encoder) : undefined,
171
- },
172
- }),
173
- });
174
- if (!(0, types_1.isCompletedPromise)(promise)) {
175
- throw new errors_1.ResonateError("Invalid response", errors_1.ErrorCodes.STORE_PAYLOAD, promise);
176
- }
177
- return decode(promise, this.store.encoder);
178
- }
179
- async resolve(id, ikey, strict, headers, data) {
180
- const reqHeaders = {
181
- Strict: JSON.stringify(strict),
182
- };
183
- if (ikey !== undefined) {
184
- reqHeaders["Idempotency-Key"] = ikey;
185
- }
186
- const promise = await this.store.call(`promises/${id}`, types_1.isDurablePromiseRecord, {
187
- method: "PATCH",
188
- headers: reqHeaders,
189
- body: JSON.stringify({
190
- state: "RESOLVED",
191
- value: {
192
- headers: headers,
193
- data: data ? encode(data, this.store.encoder) : undefined,
194
- },
195
- }),
196
- });
197
- if (!(0, types_1.isCompletedPromise)(promise)) {
198
- throw new errors_1.ResonateError("Invalid response", errors_1.ErrorCodes.STORE_PAYLOAD, promise);
199
- }
200
- return decode(promise, this.store.encoder);
201
- }
202
- async reject(id, ikey, strict, headers, data) {
203
- const reqHeaders = {
204
- Strict: JSON.stringify(strict),
205
- };
206
- if (ikey !== undefined) {
207
- reqHeaders["Idempotency-Key"] = ikey;
208
- }
209
- const promise = await this.store.call(`promises/${id}`, types_1.isDurablePromiseRecord, {
210
- method: "PATCH",
211
- headers: reqHeaders,
212
- body: JSON.stringify({
213
- state: "REJECTED",
214
- value: {
215
- headers: headers,
216
- data: data ? encode(data, this.store.encoder) : undefined,
217
- },
218
- }),
219
- });
220
- if (!(0, types_1.isCompletedPromise)(promise)) {
221
- throw new errors_1.ResonateError("Invalid response", errors_1.ErrorCodes.STORE_PAYLOAD, promise);
222
- }
223
- return decode(promise, this.store.encoder);
224
- }
225
- async get(id) {
226
- const promise = await this.store.call(`promises/${id}`, types_1.isDurablePromiseRecord, {
227
- method: "GET",
228
- });
229
- return decode(promise, this.store.encoder);
230
- }
231
- async *search(id, state, tags, limit) {
232
- let cursor = undefined;
233
- while (cursor !== null) {
234
- const params = new URLSearchParams({ id });
235
- if (state !== undefined) {
236
- params.append("state", state);
237
- }
238
- for (const [k, v] of Object.entries(tags ?? {})) {
239
- params.append(`tags[${k}]`, v);
240
- }
241
- if (limit !== undefined) {
242
- params.append("limit", limit.toString());
243
- }
244
- if (cursor !== undefined) {
245
- params.append("cursor", cursor);
246
- }
247
- const res = await this.store.call(`promises?${params.toString()}`, isSearchPromiseResult, {
248
- method: "GET",
249
- });
250
- cursor = res.cursor;
251
- yield res.promises.map((p) => decode(p, this.store.encoder));
252
- }
253
- }
254
- }
255
- exports.RemotePromiseStore = RemotePromiseStore;
256
- class RemoteScheduleStore {
257
- store;
258
- constructor(store) {
259
- this.store = store;
260
- }
261
- async create(id, ikey, description, cron, tags, promiseId, promiseTimeout, promiseHeaders, promiseData, promiseTags) {
262
- const reqHeaders = {};
263
- if (ikey !== undefined) {
264
- reqHeaders["Idempotency-Key"] = ikey;
265
- }
266
- const schedule = this.store.call(`schedules`, types_2.isSchedule, {
267
- method: "POST",
268
- headers: reqHeaders,
269
- body: JSON.stringify({
270
- id,
271
- description,
272
- cron,
273
- tags,
274
- promiseId,
275
- promiseTimeout,
276
- promiseParam: {
277
- headers: promiseHeaders,
278
- data: promiseData ? encode(promiseData, this.store.encoder) : undefined,
279
- },
280
- promiseTags,
281
- }),
282
- });
283
- return schedule;
284
- }
285
- async get(id) {
286
- const schedule = this.store.call(`schedules/${id}`, types_2.isSchedule, {
287
- method: "GET",
288
- });
289
- return schedule;
290
- }
291
- async delete(id) {
292
- await this.store.call(`schedules/${id}`, (b) => true, {
293
- method: "DELETE",
294
- });
295
- }
296
- async *search(id, tags, limit) {
297
- let cursor = undefined;
298
- while (cursor !== null) {
299
- const params = new URLSearchParams({ id });
300
- for (const [k, v] of Object.entries(tags ?? {})) {
301
- params.append(`tags[${k}]`, v);
302
- }
303
- if (limit !== undefined) {
304
- params.append("limit", limit.toString());
305
- }
306
- if (cursor !== undefined) {
307
- params.append("cursor", cursor);
308
- }
309
- const res = await this.store.call(`schedules?${params.toString()}`, isSearchSchedulesResult, {
310
- method: "GET",
311
- });
312
- cursor = res.cursor;
313
- yield res.schedules;
314
- }
315
- }
316
- }
317
- exports.RemoteScheduleStore = RemoteScheduleStore;
318
- class RemoteLockStore {
319
- store;
320
- heartbeatInterval = null;
321
- locksHeld = 0;
322
- constructor(store) {
323
- this.store = store;
324
- }
325
- async tryAcquire(resourceId, executionId, expiry = this.store.heartbeat * 4) {
326
- // lock expiry cannot be less than heartbeat frequency
327
- expiry = Math.max(expiry, this.store.heartbeat);
328
- await this.store.call(`locks/acquire`, (b) => true, {
329
- method: "POST",
330
- body: JSON.stringify({
331
- resourceId: resourceId,
332
- processId: this.store.pid,
333
- executionId: executionId,
334
- expiryInMilliseconds: expiry,
335
- }),
336
- });
337
- // increment the number of locks held
338
- this.locksHeld++;
339
- // lazily start the heartbeat
340
- this.startHeartbeat();
341
- return true;
342
- }
343
- async release(resourceId, executionId) {
344
- await this.store.call(`locks/release`, (b) => b === undefined, {
345
- method: "POST",
346
- body: JSON.stringify({
347
- resourceId,
348
- executionId,
349
- }),
350
- });
351
- // decrement the number of locks held
352
- this.locksHeld = Math.max(this.locksHeld - 1, 0);
353
- if (this.locksHeld === 0) {
354
- this.stopHeartbeat();
355
- }
356
- return true;
357
- }
358
- startHeartbeat() {
359
- if (this.heartbeatInterval === null) {
360
- // the + converts to a number
361
- this.heartbeatInterval = +setInterval(() => this.heartbeat(), this.store.heartbeat);
362
- }
363
- }
364
- stopHeartbeat() {
365
- if (this.heartbeatInterval !== null) {
366
- clearInterval(this.heartbeatInterval);
367
- this.heartbeatInterval = null;
368
- }
369
- }
370
- async heartbeat() {
371
- const res = await this.store.call(`locks/heartbeat`, (b) => typeof b === "object" && b !== null && "locksAffected" in b && typeof b.locksAffected === "number", {
372
- method: "POST",
373
- body: JSON.stringify({
374
- processId: this.store.pid,
375
- }),
376
- });
377
- // set the number of locks held
378
- this.locksHeld = res.locksAffected;
379
- if (this.locksHeld === 0) {
380
- this.stopHeartbeat();
381
- }
382
- }
383
- }
384
- exports.RemoteLockStore = RemoteLockStore;
385
- // Utils
386
- function encode(value, encoder) {
387
- try {
388
- return encoder.encode(value);
389
- }
390
- catch (e) {
391
- throw new errors_1.ResonateError("Encoder error", errors_1.ErrorCodes.STORE_ENCODER, e);
392
- }
393
- }
394
- function decode(promise, encoder) {
395
- try {
396
- if (promise.param?.data) {
397
- promise.param.data = encoder.decode(promise.param.data);
398
- }
399
- if (promise.value?.data) {
400
- promise.value.data = encoder.decode(promise.value.data);
401
- }
402
- return promise;
403
- }
404
- catch (e) {
405
- throw new errors_1.ResonateError("Decoder error", errors_1.ErrorCodes.STORE_ENCODER, e);
406
- }
407
- }
408
- // Type guards
409
- function isSearchPromiseResult(obj) {
410
- return (typeof obj === "object" &&
411
- obj !== null &&
412
- "cursor" in obj &&
413
- obj.cursor !== undefined &&
414
- (obj.cursor === null || typeof obj.cursor === "string") &&
415
- "promises" in obj &&
416
- obj.promises !== undefined &&
417
- Array.isArray(obj.promises) &&
418
- obj.promises.every(types_1.isDurablePromiseRecord));
419
- }
420
- function isSearchSchedulesResult(obj) {
421
- return (typeof obj === "object" &&
422
- obj !== null &&
423
- "cursor" in obj &&
424
- obj.cursor !== undefined &&
425
- (obj.cursor === null || typeof obj.cursor === "string") &&
426
- "schedules" in obj &&
427
- obj.schedules !== undefined &&
428
- Array.isArray(obj.schedules) &&
429
- obj.schedules.every(types_2.isSchedule));
430
- }
431
- //# sourceMappingURL=remote.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../lib/core/stores/remote.ts"],"names":[],"mappings":"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"}
@@ -1,85 +0,0 @@
1
- import { Options } from "./options";
2
- export declare function randomId(): string;
3
- export declare function hash(s: string): string;
4
- export declare function split(argsWithOpts: any[]): {
5
- args: any[];
6
- opts: Partial<Options>;
7
- };
8
- /**
9
- * Merges two objects, preferring values from the first object when both are defined.
10
- * If a property is undefined in the first object, the value from the second object is used.
11
- *
12
- * @template T - Type of the first object
13
- * @template U - Type of the second object
14
- * @param {T} obj1 - The first object to merge
15
- * @param {U} obj2 - The second object to merge
16
- * @returns {T & U} A new object containing all properties from both input objects
17
- *
18
- * @example
19
- * const obj1 = { a: 1, b: undefined };
20
- * const obj2 = { b: 2, c: 3 };
21
- * const result = mergeObjects(obj1, obj2);
22
- * // result is { a: 1, b: 2, c: 3 }
23
- *
24
- * @remarks
25
- * - Properties from obj1 take precedence over obj2 when both are defined.
26
- * - The function creates a new object and does not modify the input objects.
27
- * - Nested objects and arrays are not deeply merged, only their references are copied.
28
- */
29
- export declare function mergeObjects<T extends object, U extends object>(obj1: T, obj2: U): T & U;
30
- /**
31
- * Creates a promise that resolves after a specified delay.
32
- *
33
- * @param ms - The delay in milliseconds.
34
- * @returns A promise that resolves after the specified delay.
35
- *
36
- * @example
37
- * // Basic usage
38
- * await sleep(1000); // Pauses execution for 1 second
39
- *
40
- * @example
41
- * // Using in an async function
42
- * async function example() {
43
- * console.log('Start');
44
- * await sleep(2000);
45
- * console.log('2 seconds later');
46
- * }
47
- *
48
- * @example
49
- * // Using with .then()
50
- * sleep(3000).then(() => console.log('3 seconds have passed'));
51
- */
52
- export declare function sleep(ms: number): Promise<void>;
53
- /**
54
- * Determines the current state of a Promise.
55
- *
56
- * @param p - The Promise whose state is to be determined.
57
- *
58
- * @returns {Promise<'pending' | 'resolved' | 'rejected'>} A Promise that resolves to a string
59
- * representing the state of the input Promise:
60
- * - 'pending': The input Promise has not settled yet.
61
- * - 'resolved': The input Promise has resolved successfully.
62
- * - 'rejected': The input Promise has been rejected.
63
- *
64
- * @throws {TypeError} If the input is not a Promise.
65
- *
66
- * @example
67
- * const myPromise = new Promise(resolve => setTimeout(() => resolve('done'), 1000));
68
- *
69
- * // Check state immediately
70
- * promiseState(myPromise).then(state => console.log(state)); // Logs: 'pending'
71
- *
72
- * // Check state after 2 seconds
73
- * setTimeout(() => {
74
- * promiseState(myPromise).then(state => console.log(state)); // Logs: 'resolved'
75
- * }, 2000);
76
- *
77
- * @remarks
78
- * This function uses `Promise.race()` internally to determine the state of the input Promise.
79
- * It does not affect the execution or result of the input Promise in any way.
80
- *
81
- * Note that the state of a Promise can change from 'pending' to either 'resolved' or 'rejected',
82
- * but once it's settled (either 'resolved' or 'rejected'), it cannot change again.
83
- */
84
- export declare function promiseState(p: Promise<any>): Promise<"pending" | "resolved" | "rejected">;
85
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../lib/core/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAa,MAAM,WAAW,CAAC;AAE/C,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAUtC;AAED,wBAAgB,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAKlF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAOxF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC,CAM1F"}
@@ -1,121 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.promiseState = exports.sleep = exports.mergeObjects = exports.split = exports.hash = exports.randomId = void 0;
4
- const options_1 = require("./options");
5
- function randomId() {
6
- return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16);
7
- }
8
- exports.randomId = randomId;
9
- function hash(s) {
10
- let h = 0;
11
- for (let i = 0; i < s.length; i++) {
12
- h = (Math.imul(31, h) + s.charCodeAt(i)) | 0;
13
- }
14
- // Generate fixed length hexadecimal hash
15
- const hashString = (Math.abs(h) >>> 0).toString(16); // Convert to unsigned int and then to hexadecimal
16
- const maxLength = 8;
17
- return "0".repeat(Math.max(0, maxLength - hashString.length)) + hashString;
18
- }
19
- exports.hash = hash;
20
- function split(argsWithOpts) {
21
- const possibleOpts = argsWithOpts.at(-1);
22
- return (0, options_1.isOptions)(possibleOpts)
23
- ? { args: argsWithOpts.slice(0, -1), opts: possibleOpts }
24
- : { args: argsWithOpts, opts: {} };
25
- }
26
- exports.split = split;
27
- /**
28
- * Merges two objects, preferring values from the first object when both are defined.
29
- * If a property is undefined in the first object, the value from the second object is used.
30
- *
31
- * @template T - Type of the first object
32
- * @template U - Type of the second object
33
- * @param {T} obj1 - The first object to merge
34
- * @param {U} obj2 - The second object to merge
35
- * @returns {T & U} A new object containing all properties from both input objects
36
- *
37
- * @example
38
- * const obj1 = { a: 1, b: undefined };
39
- * const obj2 = { b: 2, c: 3 };
40
- * const result = mergeObjects(obj1, obj2);
41
- * // result is { a: 1, b: 2, c: 3 }
42
- *
43
- * @remarks
44
- * - Properties from obj1 take precedence over obj2 when both are defined.
45
- * - The function creates a new object and does not modify the input objects.
46
- * - Nested objects and arrays are not deeply merged, only their references are copied.
47
- */
48
- function mergeObjects(obj1, obj2) {
49
- return Object.entries({ ...obj1, ...obj2 }).reduce((acc, [key, value]) => {
50
- acc[key] = (obj1[key] !== undefined ? obj1[key] : obj2[key]);
51
- return acc;
52
- }, {});
53
- }
54
- exports.mergeObjects = mergeObjects;
55
- /**
56
- * Creates a promise that resolves after a specified delay.
57
- *
58
- * @param ms - The delay in milliseconds.
59
- * @returns A promise that resolves after the specified delay.
60
- *
61
- * @example
62
- * // Basic usage
63
- * await sleep(1000); // Pauses execution for 1 second
64
- *
65
- * @example
66
- * // Using in an async function
67
- * async function example() {
68
- * console.log('Start');
69
- * await sleep(2000);
70
- * console.log('2 seconds later');
71
- * }
72
- *
73
- * @example
74
- * // Using with .then()
75
- * sleep(3000).then(() => console.log('3 seconds have passed'));
76
- */
77
- async function sleep(ms) {
78
- if (ms < 0) {
79
- throw new Error("ms should be a positive integer");
80
- }
81
- return new Promise((resolve) => setTimeout(resolve, ms));
82
- }
83
- exports.sleep = sleep;
84
- /**
85
- * Determines the current state of a Promise.
86
- *
87
- * @param p - The Promise whose state is to be determined.
88
- *
89
- * @returns {Promise<'pending' | 'resolved' | 'rejected'>} A Promise that resolves to a string
90
- * representing the state of the input Promise:
91
- * - 'pending': The input Promise has not settled yet.
92
- * - 'resolved': The input Promise has resolved successfully.
93
- * - 'rejected': The input Promise has been rejected.
94
- *
95
- * @throws {TypeError} If the input is not a Promise.
96
- *
97
- * @example
98
- * const myPromise = new Promise(resolve => setTimeout(() => resolve('done'), 1000));
99
- *
100
- * // Check state immediately
101
- * promiseState(myPromise).then(state => console.log(state)); // Logs: 'pending'
102
- *
103
- * // Check state after 2 seconds
104
- * setTimeout(() => {
105
- * promiseState(myPromise).then(state => console.log(state)); // Logs: 'resolved'
106
- * }, 2000);
107
- *
108
- * @remarks
109
- * This function uses `Promise.race()` internally to determine the state of the input Promise.
110
- * It does not affect the execution or result of the input Promise in any way.
111
- *
112
- * Note that the state of a Promise can change from 'pending' to either 'resolved' or 'rejected',
113
- * but once it's settled (either 'resolved' or 'rejected'), it cannot change again.
114
- */
115
- function promiseState(p) {
116
- const t = {};
117
- return Promise.race([p, t]).then((v) => (v === t ? "pending" : "resolved"), // Resolved branch
118
- () => "rejected");
119
- }
120
- exports.promiseState = promiseState;
121
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/core/utils.ts"],"names":[],"mappings":"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"}