@hatchet-dev/typescript-sdk 1.15.2 → 1.17.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 +14 -2
  2. package/clients/admin/admin-client.d.ts +2 -2
  3. package/clients/admin/admin-client.js +8 -9
  4. package/clients/dispatcher/action-listener.d.ts +3 -6
  5. package/clients/dispatcher/action-listener.js +54 -23
  6. package/clients/dispatcher/dispatcher-client.js +5 -8
  7. package/clients/dispatcher/heartbeat/heartbeat-worker.js +7 -4
  8. package/clients/event/event-client.d.ts +2 -2
  9. package/clients/event/event-client.js +5 -11
  10. package/clients/hatchet-client/hatchet-logger.js +8 -17
  11. package/clients/listeners/durable-listener/durable-listener-client.d.ts +115 -15
  12. package/clients/listeners/durable-listener/durable-listener-client.js +769 -19
  13. package/clients/listeners/durable-listener/pooled-durable-listener-client.js +11 -22
  14. package/clients/listeners/run-listener/child-listener-client.d.ts +1 -1
  15. package/clients/listeners/run-listener/child-listener-client.js +34 -30
  16. package/clients/listeners/run-listener/pooled-child-listener-client.js +9 -19
  17. package/clients/rest/generated/Api.d.ts +25 -1
  18. package/clients/rest/generated/Api.js +20 -0
  19. package/clients/rest/generated/data-contracts.d.ts +60 -1
  20. package/clients/rest/generated/data-contracts.js +9 -1
  21. package/legacy/examples/affinity-workers.js +2 -3
  22. package/legacy/examples/byo-logger.js +0 -2
  23. package/legacy/examples/concurrency/cancel-in-progress/concurrency-worker.js +4 -2
  24. package/legacy/examples/concurrency/group-round-robin/concurrency-event.js +0 -1
  25. package/legacy/examples/concurrency/group-round-robin/concurrency-worker-expression.js +4 -2
  26. package/legacy/examples/concurrency/group-round-robin/concurrency-worker-key-fn.js +4 -2
  27. package/legacy/examples/example-event.js +0 -3
  28. package/legacy/examples/logger.js +0 -1
  29. package/legacy/examples/sticky-worker-with-check.js +0 -1
  30. package/legacy/examples/sticky-worker.js +0 -1
  31. package/legacy/legacy-client.js +2 -2
  32. package/legacy/legacy-transformer.js +2 -4
  33. package/legacy/step.d.ts +16 -16
  34. package/legacy/step.js +8 -17
  35. package/legacy/workflow.d.ts +81 -81
  36. package/package.json +20 -29
  37. package/protoc/dispatcher/dispatcher.d.ts +20 -0
  38. package/protoc/dispatcher/dispatcher.js +136 -2
  39. package/protoc/v1/dispatcher.d.ts +168 -0
  40. package/protoc/v1/dispatcher.js +1920 -1
  41. package/protoc/v1/shared/trigger.d.ts +89 -0
  42. package/protoc/v1/shared/trigger.js +493 -0
  43. package/protoc/v1/workflows.d.ts +34 -34
  44. package/protoc/v1/workflows.js +252 -200
  45. package/protoc/workflows/workflows.d.ts +2 -75
  46. package/protoc/workflows/workflows.js +16 -491
  47. package/util/abort-error.d.ts +15 -1
  48. package/util/abort-error.js +30 -5
  49. package/util/config-loader/config-loader.js +4 -3
  50. package/util/config-loader/token.js +9 -2
  51. package/util/errors/eviction-not-supported-error.d.ts +5 -0
  52. package/util/errors/eviction-not-supported-error.js +18 -0
  53. package/util/errors/hatchet-error.d.ts +9 -1
  54. package/util/errors/hatchet-error.js +23 -2
  55. package/util/errors/non-determinism-error.d.ts +7 -0
  56. package/util/errors/non-determinism-error.js +21 -0
  57. package/util/errors/task-run-terminated-error.d.ts +6 -0
  58. package/util/errors/task-run-terminated-error.js +15 -0
  59. package/util/grpc-error.d.ts +9 -0
  60. package/util/grpc-error.js +25 -0
  61. package/util/hatchet-promise/hatchet-promise.d.ts +6 -1
  62. package/util/hatchet-promise/hatchet-promise.js +16 -2
  63. package/util/logger/logger.js +0 -1
  64. package/util/parse.d.ts +1 -1
  65. package/util/parse.js +4 -2
  66. package/util/retrier.js +2 -3
  67. package/util/sleep.d.ts +3 -2
  68. package/util/sleep.js +6 -4
  69. package/util/workflow-run-ref.js +5 -3
  70. package/v1/client/admin.d.ts +2 -2
  71. package/v1/client/admin.js +2 -6
  72. package/v1/client/client.d.ts +7 -11
  73. package/v1/client/client.interface.d.ts +5 -8
  74. package/v1/client/client.js +34 -40
  75. package/v1/client/duration.d.ts +11 -1
  76. package/v1/client/duration.js +44 -0
  77. package/v1/client/features/cel.js +1 -1
  78. package/v1/client/features/crons.js +2 -2
  79. package/v1/client/features/index.d.ts +5 -0
  80. package/v1/client/features/index.js +5 -0
  81. package/v1/client/features/logs.d.ts +37 -0
  82. package/v1/client/features/logs.js +46 -0
  83. package/v1/client/features/runs.d.ts +16 -3
  84. package/v1/client/features/runs.js +38 -4
  85. package/v1/client/features/schedules.js +4 -4
  86. package/v1/client/features/webhooks.js +4 -2
  87. package/v1/client/features/workflows.js +1 -1
  88. package/v1/client/worker/context.d.ts +101 -6
  89. package/v1/client/worker/context.js +257 -44
  90. package/v1/client/worker/deprecated/deprecation.js +8 -4
  91. package/v1/client/worker/deprecated/index.d.ts +1 -1
  92. package/v1/client/worker/deprecated/index.js +2 -1
  93. package/v1/client/worker/deprecated/legacy-worker.d.ts +5 -0
  94. package/v1/client/worker/deprecated/legacy-worker.js +33 -24
  95. package/v1/client/worker/deprecated/pre-eviction.d.ts +12 -0
  96. package/v1/client/worker/deprecated/pre-eviction.js +37 -0
  97. package/v1/client/worker/engine-version.d.ts +5 -0
  98. package/v1/client/worker/engine-version.js +14 -0
  99. package/v1/client/worker/eviction/eviction-cache.d.ts +33 -0
  100. package/v1/client/worker/eviction/eviction-cache.js +139 -0
  101. package/v1/client/worker/eviction/eviction-manager.d.ts +42 -0
  102. package/v1/client/worker/eviction/eviction-manager.js +132 -0
  103. package/v1/client/worker/eviction/eviction-policy.d.ts +19 -0
  104. package/v1/client/worker/eviction/eviction-policy.js +8 -0
  105. package/v1/client/worker/eviction/index.d.ts +3 -0
  106. package/v1/client/worker/eviction/index.js +11 -0
  107. package/v1/client/worker/health-server.js +3 -3
  108. package/v1/client/worker/slot-utils.js +0 -3
  109. package/v1/client/worker/worker-internal.d.ts +23 -4
  110. package/v1/client/worker/worker-internal.js +216 -148
  111. package/v1/client/worker/worker.d.ts +1 -0
  112. package/v1/client/worker/worker.js +34 -0
  113. package/v1/conditions/base.js +0 -1
  114. package/v1/conditions/index.js +2 -4
  115. package/v1/conditions/sleep-condition.js +2 -1
  116. package/v1/conditions/transformer.js +2 -1
  117. package/v1/declaration.d.ts +6 -4
  118. package/v1/declaration.js +20 -7
  119. package/v1/examples/__e2e__/harness.d.ts +5 -0
  120. package/v1/examples/__e2e__/harness.js +17 -3
  121. package/v1/examples/affinity/affinity-workers.js +0 -1
  122. package/v1/examples/bulk_operations/workflow.js +0 -1
  123. package/v1/examples/cancellation/run.js +0 -1
  124. package/v1/examples/cancellations/run.js +0 -1
  125. package/v1/examples/child_workflows/run.js +0 -2
  126. package/v1/examples/child_workflows/workflow.js +0 -1
  127. package/v1/examples/concurrency-rr/load.js +0 -1
  128. package/v1/examples/concurrency-rr/run.js +0 -3
  129. package/v1/examples/concurrency_limit_rr/load.js +0 -1
  130. package/v1/examples/concurrency_limit_rr/run.js +0 -3
  131. package/v1/examples/concurrency_workflow_level/workflow.d.ts +1 -1
  132. package/v1/examples/concurrency_workflow_level/workflow.js +1 -1
  133. package/v1/examples/conditions/event.js +0 -1
  134. package/v1/examples/conditions/run.js +0 -1
  135. package/v1/examples/dag/run.js +0 -1
  136. package/v1/examples/dag_match_condition/event.js +0 -1
  137. package/v1/examples/dag_match_condition/run.js +0 -1
  138. package/v1/examples/deep/run.js +0 -2
  139. package/v1/examples/durable/workflow.d.ts +57 -0
  140. package/v1/examples/durable/workflow.js +164 -10
  141. package/v1/examples/durable-event/event.js +0 -1
  142. package/v1/examples/durable-event/run.js +0 -2
  143. package/v1/examples/durable-event/workflow.js +2 -7
  144. package/v1/examples/durable-sleep/event.js +0 -1
  145. package/v1/examples/durable-sleep/run.js +0 -2
  146. package/v1/examples/durable_event/event.js +0 -1
  147. package/v1/examples/durable_event/run.js +0 -2
  148. package/v1/examples/durable_event/workflow.d.ts +1 -0
  149. package/v1/examples/durable_event/workflow.js +4 -9
  150. package/v1/examples/durable_eviction/capacity-worker.d.ts +1 -0
  151. package/v1/examples/durable_eviction/capacity-worker.js +31 -0
  152. package/v1/examples/durable_eviction/worker.d.ts +1 -0
  153. package/v1/examples/durable_eviction/worker.js +34 -0
  154. package/v1/examples/durable_eviction/workflow.d.ts +44 -0
  155. package/v1/examples/durable_eviction/workflow.js +129 -0
  156. package/v1/examples/durable_sleep/event.js +0 -1
  157. package/v1/examples/durable_sleep/run.js +0 -2
  158. package/v1/examples/e2e-worker.js +42 -19
  159. package/v1/examples/events/event.js +0 -1
  160. package/v1/examples/high-memory/run.js +0 -1
  161. package/v1/examples/inferred-typing/run.js +0 -1
  162. package/v1/examples/landing_page/durable-excution.js +0 -1
  163. package/v1/examples/landing_page/queues.js +0 -1
  164. package/v1/examples/legacy/run.js +0 -1
  165. package/v1/examples/logger/byo-logger.js +0 -2
  166. package/v1/examples/logger/logger.js +0 -1
  167. package/v1/examples/logging/byo-logger.js +0 -2
  168. package/v1/examples/logging/logger.js +0 -1
  169. package/v1/examples/middleware/recipes.js +3 -1
  170. package/v1/examples/migration-guides/mergent.js +2 -1
  171. package/v1/examples/multiple_wf_concurrency/run.js +0 -3
  172. package/v1/examples/non_retryable/run.js +0 -1
  173. package/v1/examples/on_event/event.js +0 -1
  174. package/v1/examples/on_failure/run.js +0 -1
  175. package/v1/examples/on_failure/workflow.js +0 -1
  176. package/v1/examples/on_success/run.js +0 -1
  177. package/v1/examples/on_success/workflow.js +0 -1
  178. package/v1/examples/priority/run.js +0 -1
  179. package/v1/examples/priority/workflow.js +0 -1
  180. package/v1/examples/retries/run.js +0 -1
  181. package/v1/examples/retries/workflow.js +0 -1
  182. package/v1/examples/simple/bulk.js +0 -1
  183. package/v1/examples/simple/cron.js +0 -2
  184. package/v1/examples/simple/delay.js +0 -1
  185. package/v1/examples/simple/enqueue.js +0 -2
  186. package/v1/examples/simple/run.js +0 -1
  187. package/v1/examples/simple/schedule.js +0 -1
  188. package/v1/examples/simple/workflow-with-child.js +10 -4
  189. package/v1/examples/sticky/run.js +0 -1
  190. package/v1/examples/sticky/workflow.js +0 -1
  191. package/v1/examples/streaming/nextjs-proxy.js +0 -1
  192. package/v1/examples/streaming/run.js +0 -1
  193. package/v1/examples/timeout/run.js +0 -1
  194. package/v1/examples/timeouts/run.js +0 -1
  195. package/v1/index.d.ts +5 -0
  196. package/v1/index.js +10 -0
  197. package/v1/parent-run-context-vars.d.ts +6 -0
  198. package/v1/slot-types.js +0 -1
  199. package/v1/task.d.ts +10 -2
  200. package/v1/task.js +2 -1
  201. package/version.d.ts +1 -1
  202. package/version.js +1 -1
