import { createRequestError } from './request-client.js' const referralResponseError = (message) => createRequestError(message, 'REFERRAL_RESPONSE_INVALID') const normalizeReferralText = (value, field, { required = false } = {}) => { if (value === undefined || value === null) { if (required) throw referralResponseError(`推广关系响应缺少 ${field}`) return '' } if (typeof value !== 'string') throw referralResponseError(`推广关系响应 ${field} 无效`) const normalized = value.trim() if (required && !normalized) throw referralResponseError(`推广关系响应缺少 ${field}`) return normalized } export const normalizeReferralProfile = (value) => { if (!value || typeof value !== 'object' || Array.isArray(value)) { throw referralResponseError('推广关系响应无效') } const referralCode = normalizeReferralText(value.referralCode, 'referralCode', { required: true }) if (!/^[A-Za-z0-9_-]{4,64}$/.test(referralCode)) { throw referralResponseError('推广关系响应 referralCode 格式无效') } if (!Number.isSafeInteger(value.referredUserCount) || value.referredUserCount < 0) { throw referralResponseError('推广关系响应 referredUserCount 无效') } const shareUrl = normalizeReferralText(value.shareUrl, 'shareUrl', { required: true }) if (!/^https:\/\/[^\s]+$/i.test(shareUrl)) { throw referralResponseError('推广关系响应 shareUrl 必须是 HTTPS 链接') } return { enabled: true, disabledReason: '', referralCode, referredUserCount: value.referredUserCount, shareTitle: normalizeReferralText(value.shareTitle, 'shareTitle', { required: true }), shareDescription: normalizeReferralText(value.shareText, 'shareText', { required: true }), shareUrl } }