@allahjs/utils 0.0.1

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 (160) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +244 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/browser/cookieUtils/index.cjs +100 -0
  5. package/dist/browser/cookieUtils/index.cjs.map +1 -0
  6. package/dist/browser/cookieUtils/index.d.ts +55 -0
  7. package/dist/browser/domUtils/index.cjs +237 -0
  8. package/dist/browser/domUtils/index.cjs.map +1 -0
  9. package/dist/browser/domUtils/index.d.ts +116 -0
  10. package/dist/browser/index.cjs +12 -0
  11. package/dist/browser/index.cjs.map +1 -0
  12. package/dist/browser/index.d.ts +3 -0
  13. package/dist/browser/urlUtils/index.cjs +262 -0
  14. package/dist/browser/urlUtils/index.cjs.map +1 -0
  15. package/dist/browser/urlUtils/index.d.ts +72 -0
  16. package/dist/core/arrayUtils/index.cjs +109 -0
  17. package/dist/core/arrayUtils/index.cjs.map +1 -0
  18. package/dist/core/arrayUtils/index.d.ts +67 -0
  19. package/dist/core/asyncUtils/index.cjs +180 -0
  20. package/dist/core/asyncUtils/index.cjs.map +1 -0
  21. package/dist/core/asyncUtils/index.d.ts +80 -0
  22. package/dist/core/colorUtils/index.cjs +38 -0
  23. package/dist/core/colorUtils/index.cjs.map +1 -0
  24. package/dist/core/colorUtils/index.d.ts +10 -0
  25. package/dist/core/cryptoUtils/index.cjs +428 -0
  26. package/dist/core/cryptoUtils/index.cjs.map +1 -0
  27. package/dist/core/cryptoUtils/index.d.ts +132 -0
  28. package/dist/core/dateUtils/index.cjs +245 -0
  29. package/dist/core/dateUtils/index.cjs.map +1 -0
  30. package/dist/core/dateUtils/index.d.ts +117 -0
  31. package/dist/core/index.cjs +34 -0
  32. package/dist/core/index.cjs.map +1 -0
  33. package/dist/core/index.d.ts +118 -0
  34. package/dist/core/numberUtils/index.cjs +126 -0
  35. package/dist/core/numberUtils/index.cjs.map +1 -0
  36. package/dist/core/numberUtils/index.d.ts +91 -0
  37. package/dist/core/objectUtils/index.cjs +249 -0
  38. package/dist/core/objectUtils/index.cjs.map +1 -0
  39. package/dist/core/objectUtils/index.d.ts +91 -0
  40. package/dist/core/pageUtils/index.cjs +74 -0
  41. package/dist/core/pageUtils/index.cjs.map +1 -0
  42. package/dist/core/pageUtils/index.d.ts +52 -0
  43. package/dist/core/stringUtils/index.cjs +163 -0
  44. package/dist/core/stringUtils/index.cjs.map +1 -0
  45. package/dist/core/stringUtils/index.d.ts +69 -0
  46. package/dist/core/validationUtils/index.cjs +154 -0
  47. package/dist/core/validationUtils/index.cjs.map +1 -0
  48. package/dist/core/validationUtils/index.d.ts +87 -0
  49. package/dist/esm/browser/cookieUtils/index.d.ts +55 -0
  50. package/dist/esm/browser/cookieUtils/index.js +96 -0
  51. package/dist/esm/browser/cookieUtils/index.js.map +1 -0
  52. package/dist/esm/browser/domUtils/index.d.ts +116 -0
  53. package/dist/esm/browser/domUtils/index.js +233 -0
  54. package/dist/esm/browser/domUtils/index.js.map +1 -0
  55. package/dist/esm/browser/index.d.ts +3 -0
  56. package/dist/esm/browser/index.js +4 -0
  57. package/dist/esm/browser/index.js.map +1 -0
  58. package/dist/esm/browser/urlUtils/index.d.ts +72 -0
  59. package/dist/esm/browser/urlUtils/index.js +248 -0
  60. package/dist/esm/browser/urlUtils/index.js.map +1 -0
  61. package/dist/esm/core/arrayUtils/index.d.ts +67 -0
  62. package/dist/esm/core/arrayUtils/index.js +105 -0
  63. package/dist/esm/core/arrayUtils/index.js.map +1 -0
  64. package/dist/esm/core/asyncUtils/index.d.ts +80 -0
  65. package/dist/esm/core/asyncUtils/index.js +175 -0
  66. package/dist/esm/core/asyncUtils/index.js.map +1 -0
  67. package/dist/esm/core/colorUtils/index.d.ts +10 -0
  68. package/dist/esm/core/colorUtils/index.js +34 -0
  69. package/dist/esm/core/colorUtils/index.js.map +1 -0
  70. package/dist/esm/core/cryptoUtils/index.d.ts +132 -0
  71. package/dist/esm/core/cryptoUtils/index.js +424 -0
  72. package/dist/esm/core/cryptoUtils/index.js.map +1 -0
  73. package/dist/esm/core/dateUtils/index.d.ts +117 -0
  74. package/dist/esm/core/dateUtils/index.js +241 -0
  75. package/dist/esm/core/dateUtils/index.js.map +1 -0
  76. package/dist/esm/core/index.d.ts +118 -0
  77. package/dist/esm/core/index.js +30 -0
  78. package/dist/esm/core/index.js.map +1 -0
  79. package/dist/esm/core/numberUtils/index.d.ts +91 -0
  80. package/dist/esm/core/numberUtils/index.js +122 -0
  81. package/dist/esm/core/numberUtils/index.js.map +1 -0
  82. package/dist/esm/core/objectUtils/index.d.ts +91 -0
  83. package/dist/esm/core/objectUtils/index.js +245 -0
  84. package/dist/esm/core/objectUtils/index.js.map +1 -0
  85. package/dist/esm/core/pageUtils/index.d.ts +52 -0
  86. package/dist/esm/core/pageUtils/index.js +66 -0
  87. package/dist/esm/core/pageUtils/index.js.map +1 -0
  88. package/dist/esm/core/stringUtils/index.d.ts +69 -0
  89. package/dist/esm/core/stringUtils/index.js +159 -0
  90. package/dist/esm/core/stringUtils/index.js.map +1 -0
  91. package/dist/esm/core/validationUtils/index.d.ts +87 -0
  92. package/dist/esm/core/validationUtils/index.js +150 -0
  93. package/dist/esm/core/validationUtils/index.js.map +1 -0
  94. package/dist/esm/index.d.ts +22 -0
  95. package/dist/esm/index.js +26 -0
  96. package/dist/esm/index.js.map +1 -0
  97. package/dist/esm/request/ReqQueue/index.js +59 -0
  98. package/dist/esm/request/ReqQueue/index.js.map +1 -0
  99. package/dist/esm/request/httpCode/index.js +49 -0
  100. package/dist/esm/request/httpCode/index.js.map +1 -0
  101. package/dist/esm/request/httpUtils/index.js +359 -0
  102. package/dist/esm/request/httpUtils/index.js.map +1 -0
  103. package/dist/esm/request/index.d.ts +15 -0
  104. package/dist/esm/request/index.js +166 -0
  105. package/dist/esm/request/index.js.map +1 -0
  106. package/dist/esm/request/typings/index.d.ts +184 -0
  107. package/dist/esm/request/uniRequest/index.js +62 -0
  108. package/dist/esm/request/uniRequest/index.js.map +1 -0
  109. package/dist/esm/types/data/index.d.ts +188 -0
  110. package/dist/esm/types/data/index.js +13 -0
  111. package/dist/esm/types/data/index.js.map +1 -0
  112. package/dist/esm/types/index.d.ts +1 -0
  113. package/dist/esm/types/index.js +2 -0
  114. package/dist/esm/types/index.js.map +1 -0
  115. package/dist/esm/uniapp/Tips/index.d.ts +295 -0
  116. package/dist/esm/uniapp/Tips/index.js +498 -0
  117. package/dist/esm/uniapp/Tips/index.js.map +1 -0
  118. package/dist/esm/uniapp/cloudUtils/index.d.ts +56 -0
  119. package/dist/esm/uniapp/cloudUtils/index.js +90 -0
  120. package/dist/esm/uniapp/cloudUtils/index.js.map +1 -0
  121. package/dist/esm/uniapp/index.d.ts +3 -0
  122. package/dist/esm/uniapp/index.js +4 -0
  123. package/dist/esm/uniapp/index.js.map +1 -0
  124. package/dist/esm/uniapp/uniUtils/index.d.ts +113 -0
  125. package/dist/esm/uniapp/uniUtils/index.js +199 -0
  126. package/dist/esm/uniapp/uniUtils/index.js.map +1 -0
  127. package/dist/index.cjs +88 -0
  128. package/dist/index.cjs.map +1 -0
  129. package/dist/index.d.ts +22 -0
  130. package/dist/request/ReqQueue/index.cjs +63 -0
  131. package/dist/request/ReqQueue/index.cjs.map +1 -0
  132. package/dist/request/httpCode/index.cjs +52 -0
  133. package/dist/request/httpCode/index.cjs.map +1 -0
  134. package/dist/request/httpUtils/index.cjs +365 -0
  135. package/dist/request/httpUtils/index.cjs.map +1 -0
  136. package/dist/request/index.cjs +170 -0
  137. package/dist/request/index.cjs.map +1 -0
  138. package/dist/request/index.d.ts +15 -0
  139. package/dist/request/typings/index.d.ts +184 -0
  140. package/dist/request/uniRequest/index.cjs +66 -0
  141. package/dist/request/uniRequest/index.cjs.map +1 -0
  142. package/dist/types/data/index.cjs +15 -0
  143. package/dist/types/data/index.cjs.map +1 -0
  144. package/dist/types/data/index.d.ts +188 -0
  145. package/dist/types/index.cjs +8 -0
  146. package/dist/types/index.cjs.map +1 -0
  147. package/dist/types/index.d.ts +1 -0
  148. package/dist/uniapp/Tips/index.cjs +521 -0
  149. package/dist/uniapp/Tips/index.cjs.map +1 -0
  150. package/dist/uniapp/Tips/index.d.ts +295 -0
  151. package/dist/uniapp/cloudUtils/index.cjs +92 -0
  152. package/dist/uniapp/cloudUtils/index.cjs.map +1 -0
  153. package/dist/uniapp/cloudUtils/index.d.ts +56 -0
  154. package/dist/uniapp/index.cjs +53 -0
  155. package/dist/uniapp/index.cjs.map +1 -0
  156. package/dist/uniapp/index.d.ts +3 -0
  157. package/dist/uniapp/uniUtils/index.cjs +213 -0
  158. package/dist/uniapp/uniUtils/index.cjs.map +1 -0
  159. package/dist/uniapp/uniUtils/index.d.ts +113 -0
  160. package/package.json +129 -0
