react-native-integrate
Version:
Automate integration of additional code into React Native projects
33 lines (32 loc) • 1.54 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseConfig = parseConfig;
exports.parseConfigString = parseConfigString;
const ajv_1 = __importDefault(require("ajv"));
const fs_1 = __importDefault(require("fs"));
const yaml_1 = require("yaml");
const constants_1 = require("../constants");
const integrate_schema_json_1 = __importDefault(require("../schema/integrate.schema.json"));
const upgrade_schema_json_1 = __importDefault(require("../schema/upgrade.schema.json"));
const ajv = new ajv_1.default({ allowUnionTypes: true });
const validateIntegrate = ajv.compile(integrate_schema_json_1.default);
const validateUpgrade = ajv.compile(upgrade_schema_json_1.default);
function parseConfig(configPath) {
const configContent = fs_1.default.readFileSync(configPath, 'utf8');
return parseConfigString(configContent, configPath.endsWith(constants_1.Constants.UPGRADE_CONFIG_FILE_NAME)
? 'upgrade'
: 'integrate');
}
function parseConfigString(configContent, schema) {
const config = (0, yaml_1.parse)(configContent);
if (schema == 'integrate' && !validateIntegrate(config)) {
throw new Error(validateIntegrate.errors?.map(e => e.message).join(', '));
}
else if (schema == 'upgrade' && !validateUpgrade(config)) {
throw new Error(validateUpgrade.errors?.map(e => e.message).join(', '));
}
return config;
}