@sonamu-kit/tasks 0.1.3 → 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 -103
- 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 +220 -212
- 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 +42 -20
- package/dist/core/retry.d.ts.map +1 -1
- package/dist/core/retry.js +49 -20
- 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 -545
- 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 -57
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +175 -174
- 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 -12
- 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 -198
- package/dist/worker.js.map +1 -1
- package/dist/workflow.d.ts +26 -27
- 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 +18 -20
- package/src/backend.ts +28 -8
- package/src/chaos.test.ts +3 -1
- package/src/client.test.ts +2 -0
- package/src/client.ts +32 -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 +181 -11
- package/src/core/retry.ts +95 -19
- 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 +162 -39
- package/src/database/backend.ts +271 -35
- 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 +117 -0
- package/src/execution.ts +65 -10
- package/src/internal.ts +21 -1
- 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 +31 -9
- package/src/workflow.test.ts +1 -0
- package/src/workflow.ts +5 -2
- 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 -37
- 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 -1174
- 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 -558
- 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
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert";
|
|
2
|
-
import { randomUUID } from "node:crypto";
|
|
3
|
-
import { BackendPostgres, OpenWorkflow } from "../index.js";
|
|
4
|
-
import { KNEX_GLOBAL_CONFIG } from "../testing/connection.js";
|
|
5
|
-
let _backend = null;
|
|
6
|
-
async function getBackend() {
|
|
7
|
-
if (_backend !== null) {
|
|
8
|
-
return _backend;
|
|
9
|
-
}
|
|
10
|
-
_backend = new BackendPostgres(KNEX_GLOBAL_CONFIG, {
|
|
11
|
-
runMigrations: true,
|
|
12
|
-
namespaceId: randomUUID()
|
|
13
|
-
});
|
|
14
|
-
await _backend.initialize();
|
|
15
|
-
return _backend;
|
|
16
|
-
}
|
|
17
|
-
async function practice() {
|
|
18
|
-
const backend = await getBackend();
|
|
19
|
-
const ow = new OpenWorkflow({
|
|
20
|
-
backend
|
|
21
|
-
});
|
|
22
|
-
const sampleWorkflow = ow.defineWorkflow({
|
|
23
|
-
name: "sample-workflow"
|
|
24
|
-
}, async ({ step })=>{
|
|
25
|
-
const { result: result1 } = await step.run({
|
|
26
|
-
name: "test-1"
|
|
27
|
-
}, async ()=>{
|
|
28
|
-
return {
|
|
29
|
-
result: [
|
|
30
|
-
"Result from test-1"
|
|
31
|
-
]
|
|
32
|
-
};
|
|
33
|
-
});
|
|
34
|
-
await step.run({
|
|
35
|
-
name: "test-2"
|
|
36
|
-
}, async ()=>{
|
|
37
|
-
return await new Promise((resolve)=>setTimeout(resolve, 1000));
|
|
38
|
-
});
|
|
39
|
-
return await step.run({
|
|
40
|
-
name: "test-3"
|
|
41
|
-
}, async ()=>{
|
|
42
|
-
return {
|
|
43
|
-
result: [
|
|
44
|
-
...result1,
|
|
45
|
-
"Result from test-3"
|
|
46
|
-
]
|
|
47
|
-
};
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
// create a worker that will listen to the channel and process the workflow runs
|
|
51
|
-
const worker = ow.newWorker({
|
|
52
|
-
concurrency: 3
|
|
53
|
-
});
|
|
54
|
-
await worker.start();
|
|
55
|
-
const handle = await sampleWorkflow.run();
|
|
56
|
-
await new Promise((resolve)=>setTimeout(resolve, 3000));
|
|
57
|
-
await worker.tick();
|
|
58
|
-
const result = await handle.result();
|
|
59
|
-
assert.deepEqual(result, {
|
|
60
|
-
result: [
|
|
61
|
-
"Result from test-1",
|
|
62
|
-
"Result from test-3"
|
|
63
|
-
]
|
|
64
|
-
});
|
|
65
|
-
await worker.stop();
|
|
66
|
-
await backend.stop();
|
|
67
|
-
}
|
|
68
|
-
await practice();
|
|
69
|
-
|
|
70
|
-
//# sourceMappingURL=01-remote-workflow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/practices/01-remote-workflow.ts"],"sourcesContent":["import assert from \"node:assert\";\nimport { randomUUID } from \"node:crypto\";\nimport { BackendPostgres, OpenWorkflow } from \"../\";\nimport { KNEX_GLOBAL_CONFIG } from \"../testing/connection\";\n\nlet _backend: BackendPostgres | null = null;\n\nasync function getBackend(): Promise<BackendPostgres> {\n if (_backend !== null) {\n return _backend;\n }\n\n _backend = new BackendPostgres(KNEX_GLOBAL_CONFIG, {\n runMigrations: true,\n namespaceId: randomUUID(),\n });\n\n await _backend.initialize();\n return _backend;\n}\n\nasync function practice() {\n const backend = await getBackend();\n const ow = new OpenWorkflow({ backend });\n\n const sampleWorkflow = ow.defineWorkflow({ name: \"sample-workflow\" }, async ({ step }) => {\n const { result: result1 } = await step.run({ name: \"test-1\" }, async () => {\n return {\n result: [\"Result from test-1\"],\n };\n });\n\n await step.run({ name: \"test-2\" }, async () => {\n return await new Promise<void>((resolve) => setTimeout(resolve, 1000));\n });\n\n return await step.run({ name: \"test-3\" }, async () => {\n return {\n result: [...result1, \"Result from test-3\"],\n };\n });\n });\n\n // create a worker that will listen to the channel and process the workflow runs\n const worker = ow.newWorker({ concurrency: 3 });\n await worker.start();\n\n const handle = await sampleWorkflow.run();\n\n await new Promise((resolve) => setTimeout(resolve, 3000));\n await worker.tick();\n\n const result = await handle.result();\n assert.deepEqual(result, {\n result: [\"Result from test-1\", \"Result from test-3\"],\n });\n\n await worker.stop();\n await backend.stop();\n}\n\nawait practice();\n"],"names":["assert","randomUUID","BackendPostgres","OpenWorkflow","KNEX_GLOBAL_CONFIG","_backend","getBackend","runMigrations","namespaceId","initialize","practice","backend","ow","sampleWorkflow","defineWorkflow","name","step","result","result1","run","Promise","resolve","setTimeout","worker","newWorker","concurrency","start","handle","tick","deepEqual","stop"],"mappings":"AAAA,OAAOA,YAAY,cAAc;AACjC,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,eAAe,EAAEC,YAAY,QAAQ,cAAM;AACpD,SAASC,kBAAkB,QAAQ,2BAAwB;AAE3D,IAAIC,WAAmC;AAEvC,eAAeC;IACb,IAAID,aAAa,MAAM;QACrB,OAAOA;IACT;IAEAA,WAAW,IAAIH,gBAAgBE,oBAAoB;QACjDG,eAAe;QACfC,aAAaP;IACf;IAEA,MAAMI,SAASI,UAAU;IACzB,OAAOJ;AACT;AAEA,eAAeK;IACb,MAAMC,UAAU,MAAML;IACtB,MAAMM,KAAK,IAAIT,aAAa;QAAEQ;IAAQ;IAEtC,MAAME,iBAAiBD,GAAGE,cAAc,CAAC;QAAEC,MAAM;IAAkB,GAAG,OAAO,EAAEC,IAAI,EAAE;QACnF,MAAM,EAAEC,QAAQC,OAAO,EAAE,GAAG,MAAMF,KAAKG,GAAG,CAAC;YAAEJ,MAAM;QAAS,GAAG;YAC7D,OAAO;gBACLE,QAAQ;oBAAC;iBAAqB;YAChC;QACF;QAEA,MAAMD,KAAKG,GAAG,CAAC;YAAEJ,MAAM;QAAS,GAAG;YACjC,OAAO,MAAM,IAAIK,QAAc,CAACC,UAAYC,WAAWD,SAAS;QAClE;QAEA,OAAO,MAAML,KAAKG,GAAG,CAAC;YAAEJ,MAAM;QAAS,GAAG;YACxC,OAAO;gBACLE,QAAQ;uBAAIC;oBAAS;iBAAqB;YAC5C;QACF;IACF;IAEA,gFAAgF;IAChF,MAAMK,SAASX,GAAGY,SAAS,CAAC;QAAEC,aAAa;IAAE;IAC7C,MAAMF,OAAOG,KAAK;IAElB,MAAMC,SAAS,MAAMd,eAAeM,GAAG;IAEvC,MAAM,IAAIC,QAAQ,CAACC,UAAYC,WAAWD,SAAS;IACnD,MAAME,OAAOK,IAAI;IAEjB,MAAMX,SAAS,MAAMU,OAAOV,MAAM;IAClCjB,OAAO6B,SAAS,CAACZ,QAAQ;QACvBA,QAAQ;YAAC;YAAsB;SAAqB;IACtD;IAEA,MAAMM,OAAOO,IAAI;IACjB,MAAMnB,QAAQmB,IAAI;AACpB;AAEA,MAAMpB"}
|
package/dist/registry.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../src/registry.test.ts"],"names":[],"mappings":""}
|
package/dist/registry.test.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from "vitest";
|
|
2
|
-
import { WorkflowRegistry } from "./registry.js";
|
|
3
|
-
import { defineWorkflow } from "./workflow.js";
|
|
4
|
-
describe("WorkflowRegistry", ()=>{
|
|
5
|
-
describe("register", ()=>{
|
|
6
|
-
test("registers a workflow without version", ()=>{
|
|
7
|
-
const registry = new WorkflowRegistry();
|
|
8
|
-
const workflow = createMockWorkflow("my-workflow");
|
|
9
|
-
registry.register(workflow);
|
|
10
|
-
expect(registry.get("my-workflow", null)).toBe(workflow);
|
|
11
|
-
});
|
|
12
|
-
test("registers a workflow with version", ()=>{
|
|
13
|
-
const registry = new WorkflowRegistry();
|
|
14
|
-
const workflow = createMockWorkflow("my-workflow", "v1");
|
|
15
|
-
registry.register(workflow);
|
|
16
|
-
expect(registry.get("my-workflow", "v1")).toBe(workflow);
|
|
17
|
-
});
|
|
18
|
-
test("registers multiple versions of the same workflow", ()=>{
|
|
19
|
-
const registry = new WorkflowRegistry();
|
|
20
|
-
const v1 = createMockWorkflow("my-workflow", "v1");
|
|
21
|
-
const v2 = createMockWorkflow("my-workflow", "v2");
|
|
22
|
-
registry.register(v1);
|
|
23
|
-
registry.register(v2);
|
|
24
|
-
expect(registry.get("my-workflow", "v1")).toBe(v1);
|
|
25
|
-
expect(registry.get("my-workflow", "v2")).toBe(v2);
|
|
26
|
-
});
|
|
27
|
-
test("registers different workflows with same version", ()=>{
|
|
28
|
-
const registry = new WorkflowRegistry();
|
|
29
|
-
const workflow1 = createMockWorkflow("workflow-a", "v1");
|
|
30
|
-
const workflow2 = createMockWorkflow("workflow-b", "v1");
|
|
31
|
-
registry.register(workflow1);
|
|
32
|
-
registry.register(workflow2);
|
|
33
|
-
expect(registry.get("workflow-a", "v1")).toBe(workflow1);
|
|
34
|
-
expect(registry.get("workflow-b", "v1")).toBe(workflow2);
|
|
35
|
-
});
|
|
36
|
-
test("throws when registering duplicate unversioned workflow", ()=>{
|
|
37
|
-
const registry = new WorkflowRegistry();
|
|
38
|
-
registry.register(createMockWorkflow("my-workflow"));
|
|
39
|
-
expect(()=>{
|
|
40
|
-
registry.register(createMockWorkflow("my-workflow"));
|
|
41
|
-
}).toThrow('Workflow "my-workflow" is already registered');
|
|
42
|
-
});
|
|
43
|
-
test("throws when registering duplicate versioned workflow", ()=>{
|
|
44
|
-
const registry = new WorkflowRegistry();
|
|
45
|
-
registry.register(createMockWorkflow("my-workflow", "v1"));
|
|
46
|
-
expect(()=>{
|
|
47
|
-
registry.register(createMockWorkflow("my-workflow", "v1"));
|
|
48
|
-
}).toThrow('Workflow "my-workflow" (version: v1) is already registered');
|
|
49
|
-
});
|
|
50
|
-
test("allows same name with different versions", ()=>{
|
|
51
|
-
const registry = new WorkflowRegistry();
|
|
52
|
-
const versioned = createMockWorkflow("my-workflow", "v1");
|
|
53
|
-
const unversioned = createMockWorkflow("my-workflow");
|
|
54
|
-
registry.register(versioned);
|
|
55
|
-
registry.register(unversioned);
|
|
56
|
-
expect(registry.get("my-workflow", "v1")).toBe(versioned);
|
|
57
|
-
expect(registry.get("my-workflow", null)).toBe(unversioned);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
describe("get", ()=>{
|
|
61
|
-
test("returns undefined for non-existent workflow", ()=>{
|
|
62
|
-
const registry = new WorkflowRegistry();
|
|
63
|
-
expect(registry.get("non-existent", null)).toBeUndefined();
|
|
64
|
-
});
|
|
65
|
-
test("returns undefined for wrong version", ()=>{
|
|
66
|
-
const registry = new WorkflowRegistry();
|
|
67
|
-
registry.register(createMockWorkflow("my-workflow", "v1"));
|
|
68
|
-
expect(registry.get("my-workflow", "v2")).toBeUndefined();
|
|
69
|
-
expect(registry.get("my-workflow", null)).toBeUndefined();
|
|
70
|
-
});
|
|
71
|
-
test("returns undefined for versioned lookup on unversioned workflow", ()=>{
|
|
72
|
-
const registry = new WorkflowRegistry();
|
|
73
|
-
registry.register(createMockWorkflow("my-workflow"));
|
|
74
|
-
expect(registry.get("my-workflow", "v1")).toBeUndefined();
|
|
75
|
-
});
|
|
76
|
-
test("returns the registered workflow", ()=>{
|
|
77
|
-
const registry = new WorkflowRegistry();
|
|
78
|
-
const workflow = createMockWorkflow("my-workflow");
|
|
79
|
-
registry.register(workflow);
|
|
80
|
-
expect(registry.get("my-workflow", null)).toBe(workflow);
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
function createMockWorkflow(name, version) {
|
|
85
|
-
return defineWorkflow({
|
|
86
|
-
name,
|
|
87
|
-
...version && {
|
|
88
|
-
version
|
|
89
|
-
}
|
|
90
|
-
}, async ()=>{
|
|
91
|
-
// no-op
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
//# sourceMappingURL=registry.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/registry.test.ts"],"sourcesContent":["import { describe, expect, test } from \"vitest\";\nimport { WorkflowRegistry } from \"./registry\";\nimport { defineWorkflow } from \"./workflow\";\n\ndescribe(\"WorkflowRegistry\", () => {\n describe(\"register\", () => {\n test(\"registers a workflow without version\", () => {\n const registry = new WorkflowRegistry();\n const workflow = createMockWorkflow(\"my-workflow\");\n\n registry.register(workflow);\n\n expect(registry.get(\"my-workflow\", null)).toBe(workflow);\n });\n\n test(\"registers a workflow with version\", () => {\n const registry = new WorkflowRegistry();\n const workflow = createMockWorkflow(\"my-workflow\", \"v1\");\n\n registry.register(workflow);\n\n expect(registry.get(\"my-workflow\", \"v1\")).toBe(workflow);\n });\n\n test(\"registers multiple versions of the same workflow\", () => {\n const registry = new WorkflowRegistry();\n const v1 = createMockWorkflow(\"my-workflow\", \"v1\");\n const v2 = createMockWorkflow(\"my-workflow\", \"v2\");\n\n registry.register(v1);\n registry.register(v2);\n\n expect(registry.get(\"my-workflow\", \"v1\")).toBe(v1);\n expect(registry.get(\"my-workflow\", \"v2\")).toBe(v2);\n });\n\n test(\"registers different workflows with same version\", () => {\n const registry = new WorkflowRegistry();\n const workflow1 = createMockWorkflow(\"workflow-a\", \"v1\");\n const workflow2 = createMockWorkflow(\"workflow-b\", \"v1\");\n\n registry.register(workflow1);\n registry.register(workflow2);\n\n expect(registry.get(\"workflow-a\", \"v1\")).toBe(workflow1);\n expect(registry.get(\"workflow-b\", \"v1\")).toBe(workflow2);\n });\n\n test(\"throws when registering duplicate unversioned workflow\", () => {\n const registry = new WorkflowRegistry();\n registry.register(createMockWorkflow(\"my-workflow\"));\n\n expect(() => {\n registry.register(createMockWorkflow(\"my-workflow\"));\n }).toThrow('Workflow \"my-workflow\" is already registered');\n });\n\n test(\"throws when registering duplicate versioned workflow\", () => {\n const registry = new WorkflowRegistry();\n registry.register(createMockWorkflow(\"my-workflow\", \"v1\"));\n\n expect(() => {\n registry.register(createMockWorkflow(\"my-workflow\", \"v1\"));\n }).toThrow('Workflow \"my-workflow\" (version: v1) is already registered');\n });\n\n test(\"allows same name with different versions\", () => {\n const registry = new WorkflowRegistry();\n const versioned = createMockWorkflow(\"my-workflow\", \"v1\");\n const unversioned = createMockWorkflow(\"my-workflow\");\n\n registry.register(versioned);\n registry.register(unversioned);\n\n expect(registry.get(\"my-workflow\", \"v1\")).toBe(versioned);\n expect(registry.get(\"my-workflow\", null)).toBe(unversioned);\n });\n });\n\n describe(\"get\", () => {\n test(\"returns undefined for non-existent workflow\", () => {\n const registry = new WorkflowRegistry();\n\n expect(registry.get(\"non-existent\", null)).toBeUndefined();\n });\n\n test(\"returns undefined for wrong version\", () => {\n const registry = new WorkflowRegistry();\n registry.register(createMockWorkflow(\"my-workflow\", \"v1\"));\n\n expect(registry.get(\"my-workflow\", \"v2\")).toBeUndefined();\n expect(registry.get(\"my-workflow\", null)).toBeUndefined();\n });\n\n test(\"returns undefined for versioned lookup on unversioned workflow\", () => {\n const registry = new WorkflowRegistry();\n registry.register(createMockWorkflow(\"my-workflow\"));\n\n expect(registry.get(\"my-workflow\", \"v1\")).toBeUndefined();\n });\n\n test(\"returns the registered workflow\", () => {\n const registry = new WorkflowRegistry();\n const workflow = createMockWorkflow(\"my-workflow\");\n registry.register(workflow);\n\n expect(registry.get(\"my-workflow\", null)).toBe(workflow);\n });\n });\n});\n\nfunction createMockWorkflow(name: string, version?: string) {\n return defineWorkflow(\n {\n name,\n ...(version && { version }),\n },\n async () => {\n // no-op\n },\n );\n}\n"],"names":["describe","expect","test","WorkflowRegistry","defineWorkflow","registry","workflow","createMockWorkflow","register","get","toBe","v1","v2","workflow1","workflow2","toThrow","versioned","unversioned","toBeUndefined","name","version"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,IAAI,QAAQ,SAAS;AAChD,SAASC,gBAAgB,QAAQ,gBAAa;AAC9C,SAASC,cAAc,QAAQ,gBAAa;AAE5CJ,SAAS,oBAAoB;IAC3BA,SAAS,YAAY;QACnBE,KAAK,wCAAwC;YAC3C,MAAMG,WAAW,IAAIF;YACrB,MAAMG,WAAWC,mBAAmB;YAEpCF,SAASG,QAAQ,CAACF;YAElBL,OAAOI,SAASI,GAAG,CAAC,eAAe,OAAOC,IAAI,CAACJ;QACjD;QAEAJ,KAAK,qCAAqC;YACxC,MAAMG,WAAW,IAAIF;YACrB,MAAMG,WAAWC,mBAAmB,eAAe;YAEnDF,SAASG,QAAQ,CAACF;YAElBL,OAAOI,SAASI,GAAG,CAAC,eAAe,OAAOC,IAAI,CAACJ;QACjD;QAEAJ,KAAK,oDAAoD;YACvD,MAAMG,WAAW,IAAIF;YACrB,MAAMQ,KAAKJ,mBAAmB,eAAe;YAC7C,MAAMK,KAAKL,mBAAmB,eAAe;YAE7CF,SAASG,QAAQ,CAACG;YAClBN,SAASG,QAAQ,CAACI;YAElBX,OAAOI,SAASI,GAAG,CAAC,eAAe,OAAOC,IAAI,CAACC;YAC/CV,OAAOI,SAASI,GAAG,CAAC,eAAe,OAAOC,IAAI,CAACE;QACjD;QAEAV,KAAK,mDAAmD;YACtD,MAAMG,WAAW,IAAIF;YACrB,MAAMU,YAAYN,mBAAmB,cAAc;YACnD,MAAMO,YAAYP,mBAAmB,cAAc;YAEnDF,SAASG,QAAQ,CAACK;YAClBR,SAASG,QAAQ,CAACM;YAElBb,OAAOI,SAASI,GAAG,CAAC,cAAc,OAAOC,IAAI,CAACG;YAC9CZ,OAAOI,SAASI,GAAG,CAAC,cAAc,OAAOC,IAAI,CAACI;QAChD;QAEAZ,KAAK,0DAA0D;YAC7D,MAAMG,WAAW,IAAIF;YACrBE,SAASG,QAAQ,CAACD,mBAAmB;YAErCN,OAAO;gBACLI,SAASG,QAAQ,CAACD,mBAAmB;YACvC,GAAGQ,OAAO,CAAC;QACb;QAEAb,KAAK,wDAAwD;YAC3D,MAAMG,WAAW,IAAIF;YACrBE,SAASG,QAAQ,CAACD,mBAAmB,eAAe;YAEpDN,OAAO;gBACLI,SAASG,QAAQ,CAACD,mBAAmB,eAAe;YACtD,GAAGQ,OAAO,CAAC;QACb;QAEAb,KAAK,4CAA4C;YAC/C,MAAMG,WAAW,IAAIF;YACrB,MAAMa,YAAYT,mBAAmB,eAAe;YACpD,MAAMU,cAAcV,mBAAmB;YAEvCF,SAASG,QAAQ,CAACQ;YAClBX,SAASG,QAAQ,CAACS;YAElBhB,OAAOI,SAASI,GAAG,CAAC,eAAe,OAAOC,IAAI,CAACM;YAC/Cf,OAAOI,SAASI,GAAG,CAAC,eAAe,OAAOC,IAAI,CAACO;QACjD;IACF;IAEAjB,SAAS,OAAO;QACdE,KAAK,+CAA+C;YAClD,MAAMG,WAAW,IAAIF;YAErBF,OAAOI,SAASI,GAAG,CAAC,gBAAgB,OAAOS,aAAa;QAC1D;QAEAhB,KAAK,uCAAuC;YAC1C,MAAMG,WAAW,IAAIF;YACrBE,SAASG,QAAQ,CAACD,mBAAmB,eAAe;YAEpDN,OAAOI,SAASI,GAAG,CAAC,eAAe,OAAOS,aAAa;YACvDjB,OAAOI,SAASI,GAAG,CAAC,eAAe,OAAOS,aAAa;QACzD;QAEAhB,KAAK,kEAAkE;YACrE,MAAMG,WAAW,IAAIF;YACrBE,SAASG,QAAQ,CAACD,mBAAmB;YAErCN,OAAOI,SAASI,GAAG,CAAC,eAAe,OAAOS,aAAa;QACzD;QAEAhB,KAAK,mCAAmC;YACtC,MAAMG,WAAW,IAAIF;YACrB,MAAMG,WAAWC,mBAAmB;YACpCF,SAASG,QAAQ,CAACF;YAElBL,OAAOI,SAASI,GAAG,CAAC,eAAe,OAAOC,IAAI,CAACJ;QACjD;IACF;AACF;AAEA,SAASC,mBAAmBY,IAAY,EAAEC,OAAgB;IACxD,OAAOhB,eACL;QACEe;QACA,GAAIC,WAAW;YAAEA;QAAQ,CAAC;IAC5B,GACA;IACE,QAAQ;IACV;AAEJ"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Knex } from "knex";
|
|
2
|
-
import { BackendPostgres } from "../database/backend";
|
|
3
|
-
export declare const KNEX_GLOBAL_CONFIG: Knex.Config;
|
|
4
|
-
export declare function migrate(): Promise<void>;
|
|
5
|
-
export declare function createBackend(): Promise<BackendPostgres>;
|
|
6
|
-
export declare function stopBackend(): Promise<void>;
|
|
7
|
-
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/testing/connection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKtD,eAAO,MAAM,kBAAkB,EAAE,IAAI,CAAC,MAY5B,CAAC;AAEX,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7C;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CAY9D;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAMjD"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
|
-
import { BackendPostgres } from "../database/backend.js";
|
|
3
|
-
import { migrate as baseMigrate, DEFAULT_SCHEMA } from "../database/base.js";
|
|
4
|
-
let backend = null;
|
|
5
|
-
export const KNEX_GLOBAL_CONFIG = {
|
|
6
|
-
client: "pg",
|
|
7
|
-
connection: {
|
|
8
|
-
host: "127.0.0.1",
|
|
9
|
-
port: 5432,
|
|
10
|
-
user: "postgres",
|
|
11
|
-
password: "miomock123",
|
|
12
|
-
database: "postgres"
|
|
13
|
-
},
|
|
14
|
-
pool: {
|
|
15
|
-
max: 50
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
export async function migrate() {
|
|
19
|
-
await baseMigrate(KNEX_GLOBAL_CONFIG, DEFAULT_SCHEMA);
|
|
20
|
-
}
|
|
21
|
-
export async function createBackend() {
|
|
22
|
-
if (backend) {
|
|
23
|
-
return backend;
|
|
24
|
-
}
|
|
25
|
-
backend = new BackendPostgres(KNEX_GLOBAL_CONFIG, {
|
|
26
|
-
namespaceId: randomUUID(),
|
|
27
|
-
runMigrations: false
|
|
28
|
-
});
|
|
29
|
-
await backend.initialize();
|
|
30
|
-
return backend;
|
|
31
|
-
}
|
|
32
|
-
export async function stopBackend() {
|
|
33
|
-
if (backend) {
|
|
34
|
-
await backend.stop();
|
|
35
|
-
}
|
|
36
|
-
backend = null;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
//# sourceMappingURL=connection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/testing/connection.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { Knex } from \"knex\";\nimport { BackendPostgres } from \"../database/backend\";\nimport { migrate as baseMigrate, DEFAULT_SCHEMA } from \"../database/base\";\n\nlet backend: BackendPostgres | null = null;\n\nexport const KNEX_GLOBAL_CONFIG: Knex.Config = {\n client: \"pg\",\n connection: {\n host: \"127.0.0.1\",\n port: 5432,\n user: \"postgres\",\n password: \"miomock123\",\n database: \"postgres\",\n },\n pool: {\n max: 50,\n },\n} as const;\n\nexport async function migrate(): Promise<void> {\n await baseMigrate(KNEX_GLOBAL_CONFIG, DEFAULT_SCHEMA);\n}\n\nexport async function createBackend(): Promise<BackendPostgres> {\n if (backend) {\n return backend;\n }\n\n backend = new BackendPostgres(KNEX_GLOBAL_CONFIG, {\n namespaceId: randomUUID(),\n runMigrations: false,\n });\n await backend.initialize();\n\n return backend;\n}\n\nexport async function stopBackend(): Promise<void> {\n if (backend) {\n await backend.stop();\n }\n\n backend = null;\n}\n"],"names":["randomUUID","BackendPostgres","migrate","baseMigrate","DEFAULT_SCHEMA","backend","KNEX_GLOBAL_CONFIG","client","connection","host","port","user","password","database","pool","max","createBackend","namespaceId","runMigrations","initialize","stopBackend","stop"],"mappings":"AAAA,SAASA,UAAU,QAAQ,cAAc;AAEzC,SAASC,eAAe,QAAQ,yBAAsB;AACtD,SAASC,WAAWC,WAAW,EAAEC,cAAc,QAAQ,sBAAmB;AAE1E,IAAIC,UAAkC;AAEtC,OAAO,MAAMC,qBAAkC;IAC7CC,QAAQ;IACRC,YAAY;QACVC,MAAM;QACNC,MAAM;QACNC,MAAM;QACNC,UAAU;QACVC,UAAU;IACZ;IACAC,MAAM;QACJC,KAAK;IACP;AACF,EAAW;AAEX,OAAO,eAAeb;IACpB,MAAMC,YAAYG,oBAAoBF;AACxC;AAEA,OAAO,eAAeY;IACpB,IAAIX,SAAS;QACX,OAAOA;IACT;IAEAA,UAAU,IAAIJ,gBAAgBK,oBAAoB;QAChDW,aAAajB;QACbkB,eAAe;IACjB;IACA,MAAMb,QAAQc,UAAU;IAExB,OAAOd;AACT;AAEA,OAAO,eAAee;IACpB,IAAIf,SAAS;QACX,MAAMA,QAAQgB,IAAI;IACpB;IAEAhB,UAAU;AACZ"}
|
package/dist/worker.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker.test.d.ts","sourceRoot":"","sources":["../src/worker.test.ts"],"names":[],"mappings":""}
|