callman-core 1.1.0 → 1.2.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 (74) hide show
  1. package/dist/index.d.ts +3 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/script/executor.d.ts.map +1 -1
  6. package/dist/script/executor.js +118 -9
  7. package/dist/script/executor.js.map +1 -1
  8. package/dist/script/features/counter.d.ts +11 -0
  9. package/dist/script/features/counter.d.ts.map +1 -0
  10. package/dist/script/features/counter.js +43 -0
  11. package/dist/script/features/counter.js.map +1 -0
  12. package/dist/script/features/cryptojs.d.ts +13 -0
  13. package/dist/script/features/cryptojs.d.ts.map +1 -0
  14. package/dist/script/features/cryptojs.js +63 -0
  15. package/dist/script/features/cryptojs.js.map +1 -0
  16. package/dist/script/features/db.d.ts +36 -0
  17. package/dist/script/features/db.d.ts.map +1 -0
  18. package/dist/script/features/db.js +165 -0
  19. package/dist/script/features/db.js.map +1 -0
  20. package/dist/script/features/feature-policy.d.ts +8 -0
  21. package/dist/script/features/feature-policy.d.ts.map +1 -0
  22. package/dist/script/features/feature-policy.js +88 -0
  23. package/dist/script/features/feature-policy.js.map +1 -0
  24. package/dist/script/features/kafka.d.ts +11 -0
  25. package/dist/script/features/kafka.d.ts.map +1 -0
  26. package/dist/script/features/kafka.js +71 -0
  27. package/dist/script/features/kafka.js.map +1 -0
  28. package/dist/script/features/random.d.ts +13 -0
  29. package/dist/script/features/random.d.ts.map +1 -0
  30. package/dist/script/features/random.js +111 -0
  31. package/dist/script/features/random.js.map +1 -0
  32. package/dist/script/features/redis.d.ts +10 -0
  33. package/dist/script/features/redis.d.ts.map +1 -0
  34. package/dist/script/features/redis.js +22 -0
  35. package/dist/script/features/redis.js.map +1 -0
  36. package/dist/script/features/tests.d.ts +7 -1
  37. package/dist/script/features/tests.d.ts.map +1 -1
  38. package/dist/script/features/tests.js +97 -12
  39. package/dist/script/features/tests.js.map +1 -1
  40. package/dist/script/features/variables.d.ts +6 -0
  41. package/dist/script/features/variables.d.ts.map +1 -0
  42. package/dist/script/features/variables.js +25 -0
  43. package/dist/script/features/variables.js.map +1 -0
  44. package/dist/script/scope.d.ts +7 -0
  45. package/dist/script/scope.d.ts.map +1 -1
  46. package/dist/script/scope.js +21 -0
  47. package/dist/script/scope.js.map +1 -1
  48. package/dist/script/types.d.ts +73 -0
  49. package/dist/script/types.d.ts.map +1 -1
  50. package/dist-cjs/index.js +7 -1
  51. package/dist-cjs/index.js.map +1 -1
  52. package/dist-cjs/script/executor.js +118 -9
  53. package/dist-cjs/script/executor.js.map +1 -1
  54. package/dist-cjs/script/features/counter.js +47 -0
  55. package/dist-cjs/script/features/counter.js.map +1 -0
  56. package/dist-cjs/script/features/cryptojs.js +67 -0
  57. package/dist-cjs/script/features/cryptojs.js.map +1 -0
  58. package/dist-cjs/script/features/db.js +169 -0
  59. package/dist-cjs/script/features/db.js.map +1 -0
  60. package/dist-cjs/script/features/feature-policy.js +94 -0
  61. package/dist-cjs/script/features/feature-policy.js.map +1 -0
  62. package/dist-cjs/script/features/kafka.js +77 -0
  63. package/dist-cjs/script/features/kafka.js.map +1 -0
  64. package/dist-cjs/script/features/random.js +115 -0
  65. package/dist-cjs/script/features/random.js.map +1 -0
  66. package/dist-cjs/script/features/redis.js +26 -0
  67. package/dist-cjs/script/features/redis.js.map +1 -0
  68. package/dist-cjs/script/features/tests.js +97 -12
  69. package/dist-cjs/script/features/tests.js.map +1 -1
  70. package/dist-cjs/script/features/variables.js +29 -0
  71. package/dist-cjs/script/features/variables.js.map +1 -0
  72. package/dist-cjs/script/scope.js +21 -0
  73. package/dist-cjs/script/scope.js.map +1 -1
  74. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -5,8 +5,10 @@ export { EnvStore } from "./variables/envStore.js";