@@ -0,0 +1,424 @@
1
+ import CryptoJS from 'crypto-js';
2
+
3
+ /**
4
+ * 检测是否为浏览器环境
5
+ * @returns {boolean} 如果是浏览器环境返回 true,否则返回 false
6
+ */
7
+ function isBrowser() {
8
+ return typeof window !== 'undefined' && typeof window.document !== 'undefined';
9
+ }
10
+ /**
11
+ * 动态导入 uuid 模块
12
+ * @returns {Promise<any>} 返回 uuid 模块的 Promise
13
+ */
14
+ async function loadUUID() {
15
+ try {
16
+ // 动态导入 uuid 模块以解决 CommonJS/ESM 兼容性问题
17
+ const uuid = await import('uuid');
18
+ return uuid;
19
+ }
20
+ catch (error) {
21
+ throw new Error(`加载 uuid 模块失败: ${error}`);
22
+ }
23
+ }
24
+ /**
25
+ * 检测是否支持 crypto.getRandomValues
26
+ * @returns {boolean} 如果支持返回 true,否则返回 false
27
+ */
28
+ function supportsCryptoGetRandomValues() {
29
+ return typeof crypto !== 'undefined' &&
30
+ typeof crypto.getRandomValues === 'function';
31
+ }
32
+ /**
33
+ * 生成兼容性的随机字节数组
34
+ * @param {number} size - 需要生成的字节数
35
+ * @returns {Uint8Array} 随机字节数组
36
+ */
37
+ function getRandomBytes(size) {
38
+ const bytes = new Uint8Array(size);
39
+ // 优先使用 crypto.getRandomValues(现代浏览器和 Node.js)
40
+ if (supportsCryptoGetRandomValues()) {
41
+ crypto.getRandomValues(bytes);
42
+ return bytes;
43
+ }
44
+ // 降级方案:使用 Math.random()
45
+ for (let i = 0; i < size; i++) {
46
+ bytes[i] = Math.floor(Math.random() * 256);
47
+ }
48
+ return bytes;
49
+ }
50
+ /**
51
+ * 生成兼容性的 UUID v4
52
+ * 当 crypto.getRandomValues 不可用时使用降级方案
53
+ * @returns {string} UUID v4 字符串
54
+ */
55
+ function generateCompatibleUUID() {
56
+ const bytes = getRandomBytes(16);
57
+ // 设置版本号 (4) 和变体位
58
+ bytes[6] = (bytes[6] & 0x0f) | 0x40; // 版本 4
59
+ bytes[8] = (bytes[8] & 0x3f) | 0x80; // 变体位
60
+ // 转换为十六进制字符串
61
+ const hex = Array.from(bytes)
62
+ .map(b => b.toString(16).padStart(2, '0'))
63
+ .join('');
64
+ // 格式化为标准 UUID 格式
65
+ return [
66
+ hex.slice(0, 8),
67
+ hex.slice(8, 12),
68
+ hex.slice(12, 16),
69
+ hex.slice(16, 20),
70
+ hex.slice(20, 32)
71
+ ].join('-');
72
+ }
73
+ /**
74
+ * 延迟加载 JSEncrypt(仅在浏览器环境中)
75
+ * @returns {Promise<any>} 返回 JSEncrypt 类的 Promise
76
+ */
77
+ async function loadJSEncrypt() {
78
+ if (!isBrowser()) {
79
+ throw new Error('JSEncrypt 只能在浏览器环境中使用');
80
+ }
81
+ try {
82
+ // 动态导入 JSEncrypt
83
+ const { default: JSEncrypt } = await import('jsencrypt');
84
+ return JSEncrypt;
85
+ }
86
+ catch (error) {
87
+ throw new Error(`加载 JSEncrypt 失败: ${error}`);
88
+ }
89
+ }
90
+ /**
91
+ * 延迟加载 Node.js crypto 模块(仅在 Node.js 环境中)
92
+ * @returns {Promise<any>} 返回 crypto 模块的 Promise
93
+ */
94
+ async function loadNodeCrypto() {
95
+ if (isBrowser()) {
96
+ throw new Error('Node.js crypto 模块只能在 Node.js 环境中使用');
97
+ }
98
+ try {
99
+ // 动态导入 Node.js crypto 模块
100
+ const crypto = await import('crypto');
101
+ return crypto;
102
+ }
103
+ catch (error) {
104
+ throw new Error(`加载 Node.js crypto 模块失败: ${error}`);
105
+ }
106
+ }
107
+ /**
108
+ * Node.js 环境下的 RSA 加密
109
+ * @param {string} text - 需要加密的文本
110
+ * @param {string} publicKey - RSA 公钥(PEM 格式)
111
+ * @returns {Promise<string | false>} 返回加密后的 Base64 字符串,失败返回 false
112
+ */
113
+ async function rsaEncryptNode(text, publicKey) {
114
+ try {
115
+ const crypto = await loadNodeCrypto();
116
+ const buffer = Buffer.from(text, 'utf8');
117
+ const encrypted = crypto.publicEncrypt(publicKey, buffer);
118
+ return encrypted.toString('base64');
119
+ }
120
+ catch (error) {
121
+ console.error('Node.js RSA 加密失败:', error);
122
+ return false;
123
+ }
124
+ }
125
+ /**
126
+ * Node.js 环境下的 RSA 解密
127
+ * @param {string} encryptedText - 需要解密的 Base64 字符串
128
+ * @param {string} privateKey - RSA 私钥(PEM 格式)
129
+ * @returns {Promise<string | false>} 返回解密后的原文,失败返回 false
130
+ */
131
+ async function rsaDecryptNode(encryptedText, privateKey) {
132
+ try {
133
+ const crypto = await loadNodeCrypto();
134
+ const buffer = Buffer.from(encryptedText, 'base64');
135
+ const decrypted = crypto.privateDecrypt(privateKey, buffer);
136
+ return decrypted.toString('utf8');
137
+ }
138
+ catch (error) {
139
+ console.error('Node.js RSA 解密失败:', error);
140
+ return false;
141
+ }
142
+ }
143
+ /**
144
+ * Node.js 环境下生成 RSA 密钥对
145
+ * @param {number} keySize - 密钥长度
146
+ * @returns {Promise<{ publicKey: string; privateKey: string } | null>} 返回包含公钥和私钥的对象,失败返回 null
147
+ */
148
+ async function generateRSAKeyPairNode(keySize) {
149
+ try {
150
+ const crypto = await loadNodeCrypto();
151
+ const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
152
+ modulusLength: keySize,
153
+ publicKeyEncoding: {
154
+ type: 'spki',
155
+ format: 'pem'
156
+ },
157
+ privateKeyEncoding: {
158
+ type: 'pkcs8',
159
+ format: 'pem'
160
+ }
161
+ });
162
+ return { publicKey, privateKey };
163
+ }
164
+ catch (error) {
165
+ console.error('Node.js RSA 密钥对生成失败:', error);
166
+ return null;
167
+ }
168
+ }
169
+ /**
170
+ * 浏览器环境下的 RSA 加密
171
+ * @param {string} text - 需要加密的文本
172
+ * @param {string} publicKey - RSA 公钥(PEM 格式)
173
+ * @returns {Promise<string | false>} 返回加密后的 Base64 字符串,失败返回 false
174
+ */
175
+ async function rsaEncryptBrowser(text, publicKey) {
176
+ try {
177
+ const JSEncrypt = await loadJSEncrypt();
178
+ const encrypt = new JSEncrypt();
179
+ encrypt.setPublicKey(publicKey);
180
+ return encrypt.encrypt(text);
181
+ }
182
+ catch (error) {
183
+ console.error('浏览器 RSA 加密失败:', error);
184
+ return false;
185
+ }
186
+ }
187
+ /**
188
+ * 浏览器环境下的 RSA 解密
189
+ * @param {string} encryptedText - 需要解密的 Base64 字符串
190
+ * @param {string} privateKey - RSA 私钥(PEM 格式)
191
+ * @returns {Promise<string | false>} 返回解密后的原文,失败返回 false
192
+ */
193
+ async function rsaDecryptBrowser(encryptedText, privateKey) {
194
+ try {
195
+ const JSEncrypt = await loadJSEncrypt();
196
+ const decrypt = new JSEncrypt();
197
+ decrypt.setPrivateKey(privateKey);
198
+ return decrypt.decrypt(encryptedText);
199
+ }
200
+ catch (error) {
201
+ console.error('浏览器 RSA 解密失败:', error);
202
+ return false;
203
+ }
204
+ }
205
+ /**
206
+ * 浏览器环境下生成 RSA 密钥对
207
+ * @param {number} keySize - 密钥长度
208
+ * @returns {Promise<{ publicKey: string; privateKey: string } | null>} 返回包含公钥和私钥的对象,失败返回 null
209
+ */
210
+ async function generateRSAKeyPairBrowser(keySize) {
211
+ try {
212
+ const JSEncrypt = await loadJSEncrypt();
213
+ const encrypt = new JSEncrypt({ default_key_size: keySize.toString() });
214
+ return {
215
+ publicKey: encrypt.getPublicKey(),
216
+ privateKey: encrypt.getPrivateKey()
217
+ };
218
+ }
219
+ catch (error) {
220
+ console.error('浏览器 RSA 密钥对生成失败:', error);
221
+ return null;
222
+ }
223
+ }
224
+ /**
225
+ * 加密工具类
226
+ * 提供 UUID 生成、MD5 哈希、RSA 加密解密、AES 对称加密等功能
227
+ */
228
+ const cryptoUtils = {
229
+ /**
230
+ * 生成 UUID v4
231
+ * @returns {Promise<string>} 返回一个随机生成的 UUID v4 字符串
232
+ * @example
233
+ * ```typescript
234
+ * const uuid = await cryptoUtils.uuid();
235
+ * console.log(uuid); // "550e8400e29b41d4a716446655440000"
236
+ * ```
237
+ */
238
+ async uuid() {
239
+ try {
240
+ // 优先尝试使用 uuid 库
241
+ if (supportsCryptoGetRandomValues()) {
242
+ const { v4: uuidv4 } = await loadUUID();
243
+ return uuidv4().replace(/-/g, '');
244
+ }
245
+ // 在不支持 crypto.getRandomValues 的环境中使用兼容性方案
246
+ console.warn('crypto.getRandomValues 不可用,使用兼容性 UUID 生成方案');
247
+ return generateCompatibleUUID().replace(/-/g, '');
248
+ }
249
+ catch (error) {
250
+ // 如果 uuid 库加载失败,也使用兼容性方案
251
+ console.warn('UUID 库加载失败,使用兼容性 UUID 生成方案:', error);
252
+ return generateCompatibleUUID().replace(/-/g, '');
253
+ }
254
+ },
255
+ /**
256
+ * 生成字符串的 MD5 哈希值
257
+ * @param {string} input - 需要进行 MD5 加密的输入字符串
258
+ * @param {string} [salt] - 可选的盐值,用于增强安全性
259
+ * @returns {string} 返回 MD5 哈希值的十六进制字符串
260
+ * @example
261
+ * ```typescript
262
+ * // 基础 MD5
263
+ * const hash1 = cryptoUtils.md5('hello world');
264
+ * console.log(hash1); // "5d41402abc4b2a76b9719d911017c592"
265
+ *
266
+ * // 带盐值的 MD5
267
+ * const hash2 = cryptoUtils.md5('password', 'mysalt');
268
+ * console.log(hash2); // "a1b2c3d4e5f6..."
269
+ * ```
270
+ */
271
+ md5(input, salt) {
272
+ const data = salt ? input + salt : input;
273
+ return CryptoJS.MD5(data).toString();
274
+ },
275
+ /**
276
+ * 生成简短的 UUID(8位)
277
+ * @returns {string} 返回一个8位的短 UUID 字符串
278
+ * @example
279
+ * ```typescript
280
+ * const shortUuid = cryptoUtils.miniUuid();
281
+ * console.log(shortUuid); // "a1b2c3d4"
282
+ * ```
283
+ */
284
+ miniUuid() {
285
+ return Math.random().toString(36).substring(2, 10);
286
+ },
287
+ /**
288
+ * 验证 UUID 格式是否正确
289
+ * @param {string} uuid - 需要验证的 UUID 字符串
290
+ * @returns {Promise<boolean>} 如果格式正确返回 true,否则返回 false
291
+ * @example
292
+ * ```typescript
293
+ * const isValid = await cryptoUtils.isValidUUID('550e8400-e29b-41d4-a716-446655440000');
294
+ * console.log(isValid); // true
295
+ * ```
296
+ */
297
+ async isValidUUID(uuid) {
298
+ try {
299
+ const { validate: validateUUID } = await loadUUID();
300
+ return validateUUID(uuid);
301
+ }
302
+ catch (error) {
303
+ console.warn(`UUID 库加载失败:${error}`);
304
+ // 如果 uuid 库不可用,使用正则表达式验证
305
+ const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
306
+ return uuidRegex.test(uuid);
307
+ }
308
+ },
309
+ /**
310
+ * RSA 加密(跨环境兼容)
311
+ * 在 Node.js 环境中使用内置 crypto 模块,在浏览器环境中使用 jsencrypt
312
+ * @param {string} text - 需要加密的文本
313
+ * @param {string} publicKey - RSA 公钥(PEM 格式)
314
+ * @returns {Promise<string | false>} 返回加密后的 Base64 字符串,失败返回 false
315
+ * @example
316
+ * ```typescript
317
+ * const publicKey = `-----BEGIN PUBLIC KEY-----
318
+ * MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o...
319
+ * -----END PUBLIC KEY-----`;
320
+ *
321
+ * const encrypted = await cryptoUtils.rsaEncrypt('Hello World', publicKey);
322
+ * console.log(encrypted); // "base64 encrypted string"
323
+ * ```
324
+ */
325
+ async rsaEncrypt(text, publicKey) {
326
+ if (isBrowser()) {
327
+ return await rsaEncryptBrowser(text, publicKey);
328
+ }
329
+ return await rsaEncryptNode(text, publicKey);
330
+ },
331
+ /**
332
+ * RSA 解密(跨环境兼容)
333
+ * 在 Node.js 环境中使用内置 crypto 模块,在浏览器环境中使用 jsencrypt
334
+ * @param {string} encryptedText - 需要解密的 Base64 字符串
335
+ * @param {string} privateKey - RSA 私钥(PEM 格式)
336
+ * @returns {Promise<string | false>} 返回解密后的原文,失败返回 false
337
+ * @example
338
+ * ```typescript
339
+ * const privateKey = `-----BEGIN PRIVATE KEY-----
340
+ * MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAL...
341
+ * -----END PRIVATE KEY-----`;
342
+ *
343
+ * const decrypted = await cryptoUtils.rsaDecrypt(encryptedText, privateKey);
344
+ * console.log(decrypted); // "Hello World"
345
+ * ```
346
+ */
347
+ async rsaDecrypt(encryptedText, privateKey) {
348
+ if (isBrowser()) {
349
+ return await rsaDecryptBrowser(encryptedText, privateKey);
350
+ }
351
+ return await rsaDecryptNode(encryptedText, privateKey);
352
+ },
353
+ /**
354
+ * 生成 RSA 密钥对(跨环境兼容)
355
+ * 在 Node.js 环境中使用内置 crypto 模块,在浏览器环境中使用 jsencrypt
356
+ * @param {number} [keySize=1024] - 密钥长度,默认 1024 位
357
+ * @returns {Promise<{ publicKey: string; privateKey: string } | null>} 返回包含公钥和私钥的对象,失败返回 null
358
+ * @example
359
+ * ```typescript
360
+ * const keyPair = await cryptoUtils.generateRSAKeyPair(2048);
361
+ * if (keyPair) {
362
+ * console.log(keyPair.publicKey); // "-----BEGIN PUBLIC KEY-----..."
363
+ * console.log(keyPair.privateKey); // "-----BEGIN PRIVATE KEY-----..."
364
+ * }
365
+ * ```
366
+ */
367
+ async generateRSAKeyPair(keySize = 1024) {
368
+ if (isBrowser()) {
369
+ return await generateRSAKeyPairBrowser(keySize);
370
+ }
371
+ return await generateRSAKeyPairNode(keySize);
372
+ },
373
+ /**
374
+ * AES 加密(使用字符串密钥)
375
+ * @param {string} text - 需要加密的文本
376
+ * @param {string} key - 加密密钥(字符串)
377
+ * @returns {string} 返回加密后的文本(包含 IV 和密文)
378
+ * @example
379
+ * ```typescript
380
+ * const encrypted = cryptoUtils.aesEncrypt('Hello World', 'mySecretKey123');
381
+ * console.log(encrypted); // "iv:ciphertext"
382
+ * ```
383
+ */
384
+ aesEncrypt(text, key) {
385
+ try {
386
+ // 使用 CryptoJS 进行 AES 加密
387
+ const encrypted = CryptoJS.AES.encrypt(text, key).toString();
388
+ return encrypted;
389
+ }
390
+ catch (error) {
391
+ console.error('AES 加密失败:', error);
392
+ throw new Error('AES 加密失败');
393
+ }
394
+ },
395
+ /**
396
+ * AES 解密(使用字符串密钥)
397
+ * @param {string} encryptedText - 需要解密的文本(包含 IV 和密文)
398
+ * @param {string} key - 解密密钥(字符串)
399
+ * @returns {string} 返回解密后的原文
400
+ * @example
401
+ * ```typescript
402
+ * const decrypted = cryptoUtils.aesDecrypt(encryptedText, 'mySecretKey123');
403
+ * console.log(decrypted); // "Hello World"
404
+ * ```
405
+ */
406
+ aesDecrypt(encryptedText, key) {
407
+ try {
408
+ // 使用 CryptoJS 进行 AES 解密
409
+ const decrypted = CryptoJS.AES.decrypt(encryptedText, key);
410
+ const decryptedText = decrypted.toString(CryptoJS.enc.Utf8);
411
+ if (!decryptedText) {
412
+ throw new Error('解密失败,可能是密钥错误或数据损坏');
413
+ }
414
+ return decryptedText;
415
+ }
416
+ catch (error) {
417
+ console.error('AES 解密失败:', error);
418
+ throw new Error('AES 解密失败');
419
+ }
420
+ }
421
+ };
422
+
423
+ export { cryptoUtils as default };
424
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/core/cryptoUtils/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import { Dayjs } from 'dayjs';
2
+
3
+ /**
4
+ * 日期工具函数
5
+ */
6
+
7
+ /**
8
+ * 日期工具对象
9
+ */
10
+ declare const dateUtils: {
11
+ /**
12
+ * 格式化日期
13
+ * @param date 日期对象或时间戳
14
+ * @param format 格式字符串,如 'YYYY-MM-DD HH:mm:ss'
15
+ * @returns 格式化后的日期字符串
16
+ */
17
+ formatDate(date: Date | number | string, format?: string): string;
18
+ /**
19
+ * 获取相对时间描述
20
+ * @param date 日期对象或时间戳
21
+ * @returns 相对时间描述,如 '2小时前'
22
+ */
23
+ timeAgo(date: Date | number | string): string;
24
+ /**
25
+ * 添加时间
26
+ * @param date 日期对象或时间戳
27
+ * @param amount 数量
28
+ * @param unit 单位:'years' | 'months' | 'days' | 'hours' | 'minutes' | 'seconds'
29
+ * @returns 新的日期对象
30
+ */
31
+ addTime(date: Date | number | string, amount: number, unit: "years" | "months" | "days" | "hours" | "minutes" | "seconds"): Date;
32
+ /**
33
+ * 获取日期范围的开始和结束
34
+ * @param date 日期对象或时间戳
35
+ * @param unit 单位:'day' | 'week' | 'month' | 'year'
36
+ * @returns 包含开始和结束日期的对象
37
+ */
38
+ getDateRange(date: Date | number | string, unit: "day" | "week" | "month" | "year"): {
39
+ start: Date;
40
+ end: Date;
41
+ };
42
+ /**
43
+ * 判断是否为同一天
44
+ * @param date1 日期1
45
+ * @param date2 日期2
46
+ * @returns 是否为同一天
47
+ */
48
+ isSameDay(date1: Date | number | string, date2: Date | number | string): boolean;
49
+ /**
50
+ * 判断是否为闰年
51
+ * @param year 年份
52
+ * @returns 是否为闰年
53
+ */
54
+ isLeapYear(year: number): boolean;
55
+ /**
56
+ * 获取月份天数
57
+ * @param year 年份
58
+ * @param month 月份(0-11)
59
+ * @returns 天数
60
+ */
61
+ getDaysInMonth(year: number, month: number): number;
62
+ /**
63
+ * 获取最近几年的年份选项
64
+ * @param num 几年?默认三年(向上取)
65
+ * @returns 年份选项数组
66
+ */
67
+ getYearOptions(num?: number): Array<{
68
+ id: number;
69
+ text: number;
70
+ }>;
71
+ /**
72
+ * 获取最近几年的年份选项(向下取)
73
+ * @param num 几年?默认三年(向下取)
74
+ * @returns 年份选项数组
75
+ */
76
+ getPastYearOptions(num?: number): Array<{
77
+ id: number;
78
+ text: number;
79
+ }>;
80
+ /**
81
+ * 格式化时间显示
82
+ * @param timestamp 时间戳(字符串或数字)
83
+ * @returns 格式化后的时间显示字符串
84
+ */
85
+ formatTime(timestamp: string | number): string;
86
+ /**
87
+ * 根据当前的时间,来生成是凌晨、早上、中午、下午、晚上,返回对应的字符串
88
+ */
89
+ getDayTimeStr: (date?: Dayjs) => "" | "凌晨" | "上午" | "中午" | "下午" | "晚上";
90
+ /**
91
+ * 安全格式化日期
92
+ *
93
+ * @param date - 要格式化的日期,可以是字符串、数字、Date 对象或 dayjs 对象
94
+ * @param format - 输出的日期格式,默认为 "YYYY-MM-DD"
95
+ * @returns 格式化后的日期字符串;如果输入无效,则返回 "-"
96
+ *
97
+ * @example
98
+ * safeFormat("2025-09-20") // "2025-09-20"
99
+ * safeFormat("2025-13-40") // "-"
100
+ * safeFormat(new Date(), "YYYY/MM/DD HH:mm") // "2025/09/20 16:30"
101
+ */
102
+ safeFormat: (date: any, format?: string) => string;
103
+ /**
104
+ * 安全格式化时间
105
+ */
106
+ safeFormatTime: (date: any, format?: string) => string;
107
+ /**
108
+ * 格式化日期范围显示
109
+ * 将开始时间和结束时间格式化为范围显示
110
+ * @param startTime 开始时间
111
+ * @param endTime 结束时间
112
+ * @returns 格式化后的日期范围字符串
113
+ */
114
+ formatDateRange: (startTime?: string, endTime?: string) => string;
115
+ };
116
+
117
+ export { dateUtils as default };