callman-core 1.11.6 → 1.11.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/ai-packs/db-queries.md +46 -0
  2. package/ai-packs/feature-policy.md +1 -0
  3. package/ai-packs/pm-api.md +3 -2
  4. package/dist/host/db/db-query-reference.d.ts +2 -0
  5. package/dist/host/db/db-query-reference.d.ts.map +1 -0
  6. package/dist/host/db/db-query-reference.js +64 -0
  7. package/dist/host/db/db-query-reference.js.map +1 -0
  8. package/dist/host/index.d.ts +1 -0
  9. package/dist/host/index.d.ts.map +1 -1
  10. package/dist/host/index.js +1 -0
  11. package/dist/host/index.js.map +1 -1
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/request/executeRequest.d.ts.map +1 -1
  17. package/dist/request/executeRequest.js +15 -1
  18. package/dist/request/executeRequest.js.map +1 -1
  19. package/dist/runner/requestRunner.d.ts.map +1 -1
  20. package/dist/runner/requestRunner.js +88 -4
  21. package/dist/runner/requestRunner.js.map +1 -1
  22. package/dist/runner/runRequestWithDataset.d.ts +3 -0
  23. package/dist/runner/runRequestWithDataset.d.ts.map +1 -0
  24. package/dist/runner/runRequestWithDataset.js +109 -0
  25. package/dist/runner/runRequestWithDataset.js.map +1 -0
  26. package/dist/script/pm-api-metadata.js +1 -1
  27. package/dist/script/pm-api-metadata.js.map +1 -1
  28. package/dist/script/pm-api-reference.d.ts +11 -0
  29. package/dist/script/pm-api-reference.d.ts.map +1 -0
  30. package/dist/script/pm-api-reference.js +48 -0
  31. package/dist/script/pm-api-reference.js.map +1 -0
  32. package/dist/types/index.d.ts +35 -0
  33. package/dist/types/index.d.ts.map +1 -1
  34. package/dist-cjs/host/db/db-query-reference.js +68 -0
  35. package/dist-cjs/host/db/db-query-reference.js.map +1 -0
  36. package/dist-cjs/host/index.js +3 -1
  37. package/dist-cjs/host/index.js.map +1 -1
  38. package/dist-cjs/index.js +5 -1
  39. package/dist-cjs/index.js.map +1 -1
  40. package/dist-cjs/request/executeRequest.js +15 -1
  41. package/dist-cjs/request/executeRequest.js.map +1 -1
  42. package/dist-cjs/runner/requestRunner.js +88 -4
  43. package/dist-cjs/runner/requestRunner.js.map +1 -1
  44. package/dist-cjs/runner/runRequestWithDataset.js +113 -0
  45. package/dist-cjs/runner/runRequestWithDataset.js.map +1 -0
  46. package/dist-cjs/script/pm-api-metadata.js +1 -1
  47. package/dist-cjs/script/pm-api-metadata.js.map +1 -1
  48. package/dist-cjs/script/pm-api-reference.js +52 -0
  49. package/dist-cjs/script/pm-api-reference.js.map +1 -0
  50. package/package.json +1 -1
@@ -0,0 +1,46 @@
1
+ <!-- GENERATED FILE — do not edit by hand. Source: callman_core (npm run ai:packs). -->
2
+
3
+ # Callman data access from scripts (`pm.db.query` / `pm.redis.command`)
4
+
5
+ `pm.db.query({ connectionId, query })` — ALWAYS `await`. `query` is coerced to a string, `{{tokens}}` are resolved, then dispatched by the connection's type. `connectionId` may be omitted to use the request's configured DB connection. IMPORTANT: `pm.db.query` does NOT accept a `params`/bind array — inline values (quote strings) or use `{{env.X}}` tokens; SQL placeholders like `$1` or `?` are NOT bound.
6
+
7
+ ## MongoDB
8
+ `query` MUST be a JSON STRING of a command object (use `JSON.stringify`), NOT a `db.coll.find(...)` shell string. The match key is `filter` (a top-level `query` key is rejected).
9
+
10
+ ```js
11
+ const body = pm.response.json();
12
+ const res = await pm.db.query({
13
+ connectionId: "…",
14
+ query: JSON.stringify({
15
+ collection: "users",
16
+ operation: "findOne", // find | findOne | aggregate | countDocuments | insertOne | insertMany | updateOne | updateMany | deleteOne | deleteMany | findOneAndUpdate | findOneAndReplace | findOneAndDelete
17
+ filter: { email: body.data.user.email },
18
+ }),
19
+ });
20
+ pm.expect(res.rowCount).to.be.above(0); // existence check
21
+ ```
22
+
23
+ Per-operation fields: `find`/`findOne` use `filter` (+ optional `projection`,`sort`,`limit`,`skip`); `aggregate` uses `pipeline` (array); `insertOne` uses `document`, `insertMany` uses `documents`; `updateOne`/`updateMany`/`findOneAndUpdate` use `filter`+`update` (Mongo update operators, e.g. `{ $set: { … } }`); `deleteOne`/`deleteMany` use `filter`; `findOneAndUpdate`/`findOneAndReplace` accept `returnDocument: "before"|"after"`. A 24-hex string in a filter is auto-coerced to ObjectId (or use `{ "$oid": "…" }`). Rows are in `res.rows`; write ops surface counts in `res.rowCount`.
24
+
25
+ ## PostgreSQL / MySQL / Oracle (SQL)
26
+ `query` is plain SQL text. Because `pm.db.query` binds no params, inline the value and quote strings yourself (or use a `{{token}}`):
27
+
28
+ ```js
29
+ const email = pm.response.json().data.user.email;
30
+ const res = await pm.db.query({
31
+ connectionId: "…",
32
+ query: `SELECT id FROM users WHERE email = '${email}'`,
33
+ });
34
+ pm.expect(res.rowCount).to.be.above(0);
35
+ ```
36
+
37
+ Notes: a trailing `;` is stripped (except Oracle PL/SQL blocks, which keep it). **Oracle** returns column names UPPERCASE — read `res.rows[0].EMAIL`, not `.email`. `res.rowCount` is the row count for SELECT and the affected-row count for INSERT/UPDATE/DELETE.
38
+
39
+ ## Redis (`pm.redis.command`)
40
+ `command` is a single string. Only **GET, SET, DEL, EXISTS, TTL** are supported. Quote a value that contains spaces.
41
+
42
+ ```js
43
+ const res = await pm.redis.command({ connectionId: "…", command: `GET session:${id}` });
44
+ pm.expect(res.success).to.be.true;
45
+ // res.result / res.resultText hold the value; res.commandName, res.key are set.
46
+ ```
@@ -19,6 +19,7 @@ Capability-gated members:
19
19
 
