qidian-shared 1.0.64 → 1.0.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/utils/validator.mjs
CHANGED
|
@@ -22,6 +22,9 @@ function checkValue(value, options) {
|
|
|
22
22
|
validator: validator2 = (val) => !isEmpty(val)
|
|
23
23
|
} = options ?? {};
|
|
24
24
|
const startTime = Date.now();
|
|
25
|
+
let timer;
|
|
26
|
+
core();
|
|
27
|
+
timer = setInterval(core, interval);
|
|
25
28
|
function core() {
|
|
26
29
|
const val = unref(value);
|
|
27
30
|
if (validator2(val)) {
|
|
@@ -38,8 +41,6 @@ function checkValue(value, options) {
|
|
|
38
41
|
}
|
|
39
42
|
}
|
|
40
43
|
}
|
|
41
|
-
core();
|
|
42
|
-
const timer = setInterval(core, interval);
|
|
43
44
|
});
|
|
44
45
|
}
|
|
45
46
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.mjs","sources":["../../src/utils/validator.ts"],"sourcesContent":["import type { MaybeRef } from 'vue'\nimport { unref } from 'vue'\n\nimport { isEmpty } from './common'\n\nexport const validatorRegs = {\n cellPhone: /^1[3-9]\\d{9}$/,\n telephone: /^\\d{7,8}$/,\n url: /^((blob:)*(https|http|ftp|rtsp|mms|wss)?:\\/\\/)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/,\n email: /^([A-Za-z0-9_\\\\-\\\\.\\\\u4e00-\\\\u9fa5])+@([A-Za-z0-9_\\\\-\\\\.])+\\.([A-Za-z]{2,8})$/\n}\n\n/**\n * 验证器函数 - 检查输入值是否符合指定规则\n * @param value 要验证的字符串值\n * @param type 验证类型\n * @param required 是否必填,必填时空值返回 null\n * @returns 验证结果:通过返回 true,失败返回 false,必填为空返回 null\n * @throws Error 当传入不支持的验证类型时抛出异常\n */\nexport function validator(\n value: string | number | undefined | null,\n type: keyof typeof validatorRegs | 'empty',\n required = false\n) {\n if (type === 'empty') return isEmpty(value)\n\n const reg = validatorRegs[type]\n if (!reg) throw new Error(`[validator] 没有 ${type} 类型`)\n if (required && isEmpty(value)) return null\n\n return isEmpty(value) ? false : reg.test(value + '')\n}\n\n/**\n * 循环等待值满足条件\n * @param value Vue ref 对象或普通值\n * @param options 配置项\n * @param options.interval 轮询间隔,默认 10ms\n * @param options.timeout 超时时间,默认 0(不超时)\n * @param options.throwOnTimeout 超时时是否抛错,默认 false\n * @param options.validator 自定义校验函数,返回 true 表示值有效,默认使用 isEmpty 判断\n * @returns Promise,成功返回值,超时时根据 throwOnTimeout 决定返回 undefined 或抛错\n */\nexport function checkValue<T = unknown>(\n value: MaybeRef<T>,\n options?: {\n interval?: number\n timeout?: number\n throwOnTimeout?: boolean\n validator?: (val: T) => boolean\n }\n): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n const {\n interval = 10,\n timeout = 0,\n throwOnTimeout = false,\n validator = (val: T) => !isEmpty(val)\n } = options ?? {}\n\n const startTime = Date.now()\n\n function core() {\n const val = unref(value)\n if (validator(val)) {\n clearInterval(timer)\n resolve(val)\n return\n }\n\n if (timeout > 0 && Date.now() - startTime >= timeout) {\n clearInterval(timer)\n if (throwOnTimeout) {\n reject(new Error(`checkValue timeout after ${timeout}ms`))\n } else {\n resolve(undefined)\n }\n }\n }\n
|
|
1
|
+
{"version":3,"file":"validator.mjs","sources":["../../src/utils/validator.ts"],"sourcesContent":["import type { MaybeRef } from 'vue'\nimport { unref } from 'vue'\n\nimport { isEmpty } from './common'\n\nexport const validatorRegs = {\n cellPhone: /^1[3-9]\\d{9}$/,\n telephone: /^\\d{7,8}$/,\n url: /^((blob:)*(https|http|ftp|rtsp|mms|wss)?:\\/\\/)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/,\n email: /^([A-Za-z0-9_\\\\-\\\\.\\\\u4e00-\\\\u9fa5])+@([A-Za-z0-9_\\\\-\\\\.])+\\.([A-Za-z]{2,8})$/\n}\n\n/**\n * 验证器函数 - 检查输入值是否符合指定规则\n * @param value 要验证的字符串值\n * @param type 验证类型\n * @param required 是否必填,必填时空值返回 null\n * @returns 验证结果:通过返回 true,失败返回 false,必填为空返回 null\n * @throws Error 当传入不支持的验证类型时抛出异常\n */\nexport function validator(\n value: string | number | undefined | null,\n type: keyof typeof validatorRegs | 'empty',\n required = false\n) {\n if (type === 'empty') return isEmpty(value)\n\n const reg = validatorRegs[type]\n if (!reg) throw new Error(`[validator] 没有 ${type} 类型`)\n if (required && isEmpty(value)) return null\n\n return isEmpty(value) ? false : reg.test(value + '')\n}\n\n/**\n * 循环等待值满足条件\n * @param value Vue ref 对象或普通值\n * @param options 配置项\n * @param options.interval 轮询间隔,默认 10ms\n * @param options.timeout 超时时间,默认 0(不超时)\n * @param options.throwOnTimeout 超时时是否抛错,默认 false\n * @param options.validator 自定义校验函数,返回 true 表示值有效,默认使用 isEmpty 判断\n * @returns Promise,成功返回值,超时时根据 throwOnTimeout 决定返回 undefined 或抛错\n */\nexport function checkValue<T = unknown>(\n value: MaybeRef<T>,\n options?: {\n interval?: number\n timeout?: number\n throwOnTimeout?: boolean\n validator?: (val: T) => boolean\n }\n): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n const {\n interval = 10,\n timeout = 0,\n throwOnTimeout = false,\n validator = (val: T) => !isEmpty(val)\n } = options ?? {}\n\n const startTime = Date.now()\n let timer: NodeJS.Timeout | undefined\n\n core()\n timer = setInterval(core, interval)\n\n function core() {\n const val = unref(value)\n if (validator(val)) {\n clearInterval(timer)\n resolve(val)\n return\n }\n\n if (timeout > 0 && Date.now() - startTime >= timeout) {\n clearInterval(timer)\n if (throwOnTimeout) {\n reject(new Error(`checkValue timeout after ${timeout}ms`))\n } else {\n resolve(undefined)\n }\n }\n }\n })\n}\n"],"names":["validator"],"mappings":";;AAKO,MAAM,gBAAgB;AAAA,EAC3B,WAAW;AAAA,EACX,WAAW;AAAA,EACX,KAAK;AAAA,EACL,OAAO;AACT;AAUO,SAAS,UACd,OACA,MACA,WAAW,OACX;AACA,MAAI,SAAS,QAAS,QAAO,QAAQ,KAAK;AAE1C,QAAM,MAAM,cAAc,IAAI;AAC9B,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,kBAAkB,IAAI,KAAK;AACrD,MAAI,YAAY,QAAQ,KAAK,EAAG,QAAO;AAEvC,SAAO,QAAQ,KAAK,IAAI,QAAQ,IAAI,KAAK,QAAQ,EAAE;AACrD;AAYO,SAAS,WACd,OACA,SAMwB;AACxB,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM;AAAA,MACJ,WAAW;AAAA,MACX,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,WAAAA,aAAY,CAAC,QAAW,CAAC,QAAQ,GAAG;AAAA,IAAA,IAClC,WAAW,CAAA;AAEf,UAAM,YAAY,KAAK,IAAA;AACvB,QAAI;AAEJ,SAAA;AACA,YAAQ,YAAY,MAAM,QAAQ;AAElC,aAAS,OAAO;AACd,YAAM,MAAM,MAAM,KAAK;AACvB,UAAIA,WAAU,GAAG,GAAG;AAClB,sBAAc,KAAK;AACnB,gBAAQ,GAAG;AACX;AAAA,MACF;AAEA,UAAI,UAAU,KAAK,KAAK,IAAA,IAAQ,aAAa,SAAS;AACpD,sBAAc,KAAK;AACnB,YAAI,gBAAgB;AAClB,iBAAO,IAAI,MAAM,4BAA4B,OAAO,IAAI,CAAC;AAAA,QAC3D,OAAO;AACL,kBAAQ,MAAS;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;"}
|