12345678910111213141516171819202122232425262728293031323334353637 |
- import { encoder, decoder } from '../lib/buffer_utils.js';
- export const encodeBase64 = (input) => {
- let unencoded = input;
- if (typeof unencoded === 'string') {
- unencoded = encoder.encode(unencoded);
- }
- const CHUNK_SIZE = 0x8000;
- const arr = [];
- for (let i = 0; i < unencoded.length; i += CHUNK_SIZE) {
- arr.push(String.fromCharCode.apply(null, unencoded.subarray(i, i + CHUNK_SIZE)));
- }
- return btoa(arr.join(''));
- };
- export const encode = (input) => {
- return encodeBase64(input).replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
- };
- export const decodeBase64 = (encoded) => {
- const binary = atob(encoded);
- const bytes = new Uint8Array(binary.length);
- for (let i = 0; i < binary.length; i++) {
- bytes[i] = binary.charCodeAt(i);
- }
- return bytes;
- };
- export const decode = (input) => {
- let encoded = input;
- if (encoded instanceof Uint8Array) {
- encoded = decoder.decode(encoded);
- }
- encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\s/g, '');
- try {
- return decodeBase64(encoded);
- }
- catch (_a) {
- throw new TypeError('The input to be decoded is not correctly encoded.');
- }
- };
|