@t4h.framework/core 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/activities/StartWorkflowActivity.d.ts +52 -9
  2. package/dist/activities/StartWorkflowActivity.d.ts.map +1 -1
  3. package/dist/activities/StartWorkflowActivity.js +45 -5
  4. package/dist/activities/StartWorkflowActivity.js.map +1 -1
  5. package/dist/core.d.ts +2 -0
  6. package/dist/core.d.ts.map +1 -1
  7. package/dist/core.js +2 -0
  8. package/dist/core.js.map +1 -1
  9. package/dist/models/ContinueAsNew.d.ts +24 -0
  10. package/dist/models/ContinueAsNew.d.ts.map +1 -0
  11. package/dist/models/ContinueAsNew.js +28 -0
  12. package/dist/models/ContinueAsNew.js.map +1 -0
  13. package/dist/models/WorkflowBatchClaim.d.ts +10 -0
  14. package/dist/models/WorkflowBatchClaim.d.ts.map +1 -0
  15. package/dist/models/WorkflowBatchClaim.js +3 -0
  16. package/dist/models/WorkflowBatchClaim.js.map +1 -0
  17. package/dist/models/WorkflowBatchRef.d.ts +6 -0
  18. package/dist/models/WorkflowBatchRef.d.ts.map +1 -0
  19. package/dist/models/WorkflowBatchRef.js +9 -0
  20. package/dist/models/WorkflowBatchRef.js.map +1 -0
  21. package/dist/models/WorkflowRef.d.ts +2 -2
  22. package/dist/models/WorkflowRef.d.ts.map +1 -1
  23. package/dist/models/WorkflowRef.js.map +1 -1
  24. package/dist/testing/TestWorkflowEnvironment.d.ts.map +1 -1
  25. package/dist/testing/TestWorkflowEnvironment.js +3 -1
  26. package/dist/testing/TestWorkflowEnvironment.js.map +1 -1
  27. package/dist/testing/tools/clone.d.ts +2 -0
  28. package/dist/testing/tools/clone.d.ts.map +1 -0
  29. package/dist/testing/tools/clone.js +42 -0
  30. package/dist/testing/tools/clone.js.map +1 -0
  31. package/dist/testing/tools/serializable-clone.d.ts +21 -0
  32. package/dist/testing/tools/serializable-clone.d.ts.map +1 -0
  33. package/dist/testing/tools/serializable-clone.js +77 -0
  34. package/dist/testing/tools/serializable-clone.js.map +1 -0
  35. package/package.json +1 -1
@@ -1,36 +1,79 @@
1
1
  import Type from 'typebox';
2
+ import type { Binary } from '../core.js';
2
3
  import { AsyncActivity } from '../models/AsyncActivity.js';
3
4
  import { Claim } from '../models/Claim.js';
4
5
  import type { Workflow, WorkflowInput } from '../models/Workflow.js';
6
+ import { WorkflowBatchRef } from '../models/WorkflowBatchRef.js';
5
7
  import { WorkflowRef } from '../models/WorkflowRef.js';
6
8
  import type { Serializable } from '../typings/Serializable.js';
7
9
  declare const schema: Type.TObject<{
8
10
  status: Type.TEnum<["fulfilled", "rejected"]>;
9
11
  output: Type.TAny;
10
12
  }>;
13
+ export declare const workflowBatchSchema: Type.TObject<{
14
+ batch: Type.TString;
15
+ count: Type.TNumber;
16
+ }>;
17
+ type StartManyWorkflowsResult = Type.Static<typeof workflowBatchSchema>;
11
18
  export declare abstract class WorkflowClaim {
12
- abstract start<TWorkflow extends Workflow<any, any>>(workflow: TWorkflow, input: WorkflowInput<TWorkflow>): Serializable | Promise<Serializable>;
19
+ abstract start<TWorkflow extends Workflow<any, any>>(workflow: TWorkflow, parallel?: boolean): Serializable | Promise<Serializable>;
20
+ abstract start<TWorkflow extends Workflow<any, any>>(workflow: TWorkflow, input: WorkflowInput<TWorkflow>, parallel?: boolean): Serializable | Promise<Serializable>;
21
+ abstract startMany<TWorkflow extends Workflow<any, any>>(workflow: TWorkflow | string, inputs: WorkflowInput<TWorkflow>[] | Binary[], parallel?: boolean): Promise<WorkflowBatchRef>;
13
22
  }
