UNPKG

maskio

Version:

string and object type data manipulation mask library

69 lines (65 loc) 2.2 kB
/** * 定义预设选项接口 */ interface PresetOptions { [key: string]: any; } declare enum EPresetType { /** 全掩码 */ ALL = "all", /** 银行卡 */ BANK_CARD = "bankCard", /** 证件号 */ ID_CARD = "idCard", /** 姓名 */ USER_NAME = "userName", /** 邮箱 */ EMAIL = "email", /** 电话 */ PHONE = "phone", /** 固定电话 */ LANDLINE = "landline", /** 金额 */ AMOUNT = "amount", /** 验证码 */ VERIFICATION = "verification", /** 地址 */ ADDRESS = "address", /** IP地址 */ IP = "ip", /** URL */ URL = "url", /** 车牌号 */ LICENSE_PLATE = "licensePlate" } declare const preset: PresetOptions; type MaskRulesType = keyof typeof preset; type MaskIoConfig = MaskRulesType | Record<string, [string, string] | MaskRulesType> | [string, string]; /** * 字符串掩码函数 * @param text 要掩码的字符串 * @param config 配置,三种格式 * * 1. 字符串:会匹配对应的预设格式 * 2. 对象:会根据key匹配text找到对应配置 * 3. 数组:第一项是正则匹配,第二项是需要替换的值,特殊情况:第二项如{{*$1}}的字符串,会使用*来获取$1的长度 * * config示例: * 'all' → text: 1234567890,输出**********,根据text的长度进行掩码 * {'^[0-9]$': ['^(.*)$', '***'], '^[a-z]$': ['^(.*)$', '*****']} → text: 1234,输出 ***,text:abcd,输出 ***** * ['^([0-9]{3})(.*)$', '$1{{$2}}'] → text: 123456789,输出 ******789 * * @param defaultConfig 可选的默认配置 * * @returns 掩码后的字符串或原始字符串 */ declare const maskText: (text: string, config: MaskIoConfig, defaultConfig?: MaskIoConfig) => string; type FiledHandler = (val: number | string, pathAr?: any[]) => string; /** * 递归掩码JSON * @param obj - 待处理的对象或数组 * @param config - 配置项,键为路径,值为掩码配置或字段处理函数 * @returns 处理后的对象 */ declare const maskObject: (obj: Record<string, any> | any[], config: Record<string, MaskIoConfig | FiledHandler>) => any; export { EPresetType, type MaskIoConfig, maskObject, maskText };