callman-core 1.34.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 (266) hide show
  1. package/ai-packs/feature-policy.md +1 -6
  2. package/ai-packs/pm-api.md +246 -97
  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 +7 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +5 -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 +339 -1
  19. package/dist/runner/requestRunner.js.map +1 -1
  20. package/dist/runner/runCollection.d.ts +1 -1
  21. package/dist/runner/runCollection.d.ts.map +1 -1
  22. package/dist/runner/runCollection.js +60 -7
  23. package/dist/runner/runCollection.js.map +1 -1
  24. package/dist/runner/runRequestWithDataset.d.ts.map +1 -1
  25. package/dist/runner/runRequestWithDataset.js +5 -0
  26. package/dist/runner/runRequestWithDataset.js.map +1 -1
  27. package/dist/scenario-runner/adapters/request-executor.d.ts.map +1 -1
  28. package/dist/scenario-runner/adapters/request-executor.js +7 -0
  29. package/dist/scenario-runner/adapters/request-executor.js.map +1 -1
  30. package/dist/scenario-runner/runScenario.d.ts.map +1 -1
  31. package/dist/scenario-runner/runScenario.js +4 -0
  32. package/dist/scenario-runner/runScenario.js.map +1 -1
  33. package/dist/scenario-runner/types.d.ts +11 -0
  34. package/dist/scenario-runner/types.d.ts.map +1 -1
  35. package/dist/script/chain.d.ts +56 -0
  36. package/dist/script/chain.d.ts.map +1 -0
  37. package/dist/script/chain.js +121 -0
  38. package/dist/script/chain.js.map +1 -0
  39. package/dist/script/errors.d.ts.map +1 -1
  40. package/dist/script/errors.js +6 -4
  41. package/dist/script/errors.js.map +1 -1
  42. package/dist/script/executor.d.ts.map +1 -1
  43. package/dist/script/executor.js +298 -64
  44. package/dist/script/executor.js.map +1 -1
  45. package/dist/script/features/collectionVariables.d.ts +4 -4
  46. package/dist/script/features/collectionVariables.d.ts.map +1 -1
  47. package/dist/script/features/collectionVariables.js +20 -11
  48. package/dist/script/features/collectionVariables.js.map +1 -1
  49. package/dist/script/features/environment.d.ts +4 -4
  50. package/dist/script/features/environment.d.ts.map +1 -1
  51. package/dist/script/features/environment.js +20 -11
  52. package/dist/script/features/environment.js.map +1 -1
  53. package/dist/script/features/feature-policy.d.ts +1 -1
  54. package/dist/script/features/feature-policy.d.ts.map +1 -1
  55. package/dist/script/features/feature-policy.js +2 -2
  56. package/dist/script/features/feature-policy.js.map +1 -1
  57. package/dist/script/features/info.d.ts.map +1 -1
  58. package/dist/script/features/info.js +6 -3
  59. package/dist/script/features/info.js.map +1 -1
  60. package/dist/script/features/iterationData.d.ts +12 -0
  61. package/dist/script/features/iterationData.d.ts.map +1 -0
  62. package/dist/script/features/iterationData.js +28 -0
  63. package/dist/script/features/iterationData.js.map +1 -0
  64. package/dist/script/features/legacyPostman.d.ts +14 -0
  65. package/dist/script/features/legacyPostman.d.ts.map +1 -0
  66. package/dist/script/features/legacyPostman.js +106 -0
  67. package/dist/script/features/legacyPostman.js.map +1 -0
  68. package/dist/script/features/log.d.ts +35 -8
  69. package/dist/script/features/log.d.ts.map +1 -1
  70. package/dist/script/features/log.js +343 -27
  71. package/dist/script/features/log.js.map +1 -1
  72. package/dist/script/features/tests.d.ts +7 -8
  73. package/dist/script/features/tests.d.ts.map +1 -1
  74. package/dist/script/features/tests.js +90 -64
  75. package/dist/script/features/tests.js.map +1 -1
  76. package/dist/script/features/timers.d.ts +7 -1
  77. package/dist/script/features/timers.d.ts.map +1 -1
  78. package/dist/script/features/timers.js +17 -5
  79. package/dist/script/features/timers.js.map +1 -1
  80. package/dist/script/features/variables.d.ts +25 -4
  81. package/dist/script/features/variables.d.ts.map +1 -1
  82. package/dist/script/features/variables.js +26 -9
  83. package/dist/script/features/variables.js.map +1 -1
  84. package/dist/script/features/visualizer.d.ts +15 -0
  85. package/dist/script/features/visualizer.d.ts.map +1 -0
  86. package/dist/script/features/visualizer.js +52 -0
  87. package/dist/script/features/visualizer.js.map +1 -0
  88. package/dist/script/isolated-runner.d.ts +4 -1
  89. package/dist/script/isolated-runner.d.ts.map +1 -1
  90. package/dist/script/isolated-runner.js +26 -2
  91. package/dist/script/isolated-runner.js.map +1 -1
  92. package/dist/script/layers.d.ts +46 -0
  93. package/dist/script/layers.d.ts.map +1 -0
  94. package/dist/script/layers.js +52 -0
  95. package/dist/script/layers.js.map +1 -0
  96. package/dist/script/legacy.d.ts +6 -1
  97. package/dist/script/legacy.d.ts.map +1 -1
  98. package/dist/script/legacy.js +15 -5
  99. package/dist/script/legacy.js.map +1 -1
  100. package/dist/script/pm-api-declarations.d.ts +45 -0
  101. package/dist/script/pm-api-declarations.d.ts.map +1 -0
  102. package/dist/script/pm-api-declarations.js +1963 -0
  103. package/dist/script/pm-api-declarations.js.map +1 -0
  104. package/dist/script/pm-api-metadata.d.ts +3 -1
  105. package/dist/script/pm-api-metadata.d.ts.map +1 -1
  106. package/dist/script/pm-api-metadata.js +336 -106
  107. package/dist/script/pm-api-metadata.js.map +1 -1
  108. package/dist/script/pm-api-reference.d.ts.map +1 -1
  109. package/dist/script/pm-api-reference.js +32 -7
  110. package/dist/script/pm-api-reference.js.map +1 -1
  111. package/dist/script/postman/chaiCompat.d.ts +4 -0
  112. package/dist/script/postman/chaiCompat.d.ts.map +1 -0
  113. package/dist/script/postman/chaiCompat.js +176 -0
  114. package/dist/script/postman/chaiCompat.js.map +1 -0
  115. package/dist/script/postman/cookies.d.ts +36 -0
  116. package/dist/script/postman/cookies.d.ts.map +1 -0
  117. package/dist/script/postman/cookies.js +163 -0
  118. package/dist/script/postman/cookies.js.map +1 -0
  119. package/dist/script/postman/modules.d.ts +16 -0
  120. package/dist/script/postman/modules.d.ts.map +1 -0
  121. package/dist/script/postman/modules.js +114 -0
  122. package/dist/script/postman/modules.js.map +1 -0
  123. package/dist/script/postman/proxies.d.ts +13 -0
  124. package/dist/script/postman/proxies.d.ts.map +1 -0
  125. package/dist/script/postman/proxies.js +88 -0
  126. package/dist/script/postman/proxies.js.map +1 -0
  127. package/dist/script/postman/requestAdapter.d.ts +7 -0
  128. package/dist/script/postman/requestAdapter.d.ts.map +1 -0
  129. package/dist/script/postman/requestAdapter.js +223 -0
  130. package/dist/script/postman/requestAdapter.js.map +1 -0
  131. package/dist/script/postman/responseAdapter.d.ts +5 -0
  132. package/dist/script/postman/responseAdapter.d.ts.map +1 -0
  133. package/dist/script/postman/responseAdapter.js +78 -0
  134. package/dist/script/postman/responseAdapter.js.map +1 -0
  135. package/dist/script/postman/runtime.d.ts +22 -0
  136. package/dist/script/postman/runtime.d.ts.map +1 -0
  137. package/dist/script/postman/runtime.js +122 -0
  138. package/dist/script/postman/runtime.js.map +1 -0
  139. package/dist/script/scope.d.ts +5 -1
  140. package/dist/script/scope.d.ts.map +1 -1
  141. package/dist/script/scope.js +47 -5
  142. package/dist/script/scope.js.map +1 -1
  143. package/dist/script/types.d.ts +42 -14
  144. package/dist/script/types.d.ts.map +1 -1
  145. package/dist/script/worker-entry.js +9 -0
  146. package/dist/script/worker-entry.js.map +1 -1
  147. package/dist/script/worker-pool.d.ts +3 -1
  148. package/dist/script/worker-pool.d.ts.map +1 -1
  149. package/dist/script/worker-pool.js +23 -2
  150. package/dist/script/worker-pool.js.map +1 -1
  151. package/dist/templating/generator-metadata.d.ts +1 -0
  152. package/dist/templating/generator-metadata.d.ts.map +1 -1
  153. package/dist/templating/generator-metadata.js +14 -0
  154. package/dist/templating/generator-metadata.js.map +1 -1
  155. package/dist/templating/postman-dynamic-catalog.d.ts +7 -0
  156. package/dist/templating/postman-dynamic-catalog.d.ts.map +1 -0
  157. package/dist/templating/postman-dynamic-catalog.js +126 -0
  158. package/dist/templating/postman-dynamic-catalog.js.map +1 -0
  159. package/dist/templating/postman-generators.d.ts +9 -0
  160. package/dist/templating/postman-generators.d.ts.map +1 -1
  161. package/dist/templating/postman-generators.js +10 -1
  162. package/dist/templating/postman-generators.js.map +1 -1
  163. package/dist/types/index.d.ts +44 -2
  164. package/dist/types/index.d.ts.map +1 -1
  165. package/dist/variables/envStore.d.ts +3 -0
  166. package/dist/variables/envStore.d.ts.map +1 -1
  167. package/dist/variables/envStore.js +5 -0
  168. package/dist/variables/envStore.js.map +1 -1
  169. package/dist/variables/replaceIn.d.ts +10 -0
  170. package/dist/variables/replaceIn.d.ts.map +1 -0
  171. package/dist/variables/replaceIn.js +106 -0
  172. package/dist/variables/replaceIn.js.map +1 -0
  173. package/dist/variables/resolver.d.ts.map +1 -1
  174. package/dist/variables/resolver.js +16 -2
  175. package/dist/variables/resolver.js.map +1 -1
  176. package/dist-cjs/ai/prompts/fragments.js +0 -1
  177. package/dist-cjs/ai/prompts/fragments.js.map +1 -1
  178. package/dist-cjs/ai/prompts/unified.js +1 -1
  179. package/dist-cjs/ai/prompts/unified.js.map +1 -1
  180. package/dist-cjs/ai/types.js +1 -1
  181. package/dist-cjs/ai/types.js.map +1 -1
  182. package/dist-cjs/index.js +23 -5
  183. package/dist-cjs/index.js.map +1 -1
  184. package/dist-cjs/runner/requestRunner.js +339 -1
  185. package/dist-cjs/runner/requestRunner.js.map +1 -1
  186. package/dist-cjs/runner/runCollection.js +60 -7
  187. package/dist-cjs/runner/runCollection.js.map +1 -1
  188. package/dist-cjs/runner/runRequestWithDataset.js +5 -0
  189. package/dist-cjs/runner/runRequestWithDataset.js.map +1 -1
  190. package/dist-cjs/scenario-runner/adapters/request-executor.js +7 -0
  191. package/dist-cjs/scenario-runner/adapters/request-executor.js.map +1 -1
  192. package/dist-cjs/scenario-runner/runScenario.js +4 -0
  193. package/dist-cjs/scenario-runner/runScenario.js.map +1 -1
  194. package/dist-cjs/script/chain.js +126 -0
  195. package/dist-cjs/script/chain.js.map +1 -0
  196. package/dist-cjs/script/errors.js +6 -4
  197. package/dist-cjs/script/errors.js.map +1 -1
  198. package/dist-cjs/script/executor.js +298 -64
  199. package/dist-cjs/script/executor.js.map +1 -1
  200. package/dist-cjs/script/features/collectionVariables.js +20 -11
  201. package/dist-cjs/script/features/collectionVariables.js.map +1 -1
  202. package/dist-cjs/script/features/environment.js +20 -11
  203. package/dist-cjs/script/features/environment.js.map +1 -1
  204. package/dist-cjs/script/features/feature-policy.js +2 -2
  205. package/dist-cjs/script/features/feature-policy.js.map +1 -1
  206. package/dist-cjs/script/features/info.js +6 -3
  207. package/dist-cjs/script/features/info.js.map +1 -1
  208. package/dist-cjs/script/features/iterationData.js +32 -0
  209. package/dist-cjs/script/features/iterationData.js.map +1 -0
  210. package/dist-cjs/script/features/legacyPostman.js +112 -0
  211. package/dist-cjs/script/features/legacyPostman.js.map +1 -0
  212. package/dist-cjs/script/features/log.js +347 -28
  213. package/dist-cjs/script/features/log.js.map +1 -1
  214. package/dist-cjs/script/features/tests.js +90 -64
  215. package/dist-cjs/script/features/tests.js.map +1 -1
  216. package/dist-cjs/script/features/timers.js +17 -5
  217. package/dist-cjs/script/features/timers.js.map +1 -1
  218. package/dist-cjs/script/features/variables.js +26 -9
  219. package/dist-cjs/script/features/variables.js.map +1 -1
  220. package/dist-cjs/script/features/visualizer.js +56 -0
  221. package/dist-cjs/script/features/visualizer.js.map +1 -0
  222. package/dist-cjs/script/isolated-runner.js +26 -2
  223. package/dist-cjs/script/isolated-runner.js.map +1 -1
  224. package/dist-cjs/script/layers.js +57 -0
  225. package/dist-cjs/script/layers.js.map +1 -0
  226. package/dist-cjs/script/legacy.js +20 -6
  227. package/dist-cjs/script/legacy.js.map +1 -1
  228. package/dist-cjs/script/pm-api-declarations.js +1969 -0
  229. package/dist-cjs/script/pm-api-declarations.js.map +1 -0
  230. package/dist-cjs/script/pm-api-metadata.js +336 -106
  231. package/dist-cjs/script/pm-api-metadata.js.map +1 -1
  232. package/dist-cjs/script/pm-api-reference.js +32 -7
  233. package/dist-cjs/script/pm-api-reference.js.map +1 -1
  234. package/dist-cjs/script/postman/chaiCompat.js +181 -0
  235. package/dist-cjs/script/postman/chaiCompat.js.map +1 -0
  236. package/dist-cjs/script/postman/cookies.js +170 -0
  237. package/dist-cjs/script/postman/cookies.js.map +1 -0
  238. package/dist-cjs/script/postman/modules.js +123 -0
  239. package/dist-cjs/script/postman/modules.js.map +1 -0
  240. package/dist-cjs/script/postman/proxies.js +93 -0
  241. package/dist-cjs/script/postman/proxies.js.map +1 -0
  242. package/dist-cjs/script/postman/requestAdapter.js +227 -0
  243. package/dist-cjs/script/postman/requestAdapter.js.map +1 -0
  244. package/dist-cjs/script/postman/responseAdapter.js +83 -0
  245. package/dist-cjs/script/postman/responseAdapter.js.map +1 -0
  246. package/dist-cjs/script/postman/runtime.js +132 -0
  247. package/dist-cjs/script/postman/runtime.js.map +1 -0
  248. package/dist-cjs/script/scope.js +47 -5
  249. package/dist-cjs/script/scope.js.map +1 -1
  250. package/dist-cjs/script/worker-entry.js +9 -0
  251. package/dist-cjs/script/worker-entry.js.map +1 -1
  252. package/dist-cjs/script/worker-pool.js +23 -2
  253. package/dist-cjs/script/worker-pool.js.map +1 -1
  254. package/dist-cjs/templating/generator-metadata.js +15 -1
  255. package/dist-cjs/templating/generator-metadata.js.map +1 -1
  256. package/dist-cjs/templating/postman-dynamic-catalog.js +129 -0
  257. package/dist-cjs/templating/postman-dynamic-catalog.js.map +1 -0
  258. package/dist-cjs/templating/postman-generators.js +13 -3
  259. package/dist-cjs/templating/postman-generators.js.map +1 -1
  260. package/dist-cjs/variables/envStore.js +5 -0
  261. package/dist-cjs/variables/envStore.js.map +1 -1
  262. package/dist-cjs/variables/replaceIn.js +111 -0
  263. package/dist-cjs/variables/replaceIn.js.map +1 -0
  264. package/dist-cjs/variables/resolver.js +16 -2
  265. package/dist-cjs/variables/resolver.js.map +1 -1
  266. package/package.json +12 -2