20
20
  ## redis
21
21
 
22
+ - `pm.redis.command({ connectionId, command })`
22
23
  - `pm.redis.get(key)`
23
24
  - `pm.redis.results.pre`
24
25
  - `pm.redis.results.post`
@@ -110,7 +110,7 @@ Fire an ad-hoc HTTP request from inside a script.
110
110
 
111
111
  Database access (Oracle / MongoDB / PostgreSQL / MySQL). Disabled by feature policy in some contexts — tests then report SKIP.
112
112
 
113
- - `pm.db.query({ connectionId, query })` — Run an ad-hoc query — ALWAYS await it. Resolves to { success, error, rowCount, rows, firstRow(), connectionId, connectionName, connectionType, durationMs, executedAt }. firstRow is a FUNCTION: res.firstRow()?.STATUS (Oracle columns are UPPERCASE). _(requires the database capability — may be disabled by feature policy)_
113
+ - `pm.db.query({ connectionId, query })` — Run an ad-hoc query — ALWAYS await it. SQL connections (Oracle/Postgres/MySQL): `query` is the SQL text. MongoDB: `query` is a JSON STRING of a command object, e.g. `JSON.stringify({ collection: 'users', operation: 'findOne', filter: { email } })` — operation is find|findOne|aggregate|countDocuments|insertOne|updateOne|deleteOne|…, the match key is `filter` (NOT a `db.coll.find(...)` shell string and NOT `query`), and aggregate uses `pipeline`. Resolves to { success, error, rowCount, rows, firstRow(), connectionId, connectionName, connectionType, durationMs, executedAt }. firstRow is a FUNCTION: res.firstRow()?.STATUS (Oracle columns are UPPERCASE); for a Mongo existence check assert rowCount > 0. _(requires the database capability — may be disabled by feature policy)_
114
114
  - `pm.db.pre` — Result object of the declared pre-request DB query: { success, error, rowCount, rows, firstRow() }. Not a promise — read directly. _(requires the database capability — may be disabled by feature policy)_
115
115
  - `pm.db.post` — Result object of the declared post-response DB query (same shape as pm.db.pre). _(stages: post-response, tests)_ _(requires the database capability — may be disabled by feature policy)_
116
116
 
@@ -123,8 +123,9 @@ Captured Kafka events from the request's Kafka tab listener.
123
123
 
124
124
  ## pm.redis
125
125
 
126
- Results of the declared pre/post Redis commands.
126
+ Run ad-hoc Redis commands and read results of declared pre/post commands.
127
127
 
128
+ - `pm.redis.command({ connectionId, command })` — Run an ad-hoc Redis command (GET/SET/DEL/EXISTS/TTL) — ALWAYS await it. Resolves to { success, error, result, resultText, commandName, key, connectionId, connectionName, command, resolvedCommand, durationMs, executedAt }. Omit connectionId to use the request's configured Redis connection. _(requires the redis capability — may be disabled by feature policy)_
128
129
  - `pm.redis.get(key)` — Read a value already captured by a declared GET. _(requires the redis capability — may be disabled by feature policy)_
129
130
  - `pm.redis.results.pre` — Array of pre-stage command results (by line index). _(requires the redis capability — may be disabled by feature policy)_
130
131
  - `pm.redis.results.post` — Array of post-stage command results. _(stages: post-response, tests)_ _(requires the redis capability — may be disabled by feature policy)_
