Skip to content

Commit 7d01c8e

Browse files
authored
Replace unmaintained ajv-cli with custom script (#2352)
1 parent c587d2c commit 7d01c8e

File tree

3 files changed

+21
-143
lines changed

3 files changed

+21
-143
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
"author": "Tejas Bubane <tejasbubane@gmail.com>",
88
"license": "MIT",
99
"dependencies": {
10-
"ajv-cli": "^5.0.0",
10+
"ajv": "^8.12.0",
1111
"prettier": "^3.1.1"
1212
},
1313
"scripts": {
14-
"test": "ajv --strict=false -s canonical-data.schema.json -d \"exercises/*/canonical-data.json\"",
15-
"test-one": "ajv --strict=false -s canonical-data.schema.json -d",
14+
"test": "node validate.js exercises/*/canonical-data.json",
15+
"test-one": "node validate.js",
1616
"format-json": "prettier --write **/*.json",
1717
"format-md": "prettier --write **/*.md"
1818
}

validate.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const Ajv = require("ajv");
2+
const fs = require("fs");
3+
4+
const schema = JSON.parse(fs.readFileSync("canonical-data.schema.json"));
5+
// strict: false allows to use keywords that are not part
6+
// of the JSON Schema specification
7+
const validate = new Ajv({ strict: false }).compile(schema);
8+
9+
const exercises = process.argv.slice(2);
10+
11+
for (e of exercises) {
12+
const data = JSON.parse(fs.readFileSync(e));
13+
if (!validate(data)) {
14+
console.error(validate.errors);
15+
process.exit(1);
16+
}
17+
}

yarn.lock

Lines changed: 1 addition & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,7 @@
22
# yarn lockfile v1
33

44

5-
ajv-cli@^5.0.0:
6-
version "5.0.0"
7-
resolved "https://registry.yarnpkg.com/ajv-cli/-/ajv-cli-5.0.0.tgz#78956ed2934e6dde4c9e696b587be1c2998862e8"
8-
integrity sha512-LY4m6dUv44HTyhV+u2z5uX4EhPYTM38Iv1jdgDJJJCyOOuqB8KtZEGjPZ2T+sh5ZIJrXUfgErYx/j3gLd3+PlQ==
9-
dependencies:
10-
ajv "^8.0.0"
11-
fast-json-patch "^2.0.0"
12-
glob "^7.1.0"
13-
js-yaml "^3.14.0"
14-
json-schema-migrate "^2.0.0"
15-
json5 "^2.1.3"
16-
minimist "^1.2.0"
17-
18-
ajv@^8.0.0:
5+
ajv@^8.12.0:
196
version "8.12.0"
207
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
218
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
@@ -25,132 +12,16 @@ ajv@^8.0.0:
2512
require-from-string "^2.0.2"
2613
uri-js "^4.2.2"
2714

28-
argparse@^1.0.7:
29-
version "1.0.10"
30-
resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"
31-
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
32-
dependencies:
33-
sprintf-js "~1.0.2"
34-
35-
balanced-match@^1.0.0:
36-
version "1.0.2"
37-
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
38-
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
39-
40-
brace-expansion@^1.1.7:
41-
version "1.1.11"
42-
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
43-
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
44-
dependencies:
45-
balanced-match "^1.0.0"
46-
concat-map "0.0.1"
47-
48-
concat-map@0.0.1:
49-
version "0.0.1"
50-
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
51-
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
52-
53-
esprima@^4.0.0:
54-
version "4.0.1"
55-
resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
56-
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
57-
58-
fast-deep-equal@^2.0.1:
59-
version "2.0.1"
60-
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz"
61-
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
62-
6315
fast-deep-equal@^3.1.1:
6416
version "3.1.3"
6517
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
6618
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
6719

68-
fast-json-patch@^2.0.0:
69-
version "2.2.1"
70-
resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.2.1.tgz"
71-
integrity sha512-4j5uBaTnsYAV5ebkidvxiLUYOwjQ+JSFljeqfTxCrH9bDmlCQaOJFS84oDJ2rAXZq2yskmk3ORfoP9DCwqFNig==
72-
dependencies:
73-
fast-deep-equal "^2.0.1"
74-
75-
fs.realpath@^1.0.0:
76-
version "1.0.0"
77-
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
78-
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
79-
80-
glob@^7.1.0:
81-
version "7.1.6"
82-
resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz"
83-
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
84-
dependencies:
85-
fs.realpath "^1.0.0"
86-
inflight "^1.0.4"
87-
inherits "2"
88-
minimatch "^3.0.4"
89-
once "^1.3.0"
90-
path-is-absolute "^1.0.0"
91-
92-
inflight@^1.0.4:
93-
version "1.0.6"
94-
resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
95-
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
96-
dependencies:
97-
once "^1.3.0"
98-
wrappy "1"
99-
100-
inherits@2:
101-
version "2.0.3"
102-
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
103-
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
104-
105-
js-yaml@^3.14.0:
106-
version "3.14.1"
107-
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
108-
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
109-
dependencies:
110-
argparse "^1.0.7"
111-
esprima "^4.0.0"
112-
113-
json-schema-migrate@^2.0.0:
114-
version "2.0.0"
115-
resolved "https://registry.yarnpkg.com/json-schema-migrate/-/json-schema-migrate-2.0.0.tgz#335ef5218cd32fcc96c1ddce66c71ba586224496"
116-
integrity sha512-r38SVTtojDRp4eD6WsCqiE0eNDt4v1WalBXb9cyZYw9ai5cGtBwzRNWjHzJl38w6TxFkXAIA7h+fyX3tnrAFhQ==
117-
dependencies:
118-
ajv "^8.0.0"
119-
12020
json-schema-traverse@^1.0.0:
12121
version "1.0.0"
12222
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
12323
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
12424

125-
json5@^2.1.3:
126-
version "2.2.3"
127-
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
128-
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
129-
130-
minimatch@^3.0.4:
131-
version "3.1.2"
132-
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
133-
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
134-
dependencies:
135-
brace-expansion "^1.1.7"
136-
137-
minimist@^1.2.0:
138-
version "1.2.6"
139-
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
140-
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
141-
142-
once@^1.3.0:
143-
version "1.4.0"
144-
resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
145-
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
146-
dependencies:
147-
wrappy "1"
148-
149-
path-is-absolute@^1.0.0:
150-
version "1.0.1"
151-
resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
152-
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
153-
15425
prettier@^3.1.1:
15526
version "3.1.1"
15627
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.1.tgz#6ba9f23165d690b6cbdaa88cb0807278f7019848"
@@ -166,19 +37,9 @@ require-from-string@^2.0.2:
16637
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
16738
integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
16839

169-
sprintf-js@~1.0.2:
170-
version "1.0.3"
171-
resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
172-
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
173-
17440
uri-js@^4.2.2:
17541
version "4.4.0"
17642
resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz"
17743
integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==
17844
dependencies:
17945
punycode "^2.1.0"
180-
181-
wrappy@1:
182-
version "1.0.2"
183-
resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
184-
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=

0 commit comments

Comments
 (0)