@t4h.framework/core 0.6.1 → 0.7.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/dist/models/AsyncActivity.d.ts +1 -0
- package/dist/models/AsyncActivity.d.ts.map +1 -1
- package/dist/models/AsyncActivity.js +1 -0
- package/dist/models/AsyncActivity.js.map +1 -1
- package/dist/models/History.d.ts +1 -0
- package/dist/models/History.d.ts.map +1 -1
- package/dist/models/History.js +3 -0
- package/dist/models/History.js.map +1 -1
- package/dist/models/SyncActivity.d.ts +1 -0
- package/dist/models/SyncActivity.d.ts.map +1 -1
- package/dist/models/SyncActivity.js +1 -0
- package/dist/models/SyncActivity.js.map +1 -1
- package/dist/testing/run-workflow.js +44 -10
- package/dist/testing/run-workflow.js.map +1 -1
- package/dist/tools/Internals.d.ts +1 -0
- package/dist/tools/Internals.d.ts.map +1 -1
- package/dist/tools/Internals.js +1 -0
- package/dist/tools/Internals.js.map +1 -1
- package/package.json +3 -2
- 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/TestClock.d.ts +0 -12
- package/dist/testing/TestClock.d.ts.map +0 -1
- package/dist/testing/TestClock.js +0 -65
- package/dist/testing/TestClock.js.map +0 -1
- package/dist/testing/TestWorkflowEnvironment.d.ts +0 -39
- package/dist/testing/TestWorkflowEnvironment.d.ts.map +0 -1
- package/dist/testing/TestWorkflowEnvironment.js +0 -120
- package/dist/testing/TestWorkflowEnvironment.js.map +0 -1
- package/dist/testing/auto-resolve-timeouts.d.ts +0 -3
- package/dist/testing/auto-resolve-timeouts.d.ts.map +0 -1
- package/dist/testing/auto-resolve-timeouts.js +0 -16
- package/dist/testing/auto-resolve-timeouts.js.map +0 -1
- package/dist/testing/create-mock-claim.d.ts +0 -5
- 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 -9
- 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 -4
- 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-by-activity.d.ts +0 -10
- package/dist/testing/mock-async-by-activity.d.ts.map +0 -1
- package/dist/testing/mock-async-by-activity.js +0 -15
- package/dist/testing/mock-async-by-activity.js.map +0 -1
- package/dist/testing/resolve-async-activities-in-order.d.ts +0 -3
- package/dist/testing/resolve-async-activities-in-order.d.ts.map +0 -1
- package/dist/testing/resolve-async-activities-in-order.js +0 -10
- package/dist/testing/resolve-async-activities-in-order.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
- package/dist/tools/runWorkflowToCompletion.d.ts +0 -15
- package/dist/tools/runWorkflowToCompletion.d.ts.map +0 -1
- package/dist/tools/runWorkflowToCompletion.js +0 -61
- package/dist/tools/runWorkflowToCompletion.js.map +0 -1
|
@@ -5,6 +5,7 @@ import type { IHistoryItemAsync } from './History.js';
|
|
|
5
5
|
import type { Serializable } from '../typings/Serializable.js';
|
|
6
6
|
export type AnyAsyncActivity = AsyncActivity<readonly any[], any, any, any, any, any>;
|
|
7
7
|
export declare abstract class AsyncActivity<TArgs extends readonly any[], TInput extends Serializable, TSerializableOutput extends Serializable | void, TOutput, TBootstrap extends Serializable, TSchema extends Type.TSchema> {
|
|
8
|
+
id: string;
|
|
8
9
|
abstract toInput(...args: TArgs): TInput | Promise<TInput>;
|
|
9
10
|
abstract bootstrap(input: TInput): AsyncActivityResult<TBootstrap, TSchema, TSerializableOutput> | Promise<AsyncActivityResult<TBootstrap, TSchema, TSerializableOutput>>;
|
|
10
11
|
abstract advance(payload: Type.Static<TSchema>, bootstrap: AsyncActivityResultPending): AsyncActivityResult<Serializable, TSchema, TSerializableOutput> | Promise<AsyncActivityResult<Serializable, TSchema, TSerializableOutput>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncActivity.d.ts","sourceRoot":"","sources":["../../src/models/AsyncActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAA;AAE/B,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,mBAAmB,EACxB,KAAK,iCAAiC,EACvC,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAC1C,SAAS,GAAG,EAAE,EACd,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAA;AAED,8BAAsB,aAAa,CACjC,KAAK,SAAS,SAAS,GAAG,EAAE,EAC5B,MAAM,SAAS,YAAY,EAC3B,mBAAmB,SAAS,YAAY,GAAG,IAAI,EAC/C,OAAO,EACP,UAAU,SAAS,YAAY,EAC/B,OAAO,SAAS,IAAI,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"AsyncActivity.d.ts","sourceRoot":"","sources":["../../src/models/AsyncActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAA;AAE/B,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,mBAAmB,EACxB,KAAK,iCAAiC,EACvC,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAC1C,SAAS,GAAG,EAAE,EACd,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAA;AAED,8BAAsB,aAAa,CACjC,KAAK,SAAS,SAAS,GAAG,EAAE,EAC5B,MAAM,SAAS,YAAY,EAC3B,mBAAmB,SAAS,YAAY,GAAG,IAAI,EAC/C,OAAO,EACP,UAAU,SAAS,YAAY,EAC/B,OAAO,SAAS,IAAI,CAAC,OAAO;IAErB,EAAE,EAAG,MAAM,CAAA;aAEF,OAAO,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAEjD,SAAS,CACvB,KAAK,EAAE,MAAM,GAEX,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,mBAAmB,CAAC,GAC7D,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;aAE1D,OAAO,CACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAC7B,SAAS,EAAE,0BAA0B,GAEnC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,GAC/D,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;aAE5D,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,KAAK,GAAG,OAAO;IAEvE,SAAS,CAAC,CAEf,OAAO,EAAE,0BAA0B,GAEjC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,GAC/D,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAM5E,SAAS,CAAC,OAAO,CACf,OAAO,CAAC,EAAE,iCAAiC,CAAC,UAAU,EAAE,OAAO,CAAC;IAKlE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB;IAI5C,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAIzC,WAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE;CAGjE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AsyncActivityResultFulfilled, AsyncActivityResultPending, AsyncActivityResultRejected, } from './AsyncActivityAdvanceResult.js';
|
|
2
2
|
import { AsyncActivityAwaitable } from './AsyncActivityAwaitable.js';
|
|
3
3
|
export class AsyncActivity {
|
|
4
|
+
id;
|
|
4
5
|
onTimeout(
|
|
5
6
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6
7
|
payload) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsyncActivity.js","sourceRoot":"","sources":["../../src/models/AsyncActivity.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAG5B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAapE,MAAM,OAAgB,aAAa;
|
|
1
|
+
{"version":3,"file":"AsyncActivity.js","sourceRoot":"","sources":["../../src/models/AsyncActivity.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAG5B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAapE,MAAM,OAAgB,aAAa;IAQ1B,EAAE,CAAS;IAmBX,SAAS;IACd,6DAA6D;IAC7D,OAAmC;QAInC,OAAO,IAAI,CAAC,QAAQ,CAAC;YACnB,MAAM,EAAE,SAAS;SAClB,CAAC,CAAA;IACJ,CAAC;IAES,OAAO,CACf,OAAgE;QAEhE,OAAO,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAES,IAAI,CAAC,OAA6B;QAC1C,OAAO,IAAI,4BAA4B,CAAC,OAAO,CAAC,CAAA;IAClD,CAAC;IAES,QAAQ,CAAC,OAA6B;QAC9C,OAAO,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAA;IACjD,CAAC;IAEM,WAAW,CAAC,IAAuB,EAAE,IAAoB;QAC9D,OAAO,IAAI,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACrD,CAAC;CACF"}
|
package/dist/models/History.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { type AnyAsyncActivity } from './AsyncActivity.js';
|
|
|
3
3
|
import { AsyncActivityAwaitable } from './AsyncActivityAwaitable.js';
|
|
4
4
|
export type HistoryItemType = 'sync' | 'async';
|
|
5
5
|
interface IHistoryItem<T extends HistoryItemType> {
|
|
6
|
+
id: string;
|
|
6
7
|
type: T;
|
|
7
8
|
output: any;
|
|
8
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"History.d.ts","sourceRoot":"","sources":["../../src/models/History.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"History.d.ts","sourceRoot":"","sources":["../../src/models/History.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAGpE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,CAAA;AAE9C,UAAU,YAAY,CAAC,CAAC,SAAS,eAAe;IAC9C,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,CAAC,CAAA;IACP,MAAM,EAAE,GAAG,CAAA;CACZ;AAGD,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,MAAM,CAAC;CAAG;AAEjE,MAAM,WAAW,iBAAkB,SAAQ,YAAY,CAAC,OAAO,CAAC;IAC9D,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAA;IAC5C,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,iBAAiB,CAAA;AAE9D,yBAAiB,OAAO,CAAC;IACvB,KAAY,gBAAgB,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,gBAAgB,GACzE,sBAAsB,CAAC,CAAC,CAAC,GACzB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAItB,SAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,IACpD,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,kCAClC;IAED,SAAsB,UAAU,CAAC,CAAC,SAAS,QAAQ,EACjD,QAAQ,EAAE,UAAU,CAAC,EACrB,GAAG,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CA4B9B;IAED,SAAgB,WAAW,IAAI,OAAO,CAMrC;IAED,SAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,WAAW,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,KAElE;CACF"}
|
package/dist/models/History.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
import { uuidv7 } from 'uuidv7';
|
|
2
3
|
import {} from './Activity.js';
|
|
3
4
|
import { AsyncActivity } from './AsyncActivity.js';
|
|
4
5
|
import { AsyncActivityAwaitable } from './AsyncActivityAwaitable.js';
|
|
@@ -17,9 +18,11 @@ export var History;
|
|
|
17
18
|
const value = history.shift();
|
|
18
19
|
const activity = new Activity();
|
|
19
20
|
if (!value) {
|
|
21
|
+
activity.id = uuidv7();
|
|
20
22
|
const input = await activity.toInput(...args);
|
|
21
23
|
throw new PushActivity(activity, input);
|
|
22
24
|
}
|
|
25
|
+
activity.id = value.id;
|
|
23
26
|
if (activity instanceof AsyncActivity) {
|
|
24
27
|
if (value.type !== 'async')
|
|
25
28
|
throw new Error('Invalid history item type');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"History.js","sourceRoot":"","sources":["../../src/models/History.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAiB,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAyB,MAAM,oBAAoB,CAAA;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"History.js","sourceRoot":"","sources":["../../src/models/History.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAiB,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAyB,MAAM,oBAAoB,CAAA;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAoBhD,MAAM,KAAW,OAAO,CAuDvB;AAvDD,WAAiB,OAAO;IAKtB,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAiB,CAAA;IAEtD,SAAgB,IAAI,CAAqB,QAAqB;QAC5D,OAAO,CAAC,GAAG,IAAsB,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAA;IACrE,CAAC;IAFe,YAAI,OAEnB,CAAA;IAEM,KAAK,UAAU,UAAU,CAC9B,QAAqB,EACrB,GAAG,IAAsB;QAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;QAElC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAEzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAA;QAE7B,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;QAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,QAAQ,CAAC,EAAE,GAAG,MAAM,EAAE,CAAA;YAEtB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;YAE7C,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QACzC,CAAC;QAED,QAAQ,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAA;QAEtB,IAAI,QAAQ,YAAY,aAAa,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;YAExE,OAAO,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAwB,CAAA;QACjE,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAE3B,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,CAAwB,CAAA;IAClE,CAAC;IA/BqB,kBAAU,aA+B/B,CAAA;IAED,SAAgB,WAAW;QACzB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;QAEhC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QAExB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IACzB,CAAC;IANe,mBAAW,cAM1B,CAAA;IAED,SAAgB,GAAG,CAAI,OAA+B,EAAE,EAAW;QACjE,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACjD,CAAC;IAFe,WAAG,MAElB,CAAA;AACH,CAAC,EAvDgB,OAAO,KAAP,OAAO,QAuDvB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Serializable } from '../typings/Serializable.js';
|
|
2
2
|
export declare abstract class SyncActivity<TArgs extends readonly any[], TInput extends Serializable, TSerializableOutput extends Serializable | void, TOutput> {
|
|
3
|
+
id: string;
|
|
3
4
|
abstract toInput(...args: TArgs): TInput | Promise<TInput>;
|
|
4
5
|
abstract run(input: TInput): TSerializableOutput | Promise<TSerializableOutput>;
|
|
5
6
|
abstract toOutput(output: TSerializableOutput, ...args: TArgs): TOutput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncActivity.d.ts","sourceRoot":"","sources":["../../src/models/SyncActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,8BAAsB,YAAY,CAChC,KAAK,SAAS,SAAS,GAAG,EAAE,EAC5B,MAAM,SAAS,YAAY,EAC3B,mBAAmB,SAAS,YAAY,GAAG,IAAI,EAC/C,OAAO;
|
|
1
|
+
{"version":3,"file":"SyncActivity.d.ts","sourceRoot":"","sources":["../../src/models/SyncActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,8BAAsB,YAAY,CAChC,KAAK,SAAS,SAAS,GAAG,EAAE,EAC5B,MAAM,SAAS,YAAY,EAC3B,mBAAmB,SAAS,YAAY,GAAG,IAAI,EAC/C,OAAO;IAEA,EAAE,EAAG,MAAM,CAAA;aAEF,OAAO,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAEjD,GAAG,CACjB,KAAK,EAAE,MAAM,GACZ,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;aAErC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,KAAK,GAAG,OAAO;CAC/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncActivity.js","sourceRoot":"","sources":["../../src/models/SyncActivity.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,YAAY;
|
|
1
|
+
{"version":3,"file":"SyncActivity.js","sourceRoot":"","sources":["../../src/models/SyncActivity.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,YAAY;IAMzB,EAAE,CAAS;CASnB"}
|
|
@@ -49,21 +49,35 @@ export async function runWorkflow(workflow, input, options = {}) {
|
|
|
49
49
|
}
|
|
50
50
|
async function resolveActivity(push, context, mockAsyncActivity, resolutionState) {
|
|
51
51
|
const activity = push.activity;
|
|
52
|
+
const activityContext = {
|
|
53
|
+
...context,
|
|
54
|
+
id: activity.id,
|
|
55
|
+
};
|
|
52
56
|
if (activity instanceof SyncActivity) {
|
|
53
|
-
const output = await Internals.runActivity(activity,
|
|
54
|
-
return { type: 'sync', output };
|
|
57
|
+
const output = await Internals.runActivity(activity, activityContext, instance => instance.run(push.input));
|
|
58
|
+
return { id: activity.id, type: 'sync', output };
|
|
55
59
|
}
|
|
56
60
|
if (activity instanceof AsyncActivity) {
|
|
57
|
-
const bootstrap = await Internals.runActivity(activity,
|
|
58
|
-
return resolveAsyncActivity(activity, bootstrap,
|
|
61
|
+
const bootstrap = await Internals.runActivity(activity, activityContext, instance => instance.bootstrap(push.input));
|
|
62
|
+
return resolveAsyncActivity(activity, bootstrap, activityContext, push.input, mockAsyncActivity, resolutionState);
|
|
59
63
|
}
|
|
60
64
|
throw new Error('Unknown activity type');
|
|
61
65
|
}
|
|
62
66
|
async function resolveAsyncActivity(activity, bootstrap, context, input, mockAsyncActivity, resolutionState) {
|
|
63
67
|
if (bootstrap instanceof AsyncActivityResultFulfilled)
|
|
64
|
-
return {
|
|
68
|
+
return {
|
|
69
|
+
id: activity.id,
|
|
70
|
+
type: 'async',
|
|
71
|
+
status: 'fulfilled',
|
|
72
|
+
output: bootstrap.payload,
|
|
73
|
+
};
|
|
65
74
|
if (bootstrap instanceof AsyncActivityResultRejected)
|
|
66
|
-
return {
|
|
75
|
+
return {
|
|
76
|
+
id: activity.id,
|
|
77
|
+
type: 'async',
|
|
78
|
+
status: 'rejected',
|
|
79
|
+
output: bootstrap.payload,
|
|
80
|
+
};
|
|
67
81
|
if (!(bootstrap instanceof AsyncActivityResultPending))
|
|
68
82
|
throw new Error('Unknown async activity result');
|
|
69
83
|
const name = activity.constructor.name;
|
|
@@ -81,18 +95,38 @@ async function resolveAsyncActivity(activity, bootstrap, context, input, mockAsy
|
|
|
81
95
|
async function outcomeToHistoryItem(activity, outcome, pending, context, name) {
|
|
82
96
|
switch (outcome.status) {
|
|
83
97
|
case 'fulfilled':
|
|
84
|
-
return {
|
|
98
|
+
return {
|
|
99
|
+
id: activity.id,
|
|
100
|
+
type: 'async',
|
|
101
|
+
status: 'fulfilled',
|
|
102
|
+
output: outcome.output,
|
|
103
|
+
};
|
|
85
104
|
case 'rejected':
|
|
86
|
-
return {
|
|
105
|
+
return {
|
|
106
|
+
id: activity.id,
|
|
107
|
+
type: 'async',
|
|
108
|
+
status: 'rejected',
|
|
109
|
+
output: outcome.reason,
|
|
110
|
+
};
|
|
87
111
|
case 'timeout': {
|
|
88
112
|
const onTimeout = activity.onTimeout?.bind(activity);
|
|
89
113
|
if (!onTimeout)
|
|
90
114
|
throw new Error(`Async activity "${name}" timed out but defines no onTimeout handler`);
|
|
91
115
|
const result = await Internals.runActivity(activity, context, () => onTimeout(pending));
|
|
92
116
|
if (result instanceof AsyncActivityResultFulfilled)
|
|
93
|
-
return {
|
|
117
|
+
return {
|
|
118
|
+
id: activity.id,
|
|
119
|
+
type: 'async',
|
|
120
|
+
status: 'fulfilled',
|
|
121
|
+
output: result.payload,
|
|
122
|
+
};
|
|
94
123
|
if (result instanceof AsyncActivityResultRejected)
|
|
95
|
-
return {
|
|
124
|
+
return {
|
|
125
|
+
id: activity.id,
|
|
126
|
+
type: 'async',
|
|
127
|
+
status: 'rejected',
|
|
128
|
+
output: result.payload,
|
|
129
|
+
};
|
|
96
130
|
throw new Error(`Async activity "${name}" stayed pending after onTimeout`);
|
|
97
131
|
}
|
|
98
132
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-workflow.js","sourceRoot":"","sources":["../../src/testing/run-workflow.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,GAEd,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,yCAAyC,CAAA;AAEhD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AA0BjD,SAAS,mBAAmB,CAC1B,QAAyC;IAEzC,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;IAE3B,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAE1B,IAAI,CAAC,IAAI;YACP,MAAM,IAAI,KAAK,CACb,sCAAsC,QAAQ,CAAC,WAAW,CAAC,IAAI,aAAa,OAAO,CAAC,KAAK,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CACtI,CAAA;QAEH,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;AACH,CAAC;AAED,SAAS,0BAA0B,CACjC,IAA0D;IAE1D,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAA;IAE3B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAEzD,OAAO,IAAyB,CAAA;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAW,EACX,KAAuB,EACvB,UAA8B,EAAE;IAEhC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAA;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAA;IAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAA;IAE3C,MAAM,OAAO,GAAkB,EAAE,CAAA;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAA;IAC/B,MAAM,KAAK,GAAG,0BAA0B,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACnE,MAAM,eAAe,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;IAEpC,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,KAAK,EACL,eAAe,CAChB,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;AAED,KAAK,UAAU,eAAe,CAC5B,IAA4B,EAC5B,
|
|
1
|
+
{"version":3,"file":"run-workflow.js","sourceRoot":"","sources":["../../src/testing/run-workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ export declare namespace Internals {
|
|
|
14
14
|
}
|
|
15
15
|
function runWorkflow<T extends Workflow<any, any>>(workflow: T, context: WorkflowRunContext<T>): any;
|
|
16
16
|
interface ActivityRunContext {
|
|
17
|
+
id: string;
|
|
17
18
|
claims: readonly ClaimProvider<any>[];
|
|
18
19
|
env: Env.Entries;
|
|
19
20
|
}
|
|
@@ -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,OAS/B;IAED,UAAiB,kBAAkB;QACjC,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,
|
|
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,OAS/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
|
@@ -12,6 +12,7 @@ export var Internals;
|
|
|
12
12
|
const activity = typeof activityOrActivityConstructor === 'function'
|
|
13
13
|
? new activityOrActivityConstructor()
|
|
14
14
|
: activityOrActivityConstructor;
|
|
15
|
+
activity.id = context.id;
|
|
15
16
|
return Env.run(context.env, () => Claim.run(context.claims, () => fn(activity)));
|
|
16
17
|
}
|
|
17
18
|
Internals.runActivity = runActivity;
|
|
@@ -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,CA4CzB;AA5CD,WAAiB,SAAS;IASxB,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,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,CAChC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAC3D,CACF,CACF,CAAA;IACH,CAAC;IAXe,qBAAW,cAW1B,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,EA5CgB,SAAS,KAAT,SAAS,QA4CzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@t4h.framework/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.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",
|
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"ajv": "^8.18.0",
|
|
43
|
-
"typebox": "^1.1.6"
|
|
43
|
+
"typebox": "^1.1.6",
|
|
44
|
+
"uuidv7": "^1.2.1"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
46
47
|
"@vitest/coverage-v8": "^4.0.18",
|
|
@@ -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 { Activity } from '../models/Activity.js';
|
|
2
|
-
import type { ClaimProvider } from '../models/Claim.js';
|
|
3
|
-
import type { Env } from '../models/Env.js';
|
|
4
|
-
import type { Log } from '../models/Logger.js';
|
|
5
|
-
import type { AsyncActivityOutcome } from './types.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":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACrD,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;AAG9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD,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;AAuFD,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,12 +0,0 @@
|
|
|
1
|
-
export interface TestClockRunOptions {
|
|
2
|
-
now?: Date | number;
|
|
3
|
-
}
|
|
4
|
-
export declare class TestClock {
|
|
5
|
-
static run<T>(options: TestClockRunOptions, fn: () => T): T;
|
|
6
|
-
static isActive(): boolean;
|
|
7
|
-
static now(): number;
|
|
8
|
-
static advance(ms: number): void;
|
|
9
|
-
static set(now: Date | number): void;
|
|
10
|
-
static sleep(ms: number): void;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=TestClock.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestClock.d.ts","sourceRoot":"","sources":["../../src/testing/TestClock.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CACpB;AAqBD,qBAAa,SAAS;WACN,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;WA8BpD,QAAQ,IAAI,OAAO;WAInB,GAAG,IAAI,MAAM;WAIb,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;WAWzB,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI;WAW7B,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAGtC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
-
const storage = new AsyncLocalStorage();
|
|
3
|
-
const OriginalDate = globalThis.Date;
|
|
4
|
-
function createPatchedDateConstructor() {
|
|
5
|
-
const PatchedDate = class extends OriginalDate {
|
|
6
|
-
constructor(...args) {
|
|
7
|
-
if (args.length === 0) {
|
|
8
|
-
super(TestClock.now());
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
super(...args);
|
|
12
|
-
}
|
|
13
|
-
static now() {
|
|
14
|
-
return TestClock.now();
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
return PatchedDate;
|
|
18
|
-
}
|
|
19
|
-
export class TestClock {
|
|
20
|
-
static run(options, fn) {
|
|
21
|
-
const now = options.now instanceof Date
|
|
22
|
-
? options.now.getTime()
|
|
23
|
-
: (options.now ?? OriginalDate.now());
|
|
24
|
-
return storage.run({ now }, () => {
|
|
25
|
-
const PatchedDate = createPatchedDateConstructor();
|
|
26
|
-
globalThis.Date = PatchedDate;
|
|
27
|
-
const finish = () => {
|
|
28
|
-
globalThis.Date = OriginalDate;
|
|
29
|
-
};
|
|
30
|
-
try {
|
|
31
|
-
const result = fn();
|
|
32
|
-
if (result instanceof Promise)
|
|
33
|
-
return result.finally(finish);
|
|
34
|
-
finish();
|
|
35
|
-
return result;
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
finish();
|
|
39
|
-
throw error;
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
static isActive() {
|
|
44
|
-
return storage.getStore() !== undefined;
|
|
45
|
-
}
|
|
46
|
-
static now() {
|
|
47
|
-
return storage.getStore()?.now ?? OriginalDate.now();
|
|
48
|
-
}
|
|
49
|
-
static advance(ms) {
|
|
50
|
-
const state = storage.getStore();
|
|
51
|
-
if (!state)
|
|
52
|
-
throw new Error('TestClock.advance() must be called inside TestClock.run() or WorkflowTesting.run({ clock: ... })');
|
|
53
|
-
state.now += ms;
|
|
54
|
-
}
|
|
55
|
-
static set(now) {
|
|
56
|
-
const state = storage.getStore();
|
|
57
|
-
if (!state)
|
|
58
|
-
throw new Error('TestClock.set() must be called inside TestClock.run() or WorkflowTesting.run({ clock: ... })');
|
|
59
|
-
state.now = now instanceof Date ? now.getTime() : now;
|
|
60
|
-
}
|
|
61
|
-
static sleep(ms) {
|
|
62
|
-
TestClock.advance(ms);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=TestClock.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestClock.js","sourceRoot":"","sources":["../../src/testing/TestClock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAMpD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAkB,CAAA;AAEvD,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAA;AAMpC,SAAS,4BAA4B;IACnC,MAAM,WAAW,GAAG,KAAM,SAAQ,YAAY;QAC5C,YAAY,GAAG,IAAmC;YAChD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAA;gBACtB,OAAM;YACR,CAAC;YAED,KAAK,CAAC,GAAI,IAAmD,CAAC,CAAA;QAChE,CAAC;QAEM,MAAM,CAAC,GAAG;YACf,OAAO,SAAS,CAAC,GAAG,EAAE,CAAA;QACxB,CAAC;KACF,CAAA;IAED,OAAO,WAA8B,CAAA;AACvC,CAAC;AAED,MAAM,OAAO,SAAS;IACb,MAAM,CAAC,GAAG,CAAI,OAA4B,EAAE,EAAW;QAC5D,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,YAAY,IAAI;YACzB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE;YACvB,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC,CAAA;QAEzC,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE;YAC/B,MAAM,WAAW,GAAG,4BAA4B,EAAE,CAAA;YAClD,UAAU,CAAC,IAAI,GAAG,WAAW,CAAA;YAE7B,MAAM,MAAM,GAAG,GAAG,EAAE;gBAClB,UAAU,CAAC,IAAI,GAAG,YAAY,CAAA;YAChC,CAAC,CAAA;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,EAAE,EAAE,CAAA;gBAEnB,IAAI,MAAM,YAAY,OAAO;oBAC3B,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAM,CAAA;gBAEpC,MAAM,EAAE,CAAA;gBAER,OAAO,MAAM,CAAA;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,EAAE,CAAA;gBACR,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,MAAM,CAAC,QAAQ;QACpB,OAAO,OAAO,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAA;IACzC,CAAC;IAEM,MAAM,CAAC,GAAG;QACf,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,CAAA;IACtD,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,EAAU;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;QAEhC,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAA;QAEH,KAAK,CAAC,GAAG,IAAI,EAAE,CAAA;IACjB,CAAC;IAEM,MAAM,CAAC,GAAG,CAAC,GAAkB;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;QAEhC,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAA;QAEH,KAAK,CAAC,GAAG,GAAG,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;IACvD,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,EAAU;QAC5B,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC;CACF"}
|
|
@@ -1,39 +0,0 @@
|
|
|
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 MockAsyncActivityInput } from './run-workflow.js';
|
|
7
|
-
export interface TestWorkflowEnvironmentOptions {
|
|
8
|
-
now?: Date | number;
|
|
9
|
-
strict?: boolean;
|
|
10
|
-
autoResolveTimeouts?: boolean;
|
|
11
|
-
}
|
|
12
|
-
export interface TestWorkflowEnvironmentExecuteOptions {
|
|
13
|
-
claims?: readonly ClaimProvider<any>[];
|
|
14
|
-
env?: Env.Entries;
|
|
15
|
-
mockAsyncActivity?: MockAsyncActivityInput;
|
|
16
|
-
maxTicks?: number;
|
|
17
|
-
}
|
|
18
|
-
export declare class TestWorkflowEnvironment {
|
|
19
|
-
private readonly strict;
|
|
20
|
-
private readonly autoResolveTimeouts;
|
|
21
|
-
private currentNow;
|
|
22
|
-
private disposed;
|
|
23
|
-
private lastRun?;
|
|
24
|
-
private constructor();
|
|
25
|
-
static create(options?: TestWorkflowEnvironmentOptions): TestWorkflowEnvironment;
|
|
26
|
-
get history(): readonly HistoryItem[];
|
|
27
|
-
get logs(): readonly Log[];
|
|
28
|
-
readonly clock: {
|
|
29
|
-
now: () => number;
|
|
30
|
-
advance: (ms: number) => void;
|
|
31
|
-
sleep: (ms: number) => void;
|
|
32
|
-
set: (now: Date | number) => void;
|
|
33
|
-
};
|
|
34
|
-
execute<T extends Workflow<any, any>>(workflow: T, input?: WorkflowInput<T>, options?: TestWorkflowEnvironmentExecuteOptions): Promise<unknown>;
|
|
35
|
-
assertReplayable(): Promise<void>;
|
|
36
|
-
teardown(): void;
|
|
37
|
-
private assertActive;
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=TestWorkflowEnvironment.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestWorkflowEnvironment.d.ts","sourceRoot":"","sources":["../../src/testing/TestWorkflowEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAGpE,OAAO,EAGL,KAAK,sBAAsB,EAE5B,MAAM,mBAAmB,CAAA;AAG1B,MAAM,WAAW,8BAA8B;IAC7C,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED,MAAM,WAAW,qCAAqC;IACpD,MAAM,CAAC,EAAE,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAA;IACtC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACjB,iBAAiB,CAAC,EAAE,sBAAsB,CAAA;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAaD,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAE7C,OAAO,CAAC,UAAU,CAAQ;IAE1B,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,CAAC,OAAO,CAAC,CAAkB;IAElC,OAAO;WAUO,MAAM,CAClB,OAAO,GAAE,8BAAmC,GAC3C,uBAAuB;IAI1B,IAAW,OAAO,IAAI,SAAS,WAAW,EAAE,CAE3C;IAED,IAAW,IAAI,IAAI,SAAS,GAAG,EAAE,CAEhC;IAED,SAAgB,KAAK;;sBAGL,MAAM;oBAMR,MAAM;mBAIP,IAAI,GAAG,MAAM;MAKzB;IAEY,OAAO,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAC/C,QAAQ,EAAE,CAAC,EACX,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EACxB,OAAO,GAAE,qCAA0C;IAkDxC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IA8CvC,QAAQ,IAAI,IAAI;IAKvB,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { Internals } from '../tools/Internals.js';
|
|
2
|
-
import { NonDeterministicWorkflowError } from './NonDeterministicWorkflowError.js';
|
|
3
|
-
import { runWorkflowDetailed, runWorkflowTicks, } from './run-workflow.js';
|
|
4
|
-
import { TestClock } from './TestClock.js';
|
|
5
|
-
export class TestWorkflowEnvironment {
|
|
6
|
-
strict;
|
|
7
|
-
autoResolveTimeouts;
|
|
8
|
-
currentNow;
|
|
9
|
-
disposed = false;
|
|
10
|
-
lastRun;
|
|
11
|
-
constructor(options) {
|
|
12
|
-
this.currentNow =
|
|
13
|
-
options.now instanceof Date
|
|
14
|
-
? options.now.getTime()
|
|
15
|
-
: (options.now ?? 0);
|
|
16
|
-
this.strict = options.strict ?? true;
|
|
17
|
-
this.autoResolveTimeouts = options.autoResolveTimeouts ?? true;
|
|
18
|
-
}
|
|
19
|
-
static create(options = {}) {
|
|
20
|
-
return new TestWorkflowEnvironment(options);
|
|
21
|
-
}
|
|
22
|
-
get history() {
|
|
23
|
-
return this.lastRun?.history ?? [];
|
|
24
|
-
}
|
|
25
|
-
get logs() {
|
|
26
|
-
return this.lastRun?.logs ?? [];
|
|
27
|
-
}
|
|
28
|
-
clock = {
|
|
29
|
-
now: () => this.currentNow,
|
|
30
|
-
advance: (ms) => {
|
|
31
|
-
this.currentNow += ms;
|
|
32
|
-
if (TestClock.isActive())
|
|
33
|
-
TestClock.advance(ms);
|
|
34
|
-
},
|
|
35
|
-
sleep: (ms) => {
|
|
36
|
-
this.clock.advance(ms);
|
|
37
|
-
},
|
|
38
|
-
set: (now) => {
|
|
39
|
-
this.currentNow = now instanceof Date ? now.getTime() : now;
|
|
40
|
-
if (TestClock.isActive())
|
|
41
|
-
TestClock.set(now);
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
async execute(workflow, input, options = {}) {
|
|
45
|
-
this.assertActive();
|
|
46
|
-
const history = [];
|
|
47
|
-
const logs = [];
|
|
48
|
-
const claims = options.claims ?? [];
|
|
49
|
-
const env = options.env ?? {};
|
|
50
|
-
const workflowInput = input;
|
|
51
|
-
const runOptions = {
|
|
52
|
-
claims,
|
|
53
|
-
env,
|
|
54
|
-
history,
|
|
55
|
-
logs,
|
|
56
|
-
clock: { now: this.currentNow },
|
|
57
|
-
strict: this.strict,
|
|
58
|
-
autoResolveTimeouts: this.autoResolveTimeouts,
|
|
59
|
-
maxTicks: options.maxTicks,
|
|
60
|
-
};
|
|
61
|
-
if (options.mockAsyncActivity !== undefined)
|
|
62
|
-
runOptions.mockAsyncActivity = options.mockAsyncActivity;
|
|
63
|
-
const result = await TestClock.run({ now: this.currentNow }, async () => {
|
|
64
|
-
const runResult = await runWorkflowDetailed(workflow, workflowInput, runOptions);
|
|
65
|
-
this.currentNow = TestClock.now();
|
|
66
|
-
return runResult;
|
|
67
|
-
});
|
|
68
|
-
this.lastRun = {
|
|
69
|
-
workflow,
|
|
70
|
-
input: workflowInput,
|
|
71
|
-
output: result.output,
|
|
72
|
-
history: [...history],
|
|
73
|
-
logs: [...logs],
|
|
74
|
-
claims,
|
|
75
|
-
env,
|
|
76
|
-
mockAsyncActivity: options.mockAsyncActivity,
|
|
77
|
-
};
|
|
78
|
-
return result.output;
|
|
79
|
-
}
|
|
80
|
-
async assertReplayable() {
|
|
81
|
-
this.assertActive();
|
|
82
|
-
const lastRun = this.lastRun;
|
|
83
|
-
if (!lastRun)
|
|
84
|
-
throw new Error('No workflow execution to replay. Call execute() before assertReplayable().');
|
|
85
|
-
const replayResult = await TestClock.run({ now: this.currentNow }, () => Internals.runWorkflow(lastRun.workflow, {
|
|
86
|
-
input: lastRun.input,
|
|
87
|
-
claims: lastRun.claims,
|
|
88
|
-
env: lastRun.env,
|
|
89
|
-
history: structuredClone(lastRun.history),
|
|
90
|
-
logs: [],
|
|
91
|
-
}));
|
|
92
|
-
if (!isEqual(lastRun.output, replayResult))
|
|
93
|
-
throw new NonDeterministicWorkflowError('Replay from recorded history produced a different workflow output.');
|
|
94
|
-
const history = [];
|
|
95
|
-
await TestClock.run({ now: this.currentNow }, () => runWorkflowTicks(lastRun.workflow, lastRun.input, {
|
|
96
|
-
claims: lastRun.claims,
|
|
97
|
-
env: lastRun.env,
|
|
98
|
-
history,
|
|
99
|
-
logs: [],
|
|
100
|
-
strict: this.strict,
|
|
101
|
-
autoResolveTimeouts: this.autoResolveTimeouts,
|
|
102
|
-
mockAsyncActivity: lastRun.mockAsyncActivity,
|
|
103
|
-
maxTicks: 10_000,
|
|
104
|
-
}));
|
|
105
|
-
if (!isEqual(lastRun.history, history))
|
|
106
|
-
throw new NonDeterministicWorkflowError('A second workflow run produced a different activity history. Workflow code may be non-deterministic.');
|
|
107
|
-
}
|
|
108
|
-
teardown() {
|
|
109
|
-
this.disposed = true;
|
|
110
|
-
this.lastRun = undefined;
|
|
111
|
-
}
|
|
112
|
-
assertActive() {
|
|
113
|
-
if (this.disposed)
|
|
114
|
-
throw new Error('TestWorkflowEnvironment has been torn down. Create a new environment with TestWorkflowEnvironment.create().');
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
function isEqual(left, right) {
|
|
118
|
-
return JSON.stringify(left) === JSON.stringify(right);
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=TestWorkflowEnvironment.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TestWorkflowEnvironment.js","sourceRoot":"","sources":["../../src/testing/TestWorkflowEnvironment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-resolve-timeouts.d.ts","sourceRoot":"","sources":["../../src/testing/auto-resolve-timeouts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,wBAAgB,mBAAmB,CACjC,QAAQ,CAAC,EAAE,iBAAiB,GAC3B,iBAAiB,CAmBnB"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { TestClock } from './TestClock.js';
|
|
2
|
-
export function autoResolveTimeouts(fallback) {
|
|
3
|
-
return (activity, context) => {
|
|
4
|
-
const { pending } = context;
|
|
5
|
-
if (pending.timeoutAt) {
|
|
6
|
-
const target = pending.timeoutAt.getTime();
|
|
7
|
-
if (TestClock.isActive() && TestClock.now() < target)
|
|
8
|
-
TestClock.advance(target - TestClock.now());
|
|
9
|
-
return { status: 'timeout' };
|
|
10
|
-
}
|
|
11
|
-
if (fallback)
|
|
12
|
-
return fallback(activity, context);
|
|
13
|
-
throw new Error(`Async activity "${activity.constructor.name}" is pending without timeoutAt and autoResolveTimeouts has no fallback`);
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=auto-resolve-timeouts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-resolve-timeouts.js","sourceRoot":"","sources":["../../src/testing/auto-resolve-timeouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG1C,MAAM,UAAU,mBAAmB,CACjC,QAA4B;IAE5B,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;QAC3B,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;QAE3B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;YAE1C,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM;gBAClD,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,CAAA;YAE7C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;QAC9B,CAAC;QAED,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAEhD,MAAM,IAAI,KAAK,CACb,mBAAmB,QAAQ,CAAC,WAAW,CAAC,IAAI,wEAAwE,CACrH,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,5 +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>(ClaimClass: T, implementation?: Partial<InstanceType<T>>): InstanceType<T>;
|
|
4
|
-
export declare function mockClaim<T extends ClaimConstructor>(ClaimClass: T, implementation?: Partial<InstanceType<T>>): ClaimProvider<InstanceType<T>>;
|
|
5
|
-
//# 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,9 +0,0 @@
|
|
|
1
|
-
import type { ClaimConstructor } from './types.js';
|
|
2
|
-
import type { ClaimProvider } from '../models/Claim.js';
|
|
3
|
-
export declare function createMockClaims(...providers: readonly ClaimProvider<any>[]): readonly ClaimProvider<any>[];
|
|
4
|
-
export type MockClaimEntry = readonly [
|
|
5
|
-
claim: ClaimConstructor,
|
|
6
|
-
implementation?: Partial<InstanceType<ClaimConstructor>>
|
|
7
|
-
];
|
|
8
|
-
export declare function createMockClaimsFromMap(entries: readonly MockClaimEntry[]): readonly ClaimProvider<any>[];
|
|
9
|
-
//# 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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { mockClaim } from './create-mock-claim.js';
|
|
2
|
-
export function createMockClaims(...providers) {
|
|
3
|
-
return providers;
|
|
4
|
-
}
|
|
5
|
-
export function createMockClaimsFromMap(entries) {
|
|
6
|
-
return entries.map(([ClaimClass, implementation]) => mockClaim(ClaimClass, implementation ?? {}));
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=create-mock-claims.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-mock-claims.js","sourceRoot":"","sources":["../../src/testing/create-mock-claims.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAIlD,MAAM,UAAU,gBAAgB,CAC9B,GAAG,SAAwC;IAE3C,OAAO,SAAS,CAAA;AAClB,CAAC;AAOD,MAAM,UAAU,uBAAuB,CACrC,OAAkC;IAElC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,EAAE,CAClD,SAAS,CAAC,UAAU,EAAE,cAAc,IAAI,EAAE,CAAC,CAC5C,CAAA;AACH,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { Env } from '../models/Env.js';
|
|
2
|
-
export declare function createTestEnv(overrides: Record<string, string | undefined>, base?: Record<string, string | undefined>): Record<string, string | undefined>;
|
|
3
|
-
export declare function createTestEnvEntries(overrides: Record<string, string | undefined>, base?: Record<string, string | undefined>): Env.Entries;
|
|
4
|
-
//# sourceMappingURL=create-test-env.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-test-env.d.ts","sourceRoot":"","sources":["../../src/testing/create-test-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC7C,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,GAC5C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAEpC;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC7C,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAM,GAC5C,GAAG,CAAC,OAAO,CAEb"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-test-env.js","sourceRoot":"","sources":["../../src/testing/create-test-env.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAC3B,SAA6C,EAC7C,OAA2C,EAAE;IAE7C,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,EAAE,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,SAA6C,EAC7C,OAA2C,EAAE;IAE7C,OAAO,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACvC,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { AnyAsyncActivity } from '../models/AsyncActivity.js';
|
|
2
|
-
import type { AsyncActivityOutcome, ClaimConstructor, MockAsyncActivity, MockAsyncActivityContext } from './types.js';
|
|
3
|
-
type ActivityHandler = AsyncActivityOutcome | ((activity: AnyAsyncActivity, context: MockAsyncActivityContext) => AsyncActivityOutcome | Promise<AsyncActivityOutcome>);
|
|
4
|
-
type ActivityHandlerEntry = readonly [
|
|
5
|
-
activity: ClaimConstructor,
|
|
6
|
-
handler: ActivityHandler
|
|
7
|
-
];
|
|
8
|
-
export declare function mockAsyncByActivity(entries: readonly ActivityHandlerEntry[], fallback?: MockAsyncActivity): MockAsyncActivity;
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=mock-async-by-activity.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-async-by-activity.d.ts","sourceRoot":"","sources":["../../src/testing/mock-async-by-activity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,YAAY,CAAA;AAEnB,KAAK,eAAe,GAChB,oBAAoB,GACpB,CAAC,CACC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,wBAAwB,KAC9B,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAE9D,KAAK,oBAAoB,GAAG,SAAS;IACnC,QAAQ,EAAE,gBAAgB;IAC1B,OAAO,EAAE,eAAe;CACzB,CAAA;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,QAAQ,CAAC,EAAE,iBAAiB,GAC3B,iBAAiB,CAgBnB"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export function mockAsyncByActivity(entries, fallback) {
|
|
2
|
-
return async (activity, context) => {
|
|
3
|
-
for (const [ActivityClass, handler] of entries) {
|
|
4
|
-
if (!(activity instanceof ActivityClass))
|
|
5
|
-
continue;
|
|
6
|
-
if (typeof handler === 'function')
|
|
7
|
-
return handler(activity, context);
|
|
8
|
-
return handler;
|
|
9
|
-
}
|
|
10
|
-
if (fallback)
|
|
11
|
-
return fallback(activity, context);
|
|
12
|
-
throw new Error(`No mockAsyncByActivity handler for "${activity.constructor.name}" (index: ${context.index})`);
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=mock-async-by-activity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-async-by-activity.js","sourceRoot":"","sources":["../../src/testing/mock-async-by-activity.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,mBAAmB,CACjC,OAAwC,EACxC,QAA4B;IAE5B,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QACjC,KAAK,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;YAC/C,IAAI,CAAC,CAAC,QAAQ,YAAY,aAAa,CAAC;gBAAE,SAAQ;YAElD,IAAI,OAAO,OAAO,KAAK,UAAU;gBAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAEpE,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAEhD,MAAM,IAAI,KAAK,CACb,uCAAuC,QAAQ,CAAC,WAAW,CAAC,IAAI,aAAa,OAAO,CAAC,KAAK,GAAG,CAC9F,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-async-activities-in-order.d.ts","sourceRoot":"","sources":["../../src/testing/resolve-async-activities-in-order.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEzE,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,SAAS,oBAAoB,EAAE,GACxC,iBAAiB,CAanB"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export function resolveAsyncActivitiesInOrder(outcomes) {
|
|
2
|
-
const queue = [...outcomes];
|
|
3
|
-
return (activity, context) => {
|
|
4
|
-
const next = queue.shift();
|
|
5
|
-
if (!next)
|
|
6
|
-
throw new Error(`No more async outcomes (activity: "${activity.constructor.name}", index: ${context.index}, input: ${JSON.stringify(context.input)})`);
|
|
7
|
-
return next;
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=resolve-async-activities-in-order.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-async-activities-in-order.js","sourceRoot":"","sources":["../../src/testing/resolve-async-activities-in-order.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,6BAA6B,CAC3C,QAAyC;IAEzC,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;IAE3B,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAE1B,IAAI,CAAC,IAAI;YACP,MAAM,IAAI,KAAK,CACb,sCAAsC,QAAQ,CAAC,WAAW,CAAC,IAAI,aAAa,OAAO,CAAC,KAAK,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CACtI,CAAA;QAEH,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;AACH,CAAC"}
|
package/dist/testing/types.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
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
|
-
index: 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
|
|
@@ -1 +0,0 @@
|
|
|
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,KAAK,EAAE,MAAM,CAAA;CACd;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"}
|
package/dist/testing/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/testing/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { AsyncActivity } from '../models/AsyncActivity.js';
|
|
2
|
-
import type { ClaimProvider } from '../models/Claim.js';
|
|
3
|
-
import { Env } from '../models/Env.js';
|
|
4
|
-
import type { Log } from '../models/Logger.js';
|
|
5
|
-
import type { Workflow, WorkflowInput } from '../models/Workflow.js';
|
|
6
|
-
export type AsyncActivityResolver = (activity: AsyncActivity<any, any, any, any, any, any>, input: unknown) => unknown | Promise<unknown>;
|
|
7
|
-
export interface RunWorkflowToCompletionOptions {
|
|
8
|
-
claims?: readonly ClaimProvider<any>[];
|
|
9
|
-
env?: Env.Entries;
|
|
10
|
-
resolveAsyncActivity?: AsyncActivityResolver;
|
|
11
|
-
maxTicks?: number;
|
|
12
|
-
logs?: Log[];
|
|
13
|
-
}
|
|
14
|
-
export declare function runWorkflowToCompletion<T extends Workflow<any, any>>(workflow: T, input: WorkflowInput<T>, options?: RunWorkflowToCompletionOptions): Promise<any>;
|
|
15
|
-
//# sourceMappingURL=runWorkflowToCompletion.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runWorkflowToCompletion.d.ts","sourceRoot":"","sources":["../../src/tools/runWorkflowToCompletion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAM1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAEtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAG9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAGpE,MAAM,MAAM,qBAAqB,GAAG,CAClC,QAAQ,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACrD,KAAK,EAAE,OAAO,KACX,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE/B,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,EAAE,SAAS,aAAa,CAAC,GAAG,CAAC,EAAE,CAAA;IACtC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACjB,oBAAoB,CAAC,EAAE,qBAAqB,CAAA;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;CACb;AAED,wBAAsB,uBAAuB,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EACxE,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,OAAO,GAAE,8BAAmC,gBAgC7C"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { AsyncActivity } from '../models/AsyncActivity.js';
|
|
2
|
-
import { AsyncActivityResultFulfilled, AsyncActivityResultPending, AsyncActivityResultRejected, } from '../models/AsyncActivityAdvanceResult.js';
|
|
3
|
-
import { Env } from '../models/Env.js';
|
|
4
|
-
import { PushActivity } from '../models/PushActivity.js';
|
|
5
|
-
import { SyncActivity } from '../models/SyncActivity.js';
|
|
6
|
-
import { Internals } from './Internals.js';
|
|
7
|
-
export async function runWorkflowToCompletion(workflow, input, options = {}) {
|
|
8
|
-
const claims = options.claims ?? [];
|
|
9
|
-
const env = options.env ?? {};
|
|
10
|
-
const maxTicks = options.maxTicks ?? 10_000;
|
|
11
|
-
const history = [];
|
|
12
|
-
const logs = options.logs ?? [];
|
|
13
|
-
for (let tick = 0; tick < maxTicks; tick++) {
|
|
14
|
-
try {
|
|
15
|
-
return await Internals.runWorkflow(workflow, {
|
|
16
|
-
input,
|
|
17
|
-
claims,
|
|
18
|
-
env,
|
|
19
|
-
history,
|
|
20
|
-
logs,
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
catch (pushOrError) {
|
|
24
|
-
if (!(pushOrError instanceof PushActivity))
|
|
25
|
-
throw pushOrError;
|
|
26
|
-
const item = await resolveActivity(pushOrError, { claims, env }, options.resolveAsyncActivity);
|
|
27
|
-
history.push(item);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
throw new Error(`Workflow did not settle within ${maxTicks} ticks`);
|
|
31
|
-
}
|
|
32
|
-
async function resolveActivity(push, context, resolver) {
|
|
33
|
-
const activity = push.activity;
|
|
34
|
-
if (activity instanceof SyncActivity) {
|
|
35
|
-
const output = await Internals.runActivity(activity, context, instance => instance.run(push.input));
|
|
36
|
-
return { type: 'sync', output };
|
|
37
|
-
}
|
|
38
|
-
if (activity instanceof AsyncActivity) {
|
|
39
|
-
const bootstrap = await Internals.runActivity(activity, context, instance => instance.bootstrap(push.input));
|
|
40
|
-
const settled = await settleAsyncActivity(activity, bootstrap, context, push.input, resolver);
|
|
41
|
-
return settled;
|
|
42
|
-
}
|
|
43
|
-
throw new Error('Unknown activity type');
|
|
44
|
-
}
|
|
45
|
-
async function settleAsyncActivity(activity, result, context, input, resolver) {
|
|
46
|
-
if (result instanceof AsyncActivityResultFulfilled)
|
|
47
|
-
return { type: 'async', status: 'fulfilled', output: result.payload };
|
|
48
|
-
if (result instanceof AsyncActivityResultRejected)
|
|
49
|
-
return { type: 'async', status: 'rejected', output: result.payload };
|
|
50
|
-
if (!(result instanceof AsyncActivityResultPending))
|
|
51
|
-
throw new Error('Unknown async activity result');
|
|
52
|
-
const name = activity.constructor.name;
|
|
53
|
-
if (!resolver)
|
|
54
|
-
throw new Error(`Async activity "${name}" is pending and no resolveAsyncActivity was provided`);
|
|
55
|
-
const payload = await resolver(activity, input);
|
|
56
|
-
const advanced = await Internals.runActivity(activity, context, instance => instance.advance(payload, result));
|
|
57
|
-
if (advanced instanceof AsyncActivityResultPending)
|
|
58
|
-
throw new Error(`Async activity "${name}" stayed pending after advance`);
|
|
59
|
-
return settleAsyncActivity(activity, advanced, context, input, resolver);
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=runWorkflowToCompletion.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runWorkflowToCompletion.js","sourceRoot":"","sources":["../../src/tools/runWorkflowToCompletion.ts"],"names":[],"mappings":"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"}
|