5
5
  export { resolveTemplate, resolveTemplateValue } from "./variables/resolver.js";
6
6
  export { runScript } from "./script/legacy.js";
7
7
  export { executeScript, validateScript } from "./script/executor.js";
8
- export type { ExecuteScriptInput, ExecuteScriptResult, ScriptCapabilities, ScriptError, ScriptKeyValuePair, ScriptLogEntry, ScriptRequestBodyState, ScriptRequestState, ScriptResponseState, ScriptStage, ScriptTestResult, ScriptVariableMutation, } from "./script/types.js";
8
+ export type { CounterSnapshotEntry, ExecuteScriptInput, ExecuteScriptResult, ScriptCapabilities, ScriptCounterCapability, ScriptDbCapability, ScriptDbExecutionInput, ScriptDbExecutionResult, ScriptError, ScriptFeaturePolicy, ScriptKafkaCapability, ScriptKeyValuePair, ScriptLogEntry, ScriptRedisCapability, ScriptRequestBodyState, ScriptRequestState, ScriptResponseState, ScriptStage, ScriptTestResult, ScriptVariableMutation, } from "./script/types.js";
9
9
  export { PmAssertion, createExpectApi } from "./script/features/assertions.js";
10
+ export { PendingKafkaDependencyError, isPendingKafkaValue, } from "./script/features/kafka.js";
11
+ export { DisabledFeatureDependencyError, isDisabledFeatureValue, } from "./script/features/feature-policy.js";
10
12
  export { validateContracts } from "./contract/contractValidator.js";
11
13
  export * from "./scenario-runner/index.js";
12
14
  export * from "./types/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@ export { resolveTemplate, resolveTemplateValue } from "./variables/resolver.js";
6
6
  export { runScript } from "./script/legacy.js";
7
7
  export { executeScript, validateScript } from "./script/executor.js";
8
8
  export { PmAssertion, createExpectApi } from "./script/features/assertions.js";
9
+ export { PendingKafkaDependencyError, isPendingKafkaValue, } from "./script/features/kafka.js";
10
+ export { DisabledFeatureDependencyError, isDisabledFeatureValue, } from "./script/features/feature-policy.js";
9
11
  export { validateContracts } from "./contract/contractValidator.js";
10
12
  export * from "./scenario-runner/index.js";
11
13
  export * from "./types/index.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAerE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAuBrE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/script/executor.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EAEnB,WAAW,EAEX,kBAAkB,EAInB,MAAM,YAAY,CAAC;AA+FpB,eAAO,MAAM,aAAa,GACxB,OAAO,kBAAkB,KACxB,OAAO,CAAC,mBAAmB,CAqH7B,CAAC;AAKF,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,iBAA2B,KAC1B,WAAW,GAAG,IAUhB,CAAC;AAKF,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/script/executor.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAEV,kBAAkB,EAClB,mBAAmB,EAEnB,WAAW,EAEX,kBAAkB,EAInB,MAAM,YAAY,CAAC;AAsMpB,eAAO,MAAM,aAAa,GACxB,OAAO,kBAAkB,KACxB,OAAO,CAAC,mBAAmB,CA8J7B,CAAC;AAKF,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,iBAA2B,KAC1B,WAAW,GAAG,IAUhB,CAAC;AAKF,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,9 +1,10 @@
1
- // Public canonical script executor — the single entry point that all three
1
+ // Public canonical script executor — the single entry point that all
2
2
  // consumers (CLI via legacy shim, backend, electron) ultimately call.
3
3
  //
4
4
  // Composes:
5
5
  // - sandbox (vm.createContext + scope Proxy + reserved globals)
