@cloudcome/utils-core 1.19.1 → 1.20.0

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 (161) hide show
  1. package/README.md +1 -1
  2. package/dist/array.cjs +181 -125
  3. package/dist/array.cjs.map +1 -1
  4. package/dist/array.mjs +181 -133
  5. package/dist/array.mjs.map +1 -1
  6. package/dist/async.cjs +181 -171
  7. package/dist/async.cjs.map +1 -1
  8. package/dist/async.mjs +181 -174
  9. package/dist/async.mjs.map +1 -1
  10. package/dist/base64.cjs +16 -12
  11. package/dist/base64.cjs.map +1 -1
  12. package/dist/base64.mjs +17 -14
  13. package/dist/base64.mjs.map +1 -1
  14. package/dist/cache.cjs +79 -67
  15. package/dist/cache.cjs.map +1 -1
  16. package/dist/cache.d.ts +3 -3
  17. package/dist/cache.mjs +80 -71
  18. package/dist/cache.mjs.map +1 -1
  19. package/dist/color.cjs +478 -167
  20. package/dist/color.cjs.map +1 -1
  21. package/dist/color.d.ts +3 -3
  22. package/dist/color.mjs +480 -197
  23. package/dist/color.mjs.map +1 -1
  24. package/dist/crypto.cjs +474 -687
  25. package/dist/crypto.cjs.map +1 -1
  26. package/dist/crypto.mjs +476 -693
  27. package/dist/crypto.mjs.map +1 -1
  28. package/dist/date.cjs +972 -161
  29. package/dist/date.cjs.map +1 -1
  30. package/dist/date.d.ts +2 -2
  31. package/dist/date.mjs +962 -191
  32. package/dist/date.mjs.map +1 -1
  33. package/dist/dict.cjs +90 -52
  34. package/dist/dict.cjs.map +1 -1
  35. package/dist/dict.d.ts +1 -1
  36. package/dist/dict.mjs +91 -54
  37. package/dist/dict.mjs.map +1 -1
  38. package/dist/easing.cjs +105 -103
  39. package/dist/easing.cjs.map +1 -1
  40. package/dist/easing.mjs +106 -133
  41. package/dist/easing.mjs.map +1 -1
  42. package/dist/emitter.cjs +101 -96
  43. package/dist/emitter.cjs.map +1 -1
  44. package/dist/emitter.mjs +101 -97
  45. package/dist/emitter.mjs.map +1 -1
  46. package/dist/env.cjs +43 -9
  47. package/dist/env.cjs.map +1 -1
  48. package/dist/env.d.ts +1 -1
  49. package/dist/env.mjs +43 -15
  50. package/dist/env.mjs.map +1 -1
  51. package/dist/error.cjs +26 -5
  52. package/dist/error.cjs.map +1 -1
  53. package/dist/error.mjs +26 -7
  54. package/dist/error.mjs.map +1 -1
  55. package/dist/exception.cjs +38 -20
  56. package/dist/exception.cjs.map +1 -1
  57. package/dist/exception.d.ts +5 -5
  58. package/dist/exception.mjs +38 -21
  59. package/dist/exception.mjs.map +1 -1
  60. package/dist/function.cjs +128 -68
  61. package/dist/function.cjs.map +1 -1
  62. package/dist/function.mjs +128 -72
  63. package/dist/function.mjs.map +1 -1
  64. package/dist/index.cjs +8 -3
  65. package/dist/index.cjs.map +1 -1
  66. package/dist/index.mjs +9 -5
  67. package/dist/index.mjs.map +1 -1
  68. package/dist/number.cjs +10 -14
  69. package/dist/number.mjs +2 -15
  70. package/dist/object/get-set.d.ts +27 -3
  71. package/dist/object/merge.d.ts +2 -2
  72. package/dist/object.cjs +369 -106
  73. package/dist/object.cjs.map +1 -1
  74. package/dist/object.mjs +366 -115
  75. package/dist/object.mjs.map +1 -1
  76. package/dist/path.cjs +144 -55
  77. package/dist/path.cjs.map +1 -1
  78. package/dist/path.mjs +144 -62
  79. package/dist/path.mjs.map +1 -1
  80. package/dist/promise.cjs +84 -43
  81. package/dist/promise.cjs.map +1 -1
  82. package/dist/promise.mjs +85 -50
  83. package/dist/promise.mjs.map +1 -1
  84. package/dist/qs.cjs +63 -39
  85. package/dist/qs.cjs.map +1 -1
  86. package/dist/qs.mjs +64 -42
  87. package/dist/qs.mjs.map +1 -1
  88. package/dist/regexp.cjs +118 -35
  89. package/dist/regexp.cjs.map +1 -1
  90. package/dist/regexp.mjs +119 -46
  91. package/dist/regexp.mjs.map +1 -1
  92. package/dist/string.cjs +12 -15
  93. package/dist/string.mjs +2 -16
  94. package/dist/string2.cjs +378 -142
  95. package/dist/string2.cjs.map +1 -1
  96. package/dist/string2.mjs +259 -143
  97. package/dist/string2.mjs.map +1 -1
  98. package/dist/time.cjs +136 -59
  99. package/dist/time.cjs.map +1 -1
  100. package/dist/time.mjs +136 -65
  101. package/dist/time.mjs.map +1 -1
  102. package/dist/timer.cjs +122 -112
  103. package/dist/timer.cjs.map +1 -1
  104. package/dist/timer.mjs +123 -115
  105. package/dist/timer.mjs.map +1 -1
  106. package/dist/tree.cjs +207 -112
  107. package/dist/tree.cjs.map +1 -1
  108. package/dist/tree.mjs +207 -116
  109. package/dist/tree.mjs.map +1 -1
  110. package/dist/try/curry.d.ts +1 -1
  111. package/dist/try.cjs +36 -37
  112. package/dist/try.cjs.map +1 -1
  113. package/dist/try.mjs +35 -37
  114. package/dist/try.mjs.map +1 -1
  115. package/dist/type.cjs +126 -24
  116. package/dist/type.cjs.map +1 -1
  117. package/dist/type.d.ts +2 -2
  118. package/dist/type.mjs +128 -45
  119. package/dist/type.mjs.map +1 -1
  120. package/dist/types.cjs +0 -2
  121. package/dist/types.d.ts +2 -2
  122. package/dist/types.mjs +0 -2
  123. package/dist/unique.cjs +41 -38
  124. package/dist/unique.cjs.map +1 -1
  125. package/dist/unique.mjs +42 -41
  126. package/dist/unique.mjs.map +1 -1
  127. package/dist/url.cjs +39 -30
  128. package/dist/url.cjs.map +1 -1
  129. package/dist/url.mjs +40 -33
  130. package/dist/url.mjs.map +1 -1
  131. package/dist/version.cjs +51 -33
  132. package/dist/version.cjs.map +1 -1
  133. package/dist/version.mjs +51 -35
  134. package/dist/version.mjs.map +1 -1
  135. package/package.json +104 -105
  136. package/dist/const.cjs +0 -14
  137. package/dist/const.cjs.map +0 -1
  138. package/dist/const.mjs +0 -15
  139. package/dist/const.mjs.map +0 -1
  140. package/dist/core.cjs +0 -362
  141. package/dist/core.cjs.map +0 -1
  142. package/dist/core.mjs +0 -363
  143. package/dist/core.mjs.map +0 -1
  144. package/dist/crypto/md5.d.mts +0 -1
  145. package/dist/crypto/sha1.d.mts +0 -1
  146. package/dist/crypto/sha256.d.mts +0 -1
  147. package/dist/crypto/sha512.d.mts +0 -1
  148. package/dist/each.cjs +0 -18
  149. package/dist/each.cjs.map +0 -1
  150. package/dist/each.mjs +0 -19
  151. package/dist/each.mjs.map +0 -1
  152. package/dist/merge.cjs +0 -87
  153. package/dist/merge.cjs.map +0 -1
  154. package/dist/merge.mjs +0 -88
  155. package/dist/merge.mjs.map +0 -1
  156. package/dist/number.cjs.map +0 -1
  157. package/dist/number.mjs.map +0 -1
  158. package/dist/string.cjs.map +0 -1
  159. package/dist/string.mjs.map +0 -1
  160. package/dist/types.cjs.map +0 -1
  161. package/dist/types.mjs.map +0 -1
