callman-core 1.35.0 → 1.36.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.
Files changed (247) hide show
  1. package/ai-packs/feature-policy.md +1 -6
  2. package/ai-packs/pm-api.md +238 -98
  3. package/ai-packs/sandbox-globals.md +6 -5
  4. package/dist/ai/prompts/fragments.d.ts.map +1 -1
  5. package/dist/ai/prompts/fragments.js +0 -1
  6. package/dist/ai/prompts/fragments.js.map +1 -1
  7. package/dist/ai/prompts/unified.js +1 -1
  8. package/dist/ai/prompts/unified.js.map +1 -1
  9. package/dist/ai/types.d.ts +1 -1
  10. package/dist/ai/types.d.ts.map +1 -1
  11. package/dist/ai/types.js +1 -1
  12. package/dist/ai/types.js.map +1 -1
  13. package/dist/index.d.ts +5 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +3 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/runner/requestRunner.d.ts.map +1 -1
  18. package/dist/runner/requestRunner.js +33 -0
  19. package/dist/runner/requestRunner.js.map +1 -1
  20. package/dist/runner/runCollection.d.ts.map +1 -1
  21. package/dist/runner/runCollection.js +46 -9
  22. package/dist/runner/runCollection.js.map +1 -1
  23. package/dist/runner/runRequestWithDataset.d.ts.map +1 -1
  24. package/dist/runner/runRequestWithDataset.js +3 -2
  25. package/dist/runner/runRequestWithDataset.js.map +1 -1
  26. package/dist/scenario-runner/adapters/request-executor.d.ts.map +1 -1
  27. package/dist/scenario-runner/adapters/request-executor.js +7 -0
  28. package/dist/scenario-runner/adapters/request-executor.js.map +1 -1
  29. package/dist/scenario-runner/runScenario.d.ts.map +1 -1
  30. package/dist/scenario-runner/runScenario.js +4 -0
  31. package/dist/scenario-runner/runScenario.js.map +1 -1
  32. package/dist/scenario-runner/types.d.ts +11 -0
  33. package/dist/scenario-runner/types.d.ts.map +1 -1
  34. package/dist/script/chain.d.ts +2 -0
  35. package/dist/script/chain.d.ts.map +1 -1
  36. package/dist/script/chain.js +2 -0
  37. package/dist/script/chain.js.map +1 -1
  38. package/dist/script/errors.js +6 -6
  39. package/dist/script/errors.js.map +1 -1
  40. package/dist/script/executor.d.ts.map +1 -1
  41. package/dist/script/executor.js +284 -64
  42. package/dist/script/executor.js.map +1 -1
  43. package/dist/script/features/collectionVariables.d.ts +4 -4
  44. package/dist/script/features/collectionVariables.d.ts.map +1 -1
  45. package/dist/script/features/collectionVariables.js +20 -11
  46. package/dist/script/features/collectionVariables.js.map +1 -1
  47. package/dist/script/features/environment.d.ts +4 -4
  48. package/dist/script/features/environment.d.ts.map +1 -1
  49. package/dist/script/features/environment.js +20 -11
  50. package/dist/script/features/environment.js.map +1 -1
  51. package/dist/script/features/feature-policy.d.ts +1 -1
  52. package/dist/script/features/feature-policy.d.ts.map +1 -1
  53. package/dist/script/features/feature-policy.js +2 -2
  54. package/dist/script/features/feature-policy.js.map +1 -1
  55. package/dist/script/features/info.d.ts.map +1 -1
  56. package/dist/script/features/info.js +6 -3
  57. package/dist/script/features/info.js.map +1 -1
  58. package/dist/script/features/iterationData.d.ts +12 -0
  59. package/dist/script/features/iterationData.d.ts.map +1 -0
  60. package/dist/script/features/iterationData.js +28 -0
  61. package/dist/script/features/iterationData.js.map +1 -0
  62. package/dist/script/features/legacyPostman.d.ts +14 -0
  63. package/dist/script/features/legacyPostman.d.ts.map +1 -0
  64. package/dist/script/features/legacyPostman.js +106 -0
  65. package/dist/script/features/legacyPostman.js.map +1 -0
  66. package/dist/script/features/log.d.ts +35 -8
  67. package/dist/script/features/log.d.ts.map +1 -1
  68. package/dist/script/features/log.js +343 -27
  69. package/dist/script/features/log.js.map +1 -1
  70. package/dist/script/features/tests.d.ts +7 -8
  71. package/dist/script/features/tests.d.ts.map +1 -1
  72. package/dist/script/features/tests.js +90 -64
  73. package/dist/script/features/tests.js.map +1 -1
  74. package/dist/script/features/timers.d.ts +7 -1
  75. package/dist/script/features/timers.d.ts.map +1 -1
  76. package/dist/script/features/timers.js +17 -5
  77. package/dist/script/features/timers.js.map +1 -1
  78. package/dist/script/features/variables.d.ts +19 -4
  79. package/dist/script/features/variables.d.ts.map +1 -1
  80. package/dist/script/features/variables.js +22 -6
  81. package/dist/script/features/variables.js.map +1 -1
  82. package/dist/script/features/visualizer.d.ts +15 -0
  83. package/dist/script/features/visualizer.d.ts.map +1 -0
  84. package/dist/script/features/visualizer.js +52 -0
  85. package/dist/script/features/visualizer.js.map +1 -0
  86. package/dist/script/isolated-runner.d.ts +4 -1
  87. package/dist/script/isolated-runner.d.ts.map +1 -1
  88. package/dist/script/isolated-runner.js +26 -2
  89. package/dist/script/isolated-runner.js.map +1 -1
  90. package/dist/script/legacy.d.ts +1 -0
  91. package/dist/script/legacy.d.ts.map +1 -1
  92. package/dist/script/legacy.js +12 -2
  93. package/dist/script/legacy.js.map +1 -1
  94. package/dist/script/pm-api-declarations.d.ts +45 -0
  95. package/dist/script/pm-api-declarations.d.ts.map +1 -0
  96. package/dist/script/pm-api-declarations.js +1963 -0
  97. package/dist/script/pm-api-declarations.js.map +1 -0
  98. package/dist/script/pm-api-metadata.d.ts +3 -1
  99. package/dist/script/pm-api-metadata.d.ts.map +1 -1
  100. package/dist/script/pm-api-metadata.js +336 -106
  101. package/dist/script/pm-api-metadata.js.map +1 -1
  102. package/dist/script/pm-api-reference.d.ts.map +1 -1
  103. package/dist/script/pm-api-reference.js +24 -8
  104. package/dist/script/pm-api-reference.js.map +1 -1
  105. package/dist/script/postman/chaiCompat.d.ts +4 -0
  106. package/dist/script/postman/chaiCompat.d.ts.map +1 -0
  107. package/dist/script/postman/chaiCompat.js +176 -0
  108. package/dist/script/postman/chaiCompat.js.map +1 -0
  109. package/dist/script/postman/cookies.d.ts +36 -0
  110. package/dist/script/postman/cookies.d.ts.map +1 -0
  111. package/dist/script/postman/cookies.js +163 -0
  112. package/dist/script/postman/cookies.js.map +1 -0
  113. package/dist/script/postman/modules.d.ts +16 -0
  114. package/dist/script/postman/modules.d.ts.map +1 -0
  115. package/dist/script/postman/modules.js +114 -0
  116. package/dist/script/postman/modules.js.map +1 -0
  117. package/dist/script/postman/proxies.d.ts +13 -0
  118. package/dist/script/postman/proxies.d.ts.map +1 -0
  119. package/dist/script/postman/proxies.js +88 -0
  120. package/dist/script/postman/proxies.js.map +1 -0
  121. package/dist/script/postman/requestAdapter.d.ts +7 -0
  122. package/dist/script/postman/requestAdapter.d.ts.map +1 -0
  123. package/dist/script/postman/requestAdapter.js +223 -0
  124. package/dist/script/postman/requestAdapter.js.map +1 -0
  125. package/dist/script/postman/responseAdapter.d.ts +5 -0
  126. package/dist/script/postman/responseAdapter.d.ts.map +1 -0
  127. package/dist/script/postman/responseAdapter.js +78 -0
  128. package/dist/script/postman/responseAdapter.js.map +1 -0
  129. package/dist/script/postman/runtime.d.ts +22 -0
  130. package/dist/script/postman/runtime.d.ts.map +1 -0
  131. package/dist/script/postman/runtime.js +122 -0
  132. package/dist/script/postman/runtime.js.map +1 -0
  133. package/dist/script/scope.d.ts +5 -1
  134. package/dist/script/scope.d.ts.map +1 -1
  135. package/dist/script/scope.js +47 -5
  136. package/dist/script/scope.js.map +1 -1
  137. package/dist/script/types.d.ts +33 -14
  138. package/dist/script/types.d.ts.map +1 -1
  139. package/dist/script/worker-entry.js +9 -0
  140. package/dist/script/worker-entry.js.map +1 -1
  141. package/dist/script/worker-pool.d.ts +3 -1
  142. package/dist/script/worker-pool.d.ts.map +1 -1
  143. package/dist/script/worker-pool.js +23 -2
  144. package/dist/script/worker-pool.js.map +1 -1
  145. package/dist/templating/generator-metadata.d.ts +1 -0
  146. package/dist/templating/generator-metadata.d.ts.map +1 -1
  147. package/dist/templating/generator-metadata.js +14 -0
  148. package/dist/templating/generator-metadata.js.map +1 -1
  149. package/dist/templating/postman-dynamic-catalog.d.ts +7 -0
  150. package/dist/templating/postman-dynamic-catalog.d.ts.map +1 -0
  151. package/dist/templating/postman-dynamic-catalog.js +126 -0
  152. package/dist/templating/postman-dynamic-catalog.js.map +1 -0
  153. package/dist/templating/postman-generators.d.ts +9 -0
  154. package/dist/templating/postman-generators.d.ts.map +1 -1
  155. package/dist/templating/postman-generators.js +10 -1
  156. package/dist/templating/postman-generators.js.map +1 -1
  157. package/dist/types/index.d.ts +22 -1
  158. package/dist/types/index.d.ts.map +1 -1
  159. package/dist/variables/replaceIn.d.ts +10 -0
  160. package/dist/variables/replaceIn.d.ts.map +1 -0
  161. package/dist/variables/replaceIn.js +106 -0
  162. package/dist/variables/replaceIn.js.map +1 -0
  163. package/dist-cjs/ai/prompts/fragments.js +0 -1
  164. package/dist-cjs/ai/prompts/fragments.js.map +1 -1
  165. package/dist-cjs/ai/prompts/unified.js +1 -1
  166. package/dist-cjs/ai/prompts/unified.js.map +1 -1
  167. package/dist-cjs/ai/types.js +1 -1
  168. package/dist-cjs/ai/types.js.map +1 -1
  169. package/dist-cjs/index.js +17 -5
  170. package/dist-cjs/index.js.map +1 -1
  171. package/dist-cjs/runner/requestRunner.js +33 -0
  172. package/dist-cjs/runner/requestRunner.js.map +1 -1
  173. package/dist-cjs/runner/runCollection.js +46 -9
  174. package/dist-cjs/runner/runCollection.js.map +1 -1
  175. package/dist-cjs/runner/runRequestWithDataset.js +3 -2
  176. package/dist-cjs/runner/runRequestWithDataset.js.map +1 -1
  177. package/dist-cjs/scenario-runner/adapters/request-executor.js +7 -0
  178. package/dist-cjs/scenario-runner/adapters/request-executor.js.map +1 -1
  179. package/dist-cjs/scenario-runner/runScenario.js +4 -0
  180. package/dist-cjs/scenario-runner/runScenario.js.map +1 -1
  181. package/dist-cjs/script/chain.js +2 -0
  182. package/dist-cjs/script/chain.js.map +1 -1
  183. package/dist-cjs/script/errors.js +6 -6
  184. package/dist-cjs/script/errors.js.map +1 -1
  185. package/dist-cjs/script/executor.js +284 -64
  186. package/dist-cjs/script/executor.js.map +1 -1
  187. package/dist-cjs/script/features/collectionVariables.js +20 -11
  188. package/dist-cjs/script/features/collectionVariables.js.map +1 -1
  189. package/dist-cjs/script/features/environment.js +20 -11
  190. package/dist-cjs/script/features/environment.js.map +1 -1
  191. package/dist-cjs/script/features/feature-policy.js +2 -2
  192. package/dist-cjs/script/features/feature-policy.js.map +1 -1
  193. package/dist-cjs/script/features/info.js +6 -3
  194. package/dist-cjs/script/features/info.js.map +1 -1
  195. package/dist-cjs/script/features/iterationData.js +32 -0
  196. package/dist-cjs/script/features/iterationData.js.map +1 -0
  197. package/dist-cjs/script/features/legacyPostman.js +112 -0
  198. package/dist-cjs/script/features/legacyPostman.js.map +1 -0
  199. package/dist-cjs/script/features/log.js +347 -28
  200. package/dist-cjs/script/features/log.js.map +1 -1
  201. package/dist-cjs/script/features/tests.js +90 -64
  202. package/dist-cjs/script/features/tests.js.map +1 -1
  203. package/dist-cjs/script/features/timers.js +17 -5
  204. package/dist-cjs/script/features/timers.js.map +1 -1
  205. package/dist-cjs/script/features/variables.js +22 -6
  206. package/dist-cjs/script/features/variables.js.map +1 -1
  207. package/dist-cjs/script/features/visualizer.js +56 -0
  208. package/dist-cjs/script/features/visualizer.js.map +1 -0
  209. package/dist-cjs/script/isolated-runner.js +26 -2
  210. package/dist-cjs/script/isolated-runner.js.map +1 -1
  211. package/dist-cjs/script/legacy.js +14 -3
  212. package/dist-cjs/script/legacy.js.map +1 -1
  213. package/dist-cjs/script/pm-api-declarations.js +1969 -0
  214. package/dist-cjs/script/pm-api-declarations.js.map +1 -0
  215. package/dist-cjs/script/pm-api-metadata.js +336 -106
  216. package/dist-cjs/script/pm-api-metadata.js.map +1 -1
  217. package/dist-cjs/script/pm-api-reference.js +24 -8
  218. package/dist-cjs/script/pm-api-reference.js.map +1 -1
  219. package/dist-cjs/script/postman/chaiCompat.js +181 -0
  220. package/dist-cjs/script/postman/chaiCompat.js.map +1 -0
  221. package/dist-cjs/script/postman/cookies.js +170 -0
  222. package/dist-cjs/script/postman/cookies.js.map +1 -0
  223. package/dist-cjs/script/postman/modules.js +123 -0
  224. package/dist-cjs/script/postman/modules.js.map +1 -0
  225. package/dist-cjs/script/postman/proxies.js +93 -0
  226. package/dist-cjs/script/postman/proxies.js.map +1 -0
  227. package/dist-cjs/script/postman/requestAdapter.js +227 -0
  228. package/dist-cjs/script/postman/requestAdapter.js.map +1 -0
  229. package/dist-cjs/script/postman/responseAdapter.js +83 -0
  230. package/dist-cjs/script/postman/responseAdapter.js.map +1 -0
  231. package/dist-cjs/script/postman/runtime.js +132 -0
  232. package/dist-cjs/script/postman/runtime.js.map +1 -0
  233. package/dist-cjs/script/scope.js +47 -5
  234. package/dist-cjs/script/scope.js.map +1 -1
  235. package/dist-cjs/script/worker-entry.js +9 -0
  236. package/dist-cjs/script/worker-entry.js.map +1 -1
  237. package/dist-cjs/script/worker-pool.js +23 -2
  238. package/dist-cjs/script/worker-pool.js.map +1 -1
  239. package/dist-cjs/templating/generator-metadata.js +15 -1
  240. package/dist-cjs/templating/generator-metadata.js.map +1 -1
  241. package/dist-cjs/templating/postman-dynamic-catalog.js +129 -0
  242. package/dist-cjs/templating/postman-dynamic-catalog.js.map +1 -0
  243. package/dist-cjs/templating/postman-generators.js +13 -3
  244. package/dist-cjs/templating/postman-generators.js.map +1 -1
  245. package/dist-cjs/variables/replaceIn.js +111 -0
  246. package/dist-cjs/variables/replaceIn.js.map +1 -0
  247. package/package.json +12 -2