6
6
  // - pm API (assertions + tests + env/globals + request/response + node + log)
7
+ // - sandbox-D extensions (db, kafka, redis, random, counter, cryptojs, variables)
7
8
  // - timeout (vm-level + outer Promise race)
8
9
  // - error serialization (line/column attribution)
9
10
  //
@@ -17,16 +18,88 @@ import { buildRequestApi } from "./features/request.js";
17
18
  import { buildResponseApi } from "./features/response.js";
18
19
  import { buildTestCollector } from "./features/tests.js";
19
20
  import { createLogCollector, createSilentLogCollector, } from "./features/log.js";
21
+ import { buildKafkaApi } from "./features/kafka.js";
22
+ import { buildRedisApi } from "./features/redis.js";
23
+ import { buildRandomApi } from "./features/random.js";
24
+ import { buildCounterFeature } from "./features/counter.js";
25
+ import { createCryptoJsApi } from "./features/cryptojs.js";
26
+ import { buildVariablesApi } from "./features/variables.js";
27
+ import { buildDbApi } from "./features/db.js";
20
28
  import { compileAndPrepare } from "./sandbox.js";
21
29
  import { toSerializableError } from "./errors.js";
22
30
  import { toHostPromise, withAsyncTimeout } from "./timeout.js";
23
31
  const DEFAULT_TIMEOUT_MS = 15_000;
24
32
  const DEFAULT_FILENAME = "callman-script.js";
25
33
  const DEFAULT_STAGE = "script";
