@t4h.framework/core 0.7.0 → 0.9.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 +103 -287
- package/.ai/skills/framework-workflow-creation/SKILL.md +108 -60
- package/.ai/skills/framework-workflow-testing/SKILL.md +165 -111
- package/README.md +123 -37
- package/dist/activities/StartWorkflowActivity.d.ts +52 -9
- package/dist/activities/StartWorkflowActivity.d.ts.map +1 -1
- package/dist/activities/StartWorkflowActivity.js +45 -5
- package/dist/activities/StartWorkflowActivity.js.map +1 -1
- package/dist/core.d.ts +2 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +2 -0
- package/dist/core.js.map +1 -1
- package/dist/models/ContinueAsNew.d.ts +24 -0
- package/dist/models/ContinueAsNew.d.ts.map +1 -0
- package/dist/models/ContinueAsNew.js +28 -0
- package/dist/models/ContinueAsNew.js.map +1 -0
- package/dist/models/ExecutionContext.d.ts +8 -0
- package/dist/models/ExecutionContext.d.ts.map +1 -0
- package/dist/models/ExecutionContext.js +22 -0
- package/dist/models/ExecutionContext.js.map +1 -0
- package/dist/models/WorkflowBatchClaim.d.ts +10 -0
- package/dist/models/WorkflowBatchClaim.d.ts.map +1 -0
- package/dist/models/WorkflowBatchClaim.js +3 -0
- package/dist/models/WorkflowBatchClaim.js.map +1 -0
- package/dist/models/WorkflowBatchRef.d.ts +6 -0
- package/dist/models/WorkflowBatchRef.d.ts.map +1 -0
- package/dist/models/WorkflowBatchRef.js +9 -0
- package/dist/models/WorkflowBatchRef.js.map +1 -0
- package/dist/models/WorkflowRef.d.ts +2 -2
- package/dist/models/WorkflowRef.d.ts.map +1 -1
- package/dist/models/WorkflowRef.js.map +1 -1
- package/dist/testing/ActivityTesting.d.ts +25 -0
- package/dist/testing/ActivityTesting.d.ts.map +1 -0
- package/dist/testing/ActivityTesting.js +74 -0
- package/dist/testing/ActivityTesting.js.map +1 -0
- package/dist/testing/NonDeterministicWorkflowError.d.ts +4 -0
- package/dist/testing/NonDeterministicWorkflowError.d.ts.map +1 -0
- package/dist/testing/NonDeterministicWorkflowError.js +7 -0
- package/dist/testing/NonDeterministicWorkflowError.js.map +1 -0
- package/dist/testing/StrictGuard.d.ts +4 -0
- package/dist/testing/StrictGuard.d.ts.map +1 -0
- package/dist/testing/StrictGuard.js +26 -0
- package/dist/testing/StrictGuard.js.map +1 -0
- package/dist/testing/TestClock.d.ts +12 -0
- package/dist/testing/TestClock.d.ts.map +1 -0
- package/dist/testing/TestClock.js +64 -0
- package/dist/testing/TestClock.js.map +1 -0
- package/dist/testing/TestWorkflowEnvironment.d.ts +27 -0
- package/dist/testing/TestWorkflowEnvironment.d.ts.map +1 -0
- package/dist/testing/TestWorkflowEnvironment.js +64 -0
- package/dist/testing/TestWorkflowEnvironment.js.map +1 -0
- package/dist/testing/WorkflowTesting.d.ts +1 -1
- package/dist/testing/async-activity-results.d.ts +12 -0
- package/dist/testing/async-activity-results.d.ts.map +1 -0
- package/dist/testing/async-activity-results.js +10 -0
- package/dist/testing/async-activity-results.js.map +1 -0
- package/dist/testing/create-mock-claim.d.ts +11 -0
- package/dist/testing/create-mock-claim.d.ts.map +1 -0
- package/dist/testing/create-mock-claim.js +26 -0
- package/dist/testing/create-mock-claim.js.map +1 -0
- package/dist/testing/create-mock-claims.d.ts +13 -0
- package/dist/testing/create-mock-claims.d.ts.map +1 -0
- package/dist/testing/create-mock-claims.js +8 -0
- package/dist/testing/create-mock-claims.js.map +1 -0
- package/dist/testing/create-test-env.d.ts +10 -0
- package/dist/testing/create-test-env.d.ts.map +1 -0
- package/dist/testing/create-test-env.js +7 -0
- package/dist/testing/create-test-env.js.map +1 -0
- package/dist/testing/exceptions/NonDeterministicWorkflowError.d.ts +4 -0
- package/dist/testing/exceptions/NonDeterministicWorkflowError.d.ts.map +1 -0
- package/dist/testing/exceptions/NonDeterministicWorkflowError.js +7 -0
- package/dist/testing/exceptions/NonDeterministicWorkflowError.js.map +1 -0
- package/dist/testing/index.d.ts +8 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +8 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/mock-async.d.ts +48 -0
- package/dist/testing/mock-async.d.ts.map +1 -0
- package/dist/testing/mock-async.js +58 -0
- package/dist/testing/mock-async.js.map +1 -0
- package/dist/testing/outcomes.d.ts +12 -0
- package/dist/testing/outcomes.d.ts.map +1 -0
- package/dist/testing/outcomes.js +10 -0
- package/dist/testing/outcomes.js.map +1 -0
- package/dist/testing/run-workflow.d.ts +22 -21
- package/dist/testing/run-workflow.d.ts.map +1 -1
- package/dist/testing/run-workflow.js +47 -23
- package/dist/testing/run-workflow.js.map +1 -1
- package/dist/testing/tools/clone.d.ts +2 -0
- package/dist/testing/tools/clone.d.ts.map +1 -0
- package/dist/testing/tools/clone.js +42 -0
- package/dist/testing/tools/clone.js.map +1 -0
- package/dist/testing/tools/create-mock-claim.d.ts +5 -0
- package/dist/testing/tools/create-mock-claim.d.ts.map +1 -0
- package/dist/testing/tools/create-mock-claim.js +26 -0
- package/dist/testing/tools/create-mock-claim.js.map +1 -0
- package/dist/testing/tools/create-mock-claims.d.ts +8 -0
- package/dist/testing/tools/create-mock-claims.d.ts.map +1 -0
- package/dist/testing/tools/create-mock-claims.js +5 -0
- package/dist/testing/tools/create-mock-claims.js.map +1 -0
- package/dist/testing/tools/create-test-env.d.ts +4 -0
- package/dist/testing/tools/create-test-env.d.ts.map +1 -0
- package/dist/testing/tools/create-test-env.js +7 -0
- package/dist/testing/tools/create-test-env.js.map +1 -0
- package/dist/testing/tools/mock-async.d.ts +20 -0
- package/dist/testing/tools/mock-async.d.ts.map +1 -0
- package/dist/testing/tools/mock-async.js +57 -0
- package/dist/testing/tools/mock-async.js.map +1 -0
- package/dist/testing/tools/resolve-activity.d.ts +11 -0
- package/dist/testing/tools/resolve-activity.d.ts.map +1 -0
- package/dist/testing/tools/resolve-activity.js +23 -0
- package/dist/testing/tools/resolve-activity.js.map +1 -0
- package/dist/testing/tools/resolve-async-activity.d.ts +15 -0
- package/dist/testing/tools/resolve-async-activity.d.ts.map +1 -0
- package/dist/testing/tools/resolve-async-activity.js +69 -0
- package/dist/testing/tools/resolve-async-activity.js.map +1 -0
- package/dist/testing/tools/run-with-clock.d.ts +3 -0
- package/dist/testing/tools/run-with-clock.d.ts.map +1 -0
- package/dist/testing/tools/run-with-clock.js +7 -0
- package/dist/testing/tools/run-with-clock.js.map +1 -0
- package/dist/testing/tools/run-workflow-ticks.d.ts +8 -0
- package/dist/testing/tools/run-workflow-ticks.d.ts.map +1 -0
- package/dist/testing/tools/run-workflow-ticks.js +26 -0
- package/dist/testing/tools/run-workflow-ticks.js.map +1 -0
- package/dist/testing/tools/run-workflow.d.ts +25 -0
- package/dist/testing/tools/run-workflow.d.ts.map +1 -0
- package/dist/testing/tools/run-workflow.js +25 -0
- package/dist/testing/tools/run-workflow.js.map +1 -0
- package/dist/testing/tools/serializable-clone.d.ts +21 -0
- package/dist/testing/tools/serializable-clone.d.ts.map +1 -0
- package/dist/testing/tools/serializable-clone.js +77 -0
- package/dist/testing/tools/serializable-clone.js.map +1 -0
- package/dist/testing/types.d.ts +19 -0
- package/dist/testing/types.d.ts.map +1 -0
- package/dist/testing/types.js +2 -0
- package/dist/testing/types.js.map +1 -0
- package/dist/testing/typings/AsyncActivityResult.d.ts +10 -0
- package/dist/testing/typings/AsyncActivityResult.d.ts.map +1 -0
- package/dist/testing/typings/AsyncActivityResult.js +2 -0
- package/dist/testing/typings/AsyncActivityResult.js.map +1 -0
- package/dist/testing/typings/ClaimConstructor.d.ts +2 -0
- package/dist/testing/typings/ClaimConstructor.d.ts.map +1 -0
- package/dist/testing/typings/ClaimConstructor.js +2 -0
- package/dist/testing/typings/ClaimConstructor.js.map +1 -0
- package/dist/testing/typings/MockAsyncActivity.d.ts +10 -0
- package/dist/testing/typings/MockAsyncActivity.d.ts.map +1 -0
- package/dist/testing/typings/MockAsyncActivity.js +2 -0
- package/dist/testing/typings/MockAsyncActivity.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { AsyncActivityResultFulfilled, AsyncActivityResultPending, AsyncActivityResultRejected, Internals, } from '../../core.js';
|
|
2
|
+
async function toHistoryItem(context, outcome, pending) {
|
|
3
|
+
if (outcome.status === 'fulfilled')
|
|
4
|
+
return {
|
|
5
|
+
id: context.activity.id,
|
|
6
|
+
type: 'async',
|
|
7
|
+
status: 'fulfilled',
|
|
8
|
+
output: outcome.output,
|
|
9
|
+
};
|
|
10
|
+
if (outcome.status === 'rejected')
|
|
11
|
+
return {
|
|
12
|
+
id: context.activity.id,
|
|
13
|
+
type: 'async',
|
|
14
|
+
status: 'rejected',
|
|
15
|
+
output: outcome.reason,
|
|
16
|
+
};
|
|
17
|
+
if (outcome.status === 'timeout') {
|
|
18
|
+
const onTimeout = context.activity.onTimeout?.bind(context.activity);
|
|
19
|
+
if (!onTimeout)
|
|
20
|
+
throw new Error(`Async activity "${context.activity.constructor.name}" timed out but defines no onTimeout handler`);
|
|
21
|
+
const result = await Internals.runActivity(context.activity, context, () => onTimeout(pending));
|
|
22
|
+
if (result instanceof AsyncActivityResultFulfilled)
|
|
23
|
+
return {
|
|
24
|
+
id: context.activity.id,
|
|
25
|
+
type: 'async',
|
|
26
|
+
status: 'fulfilled',
|
|
27
|
+
output: result.payload,
|
|
28
|
+
};
|
|
29
|
+
if (result instanceof AsyncActivityResultRejected)
|
|
30
|
+
return {
|
|
31
|
+
id: context.activity.id,
|
|
32
|
+
type: 'async',
|
|
33
|
+
status: 'rejected',
|
|
34
|
+
output: result.payload,
|
|
35
|
+
};
|
|
36
|
+
throw new Error(`Async activity "${context.activity.constructor.name}" stayed pending after onTimeout`);
|
|
37
|
+
}
|
|
38
|
+
throw new Error(`Unknown async activity outcome for "${context.activity.constructor.name}"`);
|
|
39
|
+
}
|
|
40
|
+
export async function resolveAsyncActivity(context, input, options) {
|
|
41
|
+
if (context.bootstrap instanceof AsyncActivityResultFulfilled)
|
|
42
|
+
return {
|
|
43
|
+
id: context.activity.id,
|
|
44
|
+
type: 'async',
|
|
45
|
+
status: 'fulfilled',
|
|
46
|
+
output: context.bootstrap.payload,
|
|
47
|
+
};
|
|
48
|
+
if (context.bootstrap instanceof AsyncActivityResultRejected)
|
|
49
|
+
return {
|
|
50
|
+
id: context.activity.id,
|
|
51
|
+
type: 'async',
|
|
52
|
+
status: 'rejected',
|
|
53
|
+
output: context.bootstrap.payload,
|
|
54
|
+
};
|
|
55
|
+
if (!(context.bootstrap instanceof AsyncActivityResultPending))
|
|
56
|
+
throw new Error('Unknown async activity result');
|
|
57
|
+
const name = context.activity.constructor.name;
|
|
58
|
+
if (!options?.mock)
|
|
59
|
+
throw new Error(`Async activity "${name}" is pending and no mockAsyncActivity was provided`);
|
|
60
|
+
const outcome = await options.mock(context.activity, {
|
|
61
|
+
input,
|
|
62
|
+
pending: context.bootstrap,
|
|
63
|
+
callCount: options.state?.callCount ?? 0,
|
|
64
|
+
});
|
|
65
|
+
if (options.state)
|
|
66
|
+
options.state.callCount++;
|
|
67
|
+
return toHistoryItem(context, outcome, context.bootstrap);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=resolve-async-activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-async-activity.js","sourceRoot":"","sources":["../../../src/testing/tools/resolve-async-activity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-with-clock.d.ts","sourceRoot":"","sources":["../../../src/testing/tools/run-with-clock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErE,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,mBAAmB,GAAG,KAAK,GAAG,SAAS,EAC9C,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAIH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-with-clock.js","sourceRoot":"","sources":["../../../src/testing/tools/run-with-clock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA4B,MAAM,iBAAiB,CAAA;AAErE,MAAM,UAAU,YAAY,CAC1B,KAA8C,EAC9C,EAAW;IAEX,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,CAAA;IAEvD,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AACjC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RunWorkflowOptions } from './run-workflow.js';
|
|
2
|
+
import { Workflow, type HistoryItem, type Log, type WorkflowInput } from '../../core.js';
|
|
3
|
+
export interface RunWorkflowTicksOptions extends RunWorkflowOptions {
|
|
4
|
+
history: HistoryItem[];
|
|
5
|
+
logs: Log[];
|
|
6
|
+
}
|
|
7
|
+
export declare function runWorkflowTicks<T extends Workflow<any, any>>(workflow: T, input: WorkflowInput<T>, options: RunWorkflowTicksOptions): Promise<any>;
|
|
8
|
+
//# sourceMappingURL=run-workflow-ticks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-workflow-ticks.d.ts","sourceRoot":"","sources":["../../../src/testing/tools/run-workflow-ticks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAGL,QAAQ,EACR,KAAK,WAAW,EAChB,KAAK,GAAG,EACR,KAAK,aAAa,EACnB,MAAM,eAAe,CAAA;AAEtB,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,IAAI,EAAE,GAAG,EAAE,CAAA;CACZ;AAED,wBAAsB,gBAAgB,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EACjE,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,OAAO,EAAE,uBAAuB,gBA8BjC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { resolveActivity } from './resolve-activity.js';
|
|
2
|
+
import { Internals, PushActivity, Workflow, } from '../../core.js';
|
|
3
|
+
export async function runWorkflowTicks(workflow, input, options) {
|
|
4
|
+
const maxTicks = options.maxTicks ?? 10_000;
|
|
5
|
+
const state = { callCount: 0 };
|
|
6
|
+
const { history, logs, claims = [], env = {} } = options;
|
|
7
|
+
for (let tick = 0; tick < maxTicks; tick++) {
|
|
8
|
+
try {
|
|
9
|
+
return await Internals.runWorkflow(workflow, {
|
|
10
|
+
input,
|
|
11
|
+
claims,
|
|
12
|
+
env,
|
|
13
|
+
history,
|
|
14
|
+
logs,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
catch (pushOrError) {
|
|
18
|
+
if (!(pushOrError instanceof PushActivity))
|
|
19
|
+
throw pushOrError;
|
|
20
|
+
const item = await resolveActivity(pushOrError, { claims, env }, { mock: options.mockAsyncActivity, state });
|
|
21
|
+
history.push(item);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
throw new Error(`Workflow did not settle within ${maxTicks} ticks`);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=run-workflow-ticks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-workflow-ticks.js","sourceRoot":"","sources":["../../../src/testing/tools/run-workflow-ticks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EACL,SAAS,EACT,YAAY,EACZ,QAAQ,GAIT,MAAM,eAAe,CAAA;AAOtB,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAW,EACX,KAAuB,EACvB,OAAgC;IAEhC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAA;IAC3C,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAA;IAE9B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,OAAO,CAAA;IAExD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE;gBAC3C,KAAK;gBACL,MAAM;gBACN,GAAG;gBACH,OAAO;gBACP,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,WAAW,YAAY,YAAY,CAAC;gBAAE,MAAM,WAAW,CAAA;YAE7D,MAAM,IAAI,GAAG,MAAM,eAAe,CAChC,WAAW,EACX,EAAE,MAAM,EAAE,GAAG,EAAE,EACf,EAAE,IAAI,EAAE,OAAO,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAC3C,CAAA;YAED,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,QAAQ,CAAC,CAAA;AACrE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ClaimProvider } from '../../models/Claim.js';
|
|
2
|
+
import type { Env } from '../../models/Env.js';
|
|
3
|
+
import type { HistoryItem } from '../../models/History.js';
|
|
4
|
+
import type { Log } from '../../models/Logger.js';
|
|
5
|
+
import type { Workflow, WorkflowInput } from '../../models/Workflow.js';
|
|
6
|
+
import { type TestClockRunOptions } from '../TestClock.js';
|
|
7
|
+
import type { MockAsyncActivity } from '../typings/MockAsyncActivity.js';
|
|
8
|
+
export interface RunWorkflowOptions {
|
|
9
|
+
claims: readonly ClaimProvider<any>[];
|
|
10
|
+
env: Env.Entries;
|
|
11
|
+
logs: Log[];
|
|
12
|
+
history: HistoryItem[];
|
|
13
|
+
mockAsyncActivity?: MockAsyncActivity;
|
|
14
|
+
maxTicks?: number;
|
|
15
|
+
clock?: TestClockRunOptions | false;
|
|
16
|
+
resolveActivityTimeouts?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface RunWorkflowResult<TOutput = unknown> {
|
|
19
|
+
output: TOutput;
|
|
20
|
+
history: readonly HistoryItem[];
|
|
21
|
+
logs: readonly Log[];
|
|
22
|
+
clockNow?: number;
|
|
23
|
+
}
|
|
24
|
+
export declare function runWorkflow<T extends Workflow<any, any>>(workflow: T, input: WorkflowInput<T>, options: RunWorkflowOptions): Promise<RunWorkflowResult>;
|
|
25
|
+
//# sourceMappingURL=run-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-workflow.d.ts","sourceRoot":"","sources":["../../../src/testing/tools/run-workflow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,EAAa,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAExE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAA;IACrC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAA;IAChB,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAAA;IACnC,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC;AAED,MAAM,WAAW,iBAAiB,CAAC,OAAO,GAAG,OAAO;IAClD,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/B,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAYD,wBAAsB,WAAW,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAC5D,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAe5B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { mockAsync } from './mock-async.js';
|
|
2
|
+
import { runWithClock } from './run-with-clock.js';
|
|
3
|
+
import { TestClock } from '../TestClock.js';
|
|
4
|
+
import { runWorkflowTicks } from './run-workflow-ticks.js';
|
|
5
|
+
function resolveMockAsyncActivity(options) {
|
|
6
|
+
if (options.mockAsyncActivity !== undefined)
|
|
7
|
+
return options.mockAsyncActivity;
|
|
8
|
+
if (options.resolveActivityTimeouts)
|
|
9
|
+
return mockAsync().timeout();
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
export async function runWorkflow(workflow, input, options) {
|
|
13
|
+
let clockNow;
|
|
14
|
+
const output = await runWithClock(options.clock, async () => {
|
|
15
|
+
const result = await runWorkflowTicks(workflow, input, {
|
|
16
|
+
...options,
|
|
17
|
+
mockAsyncActivity: resolveMockAsyncActivity(options),
|
|
18
|
+
});
|
|
19
|
+
if (TestClock.isActive())
|
|
20
|
+
clockNow = TestClock.now();
|
|
21
|
+
return result;
|
|
22
|
+
});
|
|
23
|
+
return { output, history: options.history, logs: options.logs, clockNow };
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=run-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-workflow.js","sourceRoot":"","sources":["../../../src/testing/tools/run-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAMlD,OAAO,EAAE,SAAS,EAA4B,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAqB1D,SAAS,wBAAwB,CAC/B,OAA2B;IAE3B,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,iBAAiB,CAAA;IAE7E,IAAI,OAAO,CAAC,uBAAuB;QAAE,OAAO,SAAS,EAAE,CAAC,OAAO,EAAE,CAAA;IAEjE,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAW,EACX,KAAuB,EACvB,OAA2B;IAE3B,IAAI,QAA4B,CAAA;IAEhC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE;YACrD,GAAG,OAAO;YACV,iBAAiB,EAAE,wBAAwB,CAAC,OAAO,CAAC;SACrD,CAAC,CAAA;QAEF,IAAI,SAAS,CAAC,QAAQ,EAAE;YAAE,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE,CAAA;QAEpD,OAAO,MAAM,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAA;AAC3E,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep-clones a value for replay isolation while preserving the framework's
|
|
3
|
+
* value objects.
|
|
4
|
+
*
|
|
5
|
+
* The replay determinism check needs a fresh, isolated copy of the recorded
|
|
6
|
+
* history so the replay run never shares mutable state with the original run.
|
|
7
|
+
* `structuredClone` is unfit for that here: it drops prototypes, so any
|
|
8
|
+
* `SerializableClass` stored in history (e.g. the HTTP `Body`) would come back
|
|
9
|
+
* as a plain object without its methods, and replaying a workflow that reads
|
|
10
|
+
* it (`response.body.text()`) would throw `text is not a function`.
|
|
11
|
+
*
|
|
12
|
+
* Instead, each `SerializableClass` is round-tripped through its own
|
|
13
|
+
* `toSerializable` / `fromSerializable` hooks — the exact contract the runtime
|
|
14
|
+
* uses to persist and restore history — so the reconstructed instance keeps
|
|
15
|
+
* its behaviour (and misbehaving custom serializers surface here too). `Binary`
|
|
16
|
+
* leaves are shared by reference: their concrete, stream-backed
|
|
17
|
+
* implementations live in other packages and are treated as immutable during
|
|
18
|
+
* replay.
|
|
19
|
+
*/
|
|
20
|
+
export declare function serializableClone<T>(value: T): Promise<T>;
|
|
21
|
+
//# sourceMappingURL=serializable-clone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializable-clone.d.ts","sourceRoot":"","sources":["../../../src/testing/tools/serializable-clone.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE/D"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Binary } from '../../models/Binary.js';
|
|
2
|
+
import { SerializableClass, } from '../../models/SerializableHelper.js';
|
|
3
|
+
/**
|
|
4
|
+
* Deep-clones a value for replay isolation while preserving the framework's
|
|
5
|
+
* value objects.
|
|
6
|
+
*
|
|
7
|
+
* The replay determinism check needs a fresh, isolated copy of the recorded
|
|
8
|
+
* history so the replay run never shares mutable state with the original run.
|
|
9
|
+
* `structuredClone` is unfit for that here: it drops prototypes, so any
|
|
10
|
+
* `SerializableClass` stored in history (e.g. the HTTP `Body`) would come back
|
|
11
|
+
* as a plain object without its methods, and replaying a workflow that reads
|
|
12
|
+
* it (`response.body.text()`) would throw `text is not a function`.
|
|
13
|
+
*
|
|
14
|
+
* Instead, each `SerializableClass` is round-tripped through its own
|
|
15
|
+
* `toSerializable` / `fromSerializable` hooks — the exact contract the runtime
|
|
16
|
+
* uses to persist and restore history — so the reconstructed instance keeps
|
|
17
|
+
* its behaviour (and misbehaving custom serializers surface here too). `Binary`
|
|
18
|
+
* leaves are shared by reference: their concrete, stream-backed
|
|
19
|
+
* implementations live in other packages and are treated as immutable during
|
|
20
|
+
* replay.
|
|
21
|
+
*/
|
|
22
|
+
export async function serializableClone(value) {
|
|
23
|
+
return (await clone(value, new WeakMap()));
|
|
24
|
+
}
|
|
25
|
+
async function clone(value, seen) {
|
|
26
|
+
if (value === null || typeof value !== 'object')
|
|
27
|
+
return value;
|
|
28
|
+
// Leaf value object: shared by reference (immutable during replay, and its
|
|
29
|
+
// concrete serialization lives outside core).
|
|
30
|
+
if (value instanceof Binary)
|
|
31
|
+
return value;
|
|
32
|
+
// Rebuild via the same hooks the runtime uses, so the clone is a real
|
|
33
|
+
// instance with a working prototype.
|
|
34
|
+
if (value instanceof SerializableClass) {
|
|
35
|
+
const serializer = inner => clone(inner, seen);
|
|
36
|
+
const serialized = await value.toSerializable(serializer);
|
|
37
|
+
return value.constructor.fromSerializable(serialized, serializer);
|
|
38
|
+
}
|
|
39
|
+
if (value instanceof Date)
|
|
40
|
+
return new Date(value.getTime());
|
|
41
|
+
if (Buffer.isBuffer(value))
|
|
42
|
+
return Buffer.from(value);
|
|
43
|
+
if (value instanceof ArrayBuffer)
|
|
44
|
+
return value.slice(0);
|
|
45
|
+
if (ArrayBuffer.isView(value))
|
|
46
|
+
return value.slice();
|
|
47
|
+
const cached = seen.get(value);
|
|
48
|
+
if (cached)
|
|
49
|
+
return cached;
|
|
50
|
+
if (Array.isArray(value)) {
|
|
51
|
+
const result = [];
|
|
52
|
+
seen.set(value, result);
|
|
53
|
+
for (const item of value)
|
|
54
|
+
result.push(await clone(item, seen));
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
if (value instanceof Map) {
|
|
58
|
+
const result = new Map();
|
|
59
|
+
seen.set(value, result);
|
|
60
|
+
for (const [key, val] of value)
|
|
61
|
+
result.set(await clone(key, seen), await clone(val, seen));
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
if (value instanceof Set) {
|
|
65
|
+
const result = new Set();
|
|
66
|
+
seen.set(value, result);
|
|
67
|
+
for (const val of value)
|
|
68
|
+
result.add(await clone(val, seen));
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
const result = {};
|
|
72
|
+
seen.set(value, result);
|
|
73
|
+
for (const [key, val] of Object.entries(value))
|
|
74
|
+
result[key] = await clone(val, seen);
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=serializable-clone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializable-clone.js","sourceRoot":"","sources":["../../../src/testing/tools/serializable-clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EACL,iBAAiB,GAElB,MAAM,oCAAoC,CAAA;AAE3C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAI,KAAQ;IACjD,OAAO,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC,CAAM,CAAA;AACjD,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,KAAU,EAAE,IAA0B;IACzD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE7D,2EAA2E;IAC3E,8CAA8C;IAC9C,IAAI,KAAK,YAAY,MAAM;QAAE,OAAO,KAAK,CAAA;IAEzC,sEAAsE;IACtE,qCAAqC;IACrC,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;QACvC,MAAM,UAAU,GAAe,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC1D,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QAEzD,OACE,KAAK,CAAC,WAGP,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IAE3D,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAErD,IAAI,KAAK,YAAY,WAAW;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAEvD,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,OAAQ,KAAyC,CAAC,KAAK,EAAE,CAAA;IAE3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAU,EAAE,CAAA;QACxB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEvB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAE9D,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEvB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK;YAC5B,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;QAE5D,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEvB,KAAK,MAAM,GAAG,IAAI,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;QAE3D,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,MAAM,GAAwB,EAAE,CAAA;IACtC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAEvB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEtC,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AnyAsyncActivity } from '../models/AsyncActivity.js';
|
|
2
|
+
import type { AsyncActivityResultPending } from '../models/AsyncActivityAdvanceResult.js';
|
|
3
|
+
export type AsyncActivityOutcome = {
|
|
4
|
+
status: 'fulfilled';
|
|
5
|
+
output?: unknown;
|
|
6
|
+
} | {
|
|
7
|
+
status: 'rejected';
|
|
8
|
+
reason?: unknown;
|
|
9
|
+
} | {
|
|
10
|
+
status: 'timeout';
|
|
11
|
+
};
|
|
12
|
+
export interface MockAsyncActivityContext {
|
|
13
|
+
input: unknown;
|
|
14
|
+
pending: AsyncActivityResultPending;
|
|
15
|
+
callCount: number;
|
|
16
|
+
}
|
|
17
|
+
export type MockAsyncActivity = (activity: AnyAsyncActivity, context: MockAsyncActivityContext) => AsyncActivityOutcome | Promise<AsyncActivityOutcome>;
|
|
18
|
+
export type ClaimConstructor = abstract new (...args: readonly any[]) => any;
|
|
19
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/testing/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAA;AAEzF,MAAM,MAAM,oBAAoB,GAC5B;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAA;AAEzB,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,0BAA0B,CAAA;IACnC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,wBAAwB,KAC9B,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;AAEzD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,MAAM,GAAG,IAAI,EAAE,SAAS,GAAG,EAAE,KAAK,GAAG,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/testing/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsyncActivityResult.d.ts","sourceRoot":"","sources":["../../../src/testing/typings/AsyncActivityResult.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,CAAC,OAAO,GAAG,OAAO,IAC7C;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsyncActivityResult.js","sourceRoot":"","sources":["../../../src/testing/typings/AsyncActivityResult.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaimConstructor.d.ts","sourceRoot":"","sources":["../../../src/testing/typings/ClaimConstructor.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,QAAQ,MAAM,GAAG,IAAI,EAAE,SAAS,GAAG,EAAE,KAAK,GAAG,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaimConstructor.js","sourceRoot":"","sources":["../../../src/testing/typings/ClaimConstructor.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AsyncActivityResult } from './AsyncActivityResult.js';
|
|
2
|
+
import type { AnyAsyncActivity } from '../../models/AsyncActivity.js';
|
|
3
|
+
import type { AsyncActivityResultPending } from '../../models/AsyncActivityAdvanceResult.js';
|
|
4
|
+
export interface MockAsyncActivityContext {
|
|
5
|
+
input: unknown;
|
|
6
|
+
pending: AsyncActivityResultPending;
|
|
7
|
+
callCount: number;
|
|
8
|
+
}
|
|
9
|
+
export type MockAsyncActivity = (activity: AnyAsyncActivity, context: MockAsyncActivityContext) => AsyncActivityResult | Promise<AsyncActivityResult>;
|
|
10
|
+
//# sourceMappingURL=MockAsyncActivity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockAsyncActivity.d.ts","sourceRoot":"","sources":["../../../src/testing/typings/MockAsyncActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAA;AAE5F,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,0BAA0B,CAAA;IACnC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,wBAAwB,KAC9B,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockAsyncActivity.js","sourceRoot":"","sources":["../../../src/testing/typings/MockAsyncActivity.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@t4h.framework/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.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",
|