@fast-china/utils 1.0.4 → 1.0.6

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.
Files changed (71) hide show
  1. package/dist/index.global.js +147 -119
  2. package/dist/index.global.js.map +1 -1
  3. package/dist/index.global.min.js +5 -5
  4. package/dist/index.global.min.js.map +1 -1
  5. package/es/array/index.d.ts +19 -0
  6. package/es/array/index.mjs +33 -0
  7. package/es/array/index.mjs.map +1 -0
  8. package/es/base64/index.d.ts +9 -0
  9. package/es/base64/index.mjs +7 -1
  10. package/es/base64/index.mjs.map +1 -1
  11. package/es/click/index.d.ts +3 -0
  12. package/es/click/index.mjs.map +1 -1
  13. package/es/color/index.d.ts +3 -0
  14. package/es/color/index.mjs +8 -7
  15. package/es/color/index.mjs.map +1 -1
  16. package/es/console/index.mjs.map +1 -1
  17. package/es/date/index.d.ts +17 -0
  18. package/es/date/index.mjs +17 -0
  19. package/es/date/index.mjs.map +1 -1
  20. package/es/env/index.d.ts +25 -0
  21. package/es/env/index.mjs +38 -0
  22. package/es/env/index.mjs.map +1 -0
  23. package/es/identity/index.mjs +1 -1
  24. package/es/identity/index.mjs.map +1 -1
  25. package/es/index.d.ts +2 -0
  26. package/es/index.mjs +4 -0
  27. package/es/index.mjs.map +1 -1
  28. package/es/object/index.d.ts +0 -12
  29. package/es/object/index.mjs +0 -97
  30. package/es/object/index.mjs.map +1 -1
  31. package/es/storage/index.mjs +3 -2
  32. package/es/storage/index.mjs.map +1 -1
  33. package/es/string/index.d.ts +21 -0
  34. package/es/string/index.mjs +40 -3
  35. package/es/string/index.mjs.map +1 -1
  36. package/es/vue/props.mjs.map +1 -1
  37. package/es/vue/useRender.mjs +2 -1
  38. package/es/vue/useRender.mjs.map +1 -1
  39. package/lib/array/index.d.ts +19 -0
  40. package/lib/array/index.js +2 -0
  41. package/lib/array/index.js.map +1 -0
  42. package/lib/base64/index.d.ts +9 -0
  43. package/lib/base64/index.js +1 -1
  44. package/lib/base64/index.js.map +1 -1
  45. package/lib/click/index.d.ts +3 -0
  46. package/lib/click/index.js.map +1 -1
  47. package/lib/color/index.d.ts +3 -0
  48. package/lib/color/index.js +1 -1
  49. package/lib/color/index.js.map +1 -1
  50. package/lib/console/index.js.map +1 -1
  51. package/lib/date/index.d.ts +17 -0
  52. package/lib/date/index.js.map +1 -1
  53. package/lib/env/index.d.ts +25 -0
  54. package/lib/env/index.js +2 -0
  55. package/lib/env/index.js.map +1 -0
  56. package/lib/identity/index.js +1 -1
  57. package/lib/identity/index.js.map +1 -1
  58. package/lib/index.d.ts +2 -0
  59. package/lib/index.js +1 -1
  60. package/lib/object/index.d.ts +0 -12
  61. package/lib/object/index.js +1 -1
  62. package/lib/object/index.js.map +1 -1
  63. package/lib/storage/index.js +1 -1
  64. package/lib/storage/index.js.map +1 -1
  65. package/lib/string/index.d.ts +21 -0
  66. package/lib/string/index.js +1 -1
  67. package/lib/string/index.js.map +1 -1
  68. package/lib/vue/props.js.map +1 -1
  69. package/lib/vue/useRender.js +1 -1
  70. package/lib/vue/useRender.js.map +1 -1
  71. package/package.json +9 -8
@@ -13,103 +13,6 @@ const objectUtil = {
13
13
  }
14
14
  }
15
15
  return params;
16
- },
17
- /**
18
- * 是否存在重复值
19
- */
20
- hasDuplicateProperty(arr, prop) {
21
- const values = arr.map((obj) => obj[prop]);
22
- const uniqueValues = new Set(values);
23
- return values.length !== uniqueValues.size;
24
- },
25
- /**
26
- * 是否存在非重复值
27
- */
28
- hasDifferentProperty(arr, prop) {
29
- const valueSet = /* @__PURE__ */ new Set();
30
- for (const obj of arr) {
31
- valueSet.add(obj[prop]);
32
- if (valueSet.size > 1) {
33
- return true;
34
- }
35
- }
36
- return false;
37
- },
38
- /**
39
- * 时间处理翻译
40
- */
41
- dateTimeFix(date) {
42
- if (date !== null && date !== void 0 && date) {
43
- if (typeof date === "string") {
44
- date = new Date(date);
45
- }
46
- let timestamp = date.getTime();
47
- if (timestamp.toString().length < 13) {
48
- const arrTimestamp = timestamp.toString().split("");
49
- for (let start = 0; start < 13; start++) {
50
- if (!arrTimestamp[start]) {
51
- arrTimestamp[start] = "0";
52
- }
53
- }
54
- timestamp = parseInt(arrTimestamp.join(""));
55
- }
56
- const minute = 1e3 * 60;
57
- const hour = minute * 60;
58
- const day = hour * 24;
59
- const month = day * 30;
60
- const curTime = (/* @__PURE__ */ new Date()).getTime();
61
- const diffValue = curTime - timestamp;
62
- const monthC = diffValue / month;
63
- const weekC = diffValue / (7 * day);
64
- const dayC = diffValue / day;
65
- const hourC = diffValue / hour;
66
- const minC = diffValue / minute;
67
- if (diffValue < 0) {
68
- const monthC1 = Math.abs(monthC);
69
- const weekC1 = Math.abs(weekC);
70
- const dayC1 = Math.abs(dayC);
71
- const hourC1 = Math.abs(hourC);
72
- const minC1 = Math.abs(minC);
73
- if (monthC1 > 12) {
74
- return `${parseInt(`${monthC1 / 12}`)}年后`;
75
- } else if (monthC1 >= 6) {
76
- return "半年后";
77
- } else if (monthC1 >= 1) {
78
- return `${parseInt(`${monthC1}`)}月后`;
79
- } else if (weekC1 > 2) {
80
- return "半月后";
81
- } else if (weekC1 >= 1) {
82
- return `${parseInt(`${weekC1}`)}周后`;
83
- } else if (dayC1 >= 1) {
84
- return `${parseInt(`${dayC1}`)}天后`;
85
- } else if (hourC1 >= 1) {
86
- return `${parseInt(`${hourC1}`)}小时后`;
87
- } else if (minC1 >= 1) {
88
- return `${parseInt(`${minC1}`)}分钟后`;
89
- }
90
- return "刚刚";
91
- }
92
- if (monthC > 12) {
93
- return `${parseInt(`${monthC / 12}`)}年前`;
94
- } else if (monthC >= 6) {
95
- return "半年前";
96
- } else if (monthC >= 1) {
97
- return `${parseInt(`${monthC}`)}月前`;
98
- } else if (weekC > 2) {
99
- return "半月前";
100
- } else if (weekC >= 1) {
101
- return `${parseInt(`${weekC}`)}周前`;
102
- } else if (dayC >= 1) {
103
- return `${parseInt(`${dayC}`)}天前`;
104
- } else if (hourC >= 1) {
105
- return `${parseInt(`${hourC}`)}小时前`;
106
- } else if (minC >= 1) {
107
- return `${parseInt(`${minC}`)}分钟前`;
108
- }
109
- return "刚刚";
110
- } else {
111
- return "";
112
- }
113
16
  }
114
17
  };
115
18
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/object/index.ts"],"sourcesContent":["/**\n * 对象工具类\n */\nexport const objectUtil = {\n\t/**\n\t * 对象URL参数化\n\t */\n\tobjectToQueryString(obj: any): string {\n\t\tlet params = \"\";\n\t\tfor (const key in obj) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t\t\t\tif (params !== \"\") {\n\t\t\t\t\tparams += \"&\";\n\t\t\t\t}\n\t\t\t\tparams += `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`;\n\t\t\t}\n\t\t}\n\t\treturn params;\n\t},\n\t/**\n\t * 是否存在重复值\n\t */\n\thasDuplicateProperty<T>(arr: T[], prop: keyof T): boolean {\n\t\tconst values = arr.map((obj) => obj[prop]);\n\t\tconst uniqueValues = new Set(values);\n\t\treturn values.length !== uniqueValues.size;\n\t},\n\t/**\n\t * 是否存在非重复值\n\t */\n\thasDifferentProperty<T>(arr: T[], prop: keyof T): boolean {\n\t\tconst valueSet = new Set<any>();\n\t\tfor (const obj of arr) {\n\t\t\tvalueSet.add(obj[prop]);\n\t\t\tif (valueSet.size > 1) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\t/**\n\t * 时间处理翻译\n\t */\n\tdateTimeFix(date: string | Date | null | undefined): string {\n\t\tif (date !== null && date !== undefined && date) {\n\t\t\tif (typeof date === \"string\") {\n\t\t\t\tdate = new Date(date);\n\t\t\t}\n\n\t\t\t// 获取时间戳\n\t\t\tlet timestamp = date.getTime();\n\t\t\tif (timestamp.toString().length < 13) {\n\t\t\t\tconst arrTimestamp = timestamp.toString().split(\"\");\n\t\t\t\tfor (let start = 0; start < 13; start++) {\n\t\t\t\t\tif (!arrTimestamp[start]) {\n\t\t\t\t\t\tarrTimestamp[start] = \"0\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttimestamp = parseInt(arrTimestamp.join(\"\"));\n\t\t\t}\n\t\t\tconst minute = 1000 * 60;\n\t\t\tconst hour = minute * 60;\n\t\t\tconst day = hour * 24;\n\t\t\tconst month = day * 30;\n\t\t\t// 获取当前时间\n\t\t\tconst curTime = new Date().getTime();\n\t\t\t// 比较\n\t\t\tconst diffValue = curTime - timestamp;\n\n\t\t\t// 计算差异时间的量级\n\t\t\tconst monthC = diffValue / month;\n\t\t\tconst weekC = diffValue / (7 * day);\n\t\t\tconst dayC = diffValue / day;\n\t\t\tconst hourC = diffValue / hour;\n\t\t\tconst minC = diffValue / minute;\n\n\t\t\t// 如果本地时间反而小于变量时间\n\t\t\tif (diffValue < 0) {\n\t\t\t\tconst monthC1 = Math.abs(monthC);\n\t\t\t\tconst weekC1 = Math.abs(weekC);\n\t\t\t\tconst dayC1 = Math.abs(dayC);\n\t\t\t\tconst hourC1 = Math.abs(hourC);\n\t\t\t\tconst minC1 = Math.abs(minC);\n\n\t\t\t\tif (monthC1 > 12) {\n\t\t\t\t\t// 超过1年,直接显示 几 年前\n\t\t\t\t\treturn `${parseInt(`${monthC1 / 12}`)}年后`;\n\t\t\t\t} else if (monthC1 >= 6) {\n\t\t\t\t\treturn \"半年后\";\n\t\t\t\t} else if (monthC1 >= 1) {\n\t\t\t\t\treturn `${parseInt(`${monthC1}`)}月后`;\n\t\t\t\t} else if (weekC1 > 2) {\n\t\t\t\t\treturn \"半月后\";\n\t\t\t\t} else if (weekC1 >= 1) {\n\t\t\t\t\treturn `${parseInt(`${weekC1}`)}周后`;\n\t\t\t\t} else if (dayC1 >= 1) {\n\t\t\t\t\treturn `${parseInt(`${dayC1}`)}天后`;\n\t\t\t\t} else if (hourC1 >= 1) {\n\t\t\t\t\treturn `${parseInt(`${hourC1}`)}小时后`;\n\t\t\t\t} else if (minC1 >= 1) {\n\t\t\t\t\treturn `${parseInt(`${minC1}`)}分钟后`;\n\t\t\t\t}\n\t\t\t\treturn \"刚刚\";\n\t\t\t\t// return \"不久前\";\n\t\t\t}\n\n\t\t\t// 使用\n\t\t\tif (monthC > 12) {\n\t\t\t\t// 超过1年,直接显示 几 年前\n\t\t\t\treturn `${parseInt(`${monthC / 12}`)}年前`;\n\t\t\t} else if (monthC >= 6) {\n\t\t\t\treturn \"半年前\";\n\t\t\t} else if (monthC >= 1) {\n\t\t\t\treturn `${parseInt(`${monthC}`)}月前`;\n\t\t\t} else if (weekC > 2) {\n\t\t\t\treturn \"半月前\";\n\t\t\t} else if (weekC >= 1) {\n\t\t\t\treturn `${parseInt(`${weekC}`)}周前`;\n\t\t\t} else if (dayC >= 1) {\n\t\t\t\treturn `${parseInt(`${dayC}`)}天前`;\n\t\t\t} else if (hourC >= 1) {\n\t\t\t\treturn `${parseInt(`${hourC}`)}小时前`;\n\t\t\t} else if (minC >= 1) {\n\t\t\t\treturn `${parseInt(`${minC}`)}分钟前`;\n\t\t\t}\n\t\t\treturn \"刚刚\";\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t},\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/object/index.ts"],"sourcesContent":["/**\n * 对象工具类\n */\nexport const objectUtil = {\n\t/**\n\t * 对象URL参数化\n\t */\n\tobjectToQueryString(obj: any): string {\n\t\tlet params = \"\";\n\t\tfor (const key in obj) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t\t\t\tif (params !== \"\") {\n\t\t\t\t\tparams += \"&\";\n\t\t\t\t}\n\t\t\t\tparams += `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`;\n\t\t\t}\n\t\t}\n\t\treturn params;\n\t},\n};\n"],"names":[],"mappings":"AAGO,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA,EAIzB,oBAAoB,KAAkB;AACrC,QAAI,SAAS;AACb,eAAW,OAAO,KAAK;AACtB,UAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AACnD,YAAI,WAAW,IAAI;AACR,oBAAA;AAAA,QAAA;AAED,kBAAA,GAAG,mBAAmB,GAAG,CAAC,IAAI,mBAAmB,IAAI,GAAG,CAAC,CAAC;AAAA,MAAA;AAAA,IACrE;AAEM,WAAA;AAAA,EAAA;AAET;"}
@@ -1,6 +1,7 @@
1
1
  import { reactive, computed } from "vue";
