Я написал схему в JavaScript , потому что она проще, которую я могу просто запустить, чтобы превратить ее в JSON .
С этой частью все в порядке, но теперьЯ хочу извлечь подсхему / определение, потому что приложение, с которым я хочу ее использовать, не позволит мне указать путь JSON для интересующей подсхемы.
Поэтому я попытался написать немногоскрипт для его извлечения:
#!/usr/bin/env node
import Ajv from 'ajv';
import Path from 'path';
const ajv = new Ajv({
$data: true,
});
ajv.addSchema(require(Path.resolve(process.argv[2])).default,'x');
const schema = ajv.getSchema(`x#/${process.argv[3]}`).schema;
console.log(JSON.stringify(schema,null,4));
Но я получаю следующее:
{
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"$ref": "#/defs/Identifier"
},
"versions": {
"type": "array",
"items": {
"$ref": "#/defs/TableVersion"
}
}
},
"required": [
"name",
"versions"
]
}
то есть я потерял другие определения!
Существуют ли некоторые методы APIв AJV вытащить подсхему, не нарушая все $ refs?