@acmekit/workflows-sdk 2.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acmekit-workflow.d.ts +3 -0
- package/dist/acmekit-workflow.d.ts.map +1 -0
- package/dist/acmekit-workflow.js +22 -0
- package/dist/acmekit-workflow.js.map +1 -0
- package/dist/helper/index.d.ts +3 -0
- package/dist/helper/index.d.ts.map +1 -0
- package/dist/helper/index.js +19 -0
- package/dist/helper/index.js.map +1 -0
- package/dist/helper/type.d.ts +71 -0
- package/dist/helper/type.d.ts.map +1 -0
- package/dist/helper/type.js +3 -0
- package/dist/helper/type.js.map +1 -0
- package/dist/helper/workflow-export.d.ts +6 -0
- package/dist/helper/workflow-export.d.ts.map +1 -0
- package/dist/helper/workflow-export.js +291 -0
- package/dist/helper/workflow-export.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/_playground.d.ts +2 -0
- package/dist/utils/_playground.d.ts.map +1 -0
- package/dist/utils/_playground.js +40 -0
- package/dist/utils/_playground.js.map +1 -0
- package/dist/utils/composer/create-hook.d.ts +60 -0
- package/dist/utils/composer/create-hook.d.ts.map +1 -0
- package/dist/utils/composer/create-hook.js +97 -0
- package/dist/utils/composer/create-hook.js.map +1 -0
- package/dist/utils/composer/create-step.d.ts +134 -0
- package/dist/utils/composer/create-step.d.ts.map +1 -0
- package/dist/utils/composer/create-step.js +262 -0
- package/dist/utils/composer/create-step.js.map +1 -0
- package/dist/utils/composer/create-workflow.d.ts +71 -0
- package/dist/utils/composer/create-workflow.d.ts.map +1 -0
- package/dist/utils/composer/create-workflow.js +230 -0
- package/dist/utils/composer/create-workflow.js.map +1 -0
- package/dist/utils/composer/helpers/create-step-handler.d.ts +20 -0
- package/dist/utils/composer/helpers/create-step-handler.d.ts.map +1 -0
- package/dist/utils/composer/helpers/create-step-handler.js +95 -0
- package/dist/utils/composer/helpers/create-step-handler.js.map +1 -0
- package/dist/utils/composer/helpers/index.d.ts +3 -0
- package/dist/utils/composer/helpers/index.d.ts.map +1 -0
- package/dist/utils/composer/helpers/index.js +19 -0
- package/dist/utils/composer/helpers/index.js.map +1 -0
- package/dist/utils/composer/helpers/proxy.d.ts +3 -0
- package/dist/utils/composer/helpers/proxy.d.ts.map +1 -0
- package/dist/utils/composer/helpers/proxy.js +18 -0
- package/dist/utils/composer/helpers/proxy.js.map +1 -0
- package/dist/utils/composer/helpers/resolve-value.d.ts +8 -0
- package/dist/utils/composer/helpers/resolve-value.d.ts.map +1 -0
- package/dist/utils/composer/helpers/resolve-value.js +211 -0
- package/dist/utils/composer/helpers/resolve-value.js.map +1 -0
- package/dist/utils/composer/helpers/step-response.d.ts +126 -0
- package/dist/utils/composer/helpers/step-response.d.ts.map +1 -0
- package/dist/utils/composer/helpers/step-response.js +166 -0
- package/dist/utils/composer/helpers/step-response.js.map +1 -0
- package/dist/utils/composer/helpers/workflow-response.d.ts +20 -0
- package/dist/utils/composer/helpers/workflow-response.d.ts.map +1 -0
- package/dist/utils/composer/helpers/workflow-response.js +16 -0
- package/dist/utils/composer/helpers/workflow-response.js.map +1 -0
- package/dist/utils/composer/index.d.ts +11 -0
- package/dist/utils/composer/index.d.ts.map +1 -0
- package/dist/utils/composer/index.js +27 -0
- package/dist/utils/composer/index.js.map +1 -0
- package/dist/utils/composer/parallelize.d.ts +43 -0
- package/dist/utils/composer/parallelize.d.ts.map +1 -0
- package/dist/utils/composer/parallelize.js +57 -0
- package/dist/utils/composer/parallelize.js.map +1 -0
- package/dist/utils/composer/transform.d.ts +79 -0
- package/dist/utils/composer/transform.d.ts.map +1 -0
- package/dist/utils/composer/transform.js +47 -0
- package/dist/utils/composer/transform.js.map +1 -0
- package/dist/utils/composer/type.d.ts +243 -0
- package/dist/utils/composer/type.d.ts.map +1 -0
- package/dist/utils/composer/type.js +3 -0
- package/dist/utils/composer/type.js.map +1 -0
- package/dist/utils/composer/when.d.ts +58 -0
- package/dist/utils/composer/when.d.ts.map +1 -0
- package/dist/utils/composer/when.js +67 -0
- package/dist/utils/composer/when.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createWorkflow = createWorkflow;
|
|
4
|
+
const orchestration_1 = require("@acmekit/orchestration");
|
|
5
|
+
const utils_1 = require("@acmekit/utils");
|
|
6
|
+
const ulid_1 = require("ulid");
|
|
7
|
+
const helper_1 = require("../../helper");
|
|
8
|
+
const create_step_1 = require("./create-step");
|
|
9
|
+
const proxy_1 = require("./helpers/proxy");
|
|
10
|
+
const step_response_1 = require("./helpers/step-response");
|
|
11
|
+
global[utils_1.OrchestrationUtils.SymbolAcmeKitWorkflowComposerContext] = null;
|
|
12
|
+
const buildTransactionId = (step, stepContext) => {
|
|
13
|
+
return (step.__step__ +
|
|
14
|
+
"-" +
|
|
15
|
+
(stepContext.transactionId ?? (0, ulid_1.ulid)()) +
|
|
16
|
+
(stepContext.attempt > 1 ? `-attempt-${stepContext.attempt}` : ""));
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* This function creates a workflow with the provided name and a constructor function.
|
|
20
|
+
* The constructor function builds the workflow from steps created by the {@link createStep} function.
|
|
21
|
+
* The returned workflow is an exported workflow of type {@link ReturnWorkflow}, meaning it's not executed right away. To execute it,
|
|
22
|
+
* invoke the exported workflow, then run its `run` method.
|
|
23
|
+
*
|
|
24
|
+
* @typeParam TData - The type of the input passed to the composer function.
|
|
25
|
+
* @typeParam TResult - The type of the output returned by the composer function.
|
|
26
|
+
* @typeParam THooks - The type of hooks defined in the workflow.
|
|
27
|
+
*
|
|
28
|
+
* @returns The created workflow. You can later execute the workflow by invoking it, then using its `run` method.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* import {
|
|
32
|
+
* createWorkflow,
|
|
33
|
+
* WorkflowResponse
|
|
34
|
+
* } from "@acmekit/framework/workflows-sdk"
|
|
35
|
+
* import { AcmeKitRequest, AcmeKitResponse } from "@acmekit/framework/http"
|
|
36
|
+
* import {
|
|
37
|
+
* createProductStep,
|
|
38
|
+
* getProductStep,
|
|
39
|
+
* } from "./steps"
|
|
40
|
+
*
|
|
41
|
+
* interface WorkflowInput {
|
|
42
|
+
* title: string
|
|
43
|
+
* }
|
|
44
|
+
*
|
|
45
|
+
* const myWorkflow = createWorkflow(
|
|
46
|
+
* "my-workflow",
|
|
47
|
+
* (input: WorkflowInput) => {
|
|
48
|
+
* // Everything here will be executed and resolved later
|
|
49
|
+
* // during the execution. Including the data access.
|
|
50
|
+
*
|
|
51
|
+
* const product = createProductStep(input)
|
|
52
|
+
* return new WorkflowResponse(getProductStep(product.id))
|
|
53
|
+
* }
|
|
54
|
+
* )
|
|
55
|
+
*
|
|
56
|
+
* export async function GET(
|
|
57
|
+
* req: AcmeKitRequest,
|
|
58
|
+
* res: AcmeKitResponse
|
|
59
|
+
* ) {
|
|
60
|
+
* const { result: product } = await myWorkflow(req.scope)
|
|
61
|
+
* .run({
|
|
62
|
+
* input: {
|
|
63
|
+
* title: "Shirt"
|
|
64
|
+
* }
|
|
65
|
+
* })
|
|
66
|
+
*
|
|
67
|
+
* res.json({
|
|
68
|
+
* product
|
|
69
|
+
* })
|
|
70
|
+
* }
|
|
71
|
+
*/
|
|
72
|
+
function createWorkflow(
|
|
73
|
+
/**
|
|
74
|
+
* The name of the workflow or its configuration.
|
|
75
|
+
*/
|
|
76
|
+
nameOrConfig,
|
|
77
|
+
/**
|
|
78
|
+
* The constructor function that is executed when the `run` method in {@link ReturnWorkflow} is used.
|
|
79
|
+
* The function can't be an arrow function or an asynchronus function. It also can't directly manipulate data.
|
|
80
|
+
* You'll have to use the {@link transform} function if you need to directly manipulate data.
|
|
81
|
+
*/
|
|
82
|
+
composer) {
|
|
83
|
+
const fileSourcePath = (0, utils_1.getCallerFilePath)();
|
|
84
|
+
const name = (0, utils_1.isString)(nameOrConfig) ? nameOrConfig : nameOrConfig.name;
|
|
85
|
+
const options = (0, utils_1.isString)(nameOrConfig) ? {} : nameOrConfig;
|
|
86
|
+
(0, utils_1.registerDevServerResource)({
|
|
87
|
+
sourcePath: fileSourcePath,
|
|
88
|
+
id: name,
|
|
89
|
+
type: "workflow",
|
|
90
|
+
});
|
|
91
|
+
const handlers = new Map();
|
|
92
|
+
let newWorkflow = false;
|
|
93
|
+
if (!orchestration_1.WorkflowManager.getWorkflow(name)) {
|
|
94
|
+
newWorkflow = true;
|
|
95
|
+
orchestration_1.WorkflowManager.register(name, undefined, handlers, options);
|
|
96
|
+
}
|
|
97
|
+
const context = {
|
|
98
|
+
__type: utils_1.OrchestrationUtils.SymbolAcmeKitWorkflowComposerContext,
|
|
99
|
+
workflowId: name,
|
|
100
|
+
flow: orchestration_1.WorkflowManager.getEmptyTransactionDefinition(),
|
|
101
|
+
isAsync: false,
|
|
102
|
+
handlers,
|
|
103
|
+
overriddenHandler: new Map(),
|
|
104
|
+
hooks_: {
|
|
105
|
+
declared: [],
|
|
106
|
+
registered: [],
|
|
107
|
+
},
|
|
108
|
+
hooksCallback_: {},
|
|
109
|
+
stepConditions_: {},
|
|
110
|
+
hookBinder: (name, fn) => {
|
|
111
|
+
context.hooks_.declared.push(name);
|
|
112
|
+
context.hooksCallback_[name] = fn.bind(context)();
|
|
113
|
+
},
|
|
114
|
+
stepBinder: (fn) => {
|
|
115
|
+
return fn.bind(context)();
|
|
116
|
+
},
|
|
117
|
+
parallelizeBinder: (fn) => {
|
|
118
|
+
return fn.bind(context)();
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
global[utils_1.OrchestrationUtils.SymbolAcmeKitWorkflowComposerContext] = context;
|
|
122
|
+
const inputPlaceHolder = (0, proxy_1.proxify)({
|
|
123
|
+
__type: utils_1.OrchestrationUtils.SymbolInputReference,
|
|
124
|
+
__step__: "",
|
|
125
|
+
config: () => {
|
|
126
|
+
// TODO: config default value?
|
|
127
|
+
throw new Error("Config is not available for the input object.");
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
const returnedStep = composer.apply(context, [inputPlaceHolder]);
|
|
131
|
+
delete global[utils_1.OrchestrationUtils.SymbolAcmeKitWorkflowComposerContext];
|
|
132
|
+
if (newWorkflow) {
|
|
133
|
+
orchestration_1.WorkflowManager.update(name, context.flow, handlers, options);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
orchestration_1.WorkflowManager.register(name, context.flow, handlers, options);
|
|
137
|
+
}
|
|
138
|
+
const workflow = (0, helper_1.exportWorkflow)(name, returnedStep, {
|
|
139
|
+
wrappedInput: true,
|
|
140
|
+
sourcePath: fileSourcePath,
|
|
141
|
+
});
|
|
142
|
+
const mainFlow = (container) => {
|
|
143
|
+
const workflow_ = workflow(container);
|
|
144
|
+
const expandedFlow = workflow_;
|
|
145
|
+
expandedFlow.config = (config) => {
|
|
146
|
+
workflow_.setOptions(config);
|
|
147
|
+
};
|
|
148
|
+
return expandedFlow;
|
|
149
|
+
};
|
|
150
|
+
mainFlow.hooks = {};
|
|
151
|
+
for (const hook of context.hooks_.declared) {
|
|
152
|
+
mainFlow.hooks[hook] = context.hooksCallback_[hook].bind(context);
|
|
153
|
+
}
|
|
154
|
+
mainFlow.getName = () => name;
|
|
155
|
+
mainFlow.run = mainFlow().run;
|
|
156
|
+
mainFlow.runAsStep = ({ input, }) => {
|
|
157
|
+
// Get current workflow composition context
|
|
158
|
+
const workflowCompositionContext = global[utils_1.OrchestrationUtils.SymbolAcmeKitWorkflowComposerContext];
|
|
159
|
+
const runAsAsync = workflowCompositionContext.isAsync || context.isAsync;
|
|
160
|
+
const step = (0, create_step_1.createStep)({
|
|
161
|
+
name: `${name}-as-step`,
|
|
162
|
+
async: runAsAsync,
|
|
163
|
+
nested: runAsAsync, // if async we flag this is a nested transaction
|
|
164
|
+
}, async (stepInput, stepContext) => {
|
|
165
|
+
const { container, ...sharedContext } = stepContext;
|
|
166
|
+
const isAsync = stepContext[" stepDefinition"]?.async;
|
|
167
|
+
const workflowEngine = container.resolve(utils_1.Modules.WORKFLOW_ENGINE, {
|
|
168
|
+
allowUnregistered: true,
|
|
169
|
+
});
|
|
170
|
+
const executionContext = {
|
|
171
|
+
...(sharedContext?.context ?? {}),
|
|
172
|
+
transactionId: buildTransactionId(step, stepContext),
|
|
173
|
+
parentStepIdempotencyKey: stepContext.idempotencyKey,
|
|
174
|
+
preventReleaseEvents: true,
|
|
175
|
+
runId: stepContext.runId,
|
|
176
|
+
};
|
|
177
|
+
let transaction;
|
|
178
|
+
if (workflowEngine && isAsync) {
|
|
179
|
+
transaction = await workflowEngine.run(name, {
|
|
180
|
+
input: stepInput,
|
|
181
|
+
transactionId: executionContext.transactionId,
|
|
182
|
+
context: executionContext,
|
|
183
|
+
throwOnError: false,
|
|
184
|
+
logOnError: true,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
transaction = await workflow.run({
|
|
189
|
+
input: stepInput,
|
|
190
|
+
container,
|
|
191
|
+
context: executionContext,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
return new step_response_1.StepResponse(transaction.result, isAsync ? stepContext.transactionId : transaction);
|
|
195
|
+
}, async (transaction, stepContext) => {
|
|
196
|
+
// The step itself has failed, there is nothing to revert
|
|
197
|
+
const { container, ...sharedContext } = stepContext;
|
|
198
|
+
const isAsync = stepContext[" stepDefinition"]?.async;
|
|
199
|
+
const workflowEngine = container.resolve(utils_1.Modules.WORKFLOW_ENGINE, {
|
|
200
|
+
allowUnregistered: true,
|
|
201
|
+
});
|
|
202
|
+
const executionContext = {
|
|
203
|
+
...(sharedContext?.context ?? {}),
|
|
204
|
+
transactionId: buildTransactionId(step, stepContext),
|
|
205
|
+
parentStepIdempotencyKey: stepContext.idempotencyKey,
|
|
206
|
+
preventReleaseEvents: true,
|
|
207
|
+
cancelingFromParentStep: true,
|
|
208
|
+
};
|
|
209
|
+
if (workflowEngine && isAsync) {
|
|
210
|
+
await workflowEngine.cancel(name, {
|
|
211
|
+
transactionId: executionContext.transactionId,
|
|
212
|
+
context: executionContext,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
await workflow(container).cancel({
|
|
217
|
+
transaction: (transaction ?? {})
|
|
218
|
+
?.transaction,
|
|
219
|
+
transactionId: executionContext.transactionId,
|
|
220
|
+
container,
|
|
221
|
+
context: executionContext,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
return;
|
|
225
|
+
})(input);
|
|
226
|
+
return step;
|
|
227
|
+
};
|
|
228
|
+
return mainFlow;
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=create-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-workflow.js","sourceRoot":"","sources":["../../../src/utils/composer/create-workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { WorkflowStepHandlerArguments } from "@acmekit/orchestration";
|
|
2
|
+
import { ApplyStepOptions } from "../create-step";
|
|
3
|
+
import { CreateWorkflowComposerContext, WorkflowData } from "../type";
|
|
4
|
+
import { StepResponse } from "./step-response";
|
|
5
|
+
export declare function createStepHandler<TInvokeInput, TStepInput extends {
|
|
6
|
+
[K in keyof TInvokeInput]: WorkflowData<TInvokeInput[K]>;
|
|
7
|
+
}, TInvokeResultOutput, TInvokeResultCompensateInput>(this: CreateWorkflowComposerContext, { stepName, input, invokeFn, compensateFn, }: ApplyStepOptions<TStepInput, TInvokeInput, TInvokeResultOutput, TInvokeResultCompensateInput>): {
|
|
8
|
+
invoke: (stepArguments: WorkflowStepHandlerArguments) => Promise<{
|
|
9
|
+
__type: string;
|
|
10
|
+
output: StepResponse<any, any> | {
|
|
11
|
+
__type: string;
|
|
12
|
+
output: any;
|
|
13
|
+
compensateInput: any;
|
|
14
|
+
};
|
|
15
|
+
}>;
|
|
16
|
+
compensate: ((stepArguments: WorkflowStepHandlerArguments) => Promise<{
|
|
17
|
+
output: any;
|
|
18
|
+
}>) | undefined;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=create-step-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-step-handler.d.ts","sourceRoot":"","sources":["../../../../src/utils/composer/helpers/create-step-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EACL,6BAA6B,EAE7B,YAAY,EACb,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AA6C9C,wBAAgB,iBAAiB,CAC/B,YAAY,EACZ,UAAU,SAAS;KAChB,CAAC,IAAI,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CACzD,EACD,mBAAmB,EACnB,4BAA4B,EAE5B,IAAI,EAAE,6BAA6B,EACnC,EACE,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,YAAY,GACb,EAAE,gBAAgB,CACjB,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,4BAA4B,CAC7B;4BAG+B,4BAA4B;;;;;;;;iCAqChC,4BAA4B;;;EAiCzD"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createStepHandler = createStepHandler;
|
|
4
|
+
const utils_1 = require("@acmekit/utils");
|
|
5
|
+
const resolve_value_1 = require("./resolve-value");
|
|
6
|
+
function buildStepContext({ action, stepArguments, }) {
|
|
7
|
+
const metadata = stepArguments.metadata;
|
|
8
|
+
const idempotencyKey = metadata.idempotency_key;
|
|
9
|
+
stepArguments.context.idempotencyKey = idempotencyKey;
|
|
10
|
+
const flow = stepArguments.transaction.getFlow();
|
|
11
|
+
const flowMetadata = flow?.metadata;
|
|
12
|
+
const stepDefinition = stepArguments.step.definition;
|
|
13
|
+
const executionContext = {
|
|
14
|
+
workflowId: metadata.model_id,
|
|
15
|
+
stepName: metadata.action,
|
|
16
|
+
action,
|
|
17
|
+
idempotencyKey,
|
|
18
|
+
attempt: metadata.attempt,
|
|
19
|
+
container: stepArguments.container,
|
|
20
|
+
metadata,
|
|
21
|
+
eventGroupId: flowMetadata?.eventGroupId ?? stepArguments.context.eventGroupId,
|
|
22
|
+
parentStepIdempotencyKey: flowMetadata?.parentStepIdempotencyKey,
|
|
23
|
+
preventReleaseEvents: flowMetadata?.preventReleaseEvents ?? false,
|
|
24
|
+
transactionId: stepArguments.context.transactionId,
|
|
25
|
+
runId: flow.runId,
|
|
26
|
+
context: stepArguments.context,
|
|
27
|
+
" stepDefinition": stepDefinition,
|
|
28
|
+
" getStepResult"(stepId, action = "invoke") {
|
|
29
|
+
return stepArguments[action][stepId]?.output?.output;
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
return executionContext;
|
|
33
|
+
}
|
|
34
|
+
function createStepHandler({ stepName, input, invokeFn, compensateFn, }) {
|
|
35
|
+
const handler = {
|
|
36
|
+
invoke: async (stepArguments) => {
|
|
37
|
+
const executionContext = buildStepContext({
|
|
38
|
+
action: "invoke",
|
|
39
|
+
stepArguments,
|
|
40
|
+
});
|
|
41
|
+
let argInput = {};
|
|
42
|
+
if (input) {
|
|
43
|
+
argInput = (0, resolve_value_1.resolveValue)(input, stepArguments);
|
|
44
|
+
if (argInput instanceof Promise) {
|
|
45
|
+
argInput = await argInput;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const stepResponse = await invokeFn.apply(this, [
|
|
49
|
+
argInput,
|
|
50
|
+
executionContext,
|
|
51
|
+
]);
|
|
52
|
+
if (!stepResponse || typeof stepResponse !== "object") {
|
|
53
|
+
return {
|
|
54
|
+
__type: utils_1.OrchestrationUtils.SymbolWorkflowWorkflowData,
|
|
55
|
+
output: stepResponse,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const stepResponseJSON = stepResponse.__type === utils_1.OrchestrationUtils.SymbolWorkflowStepResponse
|
|
59
|
+
? stepResponse.toJSON()
|
|
60
|
+
: stepResponse;
|
|
61
|
+
return {
|
|
62
|
+
__type: utils_1.OrchestrationUtils.SymbolWorkflowWorkflowData,
|
|
63
|
+
output: stepResponseJSON,
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
compensate: compensateFn
|
|
67
|
+
? async (stepArguments) => {
|
|
68
|
+
const executionContext = buildStepContext({
|
|
69
|
+
action: "compensate",
|
|
70
|
+
stepArguments,
|
|
71
|
+
});
|
|
72
|
+
const stepOutput = stepArguments.invoke[stepName]?.output;
|
|
73
|
+
if (!stepOutput) {
|
|
74
|
+
const output = await compensateFn.apply(this, [
|
|
75
|
+
stepOutput,
|
|
76
|
+
executionContext,
|
|
77
|
+
]);
|
|
78
|
+
return { output };
|
|
79
|
+
}
|
|
80
|
+
const invokeResult = stepOutput.__type === utils_1.OrchestrationUtils.SymbolWorkflowStepResponse
|
|
81
|
+
? stepOutput.compensateInput
|
|
82
|
+
: stepOutput;
|
|
83
|
+
const output = await compensateFn.apply(this, [
|
|
84
|
+
invokeResult,
|
|
85
|
+
executionContext,
|
|
86
|
+
]);
|
|
87
|
+
return {
|
|
88
|
+
output,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
: undefined,
|
|
92
|
+
};
|
|
93
|
+
return handler;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=create-step-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-step-handler.js","sourceRoot":"","sources":["../../../../src/utils/composer/helpers/create-step-handler.ts"],"names":[],"mappings":";;AAsDA,8CA4FC;AAjJD,0CAAmD;AAOnD,mDAA8C;AAG9C,SAAS,gBAAgB,CAAC,EACxB,MAAM,EACN,aAAa,GAId;IACC,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAA;IACvC,MAAM,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAA;IAE/C,aAAa,CAAC,OAAQ,CAAC,cAAc,GAAG,cAAc,CAAA;IAEtD,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,CAAA;IAChD,MAAM,YAAY,GAAG,IAAI,EAAE,QAAQ,CAAA;IACnC,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAA;IAEpD,MAAM,gBAAgB,GAAyB;QAC7C,UAAU,EAAE,QAAQ,CAAC,QAAQ;QAC7B,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,MAAM;QACN,cAAc;QACd,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,SAAS,EAAE,aAAa,CAAC,SAAS;QAClC,QAAQ;QACR,YAAY,EACV,YAAY,EAAE,YAAY,IAAI,aAAa,CAAC,OAAQ,CAAC,YAAY;QACnE,wBAAwB,EAAE,YAAY,EAAE,wBAAkC;QAC1E,oBAAoB,EAAE,YAAY,EAAE,oBAAoB,IAAI,KAAK;QACjE,aAAa,EAAE,aAAa,CAAC,OAAQ,CAAC,aAAa;QACnD,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,aAAa,CAAC,OAAQ;QAC/B,iBAAiB,EAAE,cAAc;QACjC,gBAAgB,CACd,MAAc,EACd,SAAkC,QAAQ;YAE1C,OAAQ,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAS,EAAE,MAAM,EAAE,MAAM,CAAA;QAC/D,CAAC;KACF,CAAA;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAED,SAAgB,iBAAiB,CAS/B,EACE,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,YAAY,GAMb;IAED,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,aAA2C,EAAE,EAAE;YAC5D,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;gBACxC,MAAM,EAAE,QAAQ;gBAChB,aAAa;aACd,CAAC,CAAA;YAEF,IAAI,QAAQ,GAAG,EAAE,CAAA;YACjB,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,GAAG,IAAA,4BAAY,EAAC,KAAK,EAAE,aAAa,CAAC,CAAA;gBAC7C,IAAI,QAAQ,YAAY,OAAO,EAAE,CAAC;oBAChC,QAAQ,GAAG,MAAM,QAAQ,CAAA;gBAC3B,CAAC;YACH,CAAC;YAED,MAAM,YAAY,GAA2B,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;gBACtE,QAAQ;gBACR,gBAAgB;aACjB,CAAC,CAAA;YAEF,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACtD,OAAO;oBACL,MAAM,EAAE,0BAAkB,CAAC,0BAA0B;oBACrD,MAAM,EAAE,YAAY;iBACrB,CAAA;YACH,CAAC;YAED,MAAM,gBAAgB,GACpB,YAAY,CAAC,MAAM,KAAK,0BAAkB,CAAC,0BAA0B;gBACnE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE;gBACvB,CAAC,CAAC,YAAY,CAAA;YAElB,OAAO;gBACL,MAAM,EAAE,0BAAkB,CAAC,0BAA0B;gBACrD,MAAM,EAAE,gBAAgB;aACzB,CAAA;QACH,CAAC;QACD,UAAU,EAAE,YAAY;YACtB,CAAC,CAAC,KAAK,EAAE,aAA2C,EAAE,EAAE;gBACpD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;oBACxC,MAAM,EAAE,YAAY;oBACpB,aAAa;iBACd,CAAC,CAAA;gBAEF,MAAM,UAAU,GAAI,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAS,EAAE,MAAM,CAAA;gBAElE,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE;wBAC5C,UAAU;wBACV,gBAAgB;qBACjB,CAAC,CAAA;oBACF,OAAO,EAAE,MAAM,EAAE,CAAA;gBACnB,CAAC;gBAED,MAAM,YAAY,GAChB,UAAU,CAAC,MAAM,KAAK,0BAAkB,CAAC,0BAA0B;oBACjE,CAAC,CAAC,UAAU,CAAC,eAAe;oBAC5B,CAAC,CAAC,UAAU,CAAA;gBAEhB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE;oBAC5C,YAAY;oBACZ,gBAAgB;iBACjB,CAAC,CAAA;gBACF,OAAO;oBACL,MAAM;iBACP,CAAA;YACH,CAAC;YACH,CAAC,CAAC,SAAS;KACd,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/composer/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./step-response"), exports);
|
|
18
|
+
__exportStar(require("./resolve-value"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/composer/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA+B;AAC/B,kDAA+B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../../src/utils/composer/helpers/proxy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAcpD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.proxify = proxify;
|
|
4
|
+
const transform_1 = require("../transform");
|
|
5
|
+
function proxify(obj) {
|
|
6
|
+
return new Proxy(obj, {
|
|
7
|
+
get(target, prop) {
|
|
8
|
+
if (prop in target) {
|
|
9
|
+
return target[prop];
|
|
10
|
+
}
|
|
11
|
+
const transformer = (0, transform_1.transform)({ target }, function (data) {
|
|
12
|
+
return data.target?.[prop];
|
|
13
|
+
});
|
|
14
|
+
return transformer;
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../src/utils/composer/helpers/proxy.ts"],"names":[],"mappings":";;AAGA,0BAcC;AAjBD,4CAAwC;AAGxC,SAAgB,OAAO,CAAI,GAAsB;IAC/C,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE;QACpB,GAAG,CAAC,MAAW,EAAE,IAAqB;YACpC,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACnB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;YACrB,CAAC;YAED,MAAM,WAAW,GAAG,IAAA,qBAAS,EAAC,EAAE,MAAM,EAAE,EAAE,UAAU,IAAI;gBACtD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC,CAAC,CAAA;YAEF,OAAO,WAAW,CAAA;QACpB,CAAC;KACF,CAAiB,CAAA;AACpB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type InputPrimitive = string | Symbol;
|
|
2
|
+
type InputObject = object & {
|
|
3
|
+
__type?: string | Symbol;
|
|
4
|
+
output?: any;
|
|
5
|
+
};
|
|
6
|
+
export declare function resolveValue(input: InputPrimitive | InputObject | unknown | undefined, transactionContext: any): Promise<any> | any;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=resolve-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-value.d.ts","sourceRoot":"","sources":["../../../../src/utils/composer/helpers/resolve-value.ts"],"names":[],"mappings":"AAQA,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,CAAA;AACrC,KAAK,WAAW,GAAG,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,CAAA;AA8KtE,wBAAgB,YAAY,CAC1B,KAAK,EAAE,cAAc,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,EACzD,kBAAkB,EAAE,GAAG,GACtB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CA8BpB"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.resolveValue = resolveValue;
|
|
37
|
+
const utils_1 = require("@acmekit/utils");
|
|
38
|
+
const util = __importStar(require("node:util"));
|
|
39
|
+
function resolveProperty(property, transactionContext) {
|
|
40
|
+
const { invoke: invokeRes } = transactionContext;
|
|
41
|
+
let res;
|
|
42
|
+
if (property.__type === utils_1.OrchestrationUtils.SymbolInputReference) {
|
|
43
|
+
res = transactionContext.payload;
|
|
44
|
+
}
|
|
45
|
+
else if (property.__type === utils_1.OrchestrationUtils.SymbolAcmeKitWorkflowResponse) {
|
|
46
|
+
res = resolveValue(property.$result, transactionContext);
|
|
47
|
+
}
|
|
48
|
+
else if (property.__type === utils_1.OrchestrationUtils.SymbolWorkflowStepTransformer) {
|
|
49
|
+
res = property.__resolver(transactionContext);
|
|
50
|
+
}
|
|
51
|
+
else if (property.__type === utils_1.OrchestrationUtils.SymbolWorkflowStep) {
|
|
52
|
+
const output = invokeRes[property.__step__]?.output ?? invokeRes[property.__step__];
|
|
53
|
+
if (output?.__type === utils_1.OrchestrationUtils.SymbolWorkflowStepResponse) {
|
|
54
|
+
res = output.output;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
res = output;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else if (property.__type === utils_1.OrchestrationUtils.SymbolWorkflowStepResponse) {
|
|
61
|
+
res = property.output;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
res = property;
|
|
65
|
+
}
|
|
66
|
+
return res;
|
|
67
|
+
}
|
|
68
|
+
function unwrapInput({ inputTOUnwrap, parentRef, transactionContext, }) {
|
|
69
|
+
if (inputTOUnwrap == null) {
|
|
70
|
+
return inputTOUnwrap;
|
|
71
|
+
}
|
|
72
|
+
if (Array.isArray(inputTOUnwrap)) {
|
|
73
|
+
const promises = [];
|
|
74
|
+
const resolvedItems = new Array(inputTOUnwrap.length);
|
|
75
|
+
for (let i = 0; i < inputTOUnwrap.length; i++) {
|
|
76
|
+
const item = inputTOUnwrap[i];
|
|
77
|
+
if (item == null || typeof item !== "object") {
|
|
78
|
+
resolvedItems[i] = item;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
const resolved = resolveValue(item, transactionContext);
|
|
82
|
+
if (resolved instanceof Promise) {
|
|
83
|
+
promises.push({ promise: resolved, index: i });
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
resolvedItems[i] = resolved;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (promises.length > 0) {
|
|
91
|
+
return (0, utils_1.promiseAll)(promises.map((p) => p.promise)).then((resolvedPromises) => {
|
|
92
|
+
for (let i = 0; i < promises.length; i++) {
|
|
93
|
+
resolvedItems[promises[i].index] = resolvedPromises[i];
|
|
94
|
+
}
|
|
95
|
+
return resolvedItems;
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return resolvedItems;
|
|
99
|
+
}
|
|
100
|
+
if (util.types.isProxy(inputTOUnwrap)) {
|
|
101
|
+
const resolved = resolveProperty(inputTOUnwrap, transactionContext);
|
|
102
|
+
if (resolved instanceof Promise) {
|
|
103
|
+
return resolved.then((r) => {
|
|
104
|
+
inputTOUnwrap = r;
|
|
105
|
+
if (!(0, utils_1.isObject)(inputTOUnwrap)) {
|
|
106
|
+
return inputTOUnwrap;
|
|
107
|
+
}
|
|
108
|
+
return unwrapInput({
|
|
109
|
+
inputTOUnwrap,
|
|
110
|
+
parentRef: {},
|
|
111
|
+
transactionContext,
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
inputTOUnwrap = resolved;
|
|
116
|
+
}
|
|
117
|
+
if (!(0, utils_1.isObject)(inputTOUnwrap)) {
|
|
118
|
+
return inputTOUnwrap;
|
|
119
|
+
}
|
|
120
|
+
const keys = Object.keys(inputTOUnwrap);
|
|
121
|
+
const promises = [];
|
|
122
|
+
for (let i = 0; i < keys.length; i++) {
|
|
123
|
+
const key = keys[i];
|
|
124
|
+
if (inputTOUnwrap[key] == null || typeof inputTOUnwrap[key] !== "object") {
|
|
125
|
+
parentRef[key] = inputTOUnwrap[key];
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
const result = resolveProperty(inputTOUnwrap[key], transactionContext);
|
|
129
|
+
if (result instanceof Promise) {
|
|
130
|
+
promises.push({ promise: result, keyIndex: i });
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
parentRef[key] = result;
|
|
134
|
+
if (result != null && typeof result === "object") {
|
|
135
|
+
const unwrapped = unwrapInput({
|
|
136
|
+
inputTOUnwrap: result,
|
|
137
|
+
parentRef: {},
|
|
138
|
+
transactionContext,
|
|
139
|
+
});
|
|
140
|
+
if (unwrapped instanceof Promise) {
|
|
141
|
+
promises.push({
|
|
142
|
+
promise: unwrapped.then((r) => ({ key, value: r })),
|
|
143
|
+
keyIndex: i,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
parentRef[key] = unwrapped;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (promises.length > 0) {
|
|
153
|
+
return (0, utils_1.promiseAll)(promises.map((p) => p.promise)).then((resolvedPromises) => {
|
|
154
|
+
for (let i = 0; i < promises.length; i++) {
|
|
155
|
+
const resolved = resolvedPromises[i];
|
|
156
|
+
if (resolved && typeof resolved === "object" && "key" in resolved) {
|
|
157
|
+
parentRef[resolved.key] = resolved.value;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
const key = keys[promises[i].keyIndex];
|
|
161
|
+
parentRef[key] = resolved;
|
|
162
|
+
if (resolved != null && typeof resolved === "object") {
|
|
163
|
+
const unwrapped = unwrapInput({
|
|
164
|
+
inputTOUnwrap: resolved,
|
|
165
|
+
parentRef: {},
|
|
166
|
+
transactionContext,
|
|
167
|
+
});
|
|
168
|
+
if (unwrapped instanceof Promise) {
|
|
169
|
+
return unwrapped.then((r) => {
|
|
170
|
+
parentRef[key] = r;
|
|
171
|
+
return parentRef;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
parentRef[key] = unwrapped;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return parentRef;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
return parentRef;
|
|
182
|
+
}
|
|
183
|
+
function resolveValue(input, transactionContext) {
|
|
184
|
+
if (input == null || typeof input !== "object") {
|
|
185
|
+
return input;
|
|
186
|
+
}
|
|
187
|
+
const input_ = input?.__type ===
|
|
188
|
+
utils_1.OrchestrationUtils.SymbolWorkflowWorkflowData
|
|
189
|
+
? input.output
|
|
190
|
+
: input;
|
|
191
|
+
let result;
|
|
192
|
+
if (input_?.__type) {
|
|
193
|
+
result = resolveProperty(input_, transactionContext);
|
|
194
|
+
if (result instanceof Promise) {
|
|
195
|
+
return result.then((r) => (0, utils_1.parseStringifyIfNecessary)(r));
|
|
196
|
+
}
|
|
197
|
+
return (0, utils_1.parseStringifyIfNecessary)(result);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
result = unwrapInput({
|
|
201
|
+
inputTOUnwrap: input_,
|
|
202
|
+
parentRef: {},
|
|
203
|
+
transactionContext,
|
|
204
|
+
});
|
|
205
|
+
if (result instanceof Promise) {
|
|
206
|
+
return result.then((r) => (0, utils_1.parseStringifyIfNecessary)(r));
|
|
207
|
+
}
|
|
208
|
+
return (0, utils_1.parseStringifyIfNecessary)(result);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=resolve-value.js.map
|