@@ -0,0 +1,2 @@
1
+ export declare const renderDbQueryReference: () => string;
2
+ //# sourceMappingURL=db-query-reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-query-reference.d.ts","sourceRoot":"","sources":["../../../src/host/db/db-query-reference.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,sBAAsB,QAAO,MA8C5B,CAAC"}
@@ -0,0 +1,64 @@
1
+ // Authoritative, human/AI-readable reference for HOW to shape a query passed to
2
+ // `pm.db.query({ connectionId, query })` and `pm.redis.command({ connectionId,
3
+ // command })` from a script — one per backend. Colocated with the adapters that
4
+ // define the real behaviour so it can't silently drift.
5
+ //
6
+ // KEEP IN SYNC with:
7
+ // - mongoAdapter.ts (Mongo command-object shape + supported operations)
8
+ // - postgresAdapter.ts ($1 placeholders — but see note below)
9
+ // - mysqlAdapter.ts (? placeholders — but see note below)
10
+ // - oracleAdapter.ts (UPPERCASE columns, PL/SQL, no bind array)
11
+ // - redisService.ts (supported command set: GET/SET/DEL/EXISTS/TTL)
12
+ // - ../../script/features/db.ts (pm.db.query coerces `query` to String — no params)
13
+ // - ../../script/features/redis.ts (pm.redis.command coerces `command` to String)
14
+ //
15
+ // CRITICAL: `pm.db.query` does NOT forward a `params` array (only the host /
16
+ // scenario executor does). So inside a SCRIPT, SQL bind placeholders (`$1`, `?`)
17
+ // are NOT bound — inline the value (quote strings) or use a `{{token}}` instead.
18
+ export const renderDbQueryReference = () => [
19
+ "# Callman data access from scripts (`pm.db.query` / `pm.redis.command`)",
20
+ "",
21
+ "`pm.db.query({ connectionId, query })` — ALWAYS `await`. `query` is coerced to a string, `{{tokens}}` are resolved, then dispatched by the connection's type. `connectionId` may be omitted to use the request's configured DB connection. IMPORTANT: `pm.db.query` does NOT accept a `params`/bind array — inline values (quote strings) or use `{{env.X}}` tokens; SQL placeholders like `$1` or `?` are NOT bound.",
22
+ "",
23
+ "## MongoDB",
24
+ "`query` MUST be a JSON STRING of a command object (use `JSON.stringify`), NOT a `db.coll.find(...)` shell string. The match key is `filter` (a top-level `query` key is rejected).",
25
+ "",
26
+ "```js",
27
+ "const body = pm.response.json();",
28
+ "const res = await pm.db.query({",
29
+ ' connectionId: "…",',
30
+ " query: JSON.stringify({",
31
+ ' collection: "users",',
32
+ ' operation: "findOne", // find | findOne | aggregate | countDocuments | insertOne | insertMany | updateOne | updateMany | deleteOne | deleteMany | findOneAndUpdate | findOneAndReplace | findOneAndDelete',
33
+ " filter: { email: body.data.user.email },",
34
+ " }),",
35
+ "});",
36
+ "pm.expect(res.rowCount).to.be.above(0); // existence check",
37
+ "```",
38
+ "",
39
+ "Per-operation fields: `find`/`findOne` use `filter` (+ optional `projection`,`sort`,`limit`,`skip`); `aggregate` uses `pipeline` (array); `insertOne` uses `document`, `insertMany` uses `documents`; `updateOne`/`updateMany`/`findOneAndUpdate` use `filter`+`update` (Mongo update operators, e.g. `{ $set: { … } }`); `deleteOne`/`deleteMany` use `filter`; `findOneAndUpdate`/`findOneAndReplace` accept `returnDocument: \"before\"|\"after\"`. A 24-hex string in a filter is auto-coerced to ObjectId (or use `{ \"$oid\": \"…\" }`). Rows are in `res.rows`; write ops surface counts in `res.rowCount`.",
40
+ "",
41
+ "## PostgreSQL / MySQL / Oracle (SQL)",
42
+ "`query` is plain SQL text. Because `pm.db.query` binds no params, inline the value and quote strings yourself (or use a `{{token}}`):",
43
+ "",
44
+ "```js",
45
+ "const email = pm.response.json().data.user.email;",
46
+ "const res = await pm.db.query({",
47
+ ' connectionId: "…",',
48
+ " query: `SELECT id FROM users WHERE email = '${email}'`,",
49
+ "});",
50
+ "pm.expect(res.rowCount).to.be.above(0);",
51
+ "```",
52
+ "",
53
+ "Notes: a trailing `;` is stripped (except Oracle PL/SQL blocks, which keep it). **Oracle** returns column names UPPERCASE — read `res.rows[0].EMAIL`, not `.email`. `res.rowCount` is the row count for SELECT and the affected-row count for INSERT/UPDATE/DELETE.",
54
+ "",
55
+ "## Redis (`pm.redis.command`)",
56
+ "`command` is a single string. Only **GET, SET, DEL, EXISTS, TTL** are supported. Quote a value that contains spaces.",
57
+ "",
58
+ "```js",
59
+ 'const res = await pm.redis.command({ connectionId: "…", command: `GET session:${id}` });',
60
+ "pm.expect(res.success).to.be.true;",
61
+ "// res.result / res.resultText hold the value; res.commandName, res.key are set.",
62
+ "```",
63
+ ].join("\n");
64
+ //# sourceMappingURL=db-query-reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-query-reference.js","sourceRoot":"","sources":["../../../src/host/db/db-query-reference.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAChF,wDAAwD;AACxD,EAAE;AACF,qBAAqB;AACrB,+EAA+E;AAC/E,kEAAkE;AAClE,iEAAiE;AACjE,sEAAsE;AACtE,2EAA2E;AAC3E,yFAAyF;AACzF,oFAAoF;AACpF,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,iFAAiF;AAEjF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAW,EAAE,CACjD;IACE,yEAAyE;IACzE,EAAE;IACF,uZAAuZ;IACvZ,EAAE;IACF,YAAY;IACZ,oLAAoL;IACpL,EAAE;IACF,OAAO;IACP,kCAAkC;IAClC,iCAAiC;IACjC,sBAAsB;IACtB,2BAA2B;IAC3B,0BAA0B;IAC1B,sNAAsN;IACtN,8CAA8C;IAC9C,OAAO;IACP,KAAK;IACL,8DAA8D;IAC9D,KAAK;IACL,EAAE;IACF,olBAAolB;IACplB,EAAE;IACF,sCAAsC;IACtC,uIAAuI;IACvI,EAAE;IACF,OAAO;IACP,mDAAmD;IACnD,iCAAiC;IACjC,sBAAsB;IACtB,2DAA2D;IAC3D,KAAK;IACL,yCAAyC;IACzC,KAAK;IACL,EAAE;IACF,qQAAqQ;IACrQ,EAAE;IACF,+BAA+B;IAC/B,sHAAsH;IACtH,EAAE;IACF,OAAO;IACP,0FAA0F;IAC1F,oCAAoC;IACpC,kFAAkF;IAClF,KAAK;CACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
@@ -5,6 +5,7 @@ export { executePostgresQuery, testPostgresConnection, __setPostgresDriverForTes
5
5
  export { executeMysqlQuery, testMysqlConnection, __setMysqlDriverForTests, } from "./db/mysqlAdapter.js";
6
6
  export { executeOracleQuery, testOracleConnection, __setOracleDriverForTests, } from "./db/oracleAdapter.js";
7
7
  export { stripTrailingSqlTerminator } from "./db/sqlNormalize.js";
8
+ export { renderDbQueryReference } from "./db/db-query-reference.js";
8
9
  export { normalizeOracleConnectString, OracleConnectStringError, } from "./db/oracleConnectString.js";
9
10
  export { databaseConfigToDbConnection, type CoreDbProvider, type DatabaseConnectionConfigLike, } from "./db/connectionMapping.js";
10
11
  export { type DbConnection, type DbConnectionInput, type DbConnectionType, type DbConnectionMode, type DbConnectionTestResult, type DbQueryExecutionResult, type DbQueryPhase, type DbTemplateContext, type ExecuteDbQueryPayload, } from "./db/types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,4BAA4B,EAC5B,KAAK,cAAc,EACnB,KAAK,4BAA4B,GAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,4BAA4B,EAC5B,KAAK,cAAc,EACnB,KAAK,4BAA4B,GAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC"}