@@ -0,0 +1,114 @@
1
+ // `require()` / `pm.require()` for scripts — Postman's built-in library list,
2
+ // resolved from an allow-list (no filesystem, no arbitrary packages):
3
+ //
4
+ // lodash, moment, chai, ajv (v6), cheerio (0.22), xml2js, uuid,
5
+ // csv-parse/lib/sync, postman-collection, crypto-js, tv4, atob, btoa
6
+ // and the Node modules path, assert, buffer, util, url, querystring,
7
+ // string_decoder, stream, events, timers, punycode.
8
+ //
9
+ // The sandbox is synchronous, so every module a script can ask for is loaded
10
+ // BEFORE it runs: `preloadScriptModules` scans the script for
11
+ // `require("name")` calls and loads those (all of them when a name is
12
+ // computed). `createSandboxRequire` then serves them from that cache.
13
+ import lodash from "lodash";
14
+ import { loadOptionalModule } from "../../host/lazy.js";
15
+ const interop = (mod) => (mod && mod.default !== undefined ? mod.default : mod);
16
+ const nodeModule = (specifier, pick) => async () => {
17
+ const mod = await loadOptionalModule(specifier);
18
+ return pick ? pick(mod) : interop(mod);
19
+ };
20
+ const uuidStub = async () => {
21
+ const { randomUUID } = await loadOptionalModule("node:crypto");
22
+ const v4 = () => randomUUID();
23
+ return Object.assign(() => v4(), { v4 });
24
+ };
25
+ const LOADERS = {
26
+ lodash: async () => lodash,
27
+ moment: nodeModule("moment"),
28
+ chai: async (ctx) => ctx.chai,
29
+ ajv: nodeModule("ajv6"),
30
+ cheerio: nodeModule("cheerio022"),
31
+ xml2js: nodeModule("xml2js"),
32
+ tv4: nodeModule("tv4"),
33
+ uuid: uuidStub,
34
+ "csv-parse/lib/sync": nodeModule("csv-parse/sync", (mod) => mod.parse ?? interop(mod)),
35
+ "postman-collection": async (ctx) => ctx.sdk,
36
+ "crypto-js": async (ctx) => ctx.cryptoJs,
37
+ atob: async () => globalThis.atob,
38
+ btoa: async () => globalThis.btoa,
39
+ path: nodeModule("node:path", (mod) => (mod.posix ?? interop(mod))),
40
+ assert: nodeModule("node:assert"),
41
+ buffer: nodeModule("node:buffer", (mod) => mod),
42
+ util: nodeModule("node:util", (mod) => mod),
43
+ url: nodeModule("node:url", (mod) => mod),
44
+ querystring: nodeModule("node:querystring"),
45
+ string_decoder: nodeModule("node:string_decoder", (mod) => mod),
46
+ stream: nodeModule("node:stream"),
47
+ events: nodeModule("node:events"),
48
+ punycode: nodeModule("node:punycode"),
49
+ timers: async (ctx) => ctx.timers ?? {},
50
+ };
51
+ const ALIASES = {
52
+ "string-decoder": "string_decoder",
53
+ "csv-parse/sync": "csv-parse/lib/sync",
54
+ "csv-parse": "csv-parse/lib/sync",
55
+ };
56
+ export const REQUIRABLE_MODULE_NAMES = Object.keys(LOADERS);
57
+ const normalizeName = (raw) => {
58
+ const name = raw.startsWith("node:") ? raw.slice(5) : raw;
59
+ return ALIASES[name] ?? name;
60
+ };
61
+ const REQUIRE_LITERAL = /(?:\bpm\.|\bcm\.|\bcallman\.)?\brequire\s*\(\s*(['"`])([^'"`]+)\1\s*\)/g;
62
+ const REQUIRE_CALL = /(?:\bpm\.|\bcm\.|\bcallman\.)?\brequire\s*\(/g;
63
+ // Comments are dropped before scanning so a note like "// require() the libs"
64
+ // does not look like a computed require. Only `//` that starts a line or follows
65
+ // whitespace is a comment (keeps `https://…` inside strings intact).
66
+ const stripComments = (script) => script.replace(/\/\*[\s\S]*?\*\//g, " ").replace(/(^|\s)\/\/[^\n]*/g, "$1");
67
+ // Modules that load everything when a name is computed. `punycode` is left out:
68
+ // Node prints a deprecation warning the moment it is required.
69
+ const LOAD_ALL_EXCLUDED = new Set(["punycode"]);
70
+ /** Module names a script asks for by literal; `all` when any name is computed. */
71
+ export const scanRequiredModules = (script) => {
72
+ const code = stripComments(script);
73
+ const names = new Set();
74
+ for (const match of code.matchAll(REQUIRE_LITERAL)) {
75
+ names.add(normalizeName(match[2] ?? ""));
76
+ }
77
+ const calls = [...code.matchAll(REQUIRE_CALL)].length;
78
+ const literalCalls = [...code.matchAll(REQUIRE_LITERAL)].length;
79
+ return { names: [...names], all: calls > literalCalls };
80
+ };
81
+ export const preloadScriptModules = async (script, ctx) => {
82
+ const loaded = new Map();
83
+ const { names, all } = scanRequiredModules(script);
84
+ const wanted = all ? REQUIRABLE_MODULE_NAMES.filter((name) => !LOAD_ALL_EXCLUDED.has(name)) : names;
85
+ await Promise.all(wanted.map(async (name) => {
86
+ const loader = LOADERS[name];
87
+ if (!loader)
88
+ return;
89
+ try {
90
+ loaded.set(name, await loader(ctx));
91
+ }
92
+ catch {
93
+ // surfaced as "Cannot find module" when (and only if) the script asks
94
+ }
95
+ }));
96
+ return loaded;
97
+ };
98
+ const UNSUPPORTED_SPECIFIER = /^(npm:|jsr:|@)/;
99
+ export const createSandboxRequire = (loaded, label = "require") => (rawName) => {
100
+ const requested = String(rawName ?? "");
101
+ if (UNSUPPORTED_SPECIFIER.test(requested)) {
102
+ throw new Error(`${label}("${requested}"): external packages (npm:, jsr:, team packages) are not supported in Callman. ` +
103
+ `Built-in libraries: ${REQUIRABLE_MODULE_NAMES.join(", ")}.`);
104
+ }
105
+ const name = normalizeName(requested);
106
+ if (loaded.has(name)) {
107
+ return loaded.get(name);
108
+ }
109
+ if (!(name in LOADERS)) {
110
+ throw new Error(`Cannot find module '${requested}'. Built-in libraries: ${REQUIRABLE_MODULE_NAMES.join(", ")}.`);
111
+ }
112
+ throw new Error(`Cannot load module '${requested}' in this environment.`);
113
+ };
114
+ //# sourceMappingURL=modules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../src/script/postman/modules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Wrap an SDK PropertyList/HeaderList: normal members win; any other string
3
+ * key reads the entry's value (case-insensitive) and writing one upserts it.
4
+ */
5
+ export declare const withBracketAccess: <T extends object>(list: T, options?: {
6
+ readOnly?: boolean;
7
+ }) => T;
8
+ /**
9
+ * Let an SDK `Url` behave like the string it used to be, while keeping every
10
+ * Url member (`getHost()`, `.query`, `.path`, `.update()`…) intact.
11
+ */
12
+ export declare const withStringBehavior: <T extends object>(url: T) => T;
13
+ //# sourceMappingURL=proxies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxies.d.ts","sourceRoot":"","sources":["../../../src/script/postman/proxies.ts"],"names":[],"mappings":"AAqBA;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EAAE,MAAM,CAAC,EAAE,UAAS;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,KAAG,CAqC3F,CAAC;AAEV;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,EAAE,KAAK,CAAC,KAAG,CAqB1D,CAAC"}
@@ -0,0 +1,88 @@
1
+ // Back-compat shims layered over `postman-collection` objects so scripts
2
+ // written before the SDK took over keep working:
3
+ //
4
+ // • `pm.request.headers["X-Custom"]` / `pm.response.headers["content-type"]`
5
+ // — bracket access on a HeaderList (Postman's HeaderList has none)
6
+ // • `pm.request.url` used as a string — `url.includes(…)`, `url + "x"`,
7
+ // `` `${url}` ``, `url.length`, `url = "https://…"`
8
+ /* eslint-disable @typescript-eslint/no-explicit-any */
9
+ const NOT_HEADER_KEYS = new Set([
10
+ "then",
11
+ "toJSON",
12
+ "constructor",
13
+ "inspect",
14
+ "nodeType",
15
+ Symbol.toStringTag,
16
+ Symbol.toPrimitive,
17
+ Symbol.iterator,
18
+ ]);
19
+ /**
20
+ * Wrap an SDK PropertyList/HeaderList: normal members win; any other string
21
+ * key reads the entry's value (case-insensitive) and writing one upserts it.
22
+ */
23
+ export const withBracketAccess = (list, options = {}) => new Proxy(list, {
24
+ get(target, property, receiver) {
25
+ if (property in target || typeof property !== "string" || NOT_HEADER_KEYS.has(property)) {
26
+ const value = Reflect.get(target, property, target);
27
+ return typeof value === "function" ? value.bind(target) : value;
28
+ }
29
+ const entry = target.one ? target.one(property) : undefined;
30
+ void receiver;
31
+ return entry ? entry.value : undefined;
32
+ },
33
+ set(target, property, value) {
34
+ if (typeof property !== "string" || property in target) {
35
+ target[property] = value;
36
+ return true;
37
+ }
38
+ if (options.readOnly) {
39
+ return true;
40
+ }
41
+ if (typeof target.upsert === "function") {
42
+ target.upsert({ key: property, value: value === undefined || value === null ? "" : String(value) });
43
+ }
44
+ return true;
45
+ },
46
+ deleteProperty(target, property) {
47
+ if (!options.readOnly && typeof property === "string" && typeof target.remove === "function") {
48
+ target.remove(property);
49
+ }
50
+ return true;
51
+ },
52
+ has(target, property) {
53
+ if (property in target)
54
+ return true;
55
+ return typeof property === "string" && Boolean(target.has && target.has(property));
56
+ },
57
+ ownKeys(target) {
58
+ return Reflect.ownKeys(target);
59
+ },
60
+ });
61
+ /**
62
+ * Let an SDK `Url` behave like the string it used to be, while keeping every
63
+ * Url member (`getHost()`, `.query`, `.path`, `.update()`…) intact.
64
+ */
65
+ export const withStringBehavior = (url) => new Proxy(url, {
66
+ get(target, property) {
67
+ if (property === Symbol.toPrimitive) {
68
+ return () => target.toString();
69
+ }
70
+ if (property === "valueOf") {
71
+ return () => target.toString();
72
+ }
73
+ const own = Reflect.get(target, property, target);
74
+ if (own !== undefined) {
75
+ return typeof own === "function" ? own.bind(target) : own;
76
+ }
77
+ if (typeof property === "string") {
78
+ const text = target.toString();
79
+ if (property === "length")
80
+ return text.length;
81
+ const member = String.prototype[property];
82
+ if (typeof member === "function")
83
+ return member.bind(text);
84
+ }
85
+ return undefined;
86
+ },
87
+ });
88
+ //# sourceMappingURL=proxies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxies.js","sourceRoot":"","sources":["../../../src/script/postman/proxies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ScriptRequestState } from "../types.js";
2
+ export interface SdkRequestBundle {
3
+ api: any;
4
+ toRequestState: () => ScriptRequestState;
5
+ }
6
+ export declare const buildSdkRequestApi: (sdk: any, state: ScriptRequestState) => SdkRequestBundle;
7
+ //# sourceMappingURL=requestAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestAdapter.d.ts","sourceRoot":"","sources":["../../../src/script/postman/requestAdapter.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAA8C,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAKlG,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,GAAG,CAAC;IACT,cAAc,EAAE,MAAM,kBAAkB,CAAC;CAC1C;AAmED,eAAO,MAAM,kBAAkB,GAAI,KAAK,GAAG,EAAE,OAAO,kBAAkB,KAAG,gBAgJxE,CAAC"}
@@ -0,0 +1,223 @@
1
+ // pm.request on top of the `postman-collection` Request.
2
+ //
3
+ // Callman hands the sandbox a flat ScriptRequestState (method, url, header and
4
+ // query rows, body). Here it becomes a REAL SDK Request — `url` is a `Url`,
5
+ // `headers` a `HeaderList`, `body` a `RequestBody` — so every Postman script
6
+ // that mutates the request (`pm.request.headers.upsert`, `url.query.add`,
7
+ // `url.update`, `body.update`, …) runs unchanged. After the script, whatever
8
+ // it changed is written back to a ScriptRequestState for the runner.
9
+ //
10
+ // Nothing the script did NOT touch is normalised: each part (url, headers,
11
+ // body) is snapshotted up front and, when unchanged, the original value is
12
+ // returned byte for byte — so a script that only reads cannot alter a request.
13
+ //
14
+ // Callman's own helpers (getHeader/setHeader/…/setRawBody, `query`) stay as
15
+ // non-enumerable extras next to the Postman API.
16
+ import { withBracketAccess, withStringBehavior } from "./proxies.js";
17
+ const text = (value) => (value === undefined || value === null ? "" : String(value));
18
+ const toRows = (list) => {
19
+ const rows = [];
20
+ list.each((item) => {
21
+ const key = text(item.key);
22
+ if (key.length === 0)
23
+ return;
24
+ rows.push({ key, value: text(item.value), enabled: item.disabled !== true });
25
+ });
26
+ return rows;
27
+ };
28
+ const rowsSignature = (rows) => JSON.stringify(rows.map((row) => [row.key, row.value, row.enabled !== false]));
29
+ const toFormRows = (list) => {
30
+ const rows = [];
31
+ list.each((item) => {
32
+ const key = text(item.key);
33
+ const isFile = item.type === "file";
34
+ rows.push({
35
+ key,
36
+ value: isFile ? "" : text(item.value),
37
+ enabled: item.disabled !== true,
38
+ ...(isFile
39
+ ? { type: "file", fileName: text(item.src ?? item.fileName) || undefined }
40
+ : {}),
41
+ });
42
+ });
43
+ return rows;
44
+ };
45
+ const toSdkBody = (body) => {
46
+ switch (body.mode) {
47
+ case "raw":
48
+ return {
49
+ mode: "raw",
50
+ raw: body.raw,
51
+ ...(body.rawLanguage ? { options: { raw: { language: body.rawLanguage } } } : {}),
52
+ };
53
+ case "urlencoded":
54
+ return {
55
+ mode: "urlencoded",
56
+ urlencoded: body.formEntries.map((entry) => ({
57
+ key: entry.key,
58
+ value: entry.value,
59
+ disabled: entry.enabled === false,
60
+ })),
61
+ };
62
+ case "formdata":
63
+ return {
64
+ mode: "formdata",
65
+ formdata: body.formEntries.map((entry) => ({
66
+ key: entry.key,
67
+ ...(entry.type === "file"
68
+ ? { type: "file", src: entry.fileName ?? "" }
69
+ : { type: "text", value: entry.value }),
70
+ disabled: entry.enabled === false,
71
+ })),
72
+ };
73
+ default:
74
+ return undefined;
75
+ }
76
+ };
77
+ export const buildSdkRequestApi = (sdk, state) => {
78
+ const originalBody = state.body;
79
+ const request = new sdk.Request({
80
+ url: state.url,
81
+ method: state.method,
82
+ header: state.headers
83
+ .filter((header) => header.key.trim().length > 0)
84
+ .map((header) => ({ key: header.key, value: header.value, disabled: header.enabled === false })),
85
+ body: toSdkBody(originalBody) ?? { mode: "raw", raw: "" },
86
+ });
87
+ for (const pair of state.query) {
88
+ if (pair.key.trim().length === 0)
89
+ continue;
90
+ request.url.query.add({ key: pair.key, value: pair.value, disabled: pair.enabled === false });
91
+ }
92
+ const sdkUrl = request.url;
93
+ const bodyIsSdkMapped = toSdkBody(originalBody) !== undefined;
94
+ const initial = {
95
+ method: request.method,
96
+ url: sdkUrl.toString(),
97
+ query: rowsSignature(toRows(sdkUrl.query)),
98
+ headers: rowsSignature(toRows(request.headers)),
99
+ body: JSON.stringify(request.body?.toJSON?.() ?? null),
100
+ };
101
+ // Keep the live objects reachable through stable wrappers: scripts may hold
102
+ // `pm.request.url` / `.headers` and mutate them later.
103
+ let currentUrl = sdkUrl;
104
+ let urlProxy = withStringBehavior(currentUrl);
105
+ const headersProxy = withBracketAccess(request.headers);
106
+ const queryProxy = withBracketAccess(sdkUrl.query);
107
+ Object.defineProperty(request, "url", {
108
+ configurable: true,
109
+ enumerable: true,
110
+ get: () => urlProxy,
111
+ set: (next) => {
112
+ if (typeof next === "string") {
113
+ currentUrl.update(next);
114
+ }
115
+ else if (next && typeof next.toString === "function" && next.host) {
116
+ currentUrl = next;
117
+ urlProxy = withStringBehavior(currentUrl);
118
+ }
119
+ else {
120
+ currentUrl.update(text(next));
121
+ }
122
+ },
123
+ });
124
+ Object.defineProperty(request, "headers", {
125
+ configurable: true,
126
+ enumerable: true,
127
+ get: () => headersProxy,
128
+ set: () => undefined,
129
+ });
130
+ const define = (name, value) => {
131
+ Object.defineProperty(request, name, {
132
+ value,
133
+ configurable: true,
134
+ enumerable: false,
135
+ writable: true,
136
+ });
137
+ };
138
+ // ── Callman helpers (kept for scripts written before the SDK).
139
+ define("query", queryProxy);
140
+ define("getHeader", (key) => request.headers.get(text(key).trim()) ?? undefined);
141
+ define("setHeader", (key, value) => {
142
+ const name = text(key).trim();
143
+ if (name)
144
+ request.headers.upsert({ key: name, value: text(value) });
145
+ });
146
+ define("unsetHeader", (key) => {
147
+ const name = text(key).trim();
148
+ if (name)
149
+ request.headers.remove(name);
150
+ });
151
+ define("getQueryParam", (key) => currentUrl.query.get(text(key).trim()) ?? undefined);
152
+ define("setQueryParam", (key, value) => {
153
+ const name = text(key).trim();
154
+ if (name)
155
+ currentUrl.query.upsert({ key: name, value: text(value) });
156
+ });
157
+ define("unsetQueryParam", (key) => {
158
+ const name = text(key).trim();
159
+ if (name)
160
+ currentUrl.query.remove(name);
161
+ });
162
+ define("setMethod", (method) => {
163
+ const normalized = text(method).trim().toUpperCase();
164
+ if (normalized)
165
+ request.method = normalized;
166
+ });
167
+ define("setUrl", (next) => {
168
+ currentUrl.update(text(next));
169
+ });
170
+ define("setRawBody", (value) => {
171
+ // An object/array becomes JSON text instead of "[object Object]".
172
+ const raw = value !== null && typeof value === "object" ? JSON.stringify(value) : text(value);
173
+ request.body.update({ mode: "raw", raw });
174
+ });
175
+ const urlWithoutQuery = () => {
176
+ const json = currentUrl.toJSON();
177
+ return new sdk.Url({ ...json, query: [] }).toString();
178
+ };
179
+ return {
180
+ api: request,
181
+ toRequestState: () => {
182
+ const urlNow = currentUrl.toString();
183
+ const queryNow = rowsSignature(toRows(currentUrl.query));
184
+ const urlChanged = urlNow !== initial.url || queryNow !== initial.query;
185
+ const headersChanged = rowsSignature(toRows(request.headers)) !== initial.headers;
186
+ const bodyChanged = JSON.stringify(request.body?.toJSON?.() ?? null) !== initial.body;
187
+ let body = originalBody;
188
+ if (bodyChanged) {
189
+ const sdkBody = request.body;
190
+ const mode = text(sdkBody?.mode);
191
+ if (mode === "raw") {
192
+ const language = sdkBody.options?.raw?.language ?? originalBody.rawLanguage;
193
+ body = {
194
+ mode: "raw",
195
+ raw: text(sdkBody.raw),
196
+ ...(language ? { rawLanguage: language } : {}),
197
+ formEntries: [],
198
+ };
199
+ }
200
+ else if (mode === "urlencoded") {
201
+ body = { mode: "urlencoded", raw: "", formEntries: toFormRows(sdkBody.urlencoded) };
202
+ }
203
+ else if (mode === "formdata") {
204
+ body = { mode: "formdata", raw: "", formEntries: toFormRows(sdkBody.formdata) };
205
+ }
206
+ else if (!bodyIsSdkMapped) {
207
+ body = originalBody;
208
+ }
209
+ else {
210
+ body = { mode: "none", raw: "", formEntries: [] };
211
+ }
212
+ }
213
+ return {
214
+ method: text(request.method).toUpperCase() || state.method,
215
+ url: urlChanged ? urlWithoutQuery() : state.url,
216
+ headers: headersChanged ? toRows(request.headers) : state.headers,
217
+ query: urlChanged ? toRows(currentUrl.query) : state.query,
218
+ body,
219
+ };
220
+ },
221
+ };
222
+ };
223
+ //# sourceMappingURL=requestAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestAdapter.js","sourceRoot":"","sources":["../../../src/script/postman/requestAdapter.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,+EAA+E;AAC/E,4EAA4E;AAC5E,6EAA6E;AAC7E,0EAA0E;AAC1E,6EAA6E;AAC7E,qEAAqE;AACrE,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,+EAA+E;AAC/E,EAAE;AACF,4EAA4E;AAC5E,iDAAiD;AAGjD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AASrE,MAAM,IAAI,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAEtG,MAAM,MAAM,GAAG,CAAC,IAAS,EAAwB,EAAE;IACjD,MAAM,IAAI,GAAyB,EAAE,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAA0B,EAAU,EAAE,CAC3D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;AAEjF,MAAM,UAAU,GAAG,CAAC,IAAS,EAAwB,EAAE;IACrD,MAAM,IAAI,GAAyB,EAAE,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC;YACR,GAAG;YACH,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACrC,OAAO,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI;YAC/B,GAAG,CAAC,MAAM;gBACR,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE;gBACnF,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,IAA4B,EAAuC,EAAE;IACtF,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,KAAK;YACR,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClF,CAAC;QACJ,KAAK,YAAY;YACf,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC3C,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,QAAQ,EAAE,KAAK,CAAC,OAAO,KAAK,KAAK;iBAClC,CAAC,CAAC;aACJ,CAAC;QACJ,KAAK,UAAU;YACb,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACzC,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;wBACvB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE;wBAC7C,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;oBACzC,QAAQ,EAAE,KAAK,CAAC,OAAO,KAAK,KAAK;iBAClC,CAAC,CAAC;aACJ,CAAC;QACJ;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAQ,EAAE,KAAyB,EAAoB,EAAE;IAC1F,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;QAC9B,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,OAAO;aAClB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;aAChD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;QAClG,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;KAC1D,CAAC,CAAC;IACH,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAC3B,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC;IAE9D,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE;QACtB,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC;KACvD,CAAC;IAEF,4EAA4E;IAC5E,uDAAuD;IACvD,IAAI,UAAU,GAAQ,MAAM,CAAC;IAC7B,IAAI,QAAQ,GAAQ,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE;QACpC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ;QACnB,GAAG,EAAE,CAAC,IAAa,EAAE,EAAE;YACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,IAAI,IAAI,OAAQ,IAAY,CAAC,QAAQ,KAAK,UAAU,IAAK,IAAY,CAAC,IAAI,EAAE,CAAC;gBACtF,UAAU,GAAG,IAAI,CAAC;gBAClB,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE;QACxC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY;QACvB,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;KACrB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,KAAc,EAAQ,EAAE;QACpD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE;YACnC,KAAK;YACL,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,gEAAgE;IAChE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC5B,MAAM,CAAC,WAAW,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC;IACzF,MAAM,CAAC,WAAW,EAAE,CAAC,GAAW,EAAE,KAAc,EAAE,EAAE;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI;YAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,aAAa,EAAE,CAAC,GAAW,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI;YAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,eAAe,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC;IAC9F,MAAM,CAAC,eAAe,EAAE,CAAC,GAAW,EAAE,KAAc,EAAE,EAAE;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI;YAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,iBAAiB,EAAE,CAAC,GAAW,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI;YAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,WAAW,EAAE,CAAC,MAAe,EAAE,EAAE;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrD,IAAI,UAAU;YAAE,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAa,EAAE,EAAE;QACjC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,YAAY,EAAE,CAAC,KAAc,EAAE,EAAE;QACtC,kEAAkE;QAClE,MAAM,GAAG,GACP,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,GAAW,EAAE;QACnC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxD,CAAC,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,cAAc,EAAE,GAAuB,EAAE;YACvC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,MAAM,KAAK,OAAO,CAAC,GAAG,IAAI,QAAQ,KAAK,OAAO,CAAC,KAAK,CAAC;YACxE,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC;YAClF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;YAEtF,IAAI,IAAI,GAA2B,YAAY,CAAC;YAChD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACjC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;oBACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,IAAI,YAAY,CAAC,WAAW,CAAC;oBAC5E,IAAI,GAAG;wBACL,IAAI,EAAE,KAAK;wBACX,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;wBACtB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC9C,WAAW,EAAE,EAAE;qBAChB,CAAC;gBACJ,CAAC;qBAAM,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;oBACjC,IAAI,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtF,CAAC;qBAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC/B,IAAI,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClF,CAAC;qBAAM,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC5B,IAAI,GAAG,YAAY,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;gBACpD,CAAC;YACH,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,MAAM;gBAC1D,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;gBAC/C,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;gBACjE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;gBAC1D,IAAI;aACL,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ScriptResponseState } from "../types.js";
2
+ export declare const buildSdkResponseApi: (sdk: any, chai: any, state: ScriptResponseState) => any;
3
+ /** Same BDD entry points for `pm.request.to.*` (chai-postman supports it). */
4
+ export declare const attachRequestAssertions: (chai: any, request: any) => void;
5
+ //# sourceMappingURL=responseAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responseAdapter.d.ts","sourceRoot":"","sources":["../../../src/script/postman/responseAdapter.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAKvD,eAAO,MAAM,mBAAmB,GAAI,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,OAAO,mBAAmB,KAAG,GA+DrF,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,GAAI,MAAM,GAAG,EAAE,SAAS,GAAG,KAAG,IAMjE,CAAC"}
@@ -0,0 +1,78 @@
1
+ // pm.response on top of the `postman-collection` Response (what Postman's own
2
+ // sandbox exposes), so `pm.response.json()` (throws on invalid JSON),
3
+ // `.text()`, `.reason()`, `.size()`, `.dataURI()`, `.cookies`, `.stream`,
4
+ // `.headers.*` and the chai-postman helpers (`pm.response.to.have.status(…)`,
5
+ // `.to.be.ok`, `.to.have.jsonSchema(…)`) behave exactly like in Postman.
6
+ //
7
+ // Callman's own accessors (ok, data, body, rawBody, raw, contentType,
8
+ // durationMs, sizeBytes) stay as non-enumerable extras. `pm.response.status`
9
+ // is Postman's reason phrase ("OK"); the numeric status is `pm.response.code`.
10
+ import { withBracketAccess } from "./proxies.js";
11
+ /* eslint-disable @typescript-eslint/no-explicit-any */
12
+ export const buildSdkResponseApi = (sdk, chai, state) => {
13
+ const cookies = state.cookies
14
+ .map((line) => {
15
+ try {
16
+ return sdk.Cookie.parse(line);
17
+ }
18
+ catch {
19
+ return null;
20
+ }
21
+ })
22
+ .filter(Boolean);
23
+ const response = new sdk.Response({
24
+ code: state.status,
25
+ ...(state.statusText ? { status: state.statusText } : {}),
26
+ header: Object.entries(state.headers).map(([key, value]) => ({ key, value: String(value) })),
27
+ body: state.rawBody,
28
+ // `text()` / `json()` / `size()` / `dataURI()` read the byte stream (as in
29
+ // Postman, where a response always has one); `body` below is then free to
30
+ // carry Callman's parsed value without breaking them.
31
+ stream: Buffer.from(state.rawBody ?? "", "utf8"),
32
+ cookie: cookies,
33
+ responseTime: state.durationMs,
34
+ responseSize: state.sizeBytes,
35
+ });
36
+ const parsedBody = state.jsonBody ?? state.body;
37
+ const define = (name, value) => {
38
+ Object.defineProperty(response, name, { value, configurable: true, enumerable: false, writable: true });
39
+ };
40
+ // Read-only header list with bracket access (`pm.response.headers["x-id"]`).
41
+ const headersProxy = withBracketAccess(response.headers, { readOnly: true });
42
+ Object.defineProperty(response, "headers", {
43
+ configurable: true,
44
+ enumerable: true,
45
+ get: () => headersProxy,
46
+ set: () => undefined,
47
+ });
48
+ define("ok", state.ok);
49
+ define("statusText", state.statusText || response.reason());
50
+ define("data", parsedBody);
51
+ define("body", parsedBody);
52
+ define("rawBody", state.rawBody);
53
+ define("raw", state.rawBody);
54
+ define("contentType", state.contentType);
55
+ define("durationMs", state.durationMs);
56
+ define("sizeBytes", state.sizeBytes);
57
+ // `pm.response.to / be / have` — the chai-postman BDD entry points.
58
+ const chain = (name) => function () {
59
+ return new chai.Assertion(response)[name];
60
+ };
61
+ for (const name of ["to", "be", "have"]) {
62
+ Object.defineProperty(response, name, {
63
+ configurable: true,
64
+ enumerable: false,
65
+ get: chain(name),
66
+ });
67
+ }
68
+ return response;
69
+ };
70
+ /** Same BDD entry points for `pm.request.to.*` (chai-postman supports it). */
71
+ export const attachRequestAssertions = (chai, request) => {
72
+ Object.defineProperty(request, "to", {
73
+ configurable: true,
74
+ enumerable: false,
75
+ get: () => new chai.Assertion(request).to,
76
+ });
77
+ };
78
+ //# sourceMappingURL=responseAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responseAdapter.js","sourceRoot":"","sources":["../../../src/script/postman/responseAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export interface PostmanRuntime {
2
+ /** `postman-collection` module, or null when it was not requested/loaded. */
3
+ sdk: any | null;
4
+ /** Configured chai (`chai.expect` is `pm.expect`). */
5
+ chai: any;
6
+ }
7
+ export interface LoadPostmanRuntimeOptions {
8
+ /** Load `postman-collection` (request/response objects, cookies, dynamic variables). */
9
+ sdk?: boolean;
10
+ }
11
+ export declare const loadPostmanRuntime: (options?: LoadPostmanRuntimeOptions) => Promise<PostmanRuntime>;
12
+ /**
13
+ * Whether a script needs the SDK up front. `pm.request` / `pm.response` exist
14
+ * only when the host supplied them; everything else that needs the SDK
15
+ * synchronously is `require()` and dynamic-variable substitution.
16
+ */
17
+ export declare const scriptNeedsSdk: (script: string, hasRequestOrResponse: boolean) => boolean;
18
+ /** Load the SDK's dynamic-variable generators (hosts that resolve templates
19
+ * outside a script — e.g. the request runner — call this once before sending). */
20
+ export declare const preloadPostmanDynamicVariables: () => Promise<void>;
21
+ export declare const getLoadedPostmanSdk: () => any | null;
22
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/script/postman/runtime.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IAChB,sDAAsD;IACtD,IAAI,EAAE,GAAG,CAAC;CACX;AAmED,MAAM,WAAW,yBAAyB;IACxC,wFAAwF;IACxF,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,eAAO,MAAM,kBAAkB,GAC7B,UAAS,yBAA8B,KACtC,OAAO,CAAC,cAAc,CAyBxB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,sBAAsB,OAAO,KAAG,OAGC,CAAC;AAEjF;kFACkF;AAClF,eAAO,MAAM,8BAA8B,QAAa,OAAO,CAAC,IAAI,CAEnE,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAO,GAAG,GAAG,IAAiB,CAAC"}