@fast-china/utils 1.0.3 → 1.0.5

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 (68) hide show
  1. package/dist/index.global.js +197 -142
  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 +6 -0
  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 +5 -4
  15. package/es/color/index.mjs.map +1 -1
  16. package/es/date/index.d.ts +17 -0
  17. package/es/date/index.mjs +17 -0
  18. package/es/date/index.mjs.map +1 -1
  19. package/es/env/index.d.ts +25 -0
  20. package/es/env/index.mjs +38 -0
  21. package/es/env/index.mjs.map +1 -0
  22. package/es/identity/index.d.ts +8 -0
  23. package/es/identity/index.mjs +33 -0
  24. package/es/identity/index.mjs.map +1 -0
  25. package/es/index.d.ts +3 -0
  26. package/es/index.mjs +6 -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 +37 -0
  35. package/es/string/index.mjs.map +1 -1
  36. package/es/vue/useRender.mjs +2 -1
  37. package/es/vue/useRender.mjs.map +1 -1
  38. package/lib/array/index.d.ts +19 -0
  39. package/lib/array/index.js +2 -0
  40. package/lib/array/index.js.map +1 -0
  41. package/lib/base64/index.d.ts +9 -0
  42. package/lib/base64/index.js.map +1 -1
  43. package/lib/click/index.d.ts +3 -0
  44. package/lib/click/index.js.map +1 -1
  45. package/lib/color/index.d.ts +3 -0
  46. package/lib/color/index.js +1 -1
  47. package/lib/color/index.js.map +1 -1
  48. package/lib/date/index.d.ts +17 -0
  49. package/lib/date/index.js.map +1 -1
  50. package/lib/env/index.d.ts +25 -0
  51. package/lib/env/index.js +2 -0
  52. package/lib/env/index.js.map +1 -0
  53. package/lib/identity/index.d.ts +8 -0
  54. package/lib/identity/index.js +2 -0
  55. package/lib/identity/index.js.map +1 -0
  56. package/lib/index.d.ts +3 -0
  57. package/lib/index.js +1 -1
  58. package/lib/object/index.d.ts +0 -12
  59. package/lib/object/index.js +1 -1
  60. package/lib/object/index.js.map +1 -1
  61. package/lib/storage/index.js +1 -1
  62. package/lib/storage/index.js.map +1 -1
  63. package/lib/string/index.d.ts +21 -0
  64. package/lib/string/index.js +1 -1
  65. package/lib/string/index.js.map +1 -1
  66. package/lib/vue/useRender.js +1 -1
  67. package/lib/vue/useRender.js.map +1 -1
  68. package/package.json +8 -8
@@ -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,33 @@
1
+ const arrayUtil = {
2
+ /**
3
+ * 是否存在重复值
4
+ * @param arr 数组
5
+ * @param prop 属性
6
+ * @returns
7
+ */
8
+ hasDuplicateProperty(arr, prop) {
9
+ const values = arr.map((obj) => obj[prop]);
10
+ const uniqueValues = new Set(values);
11
+ return values.length !== uniqueValues.size;
12
+ },
13
+ /**
14
+ * 是否存在非重复值
15
+ * @param arr 数组
16
+ * @param prop 属性
17
+ * @returns
18
+ */
19
+ hasDifferentProperty(arr, prop) {
20
+ const valueSet = /* @__PURE__ */ new Set();
21
+ for (const obj of arr) {
22
+ valueSet.add(obj[prop]);
23
+ if (valueSet.size > 1) {
24
+ return true;
25
+ }
26
+ }
27
+ return false;
28
+ }
29
+ };
30
+ export {
31
+ arrayUtil
32
+ };
33
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","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":[],"mappings":"AAGO,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOxB,qBAAwB,KAAU,MAAwB;AACzD,UAAM,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;AACnC,UAAA,eAAe,IAAI,IAAI,MAAM;AAC5B,WAAA,OAAO,WAAW,aAAa;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,qBAAwB,KAAU,MAAwB;AACnD,UAAA,+BAAe,IAAS;AAC9B,eAAW,OAAO,KAAK;AACb,eAAA,IAAI,IAAI,IAAI,CAAC;AAClB,UAAA,SAAS,OAAO,GAAG;AACf,eAAA;AAAA,MAAA;AAAA,IACR;AAEM,WAAA;AAAA,EAAA;AAET;"}
@@ -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
@@ -72,6 +72,9 @@ function getRandomStr(str = randomStr, prefixStrLength = randomPrefixStrLength)
72
72
  return result;
73
73
  }
