@t4h.framework/core 0.9.0 → 0.10.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/.ai/skills/framework-core/SKILL.md +9 -8
- package/.ai/skills/framework-workflow-creation/SKILL.md +32 -7
- package/.ai/skills/framework-workflow-testing/SKILL.md +9 -1
- package/CHANGELOG.md +117 -0
- package/README.md +13 -8
- package/dist/activities/StartWorkflowActivity.d.ts +5 -6
- package/dist/activities/StartWorkflowActivity.d.ts.map +1 -1
- package/dist/activities/StartWorkflowActivity.js +12 -11
- package/dist/activities/StartWorkflowActivity.js.map +1 -1
- package/dist/core.d.ts +1 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +1 -0
- package/dist/core.js.map +1 -1
- package/dist/exceptions/TimerNotAllowedException.d.ts +5 -0
- package/dist/exceptions/TimerNotAllowedException.d.ts.map +1 -0
- package/dist/exceptions/TimerNotAllowedException.js +9 -0
- package/dist/exceptions/TimerNotAllowedException.js.map +1 -0
- package/dist/models/AsyncActivityAwaitable.d.ts +1 -1
- package/dist/models/AsyncActivityAwaitable.d.ts.map +1 -1
- package/dist/models/AsyncActivityAwaitable.js +2 -0
- package/dist/models/AsyncActivityAwaitable.js.map +1 -1
- package/dist/models/History.d.ts +17 -2
- package/dist/models/History.d.ts.map +1 -1
- package/dist/models/History.js +26 -8
- package/dist/models/History.js.map +1 -1
- package/dist/models/Logger.d.ts.map +1 -1
- package/dist/models/Logger.js +2 -1
- package/dist/models/Logger.js.map +1 -1
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +6 -35
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestWorkflowEnvironment.d.ts.map +1 -1
- package/dist/testing/TestWorkflowEnvironment.js +6 -4
- package/dist/testing/TestWorkflowEnvironment.js.map +1 -1
- package/dist/testing/tools/resolve-activity.d.ts.map +1 -1
- package/dist/testing/tools/resolve-activity.js +4 -1
- package/dist/testing/tools/resolve-activity.js.map +1 -1
- package/dist/testing/tools/resolve-async-activity.d.ts +3 -2
- package/dist/testing/tools/resolve-async-activity.d.ts.map +1 -1
- package/dist/testing/tools/resolve-async-activity.js +17 -36
- package/dist/testing/tools/resolve-async-activity.js.map +1 -1
- package/dist/testing/tools/run-workflow-ticks.d.ts.map +1 -1
- package/dist/testing/tools/run-workflow-ticks.js +6 -0
- package/dist/testing/tools/run-workflow-ticks.js.map +1 -1
- package/dist/testing/tools/run-workflow.d.ts +4 -0
- package/dist/testing/tools/run-workflow.d.ts.map +1 -1
- package/dist/testing/tools/run-workflow.js +17 -7
- package/dist/testing/tools/run-workflow.js.map +1 -1
- package/dist/tools/Deterministic.d.ts +7 -0
- package/dist/tools/Deterministic.d.ts.map +1 -0
- package/dist/tools/Deterministic.js +107 -0
- package/dist/tools/Deterministic.js.map +1 -0
- package/dist/tools/Internals.d.ts +2 -0
- package/dist/tools/Internals.d.ts.map +1 -1
- package/dist/tools/Internals.js +5 -1
- package/dist/tools/Internals.js.map +1 -1
- package/dist/tools/clock.d.ts +3 -0
- package/dist/tools/clock.d.ts.map +1 -0
- package/dist/tools/clock.js +11 -0
- package/dist/tools/clock.js.map +1 -0
- package/dist/tools/random.d.ts +3 -0
- package/dist/tools/random.d.ts.map +1 -0
- package/dist/tools/random.js +29 -0
- package/dist/tools/random.js.map +1 -0
- package/package.json +1 -1
- package/dist/models/ContinueAsNew.d.ts +0 -24
- package/dist/models/ContinueAsNew.d.ts.map +0 -1
- package/dist/models/ContinueAsNew.js +0 -28
- package/dist/models/ContinueAsNew.js.map +0 -1
- package/dist/models/ExecutionContext.d.ts +0 -8
- package/dist/models/ExecutionContext.d.ts.map +0 -1
- package/dist/models/ExecutionContext.js +0 -22
- package/dist/models/ExecutionContext.js.map +0 -1
- package/dist/testing/ActivityTesting.d.ts +0 -25
- package/dist/testing/ActivityTesting.d.ts.map +0 -1
- package/dist/testing/ActivityTesting.js +0 -74
- package/dist/testing/ActivityTesting.js.map +0 -1
- package/dist/testing/NonDeterministicWorkflowError.d.ts +0 -4
- package/dist/testing/NonDeterministicWorkflowError.d.ts.map +0 -1
- package/dist/testing/NonDeterministicWorkflowError.js +0 -7
- package/dist/testing/NonDeterministicWorkflowError.js.map +0 -1
- package/dist/testing/StrictGuard.d.ts +0 -4
- package/dist/testing/StrictGuard.d.ts.map +0 -1
- package/dist/testing/StrictGuard.js +0 -26
- package/dist/testing/StrictGuard.js.map +0 -1
- package/dist/testing/WorkflowTesting.d.ts +0 -6
- package/dist/testing/WorkflowTesting.d.ts.map +0 -1
- package/dist/testing/WorkflowTesting.js +0 -7
- package/dist/testing/WorkflowTesting.js.map +0 -1
- package/dist/testing/create-mock-claim.d.ts +0 -11
- package/dist/testing/create-mock-claim.d.ts.map +0 -1
- package/dist/testing/create-mock-claim.js +0 -26
- package/dist/testing/create-mock-claim.js.map +0 -1
- package/dist/testing/create-mock-claims.d.ts +0 -13
- package/dist/testing/create-mock-claims.d.ts.map +0 -1
- package/dist/testing/create-mock-claims.js +0 -8
- package/dist/testing/create-mock-claims.js.map +0 -1
- package/dist/testing/create-test-env.d.ts +0 -10
- package/dist/testing/create-test-env.d.ts.map +0 -1
- package/dist/testing/create-test-env.js +0 -7
- package/dist/testing/create-test-env.js.map +0 -1
- package/dist/testing/mock-async.d.ts +0 -48
- package/dist/testing/mock-async.d.ts.map +0 -1
- package/dist/testing/mock-async.js +0 -58
- package/dist/testing/mock-async.js.map +0 -1
- package/dist/testing/outcomes.d.ts +0 -12
- package/dist/testing/outcomes.d.ts.map +0 -1
- package/dist/testing/outcomes.js +0 -10
- package/dist/testing/outcomes.js.map +0 -1
- package/dist/testing/run-workflow.d.ts +0 -32
- package/dist/testing/run-workflow.d.ts.map +0 -1
- package/dist/testing/run-workflow.js +0 -160
- package/dist/testing/run-workflow.js.map +0 -1
- package/dist/testing/tools/serializable-clone.d.ts +0 -21
- package/dist/testing/tools/serializable-clone.d.ts.map +0 -1
- package/dist/testing/tools/serializable-clone.js +0 -77
- package/dist/testing/tools/serializable-clone.js.map +0 -1
- package/dist/testing/types.d.ts +0 -19
- package/dist/testing/types.d.ts.map +0 -1
- package/dist/testing/types.js +0 -2
- package/dist/testing/types.js.map +0 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { createRequire, syncBuiltinESMExports } from 'node:module';
|
|
2
|
+
import { softNow } from './clock.js';
|
|
3
|
+
import { random, uuid } from './random.js';
|
|
4
|
+
import { TimerNotAllowedException } from '../exceptions/TimerNotAllowedException.js';
|
|
5
|
+
import { History } from '../models/History.js';
|
|
6
|
+
export var Deterministic;
|
|
7
|
+
(function (Deterministic) {
|
|
8
|
+
const require = createRequire(import.meta.url);
|
|
9
|
+
const OriginalDate = globalThis.Date;
|
|
10
|
+
const originalRandom = Math.random;
|
|
11
|
+
let installed = false;
|
|
12
|
+
let hostClock = () => undefined;
|
|
13
|
+
function realNow() {
|
|
14
|
+
return OriginalDate.now();
|
|
15
|
+
}
|
|
16
|
+
Deterministic.realNow = realNow;
|
|
17
|
+
function hostNow() {
|
|
18
|
+
return hostClock() ?? OriginalDate.now();
|
|
19
|
+
}
|
|
20
|
+
Deterministic.hostNow = hostNow;
|
|
21
|
+
function useHostClock(read) {
|
|
22
|
+
hostClock = read;
|
|
23
|
+
}
|
|
24
|
+
Deterministic.useHostClock = useHostClock;
|
|
25
|
+
function nextRandom() {
|
|
26
|
+
const store = History.peek();
|
|
27
|
+
if (!store)
|
|
28
|
+
return undefined;
|
|
29
|
+
return random(store.seed, store.randomCalls++);
|
|
30
|
+
}
|
|
31
|
+
function install() {
|
|
32
|
+
if (installed)
|
|
33
|
+
return;
|
|
34
|
+
installed = true;
|
|
35
|
+
patchDate();
|
|
36
|
+
patchRandom();
|
|
37
|
+
patchRandomUUID();
|
|
38
|
+
patchNodeRandomUUID();
|
|
39
|
+
patchTimers();
|
|
40
|
+
}
|
|
41
|
+
Deterministic.install = install;
|
|
42
|
+
function patchDate() {
|
|
43
|
+
class DeterministicDate extends OriginalDate {
|
|
44
|
+
constructor(...args) {
|
|
45
|
+
if (args.length === 0)
|
|
46
|
+
super(softNow() ?? hostNow());
|
|
47
|
+
else
|
|
48
|
+
super(...args);
|
|
49
|
+
}
|
|
50
|
+
static now() {
|
|
51
|
+
return softNow() ?? hostNow();
|
|
52
|
+
}
|
|
53
|
+
static [Symbol.hasInstance](value) {
|
|
54
|
+
return value instanceof OriginalDate;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
globalThis.Date = DeterministicDate;
|
|
58
|
+
}
|
|
59
|
+
function patchRandom() {
|
|
60
|
+
Math.random = () => nextRandom() ?? originalRandom();
|
|
61
|
+
}
|
|
62
|
+
function nextUUID() {
|
|
63
|
+
const store = History.peek();
|
|
64
|
+
if (!store)
|
|
65
|
+
return undefined;
|
|
66
|
+
return uuid(() => random(store.seed, store.randomCalls++));
|
|
67
|
+
}
|
|
68
|
+
function patchRandomUUID() {
|
|
69
|
+
const target = globalThis.crypto;
|
|
70
|
+
if (!target?.randomUUID)
|
|
71
|
+
return;
|
|
72
|
+
const original = target.randomUUID.bind(target);
|
|
73
|
+
target.randomUUID = () => nextUUID() ?? original();
|
|
74
|
+
}
|
|
75
|
+
function patchNodeRandomUUID() {
|
|
76
|
+
const nodeCrypto = require('node:crypto');
|
|
77
|
+
const original = nodeCrypto.randomUUID;
|
|
78
|
+
nodeCrypto.randomUUID = (options => nextUUID() ??
|
|
79
|
+
original(options));
|
|
80
|
+
syncBuiltinESMExports();
|
|
81
|
+
}
|
|
82
|
+
function patchTimers() {
|
|
83
|
+
globalThis.setTimeout = forbid('setTimeout', globalThis.setTimeout);
|
|
84
|
+
globalThis.setInterval = forbid('setInterval', globalThis.setInterval);
|
|
85
|
+
const timers = require('node:timers');
|
|
86
|
+
timers.setTimeout = forbid('setTimeout', timers.setTimeout);
|
|
87
|
+
timers.setInterval = forbid('setInterval', timers.setInterval);
|
|
88
|
+
const promises = require('node:timers/promises');
|
|
89
|
+
promises.setTimeout = forbid('setTimeout', promises.setTimeout);
|
|
90
|
+
promises.setInterval = forbid('setInterval', promises.setInterval);
|
|
91
|
+
syncBuiltinESMExports();
|
|
92
|
+
}
|
|
93
|
+
function forbid(name, original) {
|
|
94
|
+
const patched = function (...args) {
|
|
95
|
+
if (History.peek())
|
|
96
|
+
throw new TimerNotAllowedException(name);
|
|
97
|
+
return original.apply(this, args);
|
|
98
|
+
};
|
|
99
|
+
for (const key of Reflect.ownKeys(original)) {
|
|
100
|
+
if (key === 'length' || key === 'name' || key === 'prototype')
|
|
101
|
+
continue;
|
|
102
|
+
Object.defineProperty(patched, key, Object.getOwnPropertyDescriptor(original, key));
|
|
103
|
+
}
|
|
104
|
+
return patched;
|
|
105
|
+
}
|
|
106
|
+
})(Deterministic || (Deterministic = {}));
|
|
107
|
+
//# sourceMappingURL=Deterministic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Deterministic.js","sourceRoot":"","sources":["../../src/tools/Deterministic.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ import { type Log } from '../models/Logger.js';
|
|
|
6
6
|
import type { Workflow, WorkflowInput } from '../models/Workflow.js';
|
|
7
7
|
export declare namespace Internals {
|
|
8
8
|
interface WorkflowRunContext<TWorkflow extends Workflow<any, any>> {
|
|
9
|
+
id: string;
|
|
10
|
+
createdAt: number;
|
|
9
11
|
claims: readonly ClaimProvider<any>[];
|
|
10
12
|
history: readonly HistoryItem[];
|
|
11
13
|
env: Env.Entries;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Internals.d.ts","sourceRoot":"","sources":["../../src/tools/Internals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC1E,OAAO,EAAS,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAU,KAAK,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEpE,yBAAiB,SAAS,CAAC;IACzB,UAAiB,kBAAkB,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;QACtE,MAAM,EAAE,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAA;QACrC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;QAC/B,GAAG,EAAE,GAAG,CAAC,OAAO,CAAA;QAChB,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;QAC/B,IAAI,EAAE,GAAG,EAAE,CAAA;KACZ;IAED,SAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EACtD,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"Internals.d.ts","sourceRoot":"","sources":["../../src/tools/Internals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC1E,OAAO,EAAS,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAU,KAAK,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEpE,yBAAiB,SAAS,CAAC;IACzB,UAAiB,kBAAkB,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;QACtE,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAA;QACrC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;QAC/B,GAAG,EAAE,GAAG,CAAC,OAAO,CAAA;QAChB,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;QAC/B,IAAI,EAAE,GAAG,EAAE,CAAA;KACZ;IAED,SAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EACtD,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,OAc/B;IAED,UAAiB,kBAAkB;QACjC,EAAE,EAAE,MAAM,CAAA;QACV,MAAM,EAAE,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAA;QACrC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAA;KACjB;IAED,SAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,EAC/C,6BAA6B,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,EACzD,OAAO,EAAE,kBAAkB,EAC3B,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAYvB;CACF"}
|
package/dist/tools/Internals.js
CHANGED
|
@@ -5,7 +5,11 @@ import { Logger } from '../models/Logger.js';
|
|
|
5
5
|
export var Internals;
|
|
6
6
|
(function (Internals) {
|
|
7
7
|
function runWorkflow(workflow, context) {
|
|
8
|
-
return Env.run(context.env, () => Claim.run(context.claims, () => History.run(
|
|
8
|
+
return Env.run(context.env, () => Claim.run(context.claims, () => History.run({
|
|
9
|
+
history: context.history,
|
|
10
|
+
seed: context.id,
|
|
11
|
+
createdAt: context.createdAt,
|
|
12
|
+
}, () => Logger.run(context.logs, () => workflow.fn(context.input)))));
|
|
9
13
|
}
|
|
10
14
|
Internals.runWorkflow = runWorkflow;
|
|
11
15
|
function runActivity(activityOrActivityConstructor, context, fn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Internals.js","sourceRoot":"","sources":["../../src/tools/Internals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAsB,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,OAAO,EAAoB,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,MAAM,EAAY,MAAM,qBAAqB,CAAA;AAGtD,MAAM,KAAW,SAAS,
|
|
1
|
+
{"version":3,"file":"Internals.js","sourceRoot":"","sources":["../../src/tools/Internals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAsB,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,OAAO,EAAoB,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,MAAM,EAAY,MAAM,qBAAqB,CAAA;AAGtD,MAAM,KAAW,SAAS,CAmDzB;AAnDD,WAAiB,SAAS;IAWxB,SAAgB,WAAW,CACzB,QAAW,EACX,OAA8B;QAE9B,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAC/B,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAC7B,OAAO,CAAC,GAAG,CACT;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,EAAE;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,EACD,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CACjE,CACF,CACF,CAAA;IACH,CAAC;IAhBe,qBAAW,cAgB1B,CAAA;IAQD,SAAgB,WAAW,CACzB,6BAAyD,EACzD,OAA2B,EAC3B,EAAsB;QAEtB,MAAM,QAAQ,GACZ,OAAO,6BAA6B,KAAK,UAAU;YACjD,CAAC,CAAC,IAAI,6BAA6B,EAAE;YACrC,CAAC,CAAC,6BAA6B,CAAA;QAEnC,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAA;QAExB,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAC/B,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAC9C,CAAA;IACH,CAAC;IAfe,qBAAW,cAe1B,CAAA;AACH,CAAC,EAnDgB,SAAS,KAAT,SAAS,QAmDzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/tools/clock.ts"],"names":[],"mappings":"AAEA,wBAAgB,GAAG,IAAI,MAAM,CAO5B;AAED,wBAAgB,OAAO,IAAI,MAAM,GAAG,SAAS,CAE5C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { History } from '../models/History.js';
|
|
2
|
+
export function now() {
|
|
3
|
+
const value = softNow();
|
|
4
|
+
if (value === undefined)
|
|
5
|
+
throw new Error('Clock read outside of a workflow execution');
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
export function softNow() {
|
|
9
|
+
return History.peek()?.clock;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=clock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/tools/clock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,MAAM,UAAU,GAAG;IACjB,MAAM,KAAK,GAAG,OAAO,EAAE,CAAA;IAEvB,IAAI,KAAK,KAAK,SAAS;QACrB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAE/D,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,CAAA;AAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/tools/random.ts"],"names":[],"mappings":"AAWA,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAOzD;AAMD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,MAAM,GAAG,MAAM,CAe/C"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function hash(text) {
|
|
2
|
+
let value = 0x811c9dc5;
|
|
3
|
+
for (let index = 0; index < text.length; index++) {
|
|
4
|
+
value ^= text.charCodeAt(index);
|
|
5
|
+
value = Math.imul(value, 0x01000193);
|
|
6
|
+
}
|
|
7
|
+
return value >>> 0;
|
|
8
|
+
}
|
|
9
|
+
export function random(seed, call) {
|
|
10
|
+
let state = (hash(seed) + Math.imul(call + 1, 0x6d2b79f5)) >>> 0;
|
|
11
|
+
state = Math.imul(state ^ (state >>> 15), state | 1);
|
|
12
|
+
state ^= state + Math.imul(state ^ (state >>> 7), state | 61);
|
|
13
|
+
return ((state ^ (state >>> 14)) >>> 0) / 4294967296;
|
|
14
|
+
}
|
|
15
|
+
const hex = Array.from({ length: 256 }, (_, byte) => byte.toString(16).padStart(2, '0'));
|
|
16
|
+
export function uuid(next) {
|
|
17
|
+
const bytes = Array.from({ length: 16 }, () => Math.floor(next() * 256));
|
|
18
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
19
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
20
|
+
const text = bytes.map(byte => hex[byte]).join('');
|
|
21
|
+
return [
|
|
22
|
+
text.slice(0, 8),
|
|
23
|
+
text.slice(8, 12),
|
|
24
|
+
text.slice(12, 16),
|
|
25
|
+
text.slice(16, 20),
|
|
26
|
+
text.slice(20),
|
|
27
|
+
].join('-');
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=random.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../src/tools/random.ts"],"names":[],"mappings":"AAAA,SAAS,IAAI,CAAC,IAAY;IACxB,IAAI,KAAK,GAAG,UAAU,CAAA;IAEtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAC/B,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,KAAK,KAAK,CAAC,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,IAAY;IAC/C,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAA;IAEhE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;IACpD,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAA;IAE7D,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAA;AACtD,CAAC;AAED,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAClD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CACnC,CAAA;AAED,MAAM,UAAU,IAAI,CAAC,IAAkB;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;IAExE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IACpC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IAEpC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAElD,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;KACf,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@t4h.framework/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Core module for the T4H Framework",
|
|
5
5
|
"homepage": "https://github.com/tech4humans-brasil/framework/tree/main/packages/core",
|
|
6
6
|
"bugs": "https://github.com/tech4humans-brasil/framework/issues",
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { Serializable } from '../typings/Serializable.js';
|
|
2
|
-
import type { Workflow, WorkflowInput } from './Workflow.js';
|
|
3
|
-
/**
|
|
4
|
-
* Control-flow signal thrown by {@link continueAsNew}. Caught by the runtime
|
|
5
|
-
* loop, which terminates the current workflow run and starts a fresh run of
|
|
6
|
-
* `workflow` with `input` and an empty history. Not an `Error` subclass — it is
|
|
7
|
-
* a normal control-flow signal, like `PushActivity`/`PushWaitAsyncActivity`.
|
|
8
|
-
*/
|
|
9
|
-
export declare class ContinueAsNew {
|
|
10
|
-
readonly workflow: Workflow<any, any>;
|
|
11
|
-
readonly input: Serializable | undefined;
|
|
12
|
-
constructor(workflow: Workflow<any, any>, input: Serializable | undefined);
|
|
13
|
-
}
|
|
14
|
-
export type ContinueAsNewArgs<TWorkflow extends Workflow<any, any>> = WorkflowInput<TWorkflow> extends undefined ? [] : [input: WorkflowInput<TWorkflow>];
|
|
15
|
-
/**
|
|
16
|
-
* Ends the current workflow run and restarts `workflow` with a fresh, empty
|
|
17
|
-
* history, carrying `input` forward as the successor's input. Never returns —
|
|
18
|
-
* it throws a {@link ContinueAsNew} signal that unwinds to the runtime loop.
|
|
19
|
-
*
|
|
20
|
-
* Use it to keep a run's history bounded when iterating over many items: process
|
|
21
|
-
* a batch, then `continueAsNew` with a cursor pointing at the next batch.
|
|
22
|
-
*/
|
|
23
|
-
export declare function continueAsNew<TWorkflow extends Workflow<any, any>>(workflow: TWorkflow, ...args: ContinueAsNewArgs<TWorkflow>): Promise<never>;
|
|
24
|
-
//# sourceMappingURL=ContinueAsNew.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContinueAsNew.d.ts","sourceRoot":"","sources":["../../src/models/ContinueAsNew.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE5D;;;;;GAKG;AACH,qBAAa,aAAa;aAEN,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;aAC5B,KAAK,EAAE,YAAY,GAAG,SAAS;gBAD/B,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAC5B,KAAK,EAAE,YAAY,GAAG,SAAS;CAElD;AAED,MAAM,MAAM,iBAAiB,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAChE,aAAa,CAAC,SAAS,CAAC,SAAS,SAAS,GACtC,EAAE,GACF,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;AAEvC;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAChE,QAAQ,EAAE,SAAS,EACnB,GAAG,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,GACpC,OAAO,CAAC,KAAK,CAAC,CAKhB"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Control-flow signal thrown by {@link continueAsNew}. Caught by the runtime
|
|
3
|
-
* loop, which terminates the current workflow run and starts a fresh run of
|
|
4
|
-
* `workflow` with `input` and an empty history. Not an `Error` subclass — it is
|
|
5
|
-
* a normal control-flow signal, like `PushActivity`/`PushWaitAsyncActivity`.
|
|
6
|
-
*/
|
|
7
|
-
export class ContinueAsNew {
|
|
8
|
-
workflow;
|
|
9
|
-
input;
|
|
10
|
-
constructor(workflow, input) {
|
|
11
|
-
this.workflow = workflow;
|
|
12
|
-
this.input = input;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Ends the current workflow run and restarts `workflow` with a fresh, empty
|
|
17
|
-
* history, carrying `input` forward as the successor's input. Never returns —
|
|
18
|
-
* it throws a {@link ContinueAsNew} signal that unwinds to the runtime loop.
|
|
19
|
-
*
|
|
20
|
-
* Use it to keep a run's history bounded when iterating over many items: process
|
|
21
|
-
* a batch, then `continueAsNew` with a cursor pointing at the next batch.
|
|
22
|
-
*/
|
|
23
|
-
export function continueAsNew(workflow, ...args) {
|
|
24
|
-
if (!workflow.id)
|
|
25
|
-
throw new TypeError('Could not continue-as-new a workflow without an id');
|
|
26
|
-
throw new ContinueAsNew(workflow, args[0]);
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=ContinueAsNew.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ContinueAsNew.js","sourceRoot":"","sources":["../../src/models/ContinueAsNew.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IAEN;IACA;IAFlB,YACkB,QAA4B,EAC5B,KAA+B;QAD/B,aAAQ,GAAR,QAAQ,CAAoB;QAC5B,UAAK,GAAL,KAAK,CAA0B;IAC9C,CAAC;CACL;AAOD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAmB,EACnB,GAAG,IAAkC;IAErC,IAAI,CAAC,QAAQ,CAAC,EAAE;QACd,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAA;IAE3E,MAAM,IAAI,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAA6B,CAAC,CAAA;AACxE,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export type ExecutionLayer = 'workflow' | 'activity';
|
|
2
|
-
export declare namespace ExecutionContext {
|
|
3
|
-
function run<T>(layer: ExecutionLayer, fn: () => T): T;
|
|
4
|
-
function getLayer(): ExecutionLayer | undefined;
|
|
5
|
-
function isWorkflow(): boolean;
|
|
6
|
-
function isActivity(): boolean;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=ExecutionContext.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionContext.d.ts","sourceRoot":"","sources":["../../src/models/ExecutionContext.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,CAAA;AAQpD,yBAAiB,gBAAgB,CAAC;IAChC,SAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE5D;IAED,SAAgB,QAAQ,IAAI,cAAc,GAAG,SAAS,CAErD;IAED,SAAgB,UAAU,IAAI,OAAO,CAEpC;IAED,SAAgB,UAAU,IAAI,OAAO,CAEpC;CACF"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
-
const storage = new AsyncLocalStorage();
|
|
3
|
-
export var ExecutionContext;
|
|
4
|
-
(function (ExecutionContext) {
|
|
5
|
-
function run(layer, fn) {
|
|
6
|
-
return storage.run({ layer }, fn);
|
|
7
|
-
}
|
|
8
|
-
ExecutionContext.run = run;
|
|
9
|
-
function getLayer() {
|
|
10
|
-
return storage.getStore()?.layer;
|
|
11
|
-
}
|
|
12
|
-
ExecutionContext.getLayer = getLayer;
|
|
13
|
-
function isWorkflow() {
|
|
14
|
-
return storage.getStore()?.layer === 'workflow';
|
|
15
|
-
}
|
|
16
|
-
ExecutionContext.isWorkflow = isWorkflow;
|
|
17
|
-
function isActivity() {
|
|
18
|
-
return storage.getStore()?.layer === 'activity';
|
|
19
|
-
}
|
|
20
|
-
ExecutionContext.isActivity = isActivity;
|
|
21
|
-
})(ExecutionContext || (ExecutionContext = {}));
|
|
22
|
-
//# sourceMappingURL=ExecutionContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionContext.js","sourceRoot":"","sources":["../../src/models/ExecutionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAQpD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAyB,CAAA;AAE9D,MAAM,KAAW,gBAAgB,CAgBhC;AAhBD,WAAiB,gBAAgB;IAC/B,SAAgB,GAAG,CAAI,KAAqB,EAAE,EAAW;QACvD,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;IACnC,CAAC;IAFe,oBAAG,MAElB,CAAA;IAED,SAAgB,QAAQ;QACtB,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAA;IAClC,CAAC;IAFe,yBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU;QACxB,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,KAAK,UAAU,CAAA;IACjD,CAAC;IAFe,2BAAU,aAEzB,CAAA;IAED,SAAgB,UAAU;QACxB,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,KAAK,UAAU,CAAA;IACjD,CAAC;IAFe,2BAAU,aAEzB,CAAA;AACH,CAAC,EAhBgB,gBAAgB,KAAhB,gBAAgB,QAgBhC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { AsyncActivityOutcome } from './types.js';
|
|
2
|
-
import type { Activity } from '../models/Activity.js';
|
|
3
|
-
import type { ClaimProvider } from '../models/Claim.js';
|
|
4
|
-
import type { Env } from '../models/Env.js';
|
|
5
|
-
import type { Log } from '../models/Logger.js';
|
|
6
|
-
export interface ActivityTestingAsyncOptions {
|
|
7
|
-
/** Run the real advance handler when bootstrap returns pending. */
|
|
8
|
-
advance?: unknown;
|
|
9
|
-
/** Simulate runtime resolution without calling advance. */
|
|
10
|
-
outcome?: AsyncActivityOutcome;
|
|
11
|
-
}
|
|
12
|
-
export interface ActivityTestingOptions {
|
|
13
|
-
claims?: readonly ClaimProvider<any>[];
|
|
14
|
-
env?: Env.Entries;
|
|
15
|
-
logs?: Log[];
|
|
16
|
-
async?: ActivityTestingAsyncOptions;
|
|
17
|
-
}
|
|
18
|
-
export declare class ActivityTesting {
|
|
19
|
-
static run<T extends Activity>(ActivityClass: Activity.Constructor<T>, args?: Activity.Args<T>, options?: ActivityTestingOptions): Promise<Activity.Output<T>>;
|
|
20
|
-
}
|
|
21
|
-
export declare class AsyncActivityRejectedError extends Error {
|
|
22
|
-
readonly reason: unknown;
|
|
23
|
-
constructor(reason: unknown);
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=ActivityTesting.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityTesting.d.ts","sourceRoot":"","sources":["../../src/testing/ActivityTesting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAUrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAI9C,MAAM,WAAW,2BAA2B;IAC1C,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,oBAAoB,CAAA;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAA;IACtC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACZ,KAAK,CAAC,EAAE,2BAA2B,CAAA;CACpC;AAED,qBAAa,eAAe;WACN,GAAG,CAAC,CAAC,SAAS,QAAQ,EACxC,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EACtC,IAAI,GAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAqC,EAC1D,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CA6B/B;AAyFD,qBAAa,0BAA2B,SAAQ,KAAK;aACvB,MAAM,EAAE,OAAO;gBAAf,MAAM,EAAE,OAAO;CAQ5C"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { AsyncActivity, } from '../models/AsyncActivity.js';
|
|
2
|
-
import { AsyncActivityResultFulfilled, AsyncActivityResultPending, AsyncActivityResultRejected, } from '../models/AsyncActivityAdvanceResult.js';
|
|
3
|
-
import { SyncActivity } from '../models/SyncActivity.js';
|
|
4
|
-
import { Internals } from '../tools/Internals.js';
|
|
5
|
-
export class ActivityTesting {
|
|
6
|
-
static async run(ActivityClass, args = [], options = {}) {
|
|
7
|
-
const activity = new ActivityClass();
|
|
8
|
-
const context = {
|
|
9
|
-
claims: options.claims ?? [],
|
|
10
|
-
env: options.env ?? {},
|
|
11
|
-
};
|
|
12
|
-
const input = await activity.toInput(...args);
|
|
13
|
-
if (activity instanceof SyncActivity) {
|
|
14
|
-
const output = await Internals.runActivity(activity, context, instance => instance.run(input));
|
|
15
|
-
return activity.toOutput(output, ...args);
|
|
16
|
-
}
|
|
17
|
-
if (activity instanceof AsyncActivity) {
|
|
18
|
-
return resolveAsyncActivity(activity, input, args, context, options);
|
|
19
|
-
}
|
|
20
|
-
throw new Error(`Unknown activity type: ${ActivityClass.name}`);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
async function resolveAsyncActivity(activity, input, args, context, options) {
|
|
24
|
-
const bootstrap = await Internals.runActivity(activity, context, instance => instance.bootstrap(input));
|
|
25
|
-
if (bootstrap instanceof AsyncActivityResultFulfilled)
|
|
26
|
-
return activity.toOutput(bootstrap.payload, ...args);
|
|
27
|
-
if (bootstrap instanceof AsyncActivityResultRejected)
|
|
28
|
-
throw new AsyncActivityRejectedError(bootstrap.payload);
|
|
29
|
-
if (!(bootstrap instanceof AsyncActivityResultPending))
|
|
30
|
-
throw new Error(`Unknown async bootstrap result for "${activity.constructor.name}"`);
|
|
31
|
-
const asyncOptions = options.async;
|
|
32
|
-
if (asyncOptions && 'advance' in asyncOptions) {
|
|
33
|
-
const result = await Internals.runActivity(activity, context, instance => instance.advance(asyncOptions.advance, bootstrap));
|
|
34
|
-
if (result instanceof AsyncActivityResultFulfilled)
|
|
35
|
-
return activity.toOutput(result.payload, ...args);
|
|
36
|
-
if (result instanceof AsyncActivityResultRejected)
|
|
37
|
-
throw new AsyncActivityRejectedError(result.payload);
|
|
38
|
-
throw new Error(`Async activity "${activity.constructor.name}" stayed pending after advance`);
|
|
39
|
-
}
|
|
40
|
-
if (asyncOptions?.outcome) {
|
|
41
|
-
switch (asyncOptions.outcome.status) {
|
|
42
|
-
case 'fulfilled':
|
|
43
|
-
return activity.toOutput(asyncOptions.outcome.output, ...args);
|
|
44
|
-
case 'rejected':
|
|
45
|
-
throw new AsyncActivityRejectedError(asyncOptions.outcome.reason);
|
|
46
|
-
case 'timeout': {
|
|
47
|
-
const onTimeout = activity.onTimeout?.bind(activity);
|
|
48
|
-
if (!onTimeout)
|
|
49
|
-
throw new Error(`Async activity "${activity.constructor.name}" timed out but defines no onTimeout handler`);
|
|
50
|
-
const result = await Internals.runActivity(activity, context, () => onTimeout(bootstrap));
|
|
51
|
-
if (result instanceof AsyncActivityResultFulfilled)
|
|
52
|
-
return activity.toOutput(result.payload, ...args);
|
|
53
|
-
if (result instanceof AsyncActivityResultRejected)
|
|
54
|
-
throw new AsyncActivityRejectedError(result.payload);
|
|
55
|
-
throw new Error(`Async activity "${activity.constructor.name}" stayed pending after onTimeout`);
|
|
56
|
-
}
|
|
57
|
-
default:
|
|
58
|
-
throw new Error(`Unknown async activity outcome for "${activity.constructor.name}"`);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
throw new Error(`Async activity "${activity.constructor.name}" is pending. ` +
|
|
62
|
-
`Provide options.async.advance or options.async.outcome in ActivityTesting.run().`);
|
|
63
|
-
}
|
|
64
|
-
export class AsyncActivityRejectedError extends Error {
|
|
65
|
-
reason;
|
|
66
|
-
constructor(reason) {
|
|
67
|
-
super(reason instanceof Error
|
|
68
|
-
? reason.message
|
|
69
|
-
: `Async activity rejected: ${JSON.stringify(reason)}`);
|
|
70
|
-
this.reason = reason;
|
|
71
|
-
this.name = 'AsyncActivityRejectedError';
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=ActivityTesting.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityTesting.js","sourceRoot":"","sources":["../../src/testing/ActivityTesting.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NonDeterministicWorkflowError.d.ts","sourceRoot":"","sources":["../../src/testing/NonDeterministicWorkflowError.ts"],"names":[],"mappings":"AAAA,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,OAAO,EAAE,MAAM;CAI5B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NonDeterministicWorkflowError.js","sourceRoot":"","sources":["../../src/testing/NonDeterministicWorkflowError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAA;IAC7C,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StrictGuard.d.ts","sourceRoot":"","sources":["../../src/testing/StrictGuard.ts"],"names":[],"mappings":"AAMA,qBAAa,WAAW;WACR,OAAO,IAAI,MAAM,IAAI;CA6BpC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { ExecutionContext } from '../models/ExecutionContext.js';
|
|
2
|
-
import { NonDeterministicWorkflowError } from './NonDeterministicWorkflowError.js';
|
|
3
|
-
const WORKFLOW_SIDE_EFFECT_MESSAGE = 'Side effects must go through History.reconciler and activities — not directly from workflow code.';
|
|
4
|
-
export class StrictGuard {
|
|
5
|
-
static install() {
|
|
6
|
-
const originalRandom = Math.random;
|
|
7
|
-
const originalFetch = globalThis.fetch;
|
|
8
|
-
Math.random = () => {
|
|
9
|
-
if (ExecutionContext.isWorkflow())
|
|
10
|
-
throw new NonDeterministicWorkflowError(`Math.random() is not allowed in workflow code. ${WORKFLOW_SIDE_EFFECT_MESSAGE}`);
|
|
11
|
-
return originalRandom.call(Math);
|
|
12
|
-
};
|
|
13
|
-
if (originalFetch)
|
|
14
|
-
globalThis.fetch = ((...args) => {
|
|
15
|
-
if (ExecutionContext.isWorkflow())
|
|
16
|
-
throw new NonDeterministicWorkflowError(`fetch() is not allowed in workflow code. ${WORKFLOW_SIDE_EFFECT_MESSAGE}`);
|
|
17
|
-
return originalFetch(...args);
|
|
18
|
-
});
|
|
19
|
-
return () => {
|
|
20
|
-
Math.random = originalRandom;
|
|
21
|
-
if (originalFetch)
|
|
22
|
-
globalThis.fetch = originalFetch;
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=StrictGuard.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StrictGuard.js","sourceRoot":"","sources":["../../src/testing/StrictGuard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAA;AAElF,MAAM,4BAA4B,GAChC,mGAAmG,CAAA;AAErG,MAAM,OAAO,WAAW;IACf,MAAM,CAAC,OAAO;QACnB,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAA;QAClC,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAA;QAEtC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;YACjB,IAAI,gBAAgB,CAAC,UAAU,EAAE;gBAC/B,MAAM,IAAI,6BAA6B,CACrC,kDAAkD,4BAA4B,EAAE,CACjF,CAAA;YAEH,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC,CAAA;QAED,IAAI,aAAa;YACf,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAA8B,EAAE,EAAE;gBACxD,IAAI,gBAAgB,CAAC,UAAU,EAAE;oBAC/B,MAAM,IAAI,6BAA6B,CACrC,4CAA4C,4BAA4B,EAAE,CAC3E,CAAA;gBAEH,OAAO,aAAa,CAAC,GAAG,IAAI,CAAC,CAAA;YAC/B,CAAC,CAAiB,CAAA;QAEpB,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,MAAM,GAAG,cAAc,CAAA;YAE5B,IAAI,aAAa;gBAAE,UAAU,CAAC,KAAK,GAAG,aAAa,CAAA;QACrD,CAAC,CAAA;IACH,CAAC;CACF"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { type RunWorkflowOptions } from './run-workflow.js';
|
|
2
|
-
import type { Workflow, WorkflowInput } from '../models/Workflow.js';
|
|
3
|
-
export declare class WorkflowTesting {
|
|
4
|
-
static run<T extends Workflow<any, any>>(workflow: T, input?: WorkflowInput<T>, options?: RunWorkflowOptions): Promise<unknown>;
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=WorkflowTesting.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowTesting.d.ts","sourceRoot":"","sources":["../../src/testing/WorkflowTesting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEpE,qBAAa,eAAe;WACN,GAAG,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAClD,QAAQ,EAAE,CAAC,EACX,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EACxB,OAAO,CAAC,EAAE,kBAAkB;CAI/B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowTesting.js","sourceRoot":"","sources":["../../src/testing/WorkflowTesting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,mBAAmB,CAAA;AAGxE,MAAM,OAAO,eAAe;IACnB,MAAM,CAAC,KAAK,CAAC,GAAG,CACrB,QAAW,EACX,KAAwB,EACxB,OAA4B;QAE5B,OAAO,WAAW,CAAC,QAAQ,EAAE,KAAyB,EAAE,OAAO,CAAC,CAAA;IAClE,CAAC;CACF"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ClaimProvider } from '../../models/Claim.js'
|
|
2
|
-
import type { ClaimConstructor } from '../types.js'
|
|
3
|
-
export declare function createMockClaim<T extends ClaimConstructor>(
|
|
4
|
-
ClaimClass: T,
|
|
5
|
-
implementation?: Partial<InstanceType<T>>,
|
|
6
|
-
): InstanceType<T>
|
|
7
|
-
export declare function mockClaim<T extends ClaimConstructor>(
|
|
8
|
-
ClaimClass: T,
|
|
9
|
-
implementation?: Partial<InstanceType<T>>,
|
|
10
|
-
): ClaimProvider<InstanceType<T>>
|
|
11
|
-
//# sourceMappingURL=create-mock-claim.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-mock-claim.d.ts","sourceRoot":"","sources":["../../src/testing/create-mock-claim.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,wBAAgB,eAAe,CAAC,CAAC,SAAS,gBAAgB,EACxD,UAAU,EAAE,CAAC,EACb,cAAc,GAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAM,GAC5C,YAAY,CAAC,CAAC,CAAC,CAuBjB;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,gBAAgB,EAClD,UAAU,EAAE,CAAC,EACb,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GACxC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAKhC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export function createMockClaim(ClaimClass, implementation = {}) {
|
|
2
|
-
const name = ClaimClass.name;
|
|
3
|
-
return new Proxy(implementation, {
|
|
4
|
-
get(target, propertyKey, receiver) {
|
|
5
|
-
if (propertyKey in target) {
|
|
6
|
-
const value = Reflect.get(target, propertyKey, receiver);
|
|
7
|
-
if (typeof value === 'function')
|
|
8
|
-
return value.bind(target);
|
|
9
|
-
return value;
|
|
10
|
-
}
|
|
11
|
-
if (propertyKey === 'then')
|
|
12
|
-
return undefined;
|
|
13
|
-
return (...args) => {
|
|
14
|
-
throw new Error(`Mock ${name}.${String(propertyKey)} was not implemented. ` +
|
|
15
|
-
`Provide it via mockClaim(${name}, { ${String(propertyKey)}: ... }).`);
|
|
16
|
-
};
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
export function mockClaim(ClaimClass, implementation) {
|
|
21
|
-
return {
|
|
22
|
-
provide: ClaimClass,
|
|
23
|
-
value: createMockClaim(ClaimClass, implementation ?? {}),
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=create-mock-claim.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-mock-claim.js","sourceRoot":"","sources":["../../src/testing/create-mock-claim.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,eAAe,CAC7B,UAAa,EACb,iBAA2C,EAAE;IAE7C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAA;IAE5B,OAAO,IAAI,KAAK,CAAC,cAAwB,EAAE;QACzC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ;YAC/B,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;gBAExD,IAAI,OAAO,KAAK,KAAK,UAAU;oBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAE1D,OAAO,KAAK,CAAA;YACd,CAAC;YAED,IAAI,WAAW,KAAK,MAAM;gBAAE,OAAO,SAAS,CAAA;YAE5C,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;gBAC5B,MAAM,IAAI,KAAK,CACb,QAAQ,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,wBAAwB;oBACzD,4BAA4B,IAAI,OAAO,MAAM,CAAC,WAAW,CAAC,WAAW,CACxE,CAAA;YACH,CAAC,CAAA;QACH,CAAC;KACF,CAAoB,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,UAAa,EACb,cAAyC;IAEzC,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,eAAe,CAAC,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC;KACzD,CAAA;AACH,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { ClaimConstructor } from '../types.js'
|
|
2
|
-
import type { ClaimProvider } from '../../models/Claim.js'
|
|
3
|
-
export declare function createMockClaims(
|
|
4
|
-
...providers: readonly ClaimProvider<any>[]
|
|
5
|
-
): readonly ClaimProvider<any>[]
|
|
6
|
-
export type MockClaimEntry = readonly [
|
|
7
|
-
claim: ClaimConstructor,
|
|
8
|
-
implementation?: Partial<InstanceType<ClaimConstructor>>,
|
|
9
|
-
]
|
|
10
|
-
export declare function createMockClaimsFromMap(
|
|
11
|
-
entries: readonly MockClaimEntry[],
|
|
12
|
-
): readonly ClaimProvider<any>[]
|
|
13
|
-
//# sourceMappingURL=create-mock-claims.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-mock-claims.d.ts","sourceRoot":"","sources":["../../src/testing/create-mock-claims.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,wBAAgB,gBAAgB,CAC9B,GAAG,SAAS,EAAE,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,GAC1C,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAE/B;AAED,MAAM,MAAM,cAAc,GAAG,SAAS;IACpC,KAAK,EAAE,gBAAgB;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;CACzD,CAAA;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,SAAS,cAAc,EAAE,GACjC,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAI/B"}
|