@hyext/builder-neorn
Version:
neo react-native builder for hyext
99 lines (98 loc) • 4.02 kB
JavaScript
;
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;