qidian-shared 1.0.62 → 1.0.64

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/index.mjs CHANGED
@@ -22,7 +22,7 @@ import { abortWrapper, suspectedWrapperPromise, to, waitTime } from "./utils/pro
22
22
  import { camelize, copy2Clipboard, deleteSpace, initialConversion, kebabCase, levenshtein } from "./utils/str.mjs";
23
23
  import { identifyType, isFunction, isObject, isPromise, objToStr, toTypeStr } from "./utils/type.mjs";
24
24
  import { deleteUrlParams, getUrlParam, getUrlParams, setUrlParam } from "./utils/url.mjs";
25
- import { validator, validatorRegs } from "./utils/validator.mjs";
25
+ import { checkValue, validator, validatorRegs } from "./utils/validator.mjs";
26
26
  export {
27
27
  MD5,
28
28
  abortWrapper,
@@ -32,6 +32,7 @@ export {
32
32
  buildTree,
33
33
  camelize,
34
34
  checkSameObject,
35
+ checkValue,
35
36
  copy2Clipboard,
36
37
  createEnum,
37
38
  cutFileSuffix,
@@ -6,9 +6,7 @@ function initialConversion(str, isLowerCase) {
6
6
  }
7
7
  }
8
8
  function camelize(str) {
9
- return str.replace(/-|_(\w)/g, (_, c) => {
10
- return c ? c.toUpperCase() : "";
11
- });
9
+ return str.replace(/[-_](\w)/g, (_, c) => c.toUpperCase());
12
10
  }
13
11
  function kebabCase(str, separator = "-") {
14
12
  return str.replace(/([A-Z])/g, `${separator}$1`).toLowerCase().replace(new RegExp(`^\\${separator}`), "");
@@ -1 +1 @@
1
- {"version":3,"file":"str.mjs","sources":["../../src/utils/str.ts"],"sourcesContent":["/**\n * 首字母转换\n * @param str 要转换的string\n * @param isLowerCase 首字母是否小写(默认大写)\n * @returns 结果\n */\nexport function initialConversion(str: string, isLowerCase?: boolean) {\n if (!isLowerCase) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n } else {\n return str.charAt(0).toLowerCase() + str.slice(1)\n }\n}\n\n/**\n * 驼峰化\n * @param str\n * @returns 结果\n */\nexport function camelize(str: string) {\n return str.replace(/-|_(\\w)/g, (_, c) => {\n return c ? c.toUpperCase() : ''\n })\n}\n\n/**\n * 驼峰转短横线\n * @param str\n * @param separator 分隔符(默认-)\n * @returns 结果\n */\nexport function kebabCase(str: string, separator = '-') {\n return str\n .replace(/([A-Z])/g, `${separator}$1`)\n .toLowerCase()\n .replace(new RegExp(`^\\\\${separator}`), '')\n}\n\n/**\n * 获取相似度\n * @param a 内容\n * @param b 内容\n * @returns 相似度\n */\nexport function levenshtein(a: string, b: string) {\n const matrix: number[][] = []\n\n for (let i = 0; i <= b.length; i++) {\n matrix[i] = [i]\n }\n for (let j = 0; j <= a.length; j++) {\n matrix[0][j] = j\n }\n\n for (let i = 1; i <= b.length; i++) {\n for (let j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) === a.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1]\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j - 1] + 1,\n matrix[i][j - 1] + 1,\n matrix[i - 1][j] + 1\n )\n }\n }\n }\n\n return 1 - matrix[b.length][a.length] / Math.max(a.length, b.length)\n}\n\n/**\n * 复制文本到剪贴板\n * @param input 文本\n * @param options.target 默认为 body\n */\nexport function copy2Clipboard(input: string, { target = document.body } = {}) {\n const element = document.createElement('textarea')\n const previouslyFocusedElement = document.activeElement\n\n element.value = input\n\n // Prevent keyboard from showing on mobile\n element.setAttribute('readonly', '')\n\n element.style.contain = 'strict'\n element.style.position = 'absolute'\n element.style.left = '-9999px'\n element.style.fontSize = '12pt' // Prevent zooming on iOS\n\n const selection = document.getSelection()\n const originalRange = selection && selection.rangeCount > 0 && selection.getRangeAt(0)\n\n target.append(element)\n element.select()\n\n // Explicit selection workaround for iOS\n element.selectionStart = 0\n element.selectionEnd = input.length\n\n let isSuccess = false\n try {\n isSuccess = document.execCommand('copy')\n } catch {\n // ignore\n }\n\n element.remove()\n\n if (originalRange) {\n selection.removeAllRanges()\n selection.addRange(originalRange)\n }\n\n // Get the focus back on the previously focused element, if any\n if (previouslyFocusedElement) {\n // @ts-expect-error-error\n previouslyFocusedElement?.focus()\n }\n\n return isSuccess\n}\n\n/**\n * 删除所有空格\n * @param str 值\n * @returns 删除空格后的值\n */\nexport function deleteSpace(str: string) {\n return str.replace(/\\s*/g, '')\n}\n"],"names":[],"mappings":"AAMO,SAAS,kBAAkB,KAAa,aAAuB;AACpE,MAAI,CAAC,aAAa;AAChB,WAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAAA,EAClD,OAAO;AACL,WAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAAA,EAClD;AACF;AAOO,SAAS,SAAS,KAAa;AACpC,SAAO,IAAI,QAAQ,YAAY,CAAC,GAAG,MAAM;AACvC,WAAO,IAAI,EAAE,YAAA,IAAgB;AAAA,EAC/B,CAAC;AACH;AAQO,SAAS,UAAU,KAAa,YAAY,KAAK;AACtD,SAAO,IACJ,QAAQ,YAAY,GAAG,SAAS,IAAI,EACpC,YAAA,EACA,QAAQ,IAAI,OAAO,MAAM,SAAS,EAAE,GAAG,EAAE;AAC9C;AAQO,SAAS,YAAY,GAAW,GAAW;AAChD,QAAM,SAAqB,CAAA;AAE3B,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,WAAO,CAAC,IAAI,CAAC,CAAC;AAAA,EAChB;AACA,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,WAAO,CAAC,EAAE,CAAC,IAAI;AAAA,EACjB;AAEA,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,aAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,UAAI,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG;AACvC,eAAO,CAAC,EAAE,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,MACpC,OAAO;AACL,eAAO,CAAC,EAAE,CAAC,IAAI,KAAK;AAAA,UAClB,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;AAAA,UACvB,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI;AAAA,UACnB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI;AAAA,QAAA;AAAA,MAEvB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM;AACrE;AAOO,SAAS,eAAe,OAAe,EAAE,SAAS,SAAS,KAAA,IAAS,IAAI;AAC7E,QAAM,UAAU,SAAS,cAAc,UAAU;AACjD,QAAM,2BAA2B,SAAS;AAE1C,UAAQ,QAAQ;AAGhB,UAAQ,aAAa,YAAY,EAAE;AAEnC,UAAQ,MAAM,UAAU;AACxB,UAAQ,MAAM,WAAW;AACzB,UAAQ,MAAM,OAAO;AACrB,UAAQ,MAAM,WAAW;AAEzB,QAAM,YAAY,SAAS,aAAA;AAC3B,QAAM,gBAAgB,aAAa,UAAU,aAAa,KAAK,UAAU,WAAW,CAAC;AAErF,SAAO,OAAO,OAAO;AACrB,UAAQ,OAAA;AAGR,UAAQ,iBAAiB;AACzB,UAAQ,eAAe,MAAM;AAE7B,MAAI,YAAY;AAChB,MAAI;AACF,gBAAY,SAAS,YAAY,MAAM;AAAA,EACzC,QAAQ;AAAA,EAER;AAEA,UAAQ,OAAA;AAER,MAAI,eAAe;AACjB,cAAU,gBAAA;AACV,cAAU,SAAS,aAAa;AAAA,EAClC;AAGA,MAAI,0BAA0B;AAE5B,8BAA0B,MAAA;AAAA,EAC5B;AAEA,SAAO;AACT;AAOO,SAAS,YAAY,KAAa;AACvC,SAAO,IAAI,QAAQ,QAAQ,EAAE;AAC/B;"}
1
+ {"version":3,"file":"str.mjs","sources":["../../src/utils/str.ts"],"sourcesContent":["/**\n * 首字母转换\n * @param str 要转换的string\n * @param isLowerCase 首字母是否小写(默认大写)\n * @returns 结果\n */\nexport function initialConversion(str: string, isLowerCase?: boolean) {\n if (!isLowerCase) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n } else {\n return str.charAt(0).toLowerCase() + str.slice(1)\n }\n}\n\n/**\n * 驼峰化\n * @param str\n * @returns 结果\n */\nexport function camelize(str: string) {\n return str.replace(/[-_](\\w)/g, (_, c) => c.toUpperCase())\n}\n\n/**\n * 驼峰转短横线\n * @param str\n * @param separator 分隔符(默认-)\n * @returns 结果\n */\nexport function kebabCase(str: string, separator = '-') {\n return str\n .replace(/([A-Z])/g, `${separator}$1`)\n .toLowerCase()\n .replace(new RegExp(`^\\\\${separator}`), '')\n}\n\n/**\n * 获取相似度\n * @param a 内容\n * @param b 内容\n * @returns 相似度\n */\nexport function levenshtein(a: string, b: string) {\n const matrix: number[][] = []\n\n for (let i = 0; i <= b.length; i++) {\n matrix[i] = [i]\n }\n for (let j = 0; j <= a.length; j++) {\n matrix[0][j] = j\n }\n\n for (let i = 1; i <= b.length; i++) {\n for (let j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) === a.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1]\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j - 1] + 1,\n matrix[i][j - 1] + 1,\n matrix[i - 1][j] + 1\n )\n }\n }\n }\n\n return 1 - matrix[b.length][a.length] / Math.max(a.length, b.length)\n}\n\n/**\n * 复制文本到剪贴板\n * @param input 文本\n * @param options.target 默认为 body\n */\nexport function copy2Clipboard(input: string, { target = document.body } = {}) {\n const element = document.createElement('textarea')\n const previouslyFocusedElement = document.activeElement\n\n element.value = input\n\n // Prevent keyboard from showing on mobile\n element.setAttribute('readonly', '')\n\n element.style.contain = 'strict'\n element.style.position = 'absolute'\n element.style.left = '-9999px'\n element.style.fontSize = '12pt' // Prevent zooming on iOS\n\n const selection = document.getSelection()\n const originalRange = selection && selection.rangeCount > 0 && selection.getRangeAt(0)\n\n target.append(element)\n element.select()\n\n // Explicit selection workaround for iOS\n element.selectionStart = 0\n element.selectionEnd = input.length\n\n let isSuccess = false\n try {\n isSuccess = document.execCommand('copy')\n } catch {\n // ignore\n }\n\n element.remove()\n\n if (originalRange) {\n selection.removeAllRanges()\n selection.addRange(originalRange)\n }\n\n // Get the focus back on the previously focused element, if any\n if (previouslyFocusedElement) {\n // @ts-expect-error-error\n previouslyFocusedElement?.focus()\n }\n\n return isSuccess\n}\n\n/**\n * 删除所有空格\n * @param str 值\n * @returns 删除空格后的值\n */\nexport function deleteSpace(str: string) {\n return str.replace(/\\s*/g, '')\n}\n"],"names":[],"mappings":"AAMO,SAAS,kBAAkB,KAAa,aAAuB;AACpE,MAAI,CAAC,aAAa;AAChB,WAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAAA,EAClD,OAAO;AACL,WAAO,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAAA,EAClD;AACF;AAOO,SAAS,SAAS,KAAa;AACpC,SAAO,IAAI,QAAQ,aAAa,CAAC,GAAG,MAAM,EAAE,aAAa;AAC3D;AAQO,SAAS,UAAU,KAAa,YAAY,KAAK;AACtD,SAAO,IACJ,QAAQ,YAAY,GAAG,SAAS,IAAI,EACpC,YAAA,EACA,QAAQ,IAAI,OAAO,MAAM,SAAS,EAAE,GAAG,EAAE;AAC9C;AAQO,SAAS,YAAY,GAAW,GAAW;AAChD,QAAM,SAAqB,CAAA;AAE3B,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,WAAO,CAAC,IAAI,CAAC,CAAC;AAAA,EAChB;AACA,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,WAAO,CAAC,EAAE,CAAC,IAAI;AAAA,EACjB;AAEA,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,aAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,UAAI,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG;AACvC,eAAO,CAAC,EAAE,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC;AAAA,MACpC,OAAO;AACL,eAAO,CAAC,EAAE,CAAC,IAAI,KAAK;AAAA,UAClB,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;AAAA,UACvB,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI;AAAA,UACnB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI;AAAA,QAAA;AAAA,MAEvB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM;AACrE;AAOO,SAAS,eAAe,OAAe,EAAE,SAAS,SAAS,KAAA,IAAS,IAAI;AAC7E,QAAM,UAAU,SAAS,cAAc,UAAU;AACjD,QAAM,2BAA2B,SAAS;AAE1C,UAAQ,QAAQ;AAGhB,UAAQ,aAAa,YAAY,EAAE;AAEnC,UAAQ,MAAM,UAAU;AACxB,UAAQ,MAAM,WAAW;AACzB,UAAQ,MAAM,OAAO;AACrB,UAAQ,MAAM,WAAW;AAEzB,QAAM,YAAY,SAAS,aAAA;AAC3B,QAAM,gBAAgB,aAAa,UAAU,aAAa,KAAK,UAAU,WAAW,CAAC;AAErF,SAAO,OAAO,OAAO;AACrB,UAAQ,OAAA;AAGR,UAAQ,iBAAiB;AACzB,UAAQ,eAAe,MAAM;AAE7B,MAAI,YAAY;AAChB,MAAI;AACF,gBAAY,SAAS,YAAY,MAAM;AAAA,EACzC,QAAQ;AAAA,EAER;AAEA,UAAQ,OAAA;AAER,MAAI,eAAe;AACjB,cAAU,gBAAA;AACV,cAAU,SAAS,aAAa;AAAA,EAClC;AAGA,MAAI,0BAA0B;AAE5B,8BAA0B,MAAA;AAAA,EAC5B;AAEA,SAAO;AACT;AAOO,SAAS,YAAY,KAAa;AACvC,SAAO,IAAI,QAAQ,QAAQ,EAAE;AAC/B;"}
@@ -1,3 +1,4 @@
1
+ import type { MaybeRef } from 'vue';
1
2
  export declare const validatorRegs: {
2
3
  cellPhone: RegExp;
3
4
  telephone: RegExp;
@@ -5,3 +6,9 @@ export declare const validatorRegs: {
5
6
  email: RegExp;
6
7
  };
7
8
  export declare function validator(value: string | number | undefined | null, type: keyof typeof validatorRegs | 'empty', required?: boolean): boolean | null;
9
+ export declare function checkValue<T = unknown>(value: MaybeRef<T>, options?: {
10
+ interval?: number;
11
+ timeout?: number;
12
+ throwOnTimeout?: boolean;
13
+ validator?: (val: T) => boolean;
14
+ }): Promise<T | undefined>;
@@ -1,3 +1,4 @@
1
+ import { unref } from "vue";
1
2
  import { isEmpty } from "./common.mjs";
2
3
  const validatorRegs = {
3
4
  cellPhone: /^1[3-9]\d{9}$/,
@@ -12,7 +13,37 @@ function validator(value, type, required = false) {
12
13
  if (required && isEmpty(value)) return null;
13
14
  return isEmpty(value) ? false : reg.test(value + "");
14
15
  }
16
+ function checkValue(value, options) {
17
+ return new Promise((resolve, reject) => {
18
+ const {
19
+ interval = 10,
20
+ timeout = 0,
21
+ throwOnTimeout = false,
22
+ validator: validator2 = (val) => !isEmpty(val)
23
+ } = options ?? {};
24
+ const startTime = Date.now();
25
+ function core() {
26
+ const val = unref(value);
27
+ if (validator2(val)) {
28
+ clearInterval(timer);
29
+ resolve(val);
30
+ return;
31
+ }
32
+ if (timeout > 0 && Date.now() - startTime >= timeout) {
33
+ clearInterval(timer);
34
+ if (throwOnTimeout) {
35
+ reject(new Error(`checkValue timeout after ${timeout}ms`));
36
+ } else {
37
+ resolve(void 0);
38
+ }
39
+ }
40
+ }
41
+ core();
42
+ const timer = setInterval(core, interval);
43
+ });
44
+ }
15
45
  export {
46
+ checkValue,
16
47
  validator,
17
48
  validatorRegs
18
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"validator.mjs","sources":["../../src/utils/validator.ts"],"sourcesContent":["import { 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"],"names":[],"mappings":";AAEO,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;"}
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\n core()\n const timer = setInterval(core, interval)\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;AAEvB,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;AAEA,SAAA;AACA,UAAM,QAAQ,YAAY,MAAM,QAAQ;AAAA,EAC1C,CAAC;AACH;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qidian-shared",
3
- "version": "1.0.62",
3
+ "version": "1.0.64",
4
4
  "description": "QiDian 共享工具函数和钩子",
5
5
  "type": "module",
6
6
  "author": "qidian",