@@ -10,6 +10,7 @@ export { executePostgresQuery, testPostgresConnection, __setPostgresDriverForTes
10
10
  export { executeMysqlQuery, testMysqlConnection, __setMysqlDriverForTests, } from "./db/mysqlAdapter.js";
11
11
  export { executeOracleQuery, testOracleConnection, __setOracleDriverForTests, } from "./db/oracleAdapter.js";
12
12
  export { stripTrailingSqlTerminator } from "./db/sqlNormalize.js";
13
+ export { renderDbQueryReference } from "./db/db-query-reference.js";
13
14
  export { normalizeOracleConnectString, OracleConnectStringError, } from "./db/oracleConnectString.js";
14
15
  export { databaseConfigToDbConnection, } from "./db/connectionMapping.js";
15
16
  export { executeRedisCommands } from "./redis/redisService.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,6EAA6E;AAC7E,4EAA4E;AAE5E,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,GASrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,+EAA+E;AAC/E,wEAAwE;AACxE,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,4BAA4B,GAG7B,MAAM,2BAA2B,CAAC;AAanC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,6EAA6E;AAC7E,4EAA4E;AAE5E,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,GASrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,+EAA+E;AAC/E,wEAAwE;AACxE,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,4BAA4B,GAG7B,MAAM,2BAA2B,CAAC;AAanC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { runCollection } from "./runner/runCollection.js";
2
2
  export { runRequest } from "./runner/requestRunner.js";
3
+ export { runRequestWithDataset } from "./runner/runRequestWithDataset.js";
3
4
  export { executeRequest } from "./request/executeRequest.js";
4
5
  export { isXmlContentType, parseXml, looksLikeXml, XML_PARSER_OPTIONS, type ParseXmlResult, } from "./utils/xml.js";
5
6
  export { sanitizeJsonBody } from "./utils/jsonc.js";
@@ -11,6 +12,7 @@ export { runScriptIsolated } from "./script/isolated-runner.js";
11
12
  export type { RunScriptIsolatedOptions } from "./script/isolated-runner.js";
12
13
  export type { CounterSnapshotEntry, ExecuteScriptInput, ExecuteScriptResult, ScriptCapabilities, ScriptCounterCapability, ScriptDbCapability, ScriptDbExecutionInput, ScriptDbExecutionResult, ScriptError, ScriptFeaturePolicy, ScriptKafkaCapability, ScriptKeyValuePair, ScriptLogEntry, ScriptRedisCapability, ScriptRedisExecutionInput, ScriptRedisExecutionResult, ScriptRequestBodyState, ScriptRequestState, ScriptResponseState, ScriptStage, ScriptTestResult, ScriptVariableMutation, SendRequestExecutor, } from "./script/types.js";
13
14
  export { PM_API_METADATA, type PmApiMember, type PmApiNamespace, type PmApiStage, } from "./script/pm-api-metadata.js";
15
+ export { renderPmApiReference, type RenderPmApiOptions, } from "./script/pm-api-reference.js";
14
16
  export { ALLOWED_GLOBAL_NAMES, BLOCKED_GLOBAL_NAMES, RESERVED_LABEL_NAMES, } from "./script/scope.js";
15
17
  export { PmAssertion, createExpectApi } from "./script/features/assertions.js";
16
18
  export { PendingKafkaDependencyError, isPendingKafkaValue, } from "./script/features/kafka.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,UAAU,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,KAAK,wBAAwB,GAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,UAAU,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,KAAK,kBAAkB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,KAAK,wBAAwB,GAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,iBAAiB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { runCollection } from "./runner/runCollection.js";
2
2
  export { runRequest } from "./runner/requestRunner.js";
3
+ export { runRequestWithDataset } from "./runner/runRequestWithDataset.js";
3
4
  export { executeRequest } from "./request/executeRequest.js";
4
5
  export { isXmlContentType, parseXml, looksLikeXml, XML_PARSER_OPTIONS, } from "./utils/xml.js";
5
6
  export { sanitizeJsonBody } from "./utils/jsonc.js";
@@ -9,6 +10,7 @@ export * from "./templating/index.js";
9
10
  export { executeScript, validateScript } from "./script/executor.js";
10
11
  export { runScriptIsolated } from "./script/isolated-runner.js";
11
12
  export { PM_API_METADATA, } from "./script/pm-api-metadata.js";
13
+ export { renderPmApiReference, } from "./script/pm-api-reference.js";
12
14
  export { ALLOWED_GLOBAL_NAMES, BLOCKED_GLOBAL_NAMES, RESERVED_LABEL_NAMES, } from "./script/scope.js";
13
15
  export { PmAssertion, createExpectApi } from "./script/features/assertions.js";
14
16
  export { PendingKafkaDependencyError, isPendingKafkaValue, } from "./script/features/kafka.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,kBAAkB,GAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AA2BhE,OAAO,EACL,eAAe,GAIhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,GAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,kBAAkB,GAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AA2BhE,OAAO,EACL,eAAe,GAIhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,GAErB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,GAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,GAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"executeRequest.d.ts","sourceRoot":"","sources":["../../src/request/executeRequest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AA4BnF,eAAO,MAAM,kBAAkB,0HAC0F,CAAC;AAa1H,eAAO,MAAM,cAAc,GAAU,mDAOlC,mBAAmB,KAAG,OAAO,CAAC,oBAAoB,CA+DpD,CAAC"}
1
+ {"version":3,"file":"executeRequest.d.ts","sourceRoot":"","sources":["../../src/request/executeRequest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AA4BnF,eAAO,MAAM,kBAAkB,0HAC0F,CAAC;AA2B1H,eAAO,MAAM,cAAc,GAAU,mDAOlC,mBAAmB,KAAG,OAAO,CAAC,oBAAoB,CA+DpD,CAAC"}
@@ -23,6 +23,20 @@ const withDefaultUserAgent = (headers) => {
23
23
  }
24
24
  return next;
25
25
  };
26
+ // Add a default `http://` scheme when the URL has none (e.g. `localhost:9090`
27
+ // or `api.example.com/x`). Browsers/Electron do this implicitly, so a scheme-
28
+ // less URL that works in the desktop app must also work here (CLI/backend) —
29
+ // otherwise axios throws "Unsupported protocol localhost:". Already-schemed and
30
+ // protocol-relative (`//host`) URLs are left untouched.
31
+ const ensureUrlScheme = (url) => {
32
+ const trimmed = url.trim();
33
+ if (!trimmed)
34
+ return trimmed;
35
+ if (/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//.test(trimmed) || trimmed.startsWith("//")) {
36
+ return trimmed;
37
+ }
38
+ return `http://${trimmed}`;
39
+ };
26
40
  export const executeRequest = async ({ method, url, headers, query, body, timeoutMs = 30_000, }) => {
27
41
  const startedAt = typeof performance !== "undefined" ? performance.now() : Date.now();
28
42
  // Strip JSON comments / trailing commas from a JSON string body so a body
@@ -33,7 +47,7 @@ export const executeRequest = async ({ method, url, headers, query, body, timeou
33
47
  : body;
34
48
  const config = {
35
49
  method,
36
- url,
50
+ url: ensureUrlScheme(url),
37
51
  headers: outgoingHeaders,
38
52
  params: query,
39
53
  data: requestData,
@@ -1 +1 @@
1
- {"version":3,"file":"executeRequest.js","sourceRoot":"","sources":["../../src/request/executeRequest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executeRequest.js","sourceRoot":"","sources":["../../src/request/executeRequest.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"requestRunner.d.ts","sourceRoot":"","sources":["../../src/runner/requestRunner.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAGV,eAAe,EACf,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AA0K3B,eAAO,MAAM,UAAU,GACrB,OAAO,eAAe,KACrB,OAAO,CAAC,gBAAgB,CAiG1B,CAAC"}
1
+ {"version":3,"file":"requestRunner.d.ts","sourceRoot":"","sources":["../../src/runner/requestRunner.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAGV,eAAe,EACf,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AAyN3B,eAAO,MAAM,UAAU,GACrB,OAAO,eAAe,KACrB,OAAO,CAAC,gBAAgB,CAiJ1B,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { validateContracts } from "../contract/contractValidator.js";
2
2
  import { buildDbExecuteCapability, buildRedisCapability, runConfiguredDbQuery, runRedisCommandsForPhase, } from "../host/connections.js";
3
3
  import { executeRequest } from "../request/executeRequest.js";
4
+ import { executeScript } from "../script/executor.js";
4
5
  import { runScript } from "../script/scriptEngine.js";
5
6
  import { resolveTemplateValue } from "../variables/resolver.js";
6
7
  const stringifyEnv = (env) => {
@@ -10,6 +11,44 @@ const stringifyEnv = (env) => {
10
11
  }
11
12
  return out;
12
13
  };
14
+ // ── Pre-request script plumbing ────────────────────────────────────────────
15
+ // The sandbox represents headers/query as key/value arrays; the runner uses
16
+ // flat records. These bridge the two so a pre-request script can mutate the
17
+ // request (pm.request.setHeader) and the mutation reaches the HTTP call.
18
+ const headersToScriptPairs = (record) => Object.entries(record ?? {}).map(([key, value]) => ({ key, value, enabled: true }));
19
+ const scriptPairsToRecord = (pairs) => {
20
+ const out = {};
21
+ for (const pair of pairs) {
22
+ if (pair.enabled === false || !pair.key)
23
+ continue;
24
+ out[pair.key] = pair.value;
25
+ }
26
+ return out;
27
+ };
28
+ const toScriptRequestState = (request) => ({
29
+ method: request.method,
30
+ url: request.url,
31
+ headers: headersToScriptPairs(request.headers),
32
+ query: headersToScriptPairs(request.query),
33
+ body: {
34
+ mode: "raw",
35
+ raw: typeof request.body === "string"
36
+ ? request.body
37
+ : request.body != null
38
+ ? JSON.stringify(request.body)
39
+ : "",
40
+ formEntries: [],
41
+ },
42
+ });
43
+ // Apply a script's environment writes back onto the shared EnvStore so later
44
+ // template resolution (and later requests) see the new values.
45
+ const applyScriptEnvMutations = (env, mutations) => {
46
+ for (const mutation of mutations) {
47
+ if (mutation.scope !== "environment")
48
+ continue;
49
+ env.set(mutation.key, mutation.type === "unset" ? "" : (mutation.value ?? ""));
50
+ }
51
+ };
13
52
  // Build a `{{response.*}}` template root from an HTTP result so pre/post DB +
14
53
  // Redis nodes can reference the response body. Mirrors the desktop host's
15
54
  // `buildResponseTemplateRoot`.
@@ -124,14 +163,59 @@ const buildScriptExtensions = (input) => {
124
163
  return { db, redis };
125
164
  };
126
165
  export const runRequest = async (input) => {
127
- const runtimeRequest = normalizeRequestForExecution(input);
166
+ // `let` so the pre-request script can re-resolve after mutating env/request;
167
+ // the initial value also covers the catch block if something throws early.
168
+ let runtimeRequest = normalizeRequestForExecution(input);
128
169
  const connections = input.connections ?? {};
129
170
  const featurePolicy = input.featurePolicy;
130
171
  const databaseEnabled = featurePolicy ? featurePolicy.database : true;
131
172
  const redisConfig = input.request.redis;
132
173
  try {
133
- // ── Pre-request phase: DB node + Redis commands run before the HTTP call.
134
174
  const envBefore = stringifyEnv(input.env.all());
175
+ // ── Pre-request script: runs BEFORE the HTTP call (and before template
176
+ // resolution) so `pm.environment.set` tokens and `pm.request.setHeader`
177
+ // mutations reach the outgoing request. Its console output is dropped
178
+ // here; test assertions surface in scriptResults.
179
+ let preRequestTestResults = [];
180
+ if (input.request.preRequestScript?.trim()) {
181
+ const preResult = await executeScript({
182
+ script: input.request.preRequestScript,
183
+ stage: "pre-request",
184
+ filename: "callman-request.script.js",
185
+ capabilities: {
186
+ environment: { values: envBefore, emitMutations: true },
187
+ request: toScriptRequestState(input.request),
188
+ extensions: {
189
+ log: true,
190
+ node: true,
191
+ random: true,
192
+ counter: { snapshot: [] },
193
+ cryptojs: true,
194
+ variables: true,
195
+ },
196
+ },
197
+ });
198
+ applyScriptEnvMutations(input.env, preResult.variableMutations);
199
+ preRequestTestResults = preResult.testResults;
200
+ const mutatedRequest = preResult.request
201
+ ? {
202
+ ...input.request,
203
+ method: preResult.request.method,
204
+ url: preResult.request.url,
205
+ headers: scriptPairsToRecord(preResult.request.headers),
206
+ query: scriptPairsToRecord(preResult.request.query),
207
+ body: preResult.request.body.mode === "raw"
208
+ ? preResult.request.body.raw
209
+ : input.request.body,
210
+ }
211
+ : input.request;
212
+ // Re-resolve templates against the updated env + mutated request.
213
+ runtimeRequest = normalizeRequestForExecution({
214
+ ...input,
215
+ request: mutatedRequest,
216
+ });
217
+ }
218
+ // ── Pre-request phase: DB node + Redis commands run before the HTTP call.
135
219
  const preDbResult = databaseEnabled
136
220
  ? await runConfiguredDbQuery({
137
221
  connections,
@@ -176,7 +260,7 @@ export const runRequest = async (input) => {
176
260
  redisPre,
177
261
  redisPost,
178
262
  });
179
- const scriptResults = await runScript(input.request.tests, {
263
+ const testsScriptResults = await runScript(input.request.tests, {
180
264
  env: input.env,
181
265
  response,
182
266
  request: runtimeRequest,
@@ -193,7 +277,7 @@ export const runRequest = async (input) => {
193
277
  duration: response.duration,
194
278
  response,
195
279
  request: runtimeRequest,
196
- scriptResults,
280
+ scriptResults: [...preRequestTestResults, ...testsScriptResults],
197
281
  contractResults,
198
282
  },
199
283
  };
@@ -1 +1 @@
1
- {"version":3,"file":"requestRunner.js","sourceRoot":"","sources":["../../src/runner/requestRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"requestRunner.js","sourceRoot":"","sources":["../../src/runner/requestRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { DataContractSet, DataDrivenRunResult, RunRequestInput } from "../types/index.js";
2
+ export declare const runRequestWithDataset: (input: RunRequestInput, dataset: DataContractSet | null | undefined) => Promise<DataDrivenRunResult>;
3
+ //# sourceMappingURL=runRequestWithDataset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runRequestWithDataset.d.ts","sourceRoot":"","sources":["../../src/runner/runRequestWithDataset.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAGV,eAAe,EAEf,mBAAmB,EACnB,eAAe,EAEhB,MAAM,mBAAmB,CAAC;AAoD3B,eAAO,MAAM,qBAAqB,GAChC,OAAO,eAAe,EACtB,SAAS,eAAe,GAAG,IAAI,GAAG,SAAS,KAC1C,OAAO,CAAC,mBAAmB,CAoE7B,CAAC"}
@@ -0,0 +1,109 @@
1
+ // Data-driven contract run for a single request. Runs the request ONCE PER
2
+ // dataset row, injecting the row's values as `{{data.<column>}}` and validating
3
+ // that row's expected result (optional HTTP status + response-field assertions)
4
+ // against the response. Mirrors the scenario `runScenarioWithDataset` idiom but
5
+ // for the request runner, so the CLI, backend and desktop share one primitive.
6
+ //
7
+ // With no rows it falls back to a single plain `runRequest`.
8
+ import { runRequest } from "./requestRunner.js";
9
+ // Build the contract rule array for one row: each assertion becomes a
10
+ // path-scoped contract, and an `expectedStatus` becomes a `response.status`
11
+ // contract (the validator routes `response.*` paths against the HTTP envelope,
12
+ // so this asserts the status code with no dedicated primitive).
13
+ const buildRowContracts = (row) => {
14
+ const contracts = [];
15
+ if (typeof row.expectedStatus === "number") {
16
+ contracts.push({
17
+ name: `Expected status ${row.expectedStatus}`,
18
+ path: "response.status",
19
+ enabled: true,
20
+ rules: { equals: row.expectedStatus },
21
+ });
22
+ }
23
+ for (const assertion of row.assertions ?? []) {
24
+ if (assertion.enabled === false)
25
+ continue;
26
+ contracts.push({
27
+ path: assertion.path,
28
+ enabled: true,
29
+ rules: assertion.rules,
30
+ });
31
+ }
32
+ return contracts;
33
+ };
34
+ // CRITICAL: the request runner's resolver splits `data.column` into nested
35
+ // tokens (`env["data"]["column"]`), so a flat `"data.column"` key would NOT
36
+ // resolve `{{data.column}}`. We must inject a NESTED `data` object.
37
+ const injectRow = (input, row, rowIndex, total) => {
38
+ const scope = {};
39
+ for (const [key, value] of Object.entries(row.data)) {
40
+ scope[key] = value == null ? "" : String(value);
41
+ }
42
+ scope.$index = String(rowIndex + 1);
43
+ scope.$row = String(rowIndex + 1);
44
+ scope.$total = String(total);
45
+ input.env.set("data", scope);
46
+ };
47
+ const hasFailure = (results) => results.some((result) => result.status === "FAIL");
48
+ export const runRequestWithDataset = async (input, dataset) => {
49
+ const rows = dataset?.rows ?? [];
50
+ // No rows → single plain run reported as one iteration (keeps callers simple).
51
+ if (rows.length === 0) {
52
+ const { result } = await runRequest(input);
53
+ const passed = !hasFailure(result.contractResults) && !hasFailure(result.scriptResults);
54
+ return {
55
+ iterations: [
56
+ {
57
+ rowIndex: 0,
58
+ row: {},
59
+ status: result.status,
60
+ durationMs: result.duration,
61
+ scriptResults: result.scriptResults,
62
+ contractResults: result.contractResults,
63
+ passed: passed && result.status >= 200 && result.status < 400,
64
+ },
65
+ ],
66
+ summary: { total: 1, passed: passed ? 1 : 0, failed: passed ? 0 : 1 },
67
+ };
68
+ }
69
+ const iterations = [];
70
+ for (let rowIndex = 0; rowIndex < rows.length; rowIndex += 1) {
71
+ const row = rows[rowIndex] ?? { data: {} };
72
+ injectRow(input, row, rowIndex, rows.length);
73
+ const rowContracts = buildRowContracts(row);
74
+ const { result, response } = await runRequest({
75
+ ...input,
76
+ request: { ...input.request, contracts: rowContracts },
77
+ });
78
+ const failingContract = hasFailure(result.contractResults);
79
+ const failingScript = hasFailure(result.scriptResults);
80
+ const statusOk = result.status >= 200 && result.status < 400;
81
+ // When an expected status is declared, the contract check governs the
82
+ // verdict (a mismatch shows up as a failing contract); otherwise fall back
83
+ // to the coarse 2xx/3xx check.
84
+ const passed = !failingContract &&
85
+ !failingScript &&
86
+ (typeof row.expectedStatus === "number" || statusOk);
87
+ iterations.push({
88
+ rowIndex,
89
+ row: row.data,
90
+ status: result.status,
91
+ durationMs: result.duration,
92
+ scriptResults: result.scriptResults,
93
+ contractResults: result.contractResults,
94
+ passed,
95
+ request: result.request,
96
+ response,
97
+ });
98
+ }
99
+ const passed = iterations.filter((iteration) => iteration.passed).length;
100
+ return {
101
+ iterations,
102
+ summary: {
103
+ total: iterations.length,
104
+ passed,
105
+ failed: iterations.length - passed,
106
+ },
107
+ };
108
+ };
109
+ //# sourceMappingURL=runRequestWithDataset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runRequestWithDataset.js","sourceRoot":"","sources":["../../src/runner/runRequestWithDataset.ts"],"names":[],"mappings":"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"}
@@ -141,7 +141,7 @@ export const PM_API_METADATA = [
141
141
  members: [
142
142
  {
143
143
  signature: "pm.db.query({ connectionId, query })",
144
- description: "Run an ad-hoc query — ALWAYS await it. Resolves to { success, error, rowCount, rows, firstRow(), connectionId, connectionName, connectionType, durationMs, executedAt }. firstRow is a FUNCTION: res.firstRow()?.STATUS (Oracle columns are UPPERCASE).",
144
+ description: "Run an ad-hoc query — ALWAYS await it. SQL connections (Oracle/Postgres/MySQL): `query` is the SQL text. MongoDB: `query` is a JSON STRING of a command object, e.g. `JSON.stringify({ collection: 'users', operation: 'findOne', filter: { email } })` — operation is find|findOne|aggregate|countDocuments|insertOne|updateOne|deleteOne|…, the match key is `filter` (NOT a `db.coll.find(...)` shell string and NOT `query`), and aggregate uses `pipeline`. Resolves to { success, error, rowCount, rows, firstRow(), connectionId, connectionName, connectionType, durationMs, executedAt }. firstRow is a FUNCTION: res.firstRow()?.STATUS (Oracle columns are UPPERCASE); for a Mongo existence check assert rowCount > 0.",
145
145
  requires: "database",
146
146
  },
147
147
  {