package/dist/unique.cjs CHANGED
@@ -1,46 +1,49 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const number = require("./string2.cjs");
4
- const type = require("./type.cjs");
5
- let lastTimestamp = 0;
6
- let lastSafePadding = 0;
2
+ const require_type = require("./type.cjs");
3
+ const require_string = require("./string2.cjs");
4
+ //#region src/unique.ts
5
+ var lastTimestamp = 0;
6
+ var lastSafePadding = 0;
7
+ /**
8
+ * 生成一个唯一的 BigInt 值。
9
+ *
10
+ * @param randomLength - 可选参数,指定随机部分的长度,默认为 0。
11
+ * 如果大于 0,则会在结果中附加指定长度的随机数。
12
+ * @returns 返回一个唯一的 BigInt 值,包含时间戳、随机部分(如果有)以及递增的填充值。
13
+ */
7
14
  function uniqueBigInt(randomLength = 0) {
8
- const now = Date.now();
9
- if (now !== lastTimestamp) {
10
- lastTimestamp = now;
11
- lastSafePadding = 0;
12
- }
13
- let randomPart = "";
14
- if (randomLength > 0) {
15
- const randomMin = 10 ** (randomLength - 1);
16
- const randomMax = 10 ** randomLength - 1;
17
- randomPart = String(number.randomNumber(randomMin, randomMax));
18
- }
19
- return BigInt(randomPart + lastSafePadding++ + now);
15
+ const now = Date.now();
16
+ if (now !== lastTimestamp) {
17
+ lastTimestamp = now;
18
+ lastSafePadding = 0;
19
+ }
20
+ let randomPart = "";
21
+ if (randomLength > 0) {
22
+ const randomMin = 10 ** (randomLength - 1);
23
+ const randomMax = 10 ** randomLength - 1;
24
+ randomPart = String(require_string.randomNumber(randomMin, randomMax));
25
+ }
26
+ return BigInt(randomPart + lastSafePadding++ + now);
20
27
  }
