@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.
Files changed (215) hide show
  1. package/.oxlintrc.json +3 -0
  2. package/AGENTS.md +21 -0
  3. package/dist/backend.d.ts +126 -107
  4. package/dist/backend.d.ts.map +1 -1
  5. package/dist/backend.js +4 -1
  6. package/dist/backend.js.map +1 -1
  7. package/dist/client.d.ts +145 -132
  8. package/dist/client.d.ts.map +1 -1
  9. package/dist/client.js +219 -213
  10. package/dist/client.js.map +1 -1
  11. package/dist/config.d.ts +15 -8
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +22 -17
  14. package/dist/config.js.map +1 -1
  15. package/dist/core/duration.d.ts +5 -4
  16. package/dist/core/duration.d.ts.map +1 -1
  17. package/dist/core/duration.js +54 -59
  18. package/dist/core/duration.js.map +1 -1
  19. package/dist/core/error.d.ts +10 -7
  20. package/dist/core/error.d.ts.map +1 -1
  21. package/dist/core/error.js +21 -21
  22. package/dist/core/error.js.map +1 -1
  23. package/dist/core/json.d.ts +8 -3
  24. package/dist/core/json.d.ts.map +1 -1
  25. package/dist/core/result.d.ts +10 -14
  26. package/dist/core/result.d.ts.map +1 -1
  27. package/dist/core/result.js +21 -16
  28. package/dist/core/result.js.map +1 -1
  29. package/dist/core/retry.d.ts +37 -31
  30. package/dist/core/retry.d.ts.map +1 -1
  31. package/dist/core/retry.js +44 -51
  32. package/dist/core/retry.js.map +1 -1
  33. package/dist/core/schema.d.ts +57 -53
  34. package/dist/core/schema.d.ts.map +1 -1
  35. package/dist/core/step.d.ts +28 -78
  36. package/dist/core/step.d.ts.map +1 -1
  37. package/dist/core/step.js +53 -63
  38. package/dist/core/step.js.map +1 -1
  39. package/dist/core/workflow.d.ts +33 -61
  40. package/dist/core/workflow.d.ts.map +1 -1
  41. package/dist/core/workflow.js +31 -41
  42. package/dist/core/workflow.js.map +1 -1
  43. package/dist/database/backend.d.ts +53 -46
  44. package/dist/database/backend.d.ts.map +1 -1
  45. package/dist/database/backend.js +544 -577
  46. package/dist/database/backend.js.map +1 -1
  47. package/dist/database/base.js +48 -25
  48. package/dist/database/base.js.map +1 -1
  49. package/dist/database/migrations/20251212000000_0_init.d.ts +10 -0
  50. package/dist/database/migrations/20251212000000_0_init.d.ts.map +1 -0
  51. package/dist/database/migrations/20251212000000_0_init.js +8 -4
  52. package/dist/database/migrations/20251212000000_0_init.js.map +1 -1
  53. package/dist/database/migrations/20251212000000_1_tables.d.ts +10 -0
  54. package/dist/database/migrations/20251212000000_1_tables.d.ts.map +1 -0
  55. package/dist/database/migrations/20251212000000_1_tables.js +81 -83
  56. package/dist/database/migrations/20251212000000_1_tables.js.map +1 -1
  57. package/dist/database/migrations/20251212000000_2_fk.d.ts +10 -0
  58. package/dist/database/migrations/20251212000000_2_fk.d.ts.map +1 -0
  59. package/dist/database/migrations/20251212000000_2_fk.js +20 -43
  60. package/dist/database/migrations/20251212000000_2_fk.js.map +1 -1
  61. package/dist/database/migrations/20251212000000_3_indexes.d.ts +10 -0
  62. package/dist/database/migrations/20251212000000_3_indexes.d.ts.map +1 -0
  63. package/dist/database/migrations/20251212000000_3_indexes.js +88 -102
  64. package/dist/database/migrations/20251212000000_3_indexes.js.map +1 -1
  65. package/dist/database/pubsub.d.ts +7 -16
  66. package/dist/database/pubsub.d.ts.map +1 -1
  67. package/dist/database/pubsub.js +75 -73
  68. package/dist/database/pubsub.js.map +1 -1
  69. package/dist/execution.d.ts +20 -59
  70. package/dist/execution.d.ts.map +1 -1
  71. package/dist/execution.js +175 -188
  72. package/dist/execution.js.map +1 -1
  73. package/dist/index.d.ts +5 -8
  74. package/dist/index.js +5 -5
  75. package/dist/internal.d.ts +12 -13
  76. package/dist/internal.js +4 -4
  77. package/dist/registry.d.ts +33 -27
  78. package/dist/registry.d.ts.map +1 -1
  79. package/dist/registry.js +58 -49
  80. package/dist/registry.js.map +1 -1
  81. package/dist/worker.d.ts +57 -50
  82. package/dist/worker.d.ts.map +1 -1
  83. package/dist/worker.js +194 -199
  84. package/dist/worker.js.map +1 -1
  85. package/dist/workflow.d.ts +26 -30
  86. package/dist/workflow.d.ts.map +1 -1
  87. package/dist/workflow.js +20 -15
  88. package/dist/workflow.js.map +1 -1
  89. package/nodemon.json +1 -1
  90. package/package.json +17 -19
  91. package/src/backend.ts +25 -9
  92. package/src/chaos.test.ts +3 -1
  93. package/src/client.test.ts +2 -0
  94. package/src/client.ts +30 -8
  95. package/src/config.test.ts +1 -0
  96. package/src/config.ts +3 -2
  97. package/src/core/duration.test.ts +2 -1
  98. package/src/core/duration.ts +1 -1
  99. package/src/core/error.test.ts +1 -0
  100. package/src/core/error.ts +1 -1
  101. package/src/core/result.test.ts +1 -0
  102. package/src/core/retry.test.ts +3 -2
  103. package/src/core/retry.ts +1 -1
  104. package/src/core/schema.ts +2 -2
  105. package/src/core/step.test.ts +2 -1
  106. package/src/core/step.ts +4 -3
  107. package/src/core/workflow.test.ts +2 -1
  108. package/src/core/workflow.ts +4 -3
  109. package/src/database/backend.test.ts +1 -0
  110. package/src/database/backend.testsuite.ts +44 -40
  111. package/src/database/backend.ts +207 -25
  112. package/src/database/base.test.ts +41 -0
  113. package/src/database/base.ts +51 -2
  114. package/src/database/migrations/20251212000000_0_init.ts +2 -1
  115. package/src/database/migrations/20251212000000_1_tables.ts +2 -1
  116. package/src/database/migrations/20251212000000_2_fk.ts +2 -1
  117. package/src/database/migrations/20251212000000_3_indexes.ts +2 -1
  118. package/src/database/pubsub.test.ts +6 -3
  119. package/src/database/pubsub.ts +55 -33
  120. package/src/execution.test.ts +2 -0
  121. package/src/execution.ts +49 -10
  122. package/src/internal.ts +15 -15
  123. package/src/practices/01-remote-workflow.ts +1 -0
  124. package/src/registry.test.ts +1 -0
  125. package/src/registry.ts +1 -1
  126. package/src/testing/connection.ts +3 -1
  127. package/src/worker.test.ts +2 -0
  128. package/src/worker.ts +30 -9
  129. package/src/workflow.test.ts +1 -0
  130. package/src/workflow.ts +3 -3
  131. package/templates/openworkflow.config.ts +2 -1
  132. package/tsdown.config.ts +31 -0
  133. package/.swcrc +0 -17
  134. package/dist/chaos.test.d.ts +0 -2
  135. package/dist/chaos.test.d.ts.map +0 -1
  136. package/dist/chaos.test.js +0 -92
  137. package/dist/chaos.test.js.map +0 -1
  138. package/dist/client.test.d.ts +0 -2
  139. package/dist/client.test.d.ts.map +0 -1
  140. package/dist/client.test.js +0 -340
  141. package/dist/client.test.js.map +0 -1
  142. package/dist/config.test.d.ts +0 -2
  143. package/dist/config.test.d.ts.map +0 -1
  144. package/dist/config.test.js +0 -24
  145. package/dist/config.test.js.map +0 -1
  146. package/dist/core/duration.test.d.ts +0 -2
  147. package/dist/core/duration.test.d.ts.map +0 -1
  148. package/dist/core/duration.test.js +0 -265
  149. package/dist/core/duration.test.js.map +0 -1
  150. package/dist/core/error.test.d.ts +0 -2
  151. package/dist/core/error.test.d.ts.map +0 -1
  152. package/dist/core/error.test.js +0 -63
  153. package/dist/core/error.test.js.map +0 -1
  154. package/dist/core/json.js +0 -3
  155. package/dist/core/json.js.map +0 -1
  156. package/dist/core/result.test.d.ts +0 -2
  157. package/dist/core/result.test.d.ts.map +0 -1
  158. package/dist/core/result.test.js +0 -19
  159. package/dist/core/result.test.js.map +0 -1
  160. package/dist/core/retry.test.d.ts +0 -2
  161. package/dist/core/retry.test.d.ts.map +0 -1
  162. package/dist/core/retry.test.js +0 -198
  163. package/dist/core/retry.test.js.map +0 -1
  164. package/dist/core/schema.js +0 -4
  165. package/dist/core/schema.js.map +0 -1
  166. package/dist/core/step.test.d.ts +0 -2
  167. package/dist/core/step.test.d.ts.map +0 -1
  168. package/dist/core/step.test.js +0 -356
  169. package/dist/core/step.test.js.map +0 -1
  170. package/dist/core/workflow.test.d.ts +0 -2
  171. package/dist/core/workflow.test.d.ts.map +0 -1
  172. package/dist/core/workflow.test.js +0 -172
  173. package/dist/core/workflow.test.js.map +0 -1
  174. package/dist/database/backend.test.d.ts +0 -2
  175. package/dist/database/backend.test.d.ts.map +0 -1
  176. package/dist/database/backend.test.js +0 -19
  177. package/dist/database/backend.test.js.map +0 -1
  178. package/dist/database/backend.testsuite.d.ts +0 -20
  179. package/dist/database/backend.testsuite.d.ts.map +0 -1
  180. package/dist/database/backend.testsuite.js +0 -1280
  181. package/dist/database/backend.testsuite.js.map +0 -1
  182. package/dist/database/base.d.ts +0 -12
  183. package/dist/database/base.d.ts.map +0 -1
  184. package/dist/database/pubsub.test.d.ts +0 -2
  185. package/dist/database/pubsub.test.d.ts.map +0 -1
  186. package/dist/database/pubsub.test.js +0 -86
  187. package/dist/database/pubsub.test.js.map +0 -1
  188. package/dist/execution.test.d.ts +0 -2
  189. package/dist/execution.test.d.ts.map +0 -1
  190. package/dist/execution.test.js +0 -662
  191. package/dist/execution.test.js.map +0 -1
  192. package/dist/index.d.ts.map +0 -1
  193. package/dist/index.js.map +0 -1
  194. package/dist/internal.d.ts.map +0 -1
  195. package/dist/internal.js.map +0 -1
  196. package/dist/practices/01-remote-workflow.d.ts +0 -2
  197. package/dist/practices/01-remote-workflow.d.ts.map +0 -1
  198. package/dist/practices/01-remote-workflow.js +0 -70
  199. package/dist/practices/01-remote-workflow.js.map +0 -1
  200. package/dist/registry.test.d.ts +0 -2
  201. package/dist/registry.test.d.ts.map +0 -1
  202. package/dist/registry.test.js +0 -95
  203. package/dist/registry.test.js.map +0 -1
  204. package/dist/testing/connection.d.ts +0 -7
  205. package/dist/testing/connection.d.ts.map +0 -1
  206. package/dist/testing/connection.js +0 -39
  207. package/dist/testing/connection.js.map +0 -1
  208. package/dist/worker.test.d.ts +0 -2
  209. package/dist/worker.test.d.ts.map +0 -1
  210. package/dist/worker.test.js +0 -1164
  211. package/dist/worker.test.js.map +0 -1
  212. package/dist/workflow.test.d.ts +0 -2
  213. package/dist/workflow.test.d.ts.map +0 -1
  214. package/dist/workflow.test.js +0 -73
  215. package/dist/workflow.test.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- export { declareWorkflow, OpenWorkflow } from "./client.js";
