import { encoder, decoder } from '../lib/buffer_utils.js'; import { encodeBase64, decodeBase64 } from '../lib/base64.js'; export function decode(input) { if (Uint8Array.fromBase64) { return Uint8Array.fromBase64(typeof input === 'string' ? input : decoder.decode(input), { alphabet: 'base64url', }); } 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 { throw new TypeError('The input to be decoded is not correctly encoded.'); } } export function encode(input) { let unencoded = input; if (typeof unencoded === 'string') { unencoded = encoder.encode(unencoded); } if (Uint8Array.prototype.toBase64) { return unencoded.toBase64({ alphabet: 'base64url', omitPadding: true }); } return encodeBase64(unencoded).replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_'); }