21
- const _randomChar = (dict) => {
22
- const poolIndex = number.randomNumber(0, dict.length - 1);
23
- return dict[poolIndex];
28
+ var _randomChar = (dict) => {
29
+ return dict[require_string.randomNumber(0, dict.length - 1)];
24
30
  };
25
31
  function uniqueString(minLength, dict) {
26
- let finalLength = 0;
27
- let finalDict = number.STRING_DICT;
28
- if (type.isString(dict)) {
29
- finalLength = minLength;
30
- finalDict = dict;
31
- } else if (type.isNumber(minLength)) {
32
- finalLength = minLength;
33
- } else if (type.isString(minLength)) {
34
- finalDict = minLength;
35
- }
36
- let uniqueString2 = number.numberConvert(uniqueBigInt(), finalDict);
37
- let insertLength = finalLength - uniqueString2.length;
38
- if (insertLength <= 0) return uniqueString2;
39
- while (insertLength--) {
40
- uniqueString2 += _randomChar(finalDict);
41
- }
42
- return uniqueString2;
32
+ let finalLength = 0;
33
+ let finalDict = require_string.STRING_DICT;
34
+ if (require_type.isString(dict)) {
35
+ finalLength = minLength;
36
+ finalDict = dict;
37
+ } else if (require_type.isNumber(minLength)) finalLength = minLength;
38
+ else if (require_type.isString(minLength)) finalDict = minLength;
39
+ let uniqueString = require_string.numberConvert(uniqueBigInt(), finalDict);
40
+ let insertLength = finalLength - uniqueString.length;
41
+ if (insertLength <= 0) return uniqueString;
42
+ while (insertLength--) uniqueString += _randomChar(finalDict);
43
+ return uniqueString;
43
44
  }
45
+ //#endregion
44
46
  exports.uniqueBigInt = uniqueBigInt;
45
47
  exports.uniqueString = uniqueString;
46
- //# sourceMappingURL=unique.cjs.map
48
+
49
+ //# sourceMappingURL=unique.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"unique.cjs","sources":["../src/unique.ts"],"sourcesContent":["import { numberConvert, randomNumber } from './number';\nimport { STRING_DICT } from './string';\nimport { isNumber, isString } from './type';\n\nlet lastTimestamp = 0;\nlet lastSafePadding = 0;\n\n/**\n * 生成一个唯一的 BigInt 值。\n *\n * @param randomLength - 可选参数,指定随机部分的长度,默认为 0。\n * 如果大于 0,则会在结果中附加指定长度的随机数。\n * @returns 返回一个唯一的 BigInt 值,包含时间戳、随机部分(如果有)以及递增的填充值。\n */\nexport function uniqueBigInt(randomLength = 0): bigint {\n const now = Date.now();\n\n if (now !== lastTimestamp) {\n lastTimestamp = now;\n lastSafePadding = 0;\n }\n\n let randomPart = '';\n\n if (randomLength > 0) {\n const randomMin = 10 ** (randomLength - 1);\n const randomMax = 10 ** randomLength - 1;\n randomPart = String(randomNumber(randomMin, randomMax));\n }\n\n return BigInt(randomPart + lastSafePadding++ + now);\n}\n\nconst _randomChar = (dict: string): string => {\n const poolIndex = randomNumber(0, dict.length - 1);\n\n return dict[poolIndex];\n};\n\n/**\n * 生成一个唯一的字符串。\n *\n * @param minLength - 可选参数,指定生成字符串的最小长度。\n * 如果未提供或为字符串类型,则使用默认长度。\n * @param dict - 可选参数,指定生成字符串时使用的字符集。\n * 如果未提供,则使用默认字符集 `STRING_DICT`。\n * @returns 返回一个唯一的字符串,包含时间戳、随机部分(如果有)以及递增的填充值。\n * 如果指定了 `length`,则返回值的长度将被调整到指定长度。\n */\nexport function uniqueString(minLength: number, dict: string): string;\nexport function uniqueString(minLength: number): string;\nexport function uniqueString(dict: string): string;\nexport function uniqueString(): string;\nexport function uniqueString(minLength?: number | string, dict?: string) {\n let finalLength = 0;\n let finalDict = STRING_DICT;\n\n if (isString(dict)) {\n finalLength = minLength as number;\n finalDict = dict;\n } else if (isNumber(minLength)) {\n finalLength = minLength;\n } else if (isString(minLength)) {\n finalDict = minLength;\n }\n\n let uniqueString = numberConvert(uniqueBigInt(), finalDict);\n let insertLength = finalLength - uniqueString.length;\n\n if (insertLength <= 0) return uniqueString;\n\n while (insertLength--) {\n uniqueString += _randomChar(finalDict);\n }\n\n return uniqueString;\n}\n"],"names":["randomNumber","STRING_DICT","isString","isNumber","uniqueString","numberConvert"],"mappings":";;;;AAIA,IAAI,gBAAgB;AACpB,IAAI,kBAAkB;AASN,SAAA,aAAa,eAAe,GAAW;AAC/C,QAAA,MAAM,KAAK,IAAI;AAErB,MAAI,QAAQ,eAAe;AACT,oBAAA;AACE,sBAAA;AAAA,EAAA;AAGpB,MAAI,aAAa;AAEjB,MAAI,eAAe,GAAG;AACd,UAAA,YAAY,OAAO,eAAe;AAClC,UAAA,YAAY,MAAM,eAAe;AACvC,iBAAa,OAAOA,OAAAA,aAAa,WAAW,SAAS,CAAC;AAAA,EAAA;AAGjD,SAAA,OAAO,aAAa,oBAAoB,GAAG;AACpD;AAEA,MAAM,cAAc,CAAC,SAAyB;AAC5C,QAAM,YAAYA,OAAAA,aAAa,GAAG,KAAK,SAAS,CAAC;AAEjD,SAAO,KAAK,SAAS;AACvB;AAgBgB,SAAA,aAAa,WAA6B,MAAe;AACvE,MAAI,cAAc;AAClB,MAAI,YAAYC,OAAA;AAEZ,MAAAC,KAAAA,SAAS,IAAI,GAAG;AACJ,kBAAA;AACF,gBAAA;AAAA,EAAA,WACHC,KAAAA,SAAS,SAAS,GAAG;AAChB,kBAAA;AAAA,EAAA,WACLD,KAAAA,SAAS,SAAS,GAAG;AAClB,gBAAA;AAAA,EAAA;AAGd,MAAIE,gBAAeC,OAAAA,cAAc,aAAa,GAAG,SAAS;AACtD,MAAA,eAAe,cAAcD,cAAa;AAE1C,MAAA,gBAAgB,EAAUA,QAAAA;AAE9B,SAAO,gBAAgB;AACrBA,qBAAgB,YAAY,SAAS;AAAA,EAAA;AAGhCA,SAAAA;AACT;;;"}
1
+ {"version":3,"file":"unique.cjs","names":[],"sources":["../src/unique.ts"],"sourcesContent":["import { numberConvert, randomNumber } from './number';\nimport { STRING_DICT } from './string';\nimport { isNumber, isString } from './type';\n\nlet lastTimestamp = 0;\nlet lastSafePadding = 0;\n\n/**\n * 生成一个唯一的 BigInt 值。\n *\n * @param randomLength - 可选参数,指定随机部分的长度,默认为 0。\n * 如果大于 0,则会在结果中附加指定长度的随机数。\n * @returns 返回一个唯一的 BigInt 值,包含时间戳、随机部分(如果有)以及递增的填充值。\n */\nexport function uniqueBigInt(randomLength = 0): bigint {\n const now = Date.now();\n\n if (now !== lastTimestamp) {\n lastTimestamp = now;\n lastSafePadding = 0;\n }\n\n let randomPart = '';\n\n if (randomLength > 0) {\n const randomMin = 10 ** (randomLength - 1);\n const randomMax = 10 ** randomLength - 1;\n randomPart = String(randomNumber(randomMin, randomMax));\n }\n\n return BigInt(randomPart + lastSafePadding++ + now);\n}\n\nconst _randomChar = (dict: string): string => {\n const poolIndex = randomNumber(0, dict.length - 1);\n\n return dict[poolIndex];\n};\n\n/**\n * 生成一个唯一的字符串。\n *\n * @param minLength - 可选参数,指定生成字符串的最小长度。\n * 如果未提供或为字符串类型,则使用默认长度。\n * @param dict - 可选参数,指定生成字符串时使用的字符集。\n * 如果未提供,则使用默认字符集 `STRING_DICT`。\n * @returns 返回一个唯一的字符串,包含时间戳、随机部分(如果有)以及递增的填充值。\n * 如果指定了 `length`,则返回值的长度将被调整到指定长度。\n */\nexport function uniqueString(minLength: number, dict: string): string;\nexport function uniqueString(minLength: number): string;\nexport function uniqueString(dict: string): string;\nexport function uniqueString(): string;\nexport function uniqueString(minLength?: number | string, dict?: string) {\n let finalLength = 0;\n let finalDict = STRING_DICT;\n\n if (isString(dict)) {\n finalLength = minLength as number;\n finalDict = dict;\n } else if (isNumber(minLength)) {\n finalLength = minLength;\n } else if (isString(minLength)) {\n finalDict = minLength;\n }\n\n let uniqueString = numberConvert(uniqueBigInt(), finalDict);\n let insertLength = finalLength - uniqueString.length;\n\n if (insertLength <= 0) return uniqueString;\n\n while (insertLength--) {\n uniqueString += _randomChar(finalDict);\n }\n\n return uniqueString;\n}\n"],"mappings":";;;;AAIA,IAAI,gBAAgB;AACpB,IAAI,kBAAkB;;;;;;;;AAStB,SAAgB,aAAa,eAAe,GAAW;CACrD,MAAM,MAAM,KAAK,KAAK;CAEtB,IAAI,QAAQ,eAAe;EACzB,gBAAgB;EAChB,kBAAkB;;CAGpB,IAAI,aAAa;CAEjB,IAAI,eAAe,GAAG;EACpB,MAAM,YAAY,OAAO,eAAe;EACxC,MAAM,YAAY,MAAM,eAAe;EACvC,aAAa,OAAO,eAAA,aAAa,WAAW,UAAU,CAAC;;CAGzD,OAAO,OAAO,aAAa,oBAAoB,IAAI;;AAGrD,IAAM,eAAe,SAAyB;CAG5C,OAAO,KAFW,eAAA,aAAa,GAAG,KAAK,SAAS,EAEpC;;AAiBd,SAAgB,aAAa,WAA6B,MAAe;CACvE,IAAI,cAAc;CAClB,IAAI,YAAY,eAAA;CAEhB,IAAI,aAAA,SAAS,KAAK,EAAE;EAClB,cAAc;EACd,YAAY;QACP,IAAI,aAAA,SAAS,UAAU,EAC5B,cAAc;MACT,IAAI,aAAA,SAAS,UAAU,EAC5B,YAAY;CAGd,IAAI,eAAe,eAAA,cAAc,cAAc,EAAE,UAAU;CAC3D,IAAI,eAAe,cAAc,aAAa;CAE9C,IAAI,gBAAgB,GAAG,OAAO;CAE9B,OAAO,gBACL,gBAAgB,YAAY,UAAU;CAGxC,OAAO"}
package/dist/unique.mjs CHANGED
@@ -1,46 +1,47 @@
1
- import { r as randomNumber, n as numberConvert, S as STRING_DICT } from "./string2.mjs";
2
- import { isString, isNumber } from "./type.mjs";
3
- let lastTimestamp = 0;
4
- let lastSafePadding = 0;
1
+ import { isNumber, isString } from "./type.mjs";
2
+ import { b as randomNumber, h as numberConvert, n as STRING_DICT } from "./string2.mjs";
3
+ //#region src/unique.ts
4
+ var lastTimestamp = 0;
5
+ var lastSafePadding = 0;
6
+ /**
7
+ * 生成一个唯一的 BigInt 值。
8
+ *
9
+ * @param randomLength - 可选参数,指定随机部分的长度,默认为 0。
10
+ * 如果大于 0,则会在结果中附加指定长度的随机数。
11
+ * @returns 返回一个唯一的 BigInt 值,包含时间戳、随机部分(如果有)以及递增的填充值。
12
+ */
5
13
  function uniqueBigInt(randomLength = 0) {
6
- const now = Date.now();
7
- if (now !== lastTimestamp) {
8
- lastTimestamp = now;
9
- lastSafePadding = 0;
10
- }
11
- let randomPart = "";
12
- if (randomLength > 0) {
13
- const randomMin = 10 ** (randomLength - 1);
14
- const randomMax = 10 ** randomLength - 1;
15
- randomPart = String(randomNumber(randomMin, randomMax));
16
- }
17
- return BigInt(randomPart + lastSafePadding++ + now);
14
+ const now = Date.now();
15
+ if (now !== lastTimestamp) {
16
+ lastTimestamp = now;
17
+ lastSafePadding = 0;
18
+ }
19
+ let randomPart = "";
20
+ if (randomLength > 0) {
21
+ const randomMin = 10 ** (randomLength - 1);
22
+ const randomMax = 10 ** randomLength - 1;
23
+ randomPart = String(randomNumber(randomMin, randomMax));
24
+ }
25
+ return BigInt(randomPart + lastSafePadding++ + now);
18
26
  }
19
- const _randomChar = (dict) => {
20
- const poolIndex = randomNumber(0, dict.length - 1);
21
- return dict[poolIndex];
27
+ var _randomChar = (dict) => {
28
+ return dict[randomNumber(0, dict.length - 1)];
22
29
  };
23
30
  function uniqueString(minLength, dict) {
24
- let finalLength = 0;
25
- let finalDict = STRING_DICT;
26
- if (isString(dict)) {
27
- finalLength = minLength;
28
- finalDict = dict;
29
- } else if (isNumber(minLength)) {
30
- finalLength = minLength;
31
- } else if (isString(minLength)) {
32
- finalDict = minLength;
33
- }
34
- let uniqueString2 = numberConvert(uniqueBigInt(), finalDict);
35
- let insertLength = finalLength - uniqueString2.length;
36
- if (insertLength <= 0) return uniqueString2;
37
- while (insertLength--) {
38
- uniqueString2 += _randomChar(finalDict);
39
- }
40
- return uniqueString2;
31
+ let finalLength = 0;
32
+ let finalDict = STRING_DICT;
33
+ if (isString(dict)) {
34
+ finalLength = minLength;
35
+ finalDict = dict;
36
+ } else if (isNumber(minLength)) finalLength = minLength;
37
+ else if (isString(minLength)) finalDict = minLength;
38
+ let uniqueString = numberConvert(uniqueBigInt(), finalDict);
39
+ let insertLength = finalLength - uniqueString.length;
40
+ if (insertLength <= 0) return uniqueString;
41
+ while (insertLength--) uniqueString += _randomChar(finalDict);
42
+ return uniqueString;
41
43
  }
42
- export {
43
- uniqueBigInt,
44
- uniqueString
45
- };
46
- //# sourceMappingURL=unique.mjs.map
44
+ //#endregion
45
+ export { uniqueBigInt, uniqueString };
46
+
47
+ //# sourceMappingURL=unique.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"unique.mjs","sources":["../src/unique.ts"],"sourcesContent":["import { numberConvert, randomNumber } from './number';\nimport { STRING_DICT } from './string';\nimport { isNumber, isString } from './type';\n\nlet lastTimestamp = 0;\nlet lastSafePadding = 0;\n\n/**\n * 生成一个唯一的 BigInt 值。\n *\n * @param randomLength - 可选参数,指定随机部分的长度,默认为 0。\n * 如果大于 0,则会在结果中附加指定长度的随机数。\n * @returns 返回一个唯一的 BigInt 值,包含时间戳、随机部分(如果有)以及递增的填充值。\n */\nexport function uniqueBigInt(randomLength = 0): bigint {\n const now = Date.now();\n\n if (now !== lastTimestamp) {\n lastTimestamp = now;\n lastSafePadding = 0;\n }\n\n let randomPart = '';\n\n if (randomLength > 0) {\n const randomMin = 10 ** (randomLength - 1);\n const randomMax = 10 ** randomLength - 1;\n randomPart = String(randomNumber(randomMin, randomMax));\n }\n\n return BigInt(randomPart + lastSafePadding++ + now);\n}\n\nconst _randomChar = (dict: string): string => {\n const poolIndex = randomNumber(0, dict.length - 1);\n\n return dict[poolIndex];\n};\n\n/**\n * 生成一个唯一的字符串。\n *\n * @param minLength - 可选参数,指定生成字符串的最小长度。\n * 如果未提供或为字符串类型,则使用默认长度。\n * @param dict - 可选参数,指定生成字符串时使用的字符集。\n * 如果未提供,则使用默认字符集 `STRING_DICT`。\n * @returns 返回一个唯一的字符串,包含时间戳、随机部分(如果有)以及递增的填充值。\n * 如果指定了 `length`,则返回值的长度将被调整到指定长度。\n */\nexport function uniqueString(minLength: number, dict: string): string;\nexport function uniqueString(minLength: number): string;\nexport function uniqueString(dict: string): string;\nexport function uniqueString(): string;\nexport function uniqueString(minLength?: number | string, dict?: string) {\n let finalLength = 0;\n let finalDict = STRING_DICT;\n\n if (isString(dict)) {\n finalLength = minLength as number;\n finalDict = dict;\n } else if (isNumber(minLength)) {\n finalLength = minLength;\n } else if (isString(minLength)) {\n finalDict = minLength;\n }\n\n let uniqueString = numberConvert(uniqueBigInt(), finalDict);\n let insertLength = finalLength - uniqueString.length;\n\n if (insertLength <= 0) return uniqueString;\n\n while (insertLength--) {\n uniqueString += _randomChar(finalDict);\n }\n\n return uniqueString;\n}\n"],"names":["uniqueString"],"mappings":";;AAIA,IAAI,gBAAgB;AACpB,IAAI,kBAAkB;AASN,SAAA,aAAa,eAAe,GAAW;AAC/C,QAAA,MAAM,KAAK,IAAI;AAErB,MAAI,QAAQ,eAAe;AACT,oBAAA;AACE,sBAAA;AAAA,EAAA;AAGpB,MAAI,aAAa;AAEjB,MAAI,eAAe,GAAG;AACd,UAAA,YAAY,OAAO,eAAe;AAClC,UAAA,YAAY,MAAM,eAAe;AACvC,iBAAa,OAAO,aAAa,WAAW,SAAS,CAAC;AAAA,EAAA;AAGjD,SAAA,OAAO,aAAa,oBAAoB,GAAG;AACpD;AAEA,MAAM,cAAc,CAAC,SAAyB;AAC5C,QAAM,YAAY,aAAa,GAAG,KAAK,SAAS,CAAC;AAEjD,SAAO,KAAK,SAAS;AACvB;AAgBgB,SAAA,aAAa,WAA6B,MAAe;AACvE,MAAI,cAAc;AAClB,MAAI,YAAY;AAEZ,MAAA,SAAS,IAAI,GAAG;AACJ,kBAAA;AACF,gBAAA;AAAA,EAAA,WACH,SAAS,SAAS,GAAG;AAChB,kBAAA;AAAA,EAAA,WACL,SAAS,SAAS,GAAG;AAClB,gBAAA;AAAA,EAAA;AAGd,MAAIA,gBAAe,cAAc,aAAa,GAAG,SAAS;AACtD,MAAA,eAAe,cAAcA,cAAa;AAE1C,MAAA,gBAAgB,EAAUA,QAAAA;AAE9B,SAAO,gBAAgB;AACrBA,qBAAgB,YAAY,SAAS;AAAA,EAAA;AAGhCA,SAAAA;AACT;"}
1
+ {"version":3,"file":"unique.mjs","names":[],"sources":["../src/unique.ts"],"sourcesContent":["import { numberConvert, randomNumber } from './number';\nimport { STRING_DICT } from './string';\nimport { isNumber, isString } from './type';\n\nlet lastTimestamp = 0;\nlet lastSafePadding = 0;\n\n/**\n * 生成一个唯一的 BigInt 值。\n *\n * @param randomLength - 可选参数,指定随机部分的长度,默认为 0。\n * 如果大于 0,则会在结果中附加指定长度的随机数。\n * @returns 返回一个唯一的 BigInt 值,包含时间戳、随机部分(如果有)以及递增的填充值。\n */\nexport function uniqueBigInt(randomLength = 0): bigint {\n const now = Date.now();\n\n if (now !== lastTimestamp) {\n lastTimestamp = now;\n lastSafePadding = 0;\n }\n\n let randomPart = '';\n\n if (randomLength > 0) {\n const randomMin = 10 ** (randomLength - 1);\n const randomMax = 10 ** randomLength - 1;\n randomPart = String(randomNumber(randomMin, randomMax));\n }\n\n return BigInt(randomPart + lastSafePadding++ + now);\n}\n\nconst _randomChar = (dict: string): string => {\n const poolIndex = randomNumber(0, dict.length - 1);\n\n return dict[poolIndex];\n};\n\n/**\n * 生成一个唯一的字符串。\n *\n * @param minLength - 可选参数,指定生成字符串的最小长度。\n * 如果未提供或为字符串类型,则使用默认长度。\n * @param dict - 可选参数,指定生成字符串时使用的字符集。\n * 如果未提供,则使用默认字符集 `STRING_DICT`。\n * @returns 返回一个唯一的字符串,包含时间戳、随机部分(如果有)以及递增的填充值。\n * 如果指定了 `length`,则返回值的长度将被调整到指定长度。\n */\nexport function uniqueString(minLength: number, dict: string): string;\nexport function uniqueString(minLength: number): string;\nexport function uniqueString(dict: string): string;\nexport function uniqueString(): string;\nexport function uniqueString(minLength?: number | string, dict?: string) {\n let finalLength = 0;\n let finalDict = STRING_DICT;\n\n if (isString(dict)) {\n finalLength = minLength as number;\n finalDict = dict;\n } else if (isNumber(minLength)) {\n finalLength = minLength;\n } else if (isString(minLength)) {\n finalDict = minLength;\n }\n\n let uniqueString = numberConvert(uniqueBigInt(), finalDict);\n let insertLength = finalLength - uniqueString.length;\n\n if (insertLength <= 0) return uniqueString;\n\n while (insertLength--) {\n uniqueString += _randomChar(finalDict);\n }\n\n return uniqueString;\n}\n"],"mappings":";;;AAIA,IAAI,gBAAgB;AACpB,IAAI,kBAAkB;;;;;;;;AAStB,SAAgB,aAAa,eAAe,GAAW;CACrD,MAAM,MAAM,KAAK,KAAK;CAEtB,IAAI,QAAQ,eAAe;EACzB,gBAAgB;EAChB,kBAAkB;;CAGpB,IAAI,aAAa;CAEjB,IAAI,eAAe,GAAG;EACpB,MAAM,YAAY,OAAO,eAAe;EACxC,MAAM,YAAY,MAAM,eAAe;EACvC,aAAa,OAAO,aAAa,WAAW,UAAU,CAAC;;CAGzD,OAAO,OAAO,aAAa,oBAAoB,IAAI;;AAGrD,IAAM,eAAe,SAAyB;CAG5C,OAAO,KAFW,aAAa,GAAG,KAAK,SAAS,EAEpC;;AAiBd,SAAgB,aAAa,WAA6B,MAAe;CACvE,IAAI,cAAc;CAClB,IAAI,YAAY;CAEhB,IAAI,SAAS,KAAK,EAAE;EAClB,cAAc;EACd,YAAY;QACP,IAAI,SAAS,UAAU,EAC5B,cAAc;MACT,IAAI,SAAS,UAAU,EAC5B,YAAY;CAGd,IAAI,eAAe,cAAc,cAAc,EAAE,UAAU;CAC3D,IAAI,eAAe,cAAc,aAAa;CAE9C,IAAI,gBAAgB,GAAG,OAAO;CAE9B,OAAO,gBACL,gBAAgB,YAAY,UAAU;CAGxC,OAAO"}
package/dist/url.cjs CHANGED
@@ -1,37 +1,46 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/url.ts
3
+ /**
4
+ * 解析 URL 字符串为组件对象。
5
+ * @param url - 需要解析的 URL 字符串。
6
+ * @returns 包含解析后 URL 组件的对象。
7
+ */
3
8
  function urlParse(url) {
4
- let result = null;
5
- try {
6
- result = new globalThis.URL(url);
7
- } catch (e) {
8
- }
9
- const protocol = result?.protocol || "";
10
- const host = result?.host || "";
11
- return {
12
- protocol,
13
- host,
14
- hostname: result?.hostname || "",
15
- port: result?.port || "",
16
- pathname: result?.pathname || "",
17
- search: result?.search || "",
18
- hash: result?.hash || "",
19
- username: result?.username || "",
20
- password: result?.password || ""
21
- };
9
+ let result = null;
10
+ try {
11
+ result = new globalThis.URL(url);
12
+ } catch (_e) {}
13
+ return {
14
+ protocol: result?.protocol || "",
15
+ host: result?.host || "",
16
+ hostname: result?.hostname || "",
17
+ port: result?.port || "",
18
+ pathname: result?.pathname || "",
19
+ search: result?.search || "",
20
+ hash: result?.hash || "",
21
+ username: result?.username || "",
22
+ password: result?.password || ""
23
+ };
22
24
  }
25
+ /**
26
+ * 将 UrlMeta 对象转换回 URL 字符串。
27
+ * @param url - 需要转换的 UrlMeta 对象。
28
+ * @returns 转换后的 URL 字符串。
29
+ */
23
30
  function urlStringify(url) {
24
- const { protocol, hostname, port, pathname, search, hash, username, password } = url;
25
- return [
26
- protocol ? `${protocol}//` : "",
27
- username && password ? `${username}:${password}@` : "",
28
- hostname,
29
- port ? `:${port}` : "",
30
- pathname,
31
- search,
32
- hash
33
- ].filter(Boolean).join("");
31
+ const { protocol, hostname, port, pathname, search, hash, username, password } = url;
32
+ return [
33
+ protocol ? `${protocol}//` : "",
34
+ username && password ? `${username}:${password}@` : "",
35
+ hostname,
36
+ port ? `:${port}` : "",
37
+ pathname,
38
+ search,
39
+ hash
40
+ ].filter(Boolean).join("");
34
41
  }
42
+ //#endregion
35
43
  exports.urlParse = urlParse;
36
44
  exports.urlStringify = urlStringify;
37
- //# sourceMappingURL=url.cjs.map
45
+
46
+ //# sourceMappingURL=url.cjs.map
package/dist/url.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"url.cjs","sources":["../src/url.ts"],"sourcesContent":["/**\n * URL 元信息\n */\nexport type UrlMeta = {\n /**\n * 协议部分,包含冒号,例如 \"https:\"。\n */\n protocol: string;\n /**\n * 主机部分,包括主机名和端口。\n */\n host: string;\n /**\n * 主机名部分。\n */\n hostname: string;\n /**\n * 端口部分。\n */\n port: string;\n /**\n * 路径部分。\n */\n pathname: string;\n /**\n * 查询字符串部分。\n */\n search: string;\n /**\n * 哈希部分。\n */\n hash: string;\n /**\n * 用户名部分。\n */\n username: string;\n /**\n * 密码部分。\n */\n password: string;\n};\n\n/**\n * 解析 URL 字符串为组件对象。\n * @param url - 需要解析的 URL 字符串。\n * @returns 包含解析后 URL 组件的对象。\n */\nexport function urlParse(url: string): UrlMeta {\n let result: URL | null = null;\n\n try {\n // 添加 globalThis 是便于对接外部环境 URL 的自行实现\n // 例如在 uni-app、微信小程序等运行环境。\n result = new globalThis.URL(url);\n } catch (e) {\n // ignore\n }\n\n const protocol = result?.protocol || '';\n const host = result?.host || '';\n\n return {\n protocol,\n host,\n hostname: result?.hostname || '',\n port: result?.port || '',\n pathname: result?.pathname || '',\n search: result?.search || '',\n hash: result?.hash || '',\n username: result?.username || '',\n password: result?.password || '',\n };\n}\n\n/**\n * 将 UrlMeta 对象转换回 URL 字符串。\n * @param url - 需要转换的 UrlMeta 对象。\n * @returns 转换后的 URL 字符串。\n */\nexport function urlStringify(url: UrlMeta) {\n const { protocol, hostname, port, pathname, search, hash, username, password } = url;\n return [\n protocol ? `${protocol}//` : '',\n username && password ? `${username}:${password}@` : '',\n hostname,\n port ? `:${port}` : '',\n pathname,\n search,\n hash,\n ]\n .filter(Boolean)\n .join('');\n}\n"],"names":[],"mappings":";;AA+CO,SAAS,SAAS,KAAsB;AAC7C,MAAI,SAAqB;AAErB,MAAA;AAGO,aAAA,IAAI,WAAW,IAAI,GAAG;AAAA,WACxB,GAAG;AAAA,EAAA;AAIN,QAAA,WAAW,QAAQ,YAAY;AAC/B,QAAA,OAAO,QAAQ,QAAQ;AAEtB,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU,QAAQ,YAAY;AAAA,IAC9B,MAAM,QAAQ,QAAQ;AAAA,IACtB,UAAU,QAAQ,YAAY;AAAA,IAC9B,QAAQ,QAAQ,UAAU;AAAA,IAC1B,MAAM,QAAQ,QAAQ;AAAA,IACtB,UAAU,QAAQ,YAAY;AAAA,IAC9B,UAAU,QAAQ,YAAY;AAAA,EAChC;AACF;AAOO,SAAS,aAAa,KAAc;AACnC,QAAA,EAAE,UAAU,UAAU,MAAM,UAAU,QAAQ,MAAM,UAAU,SAAA,IAAa;AAC1E,SAAA;AAAA,IACL,WAAW,GAAG,QAAQ,OAAO;AAAA,IAC7B,YAAY,WAAW,GAAG,QAAQ,IAAI,QAAQ,MAAM;AAAA,IACpD;AAAA,IACA,OAAO,IAAI,IAAI,KAAK;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EAEC,EAAA,OAAO,OAAO,EACd,KAAK,EAAE;AACZ;;;"}
1
+ {"version":3,"file":"url.cjs","names":[],"sources":["../src/url.ts"],"sourcesContent":["/**\n * URL 元信息\n */\nexport type UrlMeta = {\n /**\n * 协议部分,包含冒号,例如 \"https:\"。\n */\n protocol: string;\n /**\n * 主机部分,包括主机名和端口。\n */\n host: string;\n /**\n * 主机名部分。\n */\n hostname: string;\n /**\n * 端口部分。\n */\n port: string;\n /**\n * 路径部分。\n */\n pathname: string;\n /**\n * 查询字符串部分。\n */\n search: string;\n /**\n * 哈希部分。\n */\n hash: string;\n /**\n * 用户名部分。\n */\n username: string;\n /**\n * 密码部分。\n */\n password: string;\n};\n\n/**\n * 解析 URL 字符串为组件对象。\n * @param url - 需要解析的 URL 字符串。\n * @returns 包含解析后 URL 组件的对象。\n */\nexport function urlParse(url: string): UrlMeta {\n let result: URL | null = null;\n\n try {\n // 添加 globalThis 是便于对接外部环境 URL 的自行实现\n // 例如在 uni-app、微信小程序等运行环境。\n result = new globalThis.URL(url);\n } catch (_e) {\n // ignore\n }\n\n const protocol = result?.protocol || '';\n const host = result?.host || '';\n\n return {\n protocol,\n host,\n hostname: result?.hostname || '',\n port: result?.port || '',\n pathname: result?.pathname || '',\n search: result?.search || '',\n hash: result?.hash || '',\n username: result?.username || '',\n password: result?.password || '',\n };\n}\n\n/**\n * 将 UrlMeta 对象转换回 URL 字符串。\n * @param url - 需要转换的 UrlMeta 对象。\n * @returns 转换后的 URL 字符串。\n */\nexport function urlStringify(url: UrlMeta) {\n const {\n protocol,\n hostname,\n port,\n pathname,\n search,\n hash,\n username,\n password,\n } = url;\n return [\n protocol ? `${protocol}//` : '',\n username && password ? `${username}:${password}@` : '',\n hostname,\n port ? `:${port}` : '',\n pathname,\n search,\n hash,\n ]\n .filter(Boolean)\n .join('');\n}\n"],"mappings":";;;;;;;AA+CA,SAAgB,SAAS,KAAsB;CAC7C,IAAI,SAAqB;CAEzB,IAAI;EAGF,SAAS,IAAI,WAAW,IAAI,IAAI;UACzB,IAAI;CAOb,OAAO;EACL,UAJe,QAAQ,YAAY;EAKnC,MAJW,QAAQ,QAAQ;EAK3B,UAAU,QAAQ,YAAY;EAC9B,MAAM,QAAQ,QAAQ;EACtB,UAAU,QAAQ,YAAY;EAC9B,QAAQ,QAAQ,UAAU;EAC1B,MAAM,QAAQ,QAAQ;EACtB,UAAU,QAAQ,YAAY;EAC9B,UAAU,QAAQ,YAAY;EAC/B;;;;;;;AAQH,SAAgB,aAAa,KAAc;CACzC,MAAM,EACJ,UACA,UACA,MACA,UACA,QACA,MACA,UACA,aACE;CACJ,OAAO;EACL,WAAW,GAAG,SAAS,MAAM;EAC7B,YAAY,WAAW,GAAG,SAAS,GAAG,SAAS,KAAK;EACpD;EACA,OAAO,IAAI,SAAS;EACpB;EACA;EACA;EACD,CACE,OAAO,QAAQ,CACf,KAAK,GAAG"}
package/dist/url.mjs CHANGED
@@ -1,37 +1,44 @@
1
+ //#region src/url.ts
2
+ /**
3
+ * 解析 URL 字符串为组件对象。
4
+ * @param url - 需要解析的 URL 字符串。
5
+ * @returns 包含解析后 URL 组件的对象。
6
+ */
1
7
  function urlParse(url) {
2
- let result = null;
3
- try {
4
- result = new globalThis.URL(url);
5
- } catch (e) {
6
- }
7
- const protocol = result?.protocol || "";
8
- const host = result?.host || "";
9
- return {
10
- protocol,
11
- host,
12
- hostname: result?.hostname || "",
13
- port: result?.port || "",
14
- pathname: result?.pathname || "",
15
- search: result?.search || "",
16
- hash: result?.hash || "",
17
- username: result?.username || "",
18
- password: result?.password || ""
19
- };
8
+ let result = null;
9
+ try {
10
+ result = new globalThis.URL(url);
11
+ } catch (_e) {}
12
+ return {
13
+ protocol: result?.protocol || "",
14
+ host: result?.host || "",
15
+ hostname: result?.hostname || "",
16
+ port: result?.port || "",
17
+ pathname: result?.pathname || "",
18
+ search: result?.search || "",
19
+ hash: result?.hash || "",
20
+ username: result?.username || "",
21
+ password: result?.password || ""
22
+ };
20
23
  }
24
+ /**
25
+ * 将 UrlMeta 对象转换回 URL 字符串。
26
+ * @param url - 需要转换的 UrlMeta 对象。
27
+ * @returns 转换后的 URL 字符串。
28
+ */
21
29
  function urlStringify(url) {
22
- const { protocol, hostname, port, pathname, search, hash, username, password } = url;
23
- return [
24
- protocol ? `${protocol}//` : "",
25
- username && password ? `${username}:${password}@` : "",
26
- hostname,
27
- port ? `:${port}` : "",
28
- pathname,
29
- search,
30
- hash
31
- ].filter(Boolean).join("");
30
+ const { protocol, hostname, port, pathname, search, hash, username, password } = url;
31
+ return [
32
+ protocol ? `${protocol}//` : "",
33
+ username && password ? `${username}:${password}@` : "",
34
+ hostname,
35
+ port ? `:${port}` : "",
36
+ pathname,
37
+ search,
38
+ hash
39
+ ].filter(Boolean).join("");
32
40
  }
33
- export {
34
- urlParse,
35
- urlStringify
36
- };
37
- //# sourceMappingURL=url.mjs.map
41
+ //#endregion
42
+ export { urlParse, urlStringify };
43
+
44
+ //# sourceMappingURL=url.mjs.map
package/dist/url.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"url.mjs","sources":["../src/url.ts"],"sourcesContent":["/**\n * URL 元信息\n */\nexport type UrlMeta = {\n /**\n * 协议部分,包含冒号,例如 \"https:\"。\n */\n protocol: string;\n /**\n * 主机部分,包括主机名和端口。\n */\n host: string;\n /**\n * 主机名部分。\n */\n hostname: string;\n /**\n * 端口部分。\n */\n port: string;\n /**\n * 路径部分。\n */\n pathname: string;\n /**\n * 查询字符串部分。\n */\n search: string;\n /**\n * 哈希部分。\n */\n hash: string;\n /**\n * 用户名部分。\n */\n username: string;\n /**\n * 密码部分。\n */\n password: string;\n};\n\n/**\n * 解析 URL 字符串为组件对象。\n * @param url - 需要解析的 URL 字符串。\n * @returns 包含解析后 URL 组件的对象。\n */\nexport function urlParse(url: string): UrlMeta {\n let result: URL | null = null;\n\n try {\n // 添加 globalThis 是便于对接外部环境 URL 的自行实现\n // 例如在 uni-app、微信小程序等运行环境。\n result = new globalThis.URL(url);\n } catch (e) {\n // ignore\n }\n\n const protocol = result?.protocol || '';\n const host = result?.host || '';\n\n return {\n protocol,\n host,\n hostname: result?.hostname || '',\n port: result?.port || '',\n pathname: result?.pathname || '',\n search: result?.search || '',\n hash: result?.hash || '',\n username: result?.username || '',\n password: result?.password || '',\n };\n}\n\n/**\n * 将 UrlMeta 对象转换回 URL 字符串。\n * @param url - 需要转换的 UrlMeta 对象。\n * @returns 转换后的 URL 字符串。\n */\nexport function urlStringify(url: UrlMeta) {\n const { protocol, hostname, port, pathname, search, hash, username, password } = url;\n return [\n protocol ? `${protocol}//` : '',\n username && password ? `${username}:${password}@` : '',\n hostname,\n port ? `:${port}` : '',\n pathname,\n search,\n hash,\n ]\n .filter(Boolean)\n .join('');\n}\n"],"names":[],"mappings":"AA+CO,SAAS,SAAS,KAAsB;AAC7C,MAAI,SAAqB;AAErB,MAAA;AAGO,aAAA,IAAI,WAAW,IAAI,GAAG;AAAA,WACxB,GAAG;AAAA,EAAA;AAIN,QAAA,WAAW,QAAQ,YAAY;AAC/B,QAAA,OAAO,QAAQ,QAAQ;AAEtB,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU,QAAQ,YAAY;AAAA,IAC9B,MAAM,QAAQ,QAAQ;AAAA,IACtB,UAAU,QAAQ,YAAY;AAAA,IAC9B,QAAQ,QAAQ,UAAU;AAAA,IAC1B,MAAM,QAAQ,QAAQ;AAAA,IACtB,UAAU,QAAQ,YAAY;AAAA,IAC9B,UAAU,QAAQ,YAAY;AAAA,EAChC;AACF;AAOO,SAAS,aAAa,KAAc;AACnC,QAAA,EAAE,UAAU,UAAU,MAAM,UAAU,QAAQ,MAAM,UAAU,SAAA,IAAa;AAC1E,SAAA;AAAA,IACL,WAAW,GAAG,QAAQ,OAAO;AAAA,IAC7B,YAAY,WAAW,GAAG,QAAQ,IAAI,QAAQ,MAAM;AAAA,IACpD;AAAA,IACA,OAAO,IAAI,IAAI,KAAK;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EAEC,EAAA,OAAO,OAAO,EACd,KAAK,EAAE;AACZ;"}
1
+ {"version":3,"file":"url.mjs","names":[],"sources":["../src/url.ts"],"sourcesContent":["/**\n * URL 元信息\n */\nexport type UrlMeta = {\n /**\n * 协议部分,包含冒号,例如 \"https:\"。\n */\n protocol: string;\n /**\n * 主机部分,包括主机名和端口。\n */\n host: string;\n /**\n * 主机名部分。\n */\n hostname: string;\n /**\n * 端口部分。\n */\n port: string;\n /**\n * 路径部分。\n */\n pathname: string;\n /**\n * 查询字符串部分。\n */\n search: string;\n /**\n * 哈希部分。\n */\n hash: string;\n /**\n * 用户名部分。\n */\n username: string;\n /**\n * 密码部分。\n */\n password: string;\n};\n\n/**\n * 解析 URL 字符串为组件对象。\n * @param url - 需要解析的 URL 字符串。\n * @returns 包含解析后 URL 组件的对象。\n */\nexport function urlParse(url: string): UrlMeta {\n let result: URL | null = null;\n\n try {\n // 添加 globalThis 是便于对接外部环境 URL 的自行实现\n // 例如在 uni-app、微信小程序等运行环境。\n result = new globalThis.URL(url);\n } catch (_e) {\n // ignore\n }\n\n const protocol = result?.protocol || '';\n const host = result?.host || '';\n\n return {\n protocol,\n host,\n hostname: result?.hostname || '',\n port: result?.port || '',\n pathname: result?.pathname || '',\n search: result?.search || '',\n hash: result?.hash || '',\n username: result?.username || '',\n password: result?.password || '',\n };\n}\n\n/**\n * 将 UrlMeta 对象转换回 URL 字符串。\n * @param url - 需要转换的 UrlMeta 对象。\n * @returns 转换后的 URL 字符串。\n */\nexport function urlStringify(url: UrlMeta) {\n const {\n protocol,\n hostname,\n port,\n pathname,\n search,\n hash,\n username,\n password,\n } = url;\n return [\n protocol ? `${protocol}//` : '',\n username && password ? `${username}:${password}@` : '',\n hostname,\n port ? `:${port}` : '',\n pathname,\n search,\n hash,\n ]\n .filter(Boolean)\n .join('');\n}\n"],"mappings":";;;;;;AA+CA,SAAgB,SAAS,KAAsB;CAC7C,IAAI,SAAqB;CAEzB,IAAI;EAGF,SAAS,IAAI,WAAW,IAAI,IAAI;UACzB,IAAI;CAOb,OAAO;EACL,UAJe,QAAQ,YAAY;EAKnC,MAJW,QAAQ,QAAQ;EAK3B,UAAU,QAAQ,YAAY;EAC9B,MAAM,QAAQ,QAAQ;EACtB,UAAU,QAAQ,YAAY;EAC9B,QAAQ,QAAQ,UAAU;EAC1B,MAAM,QAAQ,QAAQ;EACtB,UAAU,QAAQ,YAAY;EAC9B,UAAU,QAAQ,YAAY;EAC/B;;;;;;;AAQH,SAAgB,aAAa,KAAc;CACzC,MAAM,EACJ,UACA,UACA,MACA,UACA,QACA,MACA,UACA,aACE;CACJ,OAAO;EACL,WAAW,GAAG,SAAS,MAAM;EAC7B,YAAY,WAAW,GAAG,SAAS,GAAG,SAAS,KAAK;EACpD;EACA,OAAO,IAAI,SAAS;EACpB;EACA;EACA;EACD,CACE,OAAO,QAAQ,CACf,KAAK,GAAG"}
package/dist/version.cjs CHANGED
@@ -1,42 +1,60 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const regexp = require("./regexp.cjs");
4
- const type = require("./type.cjs");
2
+ const require_type = require("./type.cjs");
3
+ const require_regexp = require("./regexp.cjs");
4
+ //#region src/version.ts
5
+ /**
6
+ * 将数字转换为安全的数值,如果输入为NaN则返回0
7
+ * @param pos - 位置描述,用于错误提示
8
+ * @param str - 要转换的数字字符串
9
+ * @returns 安全的数字(如果输入为NaN则返回0)
10
+ */
5
11
  function internal_numerical(pos, str) {
6
- if (type.isUndefined(str)) throw new Error(`${pos}不存在`);
7
- if (!regexp.isInteger(str)) throw new Error(`${pos}不是整数`);
8
- const num = Number(str);
9
- if (num < 0) throw new Error(`${pos}不是正整数`);
10
- return num;
12
+ if (require_type.isUndefined(str)) throw new Error(`${pos}不存在`);
13
+ if (!require_regexp.isInteger(str)) throw new Error(`${pos}不是整数`);
14
+ const num = Number(str);
15
+ if (num < 0) throw new Error(`${pos}不是正整数`);
16
+ return num;
11
17
  }
