const yaml = require('js-yaml'); const fs = require('fs'); const path = require('path'); const Ajv = require('ajv'); const { compile } = require('json-schema-to-typescript'); const { ESLint } = require('eslint'); const ajv = new Ajv(); const eslint = new ESLint({ fix: true }); const YamlPath = path.resolve(__dirname, '../schemas/schema.yml'); const JsonPath = path.resolve(__dirname, '../src/validate/schema.json'); const tsPath = path.resolve(__dirname, '../src/core/schema/types.ts'); // Get document, or throw exception on error (async function () { try { const schema = yaml.load(fs.readFileSync(YamlPath, 'utf8')); ajv.compile(schema); fs.writeFileSync(JsonPath, JSON.stringify(schema, null, 2), 'utf-8'); console.log('yaml file is successfully transformed into json'); const ts = await compile(schema, 'ComponentMeta'); fs.writeFileSync(tsPath, ts); // Lint files. This doesn't modify target files. const results = await eslint.lintFiles([tsPath]); // Modify the files with the fixed code. await ESLint.outputFixes(results); console.log('schema/types.d.ts is successfully generated'); } catch (e) { console.log(e); process.exit(1); } })();