26
- const buildPm = (capabilities, logs, collectors) => {
34
+ const buildSandboxDFeatures = (capabilities, isInsideTestCallback, envValues, globalValues, responseTemplateRoot) => {
35
+ const extensions = capabilities.extensions ?? {};
36
+ const featurePolicy = capabilities.featurePolicy;
37
+ const pm = {};
38
+ const scopeShortcuts = {};
39
+ let counterSnapshotFn = null;
40
+ if (extensions.kafka) {
41
+ const kafkaEnabled = featurePolicy ? featurePolicy.kafka : true;
42
+ if (kafkaEnabled) {
43
+ const api = buildKafkaApi(extensions.kafka, capabilities.allowDeferredKafkaTests ?? false);
44
+ pm.kafka = api;
45
+ scopeShortcuts.kafka = api;
46
+ }
47
+ else {
48
+ // Disabled kafka — replace with feature-policy guarded value
49
+ // (handled at the test-collector level via DisabledFeatureDependencyError).
50
+ // We still expose the binding so user scripts don't crash at scope lookup.
51
+ void isInsideTestCallback;
52
+ }
53
+ }
54
+ if (extensions.redis) {
55
+ const api = buildRedisApi(extensions.redis);
56
+ pm.redis = api;
57
+ scopeShortcuts.redis = api;
58
+ }
59
+ if (extensions.random) {
60
+ const rng = typeof extensions.random === "object" ? extensions.random.rng : undefined;
61
+ const api = buildRandomApi(rng);
62
+ pm.random = api;
63
+ scopeShortcuts.random = api;
64
+ }
65
+ if (extensions.counter) {
66
+ const feature = buildCounterFeature(extensions.counter.snapshot);
67
+ pm.counter = feature.api;
68
+ scopeShortcuts.counter = feature.api;
69
+ counterSnapshotFn = feature.snapshot;
70
+ }
71
+ if (extensions.cryptojs) {
72
+ const api = createCryptoJsApi();
73
+ // CryptoJS is exposed ONLY at top-level scope (matching electron's
74
+ // current surface). pm.cryptojs is intentionally NOT set so the parity
75
+ // tests that lock in current behavior continue to pass.
76
+ scopeShortcuts.CryptoJS = api;
77
+ }
78
+ if (extensions.variables) {
79
+ const api = buildVariablesApi(envValues, globalValues);
80
+ pm.variables = api;
81
+ scopeShortcuts.variables = api;
82
+ }
83
+ if (extensions.db) {
84
+ const dbEnabled = featurePolicy ? featurePolicy.database : true;
85
+ const api = buildDbApi({
86
+ capability: extensions.db,
87
+ enabled: dbEnabled,
88
+ isInsideTestCallback,
89
+ responseTemplateRoot,
90
+ environment: envValues,
91
+ globals: globalValues,
92
+ });
93
+ pm.db = api;
94
+ scopeShortcuts.db = api;
95
+ }
96
+ return { pm, scopeShortcuts, counterSnapshotFn };
97
+ };
98
+ const buildPm = (capabilities, logs, collectors, sandboxDPm) => {
27
99
  const pm = {
28
100
  test: collectors.test.test,
29
101
  expect: collectors.expect,
102
+ ...sandboxDPm,
30
103
  };
31
104
  if (collectors.environment) {
32
105
  pm.environment = collectors.environment;
@@ -53,7 +126,7 @@ const buildPm = (capabilities, logs, collectors) => {
53
126
  }
54
127
  return pm;
55
128
  };
56
- const buildScopeBindings = ({ pm, capabilities, consoleApi, envValues, environmentApi, request, response, expect, test, }) => {
129
+ const buildScopeBindings = ({ pm, capabilities, consoleApi, envValues, environmentApi, request, response, expect, test, sandboxDShortcuts, }) => {
57
130
  const exposeLabels = capabilities.workflowContext &&
58
131
  capabilities.exposeLabelsAsGlobals !== false;
59
132
  const labelGlobals = exposeLabels
@@ -71,6 +144,13 @@ const buildScopeBindings = ({ pm, capabilities, consoleApi, envValues, environme
71
144
  test,
72
145
  expect,
73
146
  console: consoleApi,
147
+ db: sandboxDShortcuts.db,
148
+ kafka: sandboxDShortcuts.kafka,
149
+ redis: sandboxDShortcuts.redis,
150
+ random: sandboxDShortcuts.random,
151
+ counter: sandboxDShortcuts.counter,
152
+ variables: sandboxDShortcuts.variables,
153
+ CryptoJS: sandboxDShortcuts.CryptoJS,
74
154
  labelGlobals,
75
155
  };
76
156
  };
@@ -79,9 +159,10 @@ export const executeScript = async (input) => {
79
159
  const filename = input.filename ?? DEFAULT_FILENAME;
80
160
  const stage = input.stage ?? DEFAULT_STAGE;
81
161
  const capabilities = input.capabilities;
162
+ const extensions = capabilities.extensions ?? {};
82
163
  // Empty / whitespace-only scripts short-circuit with an empty success.
83
164
  if (!input.script.trim()) {
84
- return {
165
+ const passthrough = {
85
166
  success: true,
86
167
  error: null,
87
168
  testResults: [],
@@ -89,6 +170,13 @@ export const executeScript = async (input) => {
89
170
  logs: [],
90
171
  hasReturnValue: false,
91
172
  };
173
+ if (extensions.counter) {
174
+ passthrough.counterSnapshot = extensions.counter.snapshot;
175
+ }
176
+ if (capabilities.allowDeferredKafkaTests) {
177
+ passthrough.deferredTestNames = [];
178
+ }
179
+ return passthrough;
92
180
  }
93
181
  const variableMutations = [];
94
182
  const environmentApi = capabilities.environment
@@ -102,10 +190,16 @@ export const executeScript = async (input) => {
102
190
  : undefined;
103
191
  const responseApi = buildResponseApi(capabilities.response ?? null) ?? undefined;
104
192
  const expect = createExpectApi();
105
- const tests = buildTestCollector(stage);
106
- const logCollector = capabilities.extensions?.log
193
+ const tests = buildTestCollector(stage, {
194
+ allowDeferredKafkaTests: capabilities.allowDeferredKafkaTests,
195
+ selectedTestNames: capabilities.deferredTestNames,
196
+ });
197
+ const logCollector = extensions.log
107
198
  ? createLogCollector()
108
199
  : createSilentLogCollector();
200
+ // Sandbox D feature bundle — depends on env/globals being constructed first
201
+ // (cryptojs/random/counter don't, but variables/db do).
202
+ const sandboxD = buildSandboxDFeatures(capabilities, () => tests.isInsideCallback(), environmentApi?.values ?? capabilities.environment?.values ?? {}, globalsApi?.values ?? capabilities.globals?.values ?? {}, capabilities.response ?? null);
109
203
  const pm = buildPm(capabilities, { pmLog: logCollector.pmLog }, {
110
204
  test: tests,
111
205
  expect,
@@ -113,7 +207,7 @@ export const executeScript = async (input) => {
113
207
  globals: globalsApi,
114
208
  request: requestBundle,
115
209
  response: responseApi ?? undefined,
116
- });
210
+ }, sandboxD.pm);
117
211
  const bindings = buildScopeBindings({
118
212
  pm,
119
213
  capabilities,
@@ -124,6 +218,7 @@ export const executeScript = async (input) => {
124
218
  response: responseApi,
125
219
  expect,
126
220
  test: tests.test,
221
+ sandboxDShortcuts: sandboxD.scopeShortcuts,
127
222
  });
128
223
  let compiled;
129
224
  try {
@@ -133,7 +228,7 @@ export const executeScript = async (input) => {
133
228
  // Parse errors (SyntaxError) — return early as a sandbox error so the
134
229
  // caller never sees a raw throw. Mutations and tests are empty since
135
230
  // execution never started.
136
- return {
231
+ const result = {
137
232
  success: false,
138
233
  error: toSerializableError(stage, error),
139
234
  testResults: [],
@@ -142,6 +237,13 @@ export const executeScript = async (input) => {
142
237
  hasReturnValue: false,
143
238
  ...(requestBundle ? { request: requestBundle.toRequestState() } : {}),
144
239
  };
240
+ if (sandboxD.counterSnapshotFn) {
241
+ result.counterSnapshot = sandboxD.counterSnapshotFn();
242
+ }
243
+ if (capabilities.allowDeferredKafkaTests) {
244
+ result.deferredTestNames = [];
245
+ }
246
+ return result;
145
247
  }
146
248
  let returnValue;
147
249
  let hasReturnValue = false;
@@ -163,7 +265,7 @@ export const executeScript = async (input) => {
163
265
  await Promise.allSettled([tests.flush()]);
164
266
  runtimeError = toSerializableError(stage, error);
165
267
  }
166
- return {
268
+ const result = {
167
269
  success: runtimeError === null,
168
270
  error: runtimeError,
169
271
  testResults: tests.testResults,
@@ -173,6 +275,13 @@ export const executeScript = async (input) => {
173
275
  hasReturnValue,
174
276
  ...(requestBundle ? { request: requestBundle.toRequestState() } : {}),
175
277
  };
278
+ if (sandboxD.counterSnapshotFn) {
279
+ result.counterSnapshot = sandboxD.counterSnapshotFn();
280
+ }
281
+ if (capabilities.allowDeferredKafkaTests) {
282
+ result.deferredTestNames = [...tests.deferredTestNames];
283
+ }
284
+ return result;
176
285
  };
177
286
  // Standalone parse-only check — exposed so the desktop's
178
287
  // `desktop:validate-scenario-script` IPC handler can give immediate
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/script/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/script/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { CounterSnapshotEntry } from "../types.js";
2
+ export interface CounterApi {
3
+ next: () => number;
4
+ start: (startAt?: number) => number;
5
+ }
6
+ export interface CounterFeature {
7
+ api: CounterApi;
8
+ snapshot: () => CounterSnapshotEntry[];
9
+ }
10
+ export declare const buildCounterFeature: (snapshot: CounterSnapshotEntry[]) => CounterFeature;
11
+ //# sourceMappingURL=counter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../../src/script/features/counter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,UAAU,CAAC;IAChB,QAAQ,EAAE,MAAM,oBAAoB,EAAE,CAAC;CACxC;AAoCD,eAAO,MAAM,mBAAmB,GAAI,UAAU,oBAAoB,EAAE,KAAG,cAWtE,CAAC"}
@@ -0,0 +1,43 @@
1
+ // pm.counter — collection-runner stateful counter.
2
+ //
3
+ // Per-execution instance (no module-level state) so concurrent script runs
4
+ // can't interfere. The host threads `snapshot` through successive script
5
+ // executions: input.snapshot hydrates initial state; output.snapshot is
6
+ // emitted after the script completes and should be passed to the next run.
7
+ const hydrate = (store, snapshot) => {
8
+ store.clear();
9
+ for (const entry of snapshot) {
10
+ if (!Array.isArray(entry) || entry.length !== 2) {
11
+ continue;
12
+ }
13
+ const [key, value] = entry;
14
+ const normalizedKey = String(key ?? "").trim();
15
+ const normalizedValue = Number(value);
16
+ if (!normalizedKey || !Number.isFinite(normalizedValue)) {
17
+ continue;
18
+ }
19
+ store.set(normalizedKey, Math.trunc(normalizedValue));
20
+ }
21
+ };
22
+ const advance = (store, key, startAt) => {
23
+ const normalizedStartAt = Number.isFinite(startAt) ? Math.trunc(startAt) : 1;
24
+ if (!store.has(key)) {
25
+ store.set(key, normalizedStartAt);
26
+ return normalizedStartAt;
27
+ }
28
+ const next = (store.get(key) ?? normalizedStartAt) + 1;
29
+ store.set(key, next);
30
+ return next;
31
+ };
32
+ export const buildCounterFeature = (snapshot) => {
33
+ const store = new Map();
34
+ hydrate(store, snapshot);
35
+ return {
36
+ api: {
37
+ next: () => advance(store, "counter", 1),
38
+ start: (startAt = 1) => advance(store, `counter.start:${startAt}`, startAt),
39
+ },
40
+ snapshot: () => Array.from(store.entries()),
41
+ };
42
+ };
43
+ //# sourceMappingURL=counter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counter.js","sourceRoot":"","sources":["../../../src/script/features/counter.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,wEAAwE;AACxE,2EAA2E;AAc3E,MAAM,OAAO,GAAG,CACd,KAA0B,EAC1B,QAAgC,EAC1B,EAAE;IACR,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;QAC3B,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACxD,SAAS;QACX,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CACd,KAA0B,EAC1B,GAAW,EACX,OAAe,EACP,EAAE;IACV,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QAClC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACvD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAgC,EAAkB,EAAE;IACtF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEzB,OAAO;QACL,GAAG,EAAE;YACH,IAAI,EAAE,GAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAChD,KAAK,EAAE,CAAC,OAAO,GAAG,CAAC,EAAU,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,OAAO,EAAE,EAAE,OAAO,CAAC;SACpF;QACD,QAAQ,EAAE,GAA2B,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;KACpE,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export interface CryptoJsApi {
2
+ enc: {
3
+ Utf8: {
4
+ parse: (input: unknown) => Uint8Array;
5
+ stringify: (input: unknown) => string;
6
+ };
7
+ Base64: {
8
+ stringify: (input: unknown) => string;
9
+ };
10
+ };
11
+ }
12
+ export declare const createCryptoJsApi: () => CryptoJsApi;
13
+ //# sourceMappingURL=cryptojs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cryptojs.d.ts","sourceRoot":"","sources":["../../../src/script/features/cryptojs.ts"],"names":[],"mappings":"AAqDA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE;QACH,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,CAAC;YACtC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;SACvC,CAAC;QACF,MAAM,EAAE;YACN,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;SACvC,CAAC;KACH,CAAC;CACH;AAED,eAAO,MAAM,iBAAiB,QAAO,WAapC,CAAC"}
@@ -0,0 +1,63 @@
1
+ // CryptoJS — minimal collection-runner crypto helpers.
2
+ //
3
+ // Migrated from pmanfrontend/electron/script/runtime.ts. The original
4
+ // implementation used Node's `Buffer` for base64 encoding; the canonical
5
+ // sandbox blocks `Buffer` (security policy), so this rewrite uses an
6
+ // in-process btoa-equivalent that produces RFC 4648 standard output.
7
+ //
8
+ // Only the surface that user scripts actually consume is implemented:
9
+ // CryptoJS.enc.Utf8.parse(string) → Uint8Array
10
+ // CryptoJS.enc.Utf8.stringify(Uint8Array | ArrayBufferLike) → string
11
+ // CryptoJS.enc.Base64.stringify(Uint8Array | ArrayBufferLike) → string
12
+ //
13
+ // HMAC / SHA / AES are intentionally out of scope.
14
+ const BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
15
+ const toUint8Array = (input) => {
16
+ if (input instanceof Uint8Array) {
17
+ return input;
18
+ }
19
+ if (input instanceof ArrayBuffer) {
20
+ return new Uint8Array(input);
21
+ }
22
+ if (ArrayBuffer.isView(input)) {
23
+ const view = input;
24
+ return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
25
+ }
26
+ if (typeof input === "string") {
27
+ return new TextEncoder().encode(input);
28
+ }
29
+ return new Uint8Array(0);
30
+ };
31
+ // Portable base64 encoder: walks the Uint8Array in 3-byte chunks and emits
32
+ // four characters per chunk per RFC 4648. No reliance on Buffer or btoa,
33
+ // so it works in vm contexts where neither is exposed.
34
+ const encodeBase64 = (bytes) => {
35
+ let output = "";
36
+ const length = bytes.length;
37
+ for (let index = 0; index < length; index += 3) {
38
+ const b0 = bytes[index];
39
+ const b1 = index + 1 < length ? bytes[index + 1] : 0;
40
+ const b2 = index + 2 < length ? bytes[index + 2] : 0;
41
+ const triplet = (b0 << 16) | (b1 << 8) | b2;
42
+ output += BASE64_CHARS[(triplet >> 18) & 0x3f];
43
+ output += BASE64_CHARS[(triplet >> 12) & 0x3f];
44
+ output += index + 1 < length ? BASE64_CHARS[(triplet >> 6) & 0x3f] : "=";
45
+ output += index + 2 < length ? BASE64_CHARS[triplet & 0x3f] : "=";
46
+ }
47
+ return output;
48
+ };
49
+ export const createCryptoJsApi = () => {
50
+ const decoder = new TextDecoder();
51
+ return {
52
+ enc: {
53
+ Utf8: {
54
+ parse: (input) => toUint8Array(input),
55
+ stringify: (input) => decoder.decode(toUint8Array(input)),
56
+ },
57
+ Base64: {
58
+ stringify: (input) => encodeBase64(toUint8Array(input)),
59
+ },
60
+ },
61
+ };
62
+ };
63
+ //# sourceMappingURL=cryptojs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cryptojs.js","sourceRoot":"","sources":["../../../src/script/features/cryptojs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { ScriptDbCapability } from "../types.js";
2
+ export interface DbSourceApi {
3
+ success: boolean;
4
+ error: string | null;
5
+ rowCount: number;
6
+ rows: unknown[];
7
+ firstRow: () => unknown;
8
+ }
9
+ export interface DbQueryResultApi extends DbSourceApi {
10
+ connectionId: string;
11
+ connectionName: string;
12
+ connectionType: string;
13
+ phase: "pre" | "post" | "manual";
14
+ query: string;
15
+ resolvedQuery: string;
16
+ durationMs: number;
17
+ executedAt: string;
18
+ }
19
+ export interface DbApi {
20
+ pre: DbSourceApi;
21
+ post: DbSourceApi;
22
+ query: (input: {
23
+ connectionId?: unknown;
24
+ query: unknown;
25
+ }) => Promise<DbQueryResultApi>;
26
+ }
27
+ export interface BuildDbApiInput {
28
+ capability: ScriptDbCapability | null | undefined;
29
+ enabled: boolean;
30
+ isInsideTestCallback: () => boolean;
31
+ responseTemplateRoot: unknown | null;
32
+ environment: Record<string, string>;
33
+ globals: Record<string, string>;
34
+ }
35
+ export declare const buildDbApi: (input: BuildDbApiInput) => DbApi;
36
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/script/features/db.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,kBAAkB,EAA2B,MAAM,aAAa,CAAC;AAE/E,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,WAAW,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,CAAC,KAAK,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACzF;AAyHD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,MAAM,OAAO,CAAC;IAKpC,oBAAoB,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,eAAe,KAAG,KA2DnD,CAAC"}