@hatchet-dev/typescript-sdk 1.13.0 → 1.14.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/clients/dispatcher/dispatcher-client.d.ts +1 -1
- package/clients/dispatcher/heartbeat/heartbeat-controller.js +13 -1
- package/clients/dispatcher/heartbeat/heartbeat-worker.js +4 -3
- package/clients/event/event-client.d.ts +1 -2
- package/clients/event/event-client.js +2 -2
- package/clients/hatchet-client/client-config.d.ts +15 -5
- package/clients/hatchet-client/client-config.js +3 -0
- package/clients/hatchet-client/hatchet-logger.js +1 -0
- package/clients/hatchet-client/index.d.ts +1 -1
- package/clients/hatchet-client/index.js +1 -1
- package/clients/listeners/durable-listener/durable-listener-client.d.ts +6 -0
- package/clients/listeners/durable-listener/durable-listener-client.js +8 -0
- package/clients/listeners/durable-listener/pooled-durable-listener-client.d.ts +9 -2
- package/clients/listeners/durable-listener/pooled-durable-listener-client.js +67 -15
- package/clients/listeners/run-listener/child-listener-client.js +1 -0
- package/clients/listeners/run-listener/pooled-child-listener-client.d.ts +10 -2
- package/clients/listeners/run-listener/pooled-child-listener-client.js +63 -7
- package/clients/rest/api.js +10 -2
- package/clients/rest/generated/Api.d.ts +2 -2
- package/clients/rest/generated/data-contracts.d.ts +6 -0
- package/index.d.ts +2 -3
- package/index.js +2 -3
- package/{examples → legacy/examples}/affinity-workers.js +2 -2
- package/{examples → legacy/examples}/bulk-fanout-trigger.js +1 -1
- package/{examples → legacy/examples}/bulk-fanout-worker.js +1 -1
- package/{examples → legacy/examples}/bulk-trigger.js +1 -1
- package/{examples → legacy/examples}/byo-logger.js +1 -1
- package/{examples → legacy/examples}/concurrency/cancel-in-progress/concurrency-event.js +1 -1
- package/{examples → legacy/examples}/concurrency/cancel-in-progress/concurrency-worker.js +1 -1
- package/{examples → legacy/examples}/concurrency/group-round-robin/concurrency-event.js +1 -1
- package/{examples → legacy/examples}/concurrency/group-round-robin/concurrency-worker-expression.js +2 -2
- package/{examples → legacy/examples}/concurrency/group-round-robin/concurrency-worker-key-fn.js +2 -2
- package/{examples → legacy/examples}/crons/cron-worker.d.ts +1 -1
- package/{examples → legacy/examples}/crons/cron-worker.js +1 -1
- package/{examples → legacy/examples}/crons/programatic-crons.js +1 -1
- package/{examples → legacy/examples}/dag-worker.js +1 -1
- package/{examples → legacy/examples}/example-event-with-results.js +2 -2
- package/{examples → legacy/examples}/example-event.js +1 -1
- package/{examples → legacy/examples}/fanout-worker.js +1 -1
- package/{examples → legacy/examples}/logger.js +1 -1
- package/{examples → legacy/examples}/manual-trigger.js +1 -1
- package/{examples → legacy/examples}/multi-workflow.js +1 -1
- package/{examples → legacy/examples}/namespaced-worker.js +1 -1
- package/{examples → legacy/examples}/on-failure.js +1 -1
- package/{examples → legacy/examples}/rate-limit/events.js +1 -1
- package/{examples → legacy/examples}/rate-limit/worker.js +2 -2
- package/{examples → legacy/examples}/retries-with-backoff.js +1 -1
- package/{examples → legacy/examples}/retries-worker.js +1 -1
- package/{examples → legacy/examples}/scheduled-runs/programatic-schedules.js +1 -1
- package/{examples → legacy/examples}/simple-worker.d.ts +1 -1
- package/{examples → legacy/examples}/simple-worker.js +1 -1
- package/{examples → legacy/examples}/sticky-trigger.js +1 -1
- package/{examples → legacy/examples}/sticky-worker-with-check.js +2 -2
- package/{examples → legacy/examples}/sticky-worker.js +2 -2
- package/{examples → legacy/examples}/stream-by-additional-meta.js +2 -2
- package/legacy/legacy-client.d.ts +30 -0
- package/legacy/legacy-client.js +67 -0
- package/legacy/legacy-transformer.d.ts +38 -0
- package/legacy/legacy-transformer.js +181 -0
- package/legacy/step.d.ts +429 -0
- package/legacy/step.js +662 -0
- package/legacy/workflow.d.ts +488 -0
- package/legacy/workflow.js +72 -0
- package/package.json +7 -7
- package/step.d.ts +1 -430
- package/step.js +6 -647
- package/util/abort-error.d.ts +38 -0
- package/util/abort-error.js +58 -0
- package/util/hatchet-promise/hatchet-promise.d.ts +8 -1
- package/util/hatchet-promise/hatchet-promise.js +3 -2
- package/util/logger/index.d.ts +1 -0
- package/util/logger/index.js +1 -0
- package/util/logger/task-run-log.d.ts +3 -0
- package/util/logger/task-run-log.js +20 -0
- package/util/sleep.d.ts +5 -2
- package/util/sleep.js +27 -4
- package/util/workflow-run-ref.d.ts +7 -1
- package/util/workflow-run-ref.js +5 -3
- package/v1/client/admin.d.ts +8 -1
- package/v1/client/admin.js +22 -6
- package/v1/client/client.d.ts +36 -18
- package/v1/client/client.interface.d.ts +9 -2
- package/v1/client/client.js +47 -27
- package/v1/client/features/crons.d.ts +3 -3
- package/v1/client/features/crons.js +2 -2
- package/v1/client/features/schedules.js +2 -2
- package/v1/client/features/workflows.d.ts +5 -5
- package/v1/client/features/workflows.js +7 -8
- package/v1/client/worker/context.d.ts +49 -10
- package/v1/client/worker/context.js +92 -20
- package/v1/client/worker/deprecated/legacy-v1-worker.d.ts +3 -3
- package/v1/client/worker/deprecated/legacy-v1-worker.js +2 -2
- package/v1/client/worker/deprecated/legacy-worker.js +9 -7
- package/v1/client/worker/slot-utils.d.ts +3 -3
- package/v1/client/worker/worker-internal.d.ts +7 -16
- package/v1/client/worker/worker-internal.js +225 -209
- package/v1/client/worker/worker.d.ts +18 -18
- package/v1/client/worker/worker.js +45 -30
- package/v1/declaration.d.ts +28 -7
- package/v1/declaration.js +56 -6
- package/v1/examples/__e2e__/harness.d.ts +19 -0
- package/v1/examples/__e2e__/harness.js +70 -0
- package/v1/examples/affinity/affinity-workers.js +4 -4
- package/v1/examples/bulk_fanout/workflow.d.ts +9 -0
- package/v1/examples/bulk_fanout/workflow.js +34 -0
- package/v1/examples/bulk_operations/workflow.d.ts +3 -0
- package/v1/examples/bulk_operations/workflow.js +44 -0
- package/v1/examples/cancellation/cancellation-workflow.d.ts +2 -0
- package/v1/examples/cancellation/cancellation-workflow.js +69 -0
- package/v1/examples/cancellation/run.js +53 -0
- package/v1/examples/cancellation/worker.d.ts +1 -0
- package/v1/examples/cancellation/worker.js +29 -0
- package/v1/examples/concurrency-types.d.ts +5 -0
- package/v1/examples/concurrency-types.js +2 -0
- package/v1/examples/concurrency_cancel_in_progress/workflow.d.ts +9 -0
- package/v1/examples/concurrency_cancel_in_progress/workflow.js +45 -0
- package/v1/examples/concurrency_cancel_newest/workflow.d.ts +9 -0
- package/v1/examples/concurrency_cancel_newest/workflow.js +45 -0
- package/v1/examples/concurrency_limit_rr/load.d.ts +1 -0
- package/v1/examples/concurrency_limit_rr/load.js +54 -0
- package/v1/examples/concurrency_limit_rr/run.d.ts +1 -0
- package/v1/examples/concurrency_limit_rr/run.js +39 -0
- package/v1/examples/concurrency_limit_rr/worker.d.ts +1 -0
- package/v1/examples/concurrency_limit_rr/worker.js +24 -0
- package/v1/examples/concurrency_limit_rr/workflow.d.ts +12 -0
- package/v1/examples/concurrency_limit_rr/workflow.js +62 -0
- package/v1/examples/concurrency_multiple_keys/workflow.d.ts +12 -0
- package/v1/examples/concurrency_multiple_keys/workflow.js +42 -0
- package/v1/examples/concurrency_workflow_level/workflow.d.ts +13 -0
- package/v1/examples/concurrency_workflow_level/workflow.js +49 -0
- package/v1/examples/conditions/complex-workflow.d.ts +1 -0
- package/v1/examples/conditions/complex-workflow.js +107 -0
- package/v1/examples/conditions/event.d.ts +1 -0
- package/v1/examples/conditions/event.js +28 -0
- package/v1/examples/conditions/run.d.ts +1 -0
- package/v1/examples/conditions/run.js +25 -0
- package/v1/examples/conditions/worker.d.ts +1 -0
- package/v1/examples/conditions/worker.js +24 -0
- package/v1/examples/conditions/workflow.d.ts +11 -0
- package/v1/examples/conditions/workflow.js +41 -0
- package/v1/examples/durable/workflow.d.ts +7 -0
- package/v1/examples/durable/workflow.js +116 -0
- package/v1/examples/durable_event/event.d.ts +1 -0
- package/v1/examples/durable_event/event.js +28 -0
- package/v1/examples/durable_event/run.d.ts +1 -0
- package/v1/examples/durable_event/run.js +30 -0
- package/v1/examples/durable_event/worker.d.ts +1 -0
- package/v1/examples/durable_event/worker.js +24 -0
- package/v1/examples/durable_event/workflow.d.ts +6 -0
- package/v1/examples/durable_event/workflow.js +46 -0
- package/v1/examples/durable_sleep/event.d.ts +1 -0
- package/v1/examples/durable_sleep/event.js +28 -0
- package/v1/examples/durable_sleep/run.d.ts +1 -0
- package/v1/examples/durable_sleep/run.js +30 -0
- package/v1/examples/durable_sleep/worker.d.ts +1 -0
- package/v1/examples/durable_sleep/worker.js +24 -0
- package/v1/examples/durable_sleep/workflow.d.ts +1 -0
- package/v1/examples/durable_sleep/workflow.js +31 -0
- package/v1/examples/e2e-worker.d.ts +1 -0
- package/v1/examples/e2e-worker.js +82 -0
- package/v1/examples/events/event.d.ts +1 -0
- package/v1/examples/events/event.js +53 -0
- package/v1/examples/events/filter.d.ts +1 -0
- package/v1/examples/events/filter.js +32 -0
- package/v1/examples/events/worker.d.ts +1 -0
- package/v1/examples/events/worker.js +24 -0
- package/v1/examples/events/workflow.d.ts +19 -0
- package/v1/examples/events/workflow.js +60 -0
- package/v1/examples/high-memory/workflow-with-child.js +1 -1
- package/v1/examples/logger/byo-logger.d.ts +1 -0
- package/v1/examples/logger/byo-logger.js +73 -0
- package/v1/examples/logger/logger.d.ts +1 -0
- package/v1/examples/logger/logger.js +46 -0
- package/v1/examples/logger/workflow.d.ts +2 -0
- package/v1/examples/logger/workflow.js +38 -0
- package/v1/examples/multiple_wf_concurrency/workflow.js +3 -3
- package/v1/examples/on_failure/workflow.d.ts +1 -0
- package/v1/examples/on_failure/workflow.js +12 -7
- package/v1/examples/priority/workflow.js +1 -1
- package/v1/examples/retries/workflow.js +2 -2
- package/v1/examples/return_exceptions/workflow.d.ts +6 -0
- package/v1/examples/return_exceptions/workflow.js +22 -0
- package/v1/examples/run_details/workflow.d.ts +4 -0
- package/v1/examples/run_details/workflow.js +65 -0
- package/v1/examples/simple/e2e-workflows.d.ts +14 -0
- package/v1/examples/simple/e2e-workflows.js +27 -0
- package/v1/examples/simple/enqueue.js +2 -2
- package/v1/examples/sticky/workflow.js +2 -2
- package/v1/examples/timeout/run.d.ts +1 -0
- package/v1/examples/timeout/run.js +30 -0
- package/v1/examples/timeout/worker.d.ts +1 -0
- package/v1/examples/timeout/worker.js +25 -0
- package/v1/examples/timeout/workflow.d.ts +10 -0
- package/v1/examples/timeout/workflow.js +56 -0
- package/v1/examples/webhooks/workflow.d.ts +5 -0
- package/v1/examples/webhooks/workflow.js +23 -0
- package/v1/index.d.ts +1 -0
- package/v1/index.js +1 -0
- package/v1/parent-run-context-vars.d.ts +6 -0
- package/v1/parent-run-context-vars.js +3 -0
- package/v1/task.d.ts +22 -7
- package/v1/task.js +4 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/workflow.d.ts +3 -491
- package/workflow.js +12 -62
- package/clients/hatchet-client/hatchet-client.d.ts +0 -35
- package/clients/hatchet-client/hatchet-client.js +0 -108
- package/clients/worker/handler.d.ts +0 -50
- package/clients/worker/handler.js +0 -214
- package/clients/worker/index.d.ts +0 -1
- package/clients/worker/index.js +0 -17
- package/clients/worker/worker.d.ts +0 -59
- package/clients/worker/worker.js +0 -568
- package/examples/webhooks.js +0 -45
- /package/{examples → legacy/examples}/affinity-workers.d.ts +0 -0
- /package/{examples → legacy/examples}/bulk-fanout-trigger.d.ts +0 -0
- /package/{examples → legacy/examples}/bulk-fanout-worker.d.ts +0 -0
- /package/{examples → legacy/examples}/bulk-trigger.d.ts +0 -0
- /package/{examples → legacy/examples}/byo-logger.d.ts +0 -0
- /package/{examples → legacy/examples}/concurrency/cancel-in-progress/concurrency-event.d.ts +0 -0
- /package/{examples → legacy/examples}/concurrency/cancel-in-progress/concurrency-worker.d.ts +0 -0
- /package/{examples → legacy/examples}/concurrency/group-round-robin/concurrency-event.d.ts +0 -0
- /package/{examples → legacy/examples}/concurrency/group-round-robin/concurrency-worker-expression.d.ts +0 -0
- /package/{examples → legacy/examples}/concurrency/group-round-robin/concurrency-worker-key-fn.d.ts +0 -0
- /package/{examples → legacy/examples}/crons/programatic-crons.d.ts +0 -0
- /package/{examples → legacy/examples}/dag-worker.d.ts +0 -0
- /package/{examples → legacy/examples}/example-event-with-results.d.ts +0 -0
- /package/{examples → legacy/examples}/example-event.d.ts +0 -0
- /package/{examples → legacy/examples}/fanout-worker.d.ts +0 -0
- /package/{examples → legacy/examples}/logger.d.ts +0 -0
- /package/{examples → legacy/examples}/manual-trigger.d.ts +0 -0
- /package/{examples → legacy/examples}/multi-workflow.d.ts +0 -0
- /package/{examples → legacy/examples}/namespaced-worker.d.ts +0 -0
- /package/{examples → legacy/examples}/on-failure.d.ts +0 -0
- /package/{examples → legacy/examples}/rate-limit/events.d.ts +0 -0
- /package/{examples → legacy/examples}/rate-limit/worker.d.ts +0 -0
- /package/{examples → legacy/examples}/retries-with-backoff.d.ts +0 -0
- /package/{examples → legacy/examples}/retries-worker.d.ts +0 -0
- /package/{examples → legacy/examples}/scheduled-runs/programatic-schedules.d.ts +0 -0
- /package/{examples → legacy/examples}/sticky-trigger.d.ts +0 -0
- /package/{examples → legacy/examples}/sticky-worker-with-check.d.ts +0 -0
- /package/{examples → legacy/examples}/sticky-worker.d.ts +0 -0
- /package/{examples → legacy/examples}/stream-by-additional-meta.d.ts +0 -0
- /package/{examples/webhooks.d.ts → v1/examples/cancellation/run.d.ts} +0 -0
|
@@ -16,7 +16,7 @@ interface GetActionListenerOptions {
|
|
|
16
16
|
durableSlots?: number;
|
|
17
17
|
/** @deprecated use slots */
|
|
18
18
|
maxRuns?: number;
|
|
19
|
-
labels:
|
|
19
|
+
labels: WorkerLabels;
|
|
20
20
|
}
|
|
21
21
|
type StepActionEventInput = StepActionEvent & {
|
|
22
22
|
/** @deprecated use taskId */
|
|
@@ -8,6 +8,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
12
|
+
var t = {};
|
|
13
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
14
|
+
t[p] = s[p];
|
|
15
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
16
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
17
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
18
|
+
t[p[i]] = s[p[i]];
|
|
19
|
+
}
|
|
20
|
+
return t;
|
|
21
|
+
};
|
|
11
22
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
23
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
24
|
};
|
|
@@ -26,9 +37,10 @@ class Heartbeat {
|
|
|
26
37
|
start() {
|
|
27
38
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28
39
|
if (!this.heartbeatWorker) {
|
|
40
|
+
const _a = this.config, { middleware: _m, logger: _l } = _a, clonableConfig = __rest(_a, ["middleware", "logger"]);
|
|
29
41
|
this.heartbeatWorker = (0, thread_helper_1.runThreaded)(path_1.default.join(__dirname, './heartbeat-worker'), {
|
|
30
42
|
workerData: {
|
|
31
|
-
config:
|
|
43
|
+
config: clonableConfig,
|
|
32
44
|
workerId: this.workerId,
|
|
33
45
|
},
|
|
34
46
|
});
|
|
@@ -55,7 +55,7 @@ class HeartbeatWorker {
|
|
|
55
55
|
const actualInterval = now - this.timeLastHeartbeat;
|
|
56
56
|
if (actualInterval > HEARTBEAT_INTERVAL * 1.2) {
|
|
57
57
|
const message = `Heartbeat interval delay (${actualInterval}ms >> ${HEARTBEAT_INTERVAL}ms)`;
|
|
58
|
-
this.logger.
|
|
58
|
+
this.logger.debug(message);
|
|
59
59
|
postMessage({
|
|
60
60
|
type: 'warn',
|
|
61
61
|
message,
|
|
@@ -102,6 +102,7 @@ class HeartbeatWorker {
|
|
|
102
102
|
}
|
|
103
103
|
const heartbeat = new HeartbeatWorker(worker_threads_1.workerData.config, worker_threads_1.workerData.workerId);
|
|
104
104
|
heartbeat.start();
|
|
105
|
-
worker_threads_1.parentPort === null || worker_threads_1.parentPort === void 0 ? void 0 : worker_threads_1.parentPort.on(
|
|
106
|
-
|
|
105
|
+
worker_threads_1.parentPort === null || worker_threads_1.parentPort === void 0 ? void 0 : worker_threads_1.parentPort.on('message', (msg) => {
|
|
106
|
+
if (msg === heartbeat_controller_1.STOP_HEARTBEAT)
|
|
107
|
+
heartbeat.stop();
|
|
107
108
|
});
|
|
@@ -4,7 +4,6 @@ import { ClientConfig } from '../hatchet-client/client-config';
|
|
|
4
4
|
import { Logger } from '../../util/logger';
|
|
5
5
|
import { retrier } from '../../util/retrier';
|
|
6
6
|
import { HatchetClient } from '../../v1';
|
|
7
|
-
import { LegacyHatchetClient } from '../hatchet-client';
|
|
8
7
|
export declare enum LogLevel {
|
|
9
8
|
INFO = "INFO",
|
|
10
9
|
WARN = "WARN",
|
|
@@ -29,7 +28,7 @@ export declare class EventClient {
|
|
|
29
28
|
api: HatchetClient['api'];
|
|
30
29
|
tenantId: string;
|
|
31
30
|
logger: Logger;
|
|
32
|
-
constructor(config: ClientConfig, channel: Channel, factory: ClientFactory,
|
|
31
|
+
constructor(config: ClientConfig, channel: Channel, factory: ClientFactory, api: HatchetClient['api']);
|
|
33
32
|
push<T>(type: string, input: T, options?: PushEventOptions): Promise<import("../../protoc/events/events").Event>;
|
|
34
33
|
bulkPush<T>(type: string, inputs: EventWithMetadata<T>[], options?: PushEventOptions): Promise<import("../../protoc/events/events").Events>;
|
|
35
34
|
putLog(taskRunExternalId: string, log: string, level?: LogLevel, taskRetryCount?: number, metadata?: Record<string, any>): Promise<void>;
|
|
@@ -26,12 +26,12 @@ var LogLevel;
|
|
|
26
26
|
LogLevel["DEBUG"] = "DEBUG";
|
|
27
27
|
})(LogLevel || (exports.LogLevel = LogLevel = {}));
|
|
28
28
|
class EventClient {
|
|
29
|
-
constructor(config, channel, factory,
|
|
29
|
+
constructor(config, channel, factory, api) {
|
|
30
30
|
this.config = config;
|
|
31
31
|
this.client = factory.create(events_1.EventsServiceDefinition, channel);
|
|
32
32
|
this.logger = config.logger(`Dispatcher`, config.log_level);
|
|
33
33
|
this.retrier = retrier_1.retrier;
|
|
34
|
-
this.api =
|
|
34
|
+
this.api = api;
|
|
35
35
|
this.tenantId = config.tenant_id;
|
|
36
36
|
}
|
|
37
37
|
push(type, input, options = {}) {
|
|
@@ -46,11 +46,11 @@ export declare const ClientConfigSchema: z.ZodObject<{
|
|
|
46
46
|
enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
47
47
|
port: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
48
48
|
}, "strip", z.ZodTypeAny, {
|
|
49
|
-
enabled: boolean;
|
|
50
49
|
port: number;
|
|
50
|
+
enabled: boolean;
|
|
51
51
|
}, {
|
|
52
|
-
enabled?: boolean | undefined;
|
|
53
52
|
port?: number | undefined;
|
|
53
|
+
enabled?: boolean | undefined;
|
|
54
54
|
}>>;
|
|
55
55
|
host_port: z.ZodString;
|
|
56
56
|
api_url: z.ZodString;
|
|
@@ -67,6 +67,8 @@ export declare const ClientConfigSchema: z.ZodObject<{
|
|
|
67
67
|
before?: any;
|
|
68
68
|
after?: any;
|
|
69
69
|
}>>;
|
|
70
|
+
cancellation_grace_period: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
71
|
+
cancellation_warning_threshold: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
70
72
|
}, "strip", z.ZodTypeAny, {
|
|
71
73
|
token: string;
|
|
72
74
|
tls_config: {
|
|
@@ -79,9 +81,11 @@ export declare const ClientConfigSchema: z.ZodObject<{
|
|
|
79
81
|
host_port: string;
|
|
80
82
|
api_url: string;
|
|
81
83
|
tenant_id: string;
|
|
84
|
+
cancellation_grace_period: number;
|
|
85
|
+
cancellation_warning_threshold: number;
|
|
82
86
|
healthcheck?: {
|
|
83
|
-
enabled: boolean;
|
|
84
87
|
port: number;
|
|
88
|
+
enabled: boolean;
|
|
85
89
|
} | undefined;
|
|
86
90
|
log_level?: "OFF" | "DEBUG" | "INFO" | "WARN" | "ERROR" | undefined;
|
|
87
91
|
namespace?: string | undefined;
|
|
@@ -102,8 +106,8 @@ export declare const ClientConfigSchema: z.ZodObject<{
|
|
|
102
106
|
api_url: string;
|
|
103
107
|
tenant_id: string;
|
|
104
108
|
healthcheck?: {
|
|
105
|
-
enabled?: boolean | undefined;
|
|
106
109
|
port?: number | undefined;
|
|
110
|
+
enabled?: boolean | undefined;
|
|
107
111
|
} | undefined;
|
|
108
112
|
log_level?: "OFF" | "DEBUG" | "INFO" | "WARN" | "ERROR" | undefined;
|
|
109
113
|
namespace?: string | undefined;
|
|
@@ -111,6 +115,8 @@ export declare const ClientConfigSchema: z.ZodObject<{
|
|
|
111
115
|
before?: any;
|
|
112
116
|
after?: any;
|
|
113
117
|
} | undefined;
|
|
118
|
+
cancellation_grace_period?: number | undefined;
|
|
119
|
+
cancellation_warning_threshold?: number | undefined;
|
|
114
120
|
}>;
|
|
115
121
|
export type LogConstructor = (context: string, logLevel?: LogLevel) => Logger;
|
|
116
122
|
/**
|
|
@@ -152,7 +158,11 @@ export type InferMiddlewareBefore<M> = M extends {
|
|
|
152
158
|
export type InferMiddlewareAfter<M> = M extends {
|
|
153
159
|
after: infer P;
|
|
154
160
|
} ? P extends (...args: any[]) => any ? NonVoidReturn<P> : P extends readonly any[] ? MergeReturns<P> : {} : {};
|
|
155
|
-
|
|
161
|
+
type ClientConfigInferred = z.infer<typeof ClientConfigSchema>;
|
|
162
|
+
export type ClientConfig = Omit<ClientConfigInferred, 'cancellation_grace_period' | 'cancellation_warning_threshold'> & {
|
|
163
|
+
cancellation_grace_period?: number;
|
|
164
|
+
cancellation_warning_threshold?: number;
|
|
165
|
+
} & {
|
|
156
166
|
credentials?: ChannelCredentials;
|
|
157
167
|
} & {
|
|
158
168
|
logger: LogConstructor;
|
|
@@ -19,6 +19,7 @@ const TaskMiddlewareSchema = zod_1.z
|
|
|
19
19
|
after: zod_1.z.any().optional(),
|
|
20
20
|
})
|
|
21
21
|
.optional();
|
|
22
|
+
const DurationMsSchema = zod_1.z.number().int().nonnegative().finite();
|
|
22
23
|
exports.ClientConfigSchema = zod_1.z.object({
|
|
23
24
|
token: zod_1.z.string(),
|
|
24
25
|
tls_config: ClientTLSConfigSchema,
|
|
@@ -29,4 +30,6 @@ exports.ClientConfigSchema = zod_1.z.object({
|
|
|
29
30
|
tenant_id: zod_1.z.string(),
|
|
30
31
|
namespace: zod_1.z.string().optional(),
|
|
31
32
|
middleware: TaskMiddlewareSchema,
|
|
33
|
+
cancellation_grace_period: DurationMsSchema.optional().default(1000),
|
|
34
|
+
cancellation_warning_threshold: DurationMsSchema.optional().default(300),
|
|
32
35
|
});
|
|
@@ -72,6 +72,7 @@ class HatchetLogger {
|
|
|
72
72
|
yield this.log('ERROR', error ? `${message} ${error}` : message, '91');
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
75
76
|
util(key, message, extra) {
|
|
76
77
|
if (key === 'trace') {
|
|
77
78
|
this.log('INFO', `trace: ${message}`, '35');
|
|
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.HatchetLogger = void 0;
|
|
18
|
-
__exportStar(require("
|
|
18
|
+
__exportStar(require("../../legacy/legacy-client"), exports);
|
|
19
19
|
__exportStar(require("./client-config"), exports);
|
|
20
20
|
var hatchet_logger_1 = require("./hatchet-logger");
|
|
21
21
|
Object.defineProperty(exports, "HatchetLogger", { enumerable: true, get: function () { return hatchet_logger_1.HatchetLogger; } });
|
|
@@ -16,6 +16,12 @@ export declare class DurableListenerClient {
|
|
|
16
16
|
taskId: string;
|
|
17
17
|
signalKey: string;
|
|
18
18
|
}): import("./pooled-durable-listener-client").DurableEventStreamable;
|
|
19
|
+
result(request: {
|
|
20
|
+
taskId: string;
|
|
21
|
+
signalKey: string;
|
|
22
|
+
}, opts?: {
|
|
23
|
+
signal?: AbortSignal;
|
|
24
|
+
}): Promise<import("../../../protoc/v1/dispatcher").DurableEvent>;
|
|
19
25
|
registerDurableEvent(request: {
|
|
20
26
|
taskId: string;
|
|
21
27
|
signalKey: string;
|
|
@@ -18,6 +18,14 @@ class DurableListenerClient {
|
|
|
18
18
|
}
|
|
19
19
|
return this.pooledListener.subscribe(request);
|
|
20
20
|
}
|
|
21
|
+
result(request, opts) {
|
|
22
|
+
if (!this.pooledListener) {
|
|
23
|
+
this.pooledListener = new pooled_durable_listener_client_1.DurableEventGrpcPooledListener(this, () => {
|
|
24
|
+
this.pooledListener = undefined;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return this.pooledListener.result(request, opts);
|
|
28
|
+
}
|
|
21
29
|
registerDurableEvent(request) {
|
|
22
30
|
if (!this.pooledListener) {
|
|
23
31
|
this.pooledListener = new pooled_durable_listener_client_1.DurableEventGrpcPooledListener(this, () => {
|
|
@@ -6,9 +6,13 @@ export declare class DurableEventStreamable {
|
|
|
6
6
|
listener: AsyncIterable<DurableEvent>;
|
|
7
7
|
taskId: string;
|
|
8
8
|
signalKey: string;
|
|
9
|
+
subscriptionId: string;
|
|
10
|
+
onCleanup: () => void;
|
|
9
11
|
responseEmitter: EventEmitter<[never]>;
|
|
10
|
-
constructor(listener: AsyncIterable<DurableEvent>, taskId: string, signalKey: string);
|
|
11
|
-
get(
|
|
12
|
+
constructor(listener: AsyncIterable<DurableEvent>, taskId: string, signalKey: string, subscriptionId: string, onCleanup: () => void);
|
|
13
|
+
get(opts?: {
|
|
14
|
+
signal?: AbortSignal;
|
|
15
|
+
}): Promise<DurableEvent>;
|
|
12
16
|
}
|
|
13
17
|
export declare class DurableEventGrpcPooledListener {
|
|
14
18
|
listener: AsyncIterable<DurableEvent> | undefined;
|
|
@@ -24,6 +28,7 @@ export declare class DurableEventGrpcPooledListener {
|
|
|
24
28
|
constructor(client: DurableListenerClient, onFinish: () => void);
|
|
25
29
|
private scheduleInterrupt;
|
|
26
30
|
private init;
|
|
31
|
+
private cleanupSubscription;
|
|
27
32
|
subscribe(request: {
|
|
28
33
|
taskId: string;
|
|
29
34
|
signalKey: string;
|
|
@@ -31,6 +36,8 @@ export declare class DurableEventGrpcPooledListener {
|
|
|
31
36
|
result(request: {
|
|
32
37
|
taskId: string;
|
|
33
38
|
signalKey: string;
|
|
39
|
+
}, opts?: {
|
|
40
|
+
signal?: AbortSignal;
|
|
34
41
|
}): Promise<DurableEvent>;
|
|
35
42
|
registerDurableEvent(request: {
|
|
36
43
|
taskId: string;
|
|
@@ -37,17 +37,60 @@ exports.DurableEventGrpcPooledListener = exports.DurableEventStreamable = void 0
|
|
|
37
37
|
const events_1 = require("events");
|
|
38
38
|
const abort_controller_x_1 = require("abort-controller-x");
|
|
39
39
|
const sleep_1 = __importDefault(require("../../../util/sleep"));
|
|
40
|
+
const abort_error_1 = require("../../../util/abort-error");
|
|
40
41
|
class DurableEventStreamable {
|
|
41
|
-
constructor(listener, taskId, signalKey) {
|
|
42
|
+
constructor(listener, taskId, signalKey, subscriptionId, onCleanup) {
|
|
42
43
|
this.responseEmitter = new events_1.EventEmitter();
|
|
43
44
|
this.listener = listener;
|
|
44
45
|
this.taskId = taskId;
|
|
45
46
|
this.signalKey = signalKey;
|
|
47
|
+
this.subscriptionId = subscriptionId;
|
|
48
|
+
this.onCleanup = onCleanup;
|
|
46
49
|
}
|
|
47
|
-
get() {
|
|
50
|
+
get(opts) {
|
|
48
51
|
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
const signal = opts === null || opts === void 0 ? void 0 : opts.signal;
|
|
53
|
+
return new Promise((resolve, reject) => {
|
|
54
|
+
let cleanedUp = false;
|
|
55
|
+
const cleanup = () => {
|
|
56
|
+
if (cleanedUp)
|
|
57
|
+
return;
|
|
58
|
+
cleanedUp = true;
|
|
59
|
+
this.responseEmitter.removeListener('response', onResponse);
|
|
60
|
+
if (signal) {
|
|
61
|
+
signal.removeEventListener('abort', onAbort);
|
|
62
|
+
}
|
|
63
|
+
this.onCleanup();
|
|
64
|
+
};
|
|
65
|
+
const onResponse = (event) => {
|
|
66
|
+
cleanup();
|
|
67
|
+
resolve(event);
|
|
68
|
+
};
|
|
69
|
+
const onAbort = () => {
|
|
70
|
+
cleanup();
|
|
71
|
+
reject((0, abort_error_1.createAbortError)('Operation cancelled by AbortSignal'));
|
|
72
|
+
};
|
|
73
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
74
|
+
onAbort();
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
this.responseEmitter.once('response', onResponse);
|
|
78
|
+
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 });
|
|
93
|
+
}
|
|
51
94
|
});
|
|
52
95
|
});
|
|
53
96
|
}
|
|
@@ -115,13 +158,7 @@ class DurableEventGrpcPooledListener {
|
|
|
115
158
|
const emitter = this.subscribers[subId];
|
|
116
159
|
if (emitter) {
|
|
117
160
|
emitter.responseEmitter.emit('response', event);
|
|
118
|
-
|
|
119
|
-
// Remove this subscription from the mapping
|
|
120
|
-
this.taskSignalKeyToSubscriptionIds[subscriptionKey] =
|
|
121
|
-
this.taskSignalKeyToSubscriptionIds[subscriptionKey].filter((id) => id !== subId);
|
|
122
|
-
if (this.taskSignalKeyToSubscriptionIds[subscriptionKey].length === 0) {
|
|
123
|
-
delete this.taskSignalKeyToSubscriptionIds[subscriptionKey];
|
|
124
|
-
}
|
|
161
|
+
this.cleanupSubscription(subId);
|
|
125
162
|
}
|
|
126
163
|
}
|
|
127
164
|
}
|
|
@@ -152,13 +189,28 @@ class DurableEventGrpcPooledListener {
|
|
|
152
189
|
}
|
|
153
190
|
});
|
|
154
191
|
}
|
|
192
|
+
cleanupSubscription(subscriptionId) {
|
|
193
|
+
const emitter = this.subscribers[subscriptionId];
|
|
194
|
+
if (!emitter) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const subscriptionKey = keyHelper(emitter.taskId, emitter.signalKey);
|
|
198
|
+
delete this.subscribers[subscriptionId];
|
|
199
|
+
// Remove from the mapping
|
|
200
|
+
if (this.taskSignalKeyToSubscriptionIds[subscriptionKey]) {
|
|
201
|
+
this.taskSignalKeyToSubscriptionIds[subscriptionKey] = this.taskSignalKeyToSubscriptionIds[subscriptionKey].filter((id) => id !== subscriptionId);
|
|
202
|
+
if (this.taskSignalKeyToSubscriptionIds[subscriptionKey].length === 0) {
|
|
203
|
+
delete this.taskSignalKeyToSubscriptionIds[subscriptionKey];
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
155
207
|
subscribe(request) {
|
|
156
208
|
const { taskId, signalKey } = request;
|
|
157
209
|
if (!this.listener)
|
|
158
210
|
throw new Error('listener not initialized');
|
|
159
211
|
// eslint-disable-next-line no-plusplus
|
|
160
212
|
const subscriptionId = (this.subscriptionCounter++).toString();
|
|
161
|
-
const subscriber = new DurableEventStreamable(this.listener, taskId, signalKey);
|
|
213
|
+
const subscriber = new DurableEventStreamable(this.listener, taskId, signalKey, subscriptionId, () => this.cleanupSubscription(subscriptionId));
|
|
162
214
|
this.subscribers[subscriptionId] = subscriber;
|
|
163
215
|
const key = keyHelper(taskId, signalKey);
|
|
164
216
|
if (!this.taskSignalKeyToSubscriptionIds[key]) {
|
|
@@ -168,10 +220,10 @@ class DurableEventGrpcPooledListener {
|
|
|
168
220
|
this.requestEmitter.emit('subscribe', { taskId, signalKey });
|
|
169
221
|
return subscriber;
|
|
170
222
|
}
|
|
171
|
-
result(request) {
|
|
223
|
+
result(request, opts) {
|
|
172
224
|
return __awaiter(this, void 0, void 0, function* () {
|
|
173
225
|
const subscriber = this.subscribe(request);
|
|
174
|
-
const event = yield subscriber.get();
|
|
226
|
+
const event = yield subscriber.get({ signal: opts === null || opts === void 0 ? void 0 : opts.signal });
|
|
175
227
|
return event;
|
|
176
228
|
});
|
|
177
229
|
}
|
|
@@ -192,7 +244,7 @@ class DurableEventGrpcPooledListener {
|
|
|
192
244
|
replayRequests() {
|
|
193
245
|
const subscriptionEntries = Object.entries(this.taskSignalKeyToSubscriptionIds);
|
|
194
246
|
this.client.logger.debug(`Replaying ${subscriptionEntries.length} requests...`);
|
|
195
|
-
for (const [key
|
|
247
|
+
for (const [key] of subscriptionEntries) {
|
|
196
248
|
const [taskId, signalKey] = key.split('|');
|
|
197
249
|
this.requestEmitter.emit('subscribe', { taskId, signalKey });
|
|
198
250
|
}
|
|
@@ -186,6 +186,7 @@ class RunEventListener {
|
|
|
186
186
|
this.eventEmitter.emit('event');
|
|
187
187
|
});
|
|
188
188
|
try {
|
|
189
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
189
190
|
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) {
|
|
190
191
|
_c = _f.value;
|
|
191
192
|
_d = false;
|
|
@@ -4,9 +4,17 @@ import { RunListenerClient } from './child-listener-client';
|
|
|
4
4
|
export declare class Streamable {
|
|
5
5
|
listener: AsyncIterable<WorkflowRunEvent>;
|
|
6
6
|
id: string;
|
|
7
|
+
onCleanup: () => void;
|
|
8
|
+
private cleanedUp;
|
|
7
9
|
responseEmitter: EventEmitter<[never]>;
|
|
8
|
-
constructor(listener: AsyncIterable<WorkflowRunEvent>, id: string);
|
|
9
|
-
|
|
10
|
+
constructor(listener: AsyncIterable<WorkflowRunEvent>, id: string, onCleanup: () => void);
|
|
11
|
+
private cleanupOnce;
|
|
12
|
+
get(opts?: {
|
|
13
|
+
signal?: AbortSignal;
|
|
14
|
+
}): Promise<WorkflowRunEvent>;
|
|
15
|
+
stream(opts?: {
|
|
16
|
+
signal?: AbortSignal;
|
|
17
|
+
}): AsyncGenerator<WorkflowRunEvent, void, unknown>;
|
|
10
18
|
}
|
|
11
19
|
export declare class RunGrpcPooledListener {
|
|
12
20
|
listener: AsyncIterable<WorkflowRunEvent> | undefined;
|
|
@@ -38,19 +38,73 @@ const events_1 = require("events");
|
|
|
38
38
|
const dispatcher_1 = require("../../../protoc/dispatcher");
|
|
39
39
|
const abort_controller_x_1 = require("abort-controller-x");
|
|
40
40
|
const sleep_1 = __importDefault(require("../../../util/sleep"));
|
|
41
|
+
const abort_error_1 = require("../../../util/abort-error");
|
|
41
42
|
class Streamable {
|
|
42
|
-
constructor(listener, id) {
|
|
43
|
+
constructor(listener, id, onCleanup) {
|
|
44
|
+
this.cleanedUp = false;
|
|
43
45
|
this.responseEmitter = new events_1.EventEmitter();
|
|
44
46
|
this.listener = listener;
|
|
45
47
|
this.id = id;
|
|
48
|
+
this.onCleanup = onCleanup;
|
|
46
49
|
}
|
|
47
|
-
|
|
50
|
+
cleanupOnce() {
|
|
51
|
+
if (this.cleanedUp)
|
|
52
|
+
return;
|
|
53
|
+
this.cleanedUp = true;
|
|
54
|
+
this.onCleanup();
|
|
55
|
+
}
|
|
56
|
+
get(opts) {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
const signal = opts === null || opts === void 0 ? void 0 : opts.signal;
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
const cleanupListeners = () => {
|
|
61
|
+
this.responseEmitter.removeListener('response', onResponse);
|
|
62
|
+
if (signal) {
|
|
63
|
+
signal.removeEventListener('abort', onAbort);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const onResponse = (event) => {
|
|
67
|
+
cleanupListeners();
|
|
68
|
+
resolve(event);
|
|
69
|
+
};
|
|
70
|
+
const onAbort = () => {
|
|
71
|
+
cleanupListeners();
|
|
72
|
+
this.cleanupOnce();
|
|
73
|
+
reject((0, abort_error_1.createAbortError)('Operation cancelled by AbortSignal'));
|
|
74
|
+
};
|
|
75
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
76
|
+
onAbort();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
this.responseEmitter.once('response', onResponse);
|
|
80
|
+
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 });
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
stream(opts) {
|
|
48
100
|
return __asyncGenerator(this, arguments, function* stream_1() {
|
|
49
101
|
while (true) {
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
102
|
+
const event = yield __await(this.get(opts));
|
|
103
|
+
yield yield __await(event);
|
|
104
|
+
if (event.eventType === dispatcher_1.WorkflowRunEventType.WORKFLOW_RUN_EVENT_TYPE_FINISHED) {
|
|
105
|
+
this.cleanupOnce();
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
54
108
|
}
|
|
55
109
|
});
|
|
56
110
|
}
|
|
@@ -128,7 +182,9 @@ class RunGrpcPooledListener {
|
|
|
128
182
|
subscribe(request) {
|
|
129
183
|
if (!this.listener)
|
|
130
184
|
throw new Error('listener not initialized');
|
|
131
|
-
this.subscribers[request.workflowRunId] = new Streamable(this.listener, request.workflowRunId)
|
|
185
|
+
this.subscribers[request.workflowRunId] = new Streamable(this.listener, request.workflowRunId, () => {
|
|
186
|
+
delete this.subscribers[request.workflowRunId];
|
|
187
|
+
});
|
|
132
188
|
this.requestEmitter.emit('subscribe', request);
|
|
133
189
|
return this.subscribers[request.workflowRunId];
|
|
134
190
|
}
|
package/clients/rest/api.js
CHANGED
|
@@ -3,11 +3,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const https_1 = __importDefault(require("https"));
|
|
6
7
|
const qs_1 = __importDefault(require("qs"));
|
|
7
8
|
const Api_1 = require("./generated/Api");
|
|
9
|
+
function getDefaultAxiosOpts(serverUrl) {
|
|
10
|
+
const opts = {};
|
|
11
|
+
if (serverUrl.startsWith('https://') && process.env.NODE_TLS_REJECT_UNAUTHORIZED === '0') {
|
|
12
|
+
opts.httpsAgent = new https_1.default.Agent({ rejectUnauthorized: false });
|
|
13
|
+
}
|
|
14
|
+
return opts;
|
|
15
|
+
}
|
|
8
16
|
const api = (serverUrl, token, axiosOpts) => {
|
|
9
|
-
return new Api_1.Api(Object.assign({ baseURL: serverUrl, headers: {
|
|
17
|
+
return new Api_1.Api(Object.assign(Object.assign({ baseURL: serverUrl, headers: {
|
|
10
18
|
Authorization: `Bearer ${token}`,
|
|
11
|
-
}, paramsSerializer: (params) => qs_1.default.stringify(params, { arrayFormat: 'repeat' }) }, axiosOpts));
|
|
19
|
+
}, paramsSerializer: (params) => qs_1.default.stringify(params, { arrayFormat: 'repeat' }) }, getDefaultAxiosOpts(serverUrl)), axiosOpts));
|
|
12
20
|
};
|
|
13
21
|
exports.default = api;
|
|
@@ -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, 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, 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';
|
|
2
2
|
import { HttpClient, RequestParams } from './http-client';
|
|
3
3
|
export declare class Api<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
|
|
4
4
|
/**
|
|
@@ -528,7 +528,7 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
|
|
|
528
528
|
* @summary Post a webhook message
|
|
529
529
|
* @request POST:/api/v1/stable/tenants/{tenant}/webhooks/{v1-webhook}
|
|
530
530
|
*/
|
|
531
|
-
v1WebhookReceive: (tenant: string, v1Webhook: string, data?: any, params?: RequestParams) => Promise<import("axios").AxiosResponse<
|
|
531
|
+
v1WebhookReceive: (tenant: string, v1Webhook: string, data?: any, params?: RequestParams) => Promise<import("axios").AxiosResponse<V1WebhookResponse, any, {}>>;
|
|
532
532
|
/**
|
|
533
533
|
* @description Update a webhook
|
|
534
534
|
*
|
|
@@ -877,6 +877,12 @@ export type V1CreateWebhookRequestHMAC = V1CreateWebhookRequestBase & {
|
|
|
877
877
|
auth: V1WebhookHMACAuth;
|
|
878
878
|
};
|
|
879
879
|
export type V1CreateWebhookRequest = V1CreateWebhookRequestBasicAuth | V1CreateWebhookRequestAPIKey | V1CreateWebhookRequestHMAC;
|
|
880
|
+
export interface V1WebhookResponse {
|
|
881
|
+
/** The message for the webhook response */
|
|
882
|
+
message?: string;
|
|
883
|
+
event?: V1Event;
|
|
884
|
+
challenge?: string;
|
|
885
|
+
}
|
|
880
886
|
export interface V1UpdateWebhookRequest {
|
|
881
887
|
/** The CEL expression to use for the event key. This is used to create the event key from the webhook payload. */
|
|
882
888
|
eventKeyExpression?: string;
|
package/index.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { HatchetClient as Hatchet } from './v1/client/client';
|
|
2
|
-
export * from './workflow';
|
|
3
|
-
export * from './step';
|
|
4
|
-
export * from './clients/worker';
|
|
5
2
|
export * from './clients/rest';
|
|
6
3
|
export * from './clients/admin';
|
|
7
4
|
export * from './util/workflow-run-ref';
|
|
8
5
|
export * from './v1';
|
|
6
|
+
export * from './workflow';
|
|
7
|
+
export * from './step';
|
|
9
8
|
export default Hatchet;
|
|
10
9
|
export { Hatchet };
|
package/index.js
CHANGED
|
@@ -17,11 +17,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
exports.Hatchet = void 0;
|
|
18
18
|
const client_1 = require("./v1/client/client");
|
|
19
19
|
Object.defineProperty(exports, "Hatchet", { enumerable: true, get: function () { return client_1.HatchetClient; } });
|
|
20
|
-
__exportStar(require("./workflow"), exports);
|
|
21
|
-
__exportStar(require("./step"), exports);
|
|
22
|
-
__exportStar(require("./clients/worker"), exports);
|
|
23
20
|
__exportStar(require("./clients/rest"), exports);
|
|
24
21
|
__exportStar(require("./clients/admin"), exports);
|
|
25
22
|
__exportStar(require("./util/workflow-run-ref"), exports);
|
|
26
23
|
__exportStar(require("./v1"), exports);
|
|
24
|
+
__exportStar(require("./workflow"), exports);
|
|
25
|
+
__exportStar(require("./step"), exports);
|
|
27
26
|
exports.default = client_1.HatchetClient;
|
|
@@ -12,8 +12,8 @@ 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("
|
|
16
|
-
const sdk_1 = __importDefault(require("
|
|
15
|
+
const workflows_1 = require("../../protoc/workflows");
|
|
16
|
+
const sdk_1 = __importDefault(require("../../sdk"));
|
|
17
17
|
const hatchet = sdk_1.default.init();
|
|
18
18
|
// > AffinityWorkflow
|
|
19
19
|
const workflow = {
|
|
@@ -19,7 +19,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
19
19
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
const sdk_1 = __importDefault(require("
|
|
22
|
+
const sdk_1 = __importDefault(require("../../sdk"));
|
|
23
23
|
const hatchet = sdk_1.default.init();
|
|
24
24
|
function main() {
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -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 sdk_1 = __importDefault(require("
|
|
15
|
+
const sdk_1 = __importDefault(require("../../sdk"));
|
|
16
16
|
const hatchet = sdk_1.default.init();
|
|
17
17
|
const parentWorkflow = {
|
|
18
18
|
id: 'bulk-parent-workflow',
|