14
- export type StartWorkflowActivityInput<TWorkflow extends Workflow<any, any>> = WorkflowInput<TWorkflow> & {
23
+ type StartWorkflowActivityInput = {
24
+ input?: Serializable;
15
25
  parallel?: boolean;
16
26
  };
27
+ type StartWorkflowArgs<TWorkflow extends Workflow<any, any>> = WorkflowInput<TWorkflow> extends undefined ? [parallel?: boolean] : [input: Serializable, parallel?: boolean];
17
28
  export declare class StartWorkflowActivity extends AsyncActivity<[
18
29
  workflow: Workflow<any, any>,
19
- input: any
20
- ], Serializable, Serializable, WorkflowRef, StartWorkflowActivityInput<Workflow<any, any>>, typeof schema> {
30
+ inputOrParallel?: Serializable | boolean,
31
+ parallel?: boolean
32
+ ], StartWorkflowActivityInput, Serializable, WorkflowRef, StartWorkflowActivityInput, typeof schema> {
21
33
  readonly claims: Claim<{
22
34
  workflow: typeof WorkflowClaim;
23
35
  }>;
24
- bootstrap(input: StartWorkflowActivityInput<Workflow<any, any>>): Promise<import("../core.js").AsyncActivityResultPending<{
25
- parallel?: boolean;
26
- }, Type.TObject<{
36
+ bootstrap(input: StartWorkflowActivityInput): Promise<import("../core.js").AsyncActivityResultPending<StartWorkflowActivityInput, Type.TObject<{
27
37
  status: Type.TEnum<["fulfilled", "rejected"]>;
28
38
  output: Type.TAny;
29
39
  }>> | import("../core.js").AsyncActivityResultFulfilled<Serializable>>;
30
40
  advance(payload: Type.Static<typeof schema>): import("../core.js").AsyncActivityResultRejected<void | Serializable> | import("../core.js").AsyncActivityResultFulfilled<Serializable>;
31
- toInput(workflow: Workflow<any, any>, input: StartWorkflowActivityInput<Workflow<any, any>>): Promise<StartWorkflowActivityInput<Workflow<any, any>>>;
41
+ toInput(workflow: Workflow<any, any>, inputOrParallel?: Serializable | boolean, maybeParallel?: boolean): Promise<StartWorkflowActivityInput>;
32
42
  toOutput(payload: Type.Static<typeof schema>): WorkflowRef;
33
43
  }
34
- export declare function startWorkflow<TWorkflow extends Workflow<any, any>>(workflow: TWorkflow, input: StartWorkflowActivityInput<TWorkflow>): Promise<import("../core.js").AsyncActivityAwaitable<StartWorkflowActivity>>;
44
+ export declare function startWorkflow<TWorkflow extends Workflow<any, any>>(workflow: TWorkflow, ...args: StartWorkflowArgs<TWorkflow>): Promise<import("../core.js").AsyncActivityAwaitable<StartWorkflowActivity>>;
45
+ type StartManyWorkflowsActivityInput = {
46
+ inputs: Serializable[];
47
+ parallel?: boolean;
48
+ batch: string;
49
+ count: number;
50
+ };
51
+ type StartWorkflowManyArgs<TWorkflow extends Workflow<any, any>> = [
52
+ inputs: WorkflowInput<TWorkflow>[],
53
+ parallel?: boolean
54
+ ];
55
+ export declare class StartManyWorkflowsActivity extends AsyncActivity<[
56
+ workflow: Workflow<any, any>,
57
+ inputs: Serializable[],
58
+ parallel?: boolean
59
+ ], StartManyWorkflowsActivityInput, StartManyWorkflowsResult, WorkflowBatchRef, StartManyWorkflowsActivityInput, typeof workflowBatchSchema> {
60
+ readonly claims: Claim<{
61
+ workflow: typeof WorkflowClaim;
62
+ }>;
63
+ bootstrap(input: StartManyWorkflowsActivityInput): Promise<import("../core.js").AsyncActivityResultPending<StartManyWorkflowsActivityInput, Type.TObject<{
64
+ batch: Type.TString;
65
+ count: Type.TNumber;
66
+ }>> | import("../core.js").AsyncActivityResultFulfilled<{
67
+ batch: string;
68
+ count: number;
69
+ } | undefined>>;
70
+ advance(payload: StartManyWorkflowsResult): import("../core.js").AsyncActivityResultFulfilled<{
71
+ batch: string;
72
+ count: number;
73
+ } | undefined>;
74
+ toInput(workflow: Workflow<any, any>, inputs: Serializable[], parallel?: boolean): Promise<StartManyWorkflowsActivityInput>;
75
+ toOutput(payload: StartManyWorkflowsResult): WorkflowBatchRef;
76
+ }
77
+ export declare function startWorkflowMany<TWorkflow extends Workflow<any, any>>(workflow: TWorkflow, ...args: StartWorkflowManyArgs<TWorkflow>): Promise<import("../core.js").AsyncActivityAwaitable<StartManyWorkflowsActivity>>;
35
78
  export {};
36
79
  //# sourceMappingURL=StartWorkflowActivity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StartWorkflowActivity.d.ts","sourceRoot":"","sources":["../../src/activities/StartWorkflowActivity.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAA;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,QAAA,MAAM,MAAM;;;EAGV,CAAA;AAEF,8BAAsB,aAAa;aACjB,KAAK,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EACxD,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,GAC9B,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;CACxC;AAED,MAAM,MAAM,0BAA0B,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IACzE,aAAa,CAAC,SAAS,CAAC,GAAG;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAEH,qBAAa,qBAAsB,SAAQ,aAAa,CACtD;IAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAAE,KAAK,EAAE,GAAG;CAAC,EAC1C,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,0BAA0B,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC9C,OAAO,MAAM,CACd;IACC,SAAgB,MAAM;;OAEpB;IAEW,SAAS,CACpB,KAAK,EAAE,0BAA0B,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;mBAhB1C,OAAO;;;;;IAyBb,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC;IAMrC,OAAO,CAClB,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAC5B,KAAK,EAAE,0BAA0B,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GACpD,OAAO,CAAC,0BAA0B,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAMnD,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,GAAG,WAAW;CAGlE;AAED,wBAAgB,aAAa,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAChE,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,0BAA0B,CAAC,SAAS,CAAC,+EAG7C"}
1
+ {"version":3,"file":"StartWorkflowActivity.d.ts","sourceRoot":"","sources":["../../src/activities/StartWorkflowActivity.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,16 @@ import Type from 'typebox';
2
2
  import { AsyncActivity } from '../models/AsyncActivity.js';
3
3
  import { Claim } from '../models/Claim.js';
4
4
  import { History } from '../models/History.js';
5
+ import { WorkflowBatchRef } from '../models/WorkflowBatchRef.js';
5
6
  import { WorkflowRef } from '../models/WorkflowRef.js';
6
7
  const schema = Type.Object({
7
8
  status: Type.Enum(['fulfilled', 'rejected']),
8
9
  output: Type.Any(),
9
10
  });
11
+ export const workflowBatchSchema = Type.Object({
12
+ batch: Type.String(),
13
+ count: Type.Number(),
14
+ });
10
15
  export class WorkflowClaim {
11
16
  }
12
17
  export class StartWorkflowActivity extends AsyncActivity {
@@ -25,15 +30,50 @@ export class StartWorkflowActivity extends AsyncActivity {
25
30
  return this.done(payload);
26
31
  return this.rejected(payload);
27
32
  }
28
- async toInput(workflow, input) {
29
- await this.claims.workflow.start(workflow, input);
30
- return input;
33
+ async toInput(workflow, inputOrParallel, maybeParallel) {
34
+ const hasSchema = workflow.schema !== null;
35
+ const input = hasSchema
36
+ ? inputOrParallel
37
+ : undefined;
38
+ const parallel = hasSchema
39
+ ? maybeParallel
40
+ : inputOrParallel;
41
+ if (hasSchema)
42
+ await this.claims.workflow.start(workflow, input, parallel);
43
+ else
44
+ await this.claims.workflow.start(workflow, parallel);
45
+ return { input, parallel };
31
46
  }
32
47
  toOutput(payload) {
33
48
  return new WorkflowRef(payload.status, payload.output);
34
49
  }
35
50
  }
36
- export function startWorkflow(workflow, input) {
37
- return History.reconciler(StartWorkflowActivity, workflow, input);
51
+ export function startWorkflow(workflow, ...args) {
52
+ return History.reconciler(StartWorkflowActivity, workflow, ...args);
53
+ }
54
+ export class StartManyWorkflowsActivity extends AsyncActivity {
55
+ claims = new Claim({
56
+ workflow: WorkflowClaim,
57
+ });
58
+ async bootstrap(input) {
59
+ if (input.count <= 0 || input.parallel)
60
+ return this.done({ batch: input.batch, count: input.count });
61
+ return this.pending({
62
+ schema: workflowBatchSchema,
63
+ });
64
+ }
65
+ advance(payload) {
66
+ return this.done(payload);
67
+ }
68
+ async toInput(workflow, inputs, parallel) {
69
+ const batch = await this.claims.workflow.startMany(workflow, inputs, parallel);
70
+ return { inputs, parallel, batch: batch.id, count: batch.count };
71
+ }
72
+ toOutput(payload) {
73
+ return new WorkflowBatchRef(payload.batch, payload.count);
74
+ }
75
+ }
76
+ export function startWorkflowMany(workflow, ...args) {
77
+ return History.reconciler(StartManyWorkflowsActivity, workflow, ...args);
38
78
  }
39
79
  //# sourceMappingURL=StartWorkflowActivity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StartWorkflowActivity.js","sourceRoot":"","sources":["../../src/activities/StartWorkflowActivity.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAA;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAGtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC5C,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE;CACnB,CAAC,CAAA;AAEF,MAAM,OAAgB,aAAa;CAKlC;AAOD,MAAM,OAAO,qBAAsB,SAAQ,aAO1C;IACiB,MAAM,GAAG,IAAI,KAAK,CAAC;QACjC,QAAQ,EAAE,aAAa;KACxB,CAAC,CAAA;IAEK,KAAK,CAAC,SAAS,CACpB,KAAqD;QAErD,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QAE3E,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM;SACP,CAAC,CAAA;IACJ,CAAC;IAEM,OAAO,CAAC,OAAmC;QAChD,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE7D,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,QAA4B,EAC5B,KAAqD;QAErD,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAEjD,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,QAAQ,CAAC,OAAmC;QACjD,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IACxD,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAC3B,QAAmB,EACnB,KAA4C;IAE5C,OAAO,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;AACnE,CAAC"}
1
+ {"version":3,"file":"StartWorkflowActivity.js","sourceRoot":"","sources":["../../src/activities/StartWorkflowActivity.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAA;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAGtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC5C,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE;CACnB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;CACrB,CAAC,CAAA;AAIF,MAAM,OAAgB,aAAa;CAiBlC;AAYD,MAAM,OAAO,qBAAsB,SAAQ,aAW1C;IACiB,MAAM,GAAG,IAAI,KAAK,CAAC;QACjC,QAAQ,EAAE,aAAa;KACxB,CAAC,CAAA;IAEK,KAAK,CAAC,SAAS,CAAC,KAAiC;QACtD,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QAE3E,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM;SACP,CAAC,CAAA;IACJ,CAAC;IAEM,OAAO,CAAC,OAAmC;QAChD,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE7D,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,QAA4B,EAC5B,eAAwC,EACxC,aAAuB;QAEvB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAA;QAE1C,MAAM,KAAK,GAAG,SAAS;YACrB,CAAC,CAAE,eAA4C;YAC/C,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,QAAQ,GAAG,SAAS;YACxB,CAAC,CAAC,aAAa;YACf,CAAC,CAAE,eAAuC,CAAA;QAE5C,IAAI,SAAS;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;;YACrE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAEzD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;IAC5B,CAAC;IAEM,QAAQ,CAAC,OAAmC;QACjD,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IACxD,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAC3B,QAAmB,EACnB,GAAG,IAAkC;IAErC,OAAO,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAA;AACrE,CAAC;AAcD,MAAM,OAAO,0BAA2B,SAAQ,aAO/C;IACiB,MAAM,GAAG,IAAI,KAAK,CAAC;QACjC,QAAQ,EAAE,aAAa;KACxB,CAAC,CAAA;IAEK,KAAK,CAAC,SAAS,CAAC,KAAsC;QAC3D,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ;YACpC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QAE9D,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,MAAM,EAAE,mBAAmB;SAC5B,CAAC,CAAA;IACJ,CAAC;IAEM,OAAO,CAAC,OAAiC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,QAA4B,EAC5B,MAAsB,EACtB,QAAkB;QAElB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAChD,QAAQ,EACR,MAAM,EACN,QAAQ,CACT,CAAA;QAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAA;IAClE,CAAC;IAEM,QAAQ,CAAC,OAAiC;QAC/C,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IAC3D,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAmB,EACnB,GAAG,IAAsC;IAEzC,OAAO,OAAO,CAAC,UAAU,CACvB,0BAA0B,EAC1B,QAAQ,EACR,GAAI,IAAqD,CAC1D,CAAA;AACH,CAAC"}
package/dist/core.d.ts CHANGED
@@ -18,6 +18,8 @@ export * from './models/PushWaitAsyncActivity.js';
18
18
  export * from './models/SerializableHelper.js';
19
19
  export * from './models/SyncActivity.js';
20
20
  export * from './models/Workflow.js';
21
+ export * from './models/WorkflowBatchClaim.js';
22
+ export * from './models/WorkflowBatchRef.js';
21
23
  export * from './models/WorkflowRef.js';
22
24
  export * from './tools/Internals.js';
23
25
  export * from './typings/PromiseLikeType.js';
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAA;AAErD,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAE9C,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wCAAwC,CAAA;AACtD,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AAEvC,cAAc,sBAAsB,CAAA;AAEpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAA;AAErD,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAE9C,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wCAAwC,CAAA;AACtD,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AAEvC,cAAc,sBAAsB,CAAA;AAEpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA"}
package/dist/core.js CHANGED
@@ -18,6 +18,8 @@ export * from './models/PushWaitAsyncActivity.js';
18
18
  export * from './models/SerializableHelper.js';
19
19
  export * from './models/SyncActivity.js';
20
20
  export * from './models/Workflow.js';
21
+ export * from './models/WorkflowBatchClaim.js';
22
+ export * from './models/WorkflowBatchRef.js';
21
23
  export * from './models/WorkflowRef.js';
22
24
  export * from './tools/Internals.js';
23
25
  export * from './typings/PromiseLikeType.js';
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAA;AAErD,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAE9C,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wCAAwC,CAAA;AACtD,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AAEvC,cAAc,sBAAsB,CAAA;AAEpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAA;AAErD,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAE9C,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wCAAwC,CAAA;AACtD,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AAEvC,cAAc,sBAAsB,CAAA;AAEpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA"}
@@ -0,0 +1,24 @@
1
+ import type { Serializable } from '../typings/Serializable.js';
2
+ import type { Workflow, WorkflowInput } from './Workflow.js';
3
+ /**
4
+ * Control-flow signal thrown by {@link continueAsNew}. Caught by the runtime
5
+ * loop, which terminates the current workflow run and starts a fresh run of
6
+ * `workflow` with `input` and an empty history. Not an `Error` subclass — it is
7
+ * a normal control-flow signal, like `PushActivity`/`PushWaitAsyncActivity`.
8
+ */
9
+ export declare class ContinueAsNew {
10
+ readonly workflow: Workflow<any, any>;
11
+ readonly input: Serializable | undefined;
12
+ constructor(workflow: Workflow<any, any>, input: Serializable | undefined);
13
+ }
14
+ export type ContinueAsNewArgs<TWorkflow extends Workflow<any, any>> = WorkflowInput<TWorkflow> extends undefined ? [] : [input: WorkflowInput<TWorkflow>];
15
+ /**
16
+ * Ends the current workflow run and restarts `workflow` with a fresh, empty
17
+ * history, carrying `input` forward as the successor's input. Never returns —
18
+ * it throws a {@link ContinueAsNew} signal that unwinds to the runtime loop.
19
+ *
20
+ * Use it to keep a run's history bounded when iterating over many items: process
21
+ * a batch, then `continueAsNew` with a cursor pointing at the next batch.
22
+ */
23
+ export declare function continueAsNew<TWorkflow extends Workflow<any, any>>(workflow: TWorkflow, ...args: ContinueAsNewArgs<TWorkflow>): Promise<never>;
24
+ //# sourceMappingURL=ContinueAsNew.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContinueAsNew.d.ts","sourceRoot":"","sources":["../../src/models/ContinueAsNew.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE5D;;;;;GAKG;AACH,qBAAa,aAAa;aAEN,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;aAC5B,KAAK,EAAE,YAAY,GAAG,SAAS;gBAD/B,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAC5B,KAAK,EAAE,YAAY,GAAG,SAAS;CAElD;AAED,MAAM,MAAM,iBAAiB,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAChE,aAAa,CAAC,SAAS,CAAC,SAAS,SAAS,GACtC,EAAE,GACF,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;AAEvC;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,SAAS,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAChE,QAAQ,EAAE,SAAS,EACnB,GAAG,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,GACpC,OAAO,CAAC,KAAK,CAAC,CAKhB"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Control-flow signal thrown by {@link continueAsNew}. Caught by the runtime
3
+ * loop, which terminates the current workflow run and starts a fresh run of
4
+ * `workflow` with `input` and an empty history. Not an `Error` subclass — it is
5
+ * a normal control-flow signal, like `PushActivity`/`PushWaitAsyncActivity`.
6
+ */
7
+ export class ContinueAsNew {
8
+ workflow;
9
+ input;
10
+ constructor(workflow, input) {
11
+ this.workflow = workflow;
12
+ this.input = input;
13
+ }
14
+ }
15
+ /**
16
+ * Ends the current workflow run and restarts `workflow` with a fresh, empty
17
+ * history, carrying `input` forward as the successor's input. Never returns —
18
+ * it throws a {@link ContinueAsNew} signal that unwinds to the runtime loop.
19
+ *
20
+ * Use it to keep a run's history bounded when iterating over many items: process
21
+ * a batch, then `continueAsNew` with a cursor pointing at the next batch.
22
+ */
23
+ export function continueAsNew(workflow, ...args) {
24
+ if (!workflow.id)
25
+ throw new TypeError('Could not continue-as-new a workflow without an id');
26
+ throw new ContinueAsNew(workflow, args[0]);
27
+ }
28
+ //# sourceMappingURL=ContinueAsNew.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContinueAsNew.js","sourceRoot":"","sources":["../../src/models/ContinueAsNew.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IAEN;IACA;IAFlB,YACkB,QAA4B,EAC5B,KAA+B;QAD/B,aAAQ,GAAR,QAAQ,CAAoB;QAC5B,UAAK,GAAL,KAAK,CAA0B;IAC9C,CAAC;CACL;AAOD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAmB,EACnB,GAAG,IAAkC;IAErC,IAAI,CAAC,QAAQ,CAAC,EAAE;QACd,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAA;IAE3E,MAAM,IAAI,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAA6B,CAAC,CAAA;AACxE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Serializable } from '../typings/Serializable.js';
2
+ export type WorkflowBatchOutput = {
3
+ index: number;
4
+ status: 'fulfilled' | 'rejected';
5
+ output: Serializable;
6
+ };
7
+ export declare abstract class WorkflowBatchClaim {
8
+ abstract outputs(batch: string): AsyncIterable<WorkflowBatchOutput>;
9
+ }
10
+ //# sourceMappingURL=WorkflowBatchClaim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowBatchClaim.d.ts","sourceRoot":"","sources":["../../src/models/WorkflowBatchClaim.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,WAAW,GAAG,UAAU,CAAA;IAChC,MAAM,EAAE,YAAY,CAAA;CACrB,CAAA;AAED,8BAAsB,kBAAkB;aACtB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,mBAAmB,CAAC;CAC3E"}
@@ -0,0 +1,3 @@
1
+ export class WorkflowBatchClaim {
2
+ }
3
+ //# sourceMappingURL=WorkflowBatchClaim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowBatchClaim.js","sourceRoot":"","sources":["../../src/models/WorkflowBatchClaim.ts"],"names":[],"mappings":"AAQA,MAAM,OAAgB,kBAAkB;CAEvC"}
@@ -0,0 +1,6 @@
1
+ export declare class WorkflowBatchRef {
2
+ readonly id: string;
3
+ readonly count: number;
4
+ constructor(id: string, count: number);
5
+ }
6
+ //# sourceMappingURL=WorkflowBatchRef.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowBatchRef.d.ts","sourceRoot":"","sources":["../../src/models/WorkflowBatchRef.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;aAET,EAAE,EAAE,MAAM;aACV,KAAK,EAAE,MAAM;gBADb,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM;CAEhC"}
@@ -0,0 +1,9 @@
1
+ export class WorkflowBatchRef {
2
+ id;
3
+ count;
4
+ constructor(id, count) {
5
+ this.id = id;
6
+ this.count = count;
7
+ }
8
+ }
9
+ //# sourceMappingURL=WorkflowBatchRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowBatchRef.js","sourceRoot":"","sources":["../../src/models/WorkflowBatchRef.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAgB;IAET;IACA;IAFlB,YACkB,EAAU,EACV,KAAa;QADb,OAAE,GAAF,EAAE,CAAQ;QACV,UAAK,GAAL,KAAK,CAAQ;IAC5B,CAAC;CACL"}
@@ -1,7 +1,7 @@
1
1
  import type { Serializable } from '../typings/Serializable.js';
2
2
  export declare class WorkflowRef {
3
3
  readonly status: 'fulfilled' | 'rejected';
4
- readonly output: Serializable;
5
- constructor(status: 'fulfilled' | 'rejected', output: Serializable);
4
+ readonly output?: Serializable | null;
5
+ constructor(status: 'fulfilled' | 'rejected', output?: Serializable | null);
6
6
  }
7
7
  //# sourceMappingURL=WorkflowRef.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowRef.d.ts","sourceRoot":"","sources":["../../src/models/WorkflowRef.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,qBAAa,WAAW;aAEJ,MAAM,EAAE,WAAW,GAAG,UAAU;aAChC,MAAM,EAAE,YAAY;gBADpB,MAAM,EAAE,WAAW,GAAG,UAAU,EAChC,MAAM,EAAE,YAAY;CAEvC"}
1
+ {"version":3,"file":"WorkflowRef.d.ts","sourceRoot":"","sources":["../../src/models/WorkflowRef.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,qBAAa,WAAW;aAEJ,MAAM,EAAE,WAAW,GAAG,UAAU;aAChC,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI;gBAD5B,MAAM,EAAE,WAAW,GAAG,UAAU,EAChC,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI;CAE/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowRef.js","sourceRoot":"","sources":["../../src/models/WorkflowRef.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IAEJ;IACA;IAFlB,YACkB,MAAgC,EAChC,MAAoB;QADpB,WAAM,GAAN,MAAM,CAA0B;QAChC,WAAM,GAAN,MAAM,CAAc;IACnC,CAAC;CACL"}
1
+ {"version":3,"file":"WorkflowRef.js","sourceRoot":"","sources":["../../src/models/WorkflowRef.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IAEJ;IACA;IAFlB,YACkB,MAAgC,EAChC,MAA4B;QAD5B,WAAM,GAAN,MAAM,CAA0B;QAChC,WAAM,GAAN,MAAM,CAAsB;IAC3C,CAAC;CACL"}
@@ -1 +1 @@
1
- {"version":3,"file":"TestWorkflowEnvironment.d.ts","sourceRoot":"","sources":["../../src/testing/TestWorkflowEnvironment.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAEvE,MAAM,WAAW,8BAA8B;IAC7C,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC;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,iBAAiB,CAAA;CACtC;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,uBAAuB,CAAgB;IAE/C,OAAO,CAAC,GAAG,CAAY;IAEvB,OAAO;WASO,MAAM,CAClB,OAAO,GAAE,8BAAmC,GAC3C,uBAAuB;IAI1B,SAAgB,KAAK;;sBAGL,MAAM;mBAMT,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;YAgCvC,qBAAqB;CAsBpC"}
1
+ {"version":3,"file":"TestWorkflowEnvironment.d.ts","sourceRoot":"","sources":["../../src/testing/TestWorkflowEnvironment.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAEvE,MAAM,WAAW,8BAA8B;IAC7C,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC;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,iBAAiB,CAAA;CACtC;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,uBAAuB,CAAgB;IAE/C,OAAO,CAAC,GAAG,CAAY;IAEvB,OAAO;WASO,MAAM,CAClB,OAAO,GAAE,8BAAmC,GAC3C,uBAAuB;IAI1B,SAAgB,KAAK;;sBAGL,MAAM;mBAMT,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;YAgCvC,qBAAqB;CAwBpC"}
@@ -1,6 +1,7 @@
1
1
  import { isDeepStrictEqual } from 'node:util';
2
2
  import { NonDeterministicWorkflowError } from './exceptions/NonDeterministicWorkflowError.js';
3
3
  import { TestClock } from './TestClock.js';
4
+ import { clone } from './tools/clone.js';
4
5
  import { runWorkflow } from './tools/run-workflow.js';
5
6
  import { Internals } from '../tools/Internals.js';
6
7
  export class TestWorkflowEnvironment {
@@ -47,11 +48,12 @@ export class TestWorkflowEnvironment {
47
48
  return result.output;
48
49
  }
49
50
  async assertWorkflowReplays(workflow, input, output, context) {
51
+ const history = await clone(context.history);
50
52
  const replay = await TestClock.run({ now: this.now }, () => Internals.runWorkflow(workflow, {
51
53
  input,
52
54
  claims: context.claims,
53
55
  env: context.env,
54
- history: structuredClone(context.history),
56
+ history,
55
57
  logs: [],
56
58
  }));
57
59
  if (isDeepStrictEqual(output, replay))
@@ -1 +1 @@
1
- {"version":3,"file":"TestWorkflowEnvironment.js","sourceRoot":"","sources":["../../src/testing/TestWorkflowEnvironment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TestWorkflowEnvironment.js","sourceRoot":"","sources":["../../src/testing/TestWorkflowEnvironment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function clone(value: any, seen?: WeakMap<object, any>): Promise<any>;
2
+ //# sourceMappingURL=clone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../src/testing/tools/clone.ts"],"names":[],"mappings":"AAQA,wBAAsB,KAAK,CACzB,KAAK,EAAE,GAAG,EACV,IAAI,GAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAiB,GACzC,OAAO,CAAC,GAAG,CAAC,CA2Dd"}
@@ -0,0 +1,42 @@
1
+ import { Binary } from '../../models/Binary.js';
2
+ import { SerializableClass, } from '../../models/SerializableHelper.js';
3
+ const cloning = Symbol('cloning');
4
+ export async function clone(value, seen = new WeakMap()) {
5
+ if (value === null || typeof value !== 'object')
6
+ return value;
7
+ if (value instanceof Binary)
8
+ return value;
9
+ if (value instanceof SerializableClass) {
10
+ const cached = seen.get(value);
11
+ if (cached === cloning)
12
+ throw new TypeError('Could not clone a cyclic SerializableClass graph: it is not serializable');
13
+ if (cached)
14
+ return cached;
15
+ seen.set(value, cloning);
16
+ const serializer = inner => clone(inner, seen);
17
+ const serialized = await value.toSerializable(serializer);
18
+ const result = value.constructor.fromSerializable(serialized, serializer);
19
+ seen.set(value, result);
20
+ return result;
21
+ }
22
+ if (value instanceof Date)
23
+ return new Date(value.getTime());
24
+ const cached = seen.get(value);
25
+ if (cached)
26
+ return cached;
27
+ if (Array.isArray(value)) {
28
+ const result = [];
29
+ seen.set(value, result);
30
+ for (const item of value)
31
+ result.push(await clone(item, seen));
32
+ return result;
33
+ }
34
+ if (value.constructor !== Object && typeof value.constructor !== 'undefined')
35
+ throw new TypeError(`Could not clone a history value of type "${value.constructor.name}": it is not Serializable and would not survive replay`);
36
+ const result = {};
37
+ seen.set(value, result);
38
+ for (const [key, val] of Object.entries(value))
39
+ result[key] = await clone(val, seen);
40
+ return result;
41
+ }
42
+ //# sourceMappingURL=clone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../src/testing/tools/clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EACL,iBAAiB,GAElB,MAAM,oCAAoC,CAAA;AAE3C,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;AAEjC,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,KAAU,EACV,OAA6B,IAAI,OAAO,EAAE;IAE1C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE7D,IAAI,KAAK,YAAY,MAAM;QAAE,OAAO,KAAK,CAAA;IAEzC,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAE9B,IAAI,MAAM,KAAK,OAAO;YACpB,MAAM,IAAI,SAAS,CACjB,0EAA0E,CAC3E,CAAA;QAEH,IAAI,MAAM;YAAE,OAAO,MAAM,CAAA;QAEzB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAExB,MAAM,UAAU,GAAe,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC1D,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QAEzD,MAAM,MAAM,GACV,KAAK,CAAC,WAGP,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAE1C,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEvB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IAE3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAE9B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAU,EAAE,CAAA;QACxB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAEvB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAE9D,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,WAAW;QAC1E,MAAM,IAAI,SAAS,CACjB,4CAA4C,KAAK,CAAC,WAAW,CAAC,IAAI,wDAAwD,CAC3H,CAAA;IAEH,MAAM,MAAM,GAAwB,EAAE,CAAA;IAEtC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAEvB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEtC,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Deep-clones a value for replay isolation while preserving the framework's
3
+ * value objects.
4
+ *
5
+ * The replay determinism check needs a fresh, isolated copy of the recorded
6
+ * history so the replay run never shares mutable state with the original run.
7
+ * `structuredClone` is unfit for that here: it drops prototypes, so any
8
+ * `SerializableClass` stored in history (e.g. the HTTP `Body`) would come back
9
+ * as a plain object without its methods, and replaying a workflow that reads
10
+ * it (`response.body.text()`) would throw `text is not a function`.
11
+ *
12
+ * Instead, each `SerializableClass` is round-tripped through its own
13
+ * `toSerializable` / `fromSerializable` hooks — the exact contract the runtime
14
+ * uses to persist and restore history — so the reconstructed instance keeps
15
+ * its behaviour (and misbehaving custom serializers surface here too). `Binary`
16
+ * leaves are shared by reference: their concrete, stream-backed
17
+ * implementations live in other packages and are treated as immutable during
18
+ * replay.
19
+ */
20
+ export declare function serializableClone<T>(value: T): Promise<T>;
21
+ //# sourceMappingURL=serializable-clone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-clone.d.ts","sourceRoot":"","sources":["../../../src/testing/tools/serializable-clone.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE/D"}
@@ -0,0 +1,77 @@
1
+ import { Binary } from '../../models/Binary.js';
2
+ import { SerializableClass, } from '../../models/SerializableHelper.js';
3
+ /**
4
+ * Deep-clones a value for replay isolation while preserving the framework's
5
+ * value objects.
6
+ *
7
+ * The replay determinism check needs a fresh, isolated copy of the recorded
8
+ * history so the replay run never shares mutable state with the original run.
9
+ * `structuredClone` is unfit for that here: it drops prototypes, so any
10
+ * `SerializableClass` stored in history (e.g. the HTTP `Body`) would come back
11
+ * as a plain object without its methods, and replaying a workflow that reads
12
+ * it (`response.body.text()`) would throw `text is not a function`.
13
+ *
14
+ * Instead, each `SerializableClass` is round-tripped through its own
15
+ * `toSerializable` / `fromSerializable` hooks — the exact contract the runtime
16
+ * uses to persist and restore history — so the reconstructed instance keeps
17
+ * its behaviour (and misbehaving custom serializers surface here too). `Binary`
18
+ * leaves are shared by reference: their concrete, stream-backed
19
+ * implementations live in other packages and are treated as immutable during
20
+ * replay.
21
+ */
22
+ export async function serializableClone(value) {
23
+ return (await clone(value, new WeakMap()));
24
+ }
25
+ async function clone(value, seen) {
26
+ if (value === null || typeof value !== 'object')
27
+ return value;
28
+ // Leaf value object: shared by reference (immutable during replay, and its
29
+ // concrete serialization lives outside core).
30
+ if (value instanceof Binary)
31
+ return value;
32
+ // Rebuild via the same hooks the runtime uses, so the clone is a real
33
+ // instance with a working prototype.
34
+ if (value instanceof SerializableClass) {
35
+ const serializer = inner => clone(inner, seen);
36
+ const serialized = await value.toSerializable(serializer);
37
+ return value.constructor.fromSerializable(serialized, serializer);
38
+ }
39
+ if (value instanceof Date)
40
+ return new Date(value.getTime());
41
+ if (Buffer.isBuffer(value))
42
+ return Buffer.from(value);
43
+ if (value instanceof ArrayBuffer)
44
+ return value.slice(0);
45
+ if (ArrayBuffer.isView(value))
46
+ return value.slice();
47
+ const cached = seen.get(value);
48
+ if (cached)
49
+ return cached;
50
+ if (Array.isArray(value)) {
51
+ const result = [];
52
+ seen.set(value, result);
53
+ for (const item of value)
54
+ result.push(await clone(item, seen));
55
+ return result;
56
+ }
57
+ if (value instanceof Map) {
58
+ const result = new Map();
59
+ seen.set(value, result);
60
+ for (const [key, val] of value)
61
+ result.set(await clone(key, seen), await clone(val, seen));
62
+ return result;
63
+ }
64
+ if (value instanceof Set) {
65
+ const result = new Set();
66
+ seen.set(value, result);
67
+ for (const val of value)
68
+ result.add(await clone(val, seen));
69
+ return result;
70
+ }
71
+ const result = {};
72
+ seen.set(value, result);
73
+ for (const [key, val] of Object.entries(value))
74
+ result[key] = await clone(val, seen);
75
+ return result;
76
+ }
77
+ //# sourceMappingURL=serializable-clone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializable-clone.js","sourceRoot":"","sources":["../../../src/testing/tools/serializable-clone.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t4h.framework/core",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Core module for the T4H Framework",
5
5
  "homepage": "https://github.com/tech4humans-brasil/framework/tree/main/packages/core",
6
6
  "bugs": "https://github.com/tech4humans-brasil/framework/issues",