@cloudcome/utils-core 1.19.0 → 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
@@ -1 +1 @@
1
- {"version":3,"file":"version.mjs","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":[],"mappings":";;AA2BA,SAAS,mBAAmB,KAAa,KAAc;AACjD,MAAA,YAAY,GAAG,EAAG,OAAM,IAAI,MAAM,GAAG,GAAG,KAAK;AAC7C,MAAA,CAAC,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.mjs","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,YAAY,IAAI,EAAE,MAAM,IAAI,MAAM,GAAG,IAAI,KAAK;CAClD,IAAI,CAAC,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/package.json CHANGED
@@ -1,11 +1,104 @@
1
1
  {
2
2
  "name": "@cloudcome/utils-core",
3
- "version": "1.19.0",
3
+ "version": "1.20.0",
4
4
  "description": "cloudcome core utils",
5
- "engines": {
6
- "node": ">=22"
5
+ "main": "./dist/index.cjs",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "typesVersions": {
9
+ "*": {
10
+ "array": [
11
+ "./dist/array.d.ts"
12
+ ],
13
+ "async": [
14
+ "./dist/async.d.ts"
15
+ ],
16
+ "base64": [
17
+ "./dist/base64.d.ts"
18
+ ],
19
+ "cache": [
20
+ "./dist/cache.d.ts"
21
+ ],
22
+ "color": [
23
+ "./dist/color.d.ts"
24
+ ],
25
+ "crypto": [
26
+ "./dist/crypto.d.ts"
27
+ ],
28
+ "date": [
29
+ "./dist/date.d.ts"
30
+ ],
31
+ "dict": [
32
+ "./dist/dict.d.ts"
33
+ ],
34
+ "easing": [
35
+ "./dist/easing.d.ts"
36
+ ],
37
+ "emitter": [
38
+ "./dist/emitter.d.ts"
39
+ ],
40
+ "env": [
41
+ "./dist/env.d.ts"
42
+ ],
43
+ "error": [
44
+ "./dist/error.d.ts"
45
+ ],
46
+ "exception": [
47
+ "./dist/exception.d.ts"
48
+ ],
49
+ "function": [
50
+ "./dist/function.d.ts"
51
+ ],
52
+ "number": [
53
+ "./dist/number.d.ts"
54
+ ],
55
+ "object": [
56
+ "./dist/object.d.ts"
57
+ ],
58
+ "path": [
59
+ "./dist/path.d.ts"
60
+ ],
61
+ "promise": [
62
+ "./dist/promise.d.ts"
63
+ ],
64
+ "qs": [
65
+ "./dist/qs.d.ts"
66
+ ],
67
+ "regexp": [
68
+ "./dist/regexp.d.ts"
69
+ ],
70
+ "string": [
71
+ "./dist/string.d.ts"
72
+ ],
73
+ "time": [
74
+ "./dist/time.d.ts"
75
+ ],
76
+ "timer": [
77
+ "./dist/timer.d.ts"
78
+ ],
79
+ "tree": [
80
+ "./dist/tree.d.ts"
81
+ ],
82
+ "try": [
83
+ "./dist/try.d.ts"
84
+ ],
85
+ "type": [
86
+ "./dist/type.d.ts"
87
+ ],
88
+ "types": [
89
+ "./dist/types.d.ts"
90
+ ],
91
+ "unique": [
92
+ "./dist/unique.d.ts"
93
+ ],
94
+ "url": [
95
+ "./dist/url.d.ts"
96
+ ],
97
+ "version": [
98
+ "./dist/version.d.ts"
99
+ ]
100
+ }
7
101
  },
8
- "engineStrict": true,
9
102
  "sideEffects": false,
10
103
  "exports": {
11
104
  ".": {
@@ -165,109 +258,11 @@
165
258
  "require": "./dist/version.cjs"
166
259
  }
167
260
  },
168
- "typesVersions": {
169
- "*": {
170
- "array": [
171
- "./dist/array.d.ts"
172
- ],
173
- "async": [
174
- "./dist/async.d.ts"
175
- ],
176
- "base64": [
177
- "./dist/base64.d.ts"
178
- ],
179
- "cache": [
180
- "./dist/cache.d.ts"
181
- ],
182
- "color": [
183
- "./dist/color.d.ts"
184
- ],
185
- "crypto": [
186
- "./dist/crypto.d.ts"
187
- ],
188
- "date": [
189
- "./dist/date.d.ts"
190
- ],
191
- "dict": [
192
- "./dist/dict.d.ts"
193
- ],
194
- "easing": [
195
- "./dist/easing.d.ts"
196
- ],
197
- "emitter": [
198
- "./dist/emitter.d.ts"
199
- ],
200
- "env": [
201
- "./dist/env.d.ts"
202
- ],
203
- "error": [
204
- "./dist/error.d.ts"
205
- ],
206
- "exception": [
207
- "./dist/exception.d.ts"
208
- ],
209
- "function": [
210
- "./dist/function.d.ts"
211
- ],
212
- "number": [
213
- "./dist/number.d.ts"
214
- ],
215
- "object": [
216
- "./dist/object.d.ts"
217
- ],
218
- "path": [
219
- "./dist/path.d.ts"
220
- ],
221
- "promise": [
222
- "./dist/promise.d.ts"
223
- ],
224
- "qs": [
225
- "./dist/qs.d.ts"
226
- ],
227
- "regexp": [
228
- "./dist/regexp.d.ts"
229
- ],
230
- "string": [
231
- "./dist/string.d.ts"
232
- ],
233
- "time": [
234
- "./dist/time.d.ts"
235
- ],
236
- "timer": [
237
- "./dist/timer.d.ts"
238
- ],
239
- "tree": [
240
- "./dist/tree.d.ts"
241
- ],
242
- "try": [
243
- "./dist/try.d.ts"
244
- ],
245
- "type": [
246
- "./dist/type.d.ts"
247
- ],
248
- "types": [
249
- "./dist/types.d.ts"
250
- ],
251
- "unique": [
252
- "./dist/unique.d.ts"
253
- ],
254
- "url": [
255
- "./dist/url.d.ts"
256
- ],
257
- "version": [
258
- "./dist/version.d.ts"
259
- ]
260
- }
261
- },
262
- "main": "./dist/index.cjs",
263
- "module": "./dist/index.mjs",
264
- "types": "./dist/index.d.ts",
265
261
  "files": [
266
262
  "dist"
267
263
  ],
268
- "repository": {
269
- "type": "git",
270
- "url": "git+https://github.com/cloudcome/utils.git"
264
+ "engines": {
265
+ "node": ">=22"
271
266
  },
272
267
  "keywords": [
273
268
  "utils",
@@ -281,5 +276,9 @@
281
276
  ],
282
277
  "homepage": "https://github.com/cloudcome/utils",
283
278
  "license": "MIT",
284
- "author": "云淡然 <hi@ydr.me> (https://ydr.me/)"
279
+ "author": "云淡然 <hi@ydr.me> (https://ydr.me/)",
280
+ "repository": {
281
+ "type": "git",
282
+ "url": "git+https://github.com/cloudcome/utils.git"
283
+ }
285
284
  }
package/dist/const.cjs DELETED
@@ -1,14 +0,0 @@
1
- "use strict";
2
- const DATE_SECOND_MS = 1e3;
3
- const DATE_MINUTE_MS = 60 * DATE_SECOND_MS;
4
- const DATE_HOUR_MS = 60 * DATE_MINUTE_MS;
5
- const DATE_DAY_MS = 24 * DATE_HOUR_MS;
6
- const DATE_MONTH_MS = 30 * DATE_DAY_MS;
7
- const DATE_YEAR_MS = 365 * DATE_DAY_MS;
8
- exports.DATE_DAY_MS = DATE_DAY_MS;
9
- exports.DATE_HOUR_MS = DATE_HOUR_MS;
10
- exports.DATE_MINUTE_MS = DATE_MINUTE_MS;
11
- exports.DATE_MONTH_MS = DATE_MONTH_MS;
12
- exports.DATE_SECOND_MS = DATE_SECOND_MS;
13
- exports.DATE_YEAR_MS = DATE_YEAR_MS;
14
- //# sourceMappingURL=const.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"const.cjs","sources":["../src/date/const.ts"],"sourcesContent":["/**\n * 一秒的毫秒数\n */\nexport const DATE_SECOND_MS = 1000;\n\n/**\n * 一分钟的毫秒数\n */\nexport const DATE_MINUTE_MS = 60 * DATE_SECOND_MS;\n\n/**\n * 一小时的毫秒数\n */\nexport const DATE_HOUR_MS = 60 * DATE_MINUTE_MS;\n\n/**\n * 一天的毫秒数\n */\nexport const DATE_DAY_MS = 24 * DATE_HOUR_MS;\n\n/**\n * 一个月(30天)的毫秒数\n */\nexport const DATE_MONTH_MS = 30 * DATE_DAY_MS;\n\n/**\n * 一年(365天)的毫秒数\n */\nexport const DATE_YEAR_MS = 365 * DATE_DAY_MS;\n"],"names":[],"mappings":";AAGO,MAAM,iBAAiB;AAKvB,MAAM,iBAAiB,KAAK;AAK5B,MAAM,eAAe,KAAK;AAK1B,MAAM,cAAc,KAAK;AAKzB,MAAM,gBAAgB,KAAK;AAK3B,MAAM,eAAe,MAAM;;;;;;;"}
package/dist/const.mjs DELETED
@@ -1,15 +0,0 @@
1
- const DATE_SECOND_MS = 1e3;
2
- const DATE_MINUTE_MS = 60 * DATE_SECOND_MS;
3
- const DATE_HOUR_MS = 60 * DATE_MINUTE_MS;
4
- const DATE_DAY_MS = 24 * DATE_HOUR_MS;
5
- const DATE_MONTH_MS = 30 * DATE_DAY_MS;
6
- const DATE_YEAR_MS = 365 * DATE_DAY_MS;
7
- export {
8
- DATE_YEAR_MS as D,
9
- DATE_MONTH_MS as a,
10
- DATE_DAY_MS as b,
11
- DATE_HOUR_MS as c,
12
- DATE_MINUTE_MS as d,
13
- DATE_SECOND_MS as e
14
- };
15
- //# sourceMappingURL=const.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"const.mjs","sources":["../src/date/const.ts"],"sourcesContent":["/**\n * 一秒的毫秒数\n */\nexport const DATE_SECOND_MS = 1000;\n\n/**\n * 一分钟的毫秒数\n */\nexport const DATE_MINUTE_MS = 60 * DATE_SECOND_MS;\n\n/**\n * 一小时的毫秒数\n */\nexport const DATE_HOUR_MS = 60 * DATE_MINUTE_MS;\n\n/**\n * 一天的毫秒数\n */\nexport const DATE_DAY_MS = 24 * DATE_HOUR_MS;\n\n/**\n * 一个月(30天)的毫秒数\n */\nexport const DATE_MONTH_MS = 30 * DATE_DAY_MS;\n\n/**\n * 一年(365天)的毫秒数\n */\nexport const DATE_YEAR_MS = 365 * DATE_DAY_MS;\n"],"names":[],"mappings":"AAGO,MAAM,iBAAiB;AAKvB,MAAM,iBAAiB,KAAK;AAK5B,MAAM,eAAe,KAAK;AAK1B,MAAM,cAAc,KAAK;AAKzB,MAAM,gBAAgB,KAAK;AAK3B,MAAM,eAAe,MAAM;"}
package/dist/core.cjs DELETED
@@ -1,362 +0,0 @@
1
- "use strict";
2
- const type = require("./type.cjs");
3
- const TIMEZONE_OFFSET_MS = 60 * 1e3;
4
- class TimezoneDate {
5
- /**
6
- * 内部时间戳
7
- */
8
- #timestamp;
9
- /**
10
- * 目标时区的日期对象
11
- */
12
- #targetDate;
13
- /**
14
- * UTC 日期对象
15
- */
16
- #utcDate;
17
- /**
18
- * 本地时区偏移量(分钟)
19
- */
20
- #localTimezoneOffset = TimezoneDate.getTimezoneOffset();
21
- /**
22
- * 本地时区偏移量(毫秒)
23
- */
24
- #localTimezoneOffsetMS = this.#localTimezoneOffset * TIMEZONE_OFFSET_MS;
25
- /**
26
- * 目标时区偏移量(分钟)
27
- */
28
- #targetTimezoneOffset = 0;
29
- /**
30
- * 目标时区偏移量(毫秒)
31
- */
32
- #targetTimezoneOffsetMS = 0;
33
- /**
34
- * 构造函数选项
35
- */
36
- #options;
37
- /**
38
- * 构造一个 TimezoneDate 实例
39
- * @param options - 配置选项
40
- */
41
- constructor(options) {
42
- this.#options = (options instanceof TimezoneDate ? {
43
- timestamp: options.getTime(),
44
- utcOffset: options.getUTCOffset()
45
- } : options) || {};
46
- const { utcOffset, timestamp, value } = this.#options;
47
- this.#targetTimezoneOffset = type.isNumber(utcOffset) ? TimezoneDate.getTimezoneOffset(utcOffset) : this.#localTimezoneOffset;
48
- this.#targetTimezoneOffsetMS = this.#targetTimezoneOffset * TIMEZONE_OFFSET_MS;
49
- if (Array.isArray(value) && value.length > 0) {
50
- const [fullYear, month, day, hours, minutes, seconds, milliseconds] = value;
51
- const timestamp2 = Date.UTC(
52
- fullYear ?? 0,
53
- month ?? 0,
54
- day ?? 1,
55
- hours ?? 0,
56
- minutes ?? 0,
57
- seconds ?? 0,
58
- milliseconds ?? 0
59
- );
60
- this.#timestamp = timestamp2 + this.#targetTimezoneOffsetMS;
61
- } else {
62
- this.#timestamp = timestamp || Date.now();
63
- }
64
- this.#targetDate = new Date(this.#timestamp + this.#localTimezoneOffsetMS - this.#targetTimezoneOffsetMS);
65
- this.#utcDate = new Date(this.#timestamp + this.#localTimezoneOffsetMS);
66
- }
67
- /**
68
- * 更新内部时间戳
69
- */
70
- #updateTimestamp() {
71
- this.#timestamp = this.#targetDate.getTime() + this.#targetTimezoneOffsetMS - this.#localTimezoneOffsetMS;
72
- this.#utcDate = new Date(this.#timestamp + this.#localTimezoneOffsetMS);
73
- }
74
- /**
75
- * 获取时区偏移量(分钟)
76
- * @returns 时区偏移量
77
- */
78
- getTimezoneOffset() {
79
- return this.#targetTimezoneOffset;
80
- }
81
- /**
82
- * 获取时区偏移量(UTC)
83
- * @returns 时区序号
84
- */
85
- getUTCOffset() {
86
- return TimezoneDate.getUTCOffset(this.#targetTimezoneOffset);
87
- }
88
- /**
89
- * 获取年份
90
- * @returns 年份
91
- */
92
- getFullYear() {
93
- return this.#targetDate.getFullYear();
94
- }
95
- /**
96
- * 获取月份
97
- * @returns 月份 (0-11)
98
- */
99
- getMonth() {
100
- return this.#targetDate.getMonth();
101
- }
102
- /**
103
- * 获取日期
104
- * @returns 日期 (1-31)
105
- */
106
- getDate() {
107
- return this.#targetDate.getDate();
108
- }
109
- /**
110
- * 获取小时
111
- * @returns 小时 (0-23)
112
- */
113
- getHours() {
114
- return this.#targetDate.getHours();
115
- }
116
- /**
117
- * 获取分钟
118
- * @returns 分钟 (0-59)
119
- */
120
- getMinutes() {
121
- return this.#targetDate.getMinutes();
122
- }
123
- /**
124
- * 获取秒数
125
- * @returns 秒数 (0-59)
126
- */
127
- getSeconds() {
128
- return this.#targetDate.getSeconds();
129
- }
130
- /**
131
- * 获取毫秒
132
- * @returns 毫秒 (0-999)
133
- */
134
- getMilliseconds() {
135
- return this.#targetDate.getMilliseconds();
136
- }
137
- /**
138
- * 设置年份
139
- * @param year - 年份
140
- * @param month - 月份
141
- * @param date - 日期
142
- * @returns 时间戳
143
- */
144
- setFullYear(year, month, date) {
145
- this.#targetDate.setFullYear(year);
146
- this.#updateTimestamp();
147
- if (type.isNumber(month)) this.setMonth(month);
148
- if (type.isNumber(date)) this.setDate(date);
149
- return this.getTime();
150
- }
151
- /**
152
- * 设置月份
153
- * @param month - 月份
154
- * @param date - 日期
155
- * @returns 时间戳
156
- */
157
- setMonth(month, date) {
158
- this.#targetDate.setMonth(month);
159
- this.#updateTimestamp();
160
- if (type.isNumber(date)) this.setDate(date);
161
- return this.getTime();
162
- }
163
- /**
164
- * 设置日期
165
- * @param date - 日期
166
- * @returns 时间戳
167
- */
168
- setDate(date) {
169
- this.#targetDate.setDate(date);
170
- this.#updateTimestamp();
171
- return this.getTime();
172
- }
173
- /**
174
- * 设置小时
175
- * @param hours - 小时
176
- * @param minutes - 分钟
177
- * @param seconds - 秒数
178
- * @param milliseconds - 毫秒
179
- * @returns 时间戳
180
- */
181
- setHours(hours, minutes, seconds, milliseconds) {
182
- this.#targetDate.setHours(hours);
183
- this.#updateTimestamp();
184
- if (type.isNumber(minutes)) this.setMinutes(minutes);
185
- if (type.isNumber(seconds)) this.setSeconds(seconds);
186
- if (type.isNumber(milliseconds)) this.setMilliseconds(milliseconds);
187
- return this.getTime();
188
- }
189
- /**
190
- * 设置分钟
191
- * @param minutes - 分钟
192
- * @param seconds - 秒数
193
- * @param milliseconds - 毫秒
194
- * @returns 时间戳
195
- */
196
- setMinutes(minutes, seconds, milliseconds) {
197
- this.#targetDate.setMinutes(minutes);
198
- this.#updateTimestamp();
199
- if (type.isNumber(seconds)) this.setSeconds(seconds);
200
- if (type.isNumber(milliseconds)) this.setMilliseconds(milliseconds);
201
- return this.getTime();
202
- }
203
- /**
204
- * 设置秒数
205
- * @param seconds - 秒数
206
- * @param milliseconds - 毫秒
207
- * @returns 时间戳
208
- */
209
- setSeconds(seconds, milliseconds) {
210
- this.#targetDate.setSeconds(seconds);
211
- this.#updateTimestamp();
212
- if (type.isNumber(milliseconds)) this.setMilliseconds(milliseconds);
213
- return this.getTime();
214
- }
215
- /**
216
- * 设置毫秒
217
- * @param milliseconds - 毫秒
218
- * @returns 时间戳
219
- */
220
- setMilliseconds(milliseconds) {
221
- this.#targetDate.setMilliseconds(milliseconds);
222
- this.#updateTimestamp();
223
- return this.getTime();
224
- }
225
- /**
226
- * 获取时间戳
227
- * @returns 时间戳
228
- */
229
- getTime() {
230
- return this.#timestamp;
231
- }
232
- /**
233
- * 获取星期几
234
- * @returns 星期几 (0-6, 0表示周日)
235
- */
236
- getDay() {
237
- return this.#targetDate.getDay();
238
- }
239
- /**
240
- * 转换为 ISO 格式的字符串
241
- * @returns ISO 格式的时间字符串
242
- */
243
- toISOString() {
244
- return dateFormat(this.#utcDate, "YYYY-MM-DDTHH:mm:ss.SSSZ");
245
- }
246
- /**
247
- * 转换为指定时区的 TimezoneDate 对象
248
- * @param td - 需要转换的日期对象
249
- * @param offset - 目标时区分钟偏移量,默认为当前时区
250
- * @returns 返回一个 TimezoneDate 对象
251
- * @example
252
- * ```js
253
- * // 转换为 UTC 时间
254
- * const utc0Td = TimezoneDate.changeUtcOffset(new TimezoneDate(), 0);
255
- *
256
- * // 转换为东八区时间
257
- * const utc8Td = TimezoneDate.changeUtcOffset(new TimezoneDate(), 8);
258
- * ```
259
- */
260
- static changeUtcOffset(td, utcOffset) {
261
- return new TimezoneDate({
262
- utcOffset,
263
- timestamp: td.getTime()
264
- });
265
- }
266
- /**
267
- * 获取时区分钟偏移量
268
- * @param utcOffset - 默认使用当前时区
269
- * @returns 时区分钟偏移量
270
- */
271
- static getTimezoneOffset(utcOffset) {
272
- return type.isNumber(utcOffset) ? utcOffset * -60 : (/* @__PURE__ */ new Date()).getTimezoneOffset();
273
- }
274
- /**
275
- * 获取时区序号
276
- * @param timezoneOffset - 默认使用当前时区分钟偏移量
277
- * @returns 时区序号
278
- */
279
- static getUTCOffset(timezoneOffset = TimezoneDate.getTimezoneOffset()) {
280
- return timezoneOffset / -60;
281
- }
282
- }
283
- function isValidDate(unknown) {
284
- return unknown instanceof Date && !Number.isNaN(unknown.getTime()) || unknown instanceof TimezoneDate && !Number.isNaN(unknown.getTime());
285
- }
286
- function _guessDateSeparator(value) {
287
- if (!type.isString(value)) return;
288
- const value2 = value.replace(/-/g, "/");
289
- return new Date(value2);
290
- }
291
- function _guessDateTimezone(value) {
292
- if (!type.isString(value)) return;
293
- const re = /([+-])(\d\d)(\d\d)$/;
294
- const matches = re.exec(value);
295
- if (!matches) return;
296
- const value2 = value.replace(re, "Z");
297
- const d = new Date(value2);
298
- if (!isValidDate(d)) return;
299
- const [, flag, hours, minutes] = matches;
300
- const hours2 = Number.parseInt(hours, 10);
301
- const minutes2 = Number.parseInt(minutes, 10);
302
- const offset = (a, b) => flag === "+" ? a - b : a + b;
303
- d.setHours(offset(d.getHours(), hours2));
304
- d.setMinutes(offset(d.getMinutes(), minutes2));
305
- return d;
306
- }
307
- function dateParse(dateValue) {
308
- const d1 = type.isDate(dateValue) ? new Date(dateValue) : dateValue instanceof TimezoneDate ? new TimezoneDate(dateValue) : new Date(dateValue);
309
- if (isValidDate(d1)) return d1;
310
- const d2 = _guessDateSeparator(dateValue);
311
- if (isValidDate(d2)) return d2;
312
- const d3 = _guessDateTimezone(dateValue);
313
- if (isValidDate(d3)) return d3;
314
- throw new SyntaxError(`${dateValue.toString()} 不是一个合法的日期值`);
315
- }
316
- function _pad(num, len = 2) {
317
- return `${num}`.padStart(len, "0");
318
- }
319
- const rules = [
320
- [/Y{4}/gi, (date) => date.getFullYear()],
321
- [/Y{2}/gi, (date) => date.getFullYear() % 100],
322
- [/M{2}/g, (date) => _pad(date.getMonth() + 1)],
323
- [/M{1}/g, (date) => date.getMonth() + 1],
324
- [/D{2}/gi, (date) => _pad(date.getDate())],
325
- [/D{1}/gi, (date) => date.getDate()],
326
- [/H{2}/g, (date) => _pad(date.getHours())],
327
- [/H{1}/g, (date) => date.getHours()],
328
- [
329
- /h{2}/g,
330
- (date) => {
331
- const h = date.getHours();
332
- return _pad(h === 0 ? 12 : h > 12 ? h - 12 : h);
333
- }
334
- ],
335
- [
336
- /h{1}/g,
337
- (date) => {
338
- const h = date.getHours();
339
- return h === 0 ? 12 : h > 12 ? h - 12 : h;
340
- }
341
- ],
342
- [/m{2}/g, (date) => _pad(date.getMinutes())],
343
- [/m{1}/g, (date) => date.getMinutes()],
344
- [/s{2}/g, (date) => _pad(date.getSeconds())],
345
- [/s{1}/g, (date) => date.getSeconds()],
346
- [/S{3}/g, (date) => _pad(date.getMilliseconds(), 3)],
347
- [/S{2}/g, (date) => _pad(date.getMilliseconds(), 2)],
348
- [/S{1}/g, (date) => date.getMilliseconds()]
349
- ];
350
- function dateFormat(dateValue, format = "YYYY-MM-DD HH:mm:ss") {
351
- const date = dateParse(dateValue);
352
- let result = format;
353
- for (const rule of rules) {
354
- result = result.replace(rule[0], String(rule[1](date)));
355
- }
356
- return result;
357
- }
358
- exports.TimezoneDate = TimezoneDate;
359
- exports.dateFormat = dateFormat;
360
- exports.dateParse = dateParse;
361
- exports.isValidDate = isValidDate;
362
- //# sourceMappingURL=core.cjs.map