import { createRequestError } from './request-client.js' import { normalizeResponseText } from './response-normalizers.js' export const normalizeRegionParentCode = (value) => { if (value === undefined || value === null || value === '') return '0' if (typeof value !== 'string' || !value.trim()) throw new TypeError('地区父级标识无效') return value.trim() } export const normalizeRegionCode = (value) => { if (typeof value !== 'string' || !value.trim()) throw new TypeError('行政区划编码无效') return value.trim() } export const normalizeRegionSelectorItems = (value) => { if (!Array.isArray(value)) { throw createRequestError('地区选择响应不是列表', 'REGION_RESPONSE_INVALID') } return value.map((item) => { if (!item || typeof item !== 'object' || Array.isArray(item)) { throw createRequestError('地区选择响应包含无效条目', 'REGION_RESPONSE_INVALID') } const regionCode = normalizeResponseText(item.regionCode ?? item.value, 'regionCode') const label = normalizeResponseText(item.label ?? item.regionName, 'label') if (!regionCode || !label) { throw createRequestError('地区选择响应缺少地区名称或标识', 'REGION_RESPONSE_INVALID') } return { regionCode, label, parentCode: normalizeResponseText(item.parentCode, 'parentCode'), leaf: item.leaf === true, regionLevel: Number.isInteger(item.regionLevel) ? item.regionLevel : null } }) }