js-base64 3.7.7 → 3.8.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.
package/README.md CHANGED
@@ -25,7 +25,7 @@ Locally…
25
25
  … or Directly from CDN. In which case you don't even need to install.
26
26
 
27
27
  ```html
28
- <script src="https://cdn.jsdelivr.net/npm/js-base64@3.7.7/base64.min.js"></script>
28
+ <script src="https://cdn.jsdelivr.net/npm/js-base64@3.8.0/base64.min.js"></script>
29
29
  ```
30
30
 
31
31
  This good old way loads `Base64` in the global context (`window`). Though `Base64.noConflict()` is made available, you should consider using ES6 Module to avoid tainting `window`.
@@ -48,14 +48,14 @@ or even remotely.
48
48
  ```html
49
49
  <script type="module">
50
50
  // note jsdelivr.net does not automatically minify .mjs
51
- import { Base64 } from 'https://cdn.jsdelivr.net/npm/js-base64@3.7.7/base64.mjs';
51
+ import { Base64 } from 'https://cdn.jsdelivr.net/npm/js-base64@3.8.0/base64.mjs';
52
52
  </script>
53
53
  ```
54
54
 
55
55
  ```html
56
56
  <script type="module">
57
57
  // or if you prefer no Base64 namespace
58
- import { encode, decode } from 'https://cdn.jsdelivr.net/npm/js-base64@3.7.7/base64.mjs';
58
+ import { encode, decode } from 'https://cdn.jsdelivr.net/npm/js-base64@3.8.0/base64.mjs';
59
59
  </script>
60
60
  ```
61
61
 
@@ -127,7 +127,7 @@ Base64.extendString();
127
127
  'dankogai'.toBase64(); // ZGFua29nYWk=
128
128
  '小飼弾'.toBase64(); // 5bCP6aO85by+
129
129
  '小飼弾'.toBase64(true); // 5bCP6aO85by-
130
- '小飼弾'.toBase64URI(); // 5bCP6aO85by- ab alias of .toBase64(true)
130
+ '小飼弾'.toBase64URI(); // 5bCP6aO85by- an alias of .toBase64(true)
131
131
  '小飼弾'.toBase64URL(); // 5bCP6aO85by- an alias of .toBase64URI()
132
132
  'ZGFua29nYWk='.fromBase64(); // dankogai
133
133
  '5bCP6aO85by+'.fromBase64(); // 小飼弾
package/base64.d.mts CHANGED
@@ -9,11 +9,11 @@
9
9
  *
