@t4h.framework/core 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/.ai/skills/framework-core/SKILL.md +103 -287
  2. package/.ai/skills/framework-workflow-creation/SKILL.md +108 -60
  3. package/.ai/skills/framework-workflow-testing/SKILL.md +165 -111
  4. package/README.md +123 -37
  5. package/dist/models/ExecutionContext.d.ts +8 -0
  6. package/dist/models/ExecutionContext.d.ts.map +1 -0
  7. package/dist/models/ExecutionContext.js +22 -0
  8. package/dist/models/ExecutionContext.js.map +1 -0
  9. package/dist/testing/ActivityTesting.d.ts +25 -0
  10. package/dist/testing/ActivityTesting.d.ts.map +1 -0
  11. package/dist/testing/ActivityTesting.js +74 -0
  12. package/dist/testing/ActivityTesting.js.map +1 -0
  13. package/dist/testing/NonDeterministicWorkflowError.d.ts +4 -0
  14. package/dist/testing/NonDeterministicWorkflowError.d.ts.map +1 -0
  15. package/dist/testing/NonDeterministicWorkflowError.js +7 -0
  16. package/dist/testing/NonDeterministicWorkflowError.js.map +1 -0
  17. package/dist/testing/StrictGuard.d.ts +4 -0
  18. package/dist/testing/StrictGuard.d.ts.map +1 -0
  19. package/dist/testing/StrictGuard.js +26 -0
  20. package/dist/testing/StrictGuard.js.map +1 -0
  21. package/dist/testing/TestClock.d.ts +12 -0
  22. package/dist/testing/TestClock.d.ts.map +1 -0
  23. package/dist/testing/TestClock.js +64 -0
  24. package/dist/testing/TestClock.js.map +1 -0
  25. package/dist/testing/TestWorkflowEnvironment.d.ts +27 -0
  26. package/dist/testing/TestWorkflowEnvironment.d.ts.map +1 -0
  27. package/dist/testing/TestWorkflowEnvironment.js +62 -0
  28. package/dist/testing/TestWorkflowEnvironment.js.map +1 -0
  29. package/dist/testing/WorkflowTesting.d.ts +1 -1
  30. package/dist/testing/async-activity-results.d.ts +12 -0
  31. package/dist/testing/async-activity-results.d.ts.map +1 -0
  32. package/dist/testing/async-activity-results.js +10 -0
  33. package/dist/testing/async-activity-results.js.map +1 -0
  34. package/dist/testing/create-mock-claim.d.ts +11 -0
  35. package/dist/testing/create-mock-claim.d.ts.map +1 -0
  36. package/dist/testing/create-mock-claim.js +26 -0
  37. package/dist/testing/create-mock-claim.js.map +1 -0
  38. package/dist/testing/create-mock-claims.d.ts +13 -0
  39. package/dist/testing/create-mock-claims.d.ts.map +1 -0
  40. package/dist/testing/create-mock-claims.js +8 -0
  41. package/dist/testing/create-mock-claims.js.map +1 -0
  42. package/dist/testing/create-test-env.d.ts +10 -0
  43. package/dist/testing/create-test-env.d.ts.map +1 -0
  44. package/dist/testing/create-test-env.js +7 -0
  45. package/dist/testing/create-test-env.js.map +1 -0
  46. package/dist/testing/exceptions/NonDeterministicWorkflowError.d.ts +4 -0
  47. package/dist/testing/exceptions/NonDeterministicWorkflowError.d.ts.map +1 -0
  48. package/dist/testing/exceptions/NonDeterministicWorkflowError.js +7 -0
  49. package/dist/testing/exceptions/NonDeterministicWorkflowError.js.map +1 -0
  50. package/dist/testing/index.d.ts +8 -1
  51. package/dist/testing/index.d.ts.map +1 -1
  52. package/dist/testing/index.js +8 -1
  53. package/dist/testing/index.js.map +1 -1
  54. package/dist/testing/mock-async.d.ts +48 -0
  55. package/dist/testing/mock-async.d.ts.map +1 -0
  56. package/dist/testing/mock-async.js +58 -0
  57. package/dist/testing/mock-async.js.map +1 -0
  58. package/dist/testing/outcomes.d.ts +12 -0
  59. package/dist/testing/outcomes.d.ts.map +1 -0
  60. package/dist/testing/outcomes.js +10 -0
  61. package/dist/testing/outcomes.js.map +1 -0
  62. package/dist/testing/run-workflow.d.ts +22 -21
  63. package/dist/testing/run-workflow.d.ts.map +1 -1
  64. package/dist/testing/run-workflow.js +47 -23
  65. package/dist/testing/run-workflow.js.map +1 -1
  66. package/dist/testing/tools/create-mock-claim.d.ts +5 -0
  67. package/dist/testing/tools/create-mock-claim.d.ts.map +1 -0
  68. package/dist/testing/tools/create-mock-claim.js +26 -0
  69. package/dist/testing/tools/create-mock-claim.js.map +1 -0
  70. package/dist/testing/tools/create-mock-claims.d.ts +8 -0
  71. package/dist/testing/tools/create-mock-claims.d.ts.map +1 -0
  72. package/dist/testing/tools/create-mock-claims.js +5 -0
  73. package/dist/testing/tools/create-mock-claims.js.map +1 -0
  74. package/dist/testing/tools/create-test-env.d.ts +4 -0
  75. package/dist/testing/tools/create-test-env.d.ts.map +1 -0
  76. package/dist/testing/tools/create-test-env.js +7 -0
  77. package/dist/testing/tools/create-test-env.js.map +1 -0
  78. package/dist/testing/tools/mock-async.d.ts +20 -0
  79. package/dist/testing/tools/mock-async.d.ts.map +1 -0
  80. package/dist/testing/tools/mock-async.js +57 -0
  81. package/dist/testing/tools/mock-async.js.map +1 -0
  82. package/dist/testing/tools/resolve-activity.d.ts +11 -0
  83. package/dist/testing/tools/resolve-activity.d.ts.map +1 -0
  84. package/dist/testing/tools/resolve-activity.js +23 -0
  85. package/dist/testing/tools/resolve-activity.js.map +1 -0
  86. package/dist/testing/tools/resolve-async-activity.d.ts +15 -0
  87. package/dist/testing/tools/resolve-async-activity.d.ts.map +1 -0
  88. package/dist/testing/tools/resolve-async-activity.js +69 -0
  89. package/dist/testing/tools/resolve-async-activity.js.map +1 -0
  90. package/dist/testing/tools/run-with-clock.d.ts +3 -0
  91. package/dist/testing/tools/run-with-clock.d.ts.map +1 -0
  92. package/dist/testing/tools/run-with-clock.js +7 -0
  93. package/dist/testing/tools/run-with-clock.js.map +1 -0
  94. package/dist/testing/tools/run-workflow-ticks.d.ts +8 -0
  95. package/dist/testing/tools/run-workflow-ticks.d.ts.map +1 -0
  96. package/dist/testing/tools/run-workflow-ticks.js +26 -0
  97. package/dist/testing/tools/run-workflow-ticks.js.map +1 -0
  98. package/dist/testing/tools/run-workflow.d.ts +25 -0
  99. package/dist/testing/tools/run-workflow.d.ts.map +1 -0
  100. package/dist/testing/tools/run-workflow.js +25 -0
  101. package/dist/testing/tools/run-workflow.js.map +1 -0
  102. package/dist/testing/types.d.ts +19 -0
  103. package/dist/testing/types.d.ts.map +1 -0
  104. package/dist/testing/types.js +2 -0
  105. package/dist/testing/types.js.map +1 -0
  106. package/dist/testing/typings/AsyncActivityResult.d.ts +10 -0
  107. package/dist/testing/typings/AsyncActivityResult.d.ts.map +1 -0
  108. package/dist/testing/typings/AsyncActivityResult.js +2 -0
  109. package/dist/testing/typings/AsyncActivityResult.js.map +1 -0
  110. package/dist/testing/typings/ClaimConstructor.d.ts +2 -0
  111. package/dist/testing/typings/ClaimConstructor.d.ts.map +1 -0
  112. package/dist/testing/typings/ClaimConstructor.js +2 -0
  113. package/dist/testing/typings/ClaimConstructor.js.map +1 -0
  114. package/dist/testing/typings/MockAsyncActivity.d.ts +10 -0
  115. package/dist/testing/typings/MockAsyncActivity.d.ts.map +1 -0
  116. package/dist/testing/typings/MockAsyncActivity.js +2 -0
  117. package/dist/testing/typings/MockAsyncActivity.js.map +1 -0
  118. package/package.json +1 -1
