lib-tools
Version:
The lib-tools helps you simplify the build, bundle, test and npm packaging workflows for Typescript, JavaScript, Angular library projects and assets module projects.
42 lines • 5.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getWorkflowConfigSchema = exports.readWorkflowConfig = void 0;
const path = require("path");
const ajv_1 = require("ajv");
const fs_extra_1 = require("fs-extra");
const utils_1 = require("../utils");
const ajv = new ajv_1.default();
let workflowConfig = null;
const schemaCache = {
schema: null
};
async function readWorkflowConfig(configPath) {
if (workflowConfig) {
return workflowConfig;
}
workflowConfig = (await utils_1.readJsonWithComments(configPath));
const schema = await getWorkflowConfigSchema();
if (!ajv.getSchema('workflowSchema')) {
ajv.addSchema(schema, 'workflowSchema');
}
const valid = ajv.validate('workflowSchema', workflowConfig);
if (!valid) {
throw new Error(`Invalid workflow configuration. ${ajv.errorsText()}`);
}
return workflowConfig;
}
exports.readWorkflowConfig = readWorkflowConfig;
async function getWorkflowConfigSchema() {
if (schemaCache.schema != null) {
return schemaCache.schema;
}
const schemaRootPath = path.resolve(__dirname, '../schemas');
const schema = (await fs_extra_1.readJson(path.resolve(schemaRootPath, 'schema.json')));
if (schema.$schema) {
delete schema.$schema;
}
schemaCache.schema = schema;
return schema;
}
exports.getWorkflowConfigSchema = getWorkflowConfigSchema;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC13b3JrZmxvdy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiLi8iLCJzb3VyY2VzIjpbImhlbHBlcnMvcmVhZC13b3JrZmxvdy1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBRTdCLDZCQUFzQjtBQUN0Qix1Q0FBb0M7QUFHcEMsb0NBQWdEO0FBRWhELE1BQU0sR0FBRyxHQUFHLElBQUksYUFBRyxFQUFFLENBQUM7QUFFdEIsSUFBSSxjQUFjLEdBQTBCLElBQUksQ0FBQztBQUVqRCxNQUFNLFdBQVcsR0FBa0Q7SUFDL0QsTUFBTSxFQUFFLElBQUk7Q0FDZixDQUFDO0FBRUssS0FBSyxVQUFVLGtCQUFrQixDQUFDLFVBQWtCO0lBQ3ZELElBQUksY0FBYyxFQUFFO1FBQ2hCLE9BQU8sY0FBYyxDQUFDO0tBQ3pCO0lBRUQsY0FBYyxHQUFHLENBQUMsTUFBTSw0QkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBbUIsQ0FBQztJQUM1RSxNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUF1QixFQUFFLENBQUM7SUFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtRQUNsQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0tBQzNDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM3RCxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztLQUMxRTtJQUVELE9BQU8sY0FBYyxDQUFDO0FBQzFCLENBQUM7QUFoQkQsZ0RBZ0JDO0FBRU0sS0FBSyxVQUFVLHVCQUF1QjtJQUN6QyxJQUFJLFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFO1FBQzVCLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztLQUM3QjtJQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzdELE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxtQkFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQStCLENBQUM7SUFFM0csSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2hCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztLQUN6QjtJQUVELFdBQVcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBRTVCLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFmRCwwREFlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCBBanYgZnJvbSAnYWp2JztcbmltcG9ydCB7IHJlYWRKc29uIH0gZnJvbSAnZnMtZXh0cmEnO1xuXG5pbXBvcnQgeyBXb3JrZmxvd0NvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyByZWFkSnNvbldpdGhDb21tZW50cyB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgYWp2ID0gbmV3IEFqdigpO1xuXG5sZXQgd29ya2Zsb3dDb25maWc6IFdvcmtmbG93Q29uZmlnIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IHNjaGVtYUNhY2hlOiB7IHNjaGVtYTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0gfCBudWxsIH0gPSB7XG4gICAgc2NoZW1hOiBudWxsXG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFdvcmtmbG93Q29uZmlnKGNvbmZpZ1BhdGg6IHN0cmluZyk6IFByb21pc2U8V29ya2Zsb3dDb25maWc+IHtcbiAgICBpZiAod29ya2Zsb3dDb25maWcpIHtcbiAgICAgICAgcmV0dXJuIHdvcmtmbG93Q29uZmlnO1xuICAgIH1cblxuICAgIHdvcmtmbG93Q29uZmlnID0gKGF3YWl0IHJlYWRKc29uV2l0aENvbW1lbnRzKGNvbmZpZ1BhdGgpKSBhcyBXb3JrZmxvd0NvbmZpZztcbiAgICBjb25zdCBzY2hlbWEgPSBhd2FpdCBnZXRXb3JrZmxvd0NvbmZpZ1NjaGVtYSgpO1xuICAgIGlmICghYWp2LmdldFNjaGVtYSgnd29ya2Zsb3dTY2hlbWEnKSkge1xuICAgICAgICBhanYuYWRkU2NoZW1hKHNjaGVtYSwgJ3dvcmtmbG93U2NoZW1hJyk7XG4gICAgfVxuICAgIGNvbnN0IHZhbGlkID0gYWp2LnZhbGlkYXRlKCd3b3JrZmxvd1NjaGVtYScsIHdvcmtmbG93Q29uZmlnKTtcbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB3b3JrZmxvdyBjb25maWd1cmF0aW9uLiAke2Fqdi5lcnJvcnNUZXh0KCl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdvcmtmbG93Q29uZmlnO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V29ya2Zsb3dDb25maWdTY2hlbWEoKTogUHJvbWlzZTx7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4ge1xuICAgIGlmIChzY2hlbWFDYWNoZS5zY2hlbWEgIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hQ2FjaGUuc2NoZW1hO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYVJvb3RQYXRoID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uL3NjaGVtYXMnKTtcbiAgICBjb25zdCBzY2hlbWEgPSAoYXdhaXQgcmVhZEpzb24ocGF0aC5yZXNvbHZlKHNjaGVtYVJvb3RQYXRoLCAnc2NoZW1hLmpzb24nKSkpIGFzIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9O1xuXG4gICAgaWYgKHNjaGVtYS4kc2NoZW1hKSB7XG4gICAgICAgIGRlbGV0ZSBzY2hlbWEuJHNjaGVtYTtcbiAgICB9XG5cbiAgICBzY2hlbWFDYWNoZS5zY2hlbWEgPSBzY2hlbWE7XG5cbiAgICByZXR1cm4gc2NoZW1hO1xufVxuIl19