import { createRequestError } from './request-client.js' import { isNormalDisableStatus } from './normal-disable-status.js' export const normalizeOptionalNumericId = (value, label, code) => { if (value === undefined || value === null || value === '') return null if (typeof value === 'string' && /^[1-9]\d*$/.test(value)) return value if (typeof value === 'number' && Number.isSafeInteger(value) && value > 0) return String(value) throw createRequestError(`${label}无效`, code) } export const normalizeResponseText = ( value, label, { code = 'API_RESPONSE_INVALID', subject = '接口响应' } = {} ) => { if (value === undefined || value === null) return '' if (typeof value !== 'string') { throw createRequestError(`${subject}字段 ${label} 无效`, code) } return value.trim() } export const normalizeOptionalResponseText = (value, field, label, code) => { if (value === undefined || value === null) return '' if (typeof value !== 'string') { throw createRequestError(`${label}字段 ${field} 无效`, code) } return value.trim() } export const normalizeNormalDisableResponseStatus = (value, label, code) => { const status = normalizeResponseText(value, label, { code }) if (!status) return '' if (!isNormalDisableStatus(status)) { throw createRequestError(`${label}无效`, code) } return status } export const normalizeOptionalNonnegativeInteger = (value, label, code) => { if (value === undefined || value === null) return 0 if (!Number.isSafeInteger(value) || value < 0) { throw createRequestError(`${label}无效`, code) } return value } export const normalizeOptionalCurrencyAmount = (value, label, code, { required = false } = {}) => { if (value === undefined || value === null || value === '') { if (required) throw createRequestError(`${label}缺失`, code) return '' } if (typeof value !== 'string') throw createRequestError(`${label}无效`, code) const match = value.trim().match(/^(0|[1-9]\d*)(?:\.(\d{1,2}))?$/) if (!match) throw createRequestError(`${label}无效`, code) return `${match[1]}.${(match[2] || '').padEnd(2, '0')}` }