callman-core 1.8.3 → 1.8.5
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/db-executor.d.ts.map +1 -1
- package/dist/scenario-runner/adapters/db-executor.js +1 -0
- package/dist/scenario-runner/adapters/db-executor.js.map +1 -1
- package/dist/scenario-runner/adapters/kafka-executor.d.ts.map +1 -1
- package/dist/scenario-runner/adapters/kafka-executor.js +42 -5
- package/dist/scenario-runner/adapters/kafka-executor.js.map +1 -1
- package/dist/scenario-runner/adapters/request-executor.d.ts.map +1 -1
- package/dist/scenario-runner/adapters/request-executor.js +1 -0
- package/dist/scenario-runner/adapters/request-executor.js.map +1 -1
- package/dist/scenario-runner/adapters/types.d.ts +12 -1
- package/dist/scenario-runner/adapters/types.d.ts.map +1 -1
- package/dist/scenario-runner/runScenario.d.ts.map +1 -1
- package/dist/scenario-runner/runScenario.js +122 -66
- package/dist/scenario-runner/runScenario.js.map +1 -1
- package/dist/scenario-runner/types.d.ts +28 -2
- package/dist/scenario-runner/types.d.ts.map +1 -1
- package/dist-cjs/scenario-runner/adapters/db-executor.js +1 -0
- package/dist-cjs/scenario-runner/adapters/db-executor.js.map +1 -1
- package/dist-cjs/scenario-runner/adapters/kafka-executor.js +42 -5
- package/dist-cjs/scenario-runner/adapters/kafka-executor.js.map +1 -1
- package/dist-cjs/scenario-runner/adapters/request-executor.js +1 -0
- package/dist-cjs/scenario-runner/adapters/request-executor.js.map +1 -1
- package/dist-cjs/scenario-runner/runScenario.js +122 -66
- package/dist-cjs/scenario-runner/runScenario.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-executor.d.ts","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/db-executor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAEvE,eAAO,MAAM,eAAe,GAC1B,SAAS,oCAAoC,MAEtC,OAAO,wBAAwB,KAAG,OAAO,CAAC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"db-executor.d.ts","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/db-executor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAEvE,eAAO,MAAM,eAAe,GAC1B,SAAS,oCAAoC,MAEtC,OAAO,wBAAwB,KAAG,OAAO,CAAC,yBAAyB,CAyCzE,CAAC"}
|
|
@@ -9,6 +9,7 @@ export const buildDbExecutor = (options) => async (input) => {
|
|
|
9
9
|
const result = await withAbortAndTimeout(options.drivers.databaseExecutor({
|
|
10
10
|
connection,
|
|
11
11
|
resolvedQuery: input.resolvedQuery,
|
|
12
|
+
resolvedParams: input.resolvedParams,
|
|
12
13
|
}), options.nodeTimeoutMs, `Database node ${input.stepId}`, input.signal);
|
|
13
14
|
return {
|
|
14
15
|
rawResult: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-executor.js","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/db-executor.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,uEAAuE;AACvE,wEAAwE;AACxE,oEAAoE;AAOpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAA6C,EAC7C,EAAE,CACF,KAAK,EAAE,KAA+B,EAAsC,EAAE;IAC5E,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAExF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC/B,UAAU;YACV,aAAa,EAAE,KAAK,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"db-executor.js","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/db-executor.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,uEAAuE;AACvE,wEAAwE;AACxE,oEAAoE;AAOpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAA6C,EAC7C,EAAE,CACF,KAAK,EAAE,KAA+B,EAAsC,EAAE;IAC5E,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAExF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACtC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC/B,UAAU;YACV,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,cAAc,EAAE,KAAK,CAAC,cAAc;SACrC,CAAC,EACF,OAAO,CAAC,aAAa,EACrB,iBAAiB,KAAK,CAAC,MAAM,EAAE,EAC/B,KAAK,CAAC,MAAM,CACb,CAAC;QACF,OAAO;YACL,SAAS,EAAE;gBACT,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B;YACD,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,UAAU,EAAE;gBACV,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B;YACD,cAAc,EAAE,IAAI;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,SAAS,EAAE;gBACT,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE,OAAO;aACf;YACD,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,cAAc,EAAE,OAAO,IAAI,wBAAwB;SACpD,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kafka-executor.d.ts","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/kafka-executor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kafka-executor.d.ts","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/kafka-executor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,2BAA2B,EAC3B,4BAA4B,EAE7B,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,YAAY,CAAC;AAmBvE,eAAO,MAAM,kBAAkB,GAC7B,SAAS,oCAAoC,MAEtC,OAAO,2BAA2B,KAAG,OAAO,CAAC,4BAA4B,CA4D/E,CAAC"}
|
|
@@ -1,16 +1,31 @@
|
|
|
1
1
|
// Canonical Kafka executor — orchestrates a standalone Kafka scenario node.
|
|
2
|
-
//
|
|
3
|
-
//
|
|
2
|
+
// Dispatches between consume (capture + matcher) and publish (produce) modes
|
|
3
|
+
// based on `node.data.config.mode`. Request-prefetch Kafka capture is handled
|
|
4
|
+
// inside request-executor.ts where it composes with the HTTP call.
|
|
4
5
|
//
|
|
5
|
-
// The actual Kafka consumer
|
|
6
|
-
//
|
|
7
|
-
//
|
|
6
|
+
// The actual Kafka consumer/producer logic lives in host-supplied driver
|
|
7
|
+
// callbacks (kafkajs in the backend). We resolve the connection, validate
|
|
8
|
+
// the topic, and delegate.
|
|
8
9
|
const KAFKA_DEFAULT_CAPTURE_TIMEOUT_MS = 5000;
|
|
9
10
|
const buildKafkaCaptureTimeoutMs = (nodeTimeoutMs) => Math.min(nodeTimeoutMs, KAFKA_DEFAULT_CAPTURE_TIMEOUT_MS);
|
|
11
|
+
const buildEmptyPublishResult = (topic, errorMessage) => ({
|
|
12
|
+
topic,
|
|
13
|
+
partition: -1,
|
|
14
|
+
offset: "",
|
|
15
|
+
timestamp: new Date().toISOString(),
|
|
16
|
+
durationMs: 0,
|
|
17
|
+
errorMessage,
|
|
18
|
+
});
|
|
10
19
|
export const buildKafkaExecutor = (options) => async (input) => {
|
|
11
20
|
const topic = input.resolvedTopic.trim();
|
|
12
21
|
const timeoutMs = buildKafkaCaptureTimeoutMs(options.nodeTimeoutMs);
|
|
22
|
+
const mode = input.node.data.config.mode ?? "consume";
|
|
13
23
|
if (!topic) {
|
|
24
|
+
if (mode === "publish") {
|
|
25
|
+
return {
|
|
26
|
+
publishResult: buildEmptyPublishResult("", "Kafka topic is required"),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
14
29
|
const captureResult = {
|
|
15
30
|
topic: "",
|
|
16
31
|
durationMs: 0,
|
|
@@ -24,11 +39,33 @@ export const buildKafkaExecutor = (options) => async (input) => {
|
|
|
24
39
|
return { captureResult };
|
|
25
40
|
}
|
|
26
41
|
const connection = await options.resolveConnection(input.node.data.config.connectionId);
|
|
42
|
+
if (mode === "publish") {
|
|
43
|
+
if (!options.drivers.kafkaPublishExecutor) {
|
|
44
|
+
return {
|
|
45
|
+
publishResult: buildEmptyPublishResult(topic, "Kafka publish driver is not configured in this host"),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (!input.publishRequest) {
|
|
49
|
+
return {
|
|
50
|
+
publishResult: buildEmptyPublishResult(topic, "Kafka publish payload is missing"),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const publishResult = await options.drivers.kafkaPublishExecutor({
|
|
54
|
+
connection,
|
|
55
|
+
topic,
|
|
56
|
+
key: input.publishRequest.key,
|
|
57
|
+
value: input.publishRequest.value,
|
|
58
|
+
headers: input.publishRequest.headers,
|
|
59
|
+
timeoutMs,
|
|
60
|
+
});
|
|
61
|
+
return { publishResult };
|
|
62
|
+
}
|
|
27
63
|
const outcome = await options.drivers.kafkaExecutor({
|
|
28
64
|
connection,
|
|
29
65
|
topic,
|
|
30
66
|
matcher: input.matcher,
|
|
31
67
|
timeoutMs,
|
|
68
|
+
captureFromTimestampMs: input.captureFromTimestampMs,
|
|
32
69
|
});
|
|
33
70
|
return { captureResult: outcome.capture };
|
|
34
71
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kafka-executor.js","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/kafka-executor.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"kafka-executor.js","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/kafka-executor.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,mEAAmE;AACnE,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,2BAA2B;AAW3B,MAAM,gCAAgC,GAAG,IAAI,CAAC;AAE9C,MAAM,0BAA0B,GAAG,CAAC,aAAqB,EAAU,EAAE,CACnE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,gCAAgC,CAAC,CAAC;AAE5D,MAAM,uBAAuB,GAAG,CAC9B,KAAa,EACb,YAAoB,EACQ,EAAE,CAAC,CAAC;IAChC,KAAK;IACL,SAAS,EAAE,CAAC,CAAC;IACb,MAAM,EAAE,EAAE;IACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACnC,UAAU,EAAE,CAAC;IACb,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAA6C,EAC7C,EAAE,CACF,KAAK,EAAE,KAAkC,EAAyC,EAAE;IAClF,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,0BAA0B,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC;IAEtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO;gBACL,aAAa,EAAE,uBAAuB,CAAC,EAAE,EAAE,yBAAyB,CAAC;aACtE,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAA+B;YAChD,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,CAAC;YACb,SAAS;YACT,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,yBAAyB;SACxC,CAAC;QACF,OAAO,EAAE,aAAa,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAExF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAC1C,OAAO;gBACL,aAAa,EAAE,uBAAuB,CACpC,KAAK,EACL,qDAAqD,CACtD;aACF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1B,OAAO;gBACL,aAAa,EAAE,uBAAuB,CAAC,KAAK,EAAE,kCAAkC,CAAC;aAClF,CAAC;QACJ,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC/D,UAAU;YACV,KAAK;YACL,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG;YAC7B,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK;YACjC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO;YACrC,SAAS;SACV,CAAC,CAAC;QACH,OAAO,EAAE,aAAa,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QAClD,UAAU;QACV,KAAK;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS;QACT,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;KACrD,CAAC,CAAC;IAEH,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5C,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-executor.d.ts","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/request-executor.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,6BAA6B,EAC7B,8BAA8B,EAE/B,MAAM,aAAa,CAAC;AAuBrB,OAAO,KAAK,EAEV,oCAAoC,EACrC,MAAM,YAAY,CAAC;AAiBpB,eAAO,MAAM,oBAAoB,GAC/B,SAAS,oCAAoC,MAEtC,OAAO,6BAA6B,KAAG,OAAO,CAAC,8BAA8B,
|
|
1
|
+
{"version":3,"file":"request-executor.d.ts","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/request-executor.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,6BAA6B,EAC7B,8BAA8B,EAE/B,MAAM,aAAa,CAAC;AAuBrB,OAAO,KAAK,EAEV,oCAAoC,EACrC,MAAM,YAAY,CAAC;AAiBpB,eAAO,MAAM,oBAAoB,GAC/B,SAAS,oCAAoC,MAEtC,OAAO,6BAA6B,KAAG,OAAO,CAAC,8BAA8B,CA+OnF,CAAC"}
|
|
@@ -135,6 +135,7 @@ export const buildRequestExecutor = (options) => async (input) => {
|
|
|
135
135
|
topic: transientCapture.topic.trim(),
|
|
136
136
|
matcher: null,
|
|
137
137
|
timeoutMs: options.nodeTimeoutMs,
|
|
138
|
+
captureFromTimestampMs: input.captureFromTimestampMs,
|
|
138
139
|
operation: async () => {
|
|
139
140
|
const er = await runHttp();
|
|
140
141
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-executor.js","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/request-executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"request-executor.js","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/request-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DatabaseConnectionConfig, KafkaConnectionConfig, NotificationConnectionConfig, RedisConnectionConfig } from "./connection-config.js";
|
|
2
|
-
import type { ScenarioKafkaCaptureResult, ScenarioKafkaCapturedMessage } from "../types.js";
|
|
2
|
+
import type { ScenarioKafkaCaptureResult, ScenarioKafkaCapturedMessage, ScenarioKafkaPublishResult } from "../types.js";
|
|
3
3
|
export type ScenarioConnectionType = "database" | "redis" | "kafka" | "notification";
|
|
4
4
|
export type ScenarioConnectionProvider = "oracle" | "mongodb" | "postgresql" | "mysql" | "redis" | "kafka" | "slack";
|
|
5
5
|
export interface ScenarioConnectionRuntime {
|
|
@@ -27,6 +27,7 @@ export interface HttpExecuteResult {
|
|
|
27
27
|
export interface DatabaseExecuteInput {
|
|
28
28
|
connection: ScenarioConnectionRuntime;
|
|
29
29
|
resolvedQuery: string;
|
|
30
|
+
resolvedParams?: unknown[];
|
|
30
31
|
}
|
|
31
32
|
export interface DatabaseExecuteResult {
|
|
32
33
|
rows: unknown[];
|
|
@@ -51,6 +52,7 @@ export interface KafkaCaptureInput {
|
|
|
51
52
|
templateValues: Record<string, string>;
|
|
52
53
|
} | null;
|
|
53
54
|
timeoutMs: number;
|
|
55
|
+
captureFromTimestampMs?: number;
|
|
54
56
|
operation?: () => Promise<HttpExecuteResult>;
|
|
55
57
|
}
|
|
56
58
|
export interface KafkaCaptureOutcome {
|
|
@@ -58,11 +60,20 @@ export interface KafkaCaptureOutcome {
|
|
|
58
60
|
matched: ScenarioKafkaCapturedMessage | null;
|
|
59
61
|
operationResult?: HttpExecuteResult;
|
|
60
62
|
}
|
|
63
|
+
export interface KafkaPublishInput {
|
|
64
|
+
connection: ScenarioConnectionRuntime;
|
|
65
|
+
topic: string;
|
|
66
|
+
key: string | null;
|
|
67
|
+
value: string;
|
|
68
|
+
headers: Record<string, string>;
|
|
69
|
+
timeoutMs: number;
|
|
70
|
+
}
|
|
61
71
|
export interface ScenarioRuntimeAdapterDrivers {
|
|
62
72
|
httpExecutor: (input: HttpExecuteInput) => Promise<HttpExecuteResult>;
|
|
63
73
|
databaseExecutor: (input: DatabaseExecuteInput) => Promise<DatabaseExecuteResult>;
|
|
64
74
|
redisExecutor: (input: RedisExecuteInput) => Promise<RedisExecuteResult>;
|
|
65
75
|
kafkaExecutor: (input: KafkaCaptureInput) => Promise<KafkaCaptureOutcome>;
|
|
76
|
+
kafkaPublishExecutor?: (input: KafkaPublishInput) => Promise<ScenarioKafkaPublishResult>;
|
|
66
77
|
}
|
|
67
78
|
export interface ScenarioRuntimeAdapterFactoryOptions {
|
|
68
79
|
workspaceId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/types.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/scenario-runner/adapters/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runScenario.d.ts","sourceRoot":"","sources":["../../src/scenario-runner/runScenario.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAGV,kBAAkB,EAUlB,iBAAiB,EAKlB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"runScenario.d.ts","sourceRoot":"","sources":["../../src/scenario-runner/runScenario.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAGV,kBAAkB,EAUlB,iBAAiB,EAKlB,MAAM,YAAY,CAAC;AAorBpB,eAAO,MAAM,WAAW,GAAU,mGAQ/B,kBAAkB,KAAG,OAAO,CAAC,iBAAiB,CA4zChD,CAAC"}
|
|
@@ -30,7 +30,6 @@ const buildTitle = (node) => {
|
|
|
30
30
|
}
|
|
31
31
|
return `${node.type[0]?.toUpperCase() ?? ""}${node.type.slice(1)}`;
|
|
32
32
|
};
|
|
33
|
-
const isKafkaNode = (node) => node?.type === "kafka";
|
|
34
33
|
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
35
34
|
const RESERVED_WORKFLOW_ROOT_LABELS = new Set(["workflow", "__meta"]);
|
|
36
35
|
const cloneNodeExecutionMeta = (meta) => ({
|
|
@@ -770,33 +769,27 @@ export const runScenario = async ({ scenario, environment = {}, globals = {}, ru
|
|
|
770
769
|
});
|
|
771
770
|
try {
|
|
772
771
|
if (node.type === "request") {
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
return {
|
|
788
|
-
stepId: scope.stepIdForNode(kafkaNode.id),
|
|
789
|
-
connectionId: kafkaNode.data.config.connectionId || null,
|
|
790
|
-
topic: resolveScenarioTemplateString(kafkaNode.data.config.topic, refreshedTemplateValues).trim(),
|
|
791
|
-
};
|
|
792
|
-
})
|
|
793
|
-
.filter((entry) => entry.connectionId && entry.topic);
|
|
772
|
+
// Inline Kafka prefetch (Request wraps the HTTP call inside the
|
|
773
|
+
// Kafka consumer's listening window) used to be necessary because
|
|
774
|
+
// the consume node's high-water-mark snapshot would otherwise jump
|
|
775
|
+
// past the message produced by the HTTP request. The trade-off was
|
|
776
|
+
// that the Request node stayed "running" until the full 5s capture
|
|
777
|
+
// window elapsed — even when the HTTP itself returned in ms.
|
|
778
|
+
//
|
|
779
|
+
// The runtime now anchors every Kafka consume snapshot at scenario
|
|
780
|
+
// start (`captureFromTimestampMs` → fetchTopicOffsetsByTimestamp),
|
|
781
|
+
// so the downstream consume node can rewind back to the produced
|
|
782
|
+
// message on its own. We therefore skip the prefetch path so the
|
|
783
|
+
// Request node completes as soon as HTTP returns, and the consume
|
|
784
|
+
// node owns its own wait window.
|
|
785
|
+
const kafkaCapturePlans = [];
|
|
794
786
|
const requestResult = await runtimeAdapters.requestExecutor({
|
|
795
787
|
runId,
|
|
796
788
|
stepId,
|
|
797
789
|
node,
|
|
798
790
|
context: createContextSnapshot(runtimeContext),
|
|
799
791
|
kafkaCapturePlans,
|
|
792
|
+
captureFromTimestampMs: startedAtMs,
|
|
800
793
|
signal,
|
|
801
794
|
});
|
|
802
795
|
if (requestResult.cancelled) {
|
|
@@ -824,11 +817,13 @@ export const runScenario = async ({ scenario, environment = {}, globals = {}, ru
|
|
|
824
817
|
}
|
|
825
818
|
if (node.type === "db") {
|
|
826
819
|
const resolvedQuery = resolveScenarioTemplateString(node.data.config.query, templateValues);
|
|
820
|
+
const resolvedParams = (node.data.config.params ?? []).map((param) => resolveScenarioTemplateString(param, templateValues));
|
|
827
821
|
const dbResult = await runtimeAdapters.dbExecutor({
|
|
828
822
|
runId,
|
|
829
823
|
stepId,
|
|
830
824
|
node,
|
|
831
825
|
resolvedQuery,
|
|
826
|
+
resolvedParams,
|
|
832
827
|
context: createContextSnapshot(runtimeContext),
|
|
833
828
|
signal,
|
|
834
829
|
});
|
|
@@ -938,58 +933,119 @@ export const runScenario = async ({ scenario, environment = {}, globals = {}, ru
|
|
|
938
933
|
};
|
|
939
934
|
}
|
|
940
935
|
if (node.type === "kafka") {
|
|
936
|
+
const kafkaMode = node.data.config.mode ?? "consume";
|
|
941
937
|
const resolvedTopic = resolveScenarioTemplateString(node.data.config.topic, templateValues);
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
938
|
+
if (kafkaMode === "publish") {
|
|
939
|
+
const valueFormat = node.data.config.publishValueFormat ?? "json";
|
|
940
|
+
const resolvedKeyRaw = node.data.config.messageKey
|
|
941
|
+
? resolveScenarioTemplateString(node.data.config.messageKey, templateValues)
|
|
942
|
+
: "";
|
|
943
|
+
const resolvedKey = resolvedKeyRaw.length > 0 ? resolvedKeyRaw : null;
|
|
944
|
+
const resolvedValue = resolveScenarioTemplateString(node.data.config.messageValue ?? "", templateValues);
|
|
945
|
+
if (valueFormat === "json" && resolvedValue.trim().length > 0) {
|
|
946
|
+
try {
|
|
947
|
+
JSON.parse(resolvedValue);
|
|
948
|
+
}
|
|
949
|
+
catch (jsonError) {
|
|
950
|
+
outputData = {
|
|
951
|
+
topic: resolvedTopic,
|
|
952
|
+
errorMessage: `Kafka publish payload is not valid JSON: ${jsonError instanceof Error ? jsonError.message : String(jsonError)}`,
|
|
953
|
+
};
|
|
954
|
+
throw new ScenarioNodeFailureError(`Kafka publish payload is not valid JSON for topic "${resolvedTopic}"`);
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
const resolvedHeaders = {};
|
|
958
|
+
for (const header of node.data.config.messageHeaders ?? []) {
|
|
959
|
+
if (header.enabled === false)
|
|
960
|
+
continue;
|
|
961
|
+
const headerKey = resolveScenarioTemplateString(header.key, templateValues).trim();
|
|
962
|
+
if (!headerKey)
|
|
963
|
+
continue;
|
|
964
|
+
resolvedHeaders[headerKey] = resolveScenarioTemplateString(header.value, templateValues);
|
|
965
|
+
}
|
|
966
|
+
const { publishResult } = await runtimeAdapters.kafkaExecutor({
|
|
946
967
|
runId,
|
|
947
968
|
stepId,
|
|
948
969
|
node,
|
|
949
970
|
resolvedTopic,
|
|
950
|
-
matcher:
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
: null,
|
|
971
|
+
matcher: null,
|
|
972
|
+
publishRequest: {
|
|
973
|
+
key: resolvedKey,
|
|
974
|
+
value: resolvedValue,
|
|
975
|
+
headers: resolvedHeaders,
|
|
976
|
+
},
|
|
957
977
|
signal,
|
|
958
|
-
})
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
}) ?? null;
|
|
968
|
-
}
|
|
969
|
-
if (node.data.config.matchMode === "rules" && rules.length > 0) {
|
|
970
|
-
matchedMessage =
|
|
971
|
-
captureResult.messages.find((message) => {
|
|
972
|
-
const kafkaEventValue = buildKafkaEventValue(message);
|
|
973
|
-
const scopedValues = buildScenarioTemplateValues({
|
|
974
|
-
environment: runtimeContext.environment,
|
|
975
|
-
globals: runtimeContext.globals,
|
|
976
|
-
workflowContext: runtimeContext.workflowContext,
|
|
977
|
-
nodeMetaByLabel: runtimeContext.nodeMetaByLabel,
|
|
978
|
-
responseRoot: runtimeContext.responseRoot,
|
|
979
|
-
dbResult: runtimeContext.dbResult,
|
|
980
|
-
kafkaEvent: kafkaEventValue,
|
|
981
|
-
redisResult: runtimeContext.redisResult,
|
|
982
|
-
});
|
|
983
|
-
return rules.every((rule) => evaluateScenarioExpression(rule, scopedValues).result);
|
|
984
|
-
}) ?? null;
|
|
978
|
+
});
|
|
979
|
+
throwIfStopped(signal);
|
|
980
|
+
if (!publishResult) {
|
|
981
|
+
throw new ScenarioNodeFailureError("Kafka publish executor returned no result");
|
|
982
|
+
}
|
|
983
|
+
outputData = publishResult;
|
|
984
|
+
if (publishResult.errorMessage) {
|
|
985
|
+
throw new ScenarioNodeFailureError(`Kafka publish failed for topic "${publishResult.topic}": ${publishResult.errorMessage}`);
|
|
986
|
+
}
|
|
985
987
|
}
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
988
|
+
else {
|
|
989
|
+
const rules = node.data.config.rules?.filter((rule) => rule.trim()) ?? [];
|
|
990
|
+
const resolvedMatchMode = node.data.config.matchMode ?? "regex";
|
|
991
|
+
const prefetchedCaptureResult = prefetchedKafkaResults.get(stepId);
|
|
992
|
+
const captureResult = prefetchedCaptureResult ??
|
|
993
|
+
(await runtimeAdapters.kafkaExecutor({
|
|
994
|
+
runId,
|
|
995
|
+
stepId,
|
|
996
|
+
node,
|
|
997
|
+
resolvedTopic,
|
|
998
|
+
matcher: rules.length > 0
|
|
999
|
+
? {
|
|
1000
|
+
mode: resolvedMatchMode,
|
|
1001
|
+
rules,
|
|
1002
|
+
templateValues,
|
|
1003
|
+
}
|
|
1004
|
+
: null,
|
|
1005
|
+
// Anchor the offset snapshot at scenario start so messages
|
|
1006
|
+
// produced earlier in this run (e.g. by an upstream publish)
|
|
1007
|
+
// are still visible — fixes the publish→consume race.
|
|
1008
|
+
captureFromTimestampMs: startedAtMs,
|
|
1009
|
+
signal,
|
|
1010
|
+
})).captureResult;
|
|
1011
|
+
throwIfStopped(signal);
|
|
1012
|
+
if (!captureResult) {
|
|
1013
|
+
throw new ScenarioNodeFailureError("Kafka executor returned no capture result");
|
|
1014
|
+
}
|
|
1015
|
+
let matchedMessage = captureResult.messages[0] ?? null;
|
|
1016
|
+
if (resolvedMatchMode === "regex" && rules[0]) {
|
|
1017
|
+
const regex = buildScenarioRegex(rules[0]);
|
|
1018
|
+
matchedMessage =
|
|
1019
|
+
captureResult.messages.find((message) => {
|
|
1020
|
+
regex.lastIndex = 0;
|
|
1021
|
+
return regex.test(safeStringifyKafkaMessage(message));
|
|
1022
|
+
}) ?? null;
|
|
1023
|
+
}
|
|
1024
|
+
if (resolvedMatchMode === "rules" && rules.length > 0) {
|
|
1025
|
+
matchedMessage =
|
|
1026
|
+
captureResult.messages.find((message) => {
|
|
1027
|
+
const kafkaEventValue = buildKafkaEventValue(message);
|
|
1028
|
+
const scopedValues = buildScenarioTemplateValues({
|
|
1029
|
+
environment: runtimeContext.environment,
|
|
1030
|
+
globals: runtimeContext.globals,
|
|
1031
|
+
workflowContext: runtimeContext.workflowContext,
|
|
1032
|
+
nodeMetaByLabel: runtimeContext.nodeMetaByLabel,
|
|
1033
|
+
responseRoot: runtimeContext.responseRoot,
|
|
1034
|
+
dbResult: runtimeContext.dbResult,
|
|
1035
|
+
kafkaEvent: kafkaEventValue,
|
|
1036
|
+
redisResult: runtimeContext.redisResult,
|
|
1037
|
+
});
|
|
1038
|
+
return rules.every((rule) => evaluateScenarioExpression(rule, scopedValues).result);
|
|
1039
|
+
}) ?? null;
|
|
1040
|
+
}
|
|
1041
|
+
if (!matchedMessage) {
|
|
1042
|
+
outputData = captureResult;
|
|
1043
|
+
throw new ScenarioNodeFailureError(buildKafkaFailureMessage(captureResult, Boolean(rules.length)));
|
|
1044
|
+
}
|
|
1045
|
+
runtimeContext.kafkaCapture = captureResult;
|
|
1046
|
+
runtimeContext.kafkaEvent = buildKafkaEventValue(matchedMessage);
|
|
1047
|
+
outputData = runtimeContext.kafkaEvent;
|
|
989
1048
|
}
|
|
990
|
-
runtimeContext.kafkaCapture = captureResult;
|
|
991
|
-
runtimeContext.kafkaEvent = buildKafkaEventValue(matchedMessage);
|
|
992
|
-
outputData = runtimeContext.kafkaEvent;
|
|
993
1049
|
}
|
|
994
1050
|
if (node.type === "condition") {
|
|
995
1051
|
const conditionIssues = validateConditionConfig(node.data.config);
|