mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-12 03:01:16 +00:00
35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
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);
|
|
}
|
|
})(); |