@ivujs/i-utils 1.1.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 (132) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +149 -0
  3. package/dist/cjs/ID-card/index.cjs +122 -0
  4. package/dist/cjs/array/index.cjs +465 -0
  5. package/dist/cjs/clipboard/index.cjs +135 -0
  6. package/dist/cjs/color/index.cjs +210 -0
  7. package/dist/cjs/constants/date.cjs +186 -0
  8. package/dist/cjs/constants/lang.cjs +13 -0
  9. package/dist/cjs/constants/math.cjs +13 -0
  10. package/dist/cjs/constants/regexp.cjs +57 -0
  11. package/dist/cjs/constants/sort.cjs +15 -0
  12. package/dist/cjs/cookie/index.cjs +71 -0
  13. package/dist/cjs/crypto/aes/aes.cjs +533 -0
  14. package/dist/cjs/crypto/aes/index.cjs +28 -0
  15. package/dist/cjs/crypto/base32/base32.cjs +385 -0
  16. package/dist/cjs/crypto/base32/index.cjs +44 -0
  17. package/dist/cjs/crypto/base64/base64.cjs +433 -0
  18. package/dist/cjs/crypto/base64/index.cjs +64 -0
  19. package/dist/cjs/crypto/des/des.cjs +1054 -0
  20. package/dist/cjs/crypto/des/index.cjs +30 -0
  21. package/dist/cjs/crypto/md5/index.cjs +25 -0
  22. package/dist/cjs/crypto/md5/md5.cjs +944 -0
  23. package/dist/cjs/crypto/sha/sha1/index.cjs +25 -0
  24. package/dist/cjs/crypto/sha/sha1/sha1.cjs +602 -0
  25. package/dist/cjs/crypto/sha/sha256/index.cjs +46 -0
  26. package/dist/cjs/crypto/sha/sha256/sha256.cjs +654 -0
  27. package/dist/cjs/crypto/sha/sha3/index.cjs +44 -0
  28. package/dist/cjs/crypto/sha/sha3/sha3.cjs +747 -0
  29. package/dist/cjs/crypto/sha/sha512/index.cjs +88 -0
  30. package/dist/cjs/crypto/sha/sha512/sha512.cjs +1186 -0
  31. package/dist/cjs/crypto/sm/lib/asn1.cjs +167 -0
  32. package/dist/cjs/crypto/sm/lib/ec.cjs +352 -0
  33. package/dist/cjs/crypto/sm/lib/jsbn.cjs +1633 -0
  34. package/dist/cjs/crypto/sm/lib/sm3.cjs +173 -0
  35. package/dist/cjs/crypto/sm/lib/utils.cjs +198 -0
  36. package/dist/cjs/crypto/sm/sm2/index.cjs +122 -0
  37. package/dist/cjs/crypto/sm/sm2/sm2.cjs +269 -0
  38. package/dist/cjs/crypto/sm/sm3/index.cjs +15 -0
  39. package/dist/cjs/crypto/sm/sm3/sm3.cjs +103 -0
  40. package/dist/cjs/crypto/sm/sm4/index.cjs +28 -0
  41. package/dist/cjs/crypto/sm/sm4/sm4.cjs +362 -0
  42. package/dist/cjs/crypto/tea/index.cjs +26 -0
  43. package/dist/cjs/crypto/tea/tea.cjs +215 -0
  44. package/dist/cjs/date/index.cjs +1349 -0
  45. package/dist/cjs/desensitized/index.cjs +74 -0
  46. package/dist/cjs/device/index.cjs +159 -0
  47. package/dist/cjs/dom/index.cjs +176 -0
  48. package/dist/cjs/file/index.cjs +339 -0
  49. package/dist/cjs/function/index.cjs +67 -0
  50. package/dist/cjs/id/index.cjs +46 -0
  51. package/dist/cjs/index.cjs +399 -0
  52. package/dist/cjs/keycode/index.cjs +142 -0
  53. package/dist/cjs/math/index.cjs +284 -0
  54. package/dist/cjs/number/index.cjs +14 -0
  55. package/dist/cjs/object/index.cjs +216 -0
  56. package/dist/cjs/pagination/index.cjs +140 -0
  57. package/dist/cjs/random/index.cjs +25 -0
  58. package/dist/cjs/regexp/index.cjs +109 -0
  59. package/dist/cjs/storage/index.cjs +11 -0
  60. package/dist/cjs/storage/localStorage.cjs +40 -0
  61. package/dist/cjs/storage/sessionStorage.cjs +40 -0
  62. package/dist/cjs/string/index.cjs +338 -0
  63. package/dist/cjs/url/index.cjs +279 -0
  64. package/dist/cjs/validate/index.cjs +487 -0
  65. package/dist/cjs/weapp/index.cjs +151 -0
  66. package/dist/es/ID-card/index.mjs +116 -0
  67. package/dist/es/array/index.mjs +437 -0
  68. package/dist/es/clipboard/index.mjs +129 -0
  69. package/dist/es/color/index.mjs +200 -0
  70. package/dist/es/constants/date.mjs +184 -0
  71. package/dist/es/constants/lang.mjs +11 -0
  72. package/dist/es/constants/math.mjs +11 -0
  73. package/dist/es/constants/regexp.mjs +55 -0
  74. package/dist/es/constants/sort.mjs +13 -0
  75. package/dist/es/cookie/index.mjs +65 -0
  76. package/dist/es/crypto/aes/aes.mjs +529 -0
  77. package/dist/es/crypto/aes/index.mjs +25 -0
  78. package/dist/es/crypto/base32/base32.mjs +381 -0
  79. package/dist/es/crypto/base32/index.mjs +39 -0
  80. package/dist/es/crypto/base64/base64.mjs +427 -0
  81. package/dist/es/crypto/base64/index.mjs +57 -0
  82. package/dist/es/crypto/des/des.mjs +1050 -0
  83. package/dist/es/crypto/des/index.mjs +27 -0
  84. package/dist/es/crypto/md5/index.mjs +22 -0
  85. package/dist/es/crypto/md5/md5.mjs +941 -0
  86. package/dist/es/crypto/sha/sha1/index.mjs +22 -0
  87. package/dist/es/crypto/sha/sha1/sha1.mjs +599 -0
  88. package/dist/es/crypto/sha/sha256/index.mjs +41 -0
  89. package/dist/es/crypto/sha/sha256/sha256.mjs +649 -0
  90. package/dist/es/crypto/sha/sha3/index.mjs +39 -0
  91. package/dist/es/crypto/sha/sha3/sha3.mjs +742 -0
  92. package/dist/es/crypto/sha/sha512/index.mjs +79 -0
  93. package/dist/es/crypto/sha/sha512/sha512.mjs +1177 -0
  94. package/dist/es/crypto/sm/lib/asn1.mjs +164 -0
  95. package/dist/es/crypto/sm/lib/ec.mjs +349 -0
  96. package/dist/es/crypto/sm/lib/jsbn.mjs +1630 -0
  97. package/dist/es/crypto/sm/lib/sm3.mjs +170 -0
  98. package/dist/es/crypto/sm/lib/utils.mjs +186 -0
  99. package/dist/es/crypto/sm/sm2/index.mjs +111 -0
  100. package/dist/es/crypto/sm/sm2/sm2.mjs +258 -0
  101. package/dist/es/crypto/sm/sm3/index.mjs +13 -0
  102. package/dist/es/crypto/sm/sm3/sm3.mjs +99 -0
  103. package/dist/es/crypto/sm/sm4/index.mjs +25 -0
  104. package/dist/es/crypto/sm/sm4/sm4.mjs +359 -0
  105. package/dist/es/crypto/tea/index.mjs +23 -0
  106. package/dist/es/crypto/tea/tea.mjs +211 -0
  107. package/dist/es/date/index.mjs +1262 -0
  108. package/dist/es/desensitized/index.mjs +69 -0
  109. package/dist/es/device/index.mjs +145 -0
  110. package/dist/es/dom/index.mjs +164 -0
  111. package/dist/es/file/index.mjs +323 -0
  112. package/dist/es/function/index.mjs +63 -0
  113. package/dist/es/id/index.mjs +43 -0
  114. package/dist/es/index.mjs +59 -0
  115. package/dist/es/keycode/index.mjs +139 -0
  116. package/dist/es/math/index.mjs +274 -0
  117. package/dist/es/number/index.mjs +12 -0
  118. package/dist/es/object/index.mjs +203 -0
  119. package/dist/es/pagination/index.mjs +134 -0
  120. package/dist/es/random/index.mjs +22 -0
  121. package/dist/es/regexp/index.mjs +98 -0
  122. package/dist/es/storage/index.mjs +9 -0
  123. package/dist/es/storage/localStorage.mjs +35 -0
  124. package/dist/es/storage/sessionStorage.mjs +35 -0
  125. package/dist/es/string/index.mjs +321 -0
  126. package/dist/es/url/index.mjs +261 -0
  127. package/dist/es/validate/index.mjs +451 -0
  128. package/dist/es/weapp/index.mjs +140 -0
  129. package/dist/lib/index.full.esm.js +15825 -0
  130. package/dist/lib/index.full.esm.min.js +58 -0
  131. package/dist/lib/index.full.umd.js +16179 -0
  132. package/package.json +54 -0