18
+ /**
19
+ * 将语义化版本号字符串解析为VersionObject对象
20
+ * @param version - 要解析的版本号字符串 (例如 "1.2.3")
21
+ * @returns 包含主版本号、次版本号和修订号的对象
22
+ * @throws 如果版本号字符串格式无效将抛出错误
23
+ */
12
24
  function versionParse(version) {
13
- const parts = version.split(".");
14
- if (parts.length !== 3) {
15
- throw new Error("版本号格式不正确");
16
- }
17
- const [major, minor, patch] = parts;
18
- return {
19
- major: internal_numerical("主版本号", major),
20
- minor: internal_numerical("次版本号", minor),
21
- patch: internal_numerical("修订号", patch)
22
- };
25
+ const parts = version.split(".");
26
+ if (parts.length !== 3) throw new Error("版本号格式不正确");
27
+ const [major, minor, patch] = parts;
28
+ return {
29
+ major: internal_numerical("主版本号", major),
30
+ minor: internal_numerical("次版本号", minor),
31
+ patch: internal_numerical("修订号", patch)
32
+ };
23
33
  }
34
+ /**
35
+ * 比较两个语义化版本号字符串
36
+ * @param version1 - 要比较的第一个版本号字符串
37
+ * @param version2 - 要比较的第二个版本号字符串
38
+ * @returns 如果version1较大返回1,version2较大返回-1,相等返回0
39
+ * @throws 如果任一版本号字符串格式无效将抛出错误
40
+ */
24
41
  function versionCompare(version1, version2) {
25
- const vo1 = versionParse(version1);
26
- const vo2 = versionParse(version2);
27
- const order = ["major", "minor", "patch"];
28
- for (const key of order) {
29
- const n1 = vo1[key];
30
- const n2 = vo2[key];
31
- if (n1 > n2) {
32
- return 1;
33
- }
34
- if (n1 < n2) {
35
- return -1;
36
- }
37
- }
38
- return 0;
42
+ const vo1 = versionParse(version1);
43
+ const vo2 = versionParse(version2);
44
+ for (const key of [
45
+ "major",
46
+ "minor",
47
+ "patch"
48
+ ]) {
49
+ const n1 = vo1[key];
50
+ const n2 = vo2[key];
51
+ if (n1 > n2) return 1;
52
+ if (n1 < n2) return -1;
53
+ }
54
+ return 0;
39
55
  }
