UNPKG

@dioxide-js/silas

Version:

RPC utility for Silas

71 lines (57 loc) 1.67 kB
import { __require as requireToDataView } from '../to-data-view/index.mjs'; var base32Encode; var hasRequiredBase32Encode; function requireBase32Encode () { if (hasRequiredBase32Encode) return base32Encode; hasRequiredBase32Encode = 1; var toDataView = requireToDataView(); var RFC4648 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'; var RFC4648_HEX = '0123456789ABCDEFGHIJKLMNOPQRSTUV'; var CROCKFORD = '0123456789ABCDEFGHJKMNPQRSTVWXYZ'; base32Encode = function base32Encode (data, variant, options) { options = options || {}; var alphabet, defaultPadding; switch (variant) { case 'RFC3548': case 'RFC4648': alphabet = RFC4648; defaultPadding = true; break case 'RFC4648-HEX': alphabet = RFC4648_HEX; defaultPadding = true; break case 'Crockford': alphabet = CROCKFORD; defaultPadding = false; break default: throw new Error('Unknown base32 variant: ' + variant) } var padding = (options.padding !== undefined ? options.padding : defaultPadding); var view = toDataView(data); var bits = 0; var value = 0; var output = ''; for (var i = 0; i < view.byteLength; i++) { value = (value << 8) | view.getUint8(i); bits += 8; while (bits >= 5) { output += alphabet[(value >>> (bits - 5)) & 31]; bits -= 5; } } if (bits > 0) { output += alphabet[(value << (5 - bits)) & 31]; } if (padding) { while ((output.length % 8) !== 0) { output += '='; } } return output }; return base32Encode; } export { requireBase32Encode as __require }; //# sourceMappingURL=index.mjs.map