@@ -0,0 +1,433 @@
1
+ 'use strict';
2
+
3
+ /*
4
+ * [hi-base64]{@link https://github.com/emn178/hi-base64}
5
+ *
6
+ * @version 0.3.1
7
+ * @author Chen, Yi-Cyuan [emn178@gmail.com]
8
+ * @copyright Chen, Yi-Cyuan 2014-2023
9
+ * @license MIT
10
+ */
11
+ /* jslint bitwise: true */
12
+
13
+ var ENCODING_ERROR = "not a UTF-8 string";
14
+ var WINDOW = typeof window === "object";
15
+ var root = WINDOW ? window : {};
16
+ if (root.HI_BASE64_NO_WINDOW) {
17
+ WINDOW = false;
18
+ }
19
+ var WEB_WORKER = !WINDOW && typeof self === "object";
20
+ var NODE_JS = !root.HI_BASE64_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node;
21
+ if (NODE_JS) {
22
+ root = global;
23
+ } else if (WEB_WORKER) {
24
+ root = self;
25
+ }
26
+ var BASE64_ENCODE_CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
27
+ var BASE64_DECODE_CHAR = {};
28
+ for (var i = 0; i < 64; ++i) {
29
+ BASE64_DECODE_CHAR[BASE64_ENCODE_CHAR[i]] = i;
30
+ }
31
+ BASE64_DECODE_CHAR["-"] = 62;
32
+ BASE64_DECODE_CHAR["_"] = 63;
33
+
34
+ var cleanBase64Str = function (base64Str) {
35
+ return base64Str.split("=")[0].replace(/[\r\n]/g, "");
36
+ };
37
+
38
+ var utf8ToBytes = function (str) {
39
+ var bytes = [];
40
+ for (var i = 0; i < str.length; i++) {
41
+ var c = str.charCodeAt(i);
42
+ if (c < 0x80) {
43
+ bytes[bytes.length] = c;
44
+ } else if (c < 0x800) {
45
+ bytes[bytes.length] = 0xc0 | (c >> 6);
46
+ bytes[bytes.length] = 0x80 | (c & 0x3f);
47
+ } else if (c < 0xd800 || c >= 0xe000) {
48
+ bytes[bytes.length] = 0xe0 | (c >> 12);
49
+ bytes[bytes.length] = 0x80 | ((c >> 6) & 0x3f);
50
+ bytes[bytes.length] = 0x80 | (c & 0x3f);
51
+ } else {
52
+ c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));
53
+ bytes[bytes.length] = 0xf0 | (c >> 18);
54
+ bytes[bytes.length] = 0x80 | ((c >> 12) & 0x3f);
55
+ bytes[bytes.length] = 0x80 | ((c >> 6) & 0x3f);
56
+ bytes[bytes.length] = 0x80 | (c & 0x3f);
57
+ }
58
+ }
59
+ return bytes;
60
+ };
61
+
62
+ var decodeAsBytes = function (base64Str) {
63
+ base64Str = cleanBase64Str(base64Str);
64
+ var v1,
65
+ v2,
66
+ v3,
67
+ v4,
68
+ bytes = [],
69
+ index = 0,
70
+ length = base64Str.length;
71
+
72
+ // 4 char to 3 bytes
73
+ for (var i = 0, count = (length >> 2) << 2; i < count; ) {
74
+ v1 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
75
+ v2 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
76
+ v3 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
77
+ v4 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
78
+ bytes[index++] = ((v1 << 2) | (v2 >>> 4)) & 255;
79
+ bytes[index++] = ((v2 << 4) | (v3 >>> 2)) & 255;
80
+ bytes[index++] = ((v3 << 6) | v4) & 255;
81
+ }
82
+
83
+ // remain bytes
84
+ var remain = length - count;
85
+ if (remain === 2) {
86
+ v1 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
87
+ v2 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
88
+ bytes[index++] = ((v1 << 2) | (v2 >>> 4)) & 255;
89
+ } else if (remain === 3) {
90
+ v1 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
91
+ v2 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
92
+ v3 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
93
+ bytes[index++] = ((v1 << 2) | (v2 >>> 4)) & 255;
94
+ bytes[index++] = ((v2 << 4) | (v3 >>> 2)) & 255;
95
+ }
96
+ return bytes;
97
+ };
98
+
99
+ var encodeFromBytes = function (bytes) {
100
+ var v1,
101
+ v2,
102
+ v3,
103
+ base64Str = [],
104
+ length = bytes.length;
105
+ for (var i = 0, count = parseInt(length / 3) * 3; i < count; ) {
106
+ v1 = bytes[i++];
107
+ v2 = bytes[i++];
108
+ v3 = bytes[i++];
109
+ base64Str.push(
110
+ BASE64_ENCODE_CHAR[v1 >>> 2],
111
+ BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63],
112
+ BASE64_ENCODE_CHAR[((v2 << 2) | (v3 >>> 6)) & 63],
113
+ BASE64_ENCODE_CHAR[v3 & 63],
114
+ );
115
+ }
116
+
117
+ // remain char
118
+ var remain = length - count;
119
+ if (remain === 1) {
120
+ v1 = bytes[i];
121
+ base64Str.push(BASE64_ENCODE_CHAR[v1 >>> 2], BASE64_ENCODE_CHAR[(v1 << 4) & 63], "==");
122
+ } else if (remain === 2) {
123
+ v1 = bytes[i++];
124
+ v2 = bytes[i];
125
+ base64Str.push(
126
+ BASE64_ENCODE_CHAR[v1 >>> 2],
127
+ BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63],
128
+ BASE64_ENCODE_CHAR[(v2 << 2) & 63],
129
+ "=",
130
+ );
131
+ }
132
+ return base64Str.join("");
133
+ };
134
+
135
+ var btoa = root.btoa,
136
+ atob = root.atob,
137
+ utf8Base64Encode,
138
+ utf8Base64Decode;
139
+ if (NODE_JS) {
140
+ var Buffer = require("buffer").Buffer;
141
+ btoa = function (str) {
142
+ return Buffer.from(str, "ascii").toString("base64");
143
+ };
144
+
145
+ utf8Base64Encode = function (str) {
146
+ return Buffer.from(str).toString("base64");
147
+ };
148
+
149
+ encodeFromBytes = utf8Base64Encode;
150
+
151
+ atob = function (base64Str) {
152
+ return Buffer.from(base64Str, "base64").toString("ascii");
153
+ };
154
+
155
+ utf8Base64Decode = function (base64Str) {
156
+ return Buffer.from(base64Str, "base64").toString();
157
+ };
158
+ } else if (!btoa) {
159
+ btoa = function (str) {
160
+ var v1,
161
+ v2,
162
+ v3,
163
+ base64Str = [],
164
+ length = str.length;
165
+ for (var i = 0, count = parseInt(length / 3) * 3; i < count; ) {
166
+ v1 = str.charCodeAt(i++);
167
+ v2 = str.charCodeAt(i++);
168
+ v3 = str.charCodeAt(i++);
169
+ base64Str.push(
170
+ BASE64_ENCODE_CHAR[v1 >>> 2],
171
+ BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63],
172
+ BASE64_ENCODE_CHAR[((v2 << 2) | (v3 >>> 6)) & 63],
173
+ BASE64_ENCODE_CHAR[v3 & 63],
174
+ );
175
+ }
176
+
177
+ // remain char
178
+ var remain = length - count;
179
+ if (remain === 1) {
180
+ v1 = str.charCodeAt(i);
181
+ base64Str.push(BASE64_ENCODE_CHAR[v1 >>> 2], BASE64_ENCODE_CHAR[(v1 << 4) & 63], "==");
182
+ } else if (remain === 2) {
183
+ v1 = str.charCodeAt(i++);
184
+ v2 = str.charCodeAt(i);
185
+ base64Str.push(
186
+ BASE64_ENCODE_CHAR[v1 >>> 2],
187
+ BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63],
188
+ BASE64_ENCODE_CHAR[(v2 << 2) & 63],
189
+ "=",
190
+ );
191
+ }
192
+ return base64Str.join("");
193
+ };
194
+
195
+ utf8Base64Encode = function (str) {
196
+ var v1,
197
+ v2,
198
+ v3,
199
+ base64Str = [],
200
+ bytes = utf8ToBytes(str),
201
+ length = bytes.length;
202
+ for (var i = 0, count = parseInt(length / 3) * 3; i < count; ) {
203
+ v1 = bytes[i++];
204
+ v2 = bytes[i++];
205
+ v3 = bytes[i++];
206
+ base64Str.push(
207
+ BASE64_ENCODE_CHAR[v1 >>> 2],
208
+ BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63],
209
+ BASE64_ENCODE_CHAR[((v2 << 2) | (v3 >>> 6)) & 63],
210
+ BASE64_ENCODE_CHAR[v3 & 63],
211
+ );
212
+ }
213
+
214
+ // remain char
215
+ var remain = length - count;
216
+ if (remain === 1) {
217
+ v1 = bytes[i];
218
+ base64Str.push(BASE64_ENCODE_CHAR[v1 >>> 2], BASE64_ENCODE_CHAR[(v1 << 4) & 63], "==");
219
+ } else if (remain === 2) {
220
+ v1 = bytes[i++];
221
+ v2 = bytes[i];
222
+ base64Str.push(
223
+ BASE64_ENCODE_CHAR[v1 >>> 2],
224
+ BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63],
225
+ BASE64_ENCODE_CHAR[(v2 << 2) & 63],
226
+ "=",
227
+ );
228
+ }
229
+ return base64Str.join("");
230
+ };
231
+
232
+ atob = function (base64Str) {
233
+ var v1,
234
+ v2,
235
+ v3,
236
+ v4,
237
+ str = [],
238
+ length = base64Str.length;
239
+
240
+ // 4 char to 3 bytes
241
+ for (var i = 0, count = (length >> 2) << 2; i < count; ) {
242
+ v1 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
243
+ v2 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
244
+ v3 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
245
+ v4 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
246
+ str.push(
247
+ String.fromCharCode(((v1 << 2) | (v2 >>> 4)) & 255),
248
+ String.fromCharCode(((v2 << 4) | (v3 >>> 2)) & 255),
249
+ String.fromCharCode(((v3 << 6) | v4) & 255),
250
+ );
251
+ }
252
+
253
+ // remain bytes
254
+ var remain = length - count;
255
+ if (remain === 2) {
256
+ v1 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
257
+ v2 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
258
+ str.push(String.fromCharCode(((v1 << 2) | (v2 >>> 4)) & 255));
259
+ } else if (remain === 3) {
260
+ v1 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
261
+ v2 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
262
+ v3 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
263
+ str.push(
264
+ String.fromCharCode(((v1 << 2) | (v2 >>> 4)) & 255),
265
+ String.fromCharCode(((v2 << 4) | (v3 >>> 2)) & 255),
266
+ );
267
+ }
268
+ return str.join("");
269
+ };
270
+
271
+ utf8Base64Decode = function (base64Str) {
272
+ var str = [],
273
+ bytes = decodeAsBytes(base64Str),
274
+ length = bytes.length;
275
+ var i = 0,
276
+ followingChars = 0,
277
+ b,
278
+ c;
279
+ while (i < length) {
280
+ b = bytes[i++];
281
+ if (b <= 0x7f) {
282
+ str.push(String.fromCharCode(b));
283
+ continue;
284
+ } else if (b > 0xbf && b <= 0xdf) {
285
+ c = b & 0x1f;
286
+ followingChars = 1;
287
+ } else if (b <= 0xef) {
288
+ c = b & 0x0f;
289
+ followingChars = 2;
290
+ } else if (b <= 0xf7) {
291
+ c = b & 0x07;
292
+ followingChars = 3;
293
+ } else {
294
+ throw new Error(ENCODING_ERROR);
295
+ }
296
+
297
+ for (var j = 0; j < followingChars; ++j) {
298
+ b = bytes[i++];
299
+ if (b < 0x80 || b > 0xbf) {
300
+ throw new Error(ENCODING_ERROR);
301
+ }
302
+ c <<= 6;
303
+ c += b & 0x3f;
304
+ }
305
+ if (c >= 0xd800 && c <= 0xdfff) {
306
+ throw new Error(ENCODING_ERROR);
307
+ }
308
+ if (c > 0x10ffff) {
309
+ throw new Error(ENCODING_ERROR);
310
+ }
311
+
312
+ if (c <= 0xffff) {
313
+ str.push(String.fromCharCode(c));
314
+ } else {
315
+ c -= 0x10000;
316
+ str.push(String.fromCharCode((c >> 10) + 0xd800), String.fromCharCode((c & 0x3ff) + 0xdc00));
317
+ }
318
+ }
319
+ return str.join("");
320
+ };
321
+ } else {
322
+ utf8Base64Encode = function (str) {
323
+ var result = [];
324
+ for (var i = 0; i < str.length; i++) {
325
+ var charcode = str.charCodeAt(i);
326
+ if (charcode < 0x80) {
327
+ result.push(String.fromCharCode(charcode));
328
+ } else if (charcode < 0x800) {
329
+ result.push(String.fromCharCode(0xc0 | (charcode >> 6)), String.fromCharCode(0x80 | (charcode & 0x3f)));
330
+ } else if (charcode < 0xd800 || charcode >= 0xe000) {
331
+ result.push(
332
+ String.fromCharCode(0xe0 | (charcode >> 12)),
333
+ String.fromCharCode(0x80 | ((charcode >> 6) & 0x3f)),
334
+ String.fromCharCode(0x80 | (charcode & 0x3f)),
335
+ );
336
+ } else {
337
+ charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));
338
+ result.push(
339
+ String.fromCharCode(0xf0 | (charcode >> 18)),
340
+ String.fromCharCode(0x80 | ((charcode >> 12) & 0x3f)),
341
+ String.fromCharCode(0x80 | ((charcode >> 6) & 0x3f)),
342
+ String.fromCharCode(0x80 | (charcode & 0x3f)),
343
+ );
344
+ }
345
+ }
346
+ return btoa(result.join(""));
347
+ };
348
+
349
+ utf8Base64Decode = function (base64Str) {
350
+ var tmpStr = atob(base64Str.replace(/-/g, "+").replace(/_/g, "/"));
351
+ if (!/[^\x00-\x7F]/.test(tmpStr)) {
352
+ return tmpStr;
353
+ }
354
+ var str = [],
355
+ i = 0,
356
+ length = tmpStr.length,
357
+ followingChars = 0,
358
+ b,
359
+ c;
360
+ while (i < length) {
361
+ b = tmpStr.charCodeAt(i++);
362
+ if (b <= 0x7f) {
363
+ str.push(String.fromCharCode(b));
364
+ continue;
365
+ } else if (b > 0xbf && b <= 0xdf) {
366
+ c = b & 0x1f;
367
+ followingChars = 1;
368
+ } else if (b <= 0xef) {
369
+ c = b & 0x0f;
370
+ followingChars = 2;
371
+ } else if (b <= 0xf7) {
372
+ c = b & 0x07;
373
+ followingChars = 3;
374
+ } else {
375
+ throw new Error(ENCODING_ERROR);
376
+ }
377
+
378
+ for (var j = 0; j < followingChars; ++j) {
379
+ b = tmpStr.charCodeAt(i++);
380
+ if (b < 0x80 || b > 0xbf) {
381
+ throw new Error(ENCODING_ERROR);
382
+ }
383
+ c <<= 6;
384
+ c += b & 0x3f;
385
+ }
386
+ if (c >= 0xd800 && c <= 0xdfff) {
387
+ throw new Error(ENCODING_ERROR);
388
+ }
389
+ if (c > 0x10ffff) {
390
+ throw new Error(ENCODING_ERROR);
391
+ }
392
+
393
+ if (c <= 0xffff) {
394
+ str.push(String.fromCharCode(c));
395
+ } else {
396
+ c -= 0x10000;
397
+ str.push(String.fromCharCode((c >> 10) + 0xd800), String.fromCharCode((c & 0x3ff) + 0xdc00));
398
+ }
399
+ }
400
+ return str.join("");
401
+ };
402
+ }
403
+
404
+ var encode = function (str, asciiOnly) {
405
+ var notString = typeof str != "string";
406
+ if (notString && str.constructor === root.ArrayBuffer) {
407
+ str = new Uint8Array(str);
408
+ }
409
+ if (notString) {
410
+ return encodeFromBytes(str);
411
+ } else {
412
+ if (/[^\x00-\x7F]/.test(str)) {
413
+ return utf8Base64Encode(str);
414
+ } else {
415
+ return btoa(str);
416
+ }
417
+ }
418
+ };
419
+
420
+ var decode = function (base64Str, asciiOnly) {
421
+ base64Str = cleanBase64Str(base64Str);
422
+ return asciiOnly ? atob(base64Str) : utf8Base64Decode(base64Str);
423
+ };
424
+
425
+ /* 以下是内部实现需要的es模块化导出方法 */
426
+ const utf8Encode = utf8Base64Encode;
427
+ const utf8Decode = utf8Base64Decode;
428
+
429
+ exports.decode = decode;
430
+ exports.decodeAsBytes = decodeAsBytes;
431
+ exports.encode = encode;
432
+ exports.utf8Decode = utf8Decode;
433
+ exports.utf8Encode = utf8Encode;
@@ -0,0 +1,64 @@
1
+ 'use strict';
2
+
3
+ var base64 = require('./base64.cjs');
4
+
5
+ /**
6
+ * base64 加密
7
+ * @param {String} str 字符串
8
+ * @returns {String} 返回加密后的字符串
9
+ */
10
+ function encode(str) {
11
+ return base64.encode(str);
12
+ }
13
+
14
+ /**
15
+ * base64 解密
16
+ * @param {String} str 字符串
17
+ * @returns {String} 返回解密后的字符串
18
+ */
19
+ function decode(str) {
20
+ return base64.decode(str);
21
+ }
22
+
23
+ /**
24
+ * base64 utf8加密
25
+ * @param {String} str 字符串
26
+ * @returns {String} 返回加密后的字符串
27
+ */
28
+ function utf8Encode(str) {
29
+ return base64.utf8Encode(str);
30
+ }
31
+
32
+ /**
33
+ * base64 utf8解密
34
+ * @param {String} str 字符串
35
+ * @returns {String} 返回解密后的字符串
36
+ */
37
+ function utf8Decode(str) {
38
+ return base64.utf8Decode(str);
39
+ }
40
+
41
+ /**
42
+ * base64 加密字节数组
43
+ * @param {Array} array 数组
44
+ * @returns {String} 返回加密后的字符串
45
+ */
46
+ function encodeAsBytes(array) {
47
+ return base64.encode(array);
48
+ }
49
+
50
+ /**
51
+ * base64 解密字节数组
52
+ * @param {String} str 字符串
53
+ * @returns {Array} 返回解密后的字节数组
54
+ */
55
+ function decodeAsBytes(str) {
56
+ return base64.decodeAsBytes(str);
57
+ }
58
+
59
+ exports.decode = decode;
60
+ exports.decodeAsBytes = decodeAsBytes;
61
+ exports.encode = encode;
62
+ exports.encodeAsBytes = encodeAsBytes;
63
+ exports.utf8Decode = utf8Decode;
64
+ exports.utf8Encode = utf8Encode;