1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.createToBase64BinUint8 = void 0;
- const constants_1 = require("./constants");
- const createToBase64BinUint8 = (chars = constants_1.alphabet, pad = '=') => {
- if (chars.length !== 64)
- throw new Error('chars must be 64 characters long');
- const table = chars.split('').map((c) => c.charCodeAt(0));
- const table2 = [];
- for (const c1 of table) {
- for (const c2 of table) {
- const two = (c1 << 8) + c2;
- table2.push(two);
- }
- }
- const PAD = pad.length === 1 ? pad.charCodeAt(0) : 0;
- return (uint8, start, length, dest, offset) => {
- const extraLength = length % 3;
- const baseLength = length - extraLength;
- for (; start < baseLength; start += 3) {
- const o1 = uint8[start];
- const o2 = uint8[start + 1];
- const o3 = uint8[start + 2];
- const v1 = (o1 << 4) | (o2 >> 4);
- const v2 = ((o2 & 0b1111) << 8) | o3;
- let u16 = table2[v1];
- dest[offset++] = u16 >> 8;
- dest[offset++] = u16;
- u16 = table2[v2];
- dest[offset++] = u16 >> 8;
- dest[offset++] = u16;
- }
- if (extraLength === 1) {
- const o1 = uint8[baseLength];
- const u16 = table2[o1 << 4];
- dest[offset++] = u16 >> 8;
- dest[offset++] = u16;
- if (PAD) {
- dest[offset++] = PAD;
- dest[offset++] = PAD;
- }
- }
- else if (extraLength) {
- const o1 = uint8[baseLength];
- const o2 = uint8[baseLength + 1];
- const v1 = (o1 << 4) | (o2 >> 4);
- const v2 = (o2 & 0b1111) << 2;
- const u16 = table2[v1];
- dest[offset++] = u16 >> 8;
- dest[offset++] = u16;
- dest[offset++] = table[v2];
- if (PAD)
- dest[offset++] = PAD;
- }
- return offset;
- };
- };
- exports.createToBase64BinUint8 = createToBase64BinUint8;
- //# sourceMappingURL=createToBase64BinUint8.js.map
|