56
+ //#endregion
40
57
  exports.versionCompare = versionCompare;
41
58
  exports.versionParse = versionParse;
42
- //# sourceMappingURL=version.cjs.map
59
+
60
+ //# sourceMappingURL=version.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.cjs","sources":["../src/version.ts"],"sourcesContent":["import { isInteger, isNumerical } from './regexp';\nimport { isUndefined } from './type';\n\n/**\n * 表示包含主版本号、次版本号和修订号的对象\n */\nexport type VersionObject = {\n /**\n * 主版本号,当有不兼容的API修改时递增\n */\n major: number;\n /**\n * 次版本号,当有向下兼容的功能新增时递增\n */\n minor: number;\n /**\n * 修订号,当有向下兼容的问题修正时递增\n */\n patch: number;\n};\n\n/**\n * 将数字转换为安全的数值,如果输入为NaN则返回0\n * @param pos - 位置描述,用于错误提示\n * @param str - 要转换的数字字符串\n * @returns 安全的数字(如果输入为NaN则返回0)\n */\nfunction internal_numerical(pos: string, str?: string) {\n if (isUndefined(str)) throw new Error(`${pos}不存在`);\n if (!isInteger(str)) throw new Error(`${pos}不是整数`);\n const num = Number(str);\n if (num < 0) throw new Error(`${pos}不是正整数`);\n return num;\n}\n\n/**\n * 将语义化版本号字符串解析为VersionObject对象\n * @param version - 要解析的版本号字符串 (例如 \"1.2.3\")\n * @returns 包含主版本号、次版本号和修订号的对象\n * @throws 如果版本号字符串格式无效将抛出错误\n */\nexport function versionParse(version: string): VersionObject {\n const parts = version.split('.');\n\n if (parts.length !== 3) {\n throw new Error('版本号格式不正确');\n }\n\n const [major, minor, patch] = parts;\n\n return {\n major: internal_numerical('主版本号', major),\n minor: internal_numerical('次版本号', minor),\n patch: internal_numerical('修订号', patch),\n };\n}\n\n/**\n * 比较两个语义化版本号字符串\n * @param version1 - 要比较的第一个版本号字符串\n * @param version2 - 要比较的第二个版本号字符串\n * @returns 如果version1较大返回1,version2较大返回-1,相等返回0\n * @throws 如果任一版本号字符串格式无效将抛出错误\n */\nexport function versionCompare(version1: string, version2: string): number {\n const vo1 = versionParse(version1);\n const vo2 = versionParse(version2);\n const order: (keyof VersionObject)[] = ['major', 'minor', 'patch'];\n\n for (const key of order) {\n const n1 = vo1[key];\n const n2 = vo2[key];\n\n if (n1 > n2) {\n return 1;\n }\n\n if (n1 < n2) {\n return -1;\n }\n }\n\n return 0;\n}\n"],"names":["isUndefined","isInteger"],"mappings":";;;;AA2BA,SAAS,mBAAmB,KAAa,KAAc;AACjD,MAAAA,KAAA,YAAY,GAAG,EAAG,OAAM,IAAI,MAAM,GAAG,GAAG,KAAK;AAC7C,MAAA,CAACC,OAAAA,UAAU,GAAG,SAAS,IAAI,MAAM,GAAG,GAAG,MAAM;AAC3C,QAAA,MAAM,OAAO,GAAG;AACtB,MAAI,MAAM,EAAG,OAAM,IAAI,MAAM,GAAG,GAAG,OAAO;AACnC,SAAA;AACT;AAQO,SAAS,aAAa,SAAgC;AACrD,QAAA,QAAQ,QAAQ,MAAM,GAAG;AAE3B,MAAA,MAAM,WAAW,GAAG;AAChB,UAAA,IAAI,MAAM,UAAU;AAAA,EAAA;AAG5B,QAAM,CAAC,OAAO,OAAO,KAAK,IAAI;AAEvB,SAAA;AAAA,IACL,OAAO,mBAAmB,QAAQ,KAAK;AAAA,IACvC,OAAO,mBAAmB,QAAQ,KAAK;AAAA,IACvC,OAAO,mBAAmB,OAAO,KAAK;AAAA,EACxC;AACF;AASgB,SAAA,eAAe,UAAkB,UAA0B;AACnE,QAAA,MAAM,aAAa,QAAQ;AAC3B,QAAA,MAAM,aAAa,QAAQ;AACjC,QAAM,QAAiC,CAAC,SAAS,SAAS,OAAO;AAEjE,aAAW,OAAO,OAAO;AACjB,UAAA,KAAK,IAAI,GAAG;AACZ,UAAA,KAAK,IAAI,GAAG;AAElB,QAAI,KAAK,IAAI;AACJ,aAAA;AAAA,IAAA;AAGT,QAAI,KAAK,IAAI;AACJ,aAAA;AAAA,IAAA;AAAA,EACT;AAGK,SAAA;AACT;;;"}
1
+ {"version":3,"file":"version.cjs","names":[],"sources":["../src/version.ts"],"sourcesContent":["import { isInteger } from './regexp';\nimport { isUndefined } from './type';\n\n/**\n * 表示包含主版本号、次版本号和修订号的对象\n */\nexport type VersionObject = {\n /**\n * 主版本号,当有不兼容的API修改时递增\n */\n major: number;\n /**\n * 次版本号,当有向下兼容的功能新增时递增\n */\n minor: number;\n /**\n * 修订号,当有向下兼容的问题修正时递增\n */\n patch: number;\n};\n\n/**\n * 将数字转换为安全的数值,如果输入为NaN则返回0\n * @param pos - 位置描述,用于错误提示\n * @param str - 要转换的数字字符串\n * @returns 安全的数字(如果输入为NaN则返回0)\n */\nfunction internal_numerical(pos: string, str?: string) {\n if (isUndefined(str)) throw new Error(`${pos}不存在`);\n if (!isInteger(str)) throw new Error(`${pos}不是整数`);\n const num = Number(str);\n if (num < 0) throw new Error(`${pos}不是正整数`);\n return num;\n}\n\n/**\n * 将语义化版本号字符串解析为VersionObject对象\n * @param version - 要解析的版本号字符串 (例如 \"1.2.3\")\n * @returns 包含主版本号、次版本号和修订号的对象\n * @throws 如果版本号字符串格式无效将抛出错误\n */\nexport function versionParse(version: string): VersionObject {\n const parts = version.split('.');\n\n if (parts.length !== 3) {\n throw new Error('版本号格式不正确');\n }\n\n const [major, minor, patch] = parts;\n\n return {\n major: internal_numerical('主版本号', major),\n minor: internal_numerical('次版本号', minor),\n patch: internal_numerical('修订号', patch),\n };\n}\n\n/**\n * 比较两个语义化版本号字符串\n * @param version1 - 要比较的第一个版本号字符串\n * @param version2 - 要比较的第二个版本号字符串\n * @returns 如果version1较大返回1,version2较大返回-1,相等返回0\n * @throws 如果任一版本号字符串格式无效将抛出错误\n */\nexport function versionCompare(version1: string, version2: string): number {\n const vo1 = versionParse(version1);\n const vo2 = versionParse(version2);\n const order: (keyof VersionObject)[] = ['major', 'minor', 'patch'];\n\n for (const key of order) {\n const n1 = vo1[key];\n const n2 = vo2[key];\n\n if (n1 > n2) {\n return 1;\n }\n\n if (n1 < n2) {\n return -1;\n }\n }\n\n return 0;\n}\n"],"mappings":";;;;;;;;;;AA2BA,SAAS,mBAAmB,KAAa,KAAc;CACrD,IAAI,aAAA,YAAY,IAAI,EAAE,MAAM,IAAI,MAAM,GAAG,IAAI,KAAK;CAClD,IAAI,CAAC,eAAA,UAAU,IAAI,EAAE,MAAM,IAAI,MAAM,GAAG,IAAI,MAAM;CAClD,MAAM,MAAM,OAAO,IAAI;CACvB,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM,GAAG,IAAI,OAAO;CAC3C,OAAO;;;;;;;;AAST,SAAgB,aAAa,SAAgC;CAC3D,MAAM,QAAQ,QAAQ,MAAM,IAAI;CAEhC,IAAI,MAAM,WAAW,GACnB,MAAM,IAAI,MAAM,WAAW;CAG7B,MAAM,CAAC,OAAO,OAAO,SAAS;CAE9B,OAAO;EACL,OAAO,mBAAmB,QAAQ,MAAM;EACxC,OAAO,mBAAmB,QAAQ,MAAM;EACxC,OAAO,mBAAmB,OAAO,MAAM;EACxC;;;;;;;;;AAUH,SAAgB,eAAe,UAAkB,UAA0B;CACzE,MAAM,MAAM,aAAa,SAAS;CAClC,MAAM,MAAM,aAAa,SAAS;CAGlC,KAAK,MAAM,OAAO;EAFsB;EAAS;EAAS;EAExC,EAAO;EACvB,MAAM,KAAK,IAAI;EACf,MAAM,KAAK,IAAI;EAEf,IAAI,KAAK,IACP,OAAO;EAGT,IAAI,KAAK,IACP,OAAO;;CAIX,OAAO"}
package/dist/version.mjs CHANGED
@@ -1,42 +1,58 @@
1
- import { isInteger } from "./regexp.mjs";
2
1
  import { isUndefined } from "./type.mjs";
