UNPKG

react-native-integrate

Version:

Automate integration of additional code into React Native projects

33 lines (32 loc) 1.54 kB
"use strict"; 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; }