UNPKG

@hyext/builder-neorn

Version:

neo react-native builder for hyext

99 lines (98 loc) 4.02 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.middemoextProviderFactory = void 0; const ramda_1 = __importDefault(require("ramda")); const fs_extra_1 = __importDefault(require("fs-extra")); const utils_1 = require("../lib/utils"); const baseProvider_1 = require("./baseProvider"); const SDKName = '@hyext/ext-sdk-common'; const SDKInfos = { '0.58.5': { max: { [SDKName]: '1.15.1-alpha', }, }, '0.62.2': { min: { [SDKName]: '2.0.14-beta.1', }, }, }; const getPkgSDKVersions = (dependencies = {}) => (ramda_1.default.pick([SDKName], dependencies) || {}); const getShouldInstallSDKVersions = (dependencies, RNVersion) => { const pkgSDKVersions = getPkgSDKVersions(dependencies); if (!utils_1.isExactlyVersions(pkgSDKVersions)) { utils_1.logger.error(`SDK 依赖请写精确版本号: ${JSON.stringify(pkgSDKVersions)}`); process.exit(1); } switch (RNVersion) { case '0.58.5': return utils_1.isLE(pkgSDKVersions, SDKInfos['0.58.5'].max) ? pkgSDKVersions : utils_1.updatePkgVersion(SDKInfos['0.58.5'].max, pkgSDKVersions); default: return utils_1.isGE(pkgSDKVersions, SDKInfos['0.62.2'].min) ? pkgSDKVersions : utils_1.updatePkgVersion(SDKInfos['0.62.2'].min, pkgSDKVersions); } }; const validateSDKVersion = (dependencies, RNVersion, isDev) => { const pkgSDKVersions = getPkgSDKVersions(dependencies); if (!utils_1.isExactlyVersions(pkgSDKVersions)) { return { isValid: false, message: `SDK 依赖请写精确版本号: ${JSON.stringify(pkgSDKVersions)}`, }; } const shouldInstallSDKVer = getShouldInstallSDKVersions(dependencies, RNVersion); if (!ramda_1.default.equals(shouldInstallSDKVer, pkgSDKVersions)) { return { isValid: !isDev, message: `项目所声明的SDK依赖不满足RN版本: ${RNVersion}. \n请安装版本: ${JSON.stringify(shouldInstallSDKVer)}`, }; } return { isValid: true, }; }; function getBaseModulesPath(projectRoot) { return require.resolve(`${SDKName}/baseModules`, { paths: [projectRoot] }); } function getBaseModules(projectRoot) { const baseModulesPath = getBaseModulesPath(projectRoot); if (fs_extra_1.default.existsSync(baseModulesPath)) { return new Set(fs_extra_1.default.readFileSync(baseModulesPath) .toString() .split('\n')); } return new Set(); } const getSDKVerByExtType = (dependencies, RNVersion) => { const shouldInstallSDKVer = getShouldInstallSDKVersions(dependencies, RNVersion); return shouldInstallSDKVer[SDKName]; }; function middemoextProviderFactory(options) { const { projectRoot, buildConfig, dependencies = {}, RNVersion = '0.62.2', isDev = true } = options; const baseProvider = baseProvider_1.baseProviderFactory(options); return { hostId: 'middemoext', SDKAlias: { 'open-sdk': [SDKName] }, isBuildConfigValid: true, shouldInstallSDKVer: getShouldInstallSDKVersions(dependencies, RNVersion), SDKVersionValidation: validateSDKVersion(dependencies, RNVersion, isDev), projectConfig: ramda_1.default.mergeDeepLeft({ ignore: [ ...baseProvider.projectConfig.ignore, `node_modules/${SDKName}/**`, ] }, baseProvider.projectConfig), getBaseModules: (extType) => getBaseModules(projectRoot), getBaseModulesPath: (extType) => getBaseModulesPath(projectRoot), getSDKVerByExtType: (extType) => getSDKVerByExtType(dependencies, RNVersion), groupBuildConfigFn: (config) => config.extType }; } exports.middemoextProviderFactory = middemoextProviderFactory;