callman-core 1.5.2 → 1.7.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 (43) hide show
  1. package/dist/contract/contractValidator.d.ts +8 -1
  2. package/dist/contract/contractValidator.d.ts.map +1 -1
  3. package/dist/contract/contractValidator.js +180 -40
  4. package/dist/contract/contractValidator.js.map +1 -1
  5. package/dist/contract/pathResolver.d.ts +16 -0
  6. package/dist/contract/pathResolver.d.ts.map +1 -0
  7. package/dist/contract/pathResolver.js +199 -0
  8. package/dist/contract/pathResolver.js.map +1 -0
  9. package/dist/index.d.ts +2 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/scenario-runner/templateResolver.d.ts.map +1 -1
  14. package/dist/scenario-runner/templateResolver.js +32 -1
  15. package/dist/scenario-runner/templateResolver.js.map +1 -1
  16. package/dist/script/features/assertions.d.ts +26 -2
  17. package/dist/script/features/assertions.d.ts.map +1 -1
  18. package/dist/script/features/assertions.js +255 -57
  19. package/dist/script/features/assertions.js.map +1 -1
  20. package/dist/script/features/cryptojs.d.ts +1 -0
  21. package/dist/script/features/cryptojs.d.ts.map +1 -1
  22. package/dist/script/features/cryptojs.js +39 -0
  23. package/dist/script/features/cryptojs.js.map +1 -1
  24. package/dist/script/scope.d.ts.map +1 -1
  25. package/dist/script/scope.js +33 -0
  26. package/dist/script/scope.js.map +1 -1
  27. package/dist/types/index.d.ts +5 -0
  28. package/dist/types/index.d.ts.map +1 -1
  29. package/dist-cjs/contract/contractValidator.js +183 -41
  30. package/dist-cjs/contract/contractValidator.js.map +1 -1
  31. package/dist-cjs/contract/pathResolver.js +206 -0
  32. package/dist-cjs/contract/pathResolver.js.map +1 -0
  33. package/dist-cjs/index.js +7 -1
  34. package/dist-cjs/index.js.map +1 -1
  35. package/dist-cjs/scenario-runner/templateResolver.js +32 -1
  36. package/dist-cjs/scenario-runner/templateResolver.js.map +1 -1
  37. package/dist-cjs/script/features/assertions.js +255 -57
  38. package/dist-cjs/script/features/assertions.js.map +1 -1
  39. package/dist-cjs/script/features/cryptojs.js +39 -0
  40. package/dist-cjs/script/features/cryptojs.js.map +1 -1
  41. package/dist-cjs/script/scope.js +33 -0
  42. package/dist-cjs/script/scope.js.map +1 -1
  43. package/package.json +1 -1
@@ -8,6 +8,15 @@
8
8
  //
9
9
  // The "blocked" set is the safety floor: these names are always undefined
10
10
  // in user scripts, regardless of what the caller passes in `bindings`.
