@redocly/openapi-core 2.58.0 → 2.58.2
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.
- package/lib/rules/ajv.d.ts +1 -0
- package/lib/rules/ajv.d.ts.map +1 -1
- package/lib/rules/ajv.js +43 -1
- package/lib/rules/ajv.js.map +1 -1
- package/package.json +2 -2
package/lib/rules/ajv.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { Oas3Schema, Oas3_1Schema } from '../typings/openapi.js';
|
|
|
4
4
|
import type { ResolveFn, UserContext } from '../walk.js';
|
|
5
5
|
export declare class AjvValidator {
|
|
6
6
|
private instances;
|
|
7
|
+
private sharedValidators;
|
|
7
8
|
validate(data: unknown, schema: Oas3Schema | Oas3_1Schema, options: {
|
|
8
9
|
schemaLoc: Location;
|
|
9
10
|
instancePath: string;
|
package/lib/rules/ajv.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ajv.d.ts","sourceRoot":"","sources":["../../src/rules/ajv.ts"],"names":[],"mappings":"AAAA,OAAgB,EACd,KAAK,WAAW,EAEhB,KAAK,OAAO,IAAI,UAAU,EAE3B,MAAM,2BAA2B,CAAC;AAInC,OAAO,
|
|
1
|
+
{"version":3,"file":"ajv.d.ts","sourceRoot":"","sources":["../../src/rules/ajv.ts"],"names":[],"mappings":"AAAA,OAAgB,EACd,KAAK,WAAW,EAEhB,KAAK,OAAO,IAAI,UAAU,EAE3B,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAmD,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjG,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAuBzD,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,gBAAgB,CAAuC;IAE/D,QAAQ,CACN,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,UAAU,GAAG,YAAY,EACjC,OAAO,EAAE;QACP,SAAS,EAAE,QAAQ,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,SAAS,CAAC;QACnB,yBAAyB,EAAE,OAAO,CAAC;QACnC,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;KACzC,GACA;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,CAAC,WAAW,GAAG;YAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,EAAE,CAAA;KAAE;IA2DvE,OAAO,CAAC,MAAM;IAoCd,OAAO,CAAC,YAAY;CA+CrB"}
|
package/lib/rules/ajv.js
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import Ajv2020 from '@redocly/ajv/dist/2020.js';
|
|
2
2
|
import AjvDraft4 from '@redocly/ajv/dist/draft4.js';
|
|
3
3
|
import addFormats from 'ajv-formats';
|
|
4
|
-
import { escapePointerFragment } from '../ref-utils.js';
|
|
4
|
+
import { escapePointerFragment, isRef, isRefWithSiblings } from '../ref-utils.js';
|
|
5
|
+
import { isPlainObject } from '../utils/is-plain-object.js';
|
|
6
|
+
// Ajv does not validate these keywords, so schemas that differ only in them share one compiled validator.
|
|
7
|
+
const ANNOTATION_KEYWORDS = [
|
|
8
|
+
'title',
|
|
9
|
+
'description',
|
|
10
|
+
'example',
|
|
11
|
+
'examples',
|
|
12
|
+
'default',
|
|
13
|
+
'deprecated',
|
|
14
|
+
];
|
|
5
15
|
function getSchemaIdKey(dialect) {
|
|
6
16
|
return dialect === 'draft4' ? 'id' : '$id';
|
|
7
17
|
}
|
|
@@ -12,6 +22,7 @@ function getDialectBySpecVersion(specVersion) {
|
|
|
12
22
|
}
|
|
13
23
|
export class AjvValidator {
|
|
14
24
|
instances = {};
|
|
25
|
+
sharedValidators = new Map();
|
|
15
26
|
validate(data, schema, options) {
|
|
16
27
|
const { schemaLoc, instancePath, resolve, allowAdditionalProperties, ajvContext, specVersion } = options;
|
|
17
28
|
const dialect = getDialectBySpecVersion(specVersion);
|
|
@@ -90,6 +101,26 @@ export class AjvValidator {
|
|
|
90
101
|
}
|
|
91
102
|
getValidator(schema, loc, resolve, allowAdditionalProperties, dialect) {
|
|
92
103
|
const ajv = this.getAjv(resolve, dialect);
|
|
104
|
+
// Every plain `$ref` to a schema shares the validator of its target.
|
|
105
|
+
if (isRef(schema) && !isRefWithSiblings(schema)) {
|
|
106
|
+
const resolved = resolve(schema, loc.source.absoluteRef);
|
|
107
|
+
if (resolved.location && isPlainObject(resolved.node)) {
|
|
108
|
+
schema = resolved.node;
|
|
109
|
+
loc = resolved.location;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// A missing schema goes to the location path below, which accepts any value.
|
|
113
|
+
const shape = isPlainObject(schema) ? getSchemaShape(schema, dialect) : undefined;
|
|
114
|
+
if (shape) {
|
|
115
|
+
const sharedValidator = this.sharedValidators.get(shape);
|
|
116
|
+
if (sharedValidator) {
|
|
117
|
+
return sharedValidator;
|
|
118
|
+
}
|
|
119
|
+
ajv.setDefaultUnevaluatedProperties(allowAdditionalProperties);
|
|
120
|
+
const validate = ajv.compile(schema);
|
|
121
|
+
this.sharedValidators.set(shape, validate);
|
|
122
|
+
return validate;
|
|
123
|
+
}
|
|
93
124
|
const $id = encodeURI(loc.absolutePointer);
|
|
94
125
|
const schemaIdKey = getSchemaIdKey(dialect);
|
|
95
126
|
if (!ajv.getSchema($id)) {
|
|
@@ -102,4 +133,15 @@ export class AjvValidator {
|
|
|
102
133
|
return ajv.getSchema($id);
|
|
103
134
|
}
|
|
104
135
|
}
|
|
136
|
+
function getSchemaShape(schema, dialect) {
|
|
137
|
+
const keywords = { ...schema };
|
|
138
|
+
for (const keyword of ANNOTATION_KEYWORDS) {
|
|
139
|
+
delete keywords[keyword];
|
|
140
|
+
}
|
|
141
|
+
const shape = JSON.stringify(keywords);
|
|
142
|
+
if (shape.includes('"$ref"')) {
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
return `${dialect}:${shape}`;
|
|
146
|
+
}
|
|
105
147
|
//# sourceMappingURL=ajv.js.map
|
package/lib/rules/ajv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ajv.js","sourceRoot":"","sources":["../../src/rules/ajv.ts"],"names":[],"mappings":"AAAA,OAAO,OAKN,MAAM,2BAA2B,CAAC;AACnC,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAiB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ajv.js","sourceRoot":"","sources":["../../src/rules/ajv.ts"],"names":[],"mappings":"AAAA,OAAO,OAKN,MAAM,2BAA2B,CAAC;AACnC,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAEjG,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAK5D,0GAA0G;AAC1G,MAAM,mBAAmB,GAAG;IAC1B,OAAO;IACP,aAAa;IACb,SAAS;IACT,UAAU;IACV,SAAS;IACT,YAAY;CACb,CAAC;AAEF,SAAS,cAAc,CAAC,OAAmB;IACzC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7C,CAAC;AAED,SAAS,uBAAuB,CAAC,WAAuC;IACtE,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,OAAO,YAAY;IACf,SAAS,GAAqC,EAAE,CAAC;IACjD,gBAAgB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE/D,QAAQ,CACN,IAAa,EACb,MAAiC,EACjC,OAOC;QAED,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,yBAAyB,EAAE,UAAU,EAAE,WAAW,EAAE,GAC5F,OAAO,CAAC;QAEV,MAAM,OAAO,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAChC,MAAM,EACN,SAAS,EACT,OAAO,EACP,yBAAyB,EACzB,OAAO,CACR,CAAC;QACF,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,+BAA+B;QAElF,MAAM,OAAO,GAAG;YACd,YAAY;YACZ,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACxB,kBAAkB,EAAE,MAAM;YAC1B,QAAQ,EAAE,EAAE;YACZ,cAAc,EAAE,EAAE;SACnB,CAAC;QACF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE7D,OAAO;YACL,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC;SACzD,CAAC;QAEF,SAAS,mBAAmB,CAAC,KAAkB;YAC7C,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC5B,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3D,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC7B,OAAO,GAAG,QAAQ,OAAO,EAAE,CAAC;YAC9B,CAAC;YAED,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3E,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3E,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,GAAG,KAAK,QAAQ,eAAe,OAAO,EAAE,CAAC;YAClD,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,KAAK,sBAAsB,IAAI,KAAK,CAAC,OAAO,KAAK,uBAAuB,EAAE,CAAC;gBAC1F,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,kBAAkB,IAAI,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBACrF,OAAO,GAAG,GAAG,OAAO,MAAM,QAAQ,IAAI,CAAC;gBACvC,KAAK,CAAC,YAAY,IAAI,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAC9D,CAAC;YAED,OAAO;gBACL,GAAG,KAAK;gBACR,OAAO;gBACP,OAAO;aACR,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,OAAkB,EAAE,OAAmB;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YAE5C,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE,WAAW;gBACrB,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,KAAK;gBACnB,UAAU,EAAE,KAAK;gBACjB,cAAc,EAAE,KAAK;gBACrB,aAAa,EAAE,IAAI;gBACnB,eAAe,EAAE,IAAI;gBACrB,eAAe,EAAE,IAAI;gBACrB,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,KAAK;gBACb,cAAc,CAAC,IAAY,EAAE,IAAY,EAAE,GAAW;oBACpD,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClD,MAAM,WAAW,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;oBACnD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ;wBAAE,OAAO,KAAK,CAAC;oBAExD,OAAO;wBACL,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG;wBAC7E,GAAG,WAAW,CAAC,IAAI;qBACpB,CAAC;gBACJ,CAAC;aACF,CAAC;YAEF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBACrB,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,IAAK,OAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAK,SAAiB,CAAC,OAAO,CAAC,CAAC;YAEtF,UAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAEO,YAAY,CAClB,MAAiC,EACjC,GAAa,EACb,OAAkB,EAClB,yBAAkC,EAClC,OAAmB;QAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE1C,qEAAqE;QACrE,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,OAAO,CAA4B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACpF,IAAI,QAAQ,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACvB,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,6EAA6E;QAC7E,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClF,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,eAAe,CAAC;YACzB,CAAC;YACD,GAAG,CAAC,+BAA+B,CAAC,yBAAyB,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAqB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC3C,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,+BAA+B,CAAC,yBAAyB,CAAC,CAAC;YAC/D,GAAG,CAAC,SAAS,CACX;gBACE,CAAC,WAAW,CAAC,EAAE,GAAG;gBAClB,GAAG,MAAM;aACV,EACD,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF;AAED,SAAS,cAAc,CAAC,MAAiC,EAAE,OAAmB;IAC5E,MAAM,QAAQ,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IACxD,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;QAC1C,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC;AAC/B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redocly/openapi-core",
|
|
3
|
-
"version": "2.58.
|
|
3
|
+
"version": "2.58.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
],
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@redocly/ajv": "^8.18.3",
|
|
56
|
-
"@redocly/config": "^0.
|
|
56
|
+
"@redocly/config": "^0.61.1",
|
|
57
57
|
"ajv": "npm:@redocly/ajv@^8.18.3",
|
|
58
58
|
"ajv-formats": "^3.0.1",
|
|
59
59
|
"colorette": "^1.2.0",
|