2
+ import { isInteger } from "./regexp.mjs";
3
+ //#region src/version.ts
4
+ /**
5
+ * 将数字转换为安全的数值,如果输入为NaN则返回0
6
+ * @param pos - 位置描述,用于错误提示
7
+ * @param str - 要转换的数字字符串
8
+ * @returns 安全的数字(如果输入为NaN则返回0)
9
+ */
3
10
  function internal_numerical(pos, str) {
4
- if (isUndefined(str)) throw new Error(`${pos}不存在`);
5
- if (!isInteger(str)) throw new Error(`${pos}不是整数`);
6
- const num = Number(str);
7
- if (num < 0) throw new Error(`${pos}不是正整数`);
8
- return num;
11
+ if (isUndefined(str)) throw new Error(`${pos}不存在`);
12
+ if (!isInteger(str)) throw new Error(`${pos}不是整数`);
13
+ const num = Number(str);
14
+ if (num < 0) throw new Error(`${pos}不是正整数`);
15
+ return num;
9
16
  }
17
+ /**
18
+ * 将语义化版本号字符串解析为VersionObject对象
19
+ * @param version - 要解析的版本号字符串 (例如 "1.2.3")
20
+ * @returns 包含主版本号、次版本号和修订号的对象
21
+ * @throws 如果版本号字符串格式无效将抛出错误
22
+ */
10
23
  function versionParse(version) {
11
- const parts = version.split(".");
12
- if (parts.length !== 3) {
13
- throw new Error("版本号格式不正确");
14
- }
15
- const [major, minor, patch] = parts;
16
- return {
17
- major: internal_numerical("主版本号", major),
18
- minor: internal_numerical("次版本号", minor),
19
- patch: internal_numerical("修订号", patch)
20
- };
24
+ const parts = version.split(".");
25
+ if (parts.length !== 3) throw new Error("版本号格式不正确");
26
+ const [major, minor, patch] = parts;
27
+ return {
28
+ major: internal_numerical("主版本号", major),
29
+ minor: internal_numerical("次版本号", minor),
30
+ patch: internal_numerical("修订号", patch)
31
+ };
21
32
  }
