@hyext/builder-neorn
Version:
neo react-native builder for hyext
116 lines (115 loc) • 4.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPublicIP = exports.logger = exports.getSDKName = exports.getUserTypeFromExtType = exports.getSDKRoleFromExtType = exports.updatePkgVersion = exports.isGE = exports.isLE = exports.getHostId = exports.isExactlyVersions = exports.isExactlyVersion = void 0;
const chalk_1 = __importDefault(require("chalk"));
const os_1 = __importDefault(require("os"));
const ramda_1 = __importDefault(require("ramda"));
const compare_versions_1 = __importDefault(require("compare-versions"));
exports.isExactlyVersion = (version) => /^[0-9]+/.test(version);
exports.isExactlyVersions = (SDKVersion) => Object.values(SDKVersion).every(exports.isExactlyVersion);
exports.getHostId = (config) => config.hostId;
/*
* left 的所有版本都小于等于 right 的所有版本
* 如果right指定的依赖, left中不存在=>false
*/
exports.isLE = (left, right) => {
return Object.entries(right)
.every(([name, version]) => {
if (!left[name]) {
return false;
}
return compare_versions_1.default(left[name], version) <= 0;
});
};
/*
* left 的所有版本都大于等于 right 的所有版本
* 如果right指定的依赖, left中不存在=>false
*/
exports.isGE = (left, right) => {
return Object.entries(right)
.every(([name, version]) => {
if (!left[name]) {
return false;
}
return compare_versions_1.default(left[name], version) >= 0;
});
};
exports.updatePkgVersion = (newer, origin) => {
// 有可能是pkgVersion 为空
// const filtedNewVer = R.pick(Object.keys(pkgVersion), newVer)
return ramda_1.default.mergeLeft(newer, origin);
};
exports.getSDKRoleFromExtType = (extType) => {
if (extType.startsWith('app_')) {
return 'audience';
}
if (extType.startsWith('zs_')) {
return 'streamer';
}
throw new Error(`unknown extType: ${extType}, can't extract userRole from it`);
};
exports.getUserTypeFromExtType = (extType) => {
if (extType.startsWith('app_')) {
return 'audience';
}
if (extType.startsWith('zs_')) {
return 'streamer';
}
// FIXME 不关心其他类型
return 'common';
};
exports.getSDKName = (SDKRole) => {
const dict = {
audience: '@hyext/hyext-rn-sdk',
streamer: '@hyext/hyliveext-rn-sdk',
};
return dict[SDKRole];
};
exports.logger = {
error(text) {
console.log(chalk_1.default.red(text));
},
warn(text) {
console.log(chalk_1.default.yellow(text));
},
info(text) {
console.log(chalk_1.default.cyan(text));
},
success(text) {
console.log(chalk_1.default.green(text));
}
};
/*
* export const splitBuildConfigByExtType = (buildConfig: NeoBuildConfig) => {
* const groupFn = (config: NeoBuildConfigItem) => {
* return getSDKRoleFromExtType(config.extType)
* }
*
* return R.groupBy(groupFn, buildConfig)
* }
*
*/
exports.getPublicIP = (config) => {
var _a;
if (config.host && config.host !== 'localhost') {
return config.host;
}
const ifaces = os_1.default.networkInterfaces();
const addresses = ramda_1.default.flatten(ramda_1.default.values(ifaces));
const address = ramda_1.default.filter((iface) => (iface.family === 'IPv4' && !/^127\./.test(iface.address)), addresses);
/*
* 有多个 ip 地址又没有在 config.host 中指定的话, 直接退出
*/
if (address && address.length > 1) {
exports.logger.error(`检测到本机有多个 ip 地址:\n- ${address.map((x) => x.address).join('\n- ')}`);
exports.logger.error('请在 project.config.json 的 host 中指定正确的 ip');
process.exit(1);
}
if (address && address.length <= 0) {
exports.logger.error('未能找到本机 ip 地址, 本地开发 app 侧将无法加载小程序');
}
return (_a = address[0]) === null || _a === void 0 ? void 0 : _a.address;
};