mirror of
https://github.com/Instadapp/chains.git
synced 2024-07-29 22:37:19 +00:00
Fix CAIP-2 support in schemaCheck.js (#1674)
Co-authored-by: ligi <ligi@ligi.de>
This commit is contained in:
parent
c57b92cff3
commit
2f42e78adb
|
@ -1,29 +1,37 @@
|
|||
const fs = require('fs');
|
||||
const fs = require("fs")
|
||||
const Ajv = require("ajv")
|
||||
const ajv = new Ajv()
|
||||
const schema = require('./schema/chainSchema.json')
|
||||
const chainFiles = fs.readdirSync('../_data/chains/');
|
||||
const schema = require("./schema/chainSchema.json")
|
||||
const chainFiles = fs.readdirSync("../_data/chains/")
|
||||
|
||||
// https://chainagnostic.org/CAIPs/caip-2
|
||||
const parseChainId = (chainId) =>
|
||||
/^(?<namespace>[-a-z0-9]{3,8})-(?<reference>[-a-zA-Z0-9]{1,32})$/u.exec(
|
||||
chainId
|
||||
)
|
||||
|
||||
const filesWithErrors = []
|
||||
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]
|
||||
const parsedChainId = parseInt(chainIdFromFileName, 10);
|
||||
if(chainIdFromFileName != parsedChainId.toString()){
|
||||
throw new Error(`File name does not match parsed ChainID ${parsedChainId} in ${chainFile}`)
|
||||
}
|
||||
if(parsedChainId !== 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)
|
||||
filesWithErrors.push(chainFile)
|
||||
}
|
||||
for (const chainFile of chainFiles) {
|
||||
const fileLocation = `../_data/chains/${chainFile}`
|
||||
const fileData = fs.readFileSync(fileLocation, "utf8")
|
||||
const fileDataJson = JSON.parse(fileData)
|
||||
const fileName = chainFile.split(".")[0]
|
||||
const parsedChainId = parseChainId(fileName)?.groups
|
||||
const chainIdFromFileName = parsedChainId?.reference
|
||||
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)
|
||||
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(",")}`
|
||||
)
|
||||
}
|
Loading…
Reference in New Issue
Block a user