@@ -1,11 +1,93 @@
1
1
  "use strict";
2
- // Log collector for pm.log + console.{log,info,warn,error,debug}.
2
+ // Log collector for pm.log + the full `console` API (log, info, warn, error,
3
+ // debug, trace, assert, count, countReset, time, timeLog, timeEnd, group,
4
+ // groupCollapsed, groupEnd, table, dir, dirxml, clear).
5
+ //
3
6
  // Captures user-script output as structured entries so callers can render
4
7
  // them in scenario UIs / CLI reports without granting the script real
5
- // access to the host's stdio.
8
+ // access to the host's stdio. Hosts that want output while the script is
9
+ // still running (a worker that may be killed on timeout) pass
10
+ // `extensions.log = { onEntry }` and receive every entry as it is produced.
6
11
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.createSilentLogCollector = exports.createLogCollector = void 0;
8
- const stringifyArgument = (value) => {
12
+ exports.createSilentLogCollector = exports.createLogCollector = exports.formatLogArguments = exports.stringifyLogArgument = exports.registerNodeUtil = void 0;
13
+ let nodeUtil = null;
14
+ const registerNodeUtil = (util) => {
15
+ nodeUtil = util;
16
+ };
17
+ exports.registerNodeUtil = registerNodeUtil;
18
+ const inspect = (value, options) => {
19
+ if (nodeUtil)
20
+ return nodeUtil.inspect(value, options);
21
+ try {
22
+ return JSON.stringify(value) ?? String(value);
23
+ }
24
+ catch {
25
+ return String(value);
26
+ }
27
+ };
28
+ const formatWithOptions = (options, ...args) => nodeUtil ? nodeUtil.formatWithOptions(options, ...args) : args.map((entry) => (0, exports.stringifyLogArgument)(entry)).join(" ");
29
+ const INSPECT_OPTIONS = {
30
+ depth: 4,
31
+ maxArrayLength: 100,
32
+ maxStringLength: 4096,
33
+ breakLength: 100,
34
+ colors: false,
35
+ };
36
+ const isNativeError = (value) =>
37
+ // Cross-realm safe: values created inside the vm context fail
38
+ // `instanceof Error` against the host's Error.
39
+ Object.prototype.toString.call(value) === "[object Error]";
40
+ const USER_FRAME = /(?:callman-script|[\w.-]+\.script)\.js:\d+/;
41
+ // An Error's stack from inside the sandbox ends with host frames (node:vm,
42
+ // executor.js, the worker bootstrap) — noise a script author can't act on.
43
+ // Keep the message lines and the frames that point into their own script.
44
+ const userStack = (error) => {
45
+ const stack = error.stack ?? `${error.name}: ${error.message}`;
46
+ const lines = stack.split("\n");
47
+ return lines.filter((line) => !/^\s+at /.test(line) || USER_FRAME.test(line)).join("\n");
48
+ };
49
+ const isPlainContainer = (value) => {
50
+ if (value === null || typeof value !== "object") {
51
+ return false;
52
+ }
53
+ const tag = Object.prototype.toString.call(value);
54
+ if (tag === "[object Array]") {
55
+ return true;
56
+ }
57
+ if (tag !== "[object Object]") {
58
+ return false;
59
+ }
60
+ const proto = Object.getPrototypeOf(value);
61
+ return proto === null || proto.constructor?.name === "Object";
62
+ };
63
+ // JSON.stringify drops functions/symbols/undefined and throws on bigint and
64
+ // cycles. This replacer keeps them visible so `console.log({ fn, n: 1n })`
65
+ // shows what the script actually holds instead of silently losing keys.
66
+ const jsonReplacer = (_key, value) => {
67
+ switch (typeof value) {
68
+ case "function":
69
+ return `[Function: ${value.name || "anonymous"}]`;
70
+ case "symbol":
71
+ return value.toString();
72
+ case "bigint":
73
+ return `${value.toString()}n`;
74
+ case "undefined":
75
+ return "[undefined]";
76
+ default:
77
+ break;
78
+ }
79
+ if (value !== null && typeof value === "object") {
80
+ const tag = Object.prototype.toString.call(value);
81
+ if (tag === "[object Map]" || tag === "[object Set]" || tag === "[object Date]") {
82
+ return inspect(value, INSPECT_OPTIONS);
83
+ }
84
+ if (isNativeError(value)) {
85
+ return userStack(value);
86
+ }
87
+ }
88
+ return value;
89
+ };
90
+ const stringifyLogArgument = (value) => {
9
91
  if (typeof value === "string") {
10
92
  return value;
11
93
  }
@@ -15,15 +97,114 @@ const stringifyArgument = (value) => {
15
97
  if (typeof value === "undefined") {
16
98
  return "undefined";
17
99
  }
18
- if (value instanceof Error) {
19
- return value.stack ?? value.message;
100
+ if (typeof value === "bigint") {
101
+ return `${value.toString()}n`;
20
102
  }
21
- try {
22
- return JSON.stringify(value, null, 2);
103
+ if (isNativeError(value)) {
104
+ return userStack(value);
23
105
  }
24
- catch {
25
- return String(value);
106
+ if (isPlainContainer(value)) {
107
+ try {
108
+ const json = JSON.stringify(value, jsonReplacer, 2);
109
+ if (json !== undefined) {
110
+ return json;
111
+ }
112
+ }
113
+ catch {
114
+ // Circular structure etc. — fall through to util.inspect below.
115
+ }
116
+ }
117
+ return inspect(value, INSPECT_OPTIONS);
118
+ };
119
+ exports.stringifyLogArgument = stringifyLogArgument;
120
+ const FORMAT_SPECIFIER = /%[sdifjoOc%]/;
121
+ const formatLogArguments = (args) => {
122
+ if (args.length > 1 && typeof args[0] === "string" && FORMAT_SPECIFIER.test(args[0])) {
123
+ return formatWithOptions(INSPECT_OPTIONS, ...args);
124
+ }
125
+ return args.map((entry) => (0, exports.stringifyLogArgument)(entry)).join(" ");
126
+ };
127
+ exports.formatLogArguments = formatLogArguments;
128
+ // --- console.table ------------------------------------------------------
129
+ const cell = (value) => {
130
+ if (typeof value === "string") {
131
+ return inspect(value, { ...INSPECT_OPTIONS, colors: false });
132
+ }
133
+ return inspect(value, { ...INSPECT_OPTIONS, depth: 0, breakLength: Infinity });
134
+ };
135
+ const renderTable = (head, rows) => {
136
+ const widths = head.map((title, column) => Math.max(title.length, ...rows.map((row) => (row[column] ?? "").length)) + 2);
137
+ const center = (text, width) => {
138
+ const total = width - text.length;
139
+ const left = Math.floor(total / 2);
140
+ return `${" ".repeat(left)}${text}${" ".repeat(total - left)}`;
141
+ };
142
+ const line = (left, mid, right) => `${left}${widths.map((width) => "─".repeat(width)).join(mid)}${right}`;
143
+ const rowLine = (cells) => `│${cells.map((text, column) => center(text, widths[column] ?? text.length + 2)).join("│")}│`;
144
+ return [
145
+ line("┌", "┬", "┐"),
146
+ rowLine(head),
147
+ line("├", "┼", "┤"),
148
+ ...rows.map((row) => rowLine(head.map((_, column) => row[column] ?? ""))),
149
+ line("└", "┴", "┘"),
150
+ ].join("\n");
151
+ };
152
+ const formatTable = (data, columns) => {
153
+ if (data === null || typeof data !== "object") {
154
+ return null;
155
+ }
156
+ const tag = Object.prototype.toString.call(data);
157
+ const isMap = tag === "[object Map]";
158
+ const isSet = tag === "[object Set]";
159
+ let entries;
160
+ let indexHeader = "(index)";
161
+ if (isMap) {
162
+ indexHeader = "(iteration index)";
163
+ entries = Array.from(data.entries()).map(([key, value], index) => [
164
+ String(index),
165
+ { Key: key, Values: value },
166
+ ]);
167
+ }
168
+ else if (isSet) {
169
+ indexHeader = "(iteration index)";
170
+ entries = Array.from(data.values()).map((value, index) => [String(index), value]);
171
+ }
172
+ else if (Array.isArray(data)) {
173
+ entries = data.map((value, index) => [String(index), value]);
26
174
  }
175
+ else {
176
+ entries = Object.keys(data).map((key) => [
177
+ key,
178
+ data[key],
179
+ ]);
180
+ }
181
+ const wanted = Array.isArray(columns) ? columns.map(String) : null;
182
+ const keys = [];
183
+ let hasValues = false;
184
+ const records = entries.map(([, value]) => {
185
+ if (value !== null && typeof value === "object" && !isNativeError(value)) {
186
+ const record = value;
187
+ for (const key of Object.keys(record)) {
188
+ if (!keys.includes(key)) {
189
+ keys.push(key);
190
+ }
191
+ }
192
+ return record;
193
+ }
194
+ hasValues = true;
195
+ return null;
196
+ });
197
+ const shownKeys = wanted ?? keys;
198
+ const head = [indexHeader, ...shownKeys, ...(hasValues ? ["Values"] : [])];
199
+ const rows = entries.map(([index, value], rowIndex) => {
200
+ const record = records[rowIndex];
201
+ return [
202
+ index,
203
+ ...shownKeys.map((key) => record && Object.prototype.hasOwnProperty.call(record, key) ? cell(record[key]) : ""),
204
+ ...(hasValues ? [record ? "" : cell(value)] : []),
205
+ ];
206
+ });
207
+ return renderTable(head, rows);
27
208
  };
28
209
  // Hard caps so a runaway script (e.g. `while (true) { console.log("x") }`)
29
210
  // cannot exhaust host memory or produce a multi-gigabyte result payload.
@@ -32,50 +213,188 @@ const stringifyArgument = (value) => {
32
213
  // the host drowning in allocations first.
33
214
  const MAX_LOG_ENTRIES = 1000;
34
215
  const MAX_MESSAGE_LENGTH = 8192;
35
- const createLogCollector = () => {
216
+ const MAX_LABELS = 200;
217
+ const labelOf = (value) => (value === undefined ? "default" : String(value));
218
+ const monotonicNow = () => typeof performance !== "undefined" && typeof performance.now === "function"
219
+ ? performance.now()
220
+ : Date.now();
221
+ const formatDuration = (ms) => ms >= 1000 ? `${(ms / 1000).toFixed(3)}s` : `${ms.toFixed(3)}ms`;
222
+ const createLogCollector = (options = {}) => {
36
223
  const logs = [];
224
+ const counters = new Map();
225
+ const timers = new Map();
226
+ let groupDepth = 0;
37
227
  let truncated = false;
38
- const append = (level, args) => {
228
+ const push = (entry) => {
229
+ logs.push(entry);
230
+ if (options.onEntry) {
231
+ try {
232
+ options.onEntry(entry);
233
+ }
234
+ catch {
235
+ // A broken streaming sink must never fail the user's script.
236
+ }
237
+ }
238
+ };
239
+ const emit = (level, text, extra) => {
39
240
  if (logs.length >= MAX_LOG_ENTRIES) {
40
241
  if (!truncated) {
41
242
  truncated = true;
42
- logs.push({
243
+ push({
43
244
  level: "warn",
44
245
  message: `… log output truncated (limit of ${MAX_LOG_ENTRIES} entries reached)`,
45
246
  });
46
247
  }
47
248
  return;
48
249
  }
49
- let message = args.map((entry) => stringifyArgument(entry)).join(" ");
250
+ let message = text;
50
251
  if (message.length > MAX_MESSAGE_LENGTH) {
51
252
  message = `${message.slice(0, MAX_MESSAGE_LENGTH)}… (truncated)`;
52
253
  }
53
- logs.push({ level, message });
254
+ if (groupDepth > 0) {
255
+ const indent = " ".repeat(groupDepth);
256
+ message = message
257
+ .split("\n")
258
+ .map((line) => `${indent}${line}`)
259
+ .join("\n");
260
+ }
261
+ push({ level, message, ...extra });
262
+ };
263
+ const append = (level, args) => {
264
+ emit(level, (0, exports.formatLogArguments)(args));
265
+ };
266
+ const consoleApi = {
267
+ log: (...args) => append("log", args),
268
+ info: (...args) => append("info", args),
269
+ warn: (...args) => append("warn", args),
270
+ error: (...args) => append("error", args),
271
+ debug: (...args) => append("debug", args),
272
+ trace: (...args) => {
273
+ const stack = userStack(new Error()).split("\n").slice(1).join("\n");
274
+ emit("debug", `Trace${args.length > 0 ? `: ${(0, exports.formatLogArguments)(args)}` : ""}${stack ? `\n${stack}` : ""}`);
275
+ },
276
+ assert: (condition, ...args) => {
277
+ if (condition) {
278
+ return;
279
+ }
280
+ emit("error", args.length > 0 ? `Assertion failed: ${(0, exports.formatLogArguments)(args)}` : "Assertion failed");
281
+ },
282
+ count: (label) => {
283
+ const key = labelOf(label);
284
+ if (!counters.has(key) && counters.size >= MAX_LABELS) {
285
+ return;
286
+ }
287
+ const next = (counters.get(key) ?? 0) + 1;
288
+ counters.set(key, next);
289
+ emit("log", `${key}: ${next}`);
290
+ },
291
+ countReset: (label) => {
292
+ const key = labelOf(label);
293
+ if (!counters.has(key)) {
294
+ emit("warn", `Count for '${key}' does not exist`);
295
+ return;
296
+ }
297
+ counters.set(key, 0);
298
+ },
299
+ time: (label) => {
300
+ const key = labelOf(label);
301
+ if (timers.has(key)) {
302
+ emit("warn", `Label '${key}' already exists for console.time()`);
303
+ return;
304
+ }
305
+ if (timers.size >= MAX_LABELS) {
306
+ return;
307
+ }
308
+ timers.set(key, monotonicNow());
309
+ },
310
+ timeLog: (label, ...args) => {
311
+ const key = labelOf(label);
312
+ const started = timers.get(key);
313
+ if (started === undefined) {
314
+ emit("warn", `No such label '${key}' for console.timeLog()`);
315
+ return;
316
+ }
317
+ const extra = args.length > 0 ? ` ${(0, exports.formatLogArguments)(args)}` : "";
318
+ emit("log", `${key}: ${formatDuration(monotonicNow() - started)}${extra}`);
319
+ },
320
+ timeEnd: (label) => {
321
+ const key = labelOf(label);
322
+ const started = timers.get(key);
323
+ if (started === undefined) {
324
+ emit("warn", `No such label '${key}' for console.timeEnd()`);
325
+ return;
326
+ }
327
+ timers.delete(key);
328
+ emit("log", `${key}: ${formatDuration(monotonicNow() - started)}`);
329
+ },
330
+ group: (...args) => {
331
+ if (args.length > 0) {
332
+ append("log", args);
333
+ }
334
+ groupDepth += 1;
335
+ },
336
+ groupCollapsed: (...args) => {
337
+ if (args.length > 0) {
338
+ append("log", args);
339
+ }
340
+ groupDepth += 1;
341
+ },
342
+ groupEnd: () => {
343
+ groupDepth = Math.max(0, groupDepth - 1);
344
+ },
345
+ table: (data, columns) => {
346
+ const table = formatTable(data, columns);
347
+ if (table === null) {
348
+ append("log", [data]);
349
+ return;
350
+ }
351
+ emit("log", table);
352
+ },
353
+ dir: (value, dirOptions) => {
354
+ const depth = dirOptions !== null && typeof dirOptions === "object" && "depth" in dirOptions
355
+ ? (dirOptions.depth ?? null)
356
+ : 2;
357
+ emit("log", inspect(value, { ...INSPECT_OPTIONS, depth }));
358
+ },
359
+ dirxml: (...args) => append("log", args),
360
+ clear: () => {
361
+ groupDepth = 0;
362
+ emit("log", "Console was cleared", { clear: true });
363
+ },
54
364
  };
55
365
  return {
56
366
  pmLog: (...args) => append("log", args),
57
- consoleApi: {
58
- log: (...args) => append("log", args),
59
- info: (...args) => append("info", args),
60
- warn: (...args) => append("warn", args),
61
- error: (...args) => append("error", args),
62
- debug: (...args) => append("debug", args),
63
- },
367
+ consoleApi,
64
368
  logs,
65
369
  };
66
370
  };
67
371
  exports.createLogCollector = createLogCollector;
372
+ const noop = () => undefined;
68
373
  // Silent collector — used when the caller did not enable the `log` extension.
69
374
  // pm.log and console.* still need to exist on the scope (so user scripts
70
375
  // don't throw ReferenceError); they just become no-ops with no output.
71
376
  const createSilentLogCollector = () => ({
72
- pmLog: () => undefined,
377
+ pmLog: noop,
73
378
  consoleApi: {
74
- log: () => undefined,
75
- info: () => undefined,
76
- warn: () => undefined,
77
- error: () => undefined,
78
- debug: () => undefined,
379
+ log: noop,
380
+ info: noop,
381
+ warn: noop,
382
+ error: noop,
383
+ debug: noop,
384
+ trace: noop,
385
+ assert: noop,
386
+ count: noop,
387
+ countReset: noop,
388
+ time: noop,
389
+ timeLog: noop,
390
+ timeEnd: noop,
391
+ group: noop,
392
+ groupCollapsed: noop,
393
+ groupEnd: noop,
394
+ table: noop,
395
+ dir: noop,
396
+ dirxml: noop,
397
+ clear: noop,
79
398
  },
80
399
  logs: [],
81
400
  });
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/script/features/log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/script/features/log.ts"],"names":[],"mappings":"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"}