UNPKG

@dioxide-js/silas

Version:

RPC utility for Silas

67 lines (53 loc) 1.55 kB
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