@@ -0,0 +1,20 @@
1
+ import { AsyncActivity, type AnyAsyncActivity } from '../../models/AsyncActivity.js';
2
+ import type { AsyncActivityResultPending } from '../../models/AsyncActivityAdvanceResult.js';
3
+ import type { AsyncActivityResult } from '../typings/AsyncActivityResult.js';
4
+ import type { MockAsyncActivity } from '../typings/MockAsyncActivity.js';
5
+ type InferSerializableOutput<T extends AnyAsyncActivity> = T extends AsyncActivity<any, any, infer TSerializableOutput, any, any, any> ? TSerializableOutput : unknown;
6
+ interface OnContext {
7
+ callCount: number;
8
+ input: unknown;
9
+ pending: AsyncActivityResultPending;
10
+ }
11
+ type OnCallback<T extends AnyAsyncActivity> = (activity: T, context: OnContext) => AsyncActivityResult<InferSerializableOutput<T>> | Promise<AsyncActivityResult<InferSerializableOutput<T>>>;
12
+ type OnHandler<T extends AnyAsyncActivity> = AsyncActivityResult<InferSerializableOutput<T>> | AsyncActivityResult<InferSerializableOutput<T>>[] | OnCallback<T>;
13
+ export interface MockAsyncBuilder extends MockAsyncActivity {
14
+ on<T extends AnyAsyncActivity>(ActivityClass: new () => T, handler: OnHandler<T>): MockAsyncBuilder;
15
+ timeout(): MockAsyncBuilder;
16
+ fallback(handler: MockAsyncActivity): MockAsyncBuilder;
17
+ }
18
+ export declare function mockAsync(): MockAsyncBuilder;
19
+ export {};
20
+ //# sourceMappingURL=mock-async.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-async.d.ts","sourceRoot":"","sources":["../../../src/testing/tools/mock-async.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAA;AACtC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAA;AAE5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC5E,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,iCAAiC,CAAA;AAExC,KAAK,uBAAuB,CAAC,CAAC,SAAS,gBAAgB,IACrD,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,mBAAmB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACvE,mBAAmB,GACnB,OAAO,CAAA;AAEb,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,0BAA0B,CAAA;CACpC;AAED,KAAK,UAAU,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAC5C,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,SAAS,KAEhB,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,GAC/C,OAAO,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE5D,KAAK,SAAS,CAAC,CAAC,SAAS,gBAAgB,IACrC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,GAC/C,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,GACjD,UAAU,CAAC,CAAC,CAAC,CAAA;AAQjB,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,EAAE,CAAC,CAAC,SAAS,gBAAgB,EAC3B,aAAa,EAAE,UAAU,CAAC,EAC1B,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GACpB,gBAAgB,CAAA;IAEnB,OAAO,IAAI,gBAAgB,CAAA;IAE3B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAAA;CACvD;AAED,wBAAgB,SAAS,IAAI,gBAAgB,CAkF5C"}
@@ -0,0 +1,57 @@
1
+ import { AsyncActivity, } from '../../models/AsyncActivity.js';
2
+ import { TestClock } from '../TestClock.js';
3
+ export function mockAsync() {
4
+ const entries = [];
5
+ let timeoutFallback = false;
6
+ let fallbackHandler;
7
+ const execute = async (activity, context) => {
8
+ for (const entry of entries) {
9
+ if (!(activity instanceof entry.ActivityClass))
10
+ continue;
11
+ const callCount = entry.callCount++;
12
+ const ctx = {
13
+ callCount,
14
+ input: context.input,
15
+ pending: context.pending,
16
+ };
17
+ if (typeof entry.handler === 'function')
18
+ return entry.handler(activity, ctx);
19
+ if (Array.isArray(entry.handler)) {
20
+ const result = entry.handler[callCount];
21
+ if (result === undefined)
22
+ throw new Error(`mockAsync().on(${activity.constructor.name}): no outcome at call ${callCount} (${entry.handler.length} defined)`);
23
+ return result;
24
+ }
25
+ return entry.handler;
26
+ }
27
+ if (timeoutFallback && context.pending.timeoutAt) {
28
+ const target = context.pending.timeoutAt.getTime();
29
+ if (TestClock.isActive() && TestClock.now() < target)
30
+ TestClock.advance(target - TestClock.now());
31
+ return { status: 'timeout' };
32
+ }
33
+ if (fallbackHandler)
34
+ return fallbackHandler(activity, context);
35
+ throw new Error(`mockAsync(): no handler registered for "${activity.constructor.name}"`);
36
+ };
37
+ const builder = Object.assign(execute, {
38
+ on(ActivityClass, handler) {
39
+ entries.push({
40
+ ActivityClass: ActivityClass,
41
+ handler: handler,
42
+ callCount: 0,
43
+ });
44
+ return builder;
45
+ },
46
+ timeout() {
47
+ timeoutFallback = true;
48
+ return builder;
49
+ },
50
+ fallback(handler) {
51
+ fallbackHandler = handler;
52
+ return builder;
53
+ },
54
+ });
55
+ return builder;
56
+ }
57
+ //# sourceMappingURL=mock-async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-async.js","sourceRoot":"","sources":["../../../src/testing/tools/mock-async.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAEd,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AA+C3C,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAc,EAAE,CAAA;IAE7B,IAAI,eAAe,GAAG,KAAK,CAAA;IAC3B,IAAI,eAA8C,CAAA;IAElD,MAAM,OAAO,GAAsB,KAAK,EACtC,QAA0B,EAC1B,OAAiC,EACH,EAAE;QAChC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,QAAQ,YAAY,KAAK,CAAC,aAAa,CAAC;gBAAE,SAAQ;YAExD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAA;YAEnC,MAAM,GAAG,GAAc;gBACrB,SAAS;gBACT,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAA;YAED,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU;gBACrC,OAAQ,KAAK,CAAC,OAAwC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YAEvE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;gBAEvC,IAAI,MAAM,KAAK,SAAS;oBACtB,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,CAAC,WAAW,CAAC,IAAI,yBAAyB,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,WAAW,CAClH,CAAA;gBAEH,OAAO,MAAM,CAAA;YACf,CAAC;YAED,OAAO,KAAK,CAAC,OAAO,CAAA;QACtB,CAAC;QAED,IAAI,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;YAElD,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,eAAe;YAAE,OAAO,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAE9D,MAAM,IAAI,KAAK,CACb,2CAA2C,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CACxE,CAAA;IACH,CAAC,CAAA;IAED,MAAM,OAAO,GAAqB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QACvD,EAAE,CACA,aAA0B,EAC1B,OAAqB;YAErB,OAAO,CAAC,IAAI,CAAC;gBACX,aAAa,EAAE,aAA2C;gBAC1D,OAAO,EAAE,OAAsC;gBAC/C,SAAS,EAAE,CAAC;aACb,CAAC,CAAA;YAEF,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,OAAO;YACL,eAAe,GAAG,IAAI,CAAA;YAEtB,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,QAAQ,CAAC,OAA0B;YACjC,eAAe,GAAG,OAAO,CAAA;YAEzB,OAAO,OAAO,CAAA;QAChB,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Internals, type Activity, type HistoryItem, type PushActivity } from '../../core.js';
2
+ import type { MockAsyncActivity } from '../typings/MockAsyncActivity.js';
3
+ interface ResolveActivityOptions {
4
+ mock?: MockAsyncActivity;
5
+ state?: {
6
+ callCount: number;
7
+ };
8
+ }
9
+ export declare function resolveActivity(push: PushActivity<Activity>, context: Omit<Internals.ActivityRunContext, 'id'>, options?: ResolveActivityOptions): Promise<HistoryItem>;
10
+ export {};
11
+ //# sourceMappingURL=resolve-activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-activity.d.ts","sourceRoot":"","sources":["../../../src/testing/tools/resolve-activity.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,YAAY,EAElB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAExE,UAAU,sBAAsB;IAC9B,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACxB,KAAK,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9B;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC5B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,EACjD,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,WAAW,CAAC,CAqCtB"}
@@ -0,0 +1,23 @@
1
+ import { resolveAsyncActivity } from './resolve-async-activity.js';
2
+ import { SyncActivity, Internals, AsyncActivity, } from '../../core.js';
3
+ export async function resolveActivity(push, context, options) {
4
+ const activity = push.activity;
5
+ const activityContext = {
6
+ ...context,
7
+ id: activity.id,
8
+ };
9
+ if (activity instanceof SyncActivity) {
10
+ const output = await Internals.runActivity(activity, activityContext, instance => instance.run(push.input));
11
+ return { id: activity.id, type: 'sync', output };
12
+ }
13
+ if (activity instanceof AsyncActivity) {
14
+ const bootstrap = await Internals.runActivity(activity, activityContext, instance => instance.bootstrap(push.input));
15
+ return resolveAsyncActivity({
16
+ ...activityContext,
17
+ activity,
18
+ bootstrap,
19
+ }, push.input, options);
20
+ }
21
+ throw new Error('Unknown activity type');
22
+ }
23
+ //# sourceMappingURL=resolve-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-activity.js","sourceRoot":"","sources":["../../../src/testing/tools/resolve-activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EACL,YAAY,EACZ,SAAS,EAIT,aAAa,GACd,MAAM,eAAe,CAAA;AAQtB,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAA4B,EAC5B,OAAiD,EACjD,OAAgC;IAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;IAE9B,MAAM,eAAe,GAAiC;QACpD,GAAG,OAAO;QACV,EAAE,EAAE,QAAQ,CAAC,EAAE;KAChB,CAAA;IAED,IAAI,QAAQ,YAAY,YAAY,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CACxC,QAAQ,EACR,eAAe,EACf,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CACrC,CAAA;QAED,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;IAClD,CAAC;IAED,IAAI,QAAQ,YAAY,aAAa,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,WAAW,CAC3C,QAAQ,EACR,eAAe,EACf,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAC3C,CAAA;QAED,OAAO,oBAAoB,CACzB;YACE,GAAG,eAAe;YAClB,QAAQ;YACR,SAAS;SACV,EACD,IAAI,CAAC,KAAK,EACV,OAAO,CACR,CAAA;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;AAC1C,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Internals, type AnyAsyncActivity, type HistoryItem } from '../../core.js';
2
+ import type { MockAsyncActivity } from '../typings/MockAsyncActivity.js';
3
+ interface ResolveAsyncActivityOptions {
4
+ mock?: MockAsyncActivity;
5
+ state?: {
6
+ callCount: number;
7
+ };
8
+ }
9
+ interface ResolveAsyncActivityContext extends Internals.ActivityRunContext {
10
+ activity: AnyAsyncActivity;
11
+ bootstrap: unknown;
12
+ }
13
+ export declare function resolveAsyncActivity(context: ResolveAsyncActivityContext, input: unknown, options?: ResolveAsyncActivityOptions): Promise<HistoryItem>;
14
+ export {};
15
+ //# sourceMappingURL=resolve-async-activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-async-activity.d.ts","sourceRoot":"","sources":["../../../src/testing/tools/resolve-async-activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,eAAe,CAAA;AAEtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAExE,UAAU,2BAA2B;IACnC,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACxB,KAAK,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9B;AAED,UAAU,2BAA4B,SAAQ,SAAS,CAAC,kBAAkB;IACxE,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,SAAS,EAAE,OAAO,CAAA;CACnB;AA6DD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,EACpC,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,WAAW,CAAC,CAoCtB"}
@@ -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,3 @@
1
+ import { type TestClockRunOptions } from '../TestClock.js';
2
+ export declare function runWithClock<T>(clock: TestClockRunOptions | false | undefined, fn: () => T): T;
3
+ //# sourceMappingURL=run-with-clock.d.ts.map
@@ -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,7 @@
1
+ import { TestClock } from '../TestClock.js';
2
+ export function runWithClock(clock, fn) {
3
+ if (clock === false || clock === undefined)
4
+ return fn();
5
+ return TestClock.run(clock, fn);
6
+ }
7
+ //# sourceMappingURL=run-with-clock.js.map
@@ -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,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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/testing/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export type AsyncActivityResult<TOutput = unknown> = {
2
+ status: 'fulfilled';
3
+ output?: TOutput;
4
+ } | {
5
+ status: 'rejected';
6
+ reason?: unknown;
7
+ } | {
8
+ status: 'timeout';
9
+ };
10
+ //# sourceMappingURL=AsyncActivityResult.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AsyncActivityResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncActivityResult.js","sourceRoot":"","sources":["../../../src/testing/typings/AsyncActivityResult.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type ClaimConstructor = abstract new (...args: readonly any[]) => any;
2
+ //# sourceMappingURL=ClaimConstructor.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ClaimConstructor.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MockAsyncActivity.js.map
@@ -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.7.0",
3
+ "version": "0.8.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",