@dioxide-js/silas
Version:
RPC utility for Silas
67 lines (53 loc) • 1.55 kB
JavaScript
var base32Decode;
var hasRequiredBase32Decode;
function requireBase32Decode () {
if (hasRequiredBase32Decode) return base32Decode;
hasRequiredBase32Decode = 1;
var RFC4648 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
var RFC4648_HEX = '0123456789ABCDEFGHIJKLMNOPQRSTUV';
var CROCKFORD = '0123456789ABCDEFGHJKMNPQRSTVWXYZ';
function readChar (alphabet, char) {
var idx = alphabet.indexOf(char);
if (idx === -1) {
throw new Error('Invalid character found: ' + char)
}
return idx
}
base32Decode = function base32Decode (input, variant) {
var alphabet;
switch (variant) {
case 'RFC3548':
case 'RFC4648':
alphabet = RFC4648;
input = input.replace(/=+$/, '');
break
case 'RFC4648-HEX':
alphabet = RFC4648_HEX;
input = input.replace(/=+$/, '');
break
case 'Crockford':
alphabet = CROCKFORD;
input = input.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1');
break
default:
throw new Error('Unknown base32 variant: ' + variant)
}
var length = input.length;
var bits = 0;
var value = 0;
var index = 0;
var output = new Uint8Array((length * 5 / 8) | 0);
for (var i = 0; i < length; i++) {
value = (value << 5) | readChar(alphabet, input[i]);
bits += 5;
if (bits >= 8) {
output[index++] = (value >>> (bits - 8)) & 255;
bits -= 8;
}
}
return output.buffer
};
return base32Decode;
}
export { requireBase32Decode as __require };
//# sourceMappingURL=index.mjs.map