74
74
  const base64Util = {
75
+ /**
76
+ * 将字符串编码为Base64格式
77
+ */
75
78
  bota(string) {
76
79
  string = String(string);
77
80
  let bitmap, a, b, c, result = "", i = 0, rest = string.length % 3;
@@ -85,6 +88,9 @@ const base64Util = {
85
88
  }
86
89
  return rest ? result.slice(0, rest - 3) + "===".substring(rest) : result;
87
90
  },
91
+ /**
92
+ * 将Base64编码的字符串解码回其原始格式。
93
+ */
88
94
  atob(string) {
89
95
  string = String(string).replace(/[\t\n\f\r ]+/g, "");
90
96
  if (!b64re.test(string)) throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","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":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","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\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":[],"mappings":"AAAA,MAAM,MAAM;AACZ,MAAM,QAAQ;AAGd,MAAM,eAAe;AAAA,EACpB,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA,EAC/B,EAAE,OAAO,KAAK,aAAa,IAAI;AAAA;AAAA,EAE/B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,GAAG;AAAA,EAC7B,EAAE,OAAO,IAAI,aAAa,EAAE;AAAA,EAC5B,EAAE,OAAO,GAAG,aAAa,EAAE;AAAA,EAC3B,EAAE,OAAO,GAAG,aAAa,EAAE;AAAA,EAC3B,EAAE,OAAO,GAAG,aAAa,EAAE;AAC5B;AAGA,MAAM,wBAAwB;AAG9B,MAAM,YAAY;AAKlB,SAAS,2BAA2B,WAA2B;AAC9D,MAAI,YAAY;AAChB,QAAM,QAAQ,aAAa,KAAK,CAAC,GAAG,MAAM;AAClC,WAAA,EAAE,QAAQ,EAAE;AAAA,EAAA,CACnB;AACK,QAAA,QAAQ,CAAC,SAAS;AACnB,QAAA,KAAK,QAAQ,UAAU,QAAQ;AAC5B,YAAA,aAAa,UAAU,KAAK,WAAW;AACjC,kBAAA,UAAU,MAAM,GAAG,KAAK,KAAK,IAAI,aAAa,UAAU,MAAM,KAAK,KAAK;AAAA,IAAA;AAAA,EACrF,CACA;AACM,SAAA;AACR;AAKA,SAAS,yBAAyB,WAA2B;AAC5D,QAAM,QAAQ,aAAa,KAAK,CAAC,GAAG,MAAM;AAClC,WAAA,EAAE,QAAQ,EAAE;AAAA,EAAA,CACnB;AACD,MAAI,YAAY;AACV,QAAA,QAAQ,CAAC,SAAS;AACnB,QAAA,KAAK,QAAQ,UAAU,QAAQ;AACtB,kBAAA,UAAU,MAAM,GAAG,KAAK,KAAK,IAAI,UAAU,MAAM,KAAK,QAAQ,CAAC;AAAA,IAAA;AAAA,EAC5E,CACA;AACM,SAAA;AACR;AAKA,SAAS,aAAa,MAAM,WAAW,kBAAkB,uBAA+B;AACvF,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,iBAAiB,KAAK;AACnC,UAAA,YAAY,KAAK,KAAK,KAAK,YAAY,IAAI,SAAS,EAAE;AACtD,UAAA,aAAa,IAAI,SAAS;AACtB,cAAA;AAAA,EAAA;AAEJ,SAAA;AACR;AAKO,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA,EAIzB,KAAK,QAAwB;AAC5B,aAAS,OAAO,MAAM;AAClB,QAAA,QACH,GACA,GACA,GACA,SAAS,IACT,IAAI,GAEJ,OAAO,OAAO,SAAS;AAEjB,WAAA,IAAI,OAAO,UAAU;AAC3B,WAAK,IAAI,OAAO,WAAW,GAAG,KAAK,QAAQ,IAAI,OAAO,WAAW,GAAG,KAAK,QAAQ,IAAI,OAAO,WAAW,GAAG,KAAK;AAC9G,cAAM,IAAI;AAAA,UACT;AAAA,QACD;AAES,eAAA,KAAK,KAAO,KAAK,IAAK;AACtB,gBAAA,IAAI,OAAQ,UAAU,KAAM,EAAE,IAAI,IAAI,OAAQ,UAAU,KAAM,EAAE,IAAI,IAAI,OAAQ,UAAU,IAAK,EAAE,IAAI,IAAI,OAAO,SAAS,EAAE;AAAA,IAAA;AAG/H,WAAA,OAAO,OAAO,MAAM,GAAG,OAAO,CAAC,IAAI,MAAM,UAAU,IAAI,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA,EAIA,KAAK,QAAwB;AAC5B,aAAS,OAAO,MAAM,EAAE,QAAQ,iBAAiB,EAAE;AAC/C,QAAA,CAAC,MAAM,KAAK,MAAM,EAAS,OAAA,IAAI,UAAU,0FAA0F;AACvI,cAAU,KAAK,MAAM,KAAK,OAAO,SAAS,EAAE;AAC5C,QAAI,QACH,SAAS,IACT,IACA,IACA,IAAI;AACE,WAAA,IAAI,OAAO,UAAU;AAC3B,eACE,IAAI,QAAQ,OAAO,OAAO,GAAG,CAAC,KAAK,KACnC,IAAI,QAAQ,OAAO,OAAO,GAAG,CAAC,KAAK,MAClC,KAAK,IAAI,QAAQ,OAAO,OAAO,GAAG,CAAC,MAAM,KAC1C,KAAK,IAAI,QAAQ,OAAO,OAAO,GAAG,CAAC;AAErC,gBACC,OAAO,KACJ,OAAO,aAAc,UAAU,KAAM,GAAG,IACxC,OAAO,KACN,OAAO,aAAc,UAAU,KAAM,KAAM,UAAU,IAAK,GAAG,IAC7D,OAAO,aAAc,UAAU,KAAM,KAAM,UAAU,IAAK,KAAK,SAAS,GAAG;AAAA,IAAA;AAE1E,WAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,SAAS,KAAa,kBAAkB,uBAA+B;AAClE,QAAA,IAAI,WAAW,GAAG;AACd,aAAA;AAAA,IAAA;AAER,UAAM,kBAAkB,aAAa;AACrC,QAAI,SAAS,WAAW,KAAK,mBAAmB,GAAG,CAAC;AACpD,QAAI,oBAAoB,GAAG;AAC1B,eAAS,2BAA2B,MAAM;AAAA,IAAA;AAE3C,WAAO,kBAAkB;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,KAAa,kBAAkB,uBAA+B;AACzE,QAAI,SAAS;AACT,QAAA,IAAI,WAAW,GAAG;AACd,aAAA;AAAA,IAAA;AAEJ,QAAA,QAAQ,IAAI,MAAM,eAAe;AACrC,QAAI,oBAAoB,GAAG;AAC1B,cAAQ,yBAAyB,KAAK;AAAA,IAAA;AAE9B,aAAA,WAAW,KAAK,KAAK;AAC9B,WAAO,mBAAmB,MAAM;AAAA,EAAA;AAElC;"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * 点击工具类
3
+ */
1
4
  export declare const clickUtil: {
2
5
  /**
3
6
  * 防抖
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","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":[],"mappings":"AAAA,IAAI,mBAAyD;AAC7D,IAAI,mBAAmB;AAEhB,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOxB,SAAS,IAAgB,QAAQ,KAAW;AAE3C,QAAI,kBAAkB;AACrB,mBAAa,gBAAgB;AAAA,IAAA;AAG9B,uBAAmB,WAAW,MAAM;AAEhC,SAAA;AAAA,OACD,KAAK;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAc,IAAyB,QAAQ,KAAoB;AACxE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEvC,UAAI,kBAAkB;AACrB,qBAAa,gBAAgB;AAAA,MAAA;AAG9B,yBAAmB,WAAW,YAAY;AACrC,YAAA;AAEH,gBAAM,GAAG;AACD,kBAAA;AAAA,iBACA,OAAO;AACf,iBAAO,KAAK;AAAA,QAAA;AAAA,SAEX,KAAK;AAAA,IAAA,CACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,IAAgB,QAAQ,KAAW;AAE3C,QAAI,kBAAkB;AACrB;AAAA,IAAA;AAGkB,uBAAA;AAEhB,OAAA;AAEH,eAAW,MAAM;AACG,yBAAA;AAAA,OACjB,KAAK;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAc,IAAyB,QAAQ,KAAoB;AACxE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEvC,UAAI,kBAAkB;AACrB;AAAA,MAAA;AAGkB,yBAAA;AAEhB,SAAA,EACD,KAAK,MAAM;AACH,gBAAA;AAAA,MAAA,CACR,EACA,MAAM,CAAC,UAAU;AACjB,eAAO,KAAK;AAAA,MAAA,CACZ,EACA,QAAQ,MAAM;AAEd,mBAAW,MAAM;AACG,6BAAA;AAAA,WACjB,KAAK;AAAA,MAAA,CACR;AAAA,IAAA,CACF;AAAA,EAAA;AAEH;"}
1
+ {"version":3,"file":"index.mjs","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":[],"mappings":"AAAA,IAAI,mBAAyD;AAC7D,IAAI,mBAAmB;AAKhB,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOxB,SAAS,IAAgB,QAAQ,KAAW;AAE3C,QAAI,kBAAkB;AACrB,mBAAa,gBAAgB;AAAA,IAAA;AAG9B,uBAAmB,WAAW,MAAM;AAEhC,SAAA;AAAA,OACD,KAAK;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAc,IAAyB,QAAQ,KAAoB;AACxE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEvC,UAAI,kBAAkB;AACrB,qBAAa,gBAAgB;AAAA,MAAA;AAG9B,yBAAmB,WAAW,YAAY;AACrC,YAAA;AAEH,gBAAM,GAAG;AACD,kBAAA;AAAA,iBACA,OAAO;AACf,iBAAO,KAAK;AAAA,QAAA;AAAA,SAEX,KAAK;AAAA,IAAA,CACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,IAAgB,QAAQ,KAAW;AAE3C,QAAI,kBAAkB;AACrB;AAAA,IAAA;AAGkB,uBAAA;AAEhB,OAAA;AAEH,eAAW,MAAM;AACG,yBAAA;AAAA,OACjB,KAAK;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAc,IAAyB,QAAQ,KAAoB;AACxE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEvC,UAAI,kBAAkB;AACrB;AAAA,MAAA;AAGkB,yBAAA;AAEhB,SAAA,EACD,KAAK,MAAM;AACH,gBAAA;AAAA,MAAA,CACR,EACA,MAAM,CAAC,UAAU;AACjB,eAAO,KAAK;AAAA,MAAA,CACZ,EACA,QAAQ,MAAM;AAEd,mBAAW,MAAM;AACG,6BAAA;AAAA,WACjB,KAAK;AAAA,MAAA,CACR;AAAA,IAAA,CACF;AAAA,EAAA;AAEH;"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * 颜色工具类
3
+ */
1
4
  export declare const colorUtil: {
2
5
  /**
3
6
  * hex颜色转rgb颜色
@@ -1,3 +1,4 @@
1
+ import { FastError } from "../error/index.mjs";
1
2
  const colorUtil = {
2
3
  /**
3
4
  * hex颜色转rgb颜色
@@ -7,7 +8,7 @@ const colorUtil = {
7
8
  hexToRgb(str) {
8
9
  let hex = "";
9
10
  const reg = /^#?[0-9A-Fa-f]{6}$/;
10
- if (!reg.test(str)) throw new Error("输入错误的hex");
11
+ if (!reg.test(str)) throw new FastError("输入错误的hex");
11
12
  str = str.replace("#", "");
12
13
  hex = str.match(/../g);
13
14
  for (let i = 0; i < 3; i++) hex[i] = parseInt(hex[i], 16);
@@ -22,7 +23,7 @@ const colorUtil = {
22
23
  */
23
24
  rgbToHex(r, g, b) {
24
25
  const reg = /^\d{1,3}$/;
25
- if (!reg.test(r) || !reg.test(g) || !reg.test(b)) throw new Error("输入错误的rgb颜色值");
26
+ if (!reg.test(r) || !reg.test(g) || !reg.test(b)) throw new FastError("输入错误的rgb颜色值");
26
27
  const hex = [r.toString(16), g.toString(16), b.toString(16)];
27
28
  for (let i = 0; i < 3; i++) if (hex[i].length === 1) hex[i] = `0${hex[i]}`;
28
29
  return `#${hex.join("")}`;
@@ -35,7 +36,7 @@ const colorUtil = {
35
36
  */
36
37
  getDarkColor(color, level) {
37
38
  const reg = /^#?[0-9A-Fa-f]{6}$/;
38
- if (!reg.test(color)) throw new Error("输入错误的hex颜色值");
39
+ if (!reg.test(color)) throw new FastError("输入错误的hex颜色值");
39
40
  const rgb = this.hexToRgb(color);
40
41
  for (let i = 0; i < 3; i++) rgb[i] = Math.round(20.5 * level + rgb[i] * (1 - level));
41
42
  return this.rgbToHex(rgb[0], rgb[1], rgb[2]);
@@ -48,7 +49,7 @@ const colorUtil = {
48
49
  */
49
50
  getLightColor(color, level) {
50
51
  const reg = /^#?[0-9A-Fa-f]{6}$/;
51
- if (!reg.test(color)) throw new Error("输入错误的hex颜色值");
52
+ if (!reg.test(color)) throw new FastError("输入错误的hex颜色值");
52
53
  const rgb = this.hexToRgb(color);
53
54
  for (let i = 0; i < 3; i++) rgb[i] = Math.round(255 * level + rgb[i] * (1 - level));
54
55
  return this.rgbToHex(rgb[0], rgb[1], rgb[2]);
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","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":[],"mappings":"AAAO,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMxB,SAAS,KAAe;AACvB,QAAI,MAAW;AACf,UAAM,MAAM;AACR,QAAA,CAAC,IAAI,KAAK,GAAG,EAAS,OAAA,IAAI,MAAM,UAAU;AACxC,UAAA,IAAI,QAAQ,KAAK,EAAE;AACnB,UAAA,IAAI,MAAM,KAAK;AACrB,aAAS,IAAI,GAAG,IAAI,GAAG,IAAK,KAAI,CAAC,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE;AACjD,WAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,GAAQ,GAAQ,GAAgB;AACxC,UAAM,MAAM;AACZ,QAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAS,OAAA,IAAI,MAAM,aAAa;AAC/E,UAAM,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC3D,aAAS,IAAI,GAAG,IAAI,GAAG,SAAS,IAAI,CAAC,EAAE,WAAW,EAAO,KAAA,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AACxE,WAAO,IAAI,IAAI,KAAK,EAAE,CAAC;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,OAAe,OAAuB;AAClD,UAAM,MAAM;AACR,QAAA,CAAC,IAAI,KAAK,KAAK,EAAS,OAAA,IAAI,MAAM,aAAa;AAC7C,UAAA,MAAM,KAAK,SAAS,KAAK;AAC/B,aAAS,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,IAAI,KAAK,MAAM,OAAO,QAAQ,IAAI,CAAC,KAAK,IAAI,MAAM;AAC5E,WAAA,KAAK,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,cAAc,OAAe,OAAuB;AACnD,UAAM,MAAM;AACR,QAAA,CAAC,IAAI,KAAK,KAAK,EAAS,OAAA,IAAI,MAAM,aAAa;AAC7C,UAAA,MAAM,KAAK,SAAS,KAAK;AAC/B,aAAS,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,IAAI,KAAK,MAAM,MAAM,QAAQ,IAAI,CAAC,KAAK,IAAI,MAAM;AAC3E,WAAA,KAAK,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,EAAA;AAE7C;"}
1
+ {"version":3,"file":"index.mjs","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-Fa-f]{6}$/;\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-Fa-f]{6}$/;\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-Fa-f]{6}$/;\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":[],"mappings":";AAKO,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMxB,SAAS,KAAe;AACvB,QAAI,MAAW;AACf,UAAM,MAAM;AACR,QAAA,CAAC,IAAI,KAAK,GAAG,EAAS,OAAA,IAAI,UAAU,UAAU;AAC5C,UAAA,IAAI,QAAQ,KAAK,EAAE;AACnB,UAAA,IAAI,MAAM,KAAK;AACrB,aAAS,IAAI,GAAG,IAAI,GAAG,IAAK,KAAI,CAAC,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE;AACjD,WAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,GAAQ,GAAQ,GAAgB;AACxC,UAAM,MAAM;AACZ,QAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAS,OAAA,IAAI,UAAU,aAAa;AACnF,UAAM,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC3D,aAAS,IAAI,GAAG,IAAI,GAAG,SAAS,IAAI,CAAC,EAAE,WAAW,EAAO,KAAA,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AACxE,WAAO,IAAI,IAAI,KAAK,EAAE,CAAC;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,OAAe,OAAuB;AAClD,UAAM,MAAM;AACR,QAAA,CAAC,IAAI,KAAK,KAAK,EAAS,OAAA,IAAI,UAAU,aAAa;AACjD,UAAA,MAAM,KAAK,SAAS,KAAK;AAC/B,aAAS,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,IAAI,KAAK,MAAM,OAAO,QAAQ,IAAI,CAAC,KAAK,IAAI,MAAM;AAC5E,WAAA,KAAK,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,cAAc,OAAe,OAAuB;AACnD,UAAM,MAAM;AACR,QAAA,CAAC,IAAI,KAAK,KAAK,EAAS,OAAA,IAAI,UAAU,aAAa;AACjD,UAAA,MAAM,KAAK,SAAS,KAAK;AAC/B,aAAS,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,IAAI,KAAK,MAAM,MAAM,QAAQ,IAAI,CAAC,KAAK,IAAI,MAAM;AAC3E,WAAA,KAAK,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,EAAA;AAE7C;"}
@@ -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
  };
package/es/date/index.mjs CHANGED
@@ -99,6 +99,10 @@ const dateUtil = {
99
99
  return "";
100
100
  }
101
101
  },
102
+ /**
103
+ * 获取默认时间
104
+ * @returns [00:00:00, 23:59:59]
105
+ */
102
106
  getDefaultTime() {
103
107
  const end = /* @__PURE__ */ new Date();
104
108
  const start = /* @__PURE__ */ new Date();
@@ -107,11 +111,18 @@ const dateUtil = {
107
111
  end.setHours(23, 59, 59);
108
112
  return [start, end];
109
113
  },
114
+ /**
115
+ * 获取简单的日期时间
116
+ * @returns xxxx-xx-xx 00:00:00
117
+ */
110
118
  getSimpleTime() {
111
119
  const start = /* @__PURE__ */ new Date();
112
120
  start.setHours(0, 0, 0);
113
121
  return start;
114
122
  },
123
+ /**
124
+ * 获取简单的日期时间范围
125
+ */
115
126
  getSimpleShortcuts() {
116
127
  return [
117
128
  {
@@ -160,6 +171,9 @@ const dateUtil = {
160
171
  }
161
172
  ];
162
173
  },
174
+ /**
175
+ * 获取日期范围
176
+ */
163
177
  getShortcuts() {
164
178
  return [
165
179
  {
@@ -241,6 +255,9 @@ const dateUtil = {
241
255
  }
242
256
  ];
243
257
  },
258
+ /**
259
+ * 判断传入的时间是否大于当前时间
260
+ */
244
261
  getDisabledDate(time) {
245
262
  return time.getTime() > Date.now();
246
263
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/date/index.ts"],"sourcesContent":["/**\n * Date工具类\n */\nexport const dateUtil = {\n\t/**\n\t * 根据当前时间生成问候语\n\t */\n\tgetGreet(): string {\n\t\tconst now = new Date();\n\t\tconst hour = now.getHours();\n\t\tlet greet = \"\";\n\n\t\tif (hour < 5) {\n\t\t\tgreet = \"夜深了,注意身体哦!\";\n\t\t} else if (hour < 9) {\n\t\t\tgreet = \"早上好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 12) {\n\t\t\tgreet = \"上午好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 14) {\n\t\t\tgreet = \"中午好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 18) {\n\t\t\tgreet = \"下午好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 24) {\n\t\t\tgreet = \"晚上好!\" + \"欢迎回来!\";\n\t\t} else {\n\t\t\tgreet = \"您好!\" + \"欢迎回来!\";\n\t\t}\n\t\treturn greet;\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\tgetDefaultTime(): Date[] {\n\t\tconst end = new Date();\n\t\tconst start = new Date();\n\t\tstart.setMonth(start.getMonth() - 1);\n\t\tstart.setHours(0, 0, 0);\n\t\tend.setHours(23, 59, 59);\n\t\treturn [start, end];\n\t},\n\tgetSimpleTime(): Date {\n\t\tconst start = new Date();\n\t\tstart.setHours(0, 0, 0);\n\t\treturn start;\n\t},\n\tgetSimpleShortcuts(): {\n\t\ttext: string;\n\t\tvalue: () => Date;\n\t}[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttext: \"今天\",\n\t\t\t\tvalue: (): Date => {\n\t\t\t\t\tconst date = new Date();\n\t\t\t\t\tdate.setHours(0, 0, 0);\n\t\t\t\t\treturn date;\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"昨天\",\n\t\t\t\tvalue: (): Date => {\n\t\t\t\t\tconst date = new Date();\n\t\t\t\t\tdate.setDate(date.getDate() - 1);\n\t\t\t\t\tdate.setHours(0, 0, 0);\n\t\t\t\t\treturn date;\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"一周前\",\n\t\t\t\tvalue: (): Date => {\n\t\t\t\t\tconst date = new Date();\n\t\t\t\t\tdate.setDate(date.getDate() - 7);\n\t\t\t\t\tdate.setHours(0, 0, 0);\n\t\t\t\t\treturn date;\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"一月前\",\n\t\t\t\tvalue: (): Date => {\n\t\t\t\t\tconst date = new Date();\n\t\t\t\t\tdate.setMonth(date.getMonth() - 1);\n\t\t\t\t\tdate.setHours(0, 0, 0);\n\t\t\t\t\treturn date;\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"一年前\",\n\t\t\t\tvalue: (): Date => {\n\t\t\t\t\tconst date = new Date();\n\t\t\t\t\tdate.setFullYear(date.getFullYear() - 1);\n\t\t\t\t\tdate.setHours(0, 0, 0);\n\t\t\t\t\treturn date;\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t},\n\tgetShortcuts(): {\n\t\ttext: string;\n\t\tvalue: () => Date[];\n\t}[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttext: \"近1天\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setDate(start.getDate() - 1);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"近3天\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setDate(start.getDate() - 3);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"近1周\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setDate(start.getDate() - 7);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"近1月\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setMonth(start.getMonth() - 1);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"近3月\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setMonth(start.getMonth() - 3);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"近6月\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setMonth(start.getMonth() - 6);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"近1年\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setFullYear(start.getFullYear() - 1);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t},\n\tgetDisabledDate(time: Date): boolean {\n\t\treturn time.getTime() > Date.now();\n\t},\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/date/index.ts"],"sourcesContent":["/**\n * Date工具类\n */\nexport const dateUtil = {\n\t/**\n\t * 根据当前时间生成问候语\n\t */\n\tgetGreet(): string {\n\t\tconst now = new Date();\n\t\tconst hour = now.getHours();\n\t\tlet greet = \"\";\n\n\t\tif (hour < 5) {\n\t\t\tgreet = \"夜深了,注意身体哦!\";\n\t\t} else if (hour < 9) {\n\t\t\tgreet = \"早上好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 12) {\n\t\t\tgreet = \"上午好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 14) {\n\t\t\tgreet = \"中午好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 18) {\n\t\t\tgreet = \"下午好!\" + \"欢迎回来!\";\n\t\t} else if (hour < 24) {\n\t\t\tgreet = \"晚上好!\" + \"欢迎回来!\";\n\t\t} else {\n\t\t\tgreet = \"您好!\" + \"欢迎回来!\";\n\t\t}\n\t\treturn greet;\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\t/**\n\t * 获取默认时间\n\t * @returns [00:00:00, 23:59:59]\n\t */\n\tgetDefaultTime(): Date[] {\n\t\tconst end = new Date();\n\t\tconst start = new Date();\n\t\tstart.setMonth(start.getMonth() - 1);\n\t\tstart.setHours(0, 0, 0);\n\t\tend.setHours(23, 59, 59);\n\t\treturn [start, end];\n\t},\n\t/**\n\t * 获取简单的日期时间\n\t * @returns xxxx-xx-xx 00:00:00\n\t */\n\tgetSimpleTime(): Date {\n\t\tconst start = new Date();\n\t\tstart.setHours(0, 0, 0);\n\t\treturn start;\n\t},\n\t/**\n\t * 获取简单的日期时间范围\n\t */\n\tgetSimpleShortcuts(): {\n\t\ttext: string;\n\t\tvalue: () => Date;\n\t}[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttext: \"今天\",\n\t\t\t\tvalue: (): Date => {\n\t\t\t\t\tconst date = new Date();\n\t\t\t\t\tdate.setHours(0, 0, 0);\n\t\t\t\t\treturn date;\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"昨天\",\n\t\t\t\tvalue: (): Date => {\n\t\t\t\t\tconst date = new Date();\n\t\t\t\t\tdate.setDate(date.getDate() - 1);\n\t\t\t\t\tdate.setHours(0, 0, 0);\n\t\t\t\t\treturn date;\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"一周前\",\n\t\t\t\tvalue: (): Date => {\n\t\t\t\t\tconst date = new Date();\n\t\t\t\t\tdate.setDate(date.getDate() - 7);\n\t\t\t\t\tdate.setHours(0, 0, 0);\n\t\t\t\t\treturn date;\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"一月前\",\n\t\t\t\tvalue: (): Date => {\n\t\t\t\t\tconst date = new Date();\n\t\t\t\t\tdate.setMonth(date.getMonth() - 1);\n\t\t\t\t\tdate.setHours(0, 0, 0);\n\t\t\t\t\treturn date;\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"一年前\",\n\t\t\t\tvalue: (): Date => {\n\t\t\t\t\tconst date = new Date();\n\t\t\t\t\tdate.setFullYear(date.getFullYear() - 1);\n\t\t\t\t\tdate.setHours(0, 0, 0);\n\t\t\t\t\treturn date;\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t},\n\t/**\n\t * 获取日期范围\n\t */\n\tgetShortcuts(): {\n\t\ttext: string;\n\t\tvalue: () => Date[];\n\t}[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttext: \"近1天\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setDate(start.getDate() - 1);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"近3天\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setDate(start.getDate() - 3);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"近1周\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setDate(start.getDate() - 7);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"近1月\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setMonth(start.getMonth() - 1);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"近3月\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setMonth(start.getMonth() - 3);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"近6月\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setMonth(start.getMonth() - 6);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttext: \"近1年\",\n\t\t\t\tvalue: (): Date[] => {\n\t\t\t\t\tconst end = new Date();\n\t\t\t\t\tconst start = new Date();\n\t\t\t\t\tstart.setFullYear(start.getFullYear() - 1);\n\t\t\t\t\tstart.setHours(0, 0, 0);\n\t\t\t\t\tend.setHours(23, 59, 59);\n\t\t\t\t\treturn [start, end];\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t},\n\t/**\n\t * 判断传入的时间是否大于当前时间\n\t */\n\tgetDisabledDate(time: Date): boolean {\n\t\treturn time.getTime() > Date.now();\n\t},\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 环境工具类
3
+ */
4
+ export declare const envUtil: {
5
+ /**
6
+ * 是否为 Uni 环境
7
+ * @returns
8
+ */
9
+ isUni(): boolean;
10
+ /**
11
+ * 是否为 Web 环境(浏览器环境)
12
+ * @returns
13
+ */
14
+ isWeb(): boolean;
15
+ /**
16
+ * 是否为手机设备
17
+ * @returns
18
+ */
19
+ isMobile(): boolean;
20
+ /**
21
+ * 是否为平板设备
22
+ * @returns
23
+ */
24
+ isIpad(): boolean;
25
+ };
@@ -0,0 +1,38 @@
1
+ const envUtil = {
2
+ /**
3
+ * 是否为 Uni 环境
4
+ * @returns
5
+ */
6
+ isUni() {
7
+ return typeof uni !== "undefined";
8
+ },
9
+ /**
10
+ * 是否为 Web 环境(浏览器环境)
11
+ * @returns
12
+ */
13
+ isWeb() {
14
+ return typeof window !== "undefined" && typeof window.document !== "undefined";
15
+ },
16
+ /**
17
+ * 是否为手机设备
18
+ * @returns
19
+ */
20
+ isMobile() {
21
+ if (!this.isWeb()) return false;
22
+ const ua = navigator.userAgent || "";
23
+ return /Mobile|iPhone|Android.*Mobile|Windows Phone/i.test(ua);
24
+ },
25
+ /**
26
+ * 是否为平板设备
27
+ * @returns
28
+ */
29
+ isIpad() {
30
+ if (!this.isWeb()) return false;
31
+ const ua = navigator.userAgent || "";
32
+ return /iPad|Android(?!.*Mobile)|Tablet/i.test(ua);
33
+ }
34
+ };
35
+ export {
36
+ envUtil
37
+ };
38
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/env/index.ts"],"sourcesContent":["/**\n * 环境工具类\n */\nexport const envUtil = {\n\t/**\n\t * 是否为 Uni 环境\n\t * @returns\n\t */\n\tisUni(): boolean {\n\t\treturn typeof uni !== \"undefined\";\n\t},\n\t/**\n\t * 是否为 Web 环境(浏览器环境)\n\t * @returns\n\t */\n\tisWeb(): boolean {\n\t\treturn typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\t},\n\t/**\n\t * 是否为手机设备\n\t * @returns\n\t */\n\tisMobile(): boolean {\n\t\tif (!this.isWeb()) return false;\n\t\tconst ua = navigator.userAgent || \"\";\n\t\t// Windows Phone 也归类为手机\n\t\treturn /Mobile|iPhone|Android.*Mobile|Windows Phone/i.test(ua);\n\t},\n\t/**\n\t * 是否为平板设备\n\t * @returns\n\t */\n\tisIpad(): boolean {\n\t\tif (!this.isWeb()) return false;\n\t\tconst ua = navigator.userAgent || \"\";\n\t\t// iPad 或 Android 平板通常不带 Mobile 字符串\n\t\treturn /iPad|Android(?!.*Mobile)|Tablet/i.test(ua);\n\t},\n};\n"],"names":[],"mappings":"AAGO,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKtB,QAAiB;AAChB,WAAO,OAAO,QAAQ;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,QAAiB;AAChB,WAAO,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAoB;AACnB,QAAI,CAAC,KAAK,MAAM,EAAU,QAAA;AACpB,UAAA,KAAK,UAAU,aAAa;AAE3B,WAAA,+CAA+C,KAAK,EAAE;AAAA,EAC9D;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAkB;AACjB,QAAI,CAAC,KAAK,MAAM,EAAU,QAAA;AACpB,UAAA,KAAK,UAAU,aAAa;AAE3B,WAAA,mCAAmC,KAAK,EAAE;AAAA,EAAA;AAEnD;"}
@@ -0,0 +1,8 @@
1
+ declare const state: {
2
+ cacheKey: string;
3
+ deviceId: string;
4
+ };
5
+ export declare const useIdentity: () => typeof state & {
6
+ makeIdentity: () => string;
7
+ };
8
+ export {};
@@ -0,0 +1,33 @@
1
+ import { reactive } from "vue";
2
+ import { Local } from "../storage/index.mjs";
3
+ import { stringUtil } from "../string/index.mjs";
4
+ const state = reactive({
5
+ cacheKey: "__DEVICE_ID",
6
+ deviceId: ""
7
+ });
8
+ const uuidRegExp = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
9
+ const makeIdentity = () => {
10
+ if (state.deviceId && uuidRegExp.test(state.deviceId)) {
11
+ Local.set(state.cacheKey, state.deviceId);
12
+ return state.deviceId;
13
+ }
14
+ let deviceID = Local.get(state.cacheKey);
15
+ if (deviceID && uuidRegExp.test(deviceID)) {
16
+ state.deviceId = deviceID;
17
+ return deviceID;
18
+ }
19
+ deviceID = stringUtil.generateUUID();
20
+ Local.set(state.cacheKey, deviceID);
21
+ state.deviceId = deviceID;
22
+ return deviceID;
23
+ };
24
+ const useIdentity = () => {
25
+ return {
26
+ ...state,
27
+ makeIdentity
28
+ };
29
+ };
30
+ export {
31
+ useIdentity
32
+ };
33
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/identity/index.ts"],"sourcesContent":["import { reactive } from \"vue\";\nimport { Local } from \"../storage\";\nimport { stringUtil } from \"../string\";\n\nconst state = reactive({\n\tcacheKey: \"__DEVICE_ID\",\n\tdeviceId: \"\",\n});\n\nconst uuidRegExp = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n\n/**\n * 生成设备Id\n */\nconst makeIdentity = (): string => {\n\t// 判断是否存在\n\tif (state.deviceId && uuidRegExp.test(state.deviceId)) {\n\t\tLocal.set(state.cacheKey, state.deviceId);\n\t\treturn state.deviceId;\n\t}\n\t// 生成浏览器唯一 UUID\n\tlet deviceID = Local.get(state.cacheKey);\n\tif (deviceID && uuidRegExp.test(deviceID)) {\n\t\tstate.deviceId = deviceID;\n\t\treturn deviceID;\n\t}\n\tdeviceID = stringUtil.generateUUID();\n\tLocal.set(state.cacheKey, deviceID);\n\tstate.deviceId = deviceID;\n\treturn deviceID;\n};\n\nexport const useIdentity = (): typeof state & { makeIdentity: () => string } => {\n\treturn {\n\t\t...state,\n\t\tmakeIdentity,\n\t};\n};\n"],"names":[],"mappings":";;;AAIA,MAAM,QAAQ,SAAS;AAAA,EACtB,UAAU;AAAA,EACV,UAAU;AACX,CAAC;AAED,MAAM,aAAa;AAKnB,MAAM,eAAe,MAAc;AAElC,MAAI,MAAM,YAAY,WAAW,KAAK,MAAM,QAAQ,GAAG;AACtD,UAAM,IAAI,MAAM,UAAU,MAAM,QAAQ;AACxC,WAAO,MAAM;AAAA,EAAA;AAGd,MAAI,WAAW,MAAM,IAAI,MAAM,QAAQ;AACvC,MAAI,YAAY,WAAW,KAAK,QAAQ,GAAG;AAC1C,UAAM,WAAW;AACV,WAAA;AAAA,EAAA;AAER,aAAW,WAAW,aAAa;AAC7B,QAAA,IAAI,MAAM,UAAU,QAAQ;AAClC,QAAM,WAAW;AACV,SAAA;AACR;AAEO,MAAM,cAAc,MAAqD;AACxE,SAAA;AAAA,IACN,GAAG;AAAA,IACH;AAAA,EACD;AACD;"}
package/es/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './array';
1
2
  export * from './base64';
2
3
  export * from './click';
3
4
  export * from './color';
@@ -5,7 +6,9 @@ export * from './console';
5
6
  export * from './crypto';
6
7
  export * from './date';
7
8
  export * from './dom';
9
+ export * from './env';
8
10
  export * from './error';
11
+ export * from './identity';
9
12
  export * from './object';
10
13
  export * from './storage';
11
14
  export * from './string';
package/es/index.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ import { arrayUtil } from "./array/index.mjs";
1
2
  import { base64Util } from "./base64/index.mjs";
2
3
  import { clickUtil } from "./click/index.mjs";
3
4
  import { colorUtil } from "./color/index.mjs";
@@ -5,7 +6,9 @@ import { consoleDebug, consoleError, consoleLog, consoleWarn, throwError } from
5
6
  import { cryptoUtil } from "./crypto/index.mjs";
6
7
  import { dateUtil } from "./date/index.mjs";
7
8
  import "./dom/index.mjs";
9
+ import { envUtil } from "./env/index.mjs";
8
10
  import { FastError } from "./error/index.mjs";
11
+ import { useIdentity } from "./identity/index.mjs";
9
12
  import { objectUtil } from "./object/index.mjs";
10
13
  import { CACHE_EXPIRE_SUFFIX, CACHE_PREFIX, Local, Session, useStorage } from "./storage/index.mjs";
11
14
  import { stringUtil } from "./string/index.mjs";
@@ -25,6 +28,7 @@ export {
25
28
  Local,
26
29
  Session,
27
30
  addUnit,
31
+ arrayUtil,
28
32
  base64Util,
29
33
  clickUtil,
30
34
  colorUtil,
@@ -35,12 +39,14 @@ export {
35
39
  cryptoUtil,
36
40
  dateUtil,
37
41
  definePropType,
42
+ envUtil,
38
43
  execFunction,
39
44
  makeSlots,
40
45
  objectUtil,
41
46
  stringUtil,
42
47
  throwError,
43
48
  useExpose,
49
+ useIdentity,
44
50
  useProps,
45
51
  useRender,
46
52
  useStorage,
package/es/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,16 +6,4 @@ export declare const objectUtil: {
6
6
  * 对象URL参数化
7
7
  */
8
8
  objectToQueryString(obj: any): string;
9
- /**
10
- * 是否存在重复值
11
- */
12
- hasDuplicateProperty<T>(arr: T[], prop: keyof T): boolean;
13
- /**
14
- * 是否存在非重复值
15
- */
16
- hasDifferentProperty<T>(arr: T[], prop: keyof T): boolean;
17
- /**
18
- * 时间处理翻译
19
- */
20
- dateTimeFix(date: string | Date | null | undefined): string;
21
9
  };