33
+ /**
34
+ * 比较两个语义化版本号字符串
35
+ * @param version1 - 要比较的第一个版本号字符串
36
+ * @param version2 - 要比较的第二个版本号字符串
37
+ * @returns 如果version1较大返回1,version2较大返回-1,相等返回0
38
+ * @throws 如果任一版本号字符串格式无效将抛出错误
39
+ */
22
40
  function versionCompare(version1, version2) {
23
- const vo1 = versionParse(version1);
24
- const vo2 = versionParse(version2);
25
- const order = ["major", "minor", "patch"];
26
- for (const key of order) {
27
- const n1 = vo1[key];
28
- const n2 = vo2[key];
29
- if (n1 > n2) {
30
- return 1;
31
- }
32
- if (n1 < n2) {
33
- return -1;
34
- }
35
- }
36
- return 0;
41
+ const vo1 = versionParse(version1);
42
+ const vo2 = versionParse(version2);
43
+ for (const key of [
44
+ "major",
45
+ "minor",
46
+ "patch"
47
+ ]) {
48
+ const n1 = vo1[key];
49
+ const n2 = vo2[key];
50
+ if (n1 > n2) return 1;
51
+ if (n1 < n2) return -1;
52
+ }
53
+ return 0;
37
54
  }
38
- export {
39
- versionCompare,
40
- versionParse
41
- };
42
- //# sourceMappingURL=version.mjs.map
55
+ //#endregion
56
+ export { versionCompare, versionParse };
57
+
58
+ //# sourceMappingURL=version.mjs.map