@@ -33,9 +33,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
33
33
  };
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
35
  exports.DurableEventGrpcPooledListener = exports.DurableEventStreamable = void 0;
36
- // eslint-disable-next-line max-classes-per-file
37
36
  const events_1 = require("events");
38
37
  const abort_controller_x_1 = require("abort-controller-x");
38
+ const hatchet_error_1 = require("../../../util/errors/hatchet-error");
39
39
  const sleep_1 = __importDefault(require("../../../util/sleep"));
40
40
  const abort_error_1 = require("../../../util/abort-error");
41
41
  class DurableEventStreamable {
@@ -53,8 +53,9 @@ class DurableEventStreamable {
53
53
  return new Promise((resolve, reject) => {
54
54
  let cleanedUp = false;
55
55
  const cleanup = () => {
56
- if (cleanedUp)
56
+ if (cleanedUp) {
57
57
  return;
58
+ }
58
59
  cleanedUp = true;
59
60
  this.responseEmitter.removeListener('response', onResponse);
60
61
  if (signal) {
@@ -76,20 +77,7 @@ class DurableEventStreamable {
76
77
  }
77
78
  this.responseEmitter.once('response', onResponse);
78
79
  if (signal) {
79
- /**
80
- * Node defaults AbortSignal max listeners to 10, which is easy to exceed with
81
- * legitimate high-concurrency waits (e.g. multiple concurrent `ctx.waitFor(...)`
82
- * calls in the same task).
83
- *
84
- * If the signal is still at the default cap, bump it to a reasonable level
85
- * to avoid noisy `MaxListenersExceededWarning` while still keeping protection
86
- * against true leaks in unusual cases.
87
- */
88
- const max = (0, events_1.getMaxListeners)(signal);
89
- if (max !== 0 && max < 50) {
90
- (0, events_1.setMaxListeners)(50, signal);
91
- }
92
- signal.addEventListener('abort', onAbort, { once: true });
80
+ (0, abort_error_1.bindAbortSignalHandler)(signal, onAbort);
93
81
  }
94
82
  });
95
83
  });
@@ -139,13 +127,13 @@ class DurableEventGrpcPooledListener {
139
127
  try {
140
128
  this.client.logger.debug('Initializing durable-event-listener');
141
129
  this.signal = new AbortController();
142
- // eslint-disable-next-line no-plusplus
143
130
  this.currRequester++;
144
131
  this.listener = this.client.client.listenForDurableEvent(this.request(), {
145
132
  signal: this.signal.signal,
146
133
  });
147
- if (retries > 0)
134
+ if (retries > 0) {
148
135
  setTimeout(() => this.replayRequests(), 100);
136
+ }
149
137
  try {
150
138
  for (var _d = true, _e = __asyncValues(this.listener), _f; _f = yield _e.next(), _a = _f.done, !_a; _d = true) {
151
139
  _c = _f.value;
@@ -177,7 +165,7 @@ class DurableEventGrpcPooledListener {
177
165
  this.client.logger.debug('Durable event listener aborted');
178
166
  return;
179
167
  }
180
- this.client.logger.error(`Error in durable-event-listener: ${e.message}`);
168
+ this.client.logger.error(`Error in durable-event-listener: ${(0, hatchet_error_1.getErrorMessage)(e)}`);
181
169
  }
182
170
  finally {
183
171
  const subscriberCount = Object.keys(this.subscribers).length;
@@ -206,9 +194,9 @@ class DurableEventGrpcPooledListener {
206
194
  }
207
195
  subscribe(request) {
208
196
  const { taskId, signalKey } = request;
209
- if (!this.listener)
197
+ if (!this.listener) {
210
198
  throw new Error('listener not initialized');
211
- // eslint-disable-next-line no-plusplus
199
+ }
212
200
  const subscriptionId = (this.subscriptionCounter++).toString();
213
201
  const subscriber = new DurableEventStreamable(this.listener, taskId, signalKey, subscriptionId, () => this.cleanupSubscription(subscriptionId));
214
202
  this.subscribers[subscriptionId] = subscriber;
@@ -268,8 +256,9 @@ class DurableEventGrpcPooledListener {
268
256
  _d = false;
269
257
  const e = _c;
270
258
  // Stop if this requester is outdated
271
- if (currRequester !== this.currRequester)
259
+ if (currRequester !== this.currRequester) {
272
260
  break;
261
+ }
273
262
  const request = e[0];
274
263
  const key = keyHelper(request.taskId, request.signalKey);
275
264
  // Only send unique subscriptions
@@ -28,7 +28,7 @@ export declare class RunEventListener {
28
28
  client: DispatcherClient;
29
29
  q: Array<StepRunEvent>;
30
30
  eventEmitter: EventEmitter<[never]>;
31
- pollInterval: any;
31
+ pollInterval: ReturnType<typeof setInterval> | undefined;
32
32
  constructor(client: DispatcherClient);
33
33
  static forRunId(workflowRunId: string, client: DispatcherClient): RunEventListener;
34
34
  static forAdditionalMeta(key: string, value: string, client: DispatcherClient): RunEventListener;
@@ -33,8 +33,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
33
33
  };
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
35
  exports.RunListenerClient = exports.RunEventListener = exports.RunEventType = void 0;
36
- // eslint-disable-next-line max-classes-per-file
37
36
  const nice_grpc_1 = require("nice-grpc");
37
+ const grpc_error_1 = require("../../../util/grpc-error");
38
38
  const events_1 = require("events");
39
39
  const dispatcher_1 = require("../../../protoc/dispatcher");
40
40
  const hatchet_error_1 = __importDefault(require("../../../util/errors/hatchet-error"));
@@ -42,7 +42,6 @@ const sleep_1 = __importDefault(require("../../../util/sleep"));
42
42
  const pooled_child_listener_client_1 = require("./pooled-child-listener-client");
43
43
  const DEFAULT_EVENT_LISTENER_RETRY_INTERVAL = 5; // seconds
44
44
  const DEFAULT_EVENT_LISTENER_RETRY_COUNT = 5;
45
- // eslint-disable-next-line no-shadow
46
45
  var RunEventType;
47
46
  (function (RunEventType) {
48
47
  RunEventType["STEP_RUN_EVENT_TYPE_STARTED"] = "STEP_RUN_EVENT_TYPE_STARTED";
@@ -125,39 +124,45 @@ class RunEventListener {
125
124
  var _a, e_1, _b, _c;
126
125
  var _d;
127
126
  let listener = listenerFactory();
128
- try {
127
+ while (true) {
129
128
  try {
130
- for (var _e = true, listener_1 = __asyncValues(listener), listener_1_1; listener_1_1 = yield listener_1.next(), _a = listener_1_1.done, !_a; _e = true) {
131
- _c = listener_1_1.value;
132
- _e = false;
133
- const workflowEvent = _c;
134
- const eventType = (_d = resourceTypeMap[workflowEvent.resourceType]) === null || _d === void 0 ? void 0 : _d[workflowEvent.eventType];
135
- if (eventType) {
136
- this.emit({
137
- type: eventType,
138
- payload: workflowEvent.eventPayload,
139
- resourceId: workflowEvent.resourceId,
140
- workflowRunId: workflowEvent.workflowRunId,
141
- });
129
+ try {
130
+ for (var _e = true, listener_1 = (e_1 = void 0, __asyncValues(listener)), listener_1_1; listener_1_1 = yield listener_1.next(), _a = listener_1_1.done, !_a; _e = true) {
131
+ _c = listener_1_1.value;
132
+ _e = false;
133
+ const workflowEvent = _c;
134
+ const eventType = (_d = resourceTypeMap[workflowEvent.resourceType]) === null || _d === void 0 ? void 0 : _d[workflowEvent.eventType];
135
+ if (eventType) {
136
+ this.emit({
137
+ type: eventType,
138
+ payload: workflowEvent.eventPayload,
139
+ resourceId: workflowEvent.resourceId,
140
+ workflowRunId: workflowEvent.workflowRunId,
141
+ });
142
+ }
142
143
  }
143
144
  }
144
- }
145
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
146
- finally {
147
- try {
148
- if (!_e && !_a && (_b = listener_1.return)) yield _b.call(listener_1);
145
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
146
+ finally {
147
+ try {
148
+ if (!_e && !_a && (_b = listener_1.return)) yield _b.call(listener_1);
149
+ }
150
+ finally { if (e_1) throw e_1.error; }
149
151
  }
150
- finally { if (e_1) throw e_1.error; }
151
- }
152
- this.eventEmitter.emit('complete');
153
- }
154
- catch (e) {
155
- if (e.code === nice_grpc_1.Status.CANCELLED) {
156
152
  this.eventEmitter.emit('complete');
157
153
  return;
158
154
  }
159
- if (e.code === nice_grpc_1.Status.UNAVAILABLE) {
160
- listener = yield this.retrySubscribe(listenerFactory);
155
+ catch (e) {
156
+ if ((0, grpc_error_1.getGrpcErrorCode)(e) === nice_grpc_1.Status.CANCELLED) {
157
+ this.eventEmitter.emit('complete');
158
+ return;
159
+ }
160
+ if ((0, grpc_error_1.getGrpcErrorCode)(e) === nice_grpc_1.Status.UNAVAILABLE) {
161
+ listener = yield this.retrySubscribe(listenerFactory);
162
+ }
163
+ else {
164
+ throw e;
165
+ }
161
166
  }
162
167
  }
163
168
  });
@@ -170,7 +175,7 @@ class RunEventListener {
170
175
  yield (0, sleep_1.default)(DEFAULT_EVENT_LISTENER_RETRY_INTERVAL);
171
176
  return listenerFactory();
172
177
  }
173
- catch (e) {
178
+ catch (_a) {
174
179
  retries += 1;
175
180
  }
176
181
  }
@@ -186,7 +191,6 @@ class RunEventListener {
186
191
  this.eventEmitter.emit('event');
187
192
  });
188
193
  try {
189
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
190
194
  for (var _d = true, _e = __asyncValues((0, events_1.on)(this.eventEmitter, 'event')), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {
191
195
  _c = _f.value;
192
196
  _d = false;
@@ -33,10 +33,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
33
33
  };
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
35
  exports.RunGrpcPooledListener = exports.Streamable = void 0;
36
- // eslint-disable-next-line max-classes-per-file
37
36
  const events_1 = require("events");
38
37
  const dispatcher_1 = require("../../../protoc/dispatcher");
39
38
  const abort_controller_x_1 = require("abort-controller-x");
39
+ const hatchet_error_1 = require("../../../util/errors/hatchet-error");
40
40
  const sleep_1 = __importDefault(require("../../../util/sleep"));
41
41
  const abort_error_1 = require("../../../util/abort-error");
42
42
  class Streamable {
@@ -48,8 +48,9 @@ class Streamable {
48
48
  this.onCleanup = onCleanup;
49
49
  }
50
50
  cleanupOnce() {
51
- if (this.cleanedUp)
51
+ if (this.cleanedUp) {
52
52
  return;
53
+ }
53
54
  this.cleanedUp = true;
54
55
  this.onCleanup();
55
56
  }
@@ -78,20 +79,7 @@ class Streamable {
78
79
  }
79
80
  this.responseEmitter.once('response', onResponse);
80
81
  if (signal) {
81
- /**
82
- * Node defaults AbortSignal max listeners to 10, which is easy to exceed with
83
- * legitimate high-concurrency waits (e.g. a cancelled parent task fanning out
84
- * to many child `.result()` waits).
85
- *
86
- * If the signal is still at the default cap, bump it to a reasonable level
87
- * to avoid noisy `MaxListenersExceededWarning` while still keeping protection
88
- * against true leaks in unusual cases.
89
- */
90
- const max = (0, events_1.getMaxListeners)(signal);
91
- if (max !== 0 && max < 50) {
92
- (0, events_1.setMaxListeners)(50, signal);
93
- }
94
- signal.addEventListener('abort', onAbort, { once: true });
82
+ (0, abort_error_1.bindAbortSignalHandler)(signal, onAbort);
95
83
  }
96
84
  });
97
85
  });
@@ -137,8 +125,9 @@ class RunGrpcPooledListener {
137
125
  this.listener = this.client.client.subscribeToWorkflowRuns(this.request(), {
138
126
  signal: this.signal.signal,
139
127
  });
140
- if (retries > 0)
128
+ if (retries > 0) {
141
129
  setTimeout(() => this.replayRequests(), 100);
130
+ }
142
131
  try {
143
132
  for (var _d = true, _e = __asyncValues(this.listener), _f; _f = yield _e.next(), _a = _f.done, !_a; _d = true) {
144
133
  _c = _f.value;
@@ -168,7 +157,7 @@ class RunGrpcPooledListener {
168
157
  this.client.logger.debug('Child Listener aborted');
169
158
  return;
170
159
  }
171
- this.client.logger.error(`Error in child-listener: ${e.message}`);
160
+ this.client.logger.error(`Error in child-listener: ${(0, hatchet_error_1.getErrorMessage)(e)}`);
172
161
  }
173
162
  finally {
174
163
  // it is possible the server hangs up early,
@@ -180,8 +169,9 @@ class RunGrpcPooledListener {
180
169
  });
181
170
  }
182
171
  subscribe(request) {
183
- if (!this.listener)
172
+ if (!this.listener) {
184
173
  throw new Error('listener not initialized');
174
+ }
185
175
  this.subscribers[request.workflowRunId] = new Streamable(this.listener, request.workflowRunId, () => {
186
176
  delete this.subscribers[request.workflowRunId];
187
177
  });
@@ -1,4 +1,4 @@
1
- import { APIErrors, APIMeta, AcceptInviteRequest, BulkCreateEventRequest, CancelEventRequest, CreateAPITokenRequest, CreateAPITokenResponse, CreateCronWorkflowTriggerRequest, CreateEventRequest, CreateSNSIntegrationRequest, CreateTenantAlertEmailGroupRequest, CreateTenantInviteRequest, CreateTenantRequest, CronWorkflows, CronWorkflowsList, CronWorkflowsOrderByField, Event, EventData, EventKey, EventKeyList, EventList, EventOrderByDirection, EventOrderByField, EventSearch, Events, ListAPIMetaIntegration, ListAPITokensResponse, ListSNSIntegrations, ListSlackWebhooks, LogLineLevelField, LogLineList, LogLineOrderByDirection, LogLineOrderByField, LogLineSearch, RateLimitList, RateLimitOrderByDirection, RateLimitOrderByField, RejectInviteRequest, ReplayEventRequest, ReplayWorkflowRunsRequest, ReplayWorkflowRunsResponse, RerunStepRunRequest, SNSIntegration, ScheduleWorkflowRunRequest, ScheduledRunStatus, ScheduledWorkflows, ScheduledWorkflowsBulkDeleteRequest, ScheduledWorkflowsBulkDeleteResponse, ScheduledWorkflowsBulkUpdateRequest, ScheduledWorkflowsBulkUpdateResponse, ScheduledWorkflowsList, ScheduledWorkflowsOrderByField, StepRun, StepRunArchiveList, StepRunEventList, TaskStats, Tenant, TenantAlertEmailGroup, TenantAlertEmailGroupList, TenantAlertingSettings, TenantInvite, TenantInviteList, TenantMember, TenantMemberList, TenantQueueMetrics, TenantResourcePolicy, TenantStepRunQueueMetrics, TriggerWorkflowRunRequest, UpdateCronWorkflowTriggerRequest, UpdateScheduledWorkflowRunRequest, UpdateTenantAlertEmailGroupRequest, UpdateTenantInviteRequest, UpdateTenantMemberRequest, UpdateTenantRequest, UpdateWorkerRequest, User, UserChangePasswordRequest, UserLoginRequest, UserRegisterRequest, UserTenantMembershipsList, V1CELDebugRequest, V1CELDebugResponse, V1CancelTaskRequest, V1CancelledTasks, V1CreateFilterRequest, V1CreateWebhookRequest, V1DagChildren, V1Event, V1EventList, V1Filter, V1FilterList, V1LogLineLevel, V1LogLineList, V1LogLineOrderByDirection, V1ReplayTaskRequest, V1ReplayedTasks, V1TaskEventList, V1TaskPointMetrics, V1TaskRunMetrics, V1TaskStatus, V1TaskSummary, V1TaskSummaryList, V1TaskTimingList, V1TriggerWorkflowRunRequest, V1UpdateFilterRequest, V1UpdateWebhookRequest, V1Webhook, V1WebhookList, V1WebhookResponse, V1WebhookSourceName, V1WorkflowRunDetails, V1WorkflowRunDisplayNameList, V1WorkflowRunExternalIdList, WebhookWorkerCreateRequest, WebhookWorkerCreated, WebhookWorkerListResponse, WebhookWorkerRequestListResponse, Worker, WorkerList, Workflow, WorkflowID, WorkflowKindList, WorkflowList, WorkflowMetrics, WorkflowRun, WorkflowRunList, WorkflowRunOrderByDirection, WorkflowRunOrderByField, WorkflowRunShape, WorkflowRunStatus, WorkflowRunStatusList, WorkflowRunsCancelRequest, WorkflowRunsMetrics, WorkflowUpdateRequest, WorkflowVersion, WorkflowWorkersCount } from './data-contracts';
1
+ import { APIErrors, APIMeta, AcceptInviteRequest, BulkCreateEventRequest, CancelEventRequest, CreateAPITokenRequest, CreateAPITokenResponse, CreateCronWorkflowTriggerRequest, CreateEventRequest, CreateSNSIntegrationRequest, CreateTenantAlertEmailGroupRequest, CreateTenantInviteRequest, CreateTenantRequest, CronWorkflows, CronWorkflowsList, CronWorkflowsOrderByField, Event, EventData, EventKey, EventKeyList, EventList, EventOrderByDirection, EventOrderByField, EventSearch, Events, ListAPIMetaIntegration, ListAPITokensResponse, ListSNSIntegrations, ListSlackWebhooks, LogLineLevelField, LogLineList, LogLineOrderByDirection, LogLineOrderByField, LogLineSearch, RateLimitList, RateLimitOrderByDirection, RateLimitOrderByField, RejectInviteRequest, ReplayEventRequest, ReplayWorkflowRunsRequest, ReplayWorkflowRunsResponse, RerunStepRunRequest, SNSIntegration, ScheduleWorkflowRunRequest, ScheduledRunStatus, ScheduledWorkflows, ScheduledWorkflowsBulkDeleteRequest, ScheduledWorkflowsBulkDeleteResponse, ScheduledWorkflowsBulkUpdateRequest, ScheduledWorkflowsBulkUpdateResponse, ScheduledWorkflowsList, ScheduledWorkflowsOrderByField, StepRun, StepRunArchiveList, StepRunEventList, TaskStats, Tenant, TenantAlertEmailGroup, TenantAlertEmailGroupList, TenantAlertingSettings, TenantInvite, TenantInviteList, TenantMember, TenantMemberList, TenantQueueMetrics, TenantResourcePolicy, TenantStepRunQueueMetrics, TriggerWorkflowRunRequest, UpdateCronWorkflowTriggerRequest, UpdateScheduledWorkflowRunRequest, UpdateTenantAlertEmailGroupRequest, UpdateTenantInviteRequest, UpdateTenantMemberRequest, UpdateTenantRequest, UpdateWorkerRequest, User, UserChangePasswordRequest, UserLoginRequest, UserRegisterRequest, UserTenantMembershipsList, V1BranchDurableTaskRequest, V1BranchDurableTaskResponse, V1CELDebugRequest, V1CELDebugResponse, V1CancelTaskRequest, V1CancelledTasks, V1CreateFilterRequest, V1CreateWebhookRequest, V1DagChildren, V1Event, V1EventList, V1Filter, V1FilterList, V1LogLineLevel, V1LogLineList, V1LogLineOrderByDirection, V1ReplayTaskRequest, V1ReplayedTasks, V1RestoreTaskResponse, V1RunningFilter, V1TaskEventList, V1TaskPointMetrics, V1TaskRunMetrics, V1TaskStatus, V1TaskSummary, V1TaskSummaryList, V1TaskTimingList, V1TriggerWorkflowRunRequest, V1UpdateFilterRequest, V1UpdateWebhookRequest, V1Webhook, V1WebhookList, V1WebhookResponse, V1WebhookSourceName, V1WorkflowRunDetails, V1WorkflowRunDisplayNameList, V1WorkflowRunExternalIdList, WebhookWorkerCreateRequest, WebhookWorkerCreated, WebhookWorkerListResponse, WebhookWorkerRequestListResponse, Worker, WorkerList, Workflow, WorkflowID, WorkflowKindList, WorkflowList, WorkflowMetrics, WorkflowRun, WorkflowRunList, WorkflowRunOrderByDirection, WorkflowRunOrderByField, WorkflowRunShape, WorkflowRunStatus, WorkflowRunStatusList, WorkflowRunsCancelRequest, WorkflowRunsMetrics, WorkflowUpdateRequest, WorkflowVersion, WorkflowWorkersCount } from './data-contracts';
2
2
  import { HttpClient, RequestParams } from './http-client';
3
3
  export declare class Api<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
4
4
  /**
@@ -89,6 +89,16 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
89
89
  * @secure
90
90
  */
91
91
  v1TaskReplay: (tenant: string, data: V1ReplayTaskRequest, params?: RequestParams) => Promise<import("axios").AxiosResponse<V1ReplayedTasks, any, {}>>;
92
+ /**
93
+ * @description Restore an evicted durable task
94
+ *
95
+ * @tags Task
96
+ * @name V1TaskRestore
97
+ * @summary Restore a task
98
+ * @request POST:/api/v1/stable/tasks/{task}/restore
99
+ * @secure
100
+ */
101
+ v1TaskRestore: (task: string, params?: RequestParams) => Promise<import("axios").AxiosResponse<V1RestoreTaskResponse, any, {}>>;
92
102
  /**
93
103
  * @description Lists all tasks that belong a specific list of dags
94
104
  *
@@ -170,6 +180,8 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
170
180
  triggering_event_external_id?: string;
171
181
  /** A flag for whether or not to include the input and output payloads in the response. Defaults to `true` if unset. */
172
182
  include_payloads?: boolean;
183
+ /** Filter within the RUNNING status bucket. ALL returns both on-worker and evicted tasks, ON_WORKER returns only tasks running on a worker, EVICTED returns only evicted tasks. Defaults to ALL. */
184
+ running_filter?: V1RunningFilter;
173
185
  }, params?: RequestParams) => Promise<import("axios").AxiosResponse<V1TaskSummaryList, any, {}>>;
174
186
  /**
175
187
  * @description Lists displayable names of workflow runs for a tenant
@@ -210,6 +222,8 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
210
222
  additional_metadata?: string[];
211
223
  /** The workflow ids to find runs for */
212
224
  workflow_ids?: string[];
225
+ /** Filter within the RUNNING status bucket. ALL returns both on-worker and evicted tasks, ON_WORKER returns only tasks running on a worker, EVICTED returns only evicted tasks. Defaults to ALL. */
226
+ running_filter?: V1RunningFilter;
213
227
  }, params?: RequestParams) => Promise<import("axios").AxiosResponse<V1WorkflowRunExternalIdList, any, {}>>;
214
228
  /**
215
229
  * @description Trigger a new workflow run
@@ -221,6 +235,16 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
221
235
  * @secure
222
236
  */
223
237
  v1WorkflowRunCreate: (tenant: string, data: V1TriggerWorkflowRunRequest, params?: RequestParams) => Promise<import("axios").AxiosResponse<V1WorkflowRunDetails, any, {}>>;
238
+ /**
239
+ * @description Branch a durable task from a specific node, creating a new branch and re-processing its matches.
240
+ *
241
+ * @tags Workflow Runs
242
+ * @name V1DurableTaskBranch
243
+ * @summary Branch durable task
244
+ * @request POST:/api/v1/stable/tenants/{tenant}/durable-tasks/branch
245
+ * @secure
246
+ */
247
+ v1DurableTaskBranch: (tenant: string, data: V1BranchDurableTaskRequest, params?: RequestParams) => Promise<import("axios").AxiosResponse<V1BranchDurableTaskResponse, any, {}>>;
224
248
  /**
225
249
  * @description Get a workflow run and its metadata to display on the "detail" page
226
250
  *
@@ -66,6 +66,16 @@ class Api extends http_client_1.HttpClient {
66
66
  * @secure
67
67
  */
68
68
  this.v1TaskReplay = (tenant, data, params = {}) => this.request(Object.assign({ path: `/api/v1/stable/tenants/${tenant}/tasks/replay`, method: 'POST', body: data, secure: true, type: http_client_1.ContentType.Json, format: 'json' }, params));
69
+ /**
70
+ * @description Restore an evicted durable task
71
+ *
72
+ * @tags Task
73
+ * @name V1TaskRestore
74
+ * @summary Restore a task
75
+ * @request POST:/api/v1/stable/tasks/{task}/restore
76
+ * @secure
77
+ */
78
+ this.v1TaskRestore = (task, params = {}) => this.request(Object.assign({ path: `/api/v1/stable/tasks/${task}/restore`, method: 'POST', secure: true, format: 'json' }, params));
69
79
  /**
70
80
  * @description Lists all tasks that belong a specific list of dags
71
81
  *
@@ -116,6 +126,16 @@ class Api extends http_client_1.HttpClient {
116
126
  * @secure
117
127
  */
118
128
  this.v1WorkflowRunCreate = (tenant, data, params = {}) => this.request(Object.assign({ path: `/api/v1/stable/tenants/${tenant}/workflow-runs/trigger`, method: 'POST', body: data, secure: true, type: http_client_1.ContentType.Json, format: 'json' }, params));
129
+ /**
130
+ * @description Branch a durable task from a specific node, creating a new branch and re-processing its matches.
131
+ *
132
+ * @tags Workflow Runs
133
+ * @name V1DurableTaskBranch
134
+ * @summary Branch durable task
135
+ * @request POST:/api/v1/stable/tenants/{tenant}/durable-tasks/branch
136
+ * @secure
137
+ */
138
+ this.v1DurableTaskBranch = (tenant, data, params = {}) => this.request(Object.assign({ path: `/api/v1/stable/tenants/${tenant}/durable-tasks/branch`, method: 'POST', body: data, secure: true, type: http_client_1.ContentType.Json, format: 'json' }, params));
119
139
  /**
120
140
  * @description Get a workflow run and its metadata to display on the "detail" page
121
141
  *
@@ -208,6 +208,11 @@ export declare enum TenantVersion {
208
208
  V0 = "V0",
209
209
  V1 = "V1"
210
210
  }
211
+ export declare enum V1RunningFilter {
212
+ ALL = "ALL",
213
+ EVICTED = "EVICTED",
214
+ ON_WORKER = "ON_WORKER"
215
+ }
211
216
  export declare enum V1LogLineOrderByDirection {
212
217
  ASC = "ASC",
213
218
  DESC = "DESC"
@@ -239,7 +244,9 @@ export declare enum V1TaskEventType {
239
244
  CREATED = "CREATED",
240
245
  QUEUED = "QUEUED",
241
246
  SKIPPED = "SKIPPED",
242
- COULD_NOT_SEND_TO_WORKER = "COULD_NOT_SEND_TO_WORKER"
247
+ COULD_NOT_SEND_TO_WORKER = "COULD_NOT_SEND_TO_WORKER",
248
+ DURABLE_EVICTED = "DURABLE_EVICTED",
249
+ DURABLE_RESTORING = "DURABLE_RESTORING"
243
250
  }
244
251
  export declare enum V1WorkflowType {
245
252
  DAG = "DAG",
@@ -308,6 +315,8 @@ export interface V1TaskSummary {
308
315
  /** The output of the task run (for the latest run) */
309
316
  output: object;
310
317
  status: V1TaskStatus;
318
+ /** Whether the task has been evicted from a worker (still counts as RUNNING). */
319
+ isEvicted?: boolean;
311
320
  /**
312
321
  * The timestamp the task run started.
313
322
  * @format date-time
@@ -481,6 +490,9 @@ export interface V1ReplayedTasks {
481
490
  /** The list of task external ids that were replayed */
482
491
  ids?: string[];
483
492
  }
493
+ export interface V1RestoreTaskResponse {
494
+ requeued: boolean;
495
+ }
484
496
  export interface V1DagChildren {
485
497
  /** @format uuid */
486
498
  dagId?: string;
@@ -587,11 +599,51 @@ export interface V1WorkflowRunDetails {
587
599
  tasks: V1TaskSummary[];
588
600
  workflowConfig?: object;
589
601
  }
602
+ export interface V1BranchDurableTaskRequest {
603
+ /**
604
+ * The external id of the durable task to branch.
605
+ * @format uuid
606
+ * @minLength 36
607
+ * @maxLength 36
608
+ */
609
+ taskExternalId: string;
610
+ /**
611
+ * The node id to replay from.
612
+ * @format int64
613
+ */
614
+ nodeId: number;
615
+ /**
616
+ * The branch id to replay from.
617
+ * @format int64
618
+ */
619
+ branchId: number;
620
+ }
621
+ export interface V1BranchDurableTaskResponse {
622
+ /**
623
+ * The external id of the durable task.
624
+ * @format uuid
625
+ * @minLength 36
626
+ * @maxLength 36
627
+ */
628
+ taskExternalId: string;
629
+ /**
630
+ * The node id of the new entry.
631
+ * @format int64
632
+ */
633
+ nodeId: number;
634
+ /**
635
+ * The branch id of the new entry.
636
+ * @format int64
637
+ */
638
+ branchId: number;
639
+ }
590
640
  export interface V1TaskTiming {
591
641
  metadata: APIResourceMeta;
592
642
  /** The depth of the task in the waterfall. */
593
643
  depth: number;
594
644
  status: V1TaskStatus;
645
+ /** Whether the task has been evicted from a worker (still counts as RUNNING). */
646
+ isEvicted?: boolean;
595
647
  /** The display name of the task run. */
596
648
  taskDisplayName: string;
597
649
  /**
@@ -653,9 +705,16 @@ export interface V1TaskTimingList {
653
705
  /** The list of task timings */
654
706
  rows: V1TaskTiming[];
655
707
  }
708
+ export interface V1RunningDetailCount {
709
+ /** The number of evicted tasks within the RUNNING status bucket. */
710
+ evicted: number;
711
+ /** The number of tasks currently on a worker within the RUNNING status bucket. */
712
+ onWorker: number;
713
+ }
656
714
  export interface V1TaskRunMetric {
657
715
  status: V1TaskStatus;
658
716
  count: number;
717
+ runningDetailCount?: V1RunningDetailCount;
659
718
  }
660
719
  export type V1TaskRunMetrics = V1TaskRunMetric[];
661
720
  export interface V1TaskPointMetric {
@@ -11,7 +11,7 @@
11
11
  * ---------------------------------------------------------------
12
12
  */
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.V1TaskStatus = exports.V1WorkflowType = exports.V1TaskEventType = exports.V1LogLineLevel = exports.V1LogLineOrderByDirection = exports.TenantVersion = exports.TenantEnvironment = exports.V1WebhookSourceName = exports.V1WebhookAuthType = exports.V1WebhookHMACAlgorithm = exports.V1WebhookHMACEncoding = exports.V1CELDebugResponseStatus = exports.TenantResource = exports.TenantMemberRole = exports.WorkflowRunStatus = exports.EventOrderByField = exports.EventOrderByDirection = exports.RateLimitOrderByField = exports.RateLimitOrderByDirection = exports.ScheduledWorkflowsMethod = exports.ScheduledWorkflowsOrderByField = exports.WorkflowRunOrderByDirection = exports.ScheduledRunStatus = exports.CronWorkflowsMethod = exports.CronWorkflowsOrderByField = exports.ConcurrencyLimitStrategy = exports.ConcurrencyScope = exports.StepRunStatus = exports.JobRunStatus = exports.LogLineLevel = exports.LogLineOrderByField = exports.LogLineOrderByDirection = exports.StepRunEventReason = exports.StepRunEventSeverity = exports.WorkflowKind = exports.WorkflowRunOrderByField = exports.WorkerType = exports.WorkerRuntimeSDKs = exports.WebhookWorkerRequestMethod = exports.PullRequestState = exports.V1TaskRunStatus = void 0;
14
+ exports.V1TaskStatus = exports.V1WorkflowType = exports.V1TaskEventType = exports.V1LogLineLevel = exports.V1LogLineOrderByDirection = exports.V1RunningFilter = exports.TenantVersion = exports.TenantEnvironment = exports.V1WebhookSourceName = exports.V1WebhookAuthType = exports.V1WebhookHMACAlgorithm = exports.V1WebhookHMACEncoding = exports.V1CELDebugResponseStatus = exports.TenantResource = exports.TenantMemberRole = exports.WorkflowRunStatus = exports.EventOrderByField = exports.EventOrderByDirection = exports.RateLimitOrderByField = exports.RateLimitOrderByDirection = exports.ScheduledWorkflowsMethod = exports.ScheduledWorkflowsOrderByField = exports.WorkflowRunOrderByDirection = exports.ScheduledRunStatus = exports.CronWorkflowsMethod = exports.CronWorkflowsOrderByField = exports.ConcurrencyLimitStrategy = exports.ConcurrencyScope = exports.StepRunStatus = exports.JobRunStatus = exports.LogLineLevel = exports.LogLineOrderByField = exports.LogLineOrderByDirection = exports.StepRunEventReason = exports.StepRunEventSeverity = exports.WorkflowKind = exports.WorkflowRunOrderByField = exports.WorkerType = exports.WorkerRuntimeSDKs = exports.WebhookWorkerRequestMethod = exports.PullRequestState = exports.V1TaskRunStatus = void 0;
15
15
  var V1TaskRunStatus;
16
16
  (function (V1TaskRunStatus) {
17
17
  V1TaskRunStatus["PENDING"] = "PENDING";
@@ -258,6 +258,12 @@ var TenantVersion;
258
258
  TenantVersion["V0"] = "V0";
259
259
  TenantVersion["V1"] = "V1";
260
260
  })(TenantVersion || (exports.TenantVersion = TenantVersion = {}));
261
+ var V1RunningFilter;
262
+ (function (V1RunningFilter) {
263
+ V1RunningFilter["ALL"] = "ALL";
264
+ V1RunningFilter["EVICTED"] = "EVICTED";
265
+ V1RunningFilter["ON_WORKER"] = "ON_WORKER";
266
+ })(V1RunningFilter || (exports.V1RunningFilter = V1RunningFilter = {}));
261
267
  var V1LogLineOrderByDirection;
262
268
  (function (V1LogLineOrderByDirection) {
263
269
  V1LogLineOrderByDirection["ASC"] = "ASC";
@@ -293,6 +299,8 @@ var V1TaskEventType;
293
299
  V1TaskEventType["QUEUED"] = "QUEUED";
294
300
  V1TaskEventType["SKIPPED"] = "SKIPPED";
295
301
  V1TaskEventType["COULD_NOT_SEND_TO_WORKER"] = "COULD_NOT_SEND_TO_WORKER";
302
+ V1TaskEventType["DURABLE_EVICTED"] = "DURABLE_EVICTED";
303
+ V1TaskEventType["DURABLE_RESTORING"] = "DURABLE_RESTORING";
296
304
  })(V1TaskEventType || (exports.V1TaskEventType = V1TaskEventType = {}));
297
305
  var V1WorkflowType;
298
306
  (function (V1WorkflowType) {
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const workflows_1 = require("../../protoc/workflows");
15
+ const v1_1 = require("../../v1");
16
16
  const sdk_1 = __importDefault(require("../../sdk"));
17
17
  const hatchet = sdk_1.default.init();
18
18
  // > AffinityWorkflow
@@ -24,7 +24,6 @@ const workflow = {
24
24
  name: 'step1',
25
25
  run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
26
26
  const results = [];
27
- // eslint-disable-next-line no-plusplus
28
27
  for (let i = 0; i < 50; i++) {
29
28
  const result = yield ctx.spawnWorkflow(childWorkflow.id, {});
30
29
  results.push(result.output);
@@ -60,7 +59,7 @@ const childWorkflow = {
60
59
  memory: {
61
60
  value: 512,
62
61
  required: true,
63
- comparator: workflows_1.WorkerLabelComparator.LESS_THAN,
62
+ comparator: v1_1.WorkerLabelComparator.LESS_THAN,
64
63
  },
65
64
  },
66
65
  run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
@@ -12,7 +12,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- // eslint-disable-next-line import/no-extraneous-dependencies
16
15
  const pino_1 = __importDefault(require("pino"));
17
16
  const sdk_1 = __importDefault(require("../../sdk"));
18
17
  // > Create Pino logger
@@ -54,7 +53,6 @@ const hatchet = sdk_1.default.init({
54
53
  const workflow = hatchet.task({
55
54
  name: 'byo-logger-example',
56
55
  fn: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
57
- // eslint-disable-next-line no-plusplus
58
56
  for (let i = 0; i < 5; i++) {
59
57
  logger.info(`log message ${i}`);
60
58
  }
@@ -33,12 +33,14 @@ const workflow = {
33
33
  run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
34
34
  const { data } = ctx.workflowInput();
35
35
  const { signal } = ctx.controller;
36
- if (signal.aborted)
36
+ if (signal.aborted) {
37
37
  throw new Error('step1 was aborted');
38
+ }
38
39
  console.log('starting step1 and waiting 5 seconds...', data);
39
40
  yield sleep(5000);
40
- if (signal.aborted)
41
+ if (signal.aborted) {
41
42
  throw new Error('step1 was aborted');
43
+ }
42
44
  // NOTE: the AbortController signal can be passed to many http libraries to cancel active requests
43
45
  // fetch(url, { signal })
44
46
  // axios.get(url, { signal })
@@ -19,7 +19,6 @@ const sleep = (ms) => new Promise((resolve) => {
19
19
  });
20
20
  function main() {
21
21
  return __awaiter(this, void 0, void 0, function* () {
22
- // eslint-disable-next-line no-plusplus
23
22
  for (let i = 0; i < 20; i++) {
24
23
  let group = 0;
25
24
  if (i > 10) {
@@ -36,12 +36,14 @@ const workflow = {
36
36
  run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
37
37
  const { data } = ctx.workflowInput();
38
38
  const { signal } = ctx.controller;
39
- if (signal.aborted)
39
+ if (signal.aborted) {
40
40
  throw new Error('step1 was aborted');
41
+ }
41
42
  console.log('starting step1 and waiting 5 seconds...', data);
42
43
  yield sleep(2000);
43
- if (signal.aborted)
44
+ if (signal.aborted) {
44
45
  throw new Error('step1 was aborted');
46
+ }
45
47
  // NOTE: the AbortController signal can be passed to many http libraries to cancel active requests
46
48
  // fetch(url, { signal })
47
49
  // axios.get(url, { signal })
@@ -37,12 +37,14 @@ const workflow = {
37
37
  run: (ctx) => __awaiter(void 0, void 0, void 0, function* () {
38
38
  const { data } = ctx.workflowInput();
39
39
  const { signal } = ctx.controller;
40
- if (signal.aborted)
40
+ if (signal.aborted) {
41
41
  throw new Error('step1 was aborted');
42
+ }
42
43
  console.log('starting step1 and waiting 5 seconds...', data);
43
44
  yield sleep(2000);
44
- if (signal.aborted)
45
+ if (signal.aborted) {
45
46
  throw new Error('step1 was aborted');
47
+ }
46
48
  // NOTE: the AbortController signal can be passed to many http libraries to cancel active requests
47
49
  // fetch(url, { signal })
48
50
  // axios.get(url, { signal })
@@ -34,15 +34,12 @@ hatchet.events
34
34
  return returnedEvent.key === expectedKey;
35
35
  });
36
36
  if (keysMatch) {
37
- // eslint-disable-next-line no-console
38
37
  console.log('All keys match the original events.');
39
38
  }
40
39
  else {
41
- // eslint-disable-next-line no-console
42
40
  console.log('Mismatch found between original events and returned events.');
43
41
  }
44
42
  })
45
43
  .catch((error) => {
46
- // eslint-disable-next-line no-console
47
44
  console.error('Error during bulk push:', error);
48
45
  });