11
+ // Resolve a host-global lazily and only if it's actually a function. This
12
+ // lets us bind Node 18+ web-compat APIs (`atob`, `btoa`, `structuredClone`)
13
+ // without crashing on older runtimes that don't ship them. A missing API
14
+ // simply doesn't get added to ALLOWED_GLOBALS, mirroring the legacy
15
+ // "not exposed" behavior for that host.
16
+ const hostFn = (name) => {
17
+ const value = globalThis[name];
18
+ return typeof value === "function" ? value : undefined;
19
+ };
11
20
  const ALLOWED_GLOBALS = {
12
21
  JSON,
13
22
  Math,
@@ -37,6 +46,30 @@ const ALLOWED_GLOBALS = {
37
46
  URLSearchParams,
38
47
  TextEncoder,
39
48
  TextDecoder,
49
+ // Binary / typed-array surface — pure JS built-ins, no FS access. Lets
50
+ // scripts decode `new Uint8Array([...])` style payloads (JWT bodies,
51
+ // protobuf blobs, raw bytes from kafka) without falling back to Node-
52
+ // specific Buffer.
53
+ ArrayBuffer,
54
+ DataView,
55
+ Uint8Array,
56
+ Uint8ClampedArray,
57
+ Uint16Array,
58
+ Uint32Array,
59
+ Int8Array,
60
+ Int16Array,
61
+ Int32Array,
62
+ Float32Array,
63
+ Float64Array,
64
+ BigInt64Array,
65
+ BigUint64Array,
66
+ // Web-compat encoders. `atob`/`btoa` are standard in Node 18+; we bind
67
+ // the host implementation when available so scripts can decode base64url
68
+ // JWT payloads with no third-party shim. `structuredClone` mirrors the
69
+ // Node 17+ helper for deep-cloning Date/Map/Set/RegExp etc.
70
+ atob: hostFn("atob"),
71
+ btoa: hostFn("btoa"),
72
+ structuredClone: hostFn("structuredClone"),
40
73
  parseInt,
41
74
  parseFloat,
42
75
  encodeURIComponent,
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/script/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/script/scope.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,11 @@ export interface TestResult {
33
33
  name: string;
34
34
  status: "PASS" | "FAIL";
35
35
  message?: string;
36
+ ruleId?: string;
37
+ path?: string;
38
+ actualPath?: string;
39
+ actualValue?: unknown;
40
+ actualType?: string;
36
41
  }
37
42
  export interface ExecuteRequestInput {
38
43
  method: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateContracts = void 0;
4
- const get_js_1 = require("../utils/get.js");
3
+ exports.validateContracts = exports.normalizeContractRule = exports.evaluateContractCandidate = void 0;
4
+ const pathResolver_js_1 = require("./pathResolver.js");
5
5
  const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
6
6
  const getValueType = (value) => {
7
7
  if (value === null) {
@@ -177,59 +177,201 @@ const validateExtendedRules = (path, value, contract) => {
177
177
  }
178
178
  return null;
179
179
  };
180
- const resolveContractTarget = (response, path) => {
180
+ const toSerializableValue = (value) => {
181
+ if (value === undefined || typeof value === "function" || typeof value === "symbol") {
182
+ return null;
183
+ }
184
+ if (value === null ||
185
+ typeof value === "string" ||
186
+ typeof value === "number" ||
187
+ typeof value === "boolean") {
188
+ return value;
189
+ }
190
+ try {
191
+ return JSON.parse(JSON.stringify(value));
192
+ }
193
+ catch {
194
+ return String(value);
195
+ }
196
+ };
197
+ // Resolve a contract path against the response, fanning out across
198
+ // `[]` wildcard segments. `response.foo` paths probe the full
199
+ // response envelope (status/data/headers/duration); other paths probe
200
+ // `response.data` first and fall back to the envelope.
201
+ const resolveContractCandidates = (response, path) => {
181
202
  if (path.startsWith("response.")) {
182
- return (0, get_js_1.safeGet)({ response }, path);
203
+ return (0, pathResolver_js_1.resolveContractPath)({ response }, path);
204
+ }
205
+ const dataCandidates = (0, pathResolver_js_1.resolveContractPath)(response.data, path);
206
+ const anyExists = dataCandidates.some((candidate) => candidate.exists);
207
+ if (anyExists) {
208
+ return dataCandidates;
209
+ }
210
+ const envelopeCandidates = (0, pathResolver_js_1.resolveContractPath)(response, path);
211
+ const envelopeFound = envelopeCandidates.some((candidate) => candidate.exists);
212
+ // Return the candidate set that has the most chance of being meaningful.
213
+ // If neither set found data, prefer `data` candidates so error
214
+ // messages cite the canonical body location.
215
+ return envelopeFound ? envelopeCandidates : dataCandidates;
216
+ };
217
+ // Evaluate a single resolved candidate against a normalised contract.
218
+ // Public so callers that need per-candidate results (e.g. the desktop
219
+ // backend that highlights specific failing indices in the response
220
+ // viewer) can iterate the candidates themselves while still sharing
221
+ // the rule semantics with the validator below.
222
+ const evaluateContractCandidate = (contract, candidate, path) => evaluateCandidate(contract, candidate, path);
223
+ exports.evaluateContractCandidate = evaluateContractCandidate;
224
+ // Public wrapper around `normalizeContract` so external consumers can
225
+ // reuse the same input-shape coercion (rules.required vs top-level
226
+ // required, equals vs value, etc.) before invoking
227
+ // `evaluateContractCandidate`.
228
+ const normalizeContractRule = (contract) => normalizeContract(contract);
229
+ exports.normalizeContractRule = normalizeContractRule;
230
+ const evaluateCandidate = (contract, candidate, path) => {
231
+ const shouldExist = contract.exists ?? contract.required ?? true;
232
+ const failureLabel = candidate.actualPath || path;
233
+ if (candidate.traversalError === "expected_array") {
234
+ return {
235
+ status: "FAIL",
236
+ message: `${failureLabel} expected array but got ${getValueType(candidate.value)}`,
237
+ };
238
+ }
239
+ if (shouldExist && !candidate.exists) {
240
+ return { status: "FAIL", message: `${failureLabel} is missing` };
241
+ }
242
+ if (!shouldExist && candidate.exists) {
243
+ return { status: "FAIL", message: `${failureLabel} exists` };
244
+ }
245
+ if (!candidate.exists) {
246
+ return { status: "PASS" };
247
+ }
248
+ if (contract.type) {
249
+ const actualType = getValueType(candidate.value);
250
+ if (actualType !== contract.type) {
251
+ return {
252
+ status: "FAIL",
253
+ message: `${failureLabel} expected ${contract.type} but got ${actualType}`,
254
+ };
255
+ }
256
+ }
257
+ const extendedRulesMessage = validateExtendedRules(failureLabel, candidate.value, contract);
258
+ if (extendedRulesMessage) {
259
+ return { status: "FAIL", message: extendedRulesMessage };
183
260
  }
184
- const dataResult = (0, get_js_1.safeGet)(response.data, path);
185
- if (dataResult.exists) {
186
- return dataResult;
261
+ if (Object.prototype.hasOwnProperty.call(contract, "equals")) {
262
+ if (!isDeepEqual(candidate.value, contract.equals)) {
263
+ return {
264
+ status: "FAIL",
265
+ message: `${failureLabel} expected ${formatValue(contract.equals)} but got ${formatValue(candidate.value)}`,
266
+ };
267
+ }
268
+ }
269
+ return { status: "PASS" };
270
+ };
271
+ const buildResult = ({ name, status, message, ruleId, path, candidate, }) => {
272
+ const result = { name, status, path };
273
+ if (message) {
274
+ result.message = message;
275
+ }
276
+ if (ruleId) {
277
+ result.ruleId = ruleId;
278
+ }
279
+ if (candidate) {
280
+ result.actualPath = candidate.actualPath;
281
+ result.actualValue = toSerializableValue(candidate.value);
282
+ result.actualType = getValueType(candidate.value);
283
+ }
284
+ return result;
285
+ };
286
+ // Compute a human-readable label of the rule's expected type for use
287
+ // in PASS messages. Mirrors the backend engine's `getExpectedTypeLabel`
288
+ // so desktop / CLI / scenario reports all read the same way.
289
+ const getExpectedTypeLabel = (contract) => {
290
+ if (contract.type)
291
+ return contract.type;
292
+ const rules = contract.rules ?? {};
293
+ if (rules.min !== undefined || rules.max !== undefined)
294
+ return "number";
295
+ if (rules.minItems !== undefined || rules.maxItems !== undefined)
296
+ return "array";
297
+ if (rules.minLength !== undefined ||
298
+ rules.maxLength !== undefined ||
299
+ rules.pattern !== undefined ||
300
+ rules.enumValues !== undefined ||
301
+ rules.contains !== undefined) {
302
+ return "string";
187
303
  }
188
- return (0, get_js_1.safeGet)(response, path);
304
+ return "value";
189
305
  };
190
- const buildResult = (name, status, message) => ({
191
- name,
192
- status,
193
- ...(message ? { message } : {}),
194
- });
195
306
  const validateContracts = (contracts, response) => {
196
307
  if (!contracts || contracts.length === 0) {
197
308
  return [];
198
309
  }
199
- return contracts.map((rawContract, index) => {
310
+ // Per-candidate aggregation. For wildcard rules like `users[].id`
311
+ // we emit ONE TestResult per resolved candidate (one per array
312
+ // element). This keeps CLI / scenario reports aligned with the
313
+ // desktop response panel, which has always rendered per-index
314
+ // entries via the backend `validateResponse` engine. Concrete-path
315
+ // rules continue to produce exactly one entry.
316
+ return contracts.flatMap((rawContract, index) => {
200
317
  const contract = normalizeContract(rawContract);
318
+ const rawRuleId = isRecord(rawContract) && typeof rawContract.id === "string"
319
+ ? rawContract.id
320
+ : undefined;
201
321
  if (!contract?.path) {
202
- return buildResult(`Contract ${index + 1}`, "FAIL", "Contract must define a path or field");
322
+ return [
323
+ buildResult({
324
+ name: `Contract ${index + 1}`,
325
+ status: "FAIL",
326
+ message: "Contract must define a path or field",
327
+ ruleId: rawRuleId,
328
+ path: "",
329
+ }),
330
+ ];
203
331
  }
204
332
  const path = contract.path;
205
- const name = contract.name ?? `Contract: ${path}`;
206
- const target = resolveContractTarget(response, path);
207
- const shouldExist = contract.exists ?? contract.required ?? true;
208
- if (shouldExist && !target.exists) {
209
- return buildResult(name, "FAIL", `${path} is missing`);
210
- }
211
- if (!shouldExist && target.exists) {
212
- return buildResult(name, "FAIL", `${path} exists`);
213
- }
214
- if (!target.exists) {
215
- return buildResult(name, "PASS");
216
- }
217
- if (contract.type) {
218
- const actualType = getValueType(target.value);
219
- if (actualType !== contract.type) {
220
- return buildResult(name, "FAIL", `${path} expected ${contract.type} but got ${actualType}`);
221
- }
333
+ const candidates = resolveContractCandidates(response, path);
334
+ if (candidates.length === 0) {
335
+ return [
336
+ buildResult({
337
+ name: `Contract: ${path}`,
338
+ status: "FAIL",
339
+ message: `${path} is missing`,
340
+ ruleId: rawRuleId,
341
+ path,
342
+ }),
343
+ ];
222
344
  }
223
- const extendedRulesMessage = validateExtendedRules(path, target.value, contract);
224
- if (extendedRulesMessage) {
225
- return buildResult(name, "FAIL", extendedRulesMessage);
226
- }
227
- if (Object.prototype.hasOwnProperty.call(contract, "equals")) {
228
- if (!isDeepEqual(target.value, contract.equals)) {
229
- return buildResult(name, "FAIL", `${path} expected ${formatValue(contract.equals)} but got ${formatValue(target.value)}`);
345
+ const expectedTypeLabel = getExpectedTypeLabel(contract);
346
+ return candidates.map((candidate) => {
347
+ const outcome = evaluateCandidate(contract, candidate, path);
348
+ // Per-candidate `name` uses the actual concrete path so each
349
+ // row in the report ("Contract: data[0].id", "Contract:
350
+ // data[1].id") is uniquely identifiable.
351
+ const labelPath = candidate.actualPath || path;
352
+ const name = contract.name ?? `Contract: ${labelPath}`;
353
+ if (outcome.status === "FAIL") {
354
+ return buildResult({
355
+ name,
356
+ status: "FAIL",
357
+ message: outcome.message,
358
+ ruleId: rawRuleId,
359
+ path,
360
+ candidate,
361
+ });
230
362
  }
231
- }
232
- return buildResult(name, "PASS");
363
+ // PASS message format mirrors the backend engine — "data[0].id
364
+ // matches expected string". Stays consistent across all three
365
+ // execution surfaces.
366
+ return buildResult({
367
+ name,
368
+ status: "PASS",
369
+ message: `${labelPath} matches expected ${expectedTypeLabel}`,
370
+ ruleId: rawRuleId,
371
+ path,
372
+ candidate,
373
+ });
374
+ });
233
375
  });
234
376
  };
235
377
  exports.validateContracts = validateContracts;
@@ -1 +1 @@
1
- {"version":3,"file":"contractValidator.js","sourceRoot":"","sources":["../../src/contract/contractValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contractValidator.js","sourceRoot":"","sources":["../../src/contract/contractValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ // Wildcard-aware path resolver for contract assertions.
3
+ //
4
+ // Contract rule paths can contain `[]` segments that fan out across
5
+ // every element of an array, e.g. `users[].profile.email` against
6
+ // `{ users: [{ profile: { email: "a" } }, { profile: { email: "b" } }] }`
7
+ // resolves to two candidates (`users[0].profile.email`,
8
+ // `users[1].profile.email`). The desktop UI normalises hover-created
9
+ // rules via `generalizeContractPath` so concrete index paths become
10
+ // wildcards by the time they hit storage, meaning anything that
11
+ // validates rules MUST understand `[]`.
12
+ //
13
+ // Historically the backend `contract-rule.engine.ts` shipped its own
14
+ // wildcard-aware resolver while the shared `callman-core` validator
15
+ // used the simpler `safeGet` (concrete-index only). That divergence
16
+ // caused desktop-green rules to silently fail in scenario / CLI runs.
17
+ // This module is the single source of truth — backend engine, scenario
18
+ // adapter, and CLI runner all funnel through `resolveContractPath`.
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.normalizeContractPathKey = exports.generalizeContractPath = exports.isPlainObject = exports.summariseCandidates = exports.resolveContractPath = void 0;
21
+ const appendPath = (base, key) => base ? `${base}.${key}` : key;
22
+ // Parse a dotted path with optional `[]` wildcard and `[N]` concrete
23
+ // index suffixes. Each `.`-separated segment can have at most one
24
+ // bracket suffix; nested brackets (e.g. `matrix[0][1]`) are expanded
25
+ // into multiple internal segments. Examples:
26
+ // "users[].name" → [{users, wildcard}, {name}]
27
+ // "users[0].name" → [{users, index:0}, {name}]
28
+ // "matrix[0][1]" → [{matrix, index:0}, {"", index:1}]
29
+ // "items[]" → [{items, wildcard}]
30
+ // "[]" → [{"", wildcard}]
31
+ const parsePath = (path) => {
32
+ const segments = [];
33
+ for (const rawSegment of path.split(".")) {
34
+ if (!rawSegment) {
35
+ continue;
36
+ }
37
+ let remaining = rawSegment;
38
+ let key = "";
39
+ const headMatch = remaining.match(/^([^[]+)/);
40
+ if (headMatch) {
41
+ key = headMatch[1];
42
+ remaining = remaining.slice(key.length);
43
+ }
44
+ // No bracket suffix → plain key access.
45
+ if (remaining.length === 0) {
46
+ segments.push({ key, arrayWildcard: false, arrayIndex: null });
47
+ continue;
48
+ }
49
+ // First bracket attaches to `key` itself; subsequent brackets
50
+ // become standalone segments (no key) so they apply against the
51
+ // previously-resolved value.
52
+ let isFirstBracket = true;
53
+ while (remaining.length > 0) {
54
+ const bracketMatch = remaining.match(/^\[(\d*)\]/);
55
+ if (!bracketMatch) {
56
+ // Unrecognised suffix — treat the raw chunk as a literal key.
57
+ segments.push({
58
+ key: isFirstBracket ? key + remaining : remaining,
59
+ arrayWildcard: false,
60
+ arrayIndex: null,
61
+ });
62
+ remaining = "";
63
+ break;
64
+ }
65
+ const inside = bracketMatch[1];
66
+ const arrayWildcard = inside === "";
67
+ const arrayIndex = arrayWildcard ? null : Number(inside);
68
+ segments.push({
69
+ key: isFirstBracket ? key : "",
70
+ arrayWildcard,
71
+ arrayIndex,
72
+ });
73
+ remaining = remaining.slice(bracketMatch[0].length);
74
+ isFirstBracket = false;
75
+ }
76
+ }
77
+ return segments;
78
+ };
79
+ const isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
80
+ exports.isPlainObject = isPlainObject;
81
+ const resolveInternal = (currentValue, segments, currentPath) => {
82
+ if (segments.length === 0) {
83
+ return [
84
+ {
85
+ actualPath: currentPath,
86
+ exists: currentValue !== undefined,
87
+ value: currentValue,
88
+ },
89
+ ];
90
+ }
91
+ const [segment, ...rest] = segments;
92
+ const nextPath = segment.key ? appendPath(currentPath, segment.key) : currentPath;
93
+ // Pure bracket segment (no key) — `users[0]` parses to a key
94
+ // segment followed by a keyless segment when chained as
95
+ // `matrix[0][1]`. Applies the bracket operation against the
96
+ // already-resolved value.
97
+ if (!segment.key && (segment.arrayWildcard || segment.arrayIndex !== null)) {
98
+ return applyBracketSegment(currentValue, segment, rest, nextPath);
99
+ }
100
+ if (currentValue === undefined ||
101
+ currentValue === null ||
102
+ (typeof currentValue !== "object" && !Array.isArray(currentValue))) {
103
+ return [
104
+ {
105
+ actualPath: nextPath,
106
+ exists: false,
107
+ value: undefined,
108
+ },
109
+ ];
110
+ }
111
+ const container = currentValue;
112
+ if (!Object.prototype.hasOwnProperty.call(container, segment.key)) {
113
+ return [
114
+ {
115
+ actualPath: nextPath,
116
+ exists: false,
117
+ value: undefined,
118
+ },
119
+ ];
120
+ }
121
+ const segmentValue = container[segment.key];
122
+ if (!segment.arrayWildcard && segment.arrayIndex === null) {
123
+ return resolveInternal(segmentValue, rest, nextPath);
124
+ }
125
+ return applyBracketSegment(segmentValue, segment, rest, nextPath);
126
+ };
127
+ // Apply a bracket suffix (`[]` or `[N]`) against an already-resolved
128
+ // value. Used by both `key[...]` segments and standalone `[...]`
129
+ // segments (e.g. inside `matrix[0][1]`).
130
+ const applyBracketSegment = (segmentValue, segment, rest, nextPath) => {
131
+ if (!Array.isArray(segmentValue)) {
132
+ return [
133
+ {
134
+ actualPath: nextPath || "[]",
135
+ exists: segmentValue !== undefined,
136
+ value: segmentValue,
137
+ traversalError: "expected_array",
138
+ },
139
+ ];
140
+ }
141
+ if (segment.arrayWildcard) {
142
+ if (segmentValue.length === 0) {
143
+ return [
144
+ {
145
+ actualPath: nextPath || "[]",
146
+ exists: false,
147
+ value: undefined,
148
+ },
149
+ ];
150
+ }
151
+ return segmentValue.flatMap((item, index) => resolveInternal(item, rest, `${nextPath}[${index}]`));
152
+ }
153
+ // Concrete index — `arrayIndex` is non-null by precondition.
154
+ const index = segment.arrayIndex;
155
+ if (index < 0 || index >= segmentValue.length) {
156
+ return [
157
+ {
158
+ actualPath: `${nextPath}[${index}]`,
159
+ exists: false,
160
+ value: undefined,
161
+ },
162
+ ];
163
+ }
164
+ return resolveInternal(segmentValue[index], rest, `${nextPath}[${index}]`);
165
+ };
166
+ const resolveContractPath = (source, path) => {
167
+ const trimmed = path.trim();
168
+ if (!trimmed) {
169
+ return [
170
+ {
171
+ actualPath: "",
172
+ exists: source !== undefined,
173
+ value: source,
174
+ },
175
+ ];
176
+ }
177
+ return resolveInternal(source, parsePath(trimmed), "");
178
+ };
179
+ exports.resolveContractPath = resolveContractPath;
180
+ // Convenience wrapper: validators frequently want a single "did this
181
+ // resolve successfully" answer. Returns the first failing candidate if
182
+ // any (so error messages can cite the concrete failing index) or the
183
+ // last successful one. Validators that need every candidate (e.g. to
184
+ // run the rule across all array members) should call
185
+ // `resolveContractPath` directly.
186
+ const summariseCandidates = (candidates) => {
187
+ const firstMissing = candidates.find((candidate) => !candidate.exists) ?? null;
188
+ return {
189
+ allExist: firstMissing === null,
190
+ firstMissing,
191
+ };
192
+ };
193
+ exports.summariseCandidates = summariseCandidates;
194
+ // Canonical form for a contract rule path. The desktop UI lets users
195
+ // click on a concrete response field (e.g. `users[0].name`); to make
196
+ // the rule apply across every array element, we strip concrete
197
+ // indices into the `[]` wildcard form (`users[].name`). Shared by
198
+ // frontend rule-creation flows and any backend / CLI tooling that
199
+ // re-derives paths from telemetry, so all three runtimes (desktop
200
+ // validation, scenario adapter, CLI runner) agree on what
201
+ // `users[0].name` means once stored.
202
+ const generalizeContractPath = (path) => path.replace(/\[\d+\]/g, "[]");
203
+ exports.generalizeContractPath = generalizeContractPath;
204
+ const normalizeContractPathKey = (path) => (0, exports.generalizeContractPath)(path.trim());
205
+ exports.normalizeContractPathKey = normalizeContractPathKey;
206
+ //# sourceMappingURL=pathResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathResolver.js","sourceRoot":"","sources":["../../src/contract/pathResolver.ts"],"names":[],"mappings":";AAAA,wDAAwD;AACxD,EAAE;AACF,oEAAoE;AACpE,kEAAkE;AAClE,0EAA0E;AAC1E,wDAAwD;AACxD,qEAAqE;AACrE,oEAAoE;AACpE,gEAAgE;AAChE,wCAAwC;AACxC,EAAE;AACF,qEAAqE;AACrE,oEAAoE;AACpE,oEAAoE;AACpE,sEAAsE;AACtE,uEAAuE;AACvE,oEAAoE;;;AAkBpE,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,GAAW,EAAU,EAAE,CACvD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAEhC,qEAAqE;AACrE,kEAAkE;AAClE,qEAAqE;AACrE,6CAA6C;AAC7C,sDAAsD;AACtD,qDAAqD;AACrD,6DAA6D;AAC7D,8CAA8C;AAC9C,2CAA2C;AAC3C,MAAM,SAAS,GAAG,CAAC,IAAY,EAAiB,EAAE;IAChD,MAAM,QAAQ,GAAkB,EAAE,CAAC;IAEnC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QAED,IAAI,SAAS,GAAG,UAAU,CAAC;QAC3B,IAAI,GAAG,GAAG,EAAE,CAAC;QAEb,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACnB,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,wCAAwC;QACxC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,SAAS;QACX,CAAC;QAED,8DAA8D;QAC9D,gEAAgE;QAChE,6BAA6B;QAC7B,IAAI,cAAc,GAAG,IAAI,CAAC;QAC1B,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,8DAA8D;gBAC9D,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS;oBACjD,aAAa,EAAE,KAAK;oBACpB,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;gBACH,SAAS,GAAG,EAAE,CAAC;gBACf,MAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,aAAa,GAAG,MAAM,KAAK,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEzD,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC9B,aAAa;gBACb,UAAU;aACX,CAAC,CAAC;YAEH,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACpD,cAAc,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAoC,EAAE,CACzE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAqJ9D,sCAAa;AAnJtB,MAAM,eAAe,GAAG,CACtB,YAAqB,EACrB,QAAuB,EACvB,WAAmB,EACE,EAAE;IACvB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL;gBACE,UAAU,EAAE,WAAW;gBACvB,MAAM,EAAE,YAAY,KAAK,SAAS;gBAClC,KAAK,EAAE,YAAY;aACpB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAElF,6DAA6D;IAC7D,wDAAwD;IACxD,4DAA4D;IAC5D,0BAA0B;IAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3E,OAAO,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,IACE,YAAY,KAAK,SAAS;QAC1B,YAAY,KAAK,IAAI;QACrB,CAAC,OAAO,YAAY,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAClE,CAAC;QACD,OAAO;YACL;gBACE,UAAU,EAAE,QAAQ;gBACpB,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,SAAS;aACjB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,YAAuC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO;YACL;gBACE,UAAU,EAAE,QAAQ;gBACpB,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,SAAS;aACjB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5C,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAC1D,OAAO,eAAe,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,qEAAqE;AACrE,iEAAiE;AACjE,yCAAyC;AACzC,MAAM,mBAAmB,GAAG,CAC1B,YAAqB,EACrB,OAAoB,EACpB,IAAmB,EACnB,QAAgB,EACK,EAAE;IACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO;YACL;gBACE,UAAU,EAAE,QAAQ,IAAI,IAAI;gBAC5B,MAAM,EAAE,YAAY,KAAK,SAAS;gBAClC,KAAK,EAAE,YAAY;gBACnB,cAAc,EAAE,gBAAgB;aACjC;SACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL;oBACE,UAAU,EAAE,QAAQ,IAAI,IAAI;oBAC5B,MAAM,EAAE,KAAK;oBACb,KAAK,EAAE,SAAS;iBACjB;aACF,CAAC;QACJ,CAAC;QAED,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC1C,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,QAAQ,IAAI,KAAK,GAAG,CAAC,CACrD,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,UAAoB,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QAC9C,OAAO;YACL;gBACE,UAAU,EAAE,GAAG,QAAQ,IAAI,KAAK,GAAG;gBACnC,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,SAAS;aACjB;SACF,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEK,MAAM,mBAAmB,GAAG,CACjC,MAAe,EACf,IAAY,EACS,EAAE;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAE5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL;gBACE,UAAU,EAAE,EAAE;gBACd,MAAM,EAAE,MAAM,KAAK,SAAS;gBAC5B,KAAK,EAAE,MAAM;aACd;SACF,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC;AAjBW,QAAA,mBAAmB,uBAiB9B;AAEF,qEAAqE;AACrE,uEAAuE;AACvE,qEAAqE;AACrE,qEAAqE;AACrE,qDAAqD;AACrD,kCAAkC;AAC3B,MAAM,mBAAmB,GAAG,CACjC,UAA+B,EACgC,EAAE;IACjE,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;IAC/E,OAAO;QACL,QAAQ,EAAE,YAAY,KAAK,IAAI;QAC/B,YAAY;KACb,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,mBAAmB,uBAQ9B;AAIF,qEAAqE;AACrE,qEAAqE;AACrE,+DAA+D;AAC/D,kEAAkE;AAClE,kEAAkE;AAClE,kEAAkE;AAClE,0DAA0D;AAC1D,qCAAqC;AAC9B,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAU,EAAE,CAC7D,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AADpB,QAAA,sBAAsB,0BACF;AAE1B,MAAM,wBAAwB,GAAG,CAAC,IAAY,EAAU,EAAE,CAC/D,IAAA,8BAAsB,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AADzB,QAAA,wBAAwB,4BACC"}