import { isNormalDisableStatus } from './normal-disable-status.js' export const assertPlainPayload = (payload, allowedFields, label) => { if (!payload || typeof payload !== 'object' || Array.isArray(payload) || Object.getPrototypeOf(payload) !== Object.prototype) { throw new TypeError(`${label}必须是普通对象`) } if (Object.keys(payload).some((field) => !allowedFields.has(field))) { throw new TypeError(`${label}包含未声明字段`) } } export const normalizeOptionalText = (value, label) => { if (value === undefined || value === null) return undefined if (typeof value !== 'string') { throw new TypeError(`${label}必须是字符串`) } const normalized = value.trim() return normalized || undefined } export const normalizeOptionalNormalDisableStatus = (value, label = 'status') => { const status = normalizeOptionalText(value, label) if (status === undefined) return undefined if (!isNormalDisableStatus(status)) throw new TypeError(`${label}必须为 0 或 1`) return status } export const normalizeOssIdString = (value, field) => { if (typeof value !== 'string' || !/^[1-9]\d*$/.test(value)) { throw new TypeError(`${field} 必须是正整数 OSS ID 字符串`) } return value } export const normalizeOptionalSafeInteger = (value, field) => { if (value === undefined || value === null || value === '') return undefined const numericValue = typeof value === 'number' ? value : Number(value) if (!Number.isSafeInteger(numericValue)) throw new TypeError(`${field} 必须是安全整数`) return numericValue } export const normalizeResourcePathId = (value, label) => { if (typeof value === 'string' && /^[1-9]\d*$/.test(value)) return value if (typeof value === 'number' && Number.isSafeInteger(value) && value > 0) return String(value) throw new TypeError(`${label}必须是有效的正整数标识`) } export const normalizeOptionalOssIdList = (value) => { if (value === undefined || value === null || value === '') return undefined if (typeof value !== 'string') throw new TypeError('mediaOssIds 必须是字符串') const normalized = value.trim() if (!/^[1-9]\d*(,[1-9]\d*)*$/.test(normalized)) { throw new TypeError('mediaOssIds 必须是以英文逗号分隔的正整数文件标识') } return normalized }