10
10
  * @author Dan Kogai (https://github.com/dankogai)
11
11
  */
12
- declare const version = "3.7.7";
12
+ declare const version = "3.8.0";
13
13
  /**
14
14
  * @deprecated use lowercase `version`.
15
15
  */
16
- declare const VERSION = "3.7.7";
16
+ declare const VERSION = "3.8.0";
17
17
  /**
18
18
  * polyfill version of `btoa`
19
19
  */
@@ -77,7 +77,7 @@ declare const decode: (src: string) => string;
77
77
  * check if a value is a valid Base64 string
78
78
  * @param {String} src a value to check
79
79
  */
80
- declare const isValid: (src: any) => boolean;
80
+ declare const isValid: (src: unknown) => boolean;
81
81
  /**
82
82
  * extend String.prototype with relevant methods
83
83
  */
@@ -105,7 +105,7 @@ declare const gBase64: {
105
105
  utob: (u: string) => string;
106
106
  btou: (b: string) => string;
107
107
  decode: (src: string) => string;
108
- isValid: (src: any) => boolean;
108
+ isValid: (src: unknown) => boolean;
109
109
  fromUint8Array: (u8a: Uint8Array, urlsafe?: boolean) => string;
110
110
  toUint8Array: (a: string) => Uint8Array;
111
111
  extendString: () => void;
package/base64.d.ts CHANGED
@@ -9,11 +9,11 @@
9
9
  *
10
10
  * @author Dan Kogai (https://github.com/dankogai)
11
11
  */
12
- declare const version = "3.7.7";
12
+ declare const version = "3.8.0";
13
13
  /**
14
14
  * @deprecated use lowercase `version`.
15
15
  */
16
- declare const VERSION = "3.7.7";
16
+ declare const VERSION = "3.8.0";
17
17
  /**
18
18
  * polyfill version of `btoa`
19
19
  */
@@ -77,7 +77,7 @@ declare const decode: (src: string) => string;
77
77
  * check if a value is a valid Base64 string
78
78
  * @param {String} src a value to check
79
79
  */
80
- declare const isValid: (src: any) => boolean;
80
+ declare const isValid: (src: unknown) => boolean;
81
81
  /**
82
82
  * extend String.prototype with relevant methods
83
83
  */
@@ -105,7 +105,7 @@ declare const gBase64: {
105
105
  utob: (u: string) => string;
106
106
  btou: (b: string) => string;
107
107
  decode: (src: string) => string;
108
- isValid: (src: any) => boolean;
108
+ isValid: (src: unknown) => boolean;
109
109
  fromUint8Array: (u8a: Uint8Array, urlsafe?: boolean) => string;
110
110
  toUint8Array: (a: string) => Uint8Array;
111
111
  extendString: () => void;
package/base64.js CHANGED
@@ -37,13 +37,13 @@
37
37
  *
38
38
  * @author Dan Kogai (https://github.com/dankogai)
39
39
  */
40
- var version = '3.7.7';
40
+ var version = '3.8.0';
41
41
  /**
42
42
  * @deprecated use lowercase `version`.
43
43
  */
44
44
  var VERSION = version;
45
45
  var _hasBuffer = typeof Buffer === 'function';
46
- var _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;
46
+ var _TD = typeof TextDecoder === 'function' ? new TextDecoder('utf-8', { ignoreBOM: true }) : undefined;
47
47
  var _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;
48
48
  var b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
49
49
  var b64chs = Array.prototype.slice.call(b64ch);
@@ -197,17 +197,24 @@
197
197
  if (!b64re.test(asc))
198
198
  throw new TypeError('malformed base64.');
199
199
  asc += '=='.slice(2 - (asc.length & 3));
200
- var u24, bin = '', r1, r2;
200
+ var u24, r1, r2;
201
+ var binArray = []; // use array to avoid minor gc in loop
201
202
  for (var i = 0; i < asc.length;) {
202
203
  u24 = b64tab[asc.charAt(i++)] << 18
203
204
  | b64tab[asc.charAt(i++)] << 12
204
205
  | (r1 = b64tab[asc.charAt(i++)]) << 6
205
206
  | (r2 = b64tab[asc.charAt(i++)]);
206
- bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)
207
- : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)
208
- : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);
207
+ if (r1 === 64) {
208
+ binArray.push(_fromCC(u24 >> 16 & 255));
209
+ }
210
+ else if (r2 === 64) {
211
+ binArray.push(_fromCC(u24 >> 16 & 255, u24 >> 8 & 255));
212
+ }
213
+ else {
214
+ binArray.push(_fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255));
215
+ }
209
216
  }
210
- return bin;
217
+ return binArray.join('');
211
218
  };
212
219
  /**
213
220
  * does what `window.atob` of web browsers do.
package/base64.mjs CHANGED
@@ -9,13 +9,13 @@
9
9
  *
10
10
  * @author Dan Kogai (https://github.com/dankogai)
11
11
  */
12
- const version = '3.7.7';
12
+ const version = '3.8.0';
13
13
  /**
14
14
  * @deprecated use lowercase `version`.
15
15
  */
16
16
  const VERSION = version;
17
17
  const _hasBuffer = typeof Buffer === 'function';
18
- const _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;
18
+ const _TD = typeof TextDecoder === 'function' ? new TextDecoder('utf-8', { ignoreBOM: true }) : undefined;
19
19
  const _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;
20
20
  const b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
21
21
  const b64chs = Array.prototype.slice.call(b64ch);
@@ -163,17 +163,24 @@ const atobPolyfill = (asc) => {
163
163
  if (!b64re.test(asc))
164
164
  throw new TypeError('malformed base64.');
165
165
  asc += '=='.slice(2 - (asc.length & 3));
166
- let u24, bin = '', r1, r2;
166
+ let u24, r1, r2;
167
+ let binArray = []; // use array to avoid minor gc in loop
167
168
  for (let i = 0; i < asc.length;) {
168
169
  u24 = b64tab[asc.charAt(i++)] << 18
169
170
  | b64tab[asc.charAt(i++)] << 12
170
171
  | (r1 = b64tab[asc.charAt(i++)]) << 6
171
172
  | (r2 = b64tab[asc.charAt(i++)]);
172
- bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)
173
- : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)
174
- : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);
173
+ if (r1 === 64) {
174
+ binArray.push(_fromCC(u24 >> 16 & 255));
175
+ }
176
+ else if (r2 === 64) {
177
+ binArray.push(_fromCC(u24 >> 16 & 255, u24 >> 8 & 255));
178
+ }
179
+ else {
180
+ binArray.push(_fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255));
181
+ }
175
182
  }
176
- return bin;
183
+ return binArray.join('');
177
184
  };
178
185
  /**
179
186
  * does what `window.atob` of web browsers do.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "js-base64",
3
- "version": "3.7.7",
3
+ "version": "3.8.0",
4
4
  "description": "Yet another Base64 transcoder in pure-JS",
5
5
  "main": "base64.js",
6
6
  "module": "base64.mjs",