@sonamu-kit/tasks 0.2.0 → 0.3.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/.oxlintrc.json +3 -0
- package/AGENTS.md +21 -0
- package/dist/backend.d.ts +126 -107
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +4 -1
- package/dist/backend.js.map +1 -1
- package/dist/client.d.ts +145 -132
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +219 -213
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +15 -8
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +22 -17
- package/dist/config.js.map +1 -1
- package/dist/core/duration.d.ts +5 -4
- package/dist/core/duration.d.ts.map +1 -1
- package/dist/core/duration.js +54 -59
- package/dist/core/duration.js.map +1 -1
- package/dist/core/error.d.ts +10 -7
- package/dist/core/error.d.ts.map +1 -1
- package/dist/core/error.js +21 -21
- package/dist/core/error.js.map +1 -1
- package/dist/core/json.d.ts +8 -3
- package/dist/core/json.d.ts.map +1 -1
- package/dist/core/result.d.ts +10 -14
- package/dist/core/result.d.ts.map +1 -1
- package/dist/core/result.js +21 -16
- package/dist/core/result.js.map +1 -1
- package/dist/core/retry.d.ts +37 -31
- package/dist/core/retry.d.ts.map +1 -1
- package/dist/core/retry.js +44 -51
- package/dist/core/retry.js.map +1 -1
- package/dist/core/schema.d.ts +57 -53
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/step.d.ts +28 -78
- package/dist/core/step.d.ts.map +1 -1
- package/dist/core/step.js +53 -63
- package/dist/core/step.js.map +1 -1
- package/dist/core/workflow.d.ts +33 -61
- package/dist/core/workflow.d.ts.map +1 -1
- package/dist/core/workflow.js +31 -41
- package/dist/core/workflow.js.map +1 -1
- package/dist/database/backend.d.ts +53 -46
- package/dist/database/backend.d.ts.map +1 -1
- package/dist/database/backend.js +544 -577
- package/dist/database/backend.js.map +1 -1
- package/dist/database/base.js +48 -25
- package/dist/database/base.js.map +1 -1
- package/dist/database/migrations/20251212000000_0_init.d.ts +10 -0
- package/dist/database/migrations/20251212000000_0_init.d.ts.map +1 -0
- package/dist/database/migrations/20251212000000_0_init.js +8 -4
- package/dist/database/migrations/20251212000000_0_init.js.map +1 -1
- package/dist/database/migrations/20251212000000_1_tables.d.ts +10 -0
- package/dist/database/migrations/20251212000000_1_tables.d.ts.map +1 -0
- package/dist/database/migrations/20251212000000_1_tables.js +81 -83
- package/dist/database/migrations/20251212000000_1_tables.js.map +1 -1
- package/dist/database/migrations/20251212000000_2_fk.d.ts +10 -0
- package/dist/database/migrations/20251212000000_2_fk.d.ts.map +1 -0
- package/dist/database/migrations/20251212000000_2_fk.js +20 -43
- package/dist/database/migrations/20251212000000_2_fk.js.map +1 -1
- package/dist/database/migrations/20251212000000_3_indexes.d.ts +10 -0
- package/dist/database/migrations/20251212000000_3_indexes.d.ts.map +1 -0
- package/dist/database/migrations/20251212000000_3_indexes.js +88 -102
- package/dist/database/migrations/20251212000000_3_indexes.js.map +1 -1
- package/dist/database/pubsub.d.ts +7 -16
- package/dist/database/pubsub.d.ts.map +1 -1
- package/dist/database/pubsub.js +75 -73
- package/dist/database/pubsub.js.map +1 -1
- package/dist/execution.d.ts +20 -59
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +175 -188
- package/dist/execution.js.map +1 -1
- package/dist/index.d.ts +5 -8
- package/dist/index.js +5 -5
- package/dist/internal.d.ts +12 -13
- package/dist/internal.js +4 -4
- package/dist/registry.d.ts +33 -27
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +58 -49
- package/dist/registry.js.map +1 -1
- package/dist/worker.d.ts +57 -50
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +194 -199
- package/dist/worker.js.map +1 -1
- package/dist/workflow.d.ts +26 -30
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +20 -15
- package/dist/workflow.js.map +1 -1
- package/nodemon.json +1 -1
- package/package.json +17 -19
- package/src/backend.ts +25 -9
- package/src/chaos.test.ts +3 -1
- package/src/client.test.ts +2 -0
- package/src/client.ts +30 -8
- package/src/config.test.ts +1 -0
- package/src/config.ts +3 -2
- package/src/core/duration.test.ts +2 -1
- package/src/core/duration.ts +1 -1
- package/src/core/error.test.ts +1 -0
- package/src/core/error.ts +1 -1
- package/src/core/result.test.ts +1 -0
- package/src/core/retry.test.ts +3 -2
- package/src/core/retry.ts +1 -1
- package/src/core/schema.ts +2 -2
- package/src/core/step.test.ts +2 -1
- package/src/core/step.ts +4 -3
- package/src/core/workflow.test.ts +2 -1
- package/src/core/workflow.ts +4 -3
- package/src/database/backend.test.ts +1 -0
- package/src/database/backend.testsuite.ts +44 -40
- package/src/database/backend.ts +207 -25
- package/src/database/base.test.ts +41 -0
- package/src/database/base.ts +51 -2
- package/src/database/migrations/20251212000000_0_init.ts +2 -1
- package/src/database/migrations/20251212000000_1_tables.ts +2 -1
- package/src/database/migrations/20251212000000_2_fk.ts +2 -1
- package/src/database/migrations/20251212000000_3_indexes.ts +2 -1
- package/src/database/pubsub.test.ts +6 -3
- package/src/database/pubsub.ts +55 -33
- package/src/execution.test.ts +2 -0
- package/src/execution.ts +49 -10
- package/src/internal.ts +15 -15
- package/src/practices/01-remote-workflow.ts +1 -0
- package/src/registry.test.ts +1 -0
- package/src/registry.ts +1 -1
- package/src/testing/connection.ts +3 -1
- package/src/worker.test.ts +2 -0
- package/src/worker.ts +30 -9
- package/src/workflow.test.ts +1 -0
- package/src/workflow.ts +3 -3
- package/templates/openworkflow.config.ts +2 -1
- package/tsdown.config.ts +31 -0
- package/.swcrc +0 -17
- package/dist/chaos.test.d.ts +0 -2
- package/dist/chaos.test.d.ts.map +0 -1
- package/dist/chaos.test.js +0 -92
- package/dist/chaos.test.js.map +0 -1
- package/dist/client.test.d.ts +0 -2
- package/dist/client.test.d.ts.map +0 -1
- package/dist/client.test.js +0 -340
- package/dist/client.test.js.map +0 -1
- package/dist/config.test.d.ts +0 -2
- package/dist/config.test.d.ts.map +0 -1
- package/dist/config.test.js +0 -24
- package/dist/config.test.js.map +0 -1
- package/dist/core/duration.test.d.ts +0 -2
- package/dist/core/duration.test.d.ts.map +0 -1
- package/dist/core/duration.test.js +0 -265
- package/dist/core/duration.test.js.map +0 -1
- package/dist/core/error.test.d.ts +0 -2
- package/dist/core/error.test.d.ts.map +0 -1
- package/dist/core/error.test.js +0 -63
- package/dist/core/error.test.js.map +0 -1
- package/dist/core/json.js +0 -3
- package/dist/core/json.js.map +0 -1
- package/dist/core/result.test.d.ts +0 -2
- package/dist/core/result.test.d.ts.map +0 -1
- package/dist/core/result.test.js +0 -19
- package/dist/core/result.test.js.map +0 -1
- package/dist/core/retry.test.d.ts +0 -2
- package/dist/core/retry.test.d.ts.map +0 -1
- package/dist/core/retry.test.js +0 -198
- package/dist/core/retry.test.js.map +0 -1
- package/dist/core/schema.js +0 -4
- package/dist/core/schema.js.map +0 -1
- package/dist/core/step.test.d.ts +0 -2
- package/dist/core/step.test.d.ts.map +0 -1
- package/dist/core/step.test.js +0 -356
- package/dist/core/step.test.js.map +0 -1
- package/dist/core/workflow.test.d.ts +0 -2
- package/dist/core/workflow.test.d.ts.map +0 -1
- package/dist/core/workflow.test.js +0 -172
- package/dist/core/workflow.test.js.map +0 -1
- package/dist/database/backend.test.d.ts +0 -2
- package/dist/database/backend.test.d.ts.map +0 -1
- package/dist/database/backend.test.js +0 -19
- package/dist/database/backend.test.js.map +0 -1
- package/dist/database/backend.testsuite.d.ts +0 -20
- package/dist/database/backend.testsuite.d.ts.map +0 -1
- package/dist/database/backend.testsuite.js +0 -1280
- package/dist/database/backend.testsuite.js.map +0 -1
- package/dist/database/base.d.ts +0 -12
- package/dist/database/base.d.ts.map +0 -1
- package/dist/database/pubsub.test.d.ts +0 -2
- package/dist/database/pubsub.test.d.ts.map +0 -1
- package/dist/database/pubsub.test.js +0 -86
- package/dist/database/pubsub.test.js.map +0 -1
- package/dist/execution.test.d.ts +0 -2
- package/dist/execution.test.d.ts.map +0 -1
- package/dist/execution.test.js +0 -662
- package/dist/execution.test.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal.d.ts.map +0 -1
- package/dist/internal.js.map +0 -1
- package/dist/practices/01-remote-workflow.d.ts +0 -2
- package/dist/practices/01-remote-workflow.d.ts.map +0 -1
- package/dist/practices/01-remote-workflow.js +0 -70
- package/dist/practices/01-remote-workflow.js.map +0 -1
- package/dist/registry.test.d.ts +0 -2
- package/dist/registry.test.d.ts.map +0 -1
- package/dist/registry.test.js +0 -95
- package/dist/registry.test.js.map +0 -1
- package/dist/testing/connection.d.ts +0 -7
- package/dist/testing/connection.d.ts.map +0 -1
- package/dist/testing/connection.js +0 -39
- package/dist/testing/connection.js.map +0 -1
- package/dist/worker.test.d.ts +0 -2
- package/dist/worker.test.d.ts.map +0 -1
- package/dist/worker.test.js +0 -1164
- package/dist/worker.test.js.map +0 -1
- package/dist/workflow.test.d.ts +0 -2
- package/dist/workflow.test.d.ts.map +0 -1
- package/dist/workflow.test.js +0 -73
- package/dist/workflow.test.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { Worker } from "./worker.js";
|
|
2
|
+
import { OpenWorkflow, declareWorkflow } from "./client.js";
|
|
3
|
+
import { defineConfig } from "./config.js";
|
|
4
|
+
import { BackendPostgres } from "./database/backend.js";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
export { BackendPostgres, OpenWorkflow, Worker, declareWorkflow, defineConfig };
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export type
|
|
13
|
-
//# sourceMappingURL=internal.d.ts.map
|
|
1
|
+
import { JsonValue } from "./core/json.js";
|
|
2
|
+
import { DEFAULT_RETRY_POLICY, DynamicRetryPolicy, MergedDynamicRetryPolicy, MergedRetryPolicy, MergedStaticRetryPolicy, RetryDecision, RetryDecisionFn, RetryPolicy, SerializableRetryPolicy, StaticRetryPolicy, calculateRetryDelayMs, isDynamicRetryPolicy, isStaticRetryPolicy, mergeRetryPolicy, serializeRetryPolicy, shouldRetry, shouldRetryByPolicy } from "./core/retry.js";
|
|
3
|
+
import { DurationString } from "./core/duration.js";
|
|
4
|
+
import { StepAttempt } from "./core/step.js";
|
|
5
|
+
import { StandardSchemaV1 } from "./core/schema.js";
|
|
6
|
+
import { SchemaInput, SchemaOutput, WorkflowRun } from "./core/workflow.js";
|
|
7
|
+
import { Backend, CancelWorkflowRunParams, ClaimWorkflowRunParams, CompleteStepAttemptParams, CompleteWorkflowRunParams, CreateStepAttemptParams, CreateWorkflowRunParams, DEFAULT_NAMESPACE_ID, ExtendWorkflowRunLeaseParams, FailStepAttemptParams, FailWorkflowRunParams, GetStepAttemptParams, GetWorkflowRunParams, ListStepAttemptsParams, ListWorkflowRunsParams, PaginatedResponse, PaginationOptions, PauseWorkflowRunParams, ResumeWorkflowRunParams, SleepWorkflowRunParams } from "./backend.js";
|
|
8
|
+
import { StepApi, WorkflowFunction } from "./execution.js";
|
|
9
|
+
import { WorkflowSpec } from "./workflow.js";
|
|
10
|
+
import { OpenWorkflow, OpenWorkflowOptions, RunnableWorkflow, WorkflowHandleOptions, WorkflowRunHandle, WorkflowRunOptions, declareWorkflow } from "./client.js";
|
|
11
|
+
import { loadConfig } from "./config.js";
|
|
12
|
+
export { Backend, CancelWorkflowRunParams, ClaimWorkflowRunParams, CompleteStepAttemptParams, CompleteWorkflowRunParams, CreateStepAttemptParams, CreateWorkflowRunParams, DEFAULT_NAMESPACE_ID, DEFAULT_RETRY_POLICY, type DurationString, type DynamicRetryPolicy, ExtendWorkflowRunLeaseParams, FailStepAttemptParams, FailWorkflowRunParams, GetStepAttemptParams, GetWorkflowRunParams, type JsonValue, ListStepAttemptsParams, ListWorkflowRunsParams, type MergedDynamicRetryPolicy, type MergedRetryPolicy, type MergedStaticRetryPolicy, OpenWorkflow, OpenWorkflowOptions, PaginatedResponse, PaginationOptions, PauseWorkflowRunParams, ResumeWorkflowRunParams, type RetryDecision, type RetryDecisionFn, type RetryPolicy, RunnableWorkflow, type SchemaInput, type SchemaOutput, type SerializableRetryPolicy, SleepWorkflowRunParams, type StandardSchemaV1, type StaticRetryPolicy, type StepApi, type StepAttempt, type WorkflowFunction, WorkflowHandleOptions, type WorkflowRun, WorkflowRunHandle, WorkflowRunOptions, type WorkflowSpec, calculateRetryDelayMs, declareWorkflow, isDynamicRetryPolicy, isStaticRetryPolicy, loadConfig, mergeRetryPolicy, serializeRetryPolicy, shouldRetry, shouldRetryByPolicy };
|
package/dist/internal.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { DEFAULT_RETRY_POLICY, calculateRetryDelayMs, isDynamicRetryPolicy, isStaticRetryPolicy, mergeRetryPolicy, serializeRetryPolicy, shouldRetry, shouldRetryByPolicy } from "./core/retry.js";
|
|
2
|
+
import { loadConfig } from "./config.js";
|
|
3
|
+
import { DEFAULT_NAMESPACE_ID } from "./backend.js";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
export { DEFAULT_NAMESPACE_ID, DEFAULT_RETRY_POLICY, calculateRetryDelayMs, isDynamicRetryPolicy, isStaticRetryPolicy, loadConfig, mergeRetryPolicy, serializeRetryPolicy, shouldRetry, shouldRetryByPolicy };
|
package/dist/registry.d.ts
CHANGED
|
@@ -1,33 +1,39 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Workflow } from "./workflow.js";
|
|
2
|
+
|
|
3
|
+
//#region src/registry.d.ts
|
|
4
|
+
|
|
2
5
|
/**
|
|
3
6
|
* A registry for storing and retrieving workflows by name and version.
|
|
4
7
|
* Provides a centralized way to manage workflow registrations.
|
|
5
8
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
9
|
+
declare class WorkflowRegistry {
|
|
10
|
+
private readonly workflows;
|
|
11
|
+
/**
|
|
12
|
+
* Register a workflow in the registry.
|
|
13
|
+
* @param workflow - The workflow to register
|
|
14
|
+
* @throws {Error} If a workflow with the same name and version is already registered
|
|
15
|
+
*/
|
|
16
|
+
register(workflow: Workflow<unknown, unknown, unknown>): void;
|
|
17
|
+
/**
|
|
18
|
+
* Get a workflow from the registry by name and version.
|
|
19
|
+
* @param name - The workflow name
|
|
20
|
+
* @param version - The workflow version (null for unversioned)
|
|
21
|
+
* @returns The workflow if found, undefined otherwise
|
|
22
|
+
*/
|
|
23
|
+
get(name: string, version: string | null): Workflow<unknown, unknown, unknown> | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Get a workflow from the registry by name and version.
|
|
26
|
+
* @param name - The workflow name
|
|
27
|
+
* @param version - The workflow version (null for unversioned)
|
|
28
|
+
* @returns The workflow if found, undefined otherwise
|
|
29
|
+
*/
|
|
30
|
+
has(name: string, version: string | null): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Remove a workflow from the registry by name and version.
|
|
33
|
+
*/
|
|
34
|
+
remove(name: string, version: string | null): void;
|
|
32
35
|
}
|
|
36
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
37
|
+
//#endregion
|
|
38
|
+
export { WorkflowRegistry };
|
|
33
39
|
//# sourceMappingURL=registry.d.ts.map
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","
|
|
1
|
+
{"version":3,"file":"registry.d.ts","names":[],"sources":["../src/registry.ts"],"sourcesContent":[],"mappings":";;;;;;AAMA;;AAQqB,cARR,gBAAA,CAQQ;mBAiBwB,SAAA;EAAQ;;;;;qBAjBhC;;;;;;;6CAiBwB"}
|
package/dist/registry.js
CHANGED
|
@@ -1,54 +1,63 @@
|
|
|
1
|
+
//#region src/registry.ts
|
|
1
2
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
3
|
+
* A registry for storing and retrieving workflows by name and version.
|
|
4
|
+
* Provides a centralized way to manage workflow registrations.
|
|
5
|
+
*/
|
|
6
|
+
var WorkflowRegistry = class {
|
|
7
|
+
workflows = /* @__PURE__ */ new Map();
|
|
8
|
+
/**
|
|
9
|
+
* Register a workflow in the registry.
|
|
10
|
+
* @param workflow - The workflow to register
|
|
11
|
+
* @throws {Error} If a workflow with the same name and version is already registered
|
|
12
|
+
*/
|
|
13
|
+
register(workflow) {
|
|
14
|
+
const name = workflow.spec.name;
|
|
15
|
+
const version = workflow.spec.version ?? null;
|
|
16
|
+
const key = registryKey(name, version);
|
|
17
|
+
if (this.workflows.has(key)) {
|
|
18
|
+
const versionStr = version ? ` (version: ${version})` : "";
|
|
19
|
+
throw new Error(`Workflow "${name}"${versionStr} is already registered`);
|
|
20
|
+
}
|
|
21
|
+
this.workflows.set(key, workflow);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get a workflow from the registry by name and version.
|
|
25
|
+
* @param name - The workflow name
|
|
26
|
+
* @param version - The workflow version (null for unversioned)
|
|
27
|
+
* @returns The workflow if found, undefined otherwise
|
|
28
|
+
*/
|
|
29
|
+
get(name, version) {
|
|
30
|
+
const key = registryKey(name, version);
|
|
31
|
+
return this.workflows.get(key);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get a workflow from the registry by name and version.
|
|
35
|
+
* @param name - The workflow name
|
|
36
|
+
* @param version - The workflow version (null for unversioned)
|
|
37
|
+
* @returns The workflow if found, undefined otherwise
|
|
38
|
+
*/
|
|
39
|
+
has(name, version) {
|
|
40
|
+
const key = registryKey(name, version);
|
|
41
|
+
return this.workflows.has(key);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Remove a workflow from the registry by name and version.
|
|
45
|
+
*/
|
|
46
|
+
remove(name, version) {
|
|
47
|
+
const key = registryKey(name, version);
|
|
48
|
+
this.workflows.delete(key);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
45
51
|
/**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
* Build a registry key from name and version.
|
|
53
|
+
* @param name - Workflow name
|
|
54
|
+
* @param version - Workflow version (or null)
|
|
55
|
+
* @returns Registry key
|
|
56
|
+
*/
|
|
57
|
+
function registryKey(name, version) {
|
|
58
|
+
return version ? `${name}@${version}` : name;
|
|
52
59
|
}
|
|
53
60
|
|
|
61
|
+
//#endregion
|
|
62
|
+
export { WorkflowRegistry };
|
|
54
63
|
//# sourceMappingURL=registry.js.map
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/registry.ts"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"registry.js","names":[],"sources":["../src/registry.ts"],"sourcesContent":["import { type Workflow } from \"./workflow\";\n\n/**\n * A registry for storing and retrieving workflows by name and version.\n * Provides a centralized way to manage workflow registrations.\n */\nexport class WorkflowRegistry {\n private readonly workflows = new Map<string, Workflow<unknown, unknown, unknown>>();\n\n /**\n * Register a workflow in the registry.\n * @param workflow - The workflow to register\n * @throws {Error} If a workflow with the same name and version is already registered\n */\n register(workflow: Workflow<unknown, unknown, unknown>): void {\n const name = workflow.spec.name;\n const version = workflow.spec.version ?? null;\n const key = registryKey(name, version);\n if (this.workflows.has(key)) {\n const versionStr = version ? ` (version: ${version})` : \"\";\n throw new Error(`Workflow \"${name}\"${versionStr} is already registered`);\n }\n this.workflows.set(key, workflow);\n }\n\n /**\n * Get a workflow from the registry by name and version.\n * @param name - The workflow name\n * @param version - The workflow version (null for unversioned)\n * @returns The workflow if found, undefined otherwise\n */\n get(name: string, version: string | null): Workflow<unknown, unknown, unknown> | undefined {\n const key = registryKey(name, version);\n return this.workflows.get(key);\n }\n\n /**\n * Get a workflow from the registry by name and version.\n * @param name - The workflow name\n * @param version - The workflow version (null for unversioned)\n * @returns The workflow if found, undefined otherwise\n */\n has(name: string, version: string | null): boolean {\n const key = registryKey(name, version);\n return this.workflows.has(key);\n }\n\n /**\n * Remove a workflow from the registry by name and version.\n */\n remove(name: string, version: string | null): void {\n const key = registryKey(name, version);\n this.workflows.delete(key);\n }\n}\n\n/**\n * Build a registry key from name and version.\n * @param name - Workflow name\n * @param version - Workflow version (or null)\n * @returns Registry key\n */\nfunction registryKey(name: string, version: string | null): string {\n return version ? `${name}@${version}` : name;\n}\n"],"mappings":";;;;;AAMA,IAAa,mBAAb,MAA8B;CAC5B,AAAiB,4BAAY,IAAI,KAAkD;;;;;;CAOnF,SAAS,UAAqD;EAC5D,MAAM,OAAO,SAAS,KAAK;EAC3B,MAAM,UAAU,SAAS,KAAK,WAAW;EACzC,MAAM,MAAM,YAAY,MAAM,QAAQ;AACtC,MAAI,KAAK,UAAU,IAAI,IAAI,EAAE;GAC3B,MAAM,aAAa,UAAU,cAAc,QAAQ,KAAK;AACxD,SAAM,IAAI,MAAM,aAAa,KAAK,GAAG,WAAW,wBAAwB;;AAE1E,OAAK,UAAU,IAAI,KAAK,SAAS;;;;;;;;CASnC,IAAI,MAAc,SAAyE;EACzF,MAAM,MAAM,YAAY,MAAM,QAAQ;AACtC,SAAO,KAAK,UAAU,IAAI,IAAI;;;;;;;;CAShC,IAAI,MAAc,SAAiC;EACjD,MAAM,MAAM,YAAY,MAAM,QAAQ;AACtC,SAAO,KAAK,UAAU,IAAI,IAAI;;;;;CAMhC,OAAO,MAAc,SAA8B;EACjD,MAAM,MAAM,YAAY,MAAM,QAAQ;AACtC,OAAK,UAAU,OAAO,IAAI;;;;;;;;;AAU9B,SAAS,YAAY,MAAc,SAAgC;AACjE,QAAO,UAAU,GAAG,KAAK,GAAG,YAAY"}
|
package/dist/worker.d.ts
CHANGED
|
@@ -1,61 +1,68 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { Backend } from "./backend.js";
|
|
2
|
+
import { WorkflowRegistry } from "./registry.js";
|
|
3
|
+
|
|
4
|
+
//#region src/worker.d.ts
|
|
5
|
+
|
|
3
6
|
/**
|
|
4
7
|
* Configures how a Worker polls the backend, leases workflow runs, and
|
|
5
8
|
* registers workflows.
|
|
6
9
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
interface WorkerOptions {
|
|
11
|
+
backend: Backend;
|
|
12
|
+
registry: WorkflowRegistry;
|
|
13
|
+
concurrency?: number | undefined;
|
|
14
|
+
usePubSub?: boolean;
|
|
15
|
+
listenDelay?: number;
|
|
13
16
|
}
|
|
14
17
|
/**
|
|
15
18
|
* Runs workflows by polling the backend, dispatching runs across a concurrency
|
|
16
19
|
* pool, and heartbeating/extending leases.
|
|
17
20
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
21
|
+
declare class Worker {
|
|
22
|
+
private readonly backend;
|
|
23
|
+
private readonly workerIds;
|
|
24
|
+
private readonly registry;
|
|
25
|
+
private readonly activeExecutions;
|
|
26
|
+
private running;
|
|
27
|
+
private loopPromise;
|
|
28
|
+
private subscribed;
|
|
29
|
+
private usePubSub;
|
|
30
|
+
private listenDelay;
|
|
31
|
+
constructor(options: WorkerOptions);
|
|
32
|
+
/**
|
|
33
|
+
* Start the worker. It will begin polling for and executing workflows.
|
|
34
|
+
* @returns Promise resolved when started
|
|
35
|
+
*/
|
|
36
|
+
start(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Stop the worker gracefully. Waits for all active workflow runs to complete
|
|
39
|
+
* before returning.
|
|
40
|
+
* @returns Promise resolved when stopped
|
|
41
|
+
*/
|
|
42
|
+
stop(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Processes one round of work claims and execution. Exposed for testing.
|
|
45
|
+
* Returns the number of workflow runs claimed.
|
|
46
|
+
* @returns Number of workflow runs claimed
|
|
47
|
+
*/
|
|
48
|
+
tick(): Promise<number>;
|
|
49
|
+
/**
|
|
50
|
+
* Get the configured concurrency limit.
|
|
51
|
+
* @returns Concurrency limit
|
|
52
|
+
*/
|
|
53
|
+
private get concurrency();
|
|
54
|
+
private runLoop;
|
|
55
|
+
private claimAndProcessWorkflowRunInBackground;
|
|
56
|
+
/**
|
|
57
|
+
* Process a workflow execution, handling heartbeats, step execution, and
|
|
58
|
+
* marking success or failure.
|
|
59
|
+
* @param execution - Workflow execution
|
|
60
|
+
* @param workflow - Workflow to execute
|
|
61
|
+
* @returns Promise resolved when processing completes
|
|
62
|
+
*/
|
|
63
|
+
private processExecutionInBackground;
|
|
60
64
|
}
|
|
65
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
66
|
+
//#endregion
|
|
67
|
+
export { Worker, WorkerOptions };
|
|
61
68
|
//# sourceMappingURL=worker.d.ts.map
|
package/dist/worker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","
|
|
1
|
+
{"version":3,"file":"worker.d.ts","names":[],"sources":["../src/worker.ts"],"sourcesContent":[],"mappings":";;;;;;;AAgBA;;AACW,UADM,aAAA,CACN;SACC,EADD,OACC;EAAgB,QAAA,EAAhB,gBAAgB;EAUf,WAAM,CAAA,EAAA,MAAA,GAAA,SAAA;EAAA,SAAA,CAAA,EAAA,OAAA;aAYI,CAAA,EAAA,MAAA;;;;;;cAZV,MAAA;;;;;;;;;;uBAYU;;;;;WAgBN;;;;;;UAYD;;;;;;UAiBA"}
|