mx-jpush-expo
Version:
Expo 集成极光推送(JPush)一体化解决方案,支持 iOS/Android 厂商通道
73 lines • 3.13 kB
JavaScript
;
/**
* JPush Config Plugin Types
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateProps = validateProps;
exports.resolveProps = resolveProps;
function validateBooleanVendorChannel(vendorChannels, key, label) {
const channel = vendorChannels?.[key];
if (!channel) {
return;
}
if (typeof channel.enabled !== 'boolean') {
throw new Error(`[MX_JPush_Expo] vendorChannels.${label}.enabled 必须存在且为布尔值`);
}
}
function validateRequiredVendorChannelStringField(vendorChannels, key, requiredField) {
const channel = vendorChannels?.[key];
if (!channel) {
return;
}
const value = channel[requiredField];
if (typeof value !== 'string' || value.trim().length === 0) {
throw new Error(`[MX_JPush_Expo] vendorChannels.${key}.${requiredField} 是必填项,且必须是非空字符串`);
}
}
function validateVendorChannels(vendorChannels) {
validateBooleanVendorChannel(vendorChannels, 'huawei', 'huawei');
validateBooleanVendorChannel(vendorChannels, 'fcm', 'fcm');
validateRequiredVendorChannelStringField(vendorChannels, 'meizu', 'appKey');
validateRequiredVendorChannelStringField(vendorChannels, 'meizu', 'appId');
validateRequiredVendorChannelStringField(vendorChannels, 'xiaomi', 'appId');
validateRequiredVendorChannelStringField(vendorChannels, 'xiaomi', 'appKey');
validateRequiredVendorChannelStringField(vendorChannels, 'oppo', 'appKey');
validateRequiredVendorChannelStringField(vendorChannels, 'oppo', 'appId');
validateRequiredVendorChannelStringField(vendorChannels, 'oppo', 'appSecret');
validateRequiredVendorChannelStringField(vendorChannels, 'vivo', 'appKey');
validateRequiredVendorChannelStringField(vendorChannels, 'vivo', 'appId');
validateRequiredVendorChannelStringField(vendorChannels, 'honor', 'appId');
validateRequiredVendorChannelStringField(vendorChannels, 'nio', 'appId');
}
/**
* 验证插件参数
* @throws {Error} 当参数无效时抛出错误
*/
function validateProps(props) {
if (!props) {
throw new Error('[MX_JPush_Expo] 插件配置不能为空');
}
if (!props.appKey || typeof props.appKey !== 'string') {
throw new Error('[MX_JPush_Expo] appKey 是必填项,且必须是字符串');
}
if (!props.channel || typeof props.channel !== 'string') {
throw new Error('[MX_JPush_Expo] channel 是必填项,且必须是字符串');
}
if (!props.packageName || typeof props.packageName !== 'string') {
throw new Error('[MX_JPush_Expo] packageName 是必填项,且必须是字符串');
}
if (props.apsForProduction !== undefined && typeof props.apsForProduction !== 'boolean') {
throw new Error('[MX_JPush_Expo] apsForProduction 必须是布尔值');
}
validateVendorChannels(props.vendorChannels);
}
/**
* 归一化插件参数,补齐内部默认值
*/
function resolveProps(props) {
return {
...props,
apsForProduction: props.apsForProduction ?? false,
};
}
//# sourceMappingURL=types.js.map