From c6f5101c0081138460a6a0dee0d115fb8e3e2a9d Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 08:12:49 +0000 Subject: [PATCH 01/13] Validate json --- tools/chainSchema.json | 93 ++++++++++++++++++++++++++++++++ tools/index.js | 23 ++++++++ tools/package-lock.json | 114 ++++++++++++++++++++++++++++++++++++++++ tools/package.json | 5 ++ 4 files changed, 235 insertions(+) create mode 100644 tools/chainSchema.json create mode 100644 tools/package-lock.json create mode 100644 tools/package.json diff --git a/tools/chainSchema.json b/tools/chainSchema.json new file mode 100644 index 000000000000..e15cbaa81327 --- /dev/null +++ b/tools/chainSchema.json @@ -0,0 +1,93 @@ +{ + "$schema": "http://json-schema.org/schema#", + "title": "EIP155 Chain Data", + "type":"object", + "required": ["name","chain","rpc","nativeCurrency","chainId","networkId"], + "properties": { + "name":{ + "type":"string", + "description": "Name of the Network" + }, + "chain":{ + "type":"string", + "description": "Name of the Network" + }, + "icon":{ + "type":"string", + "description": "Icon type" + }, + "rpc":{ + "type":"array", + "items":{ + "type":"string" + } + }, + "faucets":{ + "type":"array", + "items":{ + "type":"string" + } + }, + "nativeCurrency":{ + "type":"object", + "properties": { + "name":{ + "type":"string", + "description":"Name of the Native Currency" + }, + "symbol":{ + "type":"string", + "description":"Symbol of the Native Currency" + }, + "decimals":{ + "type":"number", + "description":"Decimal points supported" + } + } + }, + "infoURL":{ + "type":"string", + "description": "infoURL" + }, + "shortName":{ + "type":"string" + }, + "chainId":{ + "type":"number", + "description": "Chain ID of the Network" + }, + "networkId":{ + "type":"number", + "description": "Network ID of the Network" + }, + "slip44":{ + "type":"number", + "description": "Slip44 of the Network" + }, + "ens":{ + "type":"object", + "properties": { + "registry":{ + "type":"string" + } + } + }, + "explorers":{ + "type":"array", + "items":{ + "type":"object", + "properties": { + "name":{ + "type":"string" + }, + "url":{ + "type":"string" + }, + "standard":{ + "type":"string" + } + } + } + } + } +} \ No newline at end of file diff --git a/tools/index.js b/tools/index.js index 8ca515baeef5..7592c1125267 100644 --- a/tools/index.js +++ b/tools/index.js @@ -4,16 +4,39 @@ */ const fs = require('fs'); const { exec } = require('child_process'); +const Ajv = require("ajv") +const ajv = new Ajv() +const fs = require('fs'); +const schema = require('./chainSchema.json') const chainFiles = fs.readdirSync('../_data/chains/'); for(const chainFile of chainFiles){ const fileLocation = `../_data/chains/${chainFile}` const fileData = fs.readFileSync(fileLocation,'utf8') const fileDataJson = JSON.parse(fileData) + if(fileDataJson.network){ delete fileDataJson.network fs.writeFileSync(fileLocation, JSON.stringify(fileDataJson, null, 2)) } } +// TODO: Move to Different FIle +for(const chainFile of chainFiles){ + const fileLocation = `../_data/chains/${chainFile}` + const fileData = fs.readFileSync(fileLocation,'utf8') + const fileDataJson = JSON.parse(fileData) + const valid = ajv.validate(schema, fileDataJson) + const filesWithErrors = [] + if(!valid) { + console.error(ajv.errors) + filesWithErrors.push(chainFile) + } + if(filesWithErrors.length > 0){ + throw new Error(`Invalid JSON Schema in ${filesWithErrors.length} files at ${filesWithErrors.join(",")}`) + } +} + + + // TODO: Run `npx prettier --write --ignore-unknown _data`from Project Directory \ No newline at end of file diff --git a/tools/package-lock.json b/tools/package-lock.json new file mode 100644 index 000000000000..6a00bb35f20a --- /dev/null +++ b/tools/package-lock.json @@ -0,0 +1,114 @@ +{ + "name": "tools", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "devDependencies": { + "ajv": "^8.11.0" + } + }, + "node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + } + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + } + } +} diff --git a/tools/package.json b/tools/package.json new file mode 100644 index 000000000000..503dfeba770e --- /dev/null +++ b/tools/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "ajv": "^8.11.0" + } +} From b4e7205e72b92dc2488e766ac462db4ab918b149 Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 08:16:25 +0000 Subject: [PATCH 02/13] wip: gh workflow test --- .github/workflows/prettier.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index 1ebeaf612bec..af97a9618044 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -19,4 +19,8 @@ jobs: ${{ runner.os }}-npm- - name: Run prettier run: |- - npx prettier --check '_data/*/*.json' \ No newline at end of file + npx prettier --check '_data/*/*.json' + - name: Run JSON Validation + run: |- + cd tools/ & npm i + node index.js \ No newline at end of file From 2564038e2cc571005a2de9adca2671d9c46f92c4 Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 08:23:45 +0000 Subject: [PATCH 03/13] wip: added workflow for JSON validation --- .github/workflows/prettier.yml | 6 +-- .github/workflows/validate_json.yml | 24 +++++++++ tools/core.6929 | Bin 0 -> 176128 bytes tools/index.js | 76 ++++++++++++++-------------- 4 files changed, 63 insertions(+), 43 deletions(-) create mode 100644 .github/workflows/validate_json.yml create mode 100644 tools/core.6929 diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index af97a9618044..1ebeaf612bec 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -19,8 +19,4 @@ jobs: ${{ runner.os }}-npm- - name: Run prettier run: |- - npx prettier --check '_data/*/*.json' - - name: Run JSON Validation - run: |- - cd tools/ & npm i - node index.js \ No newline at end of file + npx prettier --check '_data/*/*.json' \ No newline at end of file diff --git a/.github/workflows/validate_json.yml b/.github/workflows/validate_json.yml new file mode 100644 index 000000000000..d919d46758ec --- /dev/null +++ b/.github/workflows/validate_json.yml @@ -0,0 +1,24 @@ +name: Check JSON Schemaact -j + +on: + push: + pull_request: + +jobs: + validate_json: + runs-on: ubuntu-latest + steps: + - name: Check out repo + uses: actions/checkout@v2 + - uses: actions/cache@v2 + name: Configure npm caching + with: + path: ~/.npm + key: ${{ runner.os }}-npm-${{ hashFiles('**/workflows/validate_json.yml') }} + restore-keys: | + ${{ runner.os }}-npm- + - name: Run JSON Validation + working-directory: ./tools + run: |- + npm install + node index.js \ No newline at end of file diff --git a/tools/core.6929 b/tools/core.6929 new file mode 100644 index 0000000000000000000000000000000000000000..bcbcc55a1c2484f8b9513631443e3ebb5a16023e GIT binary patch literal 176128 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 literal 0 HcmV?d00001 diff --git a/tools/index.js b/tools/index.js index 7592c1125267..760b97f9f96c 100644 --- a/tools/index.js +++ b/tools/index.js @@ -2,41 +2,41 @@ * This removed `network` param from all the chain files * Since this is the only tool here, it is here in index.js */ -const fs = require('fs'); -const { exec } = require('child_process'); -const Ajv = require("ajv") -const ajv = new Ajv() -const fs = require('fs'); -const schema = require('./chainSchema.json') -const chainFiles = fs.readdirSync('../_data/chains/'); - -for(const chainFile of chainFiles){ - const fileLocation = `../_data/chains/${chainFile}` - const fileData = fs.readFileSync(fileLocation,'utf8') - const fileDataJson = JSON.parse(fileData) - - if(fileDataJson.network){ - delete fileDataJson.network - fs.writeFileSync(fileLocation, JSON.stringify(fileDataJson, null, 2)) - } -} - -// TODO: Move to Different FIle -for(const chainFile of chainFiles){ - const fileLocation = `../_data/chains/${chainFile}` - const fileData = fs.readFileSync(fileLocation,'utf8') - const fileDataJson = JSON.parse(fileData) - const valid = ajv.validate(schema, fileDataJson) - const filesWithErrors = [] - if(!valid) { - console.error(ajv.errors) - filesWithErrors.push(chainFile) - } - if(filesWithErrors.length > 0){ - throw new Error(`Invalid JSON Schema in ${filesWithErrors.length} files at ${filesWithErrors.join(",")}`) - } -} - - - -// TODO: Run `npx prettier --write --ignore-unknown _data`from Project Directory \ No newline at end of file + const fs = require('fs'); + const { exec } = require('child_process'); + const Ajv = require("ajv") + const ajv = new Ajv() + const fs = require('fs'); + const schema = require('./chainSchema.json') + const chainFiles = fs.readdirSync('../_data/chains/'); + + for(const chainFile of chainFiles){ + const fileLocation = `../_data/chains/${chainFile}` + const fileData = fs.readFileSync(fileLocation,'utf8') + const fileDataJson = JSON.parse(fileData) + + if(fileDataJson.network){ + delete fileDataJson.network + fs.writeFileSync(fileLocation, JSON.stringify(fileDataJson, null, 2)) + } + } + + // TODO: Move to Different FIle + for(const chainFile of chainFiles){ + const fileLocation = `../_data/chains/${chainFile}` + const fileData = fs.readFileSync(fileLocation,'utf8') + const fileDataJson = JSON.parse(fileData) + const valid = ajv.validate(schema, fileDataJson) + const filesWithErrors = [] + if(!valid) { + console.error(ajv.errors) + filesWithErrors.push(chainFile) + } + if(filesWithErrors.length > 0){ + throw new Error(`Invalid JSON Schema in ${filesWithErrors.length} files at ${filesWithErrors.join(",")}`) + } + } + + + + // TODO: Run `npx prettier --write --ignore-unknown _data`from Project Directory \ No newline at end of file From d945034dc8850ba73dd7509ad9182d52895f0772 Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 08:29:27 +0000 Subject: [PATCH 04/13] Schema Improved. --- tools/{ => schema}/chainSchema.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename tools/{ => schema}/chainSchema.json (98%) diff --git a/tools/chainSchema.json b/tools/schema/chainSchema.json similarity index 98% rename from tools/chainSchema.json rename to tools/schema/chainSchema.json index e15cbaa81327..4c206687eb8f 100644 --- a/tools/chainSchema.json +++ b/tools/schema/chainSchema.json @@ -89,5 +89,6 @@ } } } - } + }, + "additionalProperties": false } \ No newline at end of file From 6ecf2e606dcc3ee7dac7abcdb43cf411fdf603f2 Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 08:36:10 +0000 Subject: [PATCH 05/13] Improved Workflow and Schema check for JSON files --- .github/workflows/validate_json.yml | 2 +- tools/index.js | 42 ----------------------------- tools/rmNetwork.js | 21 +++++++++++++++ tools/schemaCheck.js | 20 ++++++++++++++ 4 files changed, 42 insertions(+), 43 deletions(-) delete mode 100644 tools/index.js create mode 100644 tools/rmNetwork.js create mode 100644 tools/schemaCheck.js diff --git a/.github/workflows/validate_json.yml b/.github/workflows/validate_json.yml index d919d46758ec..be3338d09b57 100644 --- a/.github/workflows/validate_json.yml +++ b/.github/workflows/validate_json.yml @@ -21,4 +21,4 @@ jobs: working-directory: ./tools run: |- npm install - node index.js \ No newline at end of file + node schemaCheck.js \ No newline at end of file diff --git a/tools/index.js b/tools/index.js deleted file mode 100644 index 760b97f9f96c..000000000000 --- a/tools/index.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * This removed `network` param from all the chain files - * Since this is the only tool here, it is here in index.js - */ - const fs = require('fs'); - const { exec } = require('child_process'); - const Ajv = require("ajv") - const ajv = new Ajv() - const fs = require('fs'); - const schema = require('./chainSchema.json') - const chainFiles = fs.readdirSync('../_data/chains/'); - - for(const chainFile of chainFiles){ - const fileLocation = `../_data/chains/${chainFile}` - const fileData = fs.readFileSync(fileLocation,'utf8') - const fileDataJson = JSON.parse(fileData) - - if(fileDataJson.network){ - delete fileDataJson.network - fs.writeFileSync(fileLocation, JSON.stringify(fileDataJson, null, 2)) - } - } - - // TODO: Move to Different FIle - for(const chainFile of chainFiles){ - const fileLocation = `../_data/chains/${chainFile}` - const fileData = fs.readFileSync(fileLocation,'utf8') - const fileDataJson = JSON.parse(fileData) - const valid = ajv.validate(schema, fileDataJson) - const filesWithErrors = [] - if(!valid) { - console.error(ajv.errors) - filesWithErrors.push(chainFile) - } - if(filesWithErrors.length > 0){ - throw new Error(`Invalid JSON Schema in ${filesWithErrors.length} files at ${filesWithErrors.join(",")}`) - } - } - - - - // TODO: Run `npx prettier --write --ignore-unknown _data`from Project Directory \ No newline at end of file diff --git a/tools/rmNetwork.js b/tools/rmNetwork.js new file mode 100644 index 000000000000..603add0a4d85 --- /dev/null +++ b/tools/rmNetwork.js @@ -0,0 +1,21 @@ +/** + * This removed `network` param from all the chain files + * Since this is the only tool here, it is here in index.js + */ + +const fs = require('fs'); +const chainFiles = fs.readdirSync('../_data/chains/'); + +for (const chainFile of chainFiles) { + const fileLocation = `../_data/chains/${chainFile}` + const fileData = fs.readFileSync(fileLocation, 'utf8') + const fileDataJson = JSON.parse(fileData) + + if (fileDataJson.network) { + delete fileDataJson.network + fs.writeFileSync(fileLocation, JSON.stringify(fileDataJson, null, 2)) + } +} + +// Note: +// Run `npx prettier --write --ignore-unknown _data`from Project Directory \ No newline at end of file diff --git a/tools/schemaCheck.js b/tools/schemaCheck.js new file mode 100644 index 000000000000..0eaae9a51cda --- /dev/null +++ b/tools/schemaCheck.js @@ -0,0 +1,20 @@ +const fs = require('fs'); +const Ajv = require("ajv") +const ajv = new Ajv() +const schema = require('./chainSchema.json') +const chainFiles = fs.readdirSync('../_data/chains/'); + +for(const chainFile of chainFiles){ + const fileLocation = `../_data/chains/${chainFile}` + const fileData = fs.readFileSync(fileLocation,'utf8') + const fileDataJson = JSON.parse(fileData) + const valid = ajv.validate(schema, fileDataJson) + const filesWithErrors = [] + if(!valid) { + console.error(ajv.errors) + filesWithErrors.push(chainFile) + } + if(filesWithErrors.length > 0){ + throw new Error(`Invalid JSON Schema in ${filesWithErrors.length} files at ${filesWithErrors.join(",")}`) + } +} \ No newline at end of file From 5e49c2c1c4559177a3c182c6b3f71d12cf1eca98 Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 08:40:50 +0000 Subject: [PATCH 06/13] Fixed JSON Schema --- tools/schema/chainSchema.json | 18 ++++++++++++++++++ tools/schemaCheck.js | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/tools/schema/chainSchema.json b/tools/schema/chainSchema.json index 4c206687eb8f..ff3e27570786 100644 --- a/tools/schema/chainSchema.json +++ b/tools/schema/chainSchema.json @@ -8,6 +8,10 @@ "type":"string", "description": "Name of the Network" }, + "title":{ + "type":"string", + "description": "Optional title for the Network" + }, "chain":{ "type":"string", "description": "Name of the Network" @@ -88,6 +92,20 @@ } } } + }, + "parent":{ + "type":"object", + "properties": { + "type":{ + "type":"string" + }, + "chain":{ + "type":"string" + } + } + }, + "status":{ + "type":"string" } }, "additionalProperties": false diff --git a/tools/schemaCheck.js b/tools/schemaCheck.js index 0eaae9a51cda..8a0c29a12b4e 100644 --- a/tools/schemaCheck.js +++ b/tools/schemaCheck.js @@ -1,7 +1,7 @@ const fs = require('fs'); const Ajv = require("ajv") const ajv = new Ajv() -const schema = require('./chainSchema.json') +const schema = require('./schema/chainSchema.json') const chainFiles = fs.readdirSync('../_data/chains/'); for(const chainFile of chainFiles){ From 1566c1bf2db8bef5cc5d5ad2279114d15f834db1 Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 08:41:30 +0000 Subject: [PATCH 07/13] Fixed typo --- .github/workflows/validate_json.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate_json.yml b/.github/workflows/validate_json.yml index be3338d09b57..493033306a23 100644 --- a/.github/workflows/validate_json.yml +++ b/.github/workflows/validate_json.yml @@ -1,4 +1,4 @@ -name: Check JSON Schemaact -j +name: Check JSON Schema on: push: From 91739b7d710dd46499095652dea9b5a5963ebc40 Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 08:44:13 +0000 Subject: [PATCH 08/13] Removed auto generated file --- tools/core.6929 | Bin 176128 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tools/core.6929 diff --git a/tools/core.6929 b/tools/core.6929 deleted file mode 100644 index bcbcc55a1c2484f8b9513631443e3ebb5a16023e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176128 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 From 5fca6ea129d8a561f5e35bad36957c1e60b81b12 Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 09:31:29 +0000 Subject: [PATCH 09/13] updated required fields in chainSchema --- tools/schema/chainSchema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/schema/chainSchema.json b/tools/schema/chainSchema.json index ff3e27570786..b70ce925b62e 100644 --- a/tools/schema/chainSchema.json +++ b/tools/schema/chainSchema.json @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/schema#", "title": "EIP155 Chain Data", "type":"object", - "required": ["name","chain","rpc","nativeCurrency","chainId","networkId"], + "required": ["name","shortName","chain","chainId","networkId","rpc","faucets","infoURL","nativeCurrency"], "properties": { "name":{ "type":"string", From 85fe162a2d135061d368e86462dcf3868200c603 Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 09:40:17 +0000 Subject: [PATCH 10/13] updated chain schema --- tools/schema/chainSchema.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tools/schema/chainSchema.json b/tools/schema/chainSchema.json index b70ce925b62e..bd6de5215433 100644 --- a/tools/schema/chainSchema.json +++ b/tools/schema/chainSchema.json @@ -101,6 +101,17 @@ }, "chain":{ "type":"string" + }, + "bridges":{ + "type":"array", + "items": { + "type":"object", + "properties":{ + "url": { + "type":"string" + } + } + } } } }, From ad4866baff714defcd7200b718d490550c402b40 Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 09:40:39 +0000 Subject: [PATCH 11/13] removed `network` from README.md example --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 6ae3a131afe2..f9a1d6a5e898 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,6 @@ The source data is in _data/chains. Each chain has its own file with the filenam { "name": "Ethereum Mainnet", "chain": "ETH", - "network": "mainnet", "rpc": [ "https://mainnet.infura.io/v3/${INFURA_API_KEY}", "https://api.mycryptoapi.com/eth" From 1953edee97217a3ca35ae852a25fdbcaee233f0a Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 09:52:46 +0000 Subject: [PATCH 12/13] improved schemaCheck script --- tools/schema/chainSchema.json | 6 +++--- tools/schemaCheck.js | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/tools/schema/chainSchema.json b/tools/schema/chainSchema.json index bd6de5215433..144876e231f6 100644 --- a/tools/schema/chainSchema.json +++ b/tools/schema/chainSchema.json @@ -8,6 +8,9 @@ "type":"string", "description": "Name of the Network" }, + "shortName":{ + "type":"string" + }, "title":{ "type":"string", "description": "Optional title for the Network" @@ -53,9 +56,6 @@ "type":"string", "description": "infoURL" }, - "shortName":{ - "type":"string" - }, "chainId":{ "type":"number", "description": "Chain ID of the Network" diff --git a/tools/schemaCheck.js b/tools/schemaCheck.js index 8a0c29a12b4e..f74295875bee 100644 --- a/tools/schemaCheck.js +++ b/tools/schemaCheck.js @@ -4,17 +4,18 @@ const ajv = new Ajv() const schema = require('./schema/chainSchema.json') const chainFiles = fs.readdirSync('../_data/chains/'); +const filesWithErrors = [] for(const chainFile of chainFiles){ const fileLocation = `../_data/chains/${chainFile}` const fileData = fs.readFileSync(fileLocation,'utf8') const fileDataJson = JSON.parse(fileData) const valid = ajv.validate(schema, fileDataJson) - const filesWithErrors = [] if(!valid) { console.error(ajv.errors) filesWithErrors.push(chainFile) } - if(filesWithErrors.length > 0){ - throw new Error(`Invalid JSON Schema in ${filesWithErrors.length} files at ${filesWithErrors.join(",")}`) - } +} + +if(filesWithErrors.length > 0){ + throw new Error(`Invalid JSON Schema in ${filesWithErrors.length} files at ${filesWithErrors.join(",")}`) } \ No newline at end of file From f7a27171758094f746485baafc000cbb200b20f0 Mon Sep 17 00:00:00 2001 From: Ashutosh Kumar Date: Sun, 28 Aug 2022 10:05:37 +0000 Subject: [PATCH 13/13] Matching ChainID with file name schema. --- tools/schemaCheck.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/schemaCheck.js b/tools/schemaCheck.js index f74295875bee..e64e454a4c2e 100644 --- a/tools/schemaCheck.js +++ b/tools/schemaCheck.js @@ -9,6 +9,10 @@ for(const chainFile of chainFiles){ const fileLocation = `../_data/chains/${chainFile}` const fileData = fs.readFileSync(fileLocation,'utf8') const fileDataJson = JSON.parse(fileData) + const chainIdFromFileName = chainFile.match(/eip155-(\d+)\.json/)[1] + if(chainIdFromFileName != fileDataJson.chainId){ + throw new Error(`File Name does not match with ChainID in ${chainFile}`) + } const valid = ajv.validate(schema, fileDataJson) if(!valid) { console.error(ajv.errors)