2
2
  import { base64Util } from "../base64/index.mjs";
3
3
  import { consoleError } from "../console/index.mjs";
4
+ import { FastError } from "../error/index.mjs";
4
5
  const state = reactive({
5
6
  prefix: "fast__",
6
7
  expireSuffix: "__Expire",
@@ -83,7 +84,7 @@ const Local = {
83
84
  encrypt ?? (encrypt = state.crypto);
84
85
  if (expire) {
85
86
  if (isNaN(expire) || expire < 1) {
86
- throw new Error("有效期应为一个有效数值");
87
+ throw new FastError("有效期应为一个有效数值");
87
88
  }
88
89
  const expireData = {
89
90
  time: Date.now(),
@@ -190,7 +191,7 @@ const Session = {
190
191
  encrypt ?? (encrypt = state.crypto);
191
192
  if (expire) {
192
193
  if (isNaN(expire) || expire < 1) {
193
- throw new Error("有效期应为一个有效数值");
194
+ throw new FastError("有效期应为一个有效数值");
194
195
  }
195
196
  const expireData = {
196
197
  time: Date.now(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/storage/index.ts"],"sourcesContent":["import { computed, reactive } from \"vue\";\nimport { base64Util } from \"../base64\";\nimport { consoleError } from \"../console\";\n\nconst state = reactive({\n\tprefix: \"fast__\",\n\texpireSuffix: \"__Expire\",\n\tcrypto: false,\n});\n\n/**\n * 本地缓存前缀 Key\n */\nexport const CACHE_PREFIX = computed(() => state.prefix);\n\n/**\n * 本地缓存过期值后缀 Key\n */\nexport const CACHE_EXPIRE_SUFFIX = computed(() => state.expireSuffix);\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const useStorage = () => {\n\treturn {\n\t\t/**\n\t\t * 设置缓存前缀 Key\n\t\t * @param key\n\t\t */\n\t\tprefix(key: string): void {\n\t\t\tstate.prefix = key;\n\t\t},\n\t\t/**\n\t\t * 缓存过期值后缀 Key\n\t\t * @param key\n\t\t */\n\t\texpireSuffix(key: string): void {\n\t\t\tstate.expireSuffix = key;\n\t\t},\n\t\t/**\n\t\t * 设置缓存是否加密\n\t\t * @param crypto\n\t\t */\n\t\tcrypto(crypto: boolean): void {\n\t\t\tstate.crypto = crypto;\n\t\t},\n\t};\n};\n\nconst storage = {\n\tset(key: string, val: any): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tuni.setStorageSync(key, val);\n\t\t} else {\n\t\t\twindow.localStorage.setItem(key, val);\n\t\t}\n\t},\n\tget(key: string): string | any | null {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn uni.getStorageSync(key);\n\t\t} else {\n\t\t\treturn window.localStorage.getItem(key);\n\t\t}\n\t},\n\tremove(key: string): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tuni.removeStorageSync(key);\n\t\t} else {\n\t\t\twindow.localStorage.removeItem(key);\n\t\t}\n\t},\n\tclear(): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tuni.clearStorageSync();\n\t\t} else {\n\t\t\twindow.localStorage.clear();\n\t\t}\n\t},\n\tkeys(): string[] | Storage {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn uni.getStorageInfoSync().keys;\n\t\t} else {\n\t\t\treturn window.localStorage;\n\t\t}\n\t},\n};\n\n/**\n * window.localStorage\n * - 如果是 UniApp 环境则使用的是 uni.xxxStorage\n */\nexport const Local = {\n\t/**\n\t * 设置\n\t * @param key 缓存的Key\n\t * @param val 缓存值\n\t * @param expire 过期时间,单位分钟\n\t * @param encrypt 是否对缓存的数据加密\n\t */\n\tset(key: string, val: any, expire?: number, encrypt?: boolean): void {\n\t\ttry {\n\t\t\tencrypt ??= state.crypto;\n\t\t\t// 判断是否存在缓存过期时间\n\t\t\tif (expire) {\n\t\t\t\tif (isNaN(expire) || expire < 1) {\n\t\t\t\t\tthrow new Error(\"有效期应为一个有效数值\");\n\t\t\t\t}\n\t\t\t\t// 设置过期时间的缓存\n\t\t\t\tconst expireData = {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\texpire,\n\t\t\t\t};\n\t\t\t\tconst expireJson = JSON.stringify(expireData);\n\t\t\t\tstorage.set(`${state.prefix}${key}${state.expireSuffix}`, expireJson);\n\t\t\t}\n\t\t\tlet valJson = JSON.stringify(val);\n\t\t\tif (encrypt) {\n\t\t\t\tvalJson = base64Util.toBase64(valJson);\n\t\t\t}\n\t\t\tstorage.set(`${state.prefix}${key}`, valJson);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 获取\n\t * @param key 缓存的Key\n\t * @param decrypt 是否对缓存的数据解密\n\t * @returns {T} 传入的对象类型,默认为 string\n\t */\n\tget<T = string>(key: string, decrypt?: boolean): T {\n\t\ttry {\n\t\t\tdecrypt ??= state.crypto;\n\t\t\t// 获取缓存 JSON 字符串\n\t\t\tlet valJson = storage.get(`${state.prefix}${key}`);\n\n\t\t\tif (valJson) {\n\t\t\t\t// 判断是否解密\n\t\t\t\tif (decrypt) {\n\t\t\t\t\tvalJson = base64Util.base64ToStr(valJson);\n\t\t\t\t}\n\t\t\t\t// 尝试获取缓存过期时间的 JSON 字符串\n\t\t\t\tconst expireJson = storage.get(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t// 判断是否存在过期时间\n\t\t\t\tif (expireJson) {\n\t\t\t\t\tconst expireData = JSON.parse(expireJson);\n\t\t\t\t\tif (Date.now() > expireData.time + expireData.expire * 60 * 1000) {\n\t\t\t\t\t\t// 过期了,删除对应的缓存数据\n\t\t\t\t\t\tstorage.remove(`${state.prefix}${key}`);\n\t\t\t\t\t\tstorage.remove(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(valJson) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn valJson as T;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除\n\t * @param key 缓存的Key\n\t */\n\tremove(key: string): void {\n\t\ttry {\n\t\t\tstorage.remove(`${state.prefix}${key}`);\n\t\t\tstorage.remove(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 根据前缀移除\n\t * @param key 缓存的Key\n\t */\n\tremoveByPrefix(key: string): void {\n\t\ttry {\n\t\t\tfor (const itemKey in storage.keys) {\n\t\t\t\tif (itemKey.indexOf(`${state.prefix}${key}`) !== -1) {\n\t\t\t\t\tstorage.remove(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除全部\n\t */\n\tclear(): void {\n\t\ttry {\n\t\t\tstorage.clear();\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n};\n\n/**\n * window.sessionStorage\n * - UniApp 环境下不可用\n */\nexport const Session = {\n\t/**\n\t * 设置会话缓存\n\t * @param key 缓存的Key\n\t * @param val 缓存值\n\t * @param expire 过期时间,单位分钟\n\t * @param encrypt 是否对缓存的数据加密\n\t */\n\tset(key: string, val: any, expire?: number, encrypt?: boolean): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tencrypt ??= state.crypto;\n\t\t\t// 判断是否存在缓存过期时间\n\t\t\tif (expire) {\n\t\t\t\tif (isNaN(expire) || expire < 1) {\n\t\t\t\t\tthrow new Error(\"有效期应为一个有效数值\");\n\t\t\t\t}\n\t\t\t\t// 设置过期时间的缓存\n\t\t\t\tconst expireData = {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\texpire,\n\t\t\t\t};\n\t\t\t\tconst expireJson = JSON.stringify(expireData);\n\t\t\t\twindow.sessionStorage.setItem(`${state.prefix}${key}${state.expireSuffix}`, expireJson);\n\t\t\t}\n\t\t\tlet valJson = JSON.stringify(val);\n\t\t\tif (encrypt) {\n\t\t\t\tvalJson = base64Util.toBase64(valJson);\n\t\t\t}\n\t\t\twindow.sessionStorage.setItem(`${state.prefix}${key}`, valJson);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 获取会话缓存\n\t * @param key 缓存的Key\n\t * @param decrypt 是否对缓存的数据解密\n\t * @returns {T} 传入的对象类型,默认为 string\n\t */\n\tget<T = string>(key: string, decrypt?: boolean): T {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tdecrypt ??= state.crypto;\n\t\t\t// 获取缓存 JSON 字符串\n\t\t\tlet valJson = window.sessionStorage.getItem(`${state.prefix}${key}`);\n\t\t\tif (valJson) {\n\t\t\t\t// 判断是否解密\n\t\t\t\tif (decrypt) {\n\t\t\t\t\tvalJson = base64Util.base64ToStr(valJson);\n\t\t\t\t}\n\t\t\t\t// 尝试获取缓存过期时间的 JSON 字符串\n\t\t\t\tconst expireJson = window.sessionStorage.getItem(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t// 判断是否存在过期时间\n\t\t\t\tif (expireJson) {\n\t\t\t\t\tconst expireData = JSON.parse(expireJson);\n\t\t\t\t\tif (Date.now() > expireData.time + expireData.expire * 60 * 1000) {\n\t\t\t\t\t\t// 过期了,删除对应的缓存数据\n\t\t\t\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}`);\n\t\t\t\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(valJson) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn valJson as T;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除会话缓存\n\t * @param key 缓存的Key\n\t */\n\tremove(key: string): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}`);\n\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 根据前缀移除会话缓存\n\t * @param key 缓存的Key\n\t */\n\tremoveByPrefix(key: string): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tfor (const itemKey in window.sessionStorage) {\n\t\t\t\tif (itemKey.indexOf(`${state.prefix}${key}`) !== -1) {\n\t\t\t\t\twindow.sessionStorage.removeItem(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除全部会话缓存\n\t */\n\tclear(): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\twindow.sessionStorage.clear();\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/storage/index.ts"],"sourcesContent":["import { computed, reactive } from \"vue\";\nimport { base64Util } from \"../base64\";\nimport { consoleError } from \"../console\";\nimport { FastError } from \"../error\";\n\nconst state = reactive({\n\tprefix: \"fast__\",\n\texpireSuffix: \"__Expire\",\n\tcrypto: false,\n});\n\n/**\n * 本地缓存前缀 Key\n */\nexport const CACHE_PREFIX = computed(() => state.prefix);\n\n/**\n * 本地缓存过期值后缀 Key\n */\nexport const CACHE_EXPIRE_SUFFIX = computed(() => state.expireSuffix);\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const useStorage = () => {\n\treturn {\n\t\t/**\n\t\t * 设置缓存前缀 Key\n\t\t * @param key\n\t\t */\n\t\tprefix(key: string): void {\n\t\t\tstate.prefix = key;\n\t\t},\n\t\t/**\n\t\t * 缓存过期值后缀 Key\n\t\t * @param key\n\t\t */\n\t\texpireSuffix(key: string): void {\n\t\t\tstate.expireSuffix = key;\n\t\t},\n\t\t/**\n\t\t * 设置缓存是否加密\n\t\t * @param crypto\n\t\t */\n\t\tcrypto(crypto: boolean): void {\n\t\t\tstate.crypto = crypto;\n\t\t},\n\t};\n};\n\nconst storage = {\n\tset(key: string, val: any): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tuni.setStorageSync(key, val);\n\t\t} else {\n\t\t\twindow.localStorage.setItem(key, val);\n\t\t}\n\t},\n\tget(key: string): string | any | null {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn uni.getStorageSync(key);\n\t\t} else {\n\t\t\treturn window.localStorage.getItem(key);\n\t\t}\n\t},\n\tremove(key: string): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tuni.removeStorageSync(key);\n\t\t} else {\n\t\t\twindow.localStorage.removeItem(key);\n\t\t}\n\t},\n\tclear(): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tuni.clearStorageSync();\n\t\t} else {\n\t\t\twindow.localStorage.clear();\n\t\t}\n\t},\n\tkeys(): string[] | Storage {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn uni.getStorageInfoSync().keys;\n\t\t} else {\n\t\t\treturn window.localStorage;\n\t\t}\n\t},\n};\n\n/**\n * window.localStorage\n * - 如果是 UniApp 环境则使用的是 uni.xxxStorage\n */\nexport const Local = {\n\t/**\n\t * 设置\n\t * @param key 缓存的Key\n\t * @param val 缓存值\n\t * @param expire 过期时间,单位分钟\n\t * @param encrypt 是否对缓存的数据加密\n\t */\n\tset(key: string, val: any, expire?: number, encrypt?: boolean): void {\n\t\ttry {\n\t\t\tencrypt ??= state.crypto;\n\t\t\t// 判断是否存在缓存过期时间\n\t\t\tif (expire) {\n\t\t\t\tif (isNaN(expire) || expire < 1) {\n\t\t\t\t\tthrow new FastError(\"有效期应为一个有效数值\");\n\t\t\t\t}\n\t\t\t\t// 设置过期时间的缓存\n\t\t\t\tconst expireData = {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\texpire,\n\t\t\t\t};\n\t\t\t\tconst expireJson = JSON.stringify(expireData);\n\t\t\t\tstorage.set(`${state.prefix}${key}${state.expireSuffix}`, expireJson);\n\t\t\t}\n\t\t\tlet valJson = JSON.stringify(val);\n\t\t\tif (encrypt) {\n\t\t\t\tvalJson = base64Util.toBase64(valJson);\n\t\t\t}\n\t\t\tstorage.set(`${state.prefix}${key}`, valJson);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 获取\n\t * @param key 缓存的Key\n\t * @param decrypt 是否对缓存的数据解密\n\t * @returns {T} 传入的对象类型,默认为 string\n\t */\n\tget<T = string>(key: string, decrypt?: boolean): T {\n\t\ttry {\n\t\t\tdecrypt ??= state.crypto;\n\t\t\t// 获取缓存 JSON 字符串\n\t\t\tlet valJson = storage.get(`${state.prefix}${key}`);\n\n\t\t\tif (valJson) {\n\t\t\t\t// 判断是否解密\n\t\t\t\tif (decrypt) {\n\t\t\t\t\tvalJson = base64Util.base64ToStr(valJson);\n\t\t\t\t}\n\t\t\t\t// 尝试获取缓存过期时间的 JSON 字符串\n\t\t\t\tconst expireJson = storage.get(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t// 判断是否存在过期时间\n\t\t\t\tif (expireJson) {\n\t\t\t\t\tconst expireData = JSON.parse(expireJson);\n\t\t\t\t\tif (Date.now() > expireData.time + expireData.expire * 60 * 1000) {\n\t\t\t\t\t\t// 过期了,删除对应的缓存数据\n\t\t\t\t\t\tstorage.remove(`${state.prefix}${key}`);\n\t\t\t\t\t\tstorage.remove(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(valJson) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn valJson as T;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除\n\t * @param key 缓存的Key\n\t */\n\tremove(key: string): void {\n\t\ttry {\n\t\t\tstorage.remove(`${state.prefix}${key}`);\n\t\t\tstorage.remove(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 根据前缀移除\n\t * @param key 缓存的Key\n\t */\n\tremoveByPrefix(key: string): void {\n\t\ttry {\n\t\t\tfor (const itemKey in storage.keys) {\n\t\t\t\tif (itemKey.indexOf(`${state.prefix}${key}`) !== -1) {\n\t\t\t\t\tstorage.remove(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除全部\n\t */\n\tclear(): void {\n\t\ttry {\n\t\t\tstorage.clear();\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n};\n\n/**\n * window.sessionStorage\n * - UniApp 环境下不可用\n */\nexport const Session = {\n\t/**\n\t * 设置会话缓存\n\t * @param key 缓存的Key\n\t * @param val 缓存值\n\t * @param expire 过期时间,单位分钟\n\t * @param encrypt 是否对缓存的数据加密\n\t */\n\tset(key: string, val: any, expire?: number, encrypt?: boolean): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tencrypt ??= state.crypto;\n\t\t\t// 判断是否存在缓存过期时间\n\t\t\tif (expire) {\n\t\t\t\tif (isNaN(expire) || expire < 1) {\n\t\t\t\t\tthrow new FastError(\"有效期应为一个有效数值\");\n\t\t\t\t}\n\t\t\t\t// 设置过期时间的缓存\n\t\t\t\tconst expireData = {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\texpire,\n\t\t\t\t};\n\t\t\t\tconst expireJson = JSON.stringify(expireData);\n\t\t\t\twindow.sessionStorage.setItem(`${state.prefix}${key}${state.expireSuffix}`, expireJson);\n\t\t\t}\n\t\t\tlet valJson = JSON.stringify(val);\n\t\t\tif (encrypt) {\n\t\t\t\tvalJson = base64Util.toBase64(valJson);\n\t\t\t}\n\t\t\twindow.sessionStorage.setItem(`${state.prefix}${key}`, valJson);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 获取会话缓存\n\t * @param key 缓存的Key\n\t * @param decrypt 是否对缓存的数据解密\n\t * @returns {T} 传入的对象类型,默认为 string\n\t */\n\tget<T = string>(key: string, decrypt?: boolean): T {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tdecrypt ??= state.crypto;\n\t\t\t// 获取缓存 JSON 字符串\n\t\t\tlet valJson = window.sessionStorage.getItem(`${state.prefix}${key}`);\n\t\t\tif (valJson) {\n\t\t\t\t// 判断是否解密\n\t\t\t\tif (decrypt) {\n\t\t\t\t\tvalJson = base64Util.base64ToStr(valJson);\n\t\t\t\t}\n\t\t\t\t// 尝试获取缓存过期时间的 JSON 字符串\n\t\t\t\tconst expireJson = window.sessionStorage.getItem(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t// 判断是否存在过期时间\n\t\t\t\tif (expireJson) {\n\t\t\t\t\tconst expireData = JSON.parse(expireJson);\n\t\t\t\t\tif (Date.now() > expireData.time + expireData.expire * 60 * 1000) {\n\t\t\t\t\t\t// 过期了,删除对应的缓存数据\n\t\t\t\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}`);\n\t\t\t\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(valJson) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn valJson as T;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除会话缓存\n\t * @param key 缓存的Key\n\t */\n\tremove(key: string): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}`);\n\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 根据前缀移除会话缓存\n\t * @param key 缓存的Key\n\t */\n\tremoveByPrefix(key: string): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tfor (const itemKey in window.sessionStorage) {\n\t\t\t\tif (itemKey.indexOf(`${state.prefix}${key}`) !== -1) {\n\t\t\t\t\twindow.sessionStorage.removeItem(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除全部会话缓存\n\t */\n\tclear(): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\twindow.sessionStorage.clear();\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n};\n"],"names":[],"mappings":"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"}
@@ -10,6 +10,27 @@ export declare const stringUtil: {
10
10
  * 是否为JSON字符串
11
11
  */
12
12
  isJson(value: string): boolean;
13
+ /**
14
+ * 切割骆驼命名式字符串
15
+ */
16
+ splitCamelCase(value: string): string[];
17
+ /**
18
+ * 将字符串转为 camelCase 格式,支持 - 或 _ 分隔的字符串
19
+ * 例如:'hello-world' 或 'hello_world' => 'helloWorld'
20
+ */
21
+ toCamelCase(value: string): string;
22
+ /**
23
+ * 字符串首字母大写
24
+ */
25
+ firstCharToUpper(value: string): string;
26
+ /**
27
+ * 字符串首字母小写
28
+ */
29
+ firstCharToLower(value: string): string;
30
+ /**
31
+ * 截取指定长度的字符串
32
+ */
33
+ subStringWithEllipsis(value: string, length: number, suffix?: string): string;
13
34
  /**
14
35
  * 生成随机字符串
15
36
  */
@@ -19,9 +19,9 @@ const stringUtil = {
19
19
  isJson(value) {
20
20
  if (!isString(value)) return false;
21
21
  value = value.replace(/\s/g, "").replace(/\n|\r/, "");
22
- if (/^\{(.*?)\}$/.test(value)) return /"(.*?)":(.*?)/g.test(value);
23
- if (/^\[(.*?)\]$/.test(value)) {
24
- return value.replace(/^\[/, "").replace(/\]$/, "").replace(/},{/g, "}\n{").split(/\n/).map((s) => {
22
+ if (/^\{.*?\}$/.test(value)) return /".*?":/.test(value);
23
+ if (/^\[.*?\]$/.test(value)) {
24
+ return value.replace(/^\[/, "").replace(/\]$/, "").replace(/\},\{/g, "}\n{").split(/\n/).map((s) => {
25
25
  return stringUtil.isJson(s);
26
26
  }).reduce((prev, curr) => {
27
27
  return !!curr;
@@ -29,6 +29,43 @@ const stringUtil = {
29
29
  }
30
30
  return false;
31
31
  },
32
+ /**
33
+ * 切割骆驼命名式字符串
34
+ */
35
+ splitCamelCase(value) {
36
+ if (!value) return [];
37
+ if (value.length === 1) return [value];
38
+ return value.split(new RegExp("(?=\\p{Lu}\\p{Ll})|(?<=\\p{Ll})(?=\\p{Lu})", "u")).filter((token) => token.length > 0);
39
+ },
40
+ /**
41
+ * 将字符串转为 camelCase 格式,支持 - 或 _ 分隔的字符串
42
+ * 例如:'hello-world' 或 'hello_world' => 'helloWorld'
43
+ */
44
+ toCamelCase(value) {
45
+ if (!value) return "";
46
+ return value.replace(/[-_](\w)/g, (_, c) => c ? c.toUpperCase() : "");
47
+ },
48
+ /**
49
+ * 字符串首字母大写
50
+ */
51
+ firstCharToUpper(value) {
52
+ if (!value) return "";
53
+ return value.charAt(0).toUpperCase() + value.slice(1);
54
+ },
55
+ /**
56
+ * 字符串首字母小写
57
+ */
58
+ firstCharToLower(value) {
59
+ if (!value) return "";
60
+ return value.charAt(0).toLowerCase() + value.slice(1);
61
+ },
62
+ /**
63
+ * 截取指定长度的字符串
64
+ */
65
+ subStringWithEllipsis(value, length, suffix = "...") {
66
+ if (!value) return "";
67
+ return value.length > length ? value.substring(0, length) + suffix : value;
68
+ },
32
69
  /**
33
70
  * 生成随机字符串
34
71
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/string/index.ts"],"sourcesContent":["import { isString } from \"lodash-unified\";\n\n/**\n * 字符串工具类\n */\nexport const stringUtil = {\n\t/**\n\t * 获取Url参数\n\t */\n\tgetUrlParams(url: string): Record<string, any> {\n\t\tconst regex = /[?&][^=?&]+=[^?&]+/g;\n\t\tconst params: Record<string, any> = {};\n\n\t\tlet match;\n\t\twhile ((match = regex.exec(url)) !== null) {\n\t\t\tconst [key, value] = match[0].substring(1).split(\"=\");\n\t\t\tparams[key] = decodeURIComponent(value);\n\t\t}\n\n\t\treturn params;\n\t},\n\t/**\n\t * 是否为JSON字符串\n\t */\n\tisJson(value: string): boolean {\n\t\tif (!isString(value)) return false;\n\n\t\tvalue = value.replace(/\\s/g, \"\").replace(/\\n|\\r/, \"\");\n\n\t\tif (/^\\{(.*?)\\}$/.test(value)) return /\"(.*?)\":(.*?)/g.test(value);\n\n\t\tif (/^\\[(.*?)\\]$/.test(value)) {\n\t\t\treturn value\n\t\t\t\t.replace(/^\\[/, \"\")\n\t\t\t\t.replace(/\\]$/, \"\")\n\t\t\t\t.replace(/},{/g, \"}\\n{\")\n\t\t\t\t.split(/\\n/)\n\t\t\t\t.map((s) => {\n\t\t\t\t\treturn stringUtil.isJson(s);\n\t\t\t\t})\n\t\t\t\t.reduce((prev, curr) => {\n\t\t\t\t\treturn !!curr;\n\t\t\t\t});\n\t\t}\n\n\t\treturn false;\n\t},\n\t/**\n\t * 生成随机字符串\n\t */\n\tgenerateRandomString(length: number): string {\n\t\tconst characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\t\tlet randomString = \"\";\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst randomIndex = Math.floor(Math.random() * characters.length);\n\t\t\trandomString += characters.charAt(randomIndex);\n\t\t}\n\t\treturn randomString;\n\t},\n\t/**\n\t * @description 生成唯一 uuid\n\t */\n\tgenerateUUID(): string {\n\t\tlet uuid = \"\";\n\t\tfor (let i = 0; i < 32; i++) {\n\t\t\tconst random = (Math.random() * 16) | 0;\n\t\t\tif (i === 8 || i === 12 || i === 16 || i === 20) uuid += \"-\";\n\t\t\tuuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);\n\t\t}\n\t\treturn uuid;\n\t},\n\t/**\n\t * 复制\n\t */\n\tasync copy(value: string): Promise<void> {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tuni.setClipboardData({\n\t\t\t\t\tdata: value,\n\t\t\t\t\tsuccess: () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t},\n\t\t\t\t\tfail: () => {\n\t\t\t\t\t\treject();\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\t// navigator.clipboard 需要https等安全上下文\n\t\t\tif (navigator?.clipboard && window.isSecureContext) {\n\t\t\t\tawait navigator.clipboard.writeText(value);\n\t\t\t} else {\n\t\t\t\tconst textareaEl = document.createElement(\"textarea\");\n\t\t\t\ttextareaEl.value = value;\n\t\t\t\t// 使文本域不显示\n\t\t\t\ttextareaEl.style.position = \"absolute\";\n\t\t\t\ttextareaEl.style.opacity = \"0\";\n\t\t\t\ttextareaEl.style.left = \"-999999px\";\n\t\t\t\ttextareaEl.style.top = \"-999999px\";\n\t\t\t\tdocument.body.appendChild(textareaEl);\n\t\t\t\ttextareaEl.focus();\n\t\t\t\ttextareaEl.select();\n\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\ttextareaEl.remove();\n\t\t\t}\n\t\t}\n\t},\n};\n"],"names":[],"mappings":";AAKO,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA,EAIzB,aAAa,KAAkC;AAC9C,UAAM,QAAQ;AACd,UAAM,SAA8B,CAAC;AAEjC,QAAA;AACJ,YAAQ,QAAQ,MAAM,KAAK,GAAG,OAAO,MAAM;AACpC,YAAA,CAAC,KAAK,KAAK,IAAI,MAAM,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG;AAC7C,aAAA,GAAG,IAAI,mBAAmB,KAAK;AAAA,IAAA;AAGhC,WAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,OAAO,OAAwB;AAC9B,QAAI,CAAC,SAAS,KAAK,EAAU,QAAA;AAE7B,YAAQ,MAAM,QAAQ,OAAO,EAAE,EAAE,QAAQ,SAAS,EAAE;AAEpD,QAAI,cAAc,KAAK,KAAK,EAAU,QAAA,iBAAiB,KAAK,KAAK;AAE7D,QAAA,cAAc,KAAK,KAAK,GAAG;AAC9B,aAAO,MACL,QAAQ,OAAO,EAAE,EACjB,QAAQ,OAAO,EAAE,EACjB,QAAQ,QAAQ,MAAM,EACtB,MAAM,IAAI,EACV,IAAI,CAAC,MAAM;AACJ,eAAA,WAAW,OAAO,CAAC;AAAA,MAC1B,CAAA,EACA,OAAO,CAAC,MAAM,SAAS;AACvB,eAAO,CAAC,CAAC;AAAA,MAAA,CACT;AAAA,IAAA;AAGI,WAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,qBAAqB,QAAwB;AAC5C,UAAM,aAAa;AACnB,QAAI,eAAe;AACnB,aAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAChC,YAAM,cAAc,KAAK,MAAM,KAAK,OAAO,IAAI,WAAW,MAAM;AAChD,sBAAA,WAAW,OAAO,WAAW;AAAA,IAAA;AAEvC,WAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,eAAuB;AACtB,QAAI,OAAO;AACX,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC5B,YAAM,SAAU,KAAK,OAAO,IAAI,KAAM;AAClC,UAAA,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,GAAY,SAAA;AAChD,eAAA,MAAM,KAAK,IAAI,MAAM,KAAM,SAAS,IAAK,IAAI,QAAQ,SAAS,EAAE;AAAA,IAAA;AAEnE,WAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM,KAAK,OAA8B;AACpC,QAAA,OAAO,QAAQ,aAAa;AAC/B,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvC,YAAI,iBAAiB;AAAA,UACpB,MAAM;AAAA,UACN,SAAS,MAAM;AACN,oBAAA;AAAA,UACT;AAAA,UACA,MAAM,MAAM;AACJ,mBAAA;AAAA,UAAA;AAAA,QACR,CACA;AAAA,MAAA,CACD;AAAA,IAAA,OACK;AAEF,WAAA,uCAAW,cAAa,OAAO,iBAAiB;AAC7C,cAAA,UAAU,UAAU,UAAU,KAAK;AAAA,MAAA,OACnC;AACA,cAAA,aAAa,SAAS,cAAc,UAAU;AACpD,mBAAW,QAAQ;AAEnB,mBAAW,MAAM,WAAW;AAC5B,mBAAW,MAAM,UAAU;AAC3B,mBAAW,MAAM,OAAO;AACxB,mBAAW,MAAM,MAAM;AACd,iBAAA,KAAK,YAAY,UAAU;AACpC,mBAAW,MAAM;AACjB,mBAAW,OAAO;AAClB,iBAAS,YAAY,MAAM;AAC3B,mBAAW,OAAO;AAAA,MAAA;AAAA,IACnB;AAAA,EACD;AAEF;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/string/index.ts"],"sourcesContent":["import { isString } from \"lodash-unified\";\n\n/**\n * 字符串工具类\n */\nexport const stringUtil = {\n\t/**\n\t * 获取Url参数\n\t */\n\tgetUrlParams(url: string): Record<string, any> {\n\t\tconst regex = /[?&][^=?&]+=[^?&]+/g;\n\t\tconst params: Record<string, any> = {};\n\n\t\tlet match;\n\t\twhile ((match = regex.exec(url)) !== null) {\n\t\t\tconst [key, value] = match[0].substring(1).split(\"=\");\n\t\t\tparams[key] = decodeURIComponent(value);\n\t\t}\n\n\t\treturn params;\n\t},\n\t/**\n\t * 是否为JSON字符串\n\t */\n\tisJson(value: string): boolean {\n\t\tif (!isString(value)) return false;\n\n\t\tvalue = value.replace(/\\s/g, \"\").replace(/\\n|\\r/, \"\");\n\n\t\tif (/^\\{.*?\\}$/.test(value)) return /\".*?\":/.test(value);\n\n\t\tif (/^\\[.*?\\]$/.test(value)) {\n\t\t\treturn value\n\t\t\t\t.replace(/^\\[/, \"\")\n\t\t\t\t.replace(/\\]$/, \"\")\n\t\t\t\t.replace(/\\},\\{/g, \"}\\n{\")\n\t\t\t\t.split(/\\n/)\n\t\t\t\t.map((s) => {\n\t\t\t\t\treturn stringUtil.isJson(s);\n\t\t\t\t})\n\t\t\t\t.reduce((prev, curr) => {\n\t\t\t\t\treturn !!curr;\n\t\t\t\t});\n\t\t}\n\n\t\treturn false;\n\t},\n\t/**\n\t * 切割骆驼命名式字符串\n\t */\n\tsplitCamelCase(value: string): string[] {\n\t\tif (!value) return [];\n\n\t\tif (value.length === 1) return [value];\n\n\t\treturn value.split(/(?=\\p{Lu}\\p{Ll})|(?<=\\p{Ll})(?=\\p{Lu})/u).filter((token) => token.length > 0);\n\t},\n\t/**\n\t * 将字符串转为 camelCase 格式,支持 - 或 _ 分隔的字符串\n\t * 例如:'hello-world' 或 'hello_world' => 'helloWorld'\n\t */\n\ttoCamelCase(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.replace(/[-_](\\w)/g, (_, c) => (c ? c.toUpperCase() : \"\"));\n\t},\n\t/**\n\t * 字符串首字母大写\n\t */\n\tfirstCharToUpper(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toUpperCase() + value.slice(1);\n\t},\n\t/**\n\t * 字符串首字母小写\n\t */\n\tfirstCharToLower(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toLowerCase() + value.slice(1);\n\t},\n\t/**\n\t * 截取指定长度的字符串\n\t */\n\tsubStringWithEllipsis(value: string, length: number, suffix = \"...\"): string {\n\t\tif (!value) return \"\";\n\t\treturn value.length > length ? value.substring(0, length) + suffix : value;\n\t},\n\t/**\n\t * 生成随机字符串\n\t */\n\tgenerateRandomString(length: number): string {\n\t\tconst characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\t\tlet randomString = \"\";\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst randomIndex = Math.floor(Math.random() * characters.length);\n\t\t\trandomString += characters.charAt(randomIndex);\n\t\t}\n\t\treturn randomString;\n\t},\n\t/**\n\t * @description 生成唯一 uuid\n\t */\n\tgenerateUUID(): string {\n\t\tlet uuid = \"\";\n\t\tfor (let i = 0; i < 32; i++) {\n\t\t\tconst random = (Math.random() * 16) | 0;\n\t\t\tif (i === 8 || i === 12 || i === 16 || i === 20) uuid += \"-\";\n\t\t\tuuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);\n\t\t}\n\t\treturn uuid;\n\t},\n\t/**\n\t * 复制\n\t */\n\tasync copy(value: string): Promise<void> {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tuni.setClipboardData({\n\t\t\t\t\tdata: value,\n\t\t\t\t\tsuccess: () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t},\n\t\t\t\t\tfail: () => {\n\t\t\t\t\t\treject();\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\t// navigator.clipboard 需要https等安全上下文\n\t\t\tif (navigator?.clipboard && window.isSecureContext) {\n\t\t\t\tawait navigator.clipboard.writeText(value);\n\t\t\t} else {\n\t\t\t\tconst textareaEl = document.createElement(\"textarea\");\n\t\t\t\ttextareaEl.value = value;\n\t\t\t\t// 使文本域不显示\n\t\t\t\ttextareaEl.style.position = \"absolute\";\n\t\t\t\ttextareaEl.style.opacity = \"0\";\n\t\t\t\ttextareaEl.style.left = \"-999999px\";\n\t\t\t\ttextareaEl.style.top = \"-999999px\";\n\t\t\t\tdocument.body.appendChild(textareaEl);\n\t\t\t\ttextareaEl.focus();\n\t\t\t\ttextareaEl.select();\n\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\ttextareaEl.remove();\n\t\t\t}\n\t\t}\n\t},\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"props.mjs","sources":["../../../../src/vue/props.ts"],"sourcesContent":["import type { ComputedRef, PropType } from \"vue\";\nimport { computed } from \"vue\";\nimport { omit, pick } from \"lodash-unified\";\n\nexport const definePropType = <T>(val: any): PropType<T> => val;\n\n/**\n * 构建 props\n * @param props props\n * @param rawProps 原生 props\n * @param ignoreRawProps 忽略 原生 props 的 key\n */\nexport const useProps = <T extends Record<string, unknown>, RT extends Record<string, unknown>>(\n\tprops: T,\n\trawProps?: RT,\n\tignoreRawProps?: (keyof RT)[]\n): ComputedRef<Record<string, unknown>> => {\n\tif (!props) return computed(() => ({}));\n\n\treturn computed<Record<string, unknown>>(() => {\n\t\tconst omittedRawProps = rawProps ? omit(rawProps, ignoreRawProps ?? []) : {};\n\t\treturn pick(props, Object.keys(omittedRawProps)) as Record<string, unknown>;\n\t});\n};\n"],"names":[],"mappings":";;AAIa,MAAA,iBAAiB,CAAI,QAA0B;AAQrD,MAAM,WAAW,CACvB,OACA,UACA,mBAC0C;AAC1C,MAAI,CAAC,MAAO,QAAO,SAAS,OAAO,CAAG,EAAA;AAEtC,SAAO,SAAkC,MAAM;AACxC,UAAA,kBAAkB,WAAW,KAAK,UAAU,kBAAkB,CAAE,CAAA,IAAI,CAAC;AAC3E,WAAO,KAAK,OAAO,OAAO,KAAK,eAAe,CAAC;AAAA,EAAA,CAC/C;AACF;"}
1
+ {"version":3,"file":"props.mjs","sources":["../../../../src/vue/props.ts"],"sourcesContent":["import { computed } from \"vue\";\nimport { omit, pick } from \"lodash-unified\";\nimport type { ComputedRef, PropType } from \"vue\";\n\nexport const definePropType = <T>(val: any): PropType<T> => val;\n\n/**\n * 构建 props\n * @param props props\n * @param rawProps 原生 props\n * @param ignoreRawProps 忽略 原生 props 的 key\n */\nexport const useProps = <T extends Record<string, unknown>, RT extends Record<string, unknown>>(\n\tprops: T,\n\trawProps?: RT,\n\tignoreRawProps?: (keyof RT)[]\n): ComputedRef<Record<string, unknown>> => {\n\tif (!props) return computed(() => ({}));\n\n\treturn computed<Record<string, unknown>>(() => {\n\t\tconst omittedRawProps = rawProps ? omit(rawProps, ignoreRawProps ?? []) : {};\n\t\treturn pick(props, Object.keys(omittedRawProps)) as Record<string, unknown>;\n\t});\n};\n"],"names":[],"mappings":";;AAIa,MAAA,iBAAiB,CAAI,QAA0B;AAQrD,MAAM,WAAW,CACvB,OACA,UACA,mBAC0C;AAC1C,MAAI,CAAC,MAAO,QAAO,SAAS,OAAO,CAAG,EAAA;AAEtC,SAAO,SAAkC,MAAM;AACxC,UAAA,kBAAkB,WAAW,KAAK,UAAU,kBAAkB,CAAE,CAAA,IAAI,CAAC;AAC3E,WAAO,KAAK,OAAO,OAAO,KAAK,eAAe,CAAC;AAAA,EAAA,CAC/C;AACF;"}
@@ -1,8 +1,9 @@
1
1
  import { getCurrentInstance } from "vue";
2
+ import { FastError } from "../error/index.mjs";
2
3
  const useRender = (render) => {
3
4
  const vm = getCurrentInstance();
4
5
  if (!vm) {
5
- throw new Error("useRender must be called from inside a setup function");
6
+ throw new FastError("useRender must be called from inside a setup function");
6
7
  }
7
8
  vm.render = render;
8
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useRender.mjs","sources":["../../../../src/vue/useRender.ts"],"sourcesContent":["import type { VNode } from \"vue\";\nimport { getCurrentInstance } from \"vue\";\n\n/**\n * 使用渲染\n * @description 为了解决使用 TSX 语法返回渲染函数,状态不会出现在 vue.js devtools 中\n */\nexport const useRender = (render: () => VNode): void => {\n\tconst vm = getCurrentInstance() as any;\n\tif (!vm) {\n\t\tthrow new Error(\"useRender must be called from inside a setup function\");\n\t}\n\tvm.render = render;\n};\n"],"names":[],"mappings":";AAOa,MAAA,YAAY,CAAC,WAA8B;AACvD,QAAM,KAAK,mBAAmB;AAC9B,MAAI,CAAC,IAAI;AACF,UAAA,IAAI,MAAM,uDAAuD;AAAA,EAAA;AAExE,KAAG,SAAS;AACb;"}
1
+ {"version":3,"file":"useRender.mjs","sources":["../../../../src/vue/useRender.ts"],"sourcesContent":["import { getCurrentInstance } from \"vue\";\nimport { FastError } from \"../error\";\nimport type { VNode } from \"vue\";\n\n/**\n * 使用渲染\n * @description 为了解决使用 TSX 语法返回渲染函数,状态不会出现在 vue.js devtools 中\n */\nexport const useRender = (render: () => VNode): void => {\n\tconst vm = getCurrentInstance() as any;\n\tif (!vm) {\n\t\tthrow new FastError(\"useRender must be called from inside a setup function\");\n\t}\n\tvm.render = render;\n};\n"],"names":[],"mappings":";;AAQa,MAAA,YAAY,CAAC,WAA8B;AACvD,QAAM,KAAK,mBAAmB;AAC9B,MAAI,CAAC,IAAI;AACF,UAAA,IAAI,UAAU,uDAAuD;AAAA,EAAA;AAE5E,KAAG,SAAS;AACb;"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * 数据工具类
3
+ */
4
+ export declare const arrayUtil: {
5
+ /**
6
+ * 是否存在重复值
7
+ * @param arr 数组
8
+ * @param prop 属性
9
+ * @returns
10
+ */
11
+ hasDuplicateProperty<T>(arr: T[], prop: keyof T): boolean;
12
+ /**
13
+ * 是否存在非重复值
14
+ * @param arr 数组
15
+ * @param prop 属性
16
+ * @returns
17
+ */
18
+ hasDifferentProperty<T>(arr: T[], prop: keyof T): boolean;
19
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={hasDuplicateProperty(e,t){const r=e.map((e=>e[t])),o=new Set(r);return r.length!==o.size},hasDifferentProperty(e,t){const r=new Set;for(const o of e)if(r.add(o[t]),r.size>1)return!0;return!1}};exports.arrayUtil=e;
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/array/index.ts"],"sourcesContent":["/**\n * 数据工具类\n */\nexport const arrayUtil = {\n\t/**\n\t * 是否存在重复值\n\t * @param arr 数组\n\t * @param prop 属性\n\t * @returns\n\t */\n\thasDuplicateProperty<T>(arr: T[], prop: keyof T): boolean {\n\t\tconst values = arr.map((obj) => obj[prop]);\n\t\tconst uniqueValues = new Set(values);\n\t\treturn values.length !== uniqueValues.size;\n\t},\n\t/**\n\t * 是否存在非重复值\n\t * @param arr 数组\n\t * @param prop 属性\n\t * @returns\n\t */\n\thasDifferentProperty<T>(arr: T[], prop: keyof T): boolean {\n\t\tconst valueSet = new Set<any>();\n\t\tfor (const obj of arr) {\n\t\t\tvalueSet.add(obj[prop]);\n\t\t\tif (valueSet.size > 1) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n};\n"],"names":["arrayUtil","hasDuplicateProperty","arr","prop","values","map","obj","uniqueValues","Set","length","size","hasDifferentProperty","valueSet","add"],"mappings":"gFAGO,MAAMA,EAAY,CAOxB,oBAAAC,CAAwBC,EAAUC,GACjC,MAAMC,EAASF,EAAIG,KAAKC,GAAQA,EAAIH,KAC9BI,EAAe,IAAIC,IAAIJ,GACtB,OAAAA,EAAOK,SAAWF,EAAaG,IACvC,EAOA,oBAAAC,CAAwBT,EAAUC,GAC3B,MAAAS,MAAeJ,IACrB,IAAA,MAAWF,KAAOJ,EAEb,GADKU,EAAAC,IAAIP,EAAIH,IACbS,EAASF,KAAO,EACZ,OAAA,EAGF,OAAA,CAAA"}
@@ -1,5 +1,14 @@
1
+ /**
2
+ * Base64工具类
3
+ */
1
4
  export declare const base64Util: {
5
+ /**
6
+ * 将字符串编码为Base64格式
7
+ */
2
8
  bota(string: string): string;
9
+ /**
10
+ * 将Base64编码的字符串解码回其原始格式。
11
+ */
3
12
  atob(string: string): string;
4
13
  /**
5
14
  * 字符串ToBase64
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",e=/^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/,d=[{index:977,randomIndex:188},{index:926,randomIndex:201},{index:851,randomIndex:225},{index:700,randomIndex:255},{index:600,randomIndex:268},{index:500,randomIndex:277},{index:400,randomIndex:288},{index:330,randomIndex:327},{index:300,randomIndex:180},{index:200,randomIndex:178},{index:100,randomIndex:124},{index:98,randomIndex:95},{index:92,randomIndex:90},{index:91,randomIndex:87},{index:88,randomIndex:84},{index:82,randomIndex:79},{index:78,randomIndex:71},{index:72,randomIndex:69},{index:68,randomIndex:66},{index:59,randomIndex:55},{index:48,randomIndex:43},{index:42,randomIndex:37},{index:36,randomIndex:30},{index:33,randomIndex:27},{index:24,randomIndex:20},{index:23,randomIndex:18},{index:21,randomIndex:16},{index:17,randomIndex:14},{index:13,randomIndex:9},{index:7,randomIndex:4},{index:5,randomIndex:3},{index:2,randomIndex:1}];const r={bota(e){let d,r,o,t,x="",i=0,a=(e=String(e)).length%3;for(;i<e.length;){if((r=e.charCodeAt(i++))>255||(o=e.charCodeAt(i++))>255||(t=e.charCodeAt(i++))>255)throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");d=r<<16|o<<8|t,x+=n.charAt(d>>18&63)+n.charAt(d>>12&63)+n.charAt(d>>6&63)+n.charAt(63&d)}return a?x.slice(0,a-3)+"===".substring(a):x},atob(d){if(d=String(d).replace(/[\t\n\f\r ]+/g,""),!e.test(d))throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");d+="==".slice(2-(3&d.length));let r,o,t,x="",i=0;for(;i<d.length;)r=n.indexOf(d.charAt(i++))<<18|n.indexOf(d.charAt(i++))<<12|(o=n.indexOf(d.charAt(i++)))<<6|(t=n.indexOf(d.charAt(i++))),x+=64===o?String.fromCharCode(r>>16&255):64===t?String.fromCharCode(r>>16&255,r>>8&255):String.fromCharCode(r>>16&255,r>>8&255,255&r);return x},toBase64(n,e=6){if(0===n.length)return"";const o=function(n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",e=6){let d="";for(let r=0;r<e;r++)d+=n[Math.ceil(Math.random()*(n.length-1))];return d}();let t=r.bota(encodeURIComponent(n));return 0!==e&&(t=function(n){let e=n;return d.sort(((n,e)=>e.index-n.index)).forEach((d=>{if(d.index<n.length){const r=n[d.randomIndex];e=e.slice(0,d.index)+r+e.slice(d.index)}})),e}(t)),o+t},base64ToStr(n,e=6){let o=n;if(0===n.length)return"";let t=n.slice(e);return 0!==e&&(t=function(n){const e=d.sort(((n,e)=>n.index-e.index));let r=n;return e.forEach((e=>{e.index<n.length&&(r=r.slice(0,e.index)+r.slice(e.index+1))})),r}(t)),o=r.atob(t),decodeURIComponent(o)}};exports.base64Util=r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",e=/^(?:[A-Z\d+/]{4})*?(?:[A-Z\d+/]{2}(?:==)?|[A-Z\d+/]{3}=?)?$/i,d=[{index:977,randomIndex:188},{index:926,randomIndex:201},{index:851,randomIndex:225},{index:700,randomIndex:255},{index:600,randomIndex:268},{index:500,randomIndex:277},{index:400,randomIndex:288},{index:330,randomIndex:327},{index:300,randomIndex:180},{index:200,randomIndex:178},{index:100,randomIndex:124},{index:98,randomIndex:95},{index:92,randomIndex:90},{index:91,randomIndex:87},{index:88,randomIndex:84},{index:82,randomIndex:79},{index:78,randomIndex:71},{index:72,randomIndex:69},{index:68,randomIndex:66},{index:59,randomIndex:55},{index:48,randomIndex:43},{index:42,randomIndex:37},{index:36,randomIndex:30},{index:33,randomIndex:27},{index:24,randomIndex:20},{index:23,randomIndex:18},{index:21,randomIndex:16},{index:17,randomIndex:14},{index:13,randomIndex:9},{index:7,randomIndex:4},{index:5,randomIndex:3},{index:2,randomIndex:1}];const r={bota(e){let d,r,o,t,i="",x=0,a=(e=String(e)).length%3;for(;x<e.length;){if((r=e.charCodeAt(x++))>255||(o=e.charCodeAt(x++))>255||(t=e.charCodeAt(x++))>255)throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");d=r<<16|o<<8|t,i+=n.charAt(d>>18&63)+n.charAt(d>>12&63)+n.charAt(d>>6&63)+n.charAt(63&d)}return a?i.slice(0,a-3)+"===".substring(a):i},atob(d){if(d=String(d).replace(/[\t\n\f\r ]+/g,""),!e.test(d))throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");d+="==".slice(2-(3&d.length));let r,o,t,i="",x=0;for(;x<d.length;)r=n.indexOf(d.charAt(x++))<<18|n.indexOf(d.charAt(x++))<<12|(o=n.indexOf(d.charAt(x++)))<<6|(t=n.indexOf(d.charAt(x++))),i+=64===o?String.fromCharCode(r>>16&255):64===t?String.fromCharCode(r>>16&255,r>>8&255):String.fromCharCode(r>>16&255,r>>8&255,255&r);return i},toBase64(n,e=6){if(0===n.length)return"";const o=function(n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",e=6){let d="";for(let r=0;r<e;r++)d+=n[Math.ceil(Math.random()*(n.length-1))];return d}();let t=r.bota(encodeURIComponent(n));return 0!==e&&(t=function(n){let e=n;return d.sort(((n,e)=>e.index-n.index)).forEach((d=>{if(d.index<n.length){const r=n[d.randomIndex];e=e.slice(0,d.index)+r+e.slice(d.index)}})),e}(t)),o+t},base64ToStr(n,e=6){let o=n;if(0===n.length)return"";let t=n.slice(e);return 0!==e&&(t=function(n){const e=d.sort(((n,e)=>n.index-e.index));let r=n;return e.forEach((e=>{e.index<n.length&&(r=r.slice(0,e.index)+r.slice(e.index+1))})),r}(t)),o=r.atob(t),decodeURIComponent(o)}};exports.base64Util=r;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/base64/index.ts"],"sourcesContent":["const b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nconst b64re = /^(?:[A-Za-z\\d+/]{4})*?(?:[A-Za-z\\d+/]{2}(?:==)?|[A-Za-z\\d+/]{3}=?)?$/;\n\n/**加密字典 */\nconst base64PwdDic = [\n\t{ index: 977, randomIndex: 188 },\n\t{ index: 926, randomIndex: 201 },\n\t{ index: 851, randomIndex: 225 },\n\t{ index: 700, randomIndex: 255 },\n\t{ index: 600, randomIndex: 268 },\n\t{ index: 500, randomIndex: 277 },\n\t{ index: 400, randomIndex: 288 },\n\t{ index: 330, randomIndex: 327 },\n\t{ index: 300, randomIndex: 180 },\n\t{ index: 200, randomIndex: 178 },\n\t{ index: 100, randomIndex: 124 },\n\t// 100 以内字典\n\t{ index: 98, randomIndex: 95 },\n\t{ index: 92, randomIndex: 90 },\n\t{ index: 91, randomIndex: 87 },\n\t{ index: 88, randomIndex: 84 },\n\t{ index: 82, randomIndex: 79 },\n\t{ index: 78, randomIndex: 71 },\n\t{ index: 72, randomIndex: 69 },\n\t{ index: 68, randomIndex: 66 },\n\t{ index: 59, randomIndex: 55 },\n\t{ index: 48, randomIndex: 43 },\n\t{ index: 42, randomIndex: 37 },\n\t{ index: 36, randomIndex: 30 },\n\t{ index: 33, randomIndex: 27 },\n\t{ index: 24, randomIndex: 20 },\n\t{ index: 23, randomIndex: 18 },\n\t{ index: 21, randomIndex: 16 },\n\t{ index: 17, randomIndex: 14 },\n\t{ index: 13, randomIndex: 9 },\n\t{ index: 7, randomIndex: 4 },\n\t{ index: 5, randomIndex: 3 },\n\t{ index: 2, randomIndex: 1 },\n];\n\n/**随机字符串长度 */\nconst randomPrefixStrLength = 6;\n\n/**随机字符串 */\nconst randomStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\n/**\n * 在Base64字符串中添加加密字典\n */\nfunction insertRandomStrToBase64Str(base64Str: string): string {\n\tlet strResult = base64Str;\n\tconst items = base64PwdDic.sort((a, b) => {\n\t\treturn b.index - a.index;\n\t});\n\titems.forEach((item) => {\n\t\tif (item.index < base64Str.length) {\n\t\t\tconst randomChar = base64Str[item.randomIndex];\n\t\t\tstrResult = strResult.slice(0, item.index) + randomChar + strResult.slice(item.index);\n\t\t}\n\t});\n\treturn strResult;\n}\n\n/**\n * 删除Base64字符串中的加密字典\n */\nfunction removeBase64StrRandomStr(base64Str: string): string {\n\tconst items = base64PwdDic.sort((a, b) => {\n\t\treturn a.index - b.index;\n\t});\n\tlet strResult = base64Str;\n\titems.forEach((item) => {\n\t\tif (item.index < base64Str.length) {\n\t\t\tstrResult = strResult.slice(0, item.index) + strResult.slice(item.index + 1);\n\t\t}\n\t});\n\treturn strResult;\n}\n\n/**\n * 得到随机字符串\n */\nfunction getRandomStr(str = randomStr, prefixStrLength = randomPrefixStrLength): string {\n\tlet result = \"\";\n\tfor (let i = 0; i < prefixStrLength; i++) {\n\t\tconst randomInt = Math.ceil(Math.random() * (str.length - 1));\n\t\tconst randomChar = str[randomInt];\n\t\tresult += randomChar;\n\t}\n\treturn result;\n}\n\nexport const base64Util = {\n\tbota(string: string): string {\n\t\tstring = String(string);\n\t\tlet bitmap,\n\t\t\ta,\n\t\t\tb,\n\t\t\tc,\n\t\t\tresult = \"\",\n\t\t\ti = 0,\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\trest = string.length % 3;\n\n\t\tfor (; i < string.length; ) {\n\t\t\tif ((a = string.charCodeAt(i++)) > 255 || (b = string.charCodeAt(i++)) > 255 || (c = string.charCodeAt(i++)) > 255)\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\"Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.\"\n\t\t\t\t);\n\n\t\t\tbitmap = (a << 16) | (b << 8) | c;\n\t\t\tresult += b64.charAt((bitmap >> 18) & 63) + b64.charAt((bitmap >> 12) & 63) + b64.charAt((bitmap >> 6) & 63) + b64.charAt(bitmap & 63);\n\t\t}\n\n\t\treturn rest ? result.slice(0, rest - 3) + \"===\".substring(rest) : result;\n\t},\n\tatob(string: string): string {\n\t\tstring = String(string).replace(/[\\t\\n\\f\\r ]+/g, \"\");\n\t\tif (!b64re.test(string)) throw new TypeError(\"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\");\n\t\tstring += \"==\".slice(2 - (string.length & 3));\n\t\tlet bitmap,\n\t\t\tresult = \"\",\n\t\t\tr1,\n\t\t\tr2,\n\t\t\ti = 0;\n\t\tfor (; i < string.length; ) {\n\t\t\tbitmap =\n\t\t\t\t(b64.indexOf(string.charAt(i++)) << 18) |\n\t\t\t\t(b64.indexOf(string.charAt(i++)) << 12) |\n\t\t\t\t((r1 = b64.indexOf(string.charAt(i++))) << 6) |\n\t\t\t\t(r2 = b64.indexOf(string.charAt(i++)));\n\n\t\t\tresult +=\n\t\t\t\tr1 === 64\n\t\t\t\t\t? String.fromCharCode((bitmap >> 16) & 255)\n\t\t\t\t\t: r2 === 64\n\t\t\t\t\t\t? String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255)\n\t\t\t\t\t\t: String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255, bitmap & 255);\n\t\t}\n\t\treturn result;\n\t},\n\t/**\n\t * 字符串ToBase64\n\t */\n\ttoBase64(str: string, prefixStrLength = randomPrefixStrLength): string {\n\t\tif (str.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst randomPrefixStr = getRandomStr();\n\t\tlet base64 = base64Util.bota(encodeURIComponent(str));\n\t\tif (prefixStrLength !== 0) {\n\t\t\tbase64 = insertRandomStrToBase64Str(base64);\n\t\t}\n\t\treturn randomPrefixStr + base64;\n\t},\n\n\t/**\n\t * Base64转字符串\n\t */\n\tbase64ToStr(str: string, prefixStrLength = randomPrefixStrLength): string {\n\t\tlet result = str;\n\t\tif (str.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tlet input = str.slice(prefixStrLength);\n\t\tif (prefixStrLength !== 0) {\n\t\t\tinput = removeBase64StrRandomStr(input);\n\t\t}\n\t\tresult = base64Util.atob(input);\n\t\treturn decodeURIComponent(result);\n\t},\n};\n"],"names":["b64","b64re","base64PwdDic","index","randomIndex","base64Util","bota","string","bitmap","a","b","c","result","i","rest","String","length","charCodeAt","TypeError","charAt","slice","substring","atob","replace","test","r1","r2","indexOf","fromCharCode","toBase64","str","prefixStrLength","randomPrefixStr","Math","ceil","random","getRandomStr","base64","encodeURIComponent","base64Str","strResult","sort","forEach","item","randomChar","insertRandomStrToBase64Str","base64ToStr","input","items","removeBase64StrRandomStr","decodeURIComponent"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/base64/index.ts"],"sourcesContent":["const b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nconst b64re = /^(?:[A-Z\\d+/]{4})*?(?:[A-Z\\d+/]{2}(?:==)?|[A-Z\\d+/]{3}=?)?$/i;\n\n/**加密字典 */\nconst base64PwdDic = [\n\t{ index: 977, randomIndex: 188 },\n\t{ index: 926, randomIndex: 201 },\n\t{ index: 851, randomIndex: 225 },\n\t{ index: 700, randomIndex: 255 },\n\t{ index: 600, randomIndex: 268 },\n\t{ index: 500, randomIndex: 277 },\n\t{ index: 400, randomIndex: 288 },\n\t{ index: 330, randomIndex: 327 },\n\t{ index: 300, randomIndex: 180 },\n\t{ index: 200, randomIndex: 178 },\n\t{ index: 100, randomIndex: 124 },\n\t// 100 以内字典\n\t{ index: 98, randomIndex: 95 },\n\t{ index: 92, randomIndex: 90 },\n\t{ index: 91, randomIndex: 87 },\n\t{ index: 88, randomIndex: 84 },\n\t{ index: 82, randomIndex: 79 },\n\t{ index: 78, randomIndex: 71 },\n\t{ index: 72, randomIndex: 69 },\n\t{ index: 68, randomIndex: 66 },\n\t{ index: 59, randomIndex: 55 },\n\t{ index: 48, randomIndex: 43 },\n\t{ index: 42, randomIndex: 37 },\n\t{ index: 36, randomIndex: 30 },\n\t{ index: 33, randomIndex: 27 },\n\t{ index: 24, randomIndex: 20 },\n\t{ index: 23, randomIndex: 18 },\n\t{ index: 21, randomIndex: 16 },\n\t{ index: 17, randomIndex: 14 },\n\t{ index: 13, randomIndex: 9 },\n\t{ index: 7, randomIndex: 4 },\n\t{ index: 5, randomIndex: 3 },\n\t{ index: 2, randomIndex: 1 },\n];\n\n/**随机字符串长度 */\nconst randomPrefixStrLength = 6;\n\n/**随机字符串 */\nconst randomStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\n/**\n * 在Base64字符串中添加加密字典\n */\nfunction insertRandomStrToBase64Str(base64Str: string): string {\n\tlet strResult = base64Str;\n\tconst items = base64PwdDic.sort((a, b) => {\n\t\treturn b.index - a.index;\n\t});\n\titems.forEach((item) => {\n\t\tif (item.index < base64Str.length) {\n\t\t\tconst randomChar = base64Str[item.randomIndex];\n\t\t\tstrResult = strResult.slice(0, item.index) + randomChar + strResult.slice(item.index);\n\t\t}\n\t});\n\treturn strResult;\n}\n\n/**\n * 删除Base64字符串中的加密字典\n */\nfunction removeBase64StrRandomStr(base64Str: string): string {\n\tconst items = base64PwdDic.sort((a, b) => {\n\t\treturn a.index - b.index;\n\t});\n\tlet strResult = base64Str;\n\titems.forEach((item) => {\n\t\tif (item.index < base64Str.length) {\n\t\t\tstrResult = strResult.slice(0, item.index) + strResult.slice(item.index + 1);\n\t\t}\n\t});\n\treturn strResult;\n}\n\n/**\n * 得到随机字符串\n */\nfunction getRandomStr(str = randomStr, prefixStrLength = randomPrefixStrLength): string {\n\tlet result = \"\";\n\tfor (let i = 0; i < prefixStrLength; i++) {\n\t\tconst randomInt = Math.ceil(Math.random() * (str.length - 1));\n\t\tconst randomChar = str[randomInt];\n\t\tresult += randomChar;\n\t}\n\treturn result;\n}\n\n/**\n * Base64工具类\n */\nexport const base64Util = {\n\t/**\n\t * 将字符串编码为Base64格式\n\t */\n\tbota(string: string): string {\n\t\tstring = String(string);\n\t\tlet bitmap,\n\t\t\ta,\n\t\t\tb,\n\t\t\tc,\n\t\t\tresult = \"\",\n\t\t\ti = 0,\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\trest = string.length % 3;\n\n\t\tfor (; i < string.length; ) {\n\t\t\tif ((a = string.charCodeAt(i++)) > 255 || (b = string.charCodeAt(i++)) > 255 || (c = string.charCodeAt(i++)) > 255)\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\"Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.\"\n\t\t\t\t);\n\n\t\t\tbitmap = (a << 16) | (b << 8) | c;\n\t\t\tresult += b64.charAt((bitmap >> 18) & 63) + b64.charAt((bitmap >> 12) & 63) + b64.charAt((bitmap >> 6) & 63) + b64.charAt(bitmap & 63);\n\t\t}\n\n\t\treturn rest ? result.slice(0, rest - 3) + \"===\".substring(rest) : result;\n\t},\n\t/**\n\t * 将Base64编码的字符串解码回其原始格式。\n\t */\n\tatob(string: string): string {\n\t\tstring = String(string).replace(/[\\t\\n\\f\\r ]+/g, \"\");\n\t\tif (!b64re.test(string)) throw new TypeError(\"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\");\n\t\tstring += \"==\".slice(2 - (string.length & 3));\n\t\tlet bitmap,\n\t\t\tresult = \"\",\n\t\t\tr1,\n\t\t\tr2,\n\t\t\ti = 0;\n\t\tfor (; i < string.length; ) {\n\t\t\tbitmap =\n\t\t\t\t(b64.indexOf(string.charAt(i++)) << 18) |\n\t\t\t\t(b64.indexOf(string.charAt(i++)) << 12) |\n\t\t\t\t((r1 = b64.indexOf(string.charAt(i++))) << 6) |\n\t\t\t\t(r2 = b64.indexOf(string.charAt(i++)));\n\n\t\t\tresult +=\n\t\t\t\tr1 === 64\n\t\t\t\t\t? String.fromCharCode((bitmap >> 16) & 255)\n\t\t\t\t\t: r2 === 64\n\t\t\t\t\t\t? String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255)\n\t\t\t\t\t\t: String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255, bitmap & 255);\n\t\t}\n\t\treturn result;\n\t},\n\t/**\n\t * 字符串ToBase64\n\t */\n\ttoBase64(str: string, prefixStrLength = randomPrefixStrLength): string {\n\t\tif (str.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst randomPrefixStr = getRandomStr();\n\t\tlet base64 = base64Util.bota(encodeURIComponent(str));\n\t\tif (prefixStrLength !== 0) {\n\t\t\tbase64 = insertRandomStrToBase64Str(base64);\n\t\t}\n\t\treturn randomPrefixStr + base64;\n\t},\n\n\t/**\n\t * Base64转字符串\n\t */\n\tbase64ToStr(str: string, prefixStrLength = randomPrefixStrLength): string {\n\t\tlet result = str;\n\t\tif (str.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tlet input = str.slice(prefixStrLength);\n\t\tif (prefixStrLength !== 0) {\n\t\t\tinput = removeBase64StrRandomStr(input);\n\t\t}\n\t\tresult = base64Util.atob(input);\n\t\treturn decodeURIComponent(result);\n\t},\n};\n"],"names":["b64","b64re","base64PwdDic","index","randomIndex","base64Util","bota","string","bitmap","a","b","c","result","i","rest","String","length","charCodeAt","TypeError","charAt","slice","substring","atob","replace","test","r1","r2","indexOf","fromCharCode","toBase64","str","prefixStrLength","randomPrefixStr","Math","ceil","random","getRandomStr","base64","encodeURIComponent","base64Str","strResult","sort","forEach","item","randomChar","insertRandomStrToBase64Str","base64ToStr","input","items","removeBase64StrRandomStr","decodeURIComponent"],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * 点击工具类
3
+ */
1
4
  export declare const clickUtil: {
2
5
  /**
3
6
  * 防抖
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/click/index.ts"],"sourcesContent":["let _debounceTimeout: ReturnType<typeof setTimeout> | null = null;\nlet _throttleRunning = false;\n\nexport const clickUtil = {\n\t/**\n\t * 防抖\n\t * @param fn - 执行函数\n\t * @param delay - 延时毫秒\n\t * @returns 返回一个新的防抖函数\n\t */\n\tdebounce(fn: () => void, delay = 500): void {\n\t\t// 如果已有定时器,清除它\n\t\tif (_debounceTimeout) {\n\t\t\tclearTimeout(_debounceTimeout);\n\t\t}\n\t\t// 设置新的定时器\n\t\t_debounceTimeout = setTimeout(() => {\n\t\t\t// 调用原函数\n\t\t\tfn();\n\t\t}, delay);\n\t},\n\t/**\n\t * 异步防抖\n\t * @param fn - 执行函数\n\t * @param delay - 延时毫秒\n\t * @returns 返回一个新的防抖函数\n\t */\n\tasync debounceAsync(fn: () => Promise<void>, delay = 500): Promise<void> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// 清除已有定时器\n\t\t\tif (_debounceTimeout) {\n\t\t\t\tclearTimeout(_debounceTimeout);\n\t\t\t}\n\t\t\t// 设置新的定时器\n\t\t\t_debounceTimeout = setTimeout(async () => {\n\t\t\t\ttry {\n\t\t\t\t\t// 调用异步函数 fn\n\t\t\t\t\tawait fn();\n\t\t\t\t\tresolve();\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t}, delay);\n\t\t});\n\t},\n\t/**\n\t * 节流\n\t * @param fn - 执行函数\n\t * @param delay - 延时毫秒\n\t * @returns 返回一个新的节流函数\n\t */\n\tthrottle(fn: () => void, delay = 500): void {\n\t\t// 如果节流操作正在运行,直接返回\n\t\tif (_throttleRunning) {\n\t\t\treturn;\n\t\t}\n\t\t// 设置节流状态为运行\n\t\t_throttleRunning = true;\n\t\t// 调用原函数\n\t\tfn();\n\t\t// 设置定时器以重置节流状态\n\t\tsetTimeout(() => {\n\t\t\t_throttleRunning = false;\n\t\t}, delay);\n\t},\n\t/**\n\t * 异步节流\n\t * @param fn - 执行函数\n\t * @param delay - 延时毫秒\n\t * @returns 返回一个新的节流函数\n\t */\n\tasync throttleAsync(fn: () => Promise<void>, delay = 500): Promise<void> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// 如果节流操作正在进行,直接返回\n\t\t\tif (_throttleRunning) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// 设置节流状态为运行\n\t\t\t_throttleRunning = true;\n\t\t\t// 调用原函数\n\t\t\tfn()\n\t\t\t\t.then(() => {\n\t\t\t\t\tresolve();\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\t// 设置定时器以重置节流状态\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t_throttleRunning = false;\n\t\t\t\t\t}, delay);\n\t\t\t\t});\n\t\t});\n\t},\n};\n"],"names":["_debounceTimeout","_throttleRunning","clickUtil","debounce","fn","delay","clearTimeout","setTimeout","async","Promise","resolve","reject","error","throttle","then","catch","finally"],"mappings":"gFAAA,IAAIA,EAAyD,KACzDC,GAAmB,EAEhB,MAAMC,EAAY,CAOxB,QAAAC,CAASC,EAAgBC,EAAQ,KAE5BL,GACHM,aAAaN,GAGdA,EAAmBO,YAAW,KAE1BH,GAAA,GACDC,EACJ,EAOAG,cAAM,MAAcJ,EAAyBC,EAAQ,MAC7C,IAAII,SAAQ,CAACC,EAASC,KAExBX,GACHM,aAAaN,GAGdA,EAAmBO,YAAWC,UACzB,UAEGJ,IACEM,UACAE,GACRD,EAAOC,EAAK,IAEXP,EAAK,IASV,QAAAQ,CAAST,EAAgBC,EAAQ,KAE5BJ,IAIeA,GAAA,EAEhBG,IAEHG,YAAW,KACSN,GAAA,CAAA,GACjBI,GACJ,EAOAG,cAAM,MAAcJ,EAAyBC,EAAQ,MAC7C,IAAII,SAAQ,CAACC,EAASC,KAExBV,IAIeA,GAAA,EAEhBG,IACDU,MAAK,KACGJ,GAAA,IAERK,OAAOH,IACPD,EAAOC,EAAK,IAEZI,SAAQ,KAERT,YAAW,KACSN,GAAA,CAAA,GACjBI,EAAK,IACR"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/click/index.ts"],"sourcesContent":["let _debounceTimeout: ReturnType<typeof setTimeout> | null = null;\nlet _throttleRunning = false;\n\n/**\n * 点击工具类\n */\nexport const clickUtil = {\n\t/**\n\t * 防抖\n\t * @param fn - 执行函数\n\t * @param delay - 延时毫秒\n\t * @returns 返回一个新的防抖函数\n\t */\n\tdebounce(fn: () => void, delay = 500): void {\n\t\t// 如果已有定时器,清除它\n\t\tif (_debounceTimeout) {\n\t\t\tclearTimeout(_debounceTimeout);\n\t\t}\n\t\t// 设置新的定时器\n\t\t_debounceTimeout = setTimeout(() => {\n\t\t\t// 调用原函数\n\t\t\tfn();\n\t\t}, delay);\n\t},\n\t/**\n\t * 异步防抖\n\t * @param fn - 执行函数\n\t * @param delay - 延时毫秒\n\t * @returns 返回一个新的防抖函数\n\t */\n\tasync debounceAsync(fn: () => Promise<void>, delay = 500): Promise<void> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// 清除已有定时器\n\t\t\tif (_debounceTimeout) {\n\t\t\t\tclearTimeout(_debounceTimeout);\n\t\t\t}\n\t\t\t// 设置新的定时器\n\t\t\t_debounceTimeout = setTimeout(async () => {\n\t\t\t\ttry {\n\t\t\t\t\t// 调用异步函数 fn\n\t\t\t\t\tawait fn();\n\t\t\t\t\tresolve();\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t}, delay);\n\t\t});\n\t},\n\t/**\n\t * 节流\n\t * @param fn - 执行函数\n\t * @param delay - 延时毫秒\n\t * @returns 返回一个新的节流函数\n\t */\n\tthrottle(fn: () => void, delay = 500): void {\n\t\t// 如果节流操作正在运行,直接返回\n\t\tif (_throttleRunning) {\n\t\t\treturn;\n\t\t}\n\t\t// 设置节流状态为运行\n\t\t_throttleRunning = true;\n\t\t// 调用原函数\n\t\tfn();\n\t\t// 设置定时器以重置节流状态\n\t\tsetTimeout(() => {\n\t\t\t_throttleRunning = false;\n\t\t}, delay);\n\t},\n\t/**\n\t * 异步节流\n\t * @param fn - 执行函数\n\t * @param delay - 延时毫秒\n\t * @returns 返回一个新的节流函数\n\t */\n\tasync throttleAsync(fn: () => Promise<void>, delay = 500): Promise<void> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// 如果节流操作正在进行,直接返回\n\t\t\tif (_throttleRunning) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// 设置节流状态为运行\n\t\t\t_throttleRunning = true;\n\t\t\t// 调用原函数\n\t\t\tfn()\n\t\t\t\t.then(() => {\n\t\t\t\t\tresolve();\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\treject(error);\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\t// 设置定时器以重置节流状态\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t_throttleRunning = false;\n\t\t\t\t\t}, delay);\n\t\t\t\t});\n\t\t});\n\t},\n};\n"],"names":["_debounceTimeout","_throttleRunning","clickUtil","debounce","fn","delay","clearTimeout","setTimeout","async","Promise","resolve","reject","error","throttle","then","catch","finally"],"mappings":"gFAAA,IAAIA,EAAyD,KACzDC,GAAmB,EAKhB,MAAMC,EAAY,CAOxB,QAAAC,CAASC,EAAgBC,EAAQ,KAE5BL,GACHM,aAAaN,GAGdA,EAAmBO,YAAW,KAE1BH,GAAA,GACDC,EACJ,EAOAG,cAAM,MAAcJ,EAAyBC,EAAQ,MAC7C,IAAII,SAAQ,CAACC,EAASC,KAExBX,GACHM,aAAaN,GAGdA,EAAmBO,YAAWC,UACzB,UAEGJ,IACEM,UACAE,GACRD,EAAOC,EAAK,IAEXP,EAAK,IASV,QAAAQ,CAAST,EAAgBC,EAAQ,KAE5BJ,IAIeA,GAAA,EAEhBG,IAEHG,YAAW,KACSN,GAAA,CAAA,GACjBI,GACJ,EAOAG,cAAM,MAAcJ,EAAyBC,EAAQ,MAC7C,IAAII,SAAQ,CAACC,EAASC,KAExBV,IAIeA,GAAA,EAEhBG,IACDU,MAAK,KACGJ,GAAA,IAERK,OAAOH,IACPD,EAAOC,EAAK,IAEZI,SAAQ,KAERT,YAAW,KACSN,GAAA,CAAA,GACjBI,EAAK,IACR"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * 颜色工具类
3
+ */
1
4
  export declare const colorUtil: {
2
5
  /**
3
6
  * hex颜色转rgb颜色
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t={hexToRgb(t){let r="";if(!/^#?[0-9A-Fa-f]{6}$/.test(t))throw new Error("输入错误的hex");r=(t=t.replace("#","")).match(/../g);for(let e=0;e<3;e++)r[e]=parseInt(r[e],16);return r},rgbToHex(t,r,e){const o=/^\d{1,3}$/;if(!o.test(t)||!o.test(r)||!o.test(e))throw new Error("输入错误的rgb颜色值");const n=[t.toString(16),r.toString(16),e.toString(16)];for(let s=0;s<3;s++)1===n[s].length&&(n[s]=`0${n[s]}`);return`#${n.join("")}`},getDarkColor(t,r){if(!/^#?[0-9A-Fa-f]{6}$/.test(t))throw new Error("输入错误的hex颜色值");const e=this.hexToRgb(t);for(let o=0;o<3;o++)e[o]=Math.round(20.5*r+e[o]*(1-r));return this.rgbToHex(e[0],e[1],e[2])},getLightColor(t,r){if(!/^#?[0-9A-Fa-f]{6}$/.test(t))throw new Error("输入错误的hex颜色值");const e=this.hexToRgb(t);for(let o=0;o<3;o++)e[o]=Math.round(255*r+e[o]*(1-r));return this.rgbToHex(e[0],e[1],e[2])}};exports.colorUtil=t;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../error/index.js"),r={hexToRgb(r){let e="";if(!/^#?[0-9A-F]{6}$/i.test(r))throw new t.FastError("输入错误的hex");e=(r=r.replace("#","")).match(/../g);for(let t=0;t<3;t++)e[t]=parseInt(e[t],16);return e},rgbToHex(r,e,o){const s=/^\d{1,3}$/;if(!s.test(r)||!s.test(e)||!s.test(o))throw new t.FastError("输入错误的rgb颜色值");const n=[r.toString(16),e.toString(16),o.toString(16)];for(let t=0;t<3;t++)1===n[t].length&&(n[t]=`0${n[t]}`);return`#${n.join("")}`},getDarkColor(r,e){if(!/^#?[0-9A-F]{6}$/i.test(r))throw new t.FastError("输入错误的hex颜色值");const o=this.hexToRgb(r);for(let t=0;t<3;t++)o[t]=Math.round(20.5*e+o[t]*(1-e));return this.rgbToHex(o[0],o[1],o[2])},getLightColor(r,e){if(!/^#?[0-9A-F]{6}$/i.test(r))throw new t.FastError("输入错误的hex颜色值");const o=this.hexToRgb(r);for(let t=0;t<3;t++)o[t]=Math.round(255*e+o[t]*(1-e));return this.rgbToHex(o[0],o[1],o[2])}};exports.colorUtil=r;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/color/index.ts"],"sourcesContent":["export const colorUtil = {\n\t/**\n\t * hex颜色转rgb颜色\n\t * @param str 颜色值字符串\n\t * @returns 返回处理后的颜色值\n\t */\n\thexToRgb(str: any): any {\n\t\tlet hex: any = \"\";\n\t\tconst reg = /^#?[0-9A-Fa-f]{6}$/;\n\t\tif (!reg.test(str)) throw new Error(\"输入错误的hex\");\n\t\tstr = str.replace(\"#\", \"\");\n\t\thex = str.match(/../g);\n\t\tfor (let i = 0; i < 3; i++) hex[i] = parseInt(hex[i], 16);\n\t\treturn hex;\n\t},\n\t/**\n\t * rgb颜色转Hex颜色\n\t * @param r 代表红色\n\t * @param g 代表绿色\n\t * @param b 代表蓝色\n\t * @returns 返回处理后的颜色值\n\t */\n\trgbToHex(r: any, g: any, b: any): string {\n\t\tconst reg = /^\\d{1,3}$/;\n\t\tif (!reg.test(r) || !reg.test(g) || !reg.test(b)) throw new Error(\"输入错误的rgb颜色值\");\n\t\tconst hex = [r.toString(16), g.toString(16), b.toString(16)];\n\t\tfor (let i = 0; i < 3; i++) if (hex[i].length === 1) hex[i] = `0${hex[i]}`;\n\t\treturn `#${hex.join(\"\")}`;\n\t},\n\t/**\n\t * 加深颜色值\n\t * @param color 颜色值字符串\n\t * @param level 加深的程度,限0-1之间\n\t * @returns 返回处理后的颜色值\n\t */\n\tgetDarkColor(color: string, level: number): string {\n\t\tconst reg = /^#?[0-9A-Fa-f]{6}$/;\n\t\tif (!reg.test(color)) throw new Error(\"输入错误的hex颜色值\");\n\t\tconst rgb = this.hexToRgb(color);\n\t\tfor (let i = 0; i < 3; i++) rgb[i] = Math.round(20.5 * level + rgb[i] * (1 - level));\n\t\treturn this.rgbToHex(rgb[0], rgb[1], rgb[2]);\n\t},\n\t/**\n\t * 变浅颜色值\n\t * @param color 颜色值字符串\n\t * @param level 加深的程度,限0-1之间\n\t * @returns 返回处理后的颜色值\n\t */\n\tgetLightColor(color: string, level: number): string {\n\t\tconst reg = /^#?[0-9A-Fa-f]{6}$/;\n\t\tif (!reg.test(color)) throw new Error(\"输入错误的hex颜色值\");\n\t\tconst rgb = this.hexToRgb(color);\n\t\tfor (let i = 0; i < 3; i++) rgb[i] = Math.round(255 * level + rgb[i] * (1 - level));\n\t\treturn this.rgbToHex(rgb[0], rgb[1], rgb[2]);\n\t},\n};\n"],"names":["colorUtil","hexToRgb","str","hex","test","Error","replace","match","i","parseInt","rgbToHex","r","g","b","reg","toString","length","join","getDarkColor","color","level","rgb","this","Math","round","getLightColor"],"mappings":"gFAAO,MAAMA,EAAY,CAMxB,QAAAC,CAASC,GACR,IAAIC,EAAW,GAEX,IADQ,qBACHC,KAAKF,GAAY,MAAA,IAAIG,MAAM,YAE9BF,GADAD,EAAAA,EAAII,QAAQ,IAAK,KACbC,MAAM,OAChB,IAAA,IAASC,EAAI,EAAGA,EAAI,EAAGA,IAAKL,EAAIK,GAAKC,SAASN,EAAIK,GAAI,IAC/C,OAAAL,CACR,EAQA,QAAAO,CAASC,EAAQC,EAAQC,GACxB,MAAMC,EAAM,YACZ,IAAKA,EAAIV,KAAKO,KAAOG,EAAIV,KAAKQ,KAAOE,EAAIV,KAAKS,GAAU,MAAA,IAAIR,MAAM,eAClE,MAAMF,EAAM,CAACQ,EAAEI,SAAS,IAAKH,EAAEG,SAAS,IAAKF,EAAEE,SAAS,KACxD,IAAA,IAASP,EAAI,EAAGA,EAAI,EAAGA,IAA2B,IAAlBL,EAAIK,GAAGQ,SAAkBb,EAAAK,GAAK,IAAIL,EAAIK,MACtE,MAAO,IAAIL,EAAIc,KAAK,KACrB,EAOA,YAAAC,CAAaC,EAAeC,GAEvB,IADQ,qBACHhB,KAAKe,GAAc,MAAA,IAAId,MAAM,eAChC,MAAAgB,EAAMC,KAAKrB,SAASkB,GAC1B,IAAA,IAASX,EAAI,EAAGA,EAAI,EAAGA,MAASA,GAAKe,KAAKC,MAAM,KAAOJ,EAAQC,EAAIb,IAAM,EAAIY,IACtE,OAAAE,KAAKZ,SAASW,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAC1C,EAOA,aAAAI,CAAcN,EAAeC,GAExB,IADQ,qBACHhB,KAAKe,GAAc,MAAA,IAAId,MAAM,eAChC,MAAAgB,EAAMC,KAAKrB,SAASkB,GAC1B,IAAA,IAASX,EAAI,EAAGA,EAAI,EAAGA,MAASA,GAAKe,KAAKC,MAAM,IAAMJ,EAAQC,EAAIb,IAAM,EAAIY,IACrE,OAAAE,KAAKZ,SAASW,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAE"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/color/index.ts"],"sourcesContent":["import { FastError } from \"../error\";\n\n/**\n * 颜色工具类\n */\nexport const colorUtil = {\n\t/**\n\t * hex颜色转rgb颜色\n\t * @param str 颜色值字符串\n\t * @returns 返回处理后的颜色值\n\t */\n\thexToRgb(str: any): any {\n\t\tlet hex: any = \"\";\n\t\tconst reg = /^#?[0-9A-F]{6}$/i;\n\t\tif (!reg.test(str)) throw new FastError(\"输入错误的hex\");\n\t\tstr = str.replace(\"#\", \"\");\n\t\thex = str.match(/../g);\n\t\tfor (let i = 0; i < 3; i++) hex[i] = parseInt(hex[i], 16);\n\t\treturn hex;\n\t},\n\t/**\n\t * rgb颜色转Hex颜色\n\t * @param r 代表红色\n\t * @param g 代表绿色\n\t * @param b 代表蓝色\n\t * @returns 返回处理后的颜色值\n\t */\n\trgbToHex(r: any, g: any, b: any): string {\n\t\tconst reg = /^\\d{1,3}$/;\n\t\tif (!reg.test(r) || !reg.test(g) || !reg.test(b)) throw new FastError(\"输入错误的rgb颜色值\");\n\t\tconst hex = [r.toString(16), g.toString(16), b.toString(16)];\n\t\tfor (let i = 0; i < 3; i++) if (hex[i].length === 1) hex[i] = `0${hex[i]}`;\n\t\treturn `#${hex.join(\"\")}`;\n\t},\n\t/**\n\t * 加深颜色值\n\t * @param color 颜色值字符串\n\t * @param level 加深的程度,限0-1之间\n\t * @returns 返回处理后的颜色值\n\t */\n\tgetDarkColor(color: string, level: number): string {\n\t\tconst reg = /^#?[0-9A-F]{6}$/i;\n\t\tif (!reg.test(color)) throw new FastError(\"输入错误的hex颜色值\");\n\t\tconst rgb = this.hexToRgb(color);\n\t\tfor (let i = 0; i < 3; i++) rgb[i] = Math.round(20.5 * level + rgb[i] * (1 - level));\n\t\treturn this.rgbToHex(rgb[0], rgb[1], rgb[2]);\n\t},\n\t/**\n\t * 变浅颜色值\n\t * @param color 颜色值字符串\n\t * @param level 加深的程度,限0-1之间\n\t * @returns 返回处理后的颜色值\n\t */\n\tgetLightColor(color: string, level: number): string {\n\t\tconst reg = /^#?[0-9A-F]{6}$/i;\n\t\tif (!reg.test(color)) throw new FastError(\"输入错误的hex颜色值\");\n\t\tconst rgb = this.hexToRgb(color);\n\t\tfor (let i = 0; i < 3; i++) rgb[i] = Math.round(255 * level + rgb[i] * (1 - level));\n\t\treturn this.rgbToHex(rgb[0], rgb[1], rgb[2]);\n\t},\n};\n"],"names":["colorUtil","hexToRgb","str","hex","test","FastError","replace","match","i","parseInt","rgbToHex","r","g","b","reg","toString","length","join","getDarkColor","color","level","rgb","this","Math","round","getLightColor"],"mappings":"qHAKaA,EAAY,CAMxB,QAAAC,CAASC,GACR,IAAIC,EAAW,GAEX,IADQ,mBACHC,KAAKF,GAAY,MAAA,IAAIG,YAAU,YAElCF,GADAD,EAAAA,EAAII,QAAQ,IAAK,KACbC,MAAM,OAChB,IAAA,IAASC,EAAI,EAAGA,EAAI,EAAGA,IAAKL,EAAIK,GAAKC,SAASN,EAAIK,GAAI,IAC/C,OAAAL,CACR,EAQA,QAAAO,CAASC,EAAQC,EAAQC,GACxB,MAAMC,EAAM,YACZ,IAAKA,EAAIV,KAAKO,KAAOG,EAAIV,KAAKQ,KAAOE,EAAIV,KAAKS,SAAU,IAAIR,YAAU,eACtE,MAAMF,EAAM,CAACQ,EAAEI,SAAS,IAAKH,EAAEG,SAAS,IAAKF,EAAEE,SAAS,KACxD,IAAA,IAASP,EAAI,EAAGA,EAAI,EAAGA,IAA2B,IAAlBL,EAAIK,GAAGQ,SAAkBb,EAAAK,GAAK,IAAIL,EAAIK,MACtE,MAAO,IAAIL,EAAIc,KAAK,KACrB,EAOA,YAAAC,CAAaC,EAAeC,GAEvB,IADQ,mBACHhB,KAAKe,GAAc,MAAA,IAAId,YAAU,eACpC,MAAAgB,EAAMC,KAAKrB,SAASkB,GAC1B,IAAA,IAASX,EAAI,EAAGA,EAAI,EAAGA,MAASA,GAAKe,KAAKC,MAAM,KAAOJ,EAAQC,EAAIb,IAAM,EAAIY,IACtE,OAAAE,KAAKZ,SAASW,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAC1C,EAOA,aAAAI,CAAcN,EAAeC,GAExB,IADQ,mBACHhB,KAAKe,GAAc,MAAA,IAAId,YAAU,eACpC,MAAAgB,EAAMC,KAAKrB,SAASkB,GAC1B,IAAA,IAASX,EAAI,EAAGA,EAAI,EAAGA,MAASA,GAAKe,KAAKC,MAAM,IAAMJ,EAAQC,EAAIb,IAAM,EAAIY,IACrE,OAAAE,KAAKZ,SAASW,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/console/index.ts"],"sourcesContent":["import { isNil, isString } from \"lodash-unified\";\nimport { FastError } from \"../error\";\n\n/**\n * 打印 Log 日志\n * @param name 来源名称\n */\nexport const consoleLog = (name: string, message?: string | false, error?: any): void => {\n\tif (error) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log(`[Fast-Log-${name}]${message ? ` ${message}` : \"\"}`, error);\n\t} else {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log(`[Fast-Log-${name}]${message ? ` ${message}` : \"\"}`);\n\t}\n};\n\n/**\n * 打印 Warn 日志\n * @param name 来源名称\n */\nexport const consoleWarn = (name: string, message?: string | false, error?: any): void => {\n\tif (error) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(`[Fast-Log-${name}]${message ? ` ${message}` : \"\"}`, error);\n\t} else {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(`[Fast-Log-${name}]${message ? ` ${message}` : \"\"}`);\n\t}\n};\n\n/**\n * 打印 Debug 日志\n * @param name 来源名称\n */\nexport const consoleDebug = (name: string, message?: string | false, error?: any): void => {\n\tif (error) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.debug(`[Fast-Log-${name}]${message ? ` ${message}` : \"\"}`, error);\n\t} else {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.debug(`[Fast-Log-${name}]${message ? ` ${message}` : \"\"}`);\n\t}\n};\n\n/**\n * 打印 Error 日志\n * @param name 来源名称\n */\nexport const consoleError = (name: string, message?: any): void => {\n\tif (isNil(message)) {\n\t\treturn;\n\t}\n\tif (isString(message)) {\n\t\tconsole.error(new FastError(`[Fast-${name}] ${message}`));\n\t} else {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error(`[Fast-Error-${name}]`, message);\n\t}\n};\n\n/**\n * 抛出错误\n * @param name 来源名称\n */\nexport const throwError = (name: string, message?: any): never => {\n\tthrow new FastError(`[Fast-${name}] ${message}`);\n};\n"],"names":["name","message","error","console","debug","isNil","isString","FastError","log","warn"],"mappings":"sKAmC4B,CAACA,EAAcC,EAA0BC,KAChEA,EAEKC,QAAAC,MAAM,aAAaJ,KAAQC,EAAU,IAAIA,IAAY,KAAMC,GAG3DC,QAAAC,MAAM,aAAaJ,KAAQC,EAAU,IAAIA,IAAY,KAAI,uBAQvC,CAACD,EAAcC,KACtCI,EAAAA,MAAMJ,KAGNK,EAAAA,SAASL,GACJE,QAAAD,MAAM,IAAIK,EAAAA,UAAU,SAASP,MAASC,MAG9CE,QAAQD,MAAM,eAAeF,KAASC,GAAO,qBAlDrB,CAACD,EAAcC,EAA0BC,KAC9DA,EAEKC,QAAAK,IAAI,aAAaR,KAAQC,EAAU,IAAIA,IAAY,KAAMC,GAGzDC,QAAAK,IAAI,aAAaR,KAAQC,EAAU,IAAIA,IAAY,KAAI,sBAQtC,CAACD,EAAcC,EAA0BC,KAC/DA,EAEKC,QAAAM,KAAK,aAAaT,KAAQC,EAAU,IAAIA,IAAY,KAAMC,GAG1DC,QAAAM,KAAK,aAAaT,KAAQC,EAAU,IAAIA,IAAY,KAAI,qBAsCxC,CAACD,EAAcC,KACxC,MAAM,IAAIM,EAAUA,UAAA,SAASP,MAASC,IAAS"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/console/index.ts"],"sourcesContent":["import { isNil, isString } from \"lodash-unified\";\nimport { FastError } from \"../error\";\n\n/**\n * 打印 Log 日志\n * @param name 来源名称\n */\nexport const consoleLog = (name: string, message?: string | false, error?: any): void => {\n\tif (error) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log(`[Fast-Log-${name}]${message ? ` ${message}` : \"\"}`, error);\n\t} else {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log(`[Fast-Log-${name}]${message ? ` ${message}` : \"\"}`);\n\t}\n};\n\n/**\n * 打印 Warn 日志\n * @param name 来源名称\n */\nexport const consoleWarn = (name: string, message?: string | false, error?: any): void => {\n\tif (error) {\n\t\tconsole.warn(`[Fast-Log-${name}]${message ? ` ${message}` : \"\"}`, error);\n\t} else {\n\t\tconsole.warn(`[Fast-Log-${name}]${message ? ` ${message}` : \"\"}`);\n\t}\n};\n\n/**\n * 打印 Debug 日志\n * @param name 来源名称\n */\nexport const consoleDebug = (name: string, message?: string | false, error?: any): void => {\n\tif (error) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.debug(`[Fast-Log-${name}]${message ? ` ${message}` : \"\"}`, error);\n\t} else {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.debug(`[Fast-Log-${name}]${message ? ` ${message}` : \"\"}`);\n\t}\n};\n\n/**\n * 打印 Error 日志\n * @param name 来源名称\n */\nexport const consoleError = (name: string, message?: any): void => {\n\tif (isNil(message)) {\n\t\treturn;\n\t}\n\tif (isString(message)) {\n\t\tconsole.error(new FastError(`[Fast-${name}] ${message}`));\n\t} else {\n\t\tconsole.error(`[Fast-Error-${name}]`, message);\n\t}\n};\n\n/**\n * 抛出错误\n * @param name 来源名称\n */\nexport const throwError = (name: string, message?: any): never => {\n\tthrow new FastError(`[Fast-${name}] ${message}`);\n};\n"],"names":["name","message","error","console","debug","isNil","isString","FastError","log","warn"],"mappings":"sKAiC4B,CAACA,EAAcC,EAA0BC,KAChEA,EAEKC,QAAAC,MAAM,aAAaJ,KAAQC,EAAU,IAAIA,IAAY,KAAMC,GAG3DC,QAAAC,MAAM,aAAaJ,KAAQC,EAAU,IAAIA,IAAY,KAAI,uBAQvC,CAACD,EAAcC,KACtCI,EAAAA,MAAMJ,KAGNK,EAAAA,SAASL,GACJE,QAAAD,MAAM,IAAIK,EAAAA,UAAU,SAASP,MAASC,MAE9CE,QAAQD,MAAM,eAAeF,KAASC,GAAO,qBA/CrB,CAACD,EAAcC,EAA0BC,KAC9DA,EAEKC,QAAAK,IAAI,aAAaR,KAAQC,EAAU,IAAIA,IAAY,KAAMC,GAGzDC,QAAAK,IAAI,aAAaR,KAAQC,EAAU,IAAIA,IAAY,KAAI,sBAQtC,CAACD,EAAcC,EAA0BC,KAC/DA,EACKC,QAAAM,KAAK,aAAaT,KAAQC,EAAU,IAAIA,IAAY,KAAMC,GAE1DC,QAAAM,KAAK,aAAaT,KAAQC,EAAU,IAAIA,IAAY,KAAI,qBAqCxC,CAACD,EAAcC,KACxC,MAAM,IAAIM,EAAUA,UAAA,SAASP,MAASC,IAAS"}
@@ -10,15 +10,32 @@ export declare const dateUtil: {
10
10
  * 时间处理翻译
11
11
  */
12
12
  dateTimeFix(date: string | Date | null | undefined): string;
13
+ /**
14
+ * 获取默认时间
15
+ * @returns [00:00:00, 23:59:59]
16
+ */
13
17
  getDefaultTime(): Date[];
18
+ /**
19
+ * 获取简单的日期时间
20
+ * @returns xxxx-xx-xx 00:00:00
21
+ */
14
22
  getSimpleTime(): Date;
23
+ /**
24
+ * 获取简单的日期时间范围
25
+ */
15
26
  getSimpleShortcuts(): {
16
27
  text: string;
17
28
  value: () => Date;
18
29
  }[];
30
+ /**
31
+ * 获取日期范围
32
+ */
19
33
  getShortcuts(): {
20
34
  text: string;
21
35
  value: () => Date[];
22
36
  }[];
37
+ /**
38
+ * 判断传入的时间是否大于当前时间
39
+ */
23
40
  getDisabledDate(time: Date): boolean;
24
41
  };