2
- export { defineConfig } from "./config.js";
3
- export { BackendPostgres } from "./database/backend.js";
4
- export { Worker } from "./worker.js";
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
- //# sourceMappingURL=index.js.map
6
+ export { BackendPostgres, OpenWorkflow, Worker, declareWorkflow, defineConfig };
@@ -1,13 +1,12 @@
1
- export * from "./backend";
2
- export type * from "./client";
3
- export { loadConfig } from "./config";
4
- export type { DurationString } from "./core/duration";
5
- export type { JsonValue } from "./core/json";
6
- export { DEFAULT_RETRY_POLICY, mergeRetryPolicy, serializeRetryPolicy, shouldRetryByPolicy, calculateRetryDelayMs, shouldRetry, isDynamicRetryPolicy, isStaticRetryPolicy, } from "./core/retry";
7
- export type { RetryPolicy, StaticRetryPolicy, DynamicRetryPolicy, SerializableRetryPolicy, RetryDecision, RetryDecisionFn, MergedStaticRetryPolicy, MergedDynamicRetryPolicy, MergedRetryPolicy, } from "./core/retry";
8
- export type { StandardSchemaV1 } from "./core/schema";
9
- export type { StepAttempt } from "./core/step";
10
- export type { SchemaInput, SchemaOutput, WorkflowRun } from "./core/workflow";
11
- export type { StepApi, WorkflowFunction } from "./execution";
12
- export type { WorkflowSpec } from "./workflow";
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
- export * from "./backend.js";
2
- export { loadConfig } from "./config.js";
3
- export { DEFAULT_RETRY_POLICY, mergeRetryPolicy, serializeRetryPolicy, shouldRetryByPolicy, calculateRetryDelayMs, shouldRetry, isDynamicRetryPolicy, isStaticRetryPolicy } from "./core/retry.js";
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
- //# sourceMappingURL=internal.js.map
5
+ export { DEFAULT_NAMESPACE_ID, DEFAULT_RETRY_POLICY, calculateRetryDelayMs, isDynamicRetryPolicy, isStaticRetryPolicy, loadConfig, mergeRetryPolicy, serializeRetryPolicy, shouldRetry, shouldRetryByPolicy };
@@ -1,33 +1,39 @@
1
- import type { Workflow } from "./workflow";
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
- export declare class WorkflowRegistry {
7
- private readonly workflows;
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: Workflow<unknown, unknown, unknown>): void;
14
- /**
15
- * Get a workflow from the registry by name and version.
16
- * @param name - The workflow name
17
- * @param version - The workflow version (null for unversioned)
18
- * @returns The workflow if found, undefined otherwise
19
- */
20
- get(name: string, version: string | null): Workflow<unknown, unknown, unknown> | undefined;
21
- /**
22
- * Get a workflow from the registry by name and version.
23
- * @param name - The workflow name
24
- * @param version - The workflow version (null for unversioned)
25
- * @returns The workflow if found, undefined otherwise
26
- */
27
- has(name: string, version: string | null): boolean;
28
- /**
29
- * Remove a workflow from the registry by name and version.
30
- */
31
- remove(name: string, version: string | null): void;
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
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0D;IAEpF;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI;IAW7D;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS;IAK1F;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAKlD;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;CAInD"}
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
- * A registry for storing and retrieving workflows by name and version.
3
- * Provides a centralized way to manage workflow registrations.
4
- */ export class WorkflowRegistry {
5
- workflows = new Map();
6
- /**
7
- * Register a workflow in the registry.
8
- * @param workflow - The workflow to register
9
- * @throws {Error} If a workflow with the same name and version is already registered
10
- */ register(workflow) {
11
- const name = workflow.spec.name;
12
- const version = workflow.spec.version ?? null;
13
- const key = registryKey(name, version);
14
- if (this.workflows.has(key)) {
15
- const versionStr = version ? ` (version: ${version})` : "";
16
- throw new Error(`Workflow "${name}"${versionStr} is already registered`);
17
- }
18
- this.workflows.set(key, workflow);
19
- }
20
- /**
21
- * Get a workflow from the registry by name and version.
22
- * @param name - The workflow name
23
- * @param version - The workflow version (null for unversioned)
24
- * @returns The workflow if found, undefined otherwise
25
- */ get(name, version) {
26
- const key = registryKey(name, version);
27
- return this.workflows.get(key);
28
- }
29
- /**
30
- * Get a workflow from the registry by name and version.
31
- * @param name - The workflow name
32
- * @param version - The workflow version (null for unversioned)
33
- * @returns The workflow if found, undefined otherwise
34
- */ has(name, version) {
35
- const key = registryKey(name, version);
36
- return this.workflows.has(key);
37
- }
38
- /**
39
- * Remove a workflow from the registry by name and version.
40
- */ remove(name, version) {
41
- const key = registryKey(name, version);
42
- this.workflows.delete(key);
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
- * Build a registry key from name and version.
47
- * @param name - Workflow name
48
- * @param version - Workflow version (or null)
49
- * @returns Registry key
50
- */ function registryKey(name, version) {
51
- return version ? `${name}@${version}` : name;
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
@@ -1 +1 @@
1
- {"version":3,"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"],"names":["WorkflowRegistry","workflows","Map","register","workflow","name","spec","version","key","registryKey","has","versionStr","Error","set","get","remove","delete"],"mappings":"AAEA;;;CAGC,GACD,OAAO,MAAMA;IACMC,YAAY,IAAIC,MAAmD;IAEpF;;;;GAIC,GACDC,SAASC,QAA6C,EAAQ;QAC5D,MAAMC,OAAOD,SAASE,IAAI,CAACD,IAAI;QAC/B,MAAME,UAAUH,SAASE,IAAI,CAACC,OAAO,IAAI;QACzC,MAAMC,MAAMC,YAAYJ,MAAME;QAC9B,IAAI,IAAI,CAACN,SAAS,CAACS,GAAG,CAACF,MAAM;YAC3B,MAAMG,aAAaJ,UAAU,CAAC,WAAW,EAAEA,QAAQ,CAAC,CAAC,GAAG;YACxD,MAAM,IAAIK,MAAM,CAAC,UAAU,EAAEP,KAAK,CAAC,EAAEM,WAAW,sBAAsB,CAAC;QACzE;QACA,IAAI,CAACV,SAAS,CAACY,GAAG,CAACL,KAAKJ;IAC1B;IAEA;;;;;GAKC,GACDU,IAAIT,IAAY,EAAEE,OAAsB,EAAmD;QACzF,MAAMC,MAAMC,YAAYJ,MAAME;QAC9B,OAAO,IAAI,CAACN,SAAS,CAACa,GAAG,CAACN;IAC5B;IAEA;;;;;GAKC,GACDE,IAAIL,IAAY,EAAEE,OAAsB,EAAW;QACjD,MAAMC,MAAMC,YAAYJ,MAAME;QAC9B,OAAO,IAAI,CAACN,SAAS,CAACS,GAAG,CAACF;IAC5B;IAEA;;GAEC,GACDO,OAAOV,IAAY,EAAEE,OAAsB,EAAQ;QACjD,MAAMC,MAAMC,YAAYJ,MAAME;QAC9B,IAAI,CAACN,SAAS,CAACe,MAAM,CAACR;IACxB;AACF;AAEA;;;;;CAKC,GACD,SAASC,YAAYJ,IAAY,EAAEE,OAAsB;IACvD,OAAOA,UAAU,GAAGF,KAAK,CAAC,EAAEE,SAAS,GAAGF;AAC1C"}
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 type { Backend } from "./backend";
2
- import type { WorkflowRegistry } from "./registry";
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
- export interface WorkerOptions {
8
- backend: Backend;
9
- registry: WorkflowRegistry;
10
- concurrency?: number | undefined;
11
- usePubSub?: boolean;
12
- listenDelay?: number;
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
- export declare class Worker {
19
- private readonly backend;
20
- private readonly workerIds;
21
- private readonly registry;
22
- private readonly activeExecutions;
23
- private running;
24
- private loopPromise;
25
- private usePubSub;
26
- private listenDelay;
27
- constructor(options: WorkerOptions);
28
- /**
29
- * Start the worker. It will begin polling for and executing workflows.
30
- * @returns Promise resolved when started
31
- */
32
- start(): Promise<void>;
33
- /**
34
- * Stop the worker gracefully. Waits for all active workflow runs to complete
35
- * before returning.
36
- * @returns Promise resolved when stopped
37
- */
38
- stop(): Promise<void>;
39
- /**
40
- * Processes one round of work claims and execution. Exposed for testing.
41
- * Returns the number of workflow runs claimed.
42
- * @returns Number of workflow runs claimed
43
- */
44
- tick(): Promise<number>;
45
- /**
46
- * Get the configured concurrency limit.
47
- * @returns Concurrency limit
48
- */
49
- private get concurrency();
50
- private runLoop;
51
- private claimAndProcessWorkflowRunInBackground;
52
- /**
53
- * Process a workflow execution, handling heartbeats, step execution, and
54
- * marking success or failure.
55
- * @param execution - Workflow execution
56
- * @param workflow - Workflow to execute
57
- * @returns Promise resolved when processing completes
58
- */
59
- private processExecutionInBackground;
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
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAOnD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IACjE,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,EAAE,aAAa;IAYlC;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAgB7B;;;OAGG;IACH,OAAO,KAAK,WAAW,GAEtB;YAMa,OAAO;YA+BP,sCAAsC;IA2CpD;;;;;;OAMG;YACW,4BAA4B;CAyB3C"}
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"}