@redocly/respect-core 2.28.1 → 2.29.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"check-success-criteria.d.ts","sourceRoot":"","sources":["../../../../src/modules/flow-runner/success-criteria/check-success-criteria.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EAEL,IAAI,EACJ,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAW3B,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,IAAI,EACJ,QAAQ,EAAE,YAAiB,EAC3B,GAAG,GACJ,EAAE;IACD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,GAAG,EAAE,WAAW,CAAC;CAClB,GAAG,KAAK,EAAE,CAoFV"}
1
+ {"version":3,"file":"check-success-criteria.d.ts","sourceRoot":"","sources":["../../../../src/modules/flow-runner/success-criteria/check-success-criteria.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EAEL,IAAI,EACJ,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAW3B,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,IAAI,EACJ,QAAQ,EAAE,YAAiB,EAC3B,GAAG,GACJ,EAAE;IACD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,GAAG,EAAE,WAAW,CAAC;CAClB,GAAG,KAAK,EAAE,CAyFV"}
@@ -50,7 +50,12 @@ export function checkCriteria({ workflowId, step, criteria: criteriaList = [], c
50
50
  const data = evaluateRuntimeExpression(context, criteriaContext, ctx.options.logger);
51
51
  checks.push({
52
52
  name: CHECKS.SUCCESS_CRITERIA_CHECK,
53
- passed: evaluateJSONPathCondition(condition, data),
53
+ passed: evaluateJSONPathCondition({
54
+ condition,
55
+ data,
56
+ context: criteriaContext,
57
+ logger: ctx.options.logger,
58
+ }),
54
59
  message: `Checking jsonpath criteria: ${condition}`,
55
60
  severity: ctx.severity['SUCCESS_CRITERIA_CHECK'],
56
61
  condition: condition,
@@ -1 +1 @@
1
- {"version":3,"file":"check-success-criteria.js","sourceRoot":"","sources":["../../../../src/modules/flow-runner/success-criteria/check-success-criteria.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-success-criteria.js","sourceRoot":"","sources":["../../../../src/modules/flow-runner/success-criteria/check-success-criteria.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,10 @@
1
+ import { type LoggerInterface } from '@redocly/openapi-core';
1
2
  import { type JsonValue } from 'jsonpath-rfc9535';
2
- export declare function evaluateJSONPathCondition(condition: string, context: JsonValue): boolean;
3
+ import type { RuntimeExpressionContext } from '../../../types.js';
4
+ export declare function evaluateJSONPathCondition({ condition, data, context, logger, }: {
5
+ condition: string;
6
+ data: JsonValue;
7
+ context: RuntimeExpressionContext;
8
+ logger: LoggerInterface;
9
+ }): boolean;
3
10
  //# sourceMappingURL=evaluate-jsonpath-condition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate-jsonpath-condition.d.ts","sourceRoot":"","sources":["../../../../src/modules/flow-runner/success-criteria/evaluate-jsonpath-condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,WAS9E"}
1
+ {"version":3,"file":"evaluate-jsonpath-condition.d.ts","sourceRoot":"","sources":["../../../../src/modules/flow-runner/success-criteria/evaluate-jsonpath-condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAQlE,wBAAgB,yBAAyB,CAAC,EACxC,SAAS,EACT,IAAI,EACJ,OAAO,EACP,MAAM,GACP,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,wBAAwB,CAAC;IAClC,MAAM,EAAE,eAAe,CAAC;CACzB,GAAG,OAAO,CAOV"}
@@ -1,176 +1,36 @@
1
+ import { isPlainObject } from '@redocly/openapi-core';
1
2
  import { query } from 'jsonpath-rfc9535';
2
- export function evaluateJSONPathCondition(condition, context) {
3
+ import { evaluateRuntimeExpression } from '../../runtime-expressions/index.js';
4
+ // Matches Arazzo embedded runtime expressions of the form `{$...}`, which must be
5
+ // resolved first to construct the final JSONPath expression. Nested braces are not
6
+ // supported, which aligns with Arazzo runtime-expression syntax.
7
+ const EMBEDDED_EXPRESSION_REGEX = /\{(\$[^{}]+)\}/g;
8
+ export function evaluateJSONPathCondition({ condition, data, context, logger, }) {
3
9
  try {
4
- const resolvedCondition = parseExpressions(condition, context);
5
- const evaluateFn = new Function(`return ${resolvedCondition};`);
6
- return !!evaluateFn();
10
+ const resolvedCondition = resolveEmbeddedExpressions(condition, context, logger);
11
+ return query([data], resolvedCondition).length > 0;
7
12
  }
8
- catch (error) {
13
+ catch {
9
14
  return false;
10
15
  }
11
16
  }
12
- function parseExpressions(condition, context) {
13
- const expressionsParts = [];
14
- let i = 0;
15
- let expressionElements = '';
16
- while (i < condition.length) {
17
- if (condition[i] === '$') {
18
- if (expressionElements.length > 0) {
19
- expressionsParts.push(expressionElements);
20
- expressionElements = '';
21
- }
22
- const start = i;
23
- const expression = parseSingleJSONPath(condition, i);
24
- if (expression.length > 1) {
25
- const evaluatedExpression = evaluateJSONPathExpression(expression, context);
26
- expressionsParts.push(evaluatedExpression);
27
- }
28
- i = start + expression.length;
29
- }
30
- else {
31
- expressionElements += condition[i];
32
- i++;
33
- }
34
- }
35
- // Push any remaining content after the while loop
36
- if (expressionElements.length > 0) {
37
- expressionsParts.push(expressionElements);
38
- }
39
- return expressionsParts.join('');
40
- }
41
- function parseSingleJSONPath(condition, startIndex) {
42
- let jsonpath = '$';
43
- let bracketDepth = 0;
44
- let inQuotes = false;
45
- let quoteChar = '';
46
- let inFilter = false;
47
- let filterDepth = 0;
48
- let i = startIndex + 1; // Skip the '$'
49
- while (i < condition.length) {
50
- const char = condition[i];
51
- if ((char === '"' || char === "'") && !inQuotes) {
52
- inQuotes = true;
53
- quoteChar = char;
54
- jsonpath += char;
55
- i++;
56
- continue;
57
- }
58
- if (char === quoteChar && inQuotes) {
59
- inQuotes = false;
60
- jsonpath += char;
61
- i++;
62
- continue;
63
- }
64
- if (inQuotes) {
65
- jsonpath += char;
66
- i++;
67
- continue;
68
- }
69
- if (char === '[') {
70
- bracketDepth++;
71
- if (i + 1 < condition.length && condition[i + 1] === '?') {
72
- inFilter = true;
73
- filterDepth = bracketDepth;
74
- }
75
- jsonpath += char;
76
- i++;
77
- continue;
78
- }
79
- if (char === ']') {
80
- bracketDepth--;
81
- if (inFilter && bracketDepth < filterDepth) {
82
- inFilter = false;
83
- }
84
- jsonpath += char;
85
- i++;
86
- continue;
87
- }
88
- // Stop at logical operators, comparison operators, or whitespace (outside of filters)
89
- if (!inFilter && (/\s/.test(char) || /[<>=!&|,)]/.test(char))) {
90
- break;
91
- }
92
- jsonpath += char;
93
- i++;
94
- }
95
- return jsonpath;
96
- }
97
- function evaluateJSONPathExpression(expression, context) {
98
- // Handle legacy .length suffix for backward compatibility that is not a valid RFC 9535 expression
99
- if (expression.endsWith('.length')) {
100
- const basePath = expression.slice(0, -'.length'.length);
101
- const normalizedPath = transformHyphensToUnderscores(basePath);
102
- const result = query(context, normalizedPath);
103
- const value = result[0] ?? null;
104
- return Array.isArray(value) ? String(value.length) : '0';
105
- }
106
- if (expression.includes('[?(') && expression.includes(')]')) {
107
- return handleFilterExpression(expression, context);
108
- }
109
- const normalizedPath = transformHyphensToUnderscores(expression);
110
- const result = query(context, normalizedPath);
111
- return JSON.stringify(result[0]);
112
- }
113
- function handleFilterExpression(expression, context) {
114
- const filterMatch = expression.match(/\[\?\((.*)\)\]/);
115
- if (!filterMatch)
116
- return 'false';
117
- const filterCondition = filterMatch[1];
118
- const basePath = expression.substring(0, expression.indexOf('[?('));
119
- const normalizedBasePath = transformHyphensToUnderscores(basePath);
120
- const jsonpathResult = query(context, normalizedBasePath);
121
- // Flatten the result in case JSONPath returns nested arrays
122
- const arrayToFilter = Array.isArray(jsonpathResult) ? jsonpathResult.flat() : jsonpathResult;
123
- if (!Array.isArray(arrayToFilter)) {
124
- return 'false';
125
- }
126
- const filteredArray = arrayToFilter.filter((item) => {
127
- const convertedCondition = processFilterCondition(filterCondition, item);
128
- try {
129
- const safeEval = new Function('item', `return ${convertedCondition};`);
130
- return !!safeEval(item);
131
- }
132
- catch {
133
- return false;
134
- }
17
+ // Per the Arazzo spec, expressions can be embedded into string values by surrounding
18
+ // the expression with `{}` curly braces. Any embedded `{$...}` expression in a JSONPath
19
+ // condition MUST be evaluated first to construct the JSONPath expression before it is
20
+ // evaluated against the data.
21
+ function resolveEmbeddedExpressions(condition, context, logger) {
22
+ return condition.replace(EMBEDDED_EXPRESSION_REGEX, (match, expression) => {
23
+ const value = evaluateRuntimeExpression(expression, context, logger);
24
+ return formatJsonPathLiteral(value, match);
135
25
  });
136
- const afterFilter = expression.substring(expression.indexOf(')]') + 2);
137
- if (afterFilter.startsWith('.')) {
138
- const propertyMatch = afterFilter.match(/\.([a-zA-Z0-9_-]+)/);
139
- if (propertyMatch) {
140
- const propertyName = propertyMatch[1].replace(/-/g, '_');
141
- const propertyValues = filteredArray.map((item) => item[propertyName]);
142
- return JSON.stringify(propertyValues);
143
- }
144
- }
145
- return filteredArray.length > 0 ? JSON.stringify(filteredArray) : 'false';
146
26
  }
147
- function processFilterCondition(filterCondition, item) {
148
- let convertedCondition = filterCondition;
149
- // Handle @.property.match(/pattern/) expressions
150
- convertedCondition = convertedCondition.replace(/@\.([a-zA-Z0-9_-]+)\.match\(([^)]+)\)/g, (_, prop, pattern) => {
151
- const normalizedProp = prop.replace(/-/g, '_');
152
- const value = item[normalizedProp];
153
- if (typeof value !== 'string')
154
- return 'false';
155
- try {
156
- let cleanPattern = pattern.replace(/^["']|["']$/g, ''); // Remove quotes
157
- cleanPattern = cleanPattern.replace(/^\/|\/$/g, ''); // Remove leading/trailing slashes
158
- const regex = new RegExp(cleanPattern);
159
- return String(regex.test(value));
160
- }
161
- catch {
162
- return 'false';
163
- }
164
- });
165
- // Handle @.property expressions (simple property access)
166
- convertedCondition = convertedCondition.replace(/@\.([a-zA-Z0-9_-]+)/g, (_, prop) => {
167
- const normalizedProp = prop.replace(/-/g, '_');
168
- const value = item[normalizedProp];
27
+ function formatJsonPathLiteral(value, fallback) {
28
+ if (value === undefined) {
29
+ return fallback;
30
+ }
31
+ if (typeof value === 'string' || Array.isArray(value) || isPlainObject(value)) {
169
32
  return JSON.stringify(value);
170
- });
171
- return convertedCondition;
172
- }
173
- function transformHyphensToUnderscores(path) {
174
- return path.replace(/\.([a-zA-Z0-9_-]+)/g, (_, prop) => '.' + prop.replace(/-/g, '_'));
33
+ }
34
+ return String(value);
175
35
  }
176
36
  //# sourceMappingURL=evaluate-jsonpath-condition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate-jsonpath-condition.js","sourceRoot":"","sources":["../../../../src/modules/flow-runner/success-criteria/evaluate-jsonpath-condition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluate-jsonpath-condition.js","sourceRoot":"","sources":["../../../../src/modules/flow-runner/success-criteria/evaluate-jsonpath-condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAkB,MAAM,kBAAkB,CAAC;AAGzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,kFAAkF;AAClF,mFAAmF;AACnF,iEAAiE;AACjE,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAEpD,MAAM,UAAU,yBAAyB,CAAC,EACxC,SAAS,EACT,IAAI,EACJ,OAAO,EACP,MAAM,GAMP;IACC,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACjF,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,wFAAwF;AACxF,sFAAsF;AACtF,8BAA8B;AAC9B,SAAS,0BAA0B,CACjC,SAAiB,EACjB,OAAiC,EACjC,MAAuB;IAEvB,OAAO,SAAS,CAAC,OAAO,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QACxE,MAAM,KAAK,GAAG,yBAAyB,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACrE,OAAO,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc,EAAE,QAAgB;IAC7D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9E,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/respect-core",
3
- "version": "2.28.1",
3
+ "version": "2.29.1",
4
4
  "description": "API testing framework core",
5
5
  "type": "module",
6
6
  "types": "lib/index.d.ts",
@@ -48,7 +48,7 @@
48
48
  "@faker-js/faker": "^7.6.0",
49
49
  "@noble/hashes": "^1.8.0",
50
50
  "@redocly/ajv": "^8.18.0",
51
- "@redocly/openapi-core": "2.28.1",
51
+ "@redocly/openapi-core": "2.29.1",
52
52
  "ajv": "npm:@redocly/ajv@8.18.0",
53
53
  "better-ajv-errors": "^1.2.0",
54
54
  "colorette": "^2.0.20",