@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.
- package/README.md +14 -2
- package/clients/admin/admin-client.d.ts +2 -2
- package/clients/admin/admin-client.js +8 -9
- package/clients/dispatcher/action-listener.d.ts +3 -6
- package/clients/dispatcher/action-listener.js +54 -23
- package/clients/dispatcher/dispatcher-client.js +5 -8
- package/clients/dispatcher/heartbeat/heartbeat-worker.js +7 -4
- package/clients/event/event-client.d.ts +2 -2
- package/clients/event/event-client.js +5 -11
- package/clients/hatchet-client/hatchet-logger.js +8 -17
- package/clients/listeners/durable-listener/durable-listener-client.d.ts +115 -15
- package/clients/listeners/durable-listener/durable-listener-client.js +769 -19
- package/clients/listeners/durable-listener/pooled-durable-listener-client.js +11 -22
- package/clients/listeners/run-listener/child-listener-client.d.ts +1 -1
- package/clients/listeners/run-listener/child-listener-client.js +34 -30
- package/clients/listeners/run-listener/pooled-child-listener-client.js +9 -19
- package/clients/rest/generated/Api.d.ts +25 -1
- package/clients/rest/generated/Api.js +20 -0
- package/clients/rest/generated/data-contracts.d.ts +60 -1
- package/clients/rest/generated/data-contracts.js +9 -1
- package/legacy/examples/affinity-workers.js +2 -3
- package/legacy/examples/byo-logger.js +0 -2
- package/legacy/examples/concurrency/cancel-in-progress/concurrency-worker.js +4 -2
- package/legacy/examples/concurrency/group-round-robin/concurrency-event.js +0 -1
- package/legacy/examples/concurrency/group-round-robin/concurrency-worker-expression.js +4 -2
- package/legacy/examples/concurrency/group-round-robin/concurrency-worker-key-fn.js +4 -2
- package/legacy/examples/example-event.js +0 -3
- package/legacy/examples/logger.js +0 -1
- package/legacy/examples/sticky-worker-with-check.js +0 -1
- package/legacy/examples/sticky-worker.js +0 -1
- package/legacy/legacy-client.js +2 -2
- package/legacy/legacy-transformer.js +2 -4
- package/legacy/step.d.ts +16 -16
- package/legacy/step.js +8 -17
- package/legacy/workflow.d.ts +81 -81
- package/package.json +20 -29
- package/protoc/dispatcher/dispatcher.d.ts +20 -0
- package/protoc/dispatcher/dispatcher.js +136 -2
- package/protoc/v1/dispatcher.d.ts +168 -0
- package/protoc/v1/dispatcher.js +1920 -1
- package/protoc/v1/shared/trigger.d.ts +89 -0
- package/protoc/v1/shared/trigger.js +493 -0
- package/protoc/v1/workflows.d.ts +34 -34
- package/protoc/v1/workflows.js +252 -200
- package/protoc/workflows/workflows.d.ts +2 -75
- package/protoc/workflows/workflows.js +16 -491
- package/util/abort-error.d.ts +15 -1
- package/util/abort-error.js +30 -5
- package/util/config-loader/config-loader.js +4 -3
- package/util/config-loader/token.js +9 -2
- package/util/errors/eviction-not-supported-error.d.ts +5 -0
- package/util/errors/eviction-not-supported-error.js +18 -0
- package/util/errors/hatchet-error.d.ts +9 -1
- package/util/errors/hatchet-error.js +23 -2
- package/util/errors/non-determinism-error.d.ts +7 -0
- package/util/errors/non-determinism-error.js +21 -0
- package/util/errors/task-run-terminated-error.d.ts +6 -0
- package/util/errors/task-run-terminated-error.js +15 -0
- package/util/grpc-error.d.ts +9 -0
- package/util/grpc-error.js +25 -0
- package/util/hatchet-promise/hatchet-promise.d.ts +6 -1
- package/util/hatchet-promise/hatchet-promise.js +16 -2
- package/util/logger/logger.js +0 -1
- package/util/parse.d.ts +1 -1
- package/util/parse.js +4 -2
- package/util/retrier.js +2 -3
- package/util/sleep.d.ts +3 -2
- package/util/sleep.js +6 -4
- package/util/workflow-run-ref.js +5 -3
- package/v1/client/admin.d.ts +2 -2
- package/v1/client/admin.js +2 -6
- package/v1/client/client.d.ts +7 -11
- package/v1/client/client.interface.d.ts +5 -8
- package/v1/client/client.js +34 -40
- package/v1/client/duration.d.ts +11 -1
- package/v1/client/duration.js +44 -0
- package/v1/client/features/cel.js +1 -1
- package/v1/client/features/crons.js +2 -2
- package/v1/client/features/index.d.ts +5 -0
- package/v1/client/features/index.js +5 -0
- package/v1/client/features/logs.d.ts +37 -0
- package/v1/client/features/logs.js +46 -0
- package/v1/client/features/runs.d.ts +16 -3
- package/v1/client/features/runs.js +38 -4
- package/v1/client/features/schedules.js +4 -4
- package/v1/client/features/webhooks.js +4 -2
- package/v1/client/features/workflows.js +1 -1
- package/v1/client/worker/context.d.ts +101 -6
- package/v1/client/worker/context.js +257 -44
- package/v1/client/worker/deprecated/deprecation.js +8 -4
- package/v1/client/worker/deprecated/index.d.ts +1 -1
- package/v1/client/worker/deprecated/index.js +2 -1
- package/v1/client/worker/deprecated/legacy-worker.d.ts +5 -0
- package/v1/client/worker/deprecated/legacy-worker.js +33 -24
- package/v1/client/worker/deprecated/pre-eviction.d.ts +12 -0
- package/v1/client/worker/deprecated/pre-eviction.js +37 -0
- package/v1/client/worker/engine-version.d.ts +5 -0
- package/v1/client/worker/engine-version.js +14 -0
- package/v1/client/worker/eviction/eviction-cache.d.ts +33 -0
- package/v1/client/worker/eviction/eviction-cache.js +139 -0
- package/v1/client/worker/eviction/eviction-manager.d.ts +42 -0
- package/v1/client/worker/eviction/eviction-manager.js +132 -0
- package/v1/client/worker/eviction/eviction-policy.d.ts +19 -0
- package/v1/client/worker/eviction/eviction-policy.js +8 -0
- package/v1/client/worker/eviction/index.d.ts +3 -0
- package/v1/client/worker/eviction/index.js +11 -0
- package/v1/client/worker/health-server.js +3 -3
- package/v1/client/worker/slot-utils.js +0 -3
- package/v1/client/worker/worker-internal.d.ts +23 -4
- package/v1/client/worker/worker-internal.js +216 -148
- package/v1/client/worker/worker.d.ts +1 -0
- package/v1/client/worker/worker.js +34 -0
- package/v1/conditions/base.js +0 -1
- package/v1/conditions/index.js +2 -4
- package/v1/conditions/sleep-condition.js +2 -1
- package/v1/conditions/transformer.js +2 -1
- package/v1/declaration.d.ts +6 -4
- package/v1/declaration.js +20 -7
- package/v1/examples/__e2e__/harness.d.ts +5 -0
- package/v1/examples/__e2e__/harness.js +17 -3
- package/v1/examples/affinity/affinity-workers.js +0 -1
- package/v1/examples/bulk_operations/workflow.js +0 -1
- package/v1/examples/cancellation/run.js +0 -1
- package/v1/examples/cancellations/run.js +0 -1
- package/v1/examples/child_workflows/run.js +0 -2
- package/v1/examples/child_workflows/workflow.js +0 -1
- package/v1/examples/concurrency-rr/load.js +0 -1
- package/v1/examples/concurrency-rr/run.js +0 -3
- package/v1/examples/concurrency_limit_rr/load.js +0 -1
- package/v1/examples/concurrency_limit_rr/run.js +0 -3
- package/v1/examples/concurrency_workflow_level/workflow.d.ts +1 -1
- package/v1/examples/concurrency_workflow_level/workflow.js +1 -1
- package/v1/examples/conditions/event.js +0 -1
- package/v1/examples/conditions/run.js +0 -1
- package/v1/examples/dag/run.js +0 -1
- package/v1/examples/dag_match_condition/event.js +0 -1
- package/v1/examples/dag_match_condition/run.js +0 -1
- package/v1/examples/deep/run.js +0 -2
- package/v1/examples/durable/workflow.d.ts +57 -0
- package/v1/examples/durable/workflow.js +164 -10
- package/v1/examples/durable-event/event.js +0 -1
- package/v1/examples/durable-event/run.js +0 -2
- package/v1/examples/durable-event/workflow.js +2 -7
- package/v1/examples/durable-sleep/event.js +0 -1
- package/v1/examples/durable-sleep/run.js +0 -2
- package/v1/examples/durable_event/event.js +0 -1
- package/v1/examples/durable_event/run.js +0 -2
- package/v1/examples/durable_event/workflow.d.ts +1 -0
- package/v1/examples/durable_event/workflow.js +4 -9
- package/v1/examples/durable_eviction/capacity-worker.d.ts +1 -0
- package/v1/examples/durable_eviction/capacity-worker.js +31 -0
- package/v1/examples/durable_eviction/worker.d.ts +1 -0
- package/v1/examples/durable_eviction/worker.js +34 -0
- package/v1/examples/durable_eviction/workflow.d.ts +44 -0
- package/v1/examples/durable_eviction/workflow.js +129 -0
- package/v1/examples/durable_sleep/event.js +0 -1
- package/v1/examples/durable_sleep/run.js +0 -2
- package/v1/examples/e2e-worker.js +42 -19
- package/v1/examples/events/event.js +0 -1
- package/v1/examples/high-memory/run.js +0 -1
- package/v1/examples/inferred-typing/run.js +0 -1
- package/v1/examples/landing_page/durable-excution.js +0 -1
- package/v1/examples/landing_page/queues.js +0 -1
- package/v1/examples/legacy/run.js +0 -1
- package/v1/examples/logger/byo-logger.js +0 -2
- package/v1/examples/logger/logger.js +0 -1
- package/v1/examples/logging/byo-logger.js +0 -2
- package/v1/examples/logging/logger.js +0 -1
- package/v1/examples/middleware/recipes.js +3 -1
- package/v1/examples/migration-guides/mergent.js +2 -1
- package/v1/examples/multiple_wf_concurrency/run.js +0 -3
- package/v1/examples/non_retryable/run.js +0 -1
- package/v1/examples/on_event/event.js +0 -1
- package/v1/examples/on_failure/run.js +0 -1
- package/v1/examples/on_failure/workflow.js +0 -1
- package/v1/examples/on_success/run.js +0 -1
- package/v1/examples/on_success/workflow.js +0 -1
- package/v1/examples/priority/run.js +0 -1
- package/v1/examples/priority/workflow.js +0 -1
- package/v1/examples/retries/run.js +0 -1
- package/v1/examples/retries/workflow.js +0 -1
- package/v1/examples/simple/bulk.js +0 -1
- package/v1/examples/simple/cron.js +0 -2
- package/v1/examples/simple/delay.js +0 -1
- package/v1/examples/simple/enqueue.js +0 -2
- package/v1/examples/simple/run.js +0 -1
- package/v1/examples/simple/schedule.js +0 -1
- package/v1/examples/simple/workflow-with-child.js +10 -4
- package/v1/examples/sticky/run.js +0 -1
- package/v1/examples/sticky/workflow.js +0 -1
- package/v1/examples/streaming/nextjs-proxy.js +0 -1
- package/v1/examples/streaming/run.js +0 -1
- package/v1/examples/timeout/run.js +0 -1
- package/v1/examples/timeouts/run.js +0 -1
- package/v1/index.d.ts +5 -0
- package/v1/index.js +10 -0
- package/v1/parent-run-context-vars.d.ts +6 -0
- package/v1/slot-types.js +0 -1
- package/v1/task.d.ts +10 -2
- package/v1/task.js +2 -1
- package/version.d.ts +1 -1
- 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
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
127
|
+
while (true) {
|
|
129
128
|
try {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
160
|
-
|
|
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 (
|
|
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
|
|
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
|
|
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:
|
|
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 })
|
|
@@ -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
|
});
|