@temporal-contract/worker 2.4.0 → 3.0.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/README.md +7 -7
- package/dist/activity.cjs +21 -13
- package/dist/activity.d.cts +14 -12
- package/dist/activity.d.cts.map +1 -1
- package/dist/activity.d.mts +14 -12
- package/dist/activity.d.mts.map +1 -1
- package/dist/activity.mjs +21 -13
- package/dist/activity.mjs.map +1 -1
- package/dist/{errors-CE56feY1.d.cts → errors-BNnNzSwE.d.cts} +48 -67
- package/dist/errors-BNnNzSwE.d.cts.map +1 -0
- package/dist/{errors-CE56feY1.d.mts → errors-BNnNzSwE.d.mts} +48 -67
- package/dist/errors-BNnNzSwE.d.mts.map +1 -0
- package/dist/{internal-o5vk6e1H.cjs → internal-Clwokr1z.cjs} +46 -93
- package/dist/{internal-D0wfFl0y.mjs → internal-DqYK4YQK.mjs} +49 -90
- package/dist/internal-DqYK4YQK.mjs.map +1 -0
- package/dist/workflow.cjs +50 -50
- package/dist/workflow.d.cts +36 -38
- package/dist/workflow.d.cts.map +1 -1
- package/dist/workflow.d.mts +36 -38
- package/dist/workflow.d.mts.map +1 -1
- package/dist/workflow.mjs +34 -33
- package/dist/workflow.mjs.map +1 -1
- package/package.json +13 -12
- package/dist/errors-CE56feY1.d.cts.map +0 -1
- package/dist/errors-CE56feY1.d.mts.map +0 -1
- package/dist/internal-D0wfFl0y.mjs.map +0 -1
package/dist/workflow.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { _ as
|
|
1
|
+
import { _ as ClientInferOutput, a as ChildWorkflowError, c as QueryOutputValidationError, d as UpdateOutputValidationError, f as ValidationError, g as ClientInferInput, h as WorkflowOutputValidationError, i as ChildWorkflowCancelledError, l as SignalInputValidationError, m as WorkflowInputValidationError, n as ActivityInputValidationError, o as ChildWorkflowNotFoundError, p as WorkflowCancelledError, r as ActivityOutputValidationError, s as QueryInputValidationError, u as UpdateInputValidationError, v as WorkerInferInput, y as WorkerInferOutput } from "./errors-BNnNzSwE.mjs";
|
|
2
2
|
import { ActivityDefinition, AnyWorkflowDefinition, ContractDefinition, QueryDefinition, QueryNamesOf, SignalDefinition, SignalNamesOf, UpdateDefinition, UpdateNamesOf } from "@temporal-contract/contract";
|
|
3
|
+
import { AsyncResult } from "unthrown";
|
|
3
4
|
import { ActivityOptions, ChildWorkflowOptions, ContinueAsNewOptions, WorkflowInfo } from "@temporalio/workflow";
|
|
4
|
-
import { ResultAsync } from "neverthrow";
|
|
5
5
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
6
6
|
|
|
7
7
|
//#region src/handlers.d.ts
|
|
@@ -45,13 +45,13 @@ type TypedChildWorkflowOptions<TChildContract extends ContractDefinition, TChild
|
|
|
45
45
|
args: ClientInferInput<TChildContract["workflows"][TChildWorkflowName]>;
|
|
46
46
|
};
|
|
47
47
|
/**
|
|
48
|
-
* Typed handle for a child workflow with
|
|
48
|
+
* Typed handle for a child workflow with unthrown `AsyncResult` pattern.
|
|
49
49
|
*/
|
|
50
50
|
type TypedChildWorkflowHandle<TWorkflow extends AnyWorkflowDefinition> = {
|
|
51
51
|
/**
|
|
52
|
-
* Get child workflow result with `
|
|
52
|
+
* Get child workflow result with `AsyncResult` pattern.
|
|
53
53
|
*/
|
|
54
|
-
result: () =>
|
|
54
|
+
result: () => AsyncResult<ClientInferOutput<TWorkflow>, ChildWorkflowError | ChildWorkflowCancelledError>;
|
|
55
55
|
/**
|
|
56
56
|
* Child workflow ID.
|
|
57
57
|
*/
|
|
@@ -313,7 +313,7 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
|
|
|
313
313
|
*/
|
|
314
314
|
defineUpdate: <K extends UpdateNamesOf<TContract["workflows"][TWorkflowName]>>(updateName: K, handler: UpdateHandlerImplementation<NonNullable<TContract["workflows"][TWorkflowName]["updates"]> extends Record<string, UpdateDefinition> ? NonNullable<TContract["workflows"][TWorkflowName]["updates"]>[K] extends UpdateDefinition ? NonNullable<TContract["workflows"][TWorkflowName]["updates"]>[K] : never : never>) => void;
|
|
315
315
|
/**
|
|
316
|
-
* Start a child workflow and return a typed handle with
|
|
316
|
+
* Start a child workflow and return a typed handle with AsyncResult pattern
|
|
317
317
|
*
|
|
318
318
|
* Supports both same-contract and cross-contract child workflows:
|
|
319
319
|
* - Same contract: Pass workflowName from current contract
|
|
@@ -333,18 +333,19 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
|
|
|
333
333
|
* args: { message: 'Hello' }
|
|
334
334
|
* });
|
|
335
335
|
*
|
|
336
|
-
* childResult.match(
|
|
337
|
-
* async (handle) => {
|
|
336
|
+
* await childResult.match({
|
|
337
|
+
* ok: async (handle) => {
|
|
338
338
|
* const result = await handle.result();
|
|
339
339
|
* // ... handle result
|
|
340
340
|
* },
|
|
341
|
-
* (error) => console.error('Failed to start:', error),
|
|
342
|
-
* )
|
|
341
|
+
* err: (error) => console.error('Failed to start:', error),
|
|
342
|
+
* defect: (cause) => console.error('Unexpected failure:', cause),
|
|
343
|
+
* });
|
|
343
344
|
* ```
|
|
344
345
|
*/
|
|
345
|
-
startChildWorkflow: <TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"] & string>(contract: TChildContract, workflowName: TChildWorkflowName, options: TypedChildWorkflowOptions<TChildContract, TChildWorkflowName>) =>
|
|
346
|
+
startChildWorkflow: <TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"] & string>(contract: TChildContract, workflowName: TChildWorkflowName, options: TypedChildWorkflowOptions<TChildContract, TChildWorkflowName>) => AsyncResult<TypedChildWorkflowHandle<TChildContract["workflows"][TChildWorkflowName]>, ChildWorkflowError | ChildWorkflowCancelledError | ChildWorkflowNotFoundError>;
|
|
346
347
|
/**
|
|
347
|
-
* Execute a child workflow (start and wait for result) with
|
|
348
|
+
* Execute a child workflow (start and wait for result) with AsyncResult pattern
|
|
348
349
|
*
|
|
349
350
|
* Supports both same-contract and cross-contract child workflows:
|
|
350
351
|
* - Same contract: Pass workflowName from current contract
|
|
@@ -364,62 +365,59 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
|
|
|
364
365
|
* args: { message: 'Hello' }
|
|
365
366
|
* });
|
|
366
367
|
*
|
|
367
|
-
* result.match(
|
|
368
|
-
* (output) => console.log('Payment processed:', output),
|
|
369
|
-
* (error) => console.error('Processing failed:', error),
|
|
370
|
-
* )
|
|
368
|
+
* await result.match({
|
|
369
|
+
* ok: (output) => console.log('Payment processed:', output),
|
|
370
|
+
* err: (error) => console.error('Processing failed:', error),
|
|
371
|
+
* defect: (cause) => console.error('Unexpected failure:', cause),
|
|
372
|
+
* });
|
|
371
373
|
* ```
|
|
372
374
|
*/
|
|
373
|
-
executeChildWorkflow: <TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"] & string>(contract: TChildContract, workflowName: TChildWorkflowName, options: TypedChildWorkflowOptions<TChildContract, TChildWorkflowName>) =>
|
|
375
|
+
executeChildWorkflow: <TChildContract extends ContractDefinition, TChildWorkflowName extends keyof TChildContract["workflows"] & string>(contract: TChildContract, workflowName: TChildWorkflowName, options: TypedChildWorkflowOptions<TChildContract, TChildWorkflowName>) => AsyncResult<ClientInferOutput<TChildContract["workflows"][TChildWorkflowName]>, ChildWorkflowError | ChildWorkflowCancelledError | ChildWorkflowNotFoundError>;
|
|
374
376
|
/**
|
|
375
377
|
* Run `fn` inside a cancellable Temporal scope. If the workflow (or an
|
|
376
378
|
* ancestor scope) is cancelled while `fn` is in flight, the resulting
|
|
377
|
-
*
|
|
379
|
+
* AsyncResult resolves to `err(WorkflowCancelledError)` instead of
|
|
378
380
|
* rejecting — letting callers handle cancellation explicitly, typically
|
|
379
381
|
* to perform a graceful exit from the current step.
|
|
380
382
|
*
|
|
381
|
-
* Non-cancellation errors thrown by `fn`
|
|
382
|
-
* `
|
|
383
|
-
* `cause
|
|
384
|
-
*
|
|
385
|
-
* rejection.
|
|
383
|
+
* Non-cancellation errors thrown by `fn` are *unmodeled* failures: they ride
|
|
384
|
+
* unthrown's `defect` channel (inspectable via `result.isDefect()` /
|
|
385
|
+
* `result.cause`, re-thrown at the edge), keeping the modeled error channel
|
|
386
|
+
* to the single anticipated outcome — cancellation.
|
|
386
387
|
*
|
|
387
388
|
* @example
|
|
388
389
|
* ```ts
|
|
390
|
+
*
|
|
389
391
|
* implementation: async (context, args) => {
|
|
390
392
|
* const result = await context.cancellableScope(async () => {
|
|
391
393
|
* return context.activities.processStep(args);
|
|
392
394
|
* });
|
|
393
395
|
*
|
|
394
|
-
* if (result.isErr()) {
|
|
395
|
-
*
|
|
396
|
-
*
|
|
397
|
-
* await context.
|
|
398
|
-
*
|
|
399
|
-
*
|
|
400
|
-
* return { status: "cancelled" };
|
|
401
|
-
* }
|
|
402
|
-
* // result.error instanceof WorkflowScopeError — domain failure
|
|
403
|
-
* return { status: "failed" };
|
|
396
|
+
* if (result.isErr() && result.error instanceof WorkflowCancelledError) {
|
|
397
|
+
* // workflow was cancelled — perform cleanup that must not be cancelled:
|
|
398
|
+
* await context.nonCancellableScope(async () => {
|
|
399
|
+
* await context.activities.releaseResources(args);
|
|
400
|
+
* });
|
|
401
|
+
* return { status: "cancelled" };
|
|
404
402
|
* }
|
|
405
403
|
*
|
|
406
404
|
* return { status: "ok" };
|
|
407
405
|
* }
|
|
408
406
|
* ```
|
|
409
407
|
*/
|
|
410
|
-
cancellableScope: <T>(fn: () => T | Promise<T>) =>
|
|
408
|
+
cancellableScope: <T>(fn: () => T | Promise<T>) => AsyncResult<T, WorkflowCancelledError>;
|
|
411
409
|
/**
|
|
412
410
|
* Run `fn` inside a non-cancellable Temporal scope. Cancellation requests
|
|
413
411
|
* from outside the scope are ignored for its duration — the idiomatic way
|
|
414
412
|
* to perform cleanup work that must not be interrupted.
|
|
415
413
|
*
|
|
416
|
-
* Returns the same `
|
|
414
|
+
* Returns the same `AsyncResult<...>` shape as
|
|
417
415
|
* {@link WorkflowContext.cancellableScope} for symmetry; the
|
|
418
416
|
* `err(WorkflowCancelledError)` branch only triggers when cancellation is
|
|
419
417
|
* raised from *inside* the scope, which is rare. Non-cancellation errors
|
|
420
|
-
* surface
|
|
418
|
+
* surface on the `defect` channel.
|
|
421
419
|
*/
|
|
422
|
-
nonCancellableScope: <T>(fn: () => T | Promise<T>) =>
|
|
420
|
+
nonCancellableScope: <T>(fn: () => T | Promise<T>) => AsyncResult<T, WorkflowCancelledError>;
|
|
423
421
|
/**
|
|
424
422
|
* Continue this workflow execution as a new run, optionally with a different
|
|
425
423
|
* workflow type from another contract.
|
|
@@ -453,5 +451,5 @@ type WorkflowContext<TContract extends ContractDefinition, TWorkflowName extends
|
|
|
453
451
|
};
|
|
454
452
|
}; //# sourceMappingURL=workflow.d.ts.map
|
|
455
453
|
//#endregion
|
|
456
|
-
export { ActivityInputValidationError, ActivityOutputValidationError, ChildWorkflowCancelledError, ChildWorkflowError, ChildWorkflowNotFoundError, QueryInputValidationError, QueryOutputValidationError, SignalInputValidationError, UpdateInputValidationError, UpdateOutputValidationError, ValidationError, WorkflowCancelledError, WorkflowInputValidationError, WorkflowOutputValidationError,
|
|
454
|
+
export { ActivityInputValidationError, ActivityOutputValidationError, ChildWorkflowCancelledError, ChildWorkflowError, ChildWorkflowNotFoundError, QueryInputValidationError, QueryOutputValidationError, SignalInputValidationError, UpdateInputValidationError, UpdateOutputValidationError, ValidationError, WorkflowCancelledError, WorkflowInputValidationError, WorkflowOutputValidationError, declareWorkflow };
|
|
457
455
|
//# sourceMappingURL=workflow.d.mts.map
|
package/dist/workflow.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.mts","names":[],"sources":["../src/handlers.ts","../src/internal.ts","../src/child-workflow.ts","../src/activities-proxy.ts","../src/workflow.ts"],"mappings":";;;;;;;;;;;;;KAkCY,2BAAA,iBAA4C,gBAAA,KACtD,IAAA,EAAM,gBAAA,CAAiB,OAAA,aACb,OAAA;;;;;;;KAQA,0BAAA,gBAA0C,eAAA,KACpD,IAAA,EAAM,gBAAA,CAAiB,MAAA,MACpB,iBAAA,CAAkB,MAAA;;;;;;;KAQX,2BAAA,iBAA4C,gBAAA,KACtD,IAAA,EAAM,gBAAA,CAAiB,OAAA,MACpB,OAAA,CAAQ,iBAAA,CAAkB,OAAA;;;;;;;;
|
|
1
|
+
{"version":3,"file":"workflow.d.mts","names":[],"sources":["../src/handlers.ts","../src/internal.ts","../src/child-workflow.ts","../src/activities-proxy.ts","../src/workflow.ts"],"mappings":"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"}
|
package/dist/workflow.mjs
CHANGED
|
@@ -1,32 +1,31 @@
|
|
|
1
|
-
import { S as
|
|
1
|
+
import { S as WorkflowOutputValidationError, _ as UpdateInputValidationError, a as extractHandlerInput, b as WorkflowCancelledError, d as ChildWorkflowCancelledError, f as ChildWorkflowError, g as SignalInputValidationError, h as QueryOutputValidationError, i as createContinueAsNew, l as ActivityInputValidationError, m as QueryInputValidationError, n as buildRawActivitiesProxy, o as formatChildWorkflowValidationMessage, p as ChildWorkflowNotFoundError, r as classifyChildWorkflowError, s as makeAsyncResult, t as assertNoDefect, u as ActivityOutputValidationError, v as UpdateOutputValidationError, x as WorkflowInputValidationError, y as ValidationError } from "./internal-DqYK4YQK.mjs";
|
|
2
|
+
import { err, ok } from "unthrown";
|
|
2
3
|
import { CancellationScope, defineQuery, defineSignal, defineUpdate, executeChild, isCancellation, setHandler, startChild, workflowInfo } from "@temporalio/workflow";
|
|
3
|
-
import { err, ok } from "neverthrow";
|
|
4
4
|
//#region src/cancellation.ts
|
|
5
5
|
/**
|
|
6
6
|
* Typed wrappers around Temporal's `CancellationScope` so workflows can
|
|
7
7
|
* opt into cancellation control without reaching for
|
|
8
8
|
* `@temporalio/workflow` directly. The wrappers fold cancellation into
|
|
9
|
-
* the same `
|
|
9
|
+
* the same `AsyncResult<...>` shape used elsewhere in the worker
|
|
10
10
|
* context — callers branch on `err(WorkflowCancelledError)` instead of
|
|
11
11
|
* catching `CancelledFailure`.
|
|
12
12
|
*
|
|
13
|
-
* Non-cancellation errors thrown inside the scope are
|
|
14
|
-
*
|
|
15
|
-
* `cause`)
|
|
16
|
-
*
|
|
17
|
-
*
|
|
13
|
+
* Non-cancellation errors thrown inside the scope are *unmodeled* failures:
|
|
14
|
+
* they ride unthrown's `defect` channel (re-thrown at the edge / inspectable
|
|
15
|
+
* via `result.isDefect()` and `result.cause`) rather than a typed `err(...)`,
|
|
16
|
+
* keeping the modeled error channel to the single anticipated outcome —
|
|
17
|
+
* cancellation.
|
|
18
18
|
*/
|
|
19
19
|
/**
|
|
20
20
|
* Run `fn` inside a cancellable Temporal scope. If the workflow (or an
|
|
21
21
|
* ancestor scope) is cancelled while the function is in flight, the
|
|
22
|
-
* resulting
|
|
22
|
+
* resulting AsyncResult resolves to `err(WorkflowCancelledError)`,
|
|
23
23
|
* letting callers handle cancellation explicitly — typically to perform
|
|
24
24
|
* a graceful exit from the current step.
|
|
25
25
|
*
|
|
26
|
-
* Non-cancellation errors thrown by `fn`
|
|
27
|
-
* `
|
|
28
|
-
*
|
|
29
|
-
* leaking as unhandled rejections.
|
|
26
|
+
* Non-cancellation errors thrown by `fn` are unmodeled failures: they surface
|
|
27
|
+
* on the `defect` channel rather than as a typed `err(...)`, so a genuine bug
|
|
28
|
+
* is not silently treated as an anticipated domain outcome.
|
|
30
29
|
*
|
|
31
30
|
* @example
|
|
32
31
|
* ```ts
|
|
@@ -34,16 +33,15 @@ import { err, ok } from "neverthrow";
|
|
|
34
33
|
* return await context.activities.processStep(...);
|
|
35
34
|
* });
|
|
36
35
|
*
|
|
37
|
-
* result.match(
|
|
38
|
-
* (output) => { ... },
|
|
39
|
-
* (error) => {
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* }
|
|
36
|
+
* result.match({
|
|
37
|
+
* ok: (output) => { ... },
|
|
38
|
+
* err: (error) => {
|
|
39
|
+
* // error instanceof WorkflowCancelledError — graceful exit
|
|
40
|
+
* },
|
|
41
|
+
* defect: (cause) => {
|
|
42
|
+
* // a non-cancellation failure thrown inside the scope (a bug)
|
|
45
43
|
* },
|
|
46
|
-
* );
|
|
44
|
+
* });
|
|
47
45
|
* ```
|
|
48
46
|
*/
|
|
49
47
|
function cancellableScope(fn) {
|
|
@@ -52,10 +50,10 @@ function cancellableScope(fn) {
|
|
|
52
50
|
return ok(await CancellationScope.cancellable(async () => fn()));
|
|
53
51
|
} catch (error) {
|
|
54
52
|
if (isCancellation(error)) return err(new WorkflowCancelledError(error));
|
|
55
|
-
|
|
53
|
+
throw error;
|
|
56
54
|
}
|
|
57
55
|
};
|
|
58
|
-
return
|
|
56
|
+
return makeAsyncResult(work);
|
|
59
57
|
}
|
|
60
58
|
/**
|
|
61
59
|
* Run `fn` inside a non-cancellable Temporal scope. Cancellation requests
|
|
@@ -63,10 +61,10 @@ function cancellableScope(fn) {
|
|
|
63
61
|
* to perform cleanup that must not be interrupted (e.g. releasing a
|
|
64
62
|
* resource after a graceful shutdown).
|
|
65
63
|
*
|
|
66
|
-
* Mirrors `cancellableScope`'s `
|
|
64
|
+
* Mirrors `cancellableScope`'s `AsyncResult<...>` shape for symmetry; the
|
|
67
65
|
* `err(WorkflowCancelledError)` branch only triggers when cancellation is
|
|
68
|
-
* raised from inside the scope (rare). Non-cancellation errors surface
|
|
69
|
-
* `
|
|
66
|
+
* raised from inside the scope (rare). Non-cancellation errors surface on the
|
|
67
|
+
* `defect` channel.
|
|
70
68
|
*
|
|
71
69
|
* @example
|
|
72
70
|
* ```ts
|
|
@@ -81,10 +79,10 @@ function nonCancellableScope(fn) {
|
|
|
81
79
|
return ok(await CancellationScope.nonCancellable(async () => fn()));
|
|
82
80
|
} catch (error) {
|
|
83
81
|
if (isCancellation(error)) return err(new WorkflowCancelledError(error));
|
|
84
|
-
|
|
82
|
+
throw error;
|
|
85
83
|
}
|
|
86
84
|
};
|
|
87
|
-
return
|
|
85
|
+
return makeAsyncResult(work);
|
|
88
86
|
}
|
|
89
87
|
//#endregion
|
|
90
88
|
//#region src/handlers.ts
|
|
@@ -211,13 +209,14 @@ function createTypedChildHandle(handle, childDefinition, childWorkflowName) {
|
|
|
211
209
|
return err(classifyChildWorkflowError("result", error, childWorkflowName));
|
|
212
210
|
}
|
|
213
211
|
};
|
|
214
|
-
return
|
|
212
|
+
return makeAsyncResult(work);
|
|
215
213
|
}
|
|
216
214
|
};
|
|
217
215
|
}
|
|
218
216
|
function createStartChildWorkflow(childContract, childWorkflowName, options) {
|
|
219
217
|
const work = async () => {
|
|
220
218
|
const validationResult = await getAndValidateChildWorkflow(childContract, childWorkflowName, options.args);
|
|
219
|
+
assertNoDefect(validationResult);
|
|
221
220
|
if (validationResult.isErr()) return err(validationResult.error);
|
|
222
221
|
const { definition: childDefinition, validatedInput, taskQueue } = validationResult.value;
|
|
223
222
|
try {
|
|
@@ -231,11 +230,12 @@ function createStartChildWorkflow(childContract, childWorkflowName, options) {
|
|
|
231
230
|
return err(classifyChildWorkflowError("startChild", error, String(childWorkflowName)));
|
|
232
231
|
}
|
|
233
232
|
};
|
|
234
|
-
return
|
|
233
|
+
return makeAsyncResult(work);
|
|
235
234
|
}
|
|
236
235
|
function createExecuteChildWorkflow(childContract, childWorkflowName, options) {
|
|
237
236
|
const work = async () => {
|
|
238
237
|
const validationResult = await getAndValidateChildWorkflow(childContract, childWorkflowName, options.args);
|
|
238
|
+
assertNoDefect(validationResult);
|
|
239
239
|
if (validationResult.isErr()) return err(validationResult.error);
|
|
240
240
|
const { definition: childDefinition, validatedInput, taskQueue } = validationResult.value;
|
|
241
241
|
try {
|
|
@@ -245,13 +245,14 @@ function createExecuteChildWorkflow(childContract, childWorkflowName, options) {
|
|
|
245
245
|
taskQueue,
|
|
246
246
|
args: [validatedInput]
|
|
247
247
|
}), childWorkflowName);
|
|
248
|
+
assertNoDefect(outputValidationResult);
|
|
248
249
|
if (outputValidationResult.isErr()) return err(outputValidationResult.error);
|
|
249
250
|
return ok(outputValidationResult.value);
|
|
250
251
|
} catch (error) {
|
|
251
252
|
return err(classifyChildWorkflowError("executeChild", error, String(childWorkflowName)));
|
|
252
253
|
}
|
|
253
254
|
};
|
|
254
|
-
return
|
|
255
|
+
return makeAsyncResult(work);
|
|
255
256
|
}
|
|
256
257
|
//#endregion
|
|
257
258
|
//#region src/activities-proxy.ts
|
|
@@ -395,6 +396,6 @@ function declareWorkflow({ workflowName, contract, implementation, activityOptio
|
|
|
395
396
|
return workflowFn;
|
|
396
397
|
}
|
|
397
398
|
//#endregion
|
|
398
|
-
export { ActivityInputValidationError, ActivityOutputValidationError, ChildWorkflowCancelledError, ChildWorkflowError, ChildWorkflowNotFoundError, QueryInputValidationError, QueryOutputValidationError, SignalInputValidationError, UpdateInputValidationError, UpdateOutputValidationError, ValidationError, WorkflowCancelledError, WorkflowInputValidationError, WorkflowOutputValidationError,
|
|
399
|
+
export { ActivityInputValidationError, ActivityOutputValidationError, ChildWorkflowCancelledError, ChildWorkflowError, ChildWorkflowNotFoundError, QueryInputValidationError, QueryOutputValidationError, SignalInputValidationError, UpdateInputValidationError, UpdateOutputValidationError, ValidationError, WorkflowCancelledError, WorkflowInputValidationError, WorkflowOutputValidationError, declareWorkflow };
|
|
399
400
|
|
|
400
401
|
//# sourceMappingURL=workflow.mjs.map
|