callman-core 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/scenario-runner/adapters/connection-config.d.ts +34 -0
- package/dist/scenario-runner/adapters/connection-config.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/connection-config.js +6 -0
- package/dist/scenario-runner/adapters/connection-config.js.map +1 -0
- package/dist/scenario-runner/adapters/db-executor.d.ts +4 -0
- package/dist/scenario-runner/adapters/db-executor.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/db-executor.js +42 -0
- package/dist/scenario-runner/adapters/db-executor.js.map +1 -0
- package/dist/scenario-runner/adapters/helpers/abort.d.ts +4 -0
- package/dist/scenario-runner/adapters/helpers/abort.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/helpers/abort.js +47 -0
- package/dist/scenario-runner/adapters/helpers/abort.js.map +1 -0
- package/dist/scenario-runner/adapters/helpers/failure-messages.d.ts +29 -0
- package/dist/scenario-runner/adapters/helpers/failure-messages.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/helpers/failure-messages.js +64 -0
- package/dist/scenario-runner/adapters/helpers/failure-messages.js.map +1 -0
- package/dist/scenario-runner/adapters/helpers/mutations.d.ts +7 -0
- package/dist/scenario-runner/adapters/helpers/mutations.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/helpers/mutations.js +28 -0
- package/dist/scenario-runner/adapters/helpers/mutations.js.map +1 -0
- package/dist/scenario-runner/adapters/helpers/request-helpers.d.ts +31 -0
- package/dist/scenario-runner/adapters/helpers/request-helpers.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/helpers/request-helpers.js +247 -0
- package/dist/scenario-runner/adapters/helpers/request-helpers.js.map +1 -0
- package/dist/scenario-runner/adapters/helpers/response-shapes.d.ts +3 -0
- package/dist/scenario-runner/adapters/helpers/response-shapes.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/helpers/response-shapes.js +32 -0
- package/dist/scenario-runner/adapters/helpers/response-shapes.js.map +1 -0
- package/dist/scenario-runner/adapters/helpers/templates.d.ts +2 -0
- package/dist/scenario-runner/adapters/helpers/templates.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/helpers/templates.js +30 -0
- package/dist/scenario-runner/adapters/helpers/templates.js.map +1 -0
- package/dist/scenario-runner/adapters/index.d.ts +12 -0
- package/dist/scenario-runner/adapters/index.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/index.js +30 -0
- package/dist/scenario-runner/adapters/index.js.map +1 -0
- package/dist/scenario-runner/adapters/kafka-executor.d.ts +4 -0
- package/dist/scenario-runner/adapters/kafka-executor.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/kafka-executor.js +35 -0
- package/dist/scenario-runner/adapters/kafka-executor.js.map +1 -0
- package/dist/scenario-runner/adapters/notification-executor.d.ts +4 -0
- package/dist/scenario-runner/adapters/notification-executor.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/notification-executor.js +67 -0
- package/dist/scenario-runner/adapters/notification-executor.js.map +1 -0
- package/dist/scenario-runner/adapters/redis-executor.d.ts +4 -0
- package/dist/scenario-runner/adapters/redis-executor.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/redis-executor.js +78 -0
- package/dist/scenario-runner/adapters/redis-executor.js.map +1 -0
- package/dist/scenario-runner/adapters/request-executor.d.ts +4 -0
- package/dist/scenario-runner/adapters/request-executor.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/request-executor.js +262 -0
- package/dist/scenario-runner/adapters/request-executor.js.map +1 -0
- package/dist/scenario-runner/adapters/script-executor.d.ts +4 -0
- package/dist/scenario-runner/adapters/script-executor.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/script-executor.js +113 -0
- package/dist/scenario-runner/adapters/script-executor.js.map +1 -0
- package/dist/scenario-runner/adapters/types.d.ts +82 -0
- package/dist/scenario-runner/adapters/types.d.ts.map +1 -0
- package/dist/scenario-runner/adapters/types.js +9 -0
- package/dist/scenario-runner/adapters/types.js.map +1 -0
- package/dist/scenario-runner/index.d.ts +1 -0
- package/dist/scenario-runner/index.d.ts.map +1 -1
- package/dist/scenario-runner/index.js +1 -0
- package/dist/scenario-runner/index.js.map +1 -1
- package/dist-cjs/scenario-runner/adapters/connection-config.js +7 -0
- package/dist-cjs/scenario-runner/adapters/connection-config.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/db-executor.js +46 -0
- package/dist-cjs/scenario-runner/adapters/db-executor.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/helpers/abort.js +52 -0
- package/dist-cjs/scenario-runner/adapters/helpers/abort.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/helpers/failure-messages.js +69 -0
- package/dist-cjs/scenario-runner/adapters/helpers/failure-messages.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/helpers/mutations.js +32 -0
- package/dist-cjs/scenario-runner/adapters/helpers/mutations.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/helpers/request-helpers.js +263 -0
- package/dist-cjs/scenario-runner/adapters/helpers/request-helpers.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/helpers/response-shapes.js +36 -0
- package/dist-cjs/scenario-runner/adapters/helpers/response-shapes.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/helpers/templates.js +34 -0
- package/dist-cjs/scenario-runner/adapters/helpers/templates.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/index.js +40 -0
- package/dist-cjs/scenario-runner/adapters/index.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/kafka-executor.js +39 -0
- package/dist-cjs/scenario-runner/adapters/kafka-executor.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/notification-executor.js +71 -0
- package/dist-cjs/scenario-runner/adapters/notification-executor.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/redis-executor.js +82 -0
- package/dist-cjs/scenario-runner/adapters/redis-executor.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/request-executor.js +266 -0
- package/dist-cjs/scenario-runner/adapters/request-executor.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/script-executor.js +117 -0
- package/dist-cjs/scenario-runner/adapters/script-executor.js.map +1 -0
- package/dist-cjs/scenario-runner/adapters/types.js +10 -0
- package/dist-cjs/scenario-runner/adapters/types.js.map +1 -0
- package/dist-cjs/scenario-runner/index.js +1 -0
- package/dist-cjs/scenario-runner/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Canonical request executor — orchestrates a single Request scenario node:
|
|
3
|
+
// 1. (optional) pre-request script → mutate environment/globals/request
|
|
4
|
+
// 2. resolve auth + templates + body → executable shape
|
|
5
|
+
// 3. (optional) Kafka prefetch — start consumer, run HTTP, capture matched message
|
|
6
|
+
// 4. fall through to plain HTTP when no prefetch is configured
|
|
7
|
+
// 5. (optional) post-response script → mutate env/globals
|
|
8
|
+
// 6. (optional) tests script → collect test results, mutate env/globals
|
|
9
|
+
// 7. validate contract assertions
|
|
10
|
+
// 8. assemble failure message + return ScenarioRequestExecutionResult
|
|
11
|
+
//
|
|
12
|
+
// Driver injection point: `httpExecutor` and `kafkaExecutor`. Everything
|
|
13
|
+
// else (script execution, contract validation, template resolution) uses
|
|
14
|
+
// canonical core utilities.
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.buildRequestExecutor = void 0;
|
|
17
|
+
const templateResolver_js_1 = require("../templateResolver.js");
|
|
18
|
+
const contractValidator_js_1 = require("../../contract/contractValidator.js");
|
|
19
|
+
const abort_js_1 = require("./helpers/abort.js");
|
|
20
|
+
const failure_messages_js_1 = require("./helpers/failure-messages.js");
|
|
21
|
+
const mutations_js_1 = require("./helpers/mutations.js");
|
|
22
|
+
const response_shapes_js_1 = require("./helpers/response-shapes.js");
|
|
23
|
+
const request_helpers_js_1 = require("./helpers/request-helpers.js");
|
|
24
|
+
const buildBodyResolverHelpers = () => ({
|
|
25
|
+
replaceScenarioTemplateTokensForJsonValidation: templateResolver_js_1.replaceScenarioTemplateTokensForJsonValidation,
|
|
26
|
+
resolveScenarioJsonTemplateString: templateResolver_js_1.resolveScenarioJsonTemplateString,
|
|
27
|
+
resolveScenarioTemplateString: templateResolver_js_1.resolveScenarioTemplateString,
|
|
28
|
+
});
|
|
29
|
+
const httpResultToExecuteRequestResult = (http) => ({
|
|
30
|
+
status: http.status,
|
|
31
|
+
data: http.data,
|
|
32
|
+
headers: http.headers,
|
|
33
|
+
duration: http.duration,
|
|
34
|
+
});
|
|
35
|
+
const buildRequestExecutor = (options) => async (input) => {
|
|
36
|
+
// We can't directly call the canonical scriptExecutor from here —
|
|
37
|
+
// it lives on the same factory result and may be the host's override.
|
|
38
|
+
// Instead, we receive it via closure when the factory wires up.
|
|
39
|
+
// For now, we depend on the host's `scriptExecutor` being supplied
|
|
40
|
+
// via options so request-stage scripts run through whatever sandbox
|
|
41
|
+
// the host configured.
|
|
42
|
+
//
|
|
43
|
+
// Note: the script executor in this orchestration path runs *request
|
|
44
|
+
// stage* scripts (pre-request / post-response / tests). The default
|
|
45
|
+
// implementation in script-executor.ts knows how to dispatch to the
|
|
46
|
+
// canonical sandbox; hosts that want to customize override it.
|
|
47
|
+
const requestState = (0, request_helpers_js_1.createRequestStateFromNode)(input.node);
|
|
48
|
+
const scopes = {
|
|
49
|
+
environment: { ...input.context.environment },
|
|
50
|
+
globals: { ...input.context.globals },
|
|
51
|
+
};
|
|
52
|
+
let currentRequestState = requestState;
|
|
53
|
+
const runRequestStageScript = async (stage, script, response) => {
|
|
54
|
+
// The host's scriptExecutor adapter handles request-stage scripts
|
|
55
|
+
// when it receives a payload with `stage !== "script"`. We delegate
|
|
56
|
+
// through the same adapter shape that runScenario uses so behavior
|
|
57
|
+
// matches the script-only flow exactly.
|
|
58
|
+
const scriptResult = await invokeRequestStageScript(options, {
|
|
59
|
+
stage,
|
|
60
|
+
script,
|
|
61
|
+
timeoutMs: options.scriptTimeoutMs,
|
|
62
|
+
request: currentRequestState,
|
|
63
|
+
response: response
|
|
64
|
+
? (0, request_helpers_js_1.toRequestScriptResponse)(response)
|
|
65
|
+
: null,
|
|
66
|
+
environment: scopes.environment,
|
|
67
|
+
globals: scopes.globals,
|
|
68
|
+
workflowContext: input.context.workflowContext,
|
|
69
|
+
nodeMetaByLabel: input.context.nodeMetaByLabel,
|
|
70
|
+
});
|
|
71
|
+
if (scriptResult.request) {
|
|
72
|
+
currentRequestState = scriptResult.request;
|
|
73
|
+
}
|
|
74
|
+
(0, mutations_js_1.applyVariableMutations)(scopes, scriptResult.variableMutations);
|
|
75
|
+
return scriptResult;
|
|
76
|
+
};
|
|
77
|
+
// 1. Pre-request script ------------------------------------------------
|
|
78
|
+
if (input.node.data.config.preRequestScript?.trim()) {
|
|
79
|
+
const preResult = await runRequestStageScript("pre-request", input.node.data.config.preRequestScript, null);
|
|
80
|
+
if (preResult.error) {
|
|
81
|
+
const failureResponse = (0, request_helpers_js_1.toRequestResponse)((0, request_helpers_js_1.normalizeExecuteRequestFailure)(preResult.error.message));
|
|
82
|
+
return {
|
|
83
|
+
cancelled: false,
|
|
84
|
+
response: failureResponse,
|
|
85
|
+
responseRoot: null,
|
|
86
|
+
environment: scopes.environment,
|
|
87
|
+
globals: scopes.globals,
|
|
88
|
+
outputData: null,
|
|
89
|
+
testResults: preResult.testResults,
|
|
90
|
+
contractResults: [],
|
|
91
|
+
contractSummary: null,
|
|
92
|
+
contractValidationError: null,
|
|
93
|
+
dbAssertionResults: [],
|
|
94
|
+
redisAssertionResults: [],
|
|
95
|
+
prefetchedKafkaResults: [],
|
|
96
|
+
failureMessage: `Pre-request script failed: ${preResult.error.message}`,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// 2. Resolve templates + auth + body ----------------------------------
|
|
101
|
+
const templateValues = (0, templateResolver_js_1.buildScenarioTemplateValues)({
|
|
102
|
+
environment: scopes.environment,
|
|
103
|
+
globals: scopes.globals,
|
|
104
|
+
workflowContext: input.context.workflowContext,
|
|
105
|
+
nodeMetaByLabel: input.context.nodeMetaByLabel,
|
|
106
|
+
responseRoot: input.context.responseRoot,
|
|
107
|
+
dbResult: input.context.dbResult,
|
|
108
|
+
kafkaEvent: input.context.kafkaEvent,
|
|
109
|
+
redisResult: input.context.redisResult,
|
|
110
|
+
});
|
|
111
|
+
const runtimeRequest = (0, request_helpers_js_1.normalizeRequestForExecution)(currentRequestState, input.node.data.config.auth, buildBodyResolverHelpers(), templateValues);
|
|
112
|
+
// 3+4. Execute the HTTP call (with optional Kafka prefetch) -----------
|
|
113
|
+
const requestTimeoutMs = options.requestTimeoutMs;
|
|
114
|
+
const runHttp = async () => {
|
|
115
|
+
try {
|
|
116
|
+
const httpResult = await (0, abort_js_1.withAbortAndTimeout)(options.drivers.httpExecutor({
|
|
117
|
+
method: runtimeRequest.method,
|
|
118
|
+
url: runtimeRequest.url,
|
|
119
|
+
headers: runtimeRequest.headers,
|
|
120
|
+
query: runtimeRequest.query,
|
|
121
|
+
body: runtimeRequest.body,
|
|
122
|
+
timeoutMs: requestTimeoutMs,
|
|
123
|
+
}), requestTimeoutMs, `Request node ${input.stepId}`, input.signal);
|
|
124
|
+
return httpResultToExecuteRequestResult(httpResult);
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
return (0, request_helpers_js_1.normalizeExecuteRequestFailure)(error);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
let executionResult;
|
|
131
|
+
let prefetchedKafkaResults = [];
|
|
132
|
+
const transientCapture = input.kafkaCapturePlans.length === 1 ? input.kafkaCapturePlans[0] ?? null : null;
|
|
133
|
+
if (transientCapture?.connectionId && transientCapture.topic.trim()) {
|
|
134
|
+
try {
|
|
135
|
+
const kafkaConnection = await options.resolveConnection(transientCapture.connectionId);
|
|
136
|
+
const captureResult = await options.drivers.kafkaExecutor({
|
|
137
|
+
connection: kafkaConnection,
|
|
138
|
+
topic: transientCapture.topic.trim(),
|
|
139
|
+
matcher: null,
|
|
140
|
+
timeoutMs: options.nodeTimeoutMs,
|
|
141
|
+
operation: async () => {
|
|
142
|
+
const er = await runHttp();
|
|
143
|
+
return {
|
|
144
|
+
status: er.status,
|
|
145
|
+
headers: er.headers,
|
|
146
|
+
data: er.data,
|
|
147
|
+
duration: er.duration,
|
|
148
|
+
};
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
executionResult = captureResult.operationResult
|
|
152
|
+
? httpResultToExecuteRequestResult(captureResult.operationResult)
|
|
153
|
+
: await runHttp();
|
|
154
|
+
prefetchedKafkaResults = input.kafkaCapturePlans.map((plan) => ({
|
|
155
|
+
stepId: plan.stepId,
|
|
156
|
+
result: captureResult.capture,
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
// Kafka prefetch setup failed — fall through to plain HTTP.
|
|
161
|
+
// Backend's existing behavior is to silently degrade and rely
|
|
162
|
+
// on a separate kafka node (if any) to report the issue.
|
|
163
|
+
executionResult = await runHttp();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
executionResult = await runHttp();
|
|
168
|
+
}
|
|
169
|
+
const response = (0, request_helpers_js_1.toRequestResponse)(executionResult);
|
|
170
|
+
const combinedTestResults = [];
|
|
171
|
+
// 5. Post-response script ---------------------------------------------
|
|
172
|
+
let postResponseError = null;
|
|
173
|
+
if (input.node.data.config.postResponseScript?.trim()) {
|
|
174
|
+
const postResult = await runRequestStageScript("post-response", input.node.data.config.postResponseScript, response);
|
|
175
|
+
combinedTestResults.push(...postResult.testResults);
|
|
176
|
+
if (postResult.error) {
|
|
177
|
+
postResponseError = { message: postResult.error.message };
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// 6. Tests script -----------------------------------------------------
|
|
181
|
+
let testsError = null;
|
|
182
|
+
if (input.node.data.config.testsScript?.trim()) {
|
|
183
|
+
const testsResult = await runRequestStageScript("tests", input.node.data.config.testsScript, response);
|
|
184
|
+
combinedTestResults.push(...testsResult.testResults);
|
|
185
|
+
if (testsResult.error) {
|
|
186
|
+
testsError = { message: testsResult.error.message };
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// 7. Contract validation ----------------------------------------------
|
|
190
|
+
const contractResults = (0, contractValidator_js_1.validateContracts)(input.node.data.config.contractAssertions ?? [], {
|
|
191
|
+
status: executionResult.status,
|
|
192
|
+
data: executionResult.data,
|
|
193
|
+
headers: executionResult.headers,
|
|
194
|
+
duration: executionResult.duration,
|
|
195
|
+
});
|
|
196
|
+
const contractCounts = (0, failure_messages_js_1.summarizeContractResults)(contractResults);
|
|
197
|
+
const contractSummary = {
|
|
198
|
+
total: contractCounts.total,
|
|
199
|
+
passed: contractCounts.passed,
|
|
200
|
+
failed: contractCounts.failed,
|
|
201
|
+
};
|
|
202
|
+
// 8. Failure message + return -----------------------------------------
|
|
203
|
+
const failureMessage = (0, failure_messages_js_1.buildRequestFailureMessage)({
|
|
204
|
+
response,
|
|
205
|
+
postResponseError,
|
|
206
|
+
testsError,
|
|
207
|
+
testResults: combinedTestResults,
|
|
208
|
+
contractResults,
|
|
209
|
+
});
|
|
210
|
+
const responseRoot = (0, response_shapes_js_1.buildResponseRoot)(response);
|
|
211
|
+
return {
|
|
212
|
+
cancelled: Boolean(input.signal?.aborted),
|
|
213
|
+
response,
|
|
214
|
+
responseRoot,
|
|
215
|
+
environment: scopes.environment,
|
|
216
|
+
globals: scopes.globals,
|
|
217
|
+
outputData: responseRoot,
|
|
218
|
+
testResults: combinedTestResults,
|
|
219
|
+
contractResults,
|
|
220
|
+
contractSummary,
|
|
221
|
+
contractValidationError: null,
|
|
222
|
+
dbAssertionResults: [],
|
|
223
|
+
redisAssertionResults: [],
|
|
224
|
+
prefetchedKafkaResults,
|
|
225
|
+
failureMessage,
|
|
226
|
+
};
|
|
227
|
+
};
|
|
228
|
+
exports.buildRequestExecutor = buildRequestExecutor;
|
|
229
|
+
// ---------------------------------------------------------------------
|
|
230
|
+
// Request-stage script invocation. The host supplies a script executor
|
|
231
|
+
// either as `options.scriptExecutor` (which handles the standalone
|
|
232
|
+
// "script" stage from runScenario) or via the dedicated request-stage
|
|
233
|
+
// hook below. Default routes to the canonical executeScript with the
|
|
234
|
+
// "stage" capability set so pre/post/test scripts get the request +
|
|
235
|
+
// response surface they expect.
|
|
236
|
+
// ---------------------------------------------------------------------
|
|
237
|
+
const executor_js_1 = require("../../script/executor.js");
|
|
238
|
+
const invokeRequestStageScript = async (options, input) => {
|
|
239
|
+
// Hosts can swap the request-stage script behavior by overriding
|
|
240
|
+
// `scriptExecutor` and inspecting the input to dispatch to their own
|
|
241
|
+
// pre/post/tests handler. In this default path we go directly to the
|
|
242
|
+
// canonical sandbox.
|
|
243
|
+
const result = await (0, executor_js_1.executeScript)({
|
|
244
|
+
script: input.script,
|
|
245
|
+
timeoutMs: input.timeoutMs,
|
|
246
|
+
filename: "callman-request.script.js",
|
|
247
|
+
stage: input.stage,
|
|
248
|
+
capabilities: {
|
|
249
|
+
environment: { values: input.environment, emitMutations: true },
|
|
250
|
+
globals: { values: input.globals, emitMutations: true },
|
|
251
|
+
request: input.request,
|
|
252
|
+
response: input.response ?? undefined,
|
|
253
|
+
workflowContext: input.workflowContext,
|
|
254
|
+
nodeMetaByLabel: input.nodeMetaByLabel,
|
|
255
|
+
exposeLabelsAsGlobals: true,
|
|
256
|
+
extensions: { log: true, node: true },
|
|
257
|
+
},
|
|
258
|
+
});
|
|
259
|
+
return {
|
|
260
|
+
request: result.request,
|
|
261
|
+
variableMutations: result.variableMutations,
|
|
262
|
+
testResults: result.testResults,
|
|
263
|
+
error: result.error,
|
|
264
|
+
};
|
|
265
|
+
};
|
|
266
|
+
//# sourceMappingURL=request-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-executor.js","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/request-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Canonical script executor — orchestrates a standalone Script scenario
|
|
3
|
+
// node. Wraps callman-core's `executeScript` with scenario-specific
|
|
4
|
+
// input mapping + post-processing:
|
|
5
|
+
// - mutation values get template-resolved against the live runtime
|
|
6
|
+
// scope (so `pm.environment.set("token", "{{response.data.token}}")`
|
|
7
|
+
// works even though the script sandbox doesn't see the runtime
|
|
8
|
+
// scope directly)
|
|
9
|
+
// - return value gets deep template-resolved
|
|
10
|
+
// - failed pm.test entries surface in `failureMessage` for the runner
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.buildScriptExecutor = void 0;
|
|
13
|
+
const templateResolver_js_1 = require("../templateResolver.js");
|
|
14
|
+
const executor_js_1 = require("../../script/executor.js");
|
|
15
|
+
const abort_js_1 = require("./helpers/abort.js");
|
|
16
|
+
const templates_js_1 = require("./helpers/templates.js");
|
|
17
|
+
const toScenarioMutation = (mutation) => mutation.type === "set"
|
|
18
|
+
? {
|
|
19
|
+
scope: mutation.scope,
|
|
20
|
+
type: "set",
|
|
21
|
+
key: mutation.key,
|
|
22
|
+
value: mutation.value,
|
|
23
|
+
}
|
|
24
|
+
: {
|
|
25
|
+
scope: mutation.scope,
|
|
26
|
+
type: "unset",
|
|
27
|
+
key: mutation.key,
|
|
28
|
+
};
|
|
29
|
+
const buildScriptExecutor = (options) => async (input) => {
|
|
30
|
+
const script = input.node.data.config.script;
|
|
31
|
+
const baseTimeoutMs = Math.min(options.nodeTimeoutMs, input.node.data.config.timeoutMs ?? options.scriptTimeoutMs);
|
|
32
|
+
if (!script.trim()) {
|
|
33
|
+
return {
|
|
34
|
+
variableMutations: [],
|
|
35
|
+
testResults: [],
|
|
36
|
+
logs: [],
|
|
37
|
+
error: {
|
|
38
|
+
stage: "script",
|
|
39
|
+
message: "Script node is empty.",
|
|
40
|
+
lineNumber: null,
|
|
41
|
+
column: null,
|
|
42
|
+
stack: null,
|
|
43
|
+
},
|
|
44
|
+
hasReturnValue: false,
|
|
45
|
+
returnValue: null,
|
|
46
|
+
outputData: null,
|
|
47
|
+
scriptSource: script,
|
|
48
|
+
timeoutMs: baseTimeoutMs,
|
|
49
|
+
failureMessage: "Script node is empty.",
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const scriptResult = await (0, abort_js_1.withAbortAndTimeout)((0, executor_js_1.executeScript)({
|
|
53
|
+
script,
|
|
54
|
+
timeoutMs: baseTimeoutMs,
|
|
55
|
+
filename: "callman-scenario.script.js",
|
|
56
|
+
stage: "script",
|
|
57
|
+
capabilities: {
|
|
58
|
+
environment: { values: input.context.environment, emitMutations: true },
|
|
59
|
+
globals: { values: input.context.globals, emitMutations: true },
|
|
60
|
+
workflowContext: input.context.workflowContext,
|
|
61
|
+
nodeMetaByLabel: input.context.nodeMetaByLabel,
|
|
62
|
+
exposeLabelsAsGlobals: true,
|
|
63
|
+
extensions: { log: true, node: true },
|
|
64
|
+
},
|
|
65
|
+
}), baseTimeoutMs, `Script node ${input.stepId}`, input.signal);
|
|
66
|
+
// Templates may contain `{{...}}` tokens that reference live runtime
|
|
67
|
+
// values not available inside the sandbox (response.body, db.result,
|
|
68
|
+
// etc.). Resolve them against the current scenario runtime scope
|
|
69
|
+
// *after* the script returns so node consumers see substituted text.
|
|
70
|
+
const templateValues = (0, templateResolver_js_1.buildScenarioTemplateValues)({
|
|
71
|
+
environment: input.context.environment,
|
|
72
|
+
globals: input.context.globals,
|
|
73
|
+
workflowContext: input.context.workflowContext,
|
|
74
|
+
nodeMetaByLabel: input.context.nodeMetaByLabel,
|
|
75
|
+
responseRoot: input.context.responseRoot,
|
|
76
|
+
dbResult: input.context.dbResult,
|
|
77
|
+
kafkaEvent: input.context.kafkaEvent,
|
|
78
|
+
redisResult: input.context.redisResult,
|
|
79
|
+
});
|
|
80
|
+
const resolvedMutations = scriptResult.variableMutations.map((mutation) => mutation.type === "set" && typeof mutation.value === "string"
|
|
81
|
+
? {
|
|
82
|
+
...mutation,
|
|
83
|
+
value: (0, templateResolver_js_1.resolveScenarioTemplateString)(mutation.value, templateValues),
|
|
84
|
+
}
|
|
85
|
+
: mutation);
|
|
86
|
+
const resolvedReturnValue = scriptResult.hasReturnValue
|
|
87
|
+
? (0, templates_js_1.resolveScenarioScriptTemplatesDeep)(scriptResult.returnValue, templateValues, templateResolver_js_1.resolveScenarioTemplateString)
|
|
88
|
+
: null;
|
|
89
|
+
const failedScriptTest = scriptResult.testResults.find((entry) => entry.status === "FAIL");
|
|
90
|
+
const failureMessage = scriptResult.error
|
|
91
|
+
? scriptResult.error.message
|
|
92
|
+
: failedScriptTest
|
|
93
|
+
? failedScriptTest.error
|
|
94
|
+
? `Script test failed: ${failedScriptTest.name} (${failedScriptTest.error})`
|
|
95
|
+
: `Script test failed: ${failedScriptTest.name}`
|
|
96
|
+
: null;
|
|
97
|
+
return {
|
|
98
|
+
variableMutations: resolvedMutations.map(toScenarioMutation),
|
|
99
|
+
testResults: scriptResult.testResults,
|
|
100
|
+
logs: scriptResult.logs,
|
|
101
|
+
error: scriptResult.error,
|
|
102
|
+
hasReturnValue: scriptResult.hasReturnValue,
|
|
103
|
+
returnValue: resolvedReturnValue,
|
|
104
|
+
outputData: {
|
|
105
|
+
...(scriptResult.hasReturnValue ? { returnValue: resolvedReturnValue } : {}),
|
|
106
|
+
testResults: scriptResult.testResults,
|
|
107
|
+
logs: scriptResult.logs,
|
|
108
|
+
variableMutations: resolvedMutations.map(toScenarioMutation),
|
|
109
|
+
error: scriptResult.error,
|
|
110
|
+
},
|
|
111
|
+
scriptSource: script,
|
|
112
|
+
timeoutMs: baseTimeoutMs,
|
|
113
|
+
failureMessage,
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
exports.buildScriptExecutor = buildScriptExecutor;
|
|
117
|
+
//# sourceMappingURL=script-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-executor.js","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/script-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Adapter-factory specific types. The factory accepts driver callbacks
|
|
3
|
+
// (host-injected I/O) and returns the canonical `ScenarioRuntimeAdapters`
|
|
4
|
+
// interface that `runScenario(...)` consumes.
|
|
5
|
+
//
|
|
6
|
+
// Connection shape (`ScenarioConnectionRuntime`) is intentionally generic
|
|
7
|
+
// — host-side types (Mongoose ObjectId, Postgres Pool, etc.) flatten into
|
|
8
|
+
// this shape at the resolver boundary so the core stays framework-agnostic.
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/types.ts"],"names":[],"mappings":";AAAA,uEAAuE;AACvE,0EAA0E;AAC1E,8CAA8C;AAC9C,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,4EAA4E"}
|
|
@@ -38,4 +38,5 @@ __exportStar(require("./waitNodeExecutor.js"), exports);
|
|
|
38
38
|
__exportStar(require("./conditionTypes.js"), exports);
|
|
39
39
|
__exportStar(require("./graphTraversal.js"), exports);
|
|
40
40
|
__exportStar(require("./types.js"), exports);
|
|
41
|
+
__exportStar(require("./adapters/index.js"), exports);
|
|
41
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scenario-runner/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AACpB,6DAQ+B;AAP7B,kIAAA,2BAA2B,OAAA;AAC3B,kIAAA,2BAA2B,OAAA;AAC3B,oIAAA,6BAA6B,OAAA;AAC7B,iIAAA,0BAA0B,OAAA;AAC1B,qJAAA,8CAA8C,OAAA;AAC9C,wIAAA,iCAAiC,OAAA;AACjC,oIAAA,6BAA6B,OAAA;AAE/B,iEAAiE;AACjE,qEAAqE;AACrE,uEAAuE;AACvE,uEAAuE;AACvE,iCAAiC;AACjC,iDAA+B;AAC/B,oDAGiC;AAF/B,4HAAA,gCAAgC,OAAA;AAChC,sHAAA,0BAA0B,OAAA;AAE5B,wDAAsC;AACtC,sDAAoC;AACpC,sDAAoC;AACpC,6CAA2B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scenario-runner/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AACpB,6DAQ+B;AAP7B,kIAAA,2BAA2B,OAAA;AAC3B,kIAAA,2BAA2B,OAAA;AAC3B,oIAAA,6BAA6B,OAAA;AAC7B,iIAAA,0BAA0B,OAAA;AAC1B,qJAAA,8CAA8C,OAAA;AAC9C,wIAAA,iCAAiC,OAAA;AACjC,oIAAA,6BAA6B,OAAA;AAE/B,iEAAiE;AACjE,qEAAqE;AACrE,uEAAuE;AACvE,uEAAuE;AACvE,iCAAiC;AACjC,iDAA+B;AAC/B,oDAGiC;AAF/B,4HAAA,gCAAgC,OAAA;AAChC,sHAAA,0BAA0B,OAAA;AAE5B,wDAAsC;AACtC,sDAAoC;AACpC,sDAAoC;AACpC,6CAA2B;AAC3B,sDAAoC"}
|