UNPKG

mx-jpush-expo

Version:

Expo 集成极光推送(JPush)一体化解决方案,支持 iOS/Android 厂商通道

73 lines 3.13 kB
"use strict"; /** * 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