callman-core 1.35.0 → 1.37.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 (385) 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 +6 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +4 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/loadtest/compare.d.ts +32 -0
  18. package/dist/loadtest/compare.d.ts.map +1 -0
  19. package/dist/loadtest/compare.js +55 -0
  20. package/dist/loadtest/compare.js.map +1 -0
  21. package/dist/loadtest/flow-eval.d.ts +21 -0
  22. package/dist/loadtest/flow-eval.d.ts.map +1 -0
  23. package/dist/loadtest/flow-eval.js +199 -0
  24. package/dist/loadtest/flow-eval.js.map +1 -0
  25. package/dist/loadtest/from-collection.d.ts +51 -0
  26. package/dist/loadtest/from-collection.d.ts.map +1 -0
  27. package/dist/loadtest/from-collection.js +131 -0
  28. package/dist/loadtest/from-collection.js.map +1 -0
  29. package/dist/loadtest/histogram.d.ts +41 -0
  30. package/dist/loadtest/histogram.d.ts.map +1 -0
  31. package/dist/loadtest/histogram.js +166 -0
  32. package/dist/loadtest/histogram.js.map +1 -0
  33. package/dist/loadtest/index.d.ts +18 -0
  34. package/dist/loadtest/index.d.ts.map +1 -0
  35. package/dist/loadtest/index.js +14 -0
  36. package/dist/loadtest/index.js.map +1 -0
  37. package/dist/loadtest/node/index.d.ts +4 -0
  38. package/dist/loadtest/node/index.d.ts.map +1 -0
  39. package/dist/loadtest/node/index.js +4 -0
  40. package/dist/loadtest/node/index.js.map +1 -0
  41. package/dist/loadtest/node/metrics.d.ts +84 -0
  42. package/dist/loadtest/node/metrics.d.ts.map +1 -0
  43. package/dist/loadtest/node/metrics.js +396 -0
  44. package/dist/loadtest/node/metrics.js.map +1 -0
  45. package/dist/loadtest/node/orchestrator.d.ts +24 -0
  46. package/dist/loadtest/node/orchestrator.d.ts.map +1 -0
  47. package/dist/loadtest/node/orchestrator.js +363 -0
  48. package/dist/loadtest/node/orchestrator.js.map +1 -0
  49. package/dist/loadtest/node/protocol.d.ts +102 -0
  50. package/dist/loadtest/node/protocol.d.ts.map +1 -0
  51. package/dist/loadtest/node/protocol.js +17 -0
  52. package/dist/loadtest/node/protocol.js.map +1 -0
  53. package/dist/loadtest/node/setup.d.ts +6 -0
  54. package/dist/loadtest/node/setup.d.ts.map +1 -0
  55. package/dist/loadtest/node/setup.js +100 -0
  56. package/dist/loadtest/node/setup.js.map +1 -0
  57. package/dist/loadtest/node/step-compiler.d.ts +29 -0
  58. package/dist/loadtest/node/step-compiler.d.ts.map +1 -0
  59. package/dist/loadtest/node/step-compiler.js +229 -0
  60. package/dist/loadtest/node/step-compiler.js.map +1 -0
  61. package/dist/loadtest/node/transport.d.ts +66 -0
  62. package/dist/loadtest/node/transport.d.ts.map +1 -0
  63. package/dist/loadtest/node/transport.js +414 -0
  64. package/dist/loadtest/node/transport.js.map +1 -0
  65. package/dist/loadtest/node/worker-core.d.ts +77 -0
  66. package/dist/loadtest/node/worker-core.d.ts.map +1 -0
  67. package/dist/loadtest/node/worker-core.js +744 -0
  68. package/dist/loadtest/node/worker-core.js.map +1 -0
  69. package/dist/loadtest/node/worker.d.ts +2 -0
  70. package/dist/loadtest/node/worker.d.ts.map +1 -0
  71. package/dist/loadtest/node/worker.js +28 -0
  72. package/dist/loadtest/node/worker.js.map +1 -0
  73. package/dist/loadtest/plan-file.d.ts +91 -0
  74. package/dist/loadtest/plan-file.d.ts.map +1 -0
  75. package/dist/loadtest/plan-file.js +134 -0
  76. package/dist/loadtest/plan-file.js.map +1 -0
  77. package/dist/loadtest/plan.d.ts +47 -0
  78. package/dist/loadtest/plan.d.ts.map +1 -0
  79. package/dist/loadtest/plan.js +259 -0
  80. package/dist/loadtest/plan.js.map +1 -0
  81. package/dist/loadtest/report.d.ts +8 -0
  82. package/dist/loadtest/report.d.ts.map +1 -0
  83. package/dist/loadtest/report.js +211 -0
  84. package/dist/loadtest/report.js.map +1 -0
  85. package/dist/loadtest/thresholds.d.ts +55 -0
  86. package/dist/loadtest/thresholds.d.ts.map +1 -0
  87. package/dist/loadtest/thresholds.js +203 -0
  88. package/dist/loadtest/thresholds.js.map +1 -0
  89. package/dist/loadtest/types.d.ts +500 -0
  90. package/dist/loadtest/types.d.ts.map +1 -0
  91. package/dist/loadtest/types.js +8 -0
  92. package/dist/loadtest/types.js.map +1 -0
  93. package/dist/loadtest/validate.d.ts +30 -0
  94. package/dist/loadtest/validate.d.ts.map +1 -0
  95. package/dist/loadtest/validate.js +162 -0
  96. package/dist/loadtest/validate.js.map +1 -0
  97. package/dist/runner/requestRunner.d.ts.map +1 -1
  98. package/dist/runner/requestRunner.js +33 -0
  99. package/dist/runner/requestRunner.js.map +1 -1
  100. package/dist/runner/runCollection.d.ts.map +1 -1
  101. package/dist/runner/runCollection.js +46 -9
  102. package/dist/runner/runCollection.js.map +1 -1
  103. package/dist/runner/runRequestWithDataset.d.ts.map +1 -1
  104. package/dist/runner/runRequestWithDataset.js +3 -2
  105. package/dist/runner/runRequestWithDataset.js.map +1 -1
  106. package/dist/scenario-runner/adapters/request-executor.d.ts.map +1 -1
  107. package/dist/scenario-runner/adapters/request-executor.js +7 -0
  108. package/dist/scenario-runner/adapters/request-executor.js.map +1 -1
  109. package/dist/scenario-runner/runScenario.d.ts.map +1 -1
  110. package/dist/scenario-runner/runScenario.js +4 -0
  111. package/dist/scenario-runner/runScenario.js.map +1 -1
  112. package/dist/scenario-runner/types.d.ts +11 -0
  113. package/dist/scenario-runner/types.d.ts.map +1 -1
  114. package/dist/script/chain.d.ts +2 -0
  115. package/dist/script/chain.d.ts.map +1 -1
  116. package/dist/script/chain.js +2 -0
  117. package/dist/script/chain.js.map +1 -1
  118. package/dist/script/errors.js +6 -6
  119. package/dist/script/errors.js.map +1 -1
  120. package/dist/script/executor.d.ts.map +1 -1
  121. package/dist/script/executor.js +284 -64
  122. package/dist/script/executor.js.map +1 -1
  123. package/dist/script/features/collectionVariables.d.ts +4 -4
  124. package/dist/script/features/collectionVariables.d.ts.map +1 -1
  125. package/dist/script/features/collectionVariables.js +20 -11
  126. package/dist/script/features/collectionVariables.js.map +1 -1
  127. package/dist/script/features/environment.d.ts +4 -4
  128. package/dist/script/features/environment.d.ts.map +1 -1
  129. package/dist/script/features/environment.js +20 -11
  130. package/dist/script/features/environment.js.map +1 -1
  131. package/dist/script/features/feature-policy.d.ts +1 -1
  132. package/dist/script/features/feature-policy.d.ts.map +1 -1
  133. package/dist/script/features/feature-policy.js +2 -2
  134. package/dist/script/features/feature-policy.js.map +1 -1
  135. package/dist/script/features/info.d.ts.map +1 -1
  136. package/dist/script/features/info.js +6 -3
  137. package/dist/script/features/info.js.map +1 -1
  138. package/dist/script/features/iterationData.d.ts +12 -0
  139. package/dist/script/features/iterationData.d.ts.map +1 -0
  140. package/dist/script/features/iterationData.js +28 -0
  141. package/dist/script/features/iterationData.js.map +1 -0
  142. package/dist/script/features/legacyPostman.d.ts +14 -0
  143. package/dist/script/features/legacyPostman.d.ts.map +1 -0
  144. package/dist/script/features/legacyPostman.js +106 -0
  145. package/dist/script/features/legacyPostman.js.map +1 -0
  146. package/dist/script/features/log.d.ts +35 -8
  147. package/dist/script/features/log.d.ts.map +1 -1
  148. package/dist/script/features/log.js +343 -27
  149. package/dist/script/features/log.js.map +1 -1
  150. package/dist/script/features/tests.d.ts +7 -8
  151. package/dist/script/features/tests.d.ts.map +1 -1
  152. package/dist/script/features/tests.js +90 -64
  153. package/dist/script/features/tests.js.map +1 -1
  154. package/dist/script/features/timers.d.ts +7 -1
  155. package/dist/script/features/timers.d.ts.map +1 -1
  156. package/dist/script/features/timers.js +17 -5
  157. package/dist/script/features/timers.js.map +1 -1
  158. package/dist/script/features/variables.d.ts +19 -4
  159. package/dist/script/features/variables.d.ts.map +1 -1
  160. package/dist/script/features/variables.js +22 -6
  161. package/dist/script/features/variables.js.map +1 -1
  162. package/dist/script/features/visualizer.d.ts +15 -0
  163. package/dist/script/features/visualizer.d.ts.map +1 -0
  164. package/dist/script/features/visualizer.js +52 -0
  165. package/dist/script/features/visualizer.js.map +1 -0
  166. package/dist/script/isolated-runner.d.ts +4 -1
  167. package/dist/script/isolated-runner.d.ts.map +1 -1
  168. package/dist/script/isolated-runner.js +26 -2
  169. package/dist/script/isolated-runner.js.map +1 -1
  170. package/dist/script/legacy.d.ts +1 -0
  171. package/dist/script/legacy.d.ts.map +1 -1
  172. package/dist/script/legacy.js +12 -2
  173. package/dist/script/legacy.js.map +1 -1
  174. package/dist/script/pm-api-declarations.d.ts +45 -0
  175. package/dist/script/pm-api-declarations.d.ts.map +1 -0
  176. package/dist/script/pm-api-declarations.js +1963 -0
  177. package/dist/script/pm-api-declarations.js.map +1 -0
  178. package/dist/script/pm-api-metadata.d.ts +3 -1
  179. package/dist/script/pm-api-metadata.d.ts.map +1 -1
  180. package/dist/script/pm-api-metadata.js +336 -106
  181. package/dist/script/pm-api-metadata.js.map +1 -1
  182. package/dist/script/pm-api-reference.d.ts.map +1 -1
  183. package/dist/script/pm-api-reference.js +24 -8
  184. package/dist/script/pm-api-reference.js.map +1 -1
  185. package/dist/script/postman/chaiCompat.d.ts +4 -0
  186. package/dist/script/postman/chaiCompat.d.ts.map +1 -0
  187. package/dist/script/postman/chaiCompat.js +176 -0
  188. package/dist/script/postman/chaiCompat.js.map +1 -0
  189. package/dist/script/postman/cookies.d.ts +36 -0
  190. package/dist/script/postman/cookies.d.ts.map +1 -0
  191. package/dist/script/postman/cookies.js +163 -0
  192. package/dist/script/postman/cookies.js.map +1 -0
  193. package/dist/script/postman/modules.d.ts +16 -0
  194. package/dist/script/postman/modules.d.ts.map +1 -0
  195. package/dist/script/postman/modules.js +114 -0
  196. package/dist/script/postman/modules.js.map +1 -0
  197. package/dist/script/postman/proxies.d.ts +13 -0
  198. package/dist/script/postman/proxies.d.ts.map +1 -0
  199. package/dist/script/postman/proxies.js +88 -0
  200. package/dist/script/postman/proxies.js.map +1 -0
  201. package/dist/script/postman/requestAdapter.d.ts +7 -0
  202. package/dist/script/postman/requestAdapter.d.ts.map +1 -0
  203. package/dist/script/postman/requestAdapter.js +223 -0
  204. package/dist/script/postman/requestAdapter.js.map +1 -0
  205. package/dist/script/postman/responseAdapter.d.ts +5 -0
  206. package/dist/script/postman/responseAdapter.d.ts.map +1 -0
  207. package/dist/script/postman/responseAdapter.js +78 -0
  208. package/dist/script/postman/responseAdapter.js.map +1 -0
  209. package/dist/script/postman/runtime.d.ts +22 -0
  210. package/dist/script/postman/runtime.d.ts.map +1 -0
  211. package/dist/script/postman/runtime.js +122 -0
  212. package/dist/script/postman/runtime.js.map +1 -0
  213. package/dist/script/scope.d.ts +5 -1
  214. package/dist/script/scope.d.ts.map +1 -1
  215. package/dist/script/scope.js +47 -5
  216. package/dist/script/scope.js.map +1 -1
  217. package/dist/script/types.d.ts +33 -14
  218. package/dist/script/types.d.ts.map +1 -1
  219. package/dist/script/worker-entry.js +9 -0
  220. package/dist/script/worker-entry.js.map +1 -1
  221. package/dist/script/worker-pool.d.ts +3 -1
  222. package/dist/script/worker-pool.d.ts.map +1 -1
  223. package/dist/script/worker-pool.js +23 -2
  224. package/dist/script/worker-pool.js.map +1 -1
  225. package/dist/templating/compile.d.ts +8 -0
  226. package/dist/templating/compile.d.ts.map +1 -0
  227. package/dist/templating/compile.js +110 -0
  228. package/dist/templating/compile.js.map +1 -0
  229. package/dist/templating/generator-metadata.d.ts +1 -0
  230. package/dist/templating/generator-metadata.d.ts.map +1 -1
  231. package/dist/templating/generator-metadata.js +14 -0
  232. package/dist/templating/generator-metadata.js.map +1 -1
  233. package/dist/templating/index.d.ts +2 -0
  234. package/dist/templating/index.d.ts.map +1 -1
  235. package/dist/templating/index.js +1 -0
  236. package/dist/templating/index.js.map +1 -1
  237. package/dist/templating/postman-dynamic-catalog.d.ts +7 -0
  238. package/dist/templating/postman-dynamic-catalog.d.ts.map +1 -0
  239. package/dist/templating/postman-dynamic-catalog.js +126 -0
  240. package/dist/templating/postman-dynamic-catalog.js.map +1 -0
  241. package/dist/templating/postman-generators.d.ts +9 -0
  242. package/dist/templating/postman-generators.d.ts.map +1 -1
  243. package/dist/templating/postman-generators.js +10 -1
  244. package/dist/templating/postman-generators.js.map +1 -1
  245. package/dist/templating/template-engine.d.ts +6 -0
  246. package/dist/templating/template-engine.d.ts.map +1 -1
  247. package/dist/templating/template-engine.js +6 -6
  248. package/dist/templating/template-engine.js.map +1 -1
  249. package/dist/types/index.d.ts +22 -1
  250. package/dist/types/index.d.ts.map +1 -1
  251. package/dist/variables/replaceIn.d.ts +10 -0
  252. package/dist/variables/replaceIn.d.ts.map +1 -0
  253. package/dist/variables/replaceIn.js +106 -0
  254. package/dist/variables/replaceIn.js.map +1 -0
  255. package/dist-cjs/ai/prompts/fragments.js +0 -1
  256. package/dist-cjs/ai/prompts/fragments.js.map +1 -1
  257. package/dist-cjs/ai/prompts/unified.js +1 -1
  258. package/dist-cjs/ai/prompts/unified.js.map +1 -1
  259. package/dist-cjs/ai/types.js +1 -1
  260. package/dist-cjs/ai/types.js.map +1 -1
  261. package/dist-cjs/index.js +18 -5
  262. package/dist-cjs/index.js.map +1 -1
  263. package/dist-cjs/loadtest/compare.js +59 -0
  264. package/dist-cjs/loadtest/compare.js.map +1 -0
  265. package/dist-cjs/loadtest/flow-eval.js +205 -0
  266. package/dist-cjs/loadtest/flow-eval.js.map +1 -0
  267. package/dist-cjs/loadtest/from-collection.js +139 -0
  268. package/dist-cjs/loadtest/from-collection.js.map +1 -0
  269. package/dist-cjs/loadtest/histogram.js +171 -0
  270. package/dist-cjs/loadtest/histogram.js.map +1 -0
  271. package/dist-cjs/loadtest/index.js +78 -0
  272. package/dist-cjs/loadtest/index.js.map +1 -0
  273. package/dist-cjs/loadtest/node/index.js +12 -0
  274. package/dist-cjs/loadtest/node/index.js.map +1 -0
  275. package/dist-cjs/loadtest/node/metrics.js +402 -0
  276. package/dist-cjs/loadtest/node/metrics.js.map +1 -0
  277. package/dist-cjs/loadtest/node/orchestrator.js +372 -0
  278. package/dist-cjs/loadtest/node/orchestrator.js.map +1 -0
  279. package/dist-cjs/loadtest/node/protocol.js +20 -0
  280. package/dist-cjs/loadtest/node/protocol.js.map +1 -0
  281. package/dist-cjs/loadtest/node/setup.js +105 -0
  282. package/dist-cjs/loadtest/node/setup.js.map +1 -0
  283. package/dist-cjs/loadtest/node/step-compiler.js +234 -0
  284. package/dist-cjs/loadtest/node/step-compiler.js.map +1 -0
  285. package/dist-cjs/loadtest/node/transport.js +422 -0
  286. package/dist-cjs/loadtest/node/transport.js.map +1 -0
  287. package/dist-cjs/loadtest/node/worker-core.js +749 -0
  288. package/dist-cjs/loadtest/node/worker-core.js.map +1 -0
  289. package/dist-cjs/loadtest/node/worker.js +30 -0
  290. package/dist-cjs/loadtest/node/worker.js.map +1 -0
  291. package/dist-cjs/loadtest/plan-file.js +143 -0
  292. package/dist-cjs/loadtest/plan-file.js.map +1 -0
  293. package/dist-cjs/loadtest/plan.js +271 -0
  294. package/dist-cjs/loadtest/plan.js.map +1 -0
  295. package/dist-cjs/loadtest/report.js +220 -0
  296. package/dist-cjs/loadtest/report.js.map +1 -0
  297. package/dist-cjs/loadtest/thresholds.js +213 -0
  298. package/dist-cjs/loadtest/thresholds.js.map +1 -0
  299. package/dist-cjs/loadtest/types.js +9 -0
  300. package/dist-cjs/loadtest/types.js.map +1 -0
  301. package/dist-cjs/loadtest/validate.js +169 -0
  302. package/dist-cjs/loadtest/validate.js.map +1 -0
  303. package/dist-cjs/runner/requestRunner.js +33 -0
  304. package/dist-cjs/runner/requestRunner.js.map +1 -1
  305. package/dist-cjs/runner/runCollection.js +46 -9
  306. package/dist-cjs/runner/runCollection.js.map +1 -1
  307. package/dist-cjs/runner/runRequestWithDataset.js +3 -2
  308. package/dist-cjs/runner/runRequestWithDataset.js.map +1 -1
  309. package/dist-cjs/scenario-runner/adapters/request-executor.js +7 -0
  310. package/dist-cjs/scenario-runner/adapters/request-executor.js.map +1 -1
  311. package/dist-cjs/scenario-runner/runScenario.js +4 -0
  312. package/dist-cjs/scenario-runner/runScenario.js.map +1 -1
  313. package/dist-cjs/script/chain.js +2 -0
  314. package/dist-cjs/script/chain.js.map +1 -1
  315. package/dist-cjs/script/errors.js +6 -6
  316. package/dist-cjs/script/errors.js.map +1 -1
  317. package/dist-cjs/script/executor.js +284 -64
  318. package/dist-cjs/script/executor.js.map +1 -1
  319. package/dist-cjs/script/features/collectionVariables.js +20 -11
  320. package/dist-cjs/script/features/collectionVariables.js.map +1 -1
  321. package/dist-cjs/script/features/environment.js +20 -11
  322. package/dist-cjs/script/features/environment.js.map +1 -1
  323. package/dist-cjs/script/features/feature-policy.js +2 -2
  324. package/dist-cjs/script/features/feature-policy.js.map +1 -1
  325. package/dist-cjs/script/features/info.js +6 -3
  326. package/dist-cjs/script/features/info.js.map +1 -1
  327. package/dist-cjs/script/features/iterationData.js +32 -0
  328. package/dist-cjs/script/features/iterationData.js.map +1 -0
  329. package/dist-cjs/script/features/legacyPostman.js +112 -0
  330. package/dist-cjs/script/features/legacyPostman.js.map +1 -0
  331. package/dist-cjs/script/features/log.js +347 -28
  332. package/dist-cjs/script/features/log.js.map +1 -1
  333. package/dist-cjs/script/features/tests.js +90 -64
  334. package/dist-cjs/script/features/tests.js.map +1 -1
  335. package/dist-cjs/script/features/timers.js +17 -5
  336. package/dist-cjs/script/features/timers.js.map +1 -1
  337. package/dist-cjs/script/features/variables.js +22 -6
  338. package/dist-cjs/script/features/variables.js.map +1 -1
  339. package/dist-cjs/script/features/visualizer.js +56 -0
  340. package/dist-cjs/script/features/visualizer.js.map +1 -0
  341. package/dist-cjs/script/isolated-runner.js +26 -2
  342. package/dist-cjs/script/isolated-runner.js.map +1 -1
  343. package/dist-cjs/script/legacy.js +14 -3
  344. package/dist-cjs/script/legacy.js.map +1 -1
  345. package/dist-cjs/script/pm-api-declarations.js +1969 -0
  346. package/dist-cjs/script/pm-api-declarations.js.map +1 -0
  347. package/dist-cjs/script/pm-api-metadata.js +336 -106
  348. package/dist-cjs/script/pm-api-metadata.js.map +1 -1
  349. package/dist-cjs/script/pm-api-reference.js +24 -8
  350. package/dist-cjs/script/pm-api-reference.js.map +1 -1
  351. package/dist-cjs/script/postman/chaiCompat.js +181 -0
  352. package/dist-cjs/script/postman/chaiCompat.js.map +1 -0
  353. package/dist-cjs/script/postman/cookies.js +170 -0
  354. package/dist-cjs/script/postman/cookies.js.map +1 -0
  355. package/dist-cjs/script/postman/modules.js +123 -0
  356. package/dist-cjs/script/postman/modules.js.map +1 -0
  357. package/dist-cjs/script/postman/proxies.js +93 -0
  358. package/dist-cjs/script/postman/proxies.js.map +1 -0
  359. package/dist-cjs/script/postman/requestAdapter.js +227 -0
  360. package/dist-cjs/script/postman/requestAdapter.js.map +1 -0
  361. package/dist-cjs/script/postman/responseAdapter.js +83 -0
  362. package/dist-cjs/script/postman/responseAdapter.js.map +1 -0
  363. package/dist-cjs/script/postman/runtime.js +132 -0
  364. package/dist-cjs/script/postman/runtime.js.map +1 -0
  365. package/dist-cjs/script/scope.js +47 -5
  366. package/dist-cjs/script/scope.js.map +1 -1
  367. package/dist-cjs/script/worker-entry.js +9 -0
  368. package/dist-cjs/script/worker-entry.js.map +1 -1
  369. package/dist-cjs/script/worker-pool.js +23 -2
  370. package/dist-cjs/script/worker-pool.js.map +1 -1
  371. package/dist-cjs/templating/compile.js +114 -0
  372. package/dist-cjs/templating/compile.js.map +1 -0
  373. package/dist-cjs/templating/generator-metadata.js +15 -1
  374. package/dist-cjs/templating/generator-metadata.js.map +1 -1
  375. package/dist-cjs/templating/index.js +3 -1
  376. package/dist-cjs/templating/index.js.map +1 -1
  377. package/dist-cjs/templating/postman-dynamic-catalog.js +129 -0
  378. package/dist-cjs/templating/postman-dynamic-catalog.js.map +1 -0
  379. package/dist-cjs/templating/postman-generators.js +13 -3
  380. package/dist-cjs/templating/postman-generators.js.map +1 -1
  381. package/dist-cjs/templating/template-engine.js +14 -12
  382. package/dist-cjs/templating/template-engine.js.map +1 -1
  383. package/dist-cjs/variables/replaceIn.js +111 -0
  384. package/dist-cjs/variables/replaceIn.js.map +1 -0
  385. package/package.json +21 -2
