@automatons/validator 2.1.0 → 2.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.
- package/README.md +5 -2
- package/index.js +4 -2
- package/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
The validator of openapi schema.
|
|
4
4
|
|
|
5
|
+
Since v2 this package is **ESM-only** and requires **Node.js >= 22**.
|
|
6
|
+
|
|
5
7
|
## Usage
|
|
6
8
|
|
|
7
9
|
```typescript
|
|
8
10
|
import {validator} from "@automatons/validator";
|
|
9
|
-
import {
|
|
11
|
+
import {readFileSync} from "node:fs";
|
|
10
12
|
|
|
11
|
-
const result = validator(
|
|
13
|
+
const result = await validator(JSON.parse(readFileSync("path/to/openapi.json", "utf-8")));
|
|
14
|
+
// result.valid: boolean, result.errors: { keyword, rule, location }[]
|
|
12
15
|
```
|
package/index.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
// src/validator.ts
|
|
2
2
|
import { validate as validateOpenapi30 } from "@hyperjump/json-schema/openapi-3-0";
|
|
3
3
|
import { validate as validateOpenapi31 } from "@hyperjump/json-schema/openapi-3-1";
|
|
4
|
+
import { validate as validateOpenapi32 } from "@hyperjump/json-schema/openapi-3-2";
|
|
4
5
|
import { BASIC } from "@hyperjump/json-schema/experimental";
|
|
5
6
|
var dialects = {
|
|
6
7
|
"3_0": { uri: "https://spec.openapis.org/oas/3.0/schema", validate: validateOpenapi30 },
|
|
7
|
-
"3_1": { uri: "https://spec.openapis.org/oas/3.1/schema-base", validate: validateOpenapi31 }
|
|
8
|
+
"3_1": { uri: "https://spec.openapis.org/oas/3.1/schema-base", validate: validateOpenapi31 },
|
|
9
|
+
"3_2": { uri: "https://spec.openapis.org/oas/3.2/schema-base", validate: validateOpenapi32 }
|
|
8
10
|
};
|
|
9
11
|
var validator = async (openapi) => {
|
|
10
12
|
const version = openapi.openapi.split(".").slice(0, 2).join("_");
|
|
11
13
|
const dialect = dialects[version];
|
|
12
14
|
if (!dialect) {
|
|
13
|
-
throw new Error("Not supported version.\nopenapi version 3.0.0 >= version < 3.
|
|
15
|
+
throw new Error("Not supported version.\nopenapi version 3.0.0 >= version < 3.3.0");
|
|
14
16
|
}
|
|
15
17
|
const output = await dialect.validate(dialect.uri, openapi, BASIC);
|
|
16
18
|
return { valid: output.valid, errors: errorExtractor(output) };
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/validator.ts"],"sourcesContent":["import {validate as validateOpenapi30} from \"@hyperjump/json-schema/openapi-3-0\";\nimport {validate as validateOpenapi31} from \"@hyperjump/json-schema/openapi-3-1\";\nimport {BASIC} from \"@hyperjump/json-schema/experimental\";\nimport type {Json} from \"@hyperjump/json-pointer\";\n\nexport type Validate = {\n keyword: string;\n rule: string;\n location: string;\n};\n\ntype OutputUnit = {\n valid: boolean;\n keyword?: string;\n absoluteKeywordLocation?: string;\n instanceLocation?: string;\n errors?: OutputUnit[];\n};\n\nconst dialects = {\n \"3_0\": {uri: \"https://spec.openapis.org/oas/3.0/schema\", validate: validateOpenapi30},\n \"3_1\": {uri: \"https://spec.openapis.org/oas/3.1/schema-base\", validate: validateOpenapi31},\n} as const;\n\nexport const validator = async (openapi: {openapi: string; [key: string]: unknown}) => {\n const version = openapi.openapi.split(\".\").slice(0, 2).join(\"_\");\n const dialect = dialects[version as keyof typeof dialects];\n if (!dialect) {\n throw new Error(\"Not supported version.\\nopenapi version 3.0.0 >= version < 3.
|
|
1
|
+
{"version":3,"sources":["../src/validator.ts"],"sourcesContent":["import {validate as validateOpenapi30} from \"@hyperjump/json-schema/openapi-3-0\";\nimport {validate as validateOpenapi31} from \"@hyperjump/json-schema/openapi-3-1\";\nimport {validate as validateOpenapi32} from \"@hyperjump/json-schema/openapi-3-2\";\nimport {BASIC} from \"@hyperjump/json-schema/experimental\";\nimport type {Json} from \"@hyperjump/json-pointer\";\n\nexport type Validate = {\n keyword: string;\n rule: string;\n location: string;\n};\n\ntype OutputUnit = {\n valid: boolean;\n keyword?: string;\n absoluteKeywordLocation?: string;\n instanceLocation?: string;\n errors?: OutputUnit[];\n};\n\nconst dialects = {\n \"3_0\": {uri: \"https://spec.openapis.org/oas/3.0/schema\", validate: validateOpenapi30},\n \"3_1\": {uri: \"https://spec.openapis.org/oas/3.1/schema-base\", validate: validateOpenapi31},\n \"3_2\": {uri: \"https://spec.openapis.org/oas/3.2/schema-base\", validate: validateOpenapi32},\n} as const;\n\nexport const validator = async (openapi: {openapi: string; [key: string]: unknown}) => {\n const version = openapi.openapi.split(\".\").slice(0, 2).join(\"_\");\n const dialect = dialects[version as keyof typeof dialects];\n if (!dialect) {\n throw new Error(\"Not supported version.\\nopenapi version 3.0.0 >= version < 3.3.0\");\n }\n const output = (await dialect.validate(dialect.uri, openapi as unknown as Json, BASIC)) as OutputUnit;\n return {valid: output.valid, errors: errorExtractor(output)};\n};\n\nconst errorExtractor = (output: OutputUnit): Validate[] =>\n (output.errors ?? []).map((error) => ({\n keyword: error.keyword?.split(\"/\").pop() ?? \"\",\n rule: error.absoluteKeywordLocation?.split(\"#\")[1] ?? \"\",\n location: error.instanceLocation ?? \"\",\n }));\n"],"mappings":";AAAA,SAAQ,YAAY,yBAAwB;AAC5C,SAAQ,YAAY,yBAAwB;AAC5C,SAAQ,YAAY,yBAAwB;AAC5C,SAAQ,aAAY;AAiBpB,IAAM,WAAW;AAAA,EACf,OAAO,EAAC,KAAK,4CAA4C,UAAU,kBAAiB;AAAA,EACpF,OAAO,EAAC,KAAK,iDAAiD,UAAU,kBAAiB;AAAA,EACzF,OAAO,EAAC,KAAK,iDAAiD,UAAU,kBAAiB;AAC3F;AAEO,IAAM,YAAY,OAAO,YAAuD;AACrF,QAAM,UAAU,QAAQ,QAAQ,MAAM,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG;AAC/D,QAAM,UAAU,SAAS,OAAgC;AACzD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,kEAAkE;AAAA,EACpF;AACA,QAAM,SAAU,MAAM,QAAQ,SAAS,QAAQ,KAAK,SAA4B,KAAK;AACrF,SAAO,EAAC,OAAO,OAAO,OAAO,QAAQ,eAAe,MAAM,EAAC;AAC7D;AAEA,IAAM,iBAAiB,CAAC,YACrB,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW;AAAA,EACpC,SAAS,MAAM,SAAS,MAAM,GAAG,EAAE,IAAI,KAAK;AAAA,EAC5C,MAAM,MAAM,yBAAyB,MAAM,GAAG,EAAE,CAAC,KAAK;AAAA,EACtD,UAAU,MAAM,oBAAoB;AACtC,EAAE;","names":[]}
|