maskio
Version:
string and object type data manipulation mask library
69 lines (65 loc) • 2.2 kB
TypeScript
/**
* 定义预设选项接口
*/
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 };