@@ -1 +1 @@
1
- {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../src/script/features/tests.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA2DjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CACJ,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,KACjD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,gBAAgB,EAAE,MAAM,OAAO,CAAC;CACjC;AAOD,MAAM,WAAW,oBAAoB;IACnC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,WAAW,EACnB,UAAS,oBAAyB,KACjC,aA4FF,CAAC"}
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../src/script/features/tests.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAqDjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CAAC,CACL,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,KAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;QACpB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QAC/C,KAAK,EAAE,MAAM,MAAM,CAAC;KACrB,CAAC;IACF,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,gBAAgB,EAAE,MAAM,OAAO,CAAC;CACjC;AAQD,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEzD,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,WAAW,EACnB,WAAU,oBAAyB,KAClC,aAoIF,CAAC"}
@@ -1,18 +1,9 @@
1
1
  // pm.test collector — runs each callback as a fire-and-forget Promise that
2
2
  // resolves to PASS/FAIL/SKIP and surfaces the result via `flush()`.
3
3
  //
4
- // Two collection-runner extensions:
5
- // 1. selectedTestNames — when present, only tests whose name appears in
6
- // the set actually execute. Used for kafka-deferred re-runs where the
7
- // caller wants to retry only previously-pending tests.
8
- // 2. allowDeferredKafkaTests — when true, a thrown
9
- // PendingKafkaDependencyError is caught and routed to deferredTestNames
10
- // (instead of being recorded as a FAIL). The caller re-invokes the
11
- // script later with kafka data populated.
12
- // 3. DisabledFeatureDependencyError is recognized regardless and produces
13
- // a SKIP test result with a descriptive error message.
4
+ // DisabledFeatureDependencyError is recognized and produces a SKIP test
5
+ // result with a descriptive error message.
14
6
  import { DisabledFeatureDependencyError } from "./feature-policy.js";
15
- import { PendingKafkaDependencyError } from "./kafka.js";
16
7
  // Errors thrown inside the vm context cross a realm boundary, which means
17
8
  // `error instanceof Error` from the host's perspective is FALSE even when
18
9
  // the value has a real .message property. Read the message structurally
@@ -30,7 +21,7 @@ const extractErrorMessage = (error) => {
30
21
  return String(error);
31
22
  };
32
23
  // Cross-realm error name extraction — used to recognize symbolically named
33
- // errors like PendingKafkaDependencyError that may arrive as cross-realm
24
+ // errors (DisabledFeatureDependencyError) that may arrive as cross-realm
34
25
  // values failing instanceof checks.
35
26
  const extractErrorName = (error) => {
36
27
  if (error instanceof Error) {
@@ -44,17 +35,13 @@ const extractErrorName = (error) => {
44
35
  }
45
36
  return "";
46
37
  };
47
- const isPendingKafkaError = (error) => error instanceof PendingKafkaDependencyError ||
48
- extractErrorName(error) === "PendingKafkaDependencyError";
49
38
  const isDisabledFeatureError = (error) => {
50
39
  if (error instanceof DisabledFeatureDependencyError) {
51
40
  return { feature: error.feature };
52
41
  }
53
42
  if (extractErrorName(error) === "DisabledFeatureDependencyError") {
54
43
  const feature = error.feature;
55
- if (feature === "database" || feature === "kafka") {
56
- return { feature };
57
- }
44
+ void feature;
58
45
  return { feature: "database" };
59
46
  }
60
47
  return null;
@@ -63,70 +50,110 @@ const normalizeName = (name) => {
63
50
  const trimmed = String(name ?? "").trim();
64
51
  return trimmed || "Unnamed test";
65
52
  };
66
- export const buildTestCollector = (_stage, options = {}) => {
53
+ export const buildTestCollector = (_stage, _options = {}) => {
67
54
  const orderedResults = [];
68
55
  const finalResults = [];
69
- const deferredTestNames = [];
70
56
  const pending = [];
71
- const selected = options.selectedTestNames ? new Set(options.selectedTestNames) : null;
72
57
  let activeCallbackCount = 0;
73
- const test = (name, fn) => {
58
+ const record = (index, name, error) => {
59
+ const disabled = isDisabledFeatureError(error);
60
+ if (disabled) {
61
+ orderedResults[index] = {
62
+ name,
63
+ status: "SKIP",
64
+ error: "Skipped because database execution is disabled for this collection runner.",
65
+ };
66
+ return;
67
+ }
68
+ orderedResults[index] = {
69
+ name,
70
+ status: "FAIL",
71
+ error: extractErrorMessage(error),
72
+ };
73
+ };
74
+ const isThenable = (value) => value !== null &&
75
+ (typeof value === "object" || typeof value === "function") &&
76
+ typeof value.then === "function";
77
+ // Postman runs the callback SYNCHRONOUSLY at the pm.test() call, so code
78
+ // after it observes whatever the test did; an async callback (returns a
79
+ // Promise) or a `done` callback (`function (done) {…}`) is tracked and
80
+ // awaited at flush time. The result keeps the call order either way.
81
+ const test = ((name, fn) => {
74
82
  const normalizedName = normalizeName(name);
75
- if (selected && !selected.has(normalizedName)) {
83
+ const resultIndex = orderedResults.push(null) - 1;
84
+ const pass = () => {
85
+ orderedResults[resultIndex] = { name: normalizedName, status: "PASS" };
86
+ };
87
+ if (typeof fn !== "function") {
88
+ record(resultIndex, normalizedName, new Error("pm.test requires a callback function"));
76
89
  return Promise.resolve();
77
90
  }
78
- const resultIndex = orderedResults.push(null) - 1;
79
- const task = Promise.resolve()
80
- .then(async () => {
81
- if (typeof fn !== "function") {
82
- throw new Error("pm.test requires a callback function");
91
+ activeCallbackCount += 1;
92
+ let task;
93
+ try {
94
+ if (fn.length > 0) {
95
+ // done-callback style.
96
+ task = new Promise((resolve) => {
97
+ let finished = false;
98
+ const done = (error) => {
99
+ if (finished)
100
+ return;
101
+ finished = true;
102
+ activeCallbackCount = Math.max(0, activeCallbackCount - 1);
103
+ if (error) {
104
+ record(resultIndex, normalizedName, error);
105
+ }
106
+ else {
107
+ pass();
108
+ }
109
+ resolve();
110
+ };
111
+ try {
112
+ fn(done);
113
+ }
114
+ catch (error) {
115
+ done(error ?? new Error("Test failed"));
116
+ }
117
+ });
83
118
  }
84
- activeCallbackCount += 1;
85
- try {
86
- await fn();
119
+ else {
120
+ const out = fn();
121
+ if (isThenable(out)) {
122
+ task = Promise.resolve(out).then(() => {
123
+ activeCallbackCount = Math.max(0, activeCallbackCount - 1);
124
+ pass();
125
+ }, (error) => {
126
+ activeCallbackCount = Math.max(0, activeCallbackCount - 1);
127
+ record(resultIndex, normalizedName, error);
128
+ });
129
+ }
130
+ else {
131
+ activeCallbackCount = Math.max(0, activeCallbackCount - 1);
132
+ pass();
133
+ task = Promise.resolve();
134
+ }
87
135
  }
88
- finally {
89
- activeCallbackCount = Math.max(0, activeCallbackCount - 1);
90
- }
91
- orderedResults[resultIndex] = {
92
- name: normalizedName,
93
- status: "PASS",
94
- };
95
- })
96
- .catch((error) => {
97
- const disabled = isDisabledFeatureError(error);
98
- if (disabled) {
99
- orderedResults[resultIndex] = {
100
- name: normalizedName,
101
- status: "SKIP",
102
- error: disabled.feature === "database"
103
- ? "Skipped because database execution is disabled for this collection runner."
104
- : "Skipped because Kafka execution is disabled for this collection runner.",
105
- };
106
- return;
107
- }
108
- if (options.allowDeferredKafkaTests && isPendingKafkaError(error)) {
109
- orderedResults[resultIndex] = null;
110
- deferredTestNames.push(normalizedName);
111
- return;
112
- }
113
- orderedResults[resultIndex] = {
114
- name: normalizedName,
115
- status: "FAIL",
116
- error: extractErrorMessage(error),
117
- };
118
- });
136
+ }
137
+ catch (error) {
138
+ activeCallbackCount = Math.max(0, activeCallbackCount - 1);
139
+ record(resultIndex, normalizedName, error);
140
+ task = Promise.resolve();
141
+ }
119
142
  pending.push(task);
120
143
  return task;
121
- };
144
+ });
145
+ // pm.test.skip(name[, fn]) — recorded as SKIP, the callback never runs.
122
146
  const skip = (name, reason) => {
123
147
  const result = {
124
148
  name: normalizeName(name),
125
149
  status: "SKIP",
126
- ...(reason ? { error: reason } : {}),
150
+ ...(typeof reason === "string" && reason ? { error: reason } : {}),
127
151
  };
128
152
  orderedResults.push(result);
129
153
  };
154
+ // pm.test.index() — how many tests the script has recorded so far.
155
+ const index = () => orderedResults.length;
156
+ Object.assign(test, { skip, index });
130
157
  const flush = async () => {
131
158
  await Promise.allSettled(pending);
132
159
  for (const entry of orderedResults) {
@@ -139,7 +166,6 @@ export const buildTestCollector = (_stage, options = {}) => {
139
166
  test,
140
167
  skip,
141
168
  testResults: finalResults,
142
- deferredTestNames,
143
169
  flush,
144
170
  isInsideCallback: () => activeCallbackCount > 0,
145
171
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tests.js","sourceRoot":"","sources":["../../../src/script/features/tests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tests.js","sourceRoot":"","sources":["../../../src/script/features/tests.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,9 @@ export interface TimerApi {
3
3
  clearTimeout: (id: unknown) => void;
4
4
  setInterval: (handler: unknown, delay?: unknown, ...args: unknown[]) => number;
5
5
  clearInterval: (id: unknown) => void;
6
+ /** Node's setImmediate — runs the handler on the next turn (as a 0 ms timer). */
7
+ setImmediate: (handler: unknown, ...args: unknown[]) => number;
8
+ clearImmediate: (id: unknown) => void;
6
9
  }
7
10
  export interface TimerFeature {
8
11
  api: TimerApi;
@@ -13,5 +16,8 @@ export interface TimerFeature {
13
16
  /** Number of currently-active timers (not yet fired or cleared). */
14
17
  activeCount(): number;
15
18
  }
16
- export declare const buildTimerFeature: () => TimerFeature;
19
+ /** Reports a throwing timer callback to the script's own console (so the user
20
+ * sees it) instead of the host's stderr. */
21
+ export type TimerErrorSink = (kind: "timeout" | "interval", error: unknown) => void;
22
+ export declare const buildTimerFeature: (onError?: TimerErrorSink) => TimerFeature;
17
23
  //# sourceMappingURL=timers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"timers.d.ts","sourceRoot":"","sources":["../../../src/script/features/timers.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;IAC9E,YAAY,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;IAC/E,aAAa,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,QAAQ,CAAC;IACd,oDAAoD;IACpD,OAAO,IAAI,IAAI,CAAC;IAChB,gEAAgE;IAChE,YAAY,IAAI,MAAM,CAAC;IACvB,oEAAoE;IACpE,WAAW,IAAI,MAAM,CAAC;CACvB;AAeD,eAAO,MAAM,iBAAiB,QAAO,YAsHpC,CAAC"}
1
+ {"version":3,"file":"timers.d.ts","sourceRoot":"","sources":["../../../src/script/features/timers.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;IAC9E,YAAY,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;IAC/E,aAAa,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,iFAAiF;IACjF,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC;IAC/D,cAAc,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,QAAQ,CAAC;IACd,oDAAoD;IACpD,OAAO,IAAI,IAAI,CAAC;IAChB,gEAAgE;IAChE,YAAY,IAAI,MAAM,CAAC;IACvB,oEAAoE;IACpE,WAAW,IAAI,MAAM,CAAC;CACvB;AAeD;4CAC4C;AAC5C,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAEpF,eAAO,MAAM,iBAAiB,GAAI,UAAU,cAAc,KAAG,YAgI5D,CAAC"}
@@ -29,7 +29,7 @@ const clampDelay = (raw) => {
29
29
  return 0;
30
30
  return Math.min(n, MAX_TIMER_DELAY_MS);
31
31
  };
32
- export const buildTimerFeature = () => {
32
+ export const buildTimerFeature = (onError) => {
33
33
  const handles = new Map();
34
34
  let nextId = 1;
35
35
  let totalCreated = 0;
@@ -83,8 +83,13 @@ export const buildTimerFeature = () => {
83
83
  // to the executor's catch via Promise rejection. A timer
84
84
  // callback that throws after the script's main promise has
85
85
  // resolved is logged but doesn't blow up the host.
86
- // eslint-disable-next-line no-console
87
- console.error("Script timer callback threw:", error);
86
+ if (onError) {
87
+ onError("timeout", error);
88
+ }
89
+ else {
90
+ // eslint-disable-next-line no-console
91
+ console.error("Script timer callback threw:", error);
92
+ }
88
93
  }
89
94
  }, ms);
90
95
  handles.set(id, { hostId, kind: "timeout" });
@@ -118,8 +123,13 @@ export const buildTimerFeature = () => {
118
123
  handler(...args);
119
124
  }
120
125
  catch (error) {
121
- // eslint-disable-next-line no-console
122
- console.error("Script interval callback threw:", error);
126
+ if (onError) {
127
+ onError("interval", error);
128
+ }
129
+ else {
130
+ // eslint-disable-next-line no-console
131
+ console.error("Script interval callback threw:", error);
132
+ }
123
133
  }
124
134
  }, ms);
125
135
  handles.set(id, { hostId, kind: "interval" });
@@ -133,6 +143,8 @@ export const buildTimerFeature = () => {
133
143
  return;
134
144
  clear(numeric);
135
145
  },
146
+ setImmediate: (handler, ...args) => api.setTimeout(handler, 0, ...args),
147
+ clearImmediate: (id) => api.clearTimeout(id),
136
148
  };
137
149
  const dispose = () => {
138
150
  if (disposed)
@@ -1 +1 @@
1
- {"version":3,"file":"timers.js","sourceRoot":"","sources":["../../../src/script/features/timers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timers.js","sourceRoot":"","sources":["../../../src/script/features/timers.ts"],"names":[],"mappings":"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"}
@@ -3,15 +3,30 @@ export interface VariablesApi {
3
3
  * runs so the next layer of the same request starts from it. */
4
4
  readonly localSnapshot?: () => Record<string, string>;
5
5
  has: (key: string) => boolean;
6
- get: (key: string) => string | undefined;
7
- set: (key: string, value: unknown) => void;
6
+ get: (key: string) => unknown;
7
+ set: (key: string, value: unknown, type?: unknown) => void;
8
8
  unset: (key: string) => void;
9
- toObject: () => Record<string, string>;
9
+ clear: () => void;
10
+ toObject: () => Record<string, unknown>;
11
+ /** Callman's original resolver: unresolved `{{x}}` become empty. */
10
12
  resolve: (input: unknown) => string;
11
- replaceIn: (input: unknown) => string;
13
+ /** Postman's `replaceIn`: unresolved `{{x}}` stay as written; objects and
14
+ * arrays are walked. */
15
+ replaceIn: (input: unknown) => unknown;
12
16
  }
13
17
  export declare const buildVariablesApi: (environment: Record<string, string>, globals: Record<string, string>, options?: {
14
18
  collectionVariables?: Record<string, string>;
19
+ /** The current iteration's data row (`pm.iterationData`) — between the
20
+ * local scope and the environment. */
21
+ iterationData?: Record<string, unknown>;
22
+ /** Live, typed views of the other scopes (a value a script set keeps its
23
+ * type: pm.environment.set("n", 7) → pm.variables.get("n") === 7). When
24
+ * absent the plain string snapshots above are used. */
25
+ live?: {
26
+ environment?: () => Record<string, unknown>;
27
+ globals?: () => Record<string, unknown>;
28
+ collection?: () => Record<string, unknown>;
29
+ };
15
30
  /** Local values set by an earlier script of the same request (layered
16
31
  * runs: collection → folder → request share one local scope). */
17
32
  local?: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/script/features/variables.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,YAAY;IAC3B;qEACiE;IACjE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACzC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;CACvC;AASD,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,UAAS;IACP,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C;sEACkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3B,KACL,YA+CF,CAAC"}
1
+ {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/script/features/variables.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,YAAY;IAC3B;qEACiE;IACjE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,oEAAoE;IACpE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACpC;6BACyB;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CACxC;AASD,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,UAAS;IACP,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C;2CACuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC;;4DAEwD;IACxD,IAAI,CAAC,EAAE;QACL,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,CAAC;IACF;sEACkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3B,KACL,YA4DF,CAAC"}
@@ -15,6 +15,7 @@
15
15
  // `pm.variables.set(...)` and `pm.variables.get(...)` (a very common
16
16
  // Postman pattern) work without rewrites.
17
17
  import { resolveTemplate } from "../../variables/resolver.js";
18
+ import { lookupInRecords, replaceInValue } from "../../variables/replaceIn.js";
18
19
  const stringifyInput = (value) => {
19
20
  if (value === undefined || value === null) {
20
21
  return "";
@@ -26,14 +27,21 @@ export const buildVariablesApi = (environment, globals, options = {}) => {
26
27
  // here so they take precedence over env / globals for subsequent reads
27
28
  // in the same script execution, without polluting persistent state.
28
29
  const local = { ...(options.local ?? {}) };
30
+ // Values as the script wrote them (numbers, objects…) — `get` returns them
31
+ // unchanged inside the run; `local` is the string form handed back to hosts.
32
+ const localNative = {};
29
33
  const collection = options.collectionVariables ?? {};
34
+ const iteration = options.iterationData ?? {};
30
35
  // Precedence on read: local > environment > collection > globals —
31
36
  // Postman's documented order.
37
+ const live = options.live ?? {};
32
38
  const readMerged = () => ({
33
- ...globals,
34
- ...collection,
35
- ...environment,
39
+ ...(live.globals ? live.globals() : globals),
40
+ ...(live.collection ? live.collection() : collection),
41
+ ...(live.environment ? live.environment() : environment),
42
+ ...iteration,
36
43
  ...local,
44
+ ...localNative,
37
45
  });
38
46
  const resolve = (input) => resolveTemplate(stringifyInput(input), { env: readMerged() });
39
47
  return {
@@ -51,21 +59,29 @@ export const buildVariablesApi = (environment, globals, options = {}) => {
51
59
  const merged = readMerged();
52
60
  return merged[normalisedKey];
53
61
  },
54
- set: (key, value) => {
62
+ set: (key, value, _type) => {
55
63
  const normalisedKey = String(key ?? "").trim();
56
64
  if (!normalisedKey)
57
65
  return;
58
- local[normalisedKey] = stringifyInput(value);
66
+ local[normalisedKey] = typeof value === "object" && value !== null ? JSON.stringify(value) : stringifyInput(value);
67
+ localNative[normalisedKey] = value;
59
68
  },
60
69
  unset: (key) => {
61
70
  const normalisedKey = String(key ?? "").trim();
62
71
  if (!normalisedKey)
63
72
  return;
64
73
  delete local[normalisedKey];
74
+ delete localNative[normalisedKey];
75
+ },
76
+ clear: () => {
77
+ for (const key of Object.keys(local))
78
+ delete local[key];
79
+ for (const key of Object.keys(localNative))
80
+ delete localNative[key];
65
81
  },
66
82
  toObject: () => readMerged(),
67
83
  resolve,
68
- replaceIn: resolve,
84
+ replaceIn: (input) => replaceInValue(input, lookupInRecords(readMerged())),
69
85
  localSnapshot: () => ({ ...local }),
70
86
  };
71
87
  };
@@ -1 +1 @@
1
- {"version":3,"file":"variables.js","sourceRoot":"","sources":["../../../src/script/features/variables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"variables.js","sourceRoot":"","sources":["../../../src/script/features/variables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface ScriptVisualizerPayload {
2
+ template: string;
3
+ data: unknown;
4
+ options: Record<string, unknown>;
5
+ }
6
+ export interface VisualizerFeature {
7
+ api: {
8
+ set: (template: unknown, data?: unknown, options?: unknown) => void;
9
+ clear: () => void;
10
+ };
11
+ getData: (callback?: (error: unknown, data: unknown) => void) => void;
12
+ payload: () => ScriptVisualizerPayload | undefined;
13
+ }
14
+ export declare const buildVisualizerFeature: () => VisualizerFeature;
15
+ //# sourceMappingURL=visualizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visualizer.d.ts","sourceRoot":"","sources":["../../../src/script/features/visualizer.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE;QACH,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;QACpE,KAAK,EAAE,MAAM,IAAI,CAAC;KACnB,CAAC;IACF,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;IACtE,OAAO,EAAE,MAAM,uBAAuB,GAAG,SAAS,CAAC;CACpD;AAaD,eAAO,MAAM,sBAAsB,QAAO,iBAgCzC,CAAC"}
@@ -0,0 +1,52 @@
1
+ // pm.visualizer — Postman's "Visualize" hook. A post-response/test script
2
+ // calls `pm.visualizer.set(template, data, options)` with a Handlebars HTML
3
+ // template and its data; the HOST renders the template (sandboxed) in a
4
+ // Visualize tab. Inside a visualizer template, `pm.getData(cb)` hands the data
5
+ // back to the template's own script — that part runs in the host's renderer,
6
+ // here `pm.getData` only exists so a copied script does not throw.
7
+ const MAX_TEMPLATE_BYTES = 2 * 1024 * 1024;
8
+ const cloneJson = (value) => {
9
+ if (value === undefined)
10
+ return undefined;
11
+ try {
12
+ return JSON.parse(JSON.stringify(value));
13
+ }
14
+ catch {
15
+ throw new Error("pm.visualizer.set: data must be JSON-serializable");
16
+ }
17
+ };
18
+ export const buildVisualizerFeature = () => {
19
+ let current;
20
+ return {
21
+ api: {
22
+ set: (template, data, options) => {
23
+ if (typeof template !== "string") {
24
+ throw new TypeError("pm.visualizer.set: template must be a string");
25
+ }
26
+ if (data !== undefined && (data === null || typeof data !== "object")) {
27
+ throw new TypeError("pm.visualizer.set: data must be an object");
28
+ }
29
+ if (options !== undefined && (options === null || typeof options !== "object")) {
30
+ throw new TypeError("pm.visualizer.set: options must be an object");
31
+ }
32
+ if (template.length > MAX_TEMPLATE_BYTES) {
33
+ throw new RangeError("pm.visualizer.set: template is too large (2 MB limit)");
34
+ }
35
+ current = {
36
+ template,
37
+ data: cloneJson(data) ?? {},
38
+ options: cloneJson(options) ?? {},
39
+ };
40
+ },
41
+ clear: () => {
42
+ current = undefined;
43
+ },
44
+ },
45
+ getData: (callback) => {
46
+ if (typeof callback === "function")
47
+ callback(null, current?.data ?? {});
48
+ },
49
+ payload: () => current,
50
+ };
51
+ };
52
+ //# sourceMappingURL=visualizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visualizer.js","sourceRoot":"","sources":["../../../src/script/features/visualizer.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,4EAA4E;AAC5E,wEAAwE;AACxE,+EAA+E;AAC/E,6EAA6E;AAC7E,mEAAmE;AAiBnE,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,SAAS,GAAG,CAAC,KAAc,EAAW,EAAE;IAC5C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAsB,EAAE;IAC5D,IAAI,OAA4C,CAAC;IACjD,OAAO;QACL,GAAG,EAAE;YACH,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;gBAC/B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACjC,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;gBACtE,CAAC;gBACD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;oBACtE,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;gBACnE,CAAC;gBACD,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,EAAE,CAAC;oBAC/E,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;gBACtE,CAAC;gBACD,IAAI,QAAQ,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;oBACzC,MAAM,IAAI,UAAU,CAAC,uDAAuD,CAAC,CAAC;gBAChF,CAAC;gBACD,OAAO,GAAG;oBACR,QAAQ;oBACR,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE;oBAC3B,OAAO,EAAG,SAAS,CAAC,OAAO,CAAyC,IAAI,EAAE;iBAC3E,CAAC;YACJ,CAAC;YACD,KAAK,EAAE,GAAG,EAAE;gBACV,OAAO,GAAG,SAAS,CAAC;YACtB,CAAC;SACF;QACD,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;YACpB,IAAI,OAAO,QAAQ,KAAK,UAAU;gBAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { AbortLikeSignal } from "../scenario-runner/types.js";
2
- import type { ExecuteScriptInput, ExecuteScriptResult, ScriptCapabilities, SendRequestExecutor } from "./types.js";
2
+ import type { ExecuteScriptInput, ExecuteScriptResult, ScriptCapabilities, ScriptLogEntry, SendRequestExecutor } from "./types.js";
3
3
  import type { ScriptWorkerPool } from "./worker-pool.js";
4
4
  export interface RunScriptIsolatedOptions {
5
5
  /** Host HTTP executor for pm.sendRequest. When provided, the worker routes
@@ -7,6 +7,9 @@ export interface RunScriptIsolatedOptions {
7
7
  onSendRequest?: SendRequestExecutor;
8
8
  /** External cancellation (e.g. scenario run aborted / node timeout). */
9
9
  signal?: AbortLikeSignal;
10
+ /** Receives every console/pm.log entry as the worker produces it (also
11
+ * picked up from `capabilities.extensions.log.onEntry`). */
12
+ onLog?: (entry: ScriptLogEntry) => void;
10
13
  /** Run on a warm pooled worker (see worker-pool.ts) instead of spawning a
11
14
  * fresh Worker per call. Long-running hosts (the backend scenario worker)
12
15
  * pass one; the desktop keeps the one-shot path. */
@@ -1 +1 @@
1
- {"version":3,"file":"isolated-runner.d.ts","sourceRoot":"","sources":["../../src/script/isolated-runner.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAQzD,MAAM,WAAW,wBAAwB;IACvC;+DAC2D;IAC3D,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,wEAAwE;IACxE,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;yDAEqD;IACrD,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAChC;AAKD,eAAO,MAAM,oBAAoB,GAAI,cAAc,kBAAkB,KAAG,kBAcvE,CAAC;AAkBF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,kBAAkB,EACzB,UAAS,wBAA6B,KACrC,OAAO,CAAC,mBAAmB,CAqI7B,CAAC"}
1
+ {"version":3,"file":"isolated-runner.d.ts","sourceRoot":"","sources":["../../src/script/isolated-runner.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAQzD,MAAM,WAAW,wBAAwB;IACvC;+DAC2D;IAC3D,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,wEAAwE;IACxE,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;iEAC6D;IAC7D,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACxC;;yDAEqD;IACrD,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAChC;AAKD,eAAO,MAAM,oBAAoB,GAAI,cAAc,kBAAkB,KAAG,kBAmBvE,CAAC;AAkBF,eAAO,MAAM,iBAAiB,GAC5B,OAAO,kBAAkB,EACzB,UAAS,wBAA6B,KACrC,OAAO,CAAC,mBAAmB,CAyJ7B,CAAC"}