@resonatehq/sdk 0.6.3 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +34 -0
  51. package/dist/src/coroutine.d.ts.map +1 -0
  52. package/dist/src/coroutine.js +246 -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 +515 -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
@@ -0,0 +1,515 @@
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.HttpNetwork = exports.JsonEncoder = void 0;
37
+ const eventsource_1 = require("eventsource");
38
+ const util = __importStar(require("../util"));
39
+ class JsonEncoder {
40
+ inf = "__INF__";
41
+ negInf = "__NEG_INF__";
42
+ encode(value) {
43
+ // note about undefined:
44
+ // undefined is not json serializable, so immediately return undefined
45
+ if (value === undefined) {
46
+ return {
47
+ data: undefined,
48
+ };
49
+ }
50
+ const jsonVal = JSON.stringify(value, (_, value) => {
51
+ if (value === Number.POSITIVE_INFINITY) {
52
+ return this.inf;
53
+ }
54
+ if (value === Number.NEGATIVE_INFINITY) {
55
+ return this.negInf;
56
+ }
57
+ if (value instanceof AggregateError) {
58
+ return {
59
+ __type: "aggregate_error",
60
+ message: value.message,
61
+ stack: value.stack,
62
+ name: value.name,
63
+ errors: value.errors,
64
+ };
65
+ }
66
+ if (value instanceof Error) {
67
+ return {
68
+ __type: "error",
69
+ message: value.message,
70
+ stack: value.stack,
71
+ name: value.name,
72
+ };
73
+ }
74
+ return value;
75
+ });
76
+ return {
77
+ headers: {},
78
+ data: btoa(jsonVal),
79
+ };
80
+ }
81
+ decode(apiValue) {
82
+ if (!apiValue?.data) {
83
+ return undefined;
84
+ }
85
+ const data = atob(apiValue.data);
86
+ return JSON.parse(data, (_, value) => {
87
+ if (value === this.inf) {
88
+ return Number.POSITIVE_INFINITY;
89
+ }
90
+ if (value === this.negInf) {
91
+ return Number.NEGATIVE_INFINITY;
92
+ }
93
+ if (value?.__type === "aggregate_error") {
94
+ return Object.assign(new AggregateError(value.errors, value.message), value);
95
+ }
96
+ if (value?.__type === "error") {
97
+ const error = new Error(value.message || "Unknown error");
98
+ if (value.name)
99
+ error.name = value.name;
100
+ if (value.stack)
101
+ error.stack = value.stack;
102
+ return error;
103
+ }
104
+ return value;
105
+ });
106
+ }
107
+ }
108
+ exports.JsonEncoder = JsonEncoder;
109
+ class HttpNetwork {
110
+ url;
111
+ msgUrl;
112
+ timeout;
113
+ baseHeaders;
114
+ encoder;
115
+ eventSource;
116
+ subscriptions = new Array();
117
+ constructor(config) {
118
+ const { host, storePort, messageSourcePort, pid, group } = config;
119
+ this.url = `${host}:${storePort}`;
120
+ this.msgUrl = new URL(`/${encodeURIComponent(group)}/${encodeURIComponent(pid)}`, `${host}:${messageSourcePort}`).href;
121
+ this.timeout = config.timeout || 30 * util.SEC;
122
+ this.baseHeaders = {
123
+ "Content-Type": "application/json",
124
+ ...config.headers,
125
+ };
126
+ this.encoder = config.encoder ?? new JsonEncoder();
127
+ this.eventSource = new eventsource_1.EventSource(this.msgUrl);
128
+ this.eventSource.addEventListener("message", (event) => this._recv(event));
129
+ }
130
+ send(req, callback, retryForever = false) {
131
+ const retryPolicy = retryForever ? { retries: Number.MAX_SAFE_INTEGER, delay: 1000 } : { retries: 0 };
132
+ this.handleRequest(req, retryPolicy).then((res) => {
133
+ util.assert(res.kind === req.kind, "res kind must match req kind");
134
+ callback(false, res);
135
+ }, (err) => {
136
+ console.error(`Request failed: ${err}`);
137
+ callback(true);
138
+ });
139
+ }
140
+ _recv(event) {
141
+ let msg;
142
+ const data = JSON.parse(event.data);
143
+ if ((data?.type === "invoke" || data?.type === "resume") && util.isTaskRecord(data?.task)) {
144
+ msg = { type: data.type, task: data.task };
145
+ }
146
+ else if (data?.type === "notify" && util.isDurablePromiseRecord(data?.promise)) {
147
+ msg = { type: data.type, promise: this.mapPromiseDtoToRecord(data.promise) };
148
+ }
149
+ else {
150
+ console.warn("Received invalid message:", data);
151
+ return;
152
+ }
153
+ this.recv(msg);
154
+ }
155
+ recv(msg) {
156
+ for (const callback of this.subscriptions) {
157
+ callback(msg);
158
+ }
159
+ }
160
+ stop() {
161
+ this.eventSource.close();
162
+ }
163
+ subscribe(callback) {
164
+ this.subscriptions.push(callback);
165
+ }
166
+ async handleRequest(req, retryPolicy = {}) {
167
+ switch (req.kind) {
168
+ case "createPromise":
169
+ return this.createPromise(req, retryPolicy);
170
+ case "createPromiseAndTask":
171
+ return this.createPromiseAndTask(req, retryPolicy);
172
+ case "readPromise":
173
+ return this.readPromise(req, retryPolicy);
174
+ case "completePromise":
175
+ return this.completePromise(req, retryPolicy);
176
+ case "createCallback":
177
+ return this.createCallback(req, retryPolicy);
178
+ case "createSubscription":
179
+ return this.createSubscription(req, retryPolicy);
180
+ case "createSchedule":
181
+ return this.createSchedule(req, retryPolicy);
182
+ case "readSchedule":
183
+ return this.readSchedule(req, retryPolicy);
184
+ case "deleteSchedule":
185
+ return this.deleteSchedule(req, retryPolicy);
186
+ case "claimTask":
187
+ return this.claimTask(req, retryPolicy);
188
+ case "completeTask":
189
+ return this.completeTask(req, retryPolicy);
190
+ case "dropTask":
191
+ return this.dropTask(req, retryPolicy);
192
+ case "heartbeatTasks":
193
+ return this.heartbeatTasks(req, retryPolicy);
194
+ default:
195
+ throw new Error(`Unsupported request kind: ${req.kind}`);
196
+ }
197
+ }
198
+ async createPromise(req, retryPolicy = {}) {
199
+ const headers = { ...this.baseHeaders };
200
+ if (req.iKey)
201
+ headers["idempotency-key"] = req.iKey;
202
+ if (req.strict !== undefined)
203
+ headers.strict = req.strict.toString();
204
+ const res = await this.fetch("/promises", {
205
+ method: "POST",
206
+ headers,
207
+ body: JSON.stringify({
208
+ id: req.id,
209
+ timeout: req.timeout,
210
+ param: this.encoder.encode(req.param),
211
+ tags: req.tags,
212
+ }),
213
+ }, retryPolicy);
214
+ const promise = this.mapPromiseDtoToRecord((await res.json()));
215
+ return { kind: "createPromise", promise };
216
+ }
217
+ async createPromiseAndTask(req, retryPolicy = {}) {
218
+ const headers = { ...this.baseHeaders };
219
+ if (req.iKey)
220
+ headers["idempotency-key"] = req.iKey;
221
+ if (req.strict !== undefined)
222
+ headers.strict = req.strict.toString();
223
+ const res = await this.fetch("/promises/task", {
224
+ method: "POST",
225
+ headers,
226
+ body: JSON.stringify({
227
+ promise: {
228
+ id: req.promise.id,
229
+ timeout: req.promise.timeout,
230
+ param: this.encoder.encode(req.promise.param),
231
+ tags: req.promise.tags,
232
+ },
233
+ task: {
234
+ processId: req.task.processId,
235
+ ttl: req.task.ttl,
236
+ },
237
+ }),
238
+ }, retryPolicy);
239
+ const data = (await res.json());
240
+ return {
241
+ kind: "createPromiseAndTask",
242
+ promise: this.mapPromiseDtoToRecord(data.promise),
243
+ task: data.task ? this.mapTaskDtoToRecord(data.task) : undefined,
244
+ };
245
+ }
246
+ async readPromise(req, retryPolicy = {}) {
247
+ const res = await this.fetch(`/promises/${encodeURIComponent(req.id)}`, {
248
+ method: "GET",
249
+ headers: this.baseHeaders,
250
+ }, retryPolicy);
251
+ const promise = this.mapPromiseDtoToRecord((await res.json()));
252
+ return { kind: "readPromise", promise };
253
+ }
254
+ async completePromise(req, retryPolicy = {}) {
255
+ const headers = { ...this.baseHeaders };
256
+ if (req.iKey)
257
+ headers["idempotency-key"] = req.iKey;
258
+ if (req.strict !== undefined)
259
+ headers.strict = req.strict.toString();
260
+ const res = await this.fetch(`/promises/${encodeURIComponent(req.id)}`, {
261
+ method: "PATCH",
262
+ headers,
263
+ body: JSON.stringify({
264
+ state: req.state.toUpperCase(),
265
+ value: this.encoder.encode(req.value),
266
+ }),
267
+ }, retryPolicy);
268
+ const promise = this.mapPromiseDtoToRecord((await res.json()));
269
+ return { kind: "completePromise", promise };
270
+ }
271
+ async createCallback(req, retryPolicy = {}) {
272
+ const res = await this.fetch(`/promises/callback/${encodeURIComponent(req.id)}`, {
273
+ method: "POST",
274
+ headers: this.baseHeaders,
275
+ body: JSON.stringify({
276
+ rootPromiseId: req.rootPromiseId,
277
+ timeout: req.timeout,
278
+ recv: req.recv,
279
+ }),
280
+ }, retryPolicy);
281
+ const data = (await res.json());
282
+ return {
283
+ kind: "createCallback",
284
+ callback: data.callback ? this.mapCallbackDtoToRecord(data.callback) : undefined,
285
+ promise: this.mapPromiseDtoToRecord(data.promise),
286
+ };
287
+ }
288
+ async createSubscription(req, retryPolicy = {}) {
289
+ const body = {
290
+ id: req.id,
291
+ timeout: req.timeout,
292
+ recv: req.recv,
293
+ };
294
+ const res = await this.fetch(`/promises/subscribe/${encodeURIComponent(req.id)}`, {
295
+ method: "POST",
296
+ headers: this.baseHeaders,
297
+ body: JSON.stringify(body),
298
+ }, retryPolicy);
299
+ const data = (await res.json());
300
+ return {
301
+ kind: "createSubscription",
302
+ callback: data.callback ? this.mapCallbackDtoToRecord(data.callback) : undefined,
303
+ promise: this.mapPromiseDtoToRecord(data.promise),
304
+ };
305
+ }
306
+ async createSchedule(req, retryPolicy = {}) {
307
+ const headers = { ...this.baseHeaders };
308
+ if (req.iKey)
309
+ headers["idempotency-key"] = req.iKey;
310
+ const res = await this.fetch("/schedules", {
311
+ method: "POST",
312
+ headers,
313
+ body: JSON.stringify({
314
+ id: req.id,
315
+ description: req.description,
316
+ cron: req.cron,
317
+ tags: req.tags,
318
+ promiseId: req.promiseId,
319
+ promiseTimeout: req.promiseTimeout,
320
+ promiseParam: req.promiseParam,
321
+ promiseTags: req.promiseTags,
322
+ }),
323
+ }, retryPolicy);
324
+ return {
325
+ kind: "createSchedule",
326
+ schedule: this.mapScheduleDtoToRecord((await res.json())),
327
+ };
328
+ }
329
+ async readSchedule(req, retryPolicy = {}) {
330
+ const res = await this.fetch(`/schedules/${encodeURIComponent(req.id)}`, {
331
+ method: "GET",
332
+ headers: this.baseHeaders,
333
+ }, retryPolicy);
334
+ return {
335
+ kind: "readSchedule",
336
+ schedule: this.mapScheduleDtoToRecord((await res.json())),
337
+ };
338
+ }
339
+ async deleteSchedule(req, retryPolicy = {}) {
340
+ await this.fetch(`/schedules/${encodeURIComponent(req.id)}`, {
341
+ method: "DELETE",
342
+ headers: this.baseHeaders,
343
+ }, retryPolicy);
344
+ return { kind: "deleteSchedule" };
345
+ }
346
+ async claimTask(req, retryPolicy = {}) {
347
+ const res = await this.fetch("/tasks/claim", {
348
+ method: "POST",
349
+ headers: this.baseHeaders,
350
+ body: JSON.stringify({
351
+ id: req.id,
352
+ counter: req.counter,
353
+ processId: req.processId,
354
+ ttl: req.ttl,
355
+ }),
356
+ }, retryPolicy);
357
+ const message = (await res.json());
358
+ if (message.type !== "invoke" && message.type !== "resume") {
359
+ throw new Error(`Unknown message type: ${message.type}`);
360
+ }
361
+ return {
362
+ kind: "claimTask",
363
+ message: {
364
+ kind: message.type,
365
+ promises: {
366
+ root: message.promises.root
367
+ ? {
368
+ id: message.promises.root.id,
369
+ data: this.mapPromiseDtoToRecord(message.promises.root.data),
370
+ }
371
+ : undefined,
372
+ leaf: message.promises.leaf
373
+ ? {
374
+ id: message.promises.leaf.id,
375
+ data: this.mapPromiseDtoToRecord(message.promises.leaf.data),
376
+ }
377
+ : undefined,
378
+ },
379
+ },
380
+ };
381
+ }
382
+ async completeTask(req, retryPolicy = {}) {
383
+ const res = await this.fetch("/tasks/complete", {
384
+ method: "POST",
385
+ headers: this.baseHeaders,
386
+ body: JSON.stringify({
387
+ id: req.id,
388
+ counter: req.counter,
389
+ }),
390
+ }, retryPolicy);
391
+ return {
392
+ kind: "completeTask",
393
+ task: this.mapTaskDtoToRecord((await res.json())),
394
+ };
395
+ }
396
+ async dropTask(req, retryPolicy = {}) {
397
+ await this.fetch("/tasks/drop", {
398
+ method: "POST",
399
+ headers: this.baseHeaders,
400
+ body: JSON.stringify({
401
+ id: req.id,
402
+ counter: req.counter,
403
+ }),
404
+ }, retryPolicy);
405
+ return { kind: "dropTask" };
406
+ }
407
+ async heartbeatTasks(req, retryPolicy = {}) {
408
+ const res = await this.fetch("/tasks/heartbeat", {
409
+ method: "POST",
410
+ headers: this.baseHeaders,
411
+ body: JSON.stringify({
412
+ processId: req.processId,
413
+ }),
414
+ }, retryPolicy);
415
+ const data = (await res.json());
416
+ return {
417
+ kind: "heartbeatTasks",
418
+ tasksAffected: data.tasksAffected,
419
+ };
420
+ }
421
+ async fetch(path, init, { retries = 0, delay = 1000 } = {}) {
422
+ const url = `${this.url}${path}`;
423
+ for (let attempt = 0; attempt <= retries; attempt++) {
424
+ const controller = new AbortController();
425
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
426
+ try {
427
+ const res = await fetch(url, { ...init, signal: controller.signal });
428
+ if (!res.ok) {
429
+ const err = (await res.json().catch(() => ({})));
430
+ throw new Error(err.message || `HTTP ${res.status}: ${res.statusText}`);
431
+ }
432
+ return res;
433
+ }
434
+ catch (err) {
435
+ if (attempt >= retries) {
436
+ throw err;
437
+ }
438
+ console.log(`Networking. Cannot connect to [${this.url}]. Retrying in ${delay / 1000}s.`);
439
+ // sleep before retrying
440
+ await new Promise((resolve) => setTimeout(resolve, delay));
441
+ }
442
+ finally {
443
+ clearTimeout(timeoutId);
444
+ }
445
+ }
446
+ throw new Error("Fetch error");
447
+ }
448
+ mapPromiseDtoToRecord(apiPromise) {
449
+ return {
450
+ id: apiPromise.id,
451
+ state: this.mapApiStateToInternal(apiPromise.state),
452
+ timeout: apiPromise.timeout,
453
+ param: this.encoder.decode(apiPromise.param),
454
+ value: this.encoder.decode(apiPromise.value),
455
+ tags: apiPromise.tags || {},
456
+ iKeyForCreate: apiPromise.idempotencyKeyForCreate,
457
+ iKeyForComplete: apiPromise.idempotencyKeyForComplete,
458
+ createdOn: apiPromise.createdOn,
459
+ completedOn: apiPromise.completedOn,
460
+ };
461
+ }
462
+ mapScheduleDtoToRecord(apiSchedule) {
463
+ return {
464
+ id: apiSchedule.id,
465
+ description: apiSchedule.description,
466
+ cron: apiSchedule.cron,
467
+ tags: apiSchedule.tags || {},
468
+ promiseId: apiSchedule.promiseId,
469
+ promiseTimeout: apiSchedule.promiseTimeout,
470
+ promiseParam: apiSchedule.promiseParam,
471
+ promiseTags: apiSchedule.promiseTags || {},
472
+ iKey: apiSchedule.idempotencyKey,
473
+ lastRunTime: apiSchedule.lastRunTime,
474
+ nextRunTime: apiSchedule.nextRunTime,
475
+ createdOn: apiSchedule.createdOn,
476
+ };
477
+ }
478
+ mapCallbackDtoToRecord(apiCallback) {
479
+ return {
480
+ id: apiCallback.id,
481
+ promiseId: apiCallback.promiseId,
482
+ timeout: apiCallback.timeout,
483
+ createdOn: apiCallback.createdOn,
484
+ };
485
+ }
486
+ mapTaskDtoToRecord(apiTask) {
487
+ return {
488
+ id: apiTask.id,
489
+ rootPromiseId: apiTask.rootPromiseId,
490
+ counter: apiTask.counter,
491
+ timeout: apiTask.timeout,
492
+ processId: apiTask.processId,
493
+ createdOn: apiTask.createdOn,
494
+ completedOn: apiTask.completedOn,
495
+ };
496
+ }
497
+ mapApiStateToInternal(apiState) {
498
+ switch (apiState) {
499
+ case "PENDING":
500
+ return "pending";
501
+ case "RESOLVED":
502
+ return "resolved";
503
+ case "REJECTED":
504
+ return "rejected";
505
+ case "REJECTED_CANCELED":
506
+ return "rejected_canceled";
507
+ case "REJECTED_TIMEDOUT":
508
+ return "rejected_timedout";
509
+ default:
510
+ throw new Error(`Unknown API state: ${apiState}`);
511
+ }
512
+ }
513
+ }
514
+ exports.HttpNetwork = HttpNetwork;
515
+ //# sourceMappingURL=remote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../src/network/remote.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare class Nursery<E, R> {
2
+ private q;
3
+ private f;
4
+ private c;
5
+ private e?;
6
+ private r?;
7
+ private holds;
8
+ private running;
9
+ private completed;
10
+ constructor(f: (n: Nursery<E, R>) => void, c: (e?: E, r?: R) => void);
11
+ hold(f: (f: () => void) => void): void;
12
+ cont(): void;
13
+ done(err?: E, res?: R): void;
14
+ all<T, U, E>(list: T[], func: (item: T, done: (err?: E, res?: U) => void) => void, done: (err?: E, res?: U[]) => void): void;
15
+ private enqueue;
16
+ private execute;
17
+ private complete;
18
+ }
19
+ //# sourceMappingURL=nursery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nursery.d.ts","sourceRoot":"","sources":["../../src/nursery.ts"],"names":[],"mappings":"AAAA,qBAAa,OAAO,CAAC,CAAC,EAAE,CAAC;IAEvB,OAAO,CAAC,CAAC,CAAyB;IAIlC,OAAO,CAAC,CAAC,CAAa;IAItB,OAAO,CAAC,CAAC,CAAyB;IAGlC,OAAO,CAAC,CAAC,CAAC,CAAI;IAGd,OAAO,CAAC,CAAC,CAAC,CAAI;IAEd,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;gBAEd,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI;IAQpE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI;IAe/B,IAAI;IAUJ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAUrB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,EAAE,EACT,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,EACzD,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI;IA4BpC,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,QAAQ;CAIjB"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Nursery = void 0;
4
+ class Nursery {
5
+ // event queue, these functions are ensured to execute sequentially
6
+ q = [];
7
+ // the function the nursery is instantiated with, added to the
8
+ // queue when holds are released
9
+ f;
10
+ // the callback the nursery is instantiated with, called once when
11
+ // the nursery is done and all holds are released
12
+ c;
13
+ // the error value done is called with, if any
14
+ e;
15
+ // the return value done is called with, if any
16
+ r;
17
+ holds = 0;
18
+ running = false;
19
+ completed = false;
20
+ constructor(f, c) {
21
+ this.f = () => f(this);
22
+ this.c = c;
23
+ // kick off the nursery
24
+ this.enqueue(this.f);
25
+ }
26
+ hold(f) {
27
+ if (!this.running || this.completed)
28
+ return;
29
+ this.holds++;
30
+ f(() => {
31
+ this.holds--;
32
+ if (this.completed) {
33
+ this.complete();
34
+ }
35
+ else {
36
+ this.enqueue(this.f);
37
+ }
38
+ });
39
+ }
40
+ cont() {
41
+ this.running = false;
42
+ if (this.completed) {
43
+ this.complete();
44
+ }
45
+ else {
46
+ this.execute();
47
+ }
48
+ }
49
+ done(err, res) {
50
+ if (!this.running || this.completed)
51
+ return;
52
+ this.e = err;
53
+ this.r = res;
54
+ this.running = false;
55
+ this.completed = true;
56
+ this.complete();
57
+ }
58
+ all(list, func, done) {
59
+ const results = new Array(list.length);
60
+ let remaining = list.length;
61
+ let completed = false;
62
+ const finalize = (err) => {
63
+ if (completed)
64
+ return;
65
+ completed = true;
66
+ done(err, results);
67
+ };
68
+ list.forEach((item, index) => {
69
+ func(item, (err, res) => {
70
+ if (completed)
71
+ return;
72
+ if (err)
73
+ return finalize(err);
74
+ results[index] = res;
75
+ remaining--;
76
+ if (remaining === 0) {
77
+ finalize();
78
+ }
79
+ });
80
+ });
81
+ }
82
+ enqueue(f) {
83
+ this.q.push(f);
84
+ this.execute();
85
+ }
86
+ execute() {
87
+ if (this.running)
88
+ return;
89
+ const f = this.q.shift();
90
+ if (f) {
91
+ this.running = true;
92
+ f();
93
+ }
94
+ }
95
+ complete() {
96
+ if (!this.completed || this.holds > 0)
97
+ return;
98
+ this.c(this.e, this.r);
99
+ }
100
+ }
101
+ exports.Nursery = Nursery;
102
+ //# sourceMappingURL=nursery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nursery.js","sourceRoot":"","sources":["../../src/nursery.ts"],"names":[],"mappings":"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"}