@dioxide-js/silas
Version:
RPC utility for Silas
71 lines (57 loc) • 1.67 kB
JavaScript
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