basant307/AI_Governance_Project
048
1"use strict";2Object.defineProperty(exports, "__esModule", { value: true });3exports.createFromBase64Bin = void 0;4const constants_1 = require("./constants");5const createFromBase64Bin = (chars = constants_1.alphabet, pad = '=') => {6 if (chars.length !== 64)7 throw new Error('chars must be 64 characters long');8 let max = 0;9 for (let i = 0; i < chars.length; i++)10 max = Math.max(max, chars.charCodeAt(i));11 const table = [];12 for (let i = 0; i <= max; i += 1)13 table[i] = -1;14 for (let i = 0; i < chars.length; i++)15 table[chars.charCodeAt(i)] = i;16 const doExpectPadding = pad.length === 1;17 const PAD = doExpectPadding ? pad.charCodeAt(0) : 0;18 return (view, offset, length) => {19 if (!length)20 return new Uint8Array(0);21 let padding = 0;22 if (length % 4 !== 0) {23 padding = 4 - (length % 4);24 length += padding;25 }26 else {27 const end = offset + length;28 const last = end - 1;29 if (view.getUint8(last) === PAD) {30 padding = 1;31 if (length > 1 && view.getUint8(last - 1) === PAD)32 padding = 2;33 }34 }35 if (length % 4 !== 0)36 throw new Error('Base64 string length must be a multiple of 4');37 const mainEnd = offset + length - (padding ? 4 : 0);38 const bufferLength = (length >> 2) * 3 - padding;39 const buf = new Uint8Array(bufferLength);40 let j = 0;41 let i = offset;42 for (; i < mainEnd; i += 4) {43 const word = view.getUint32(i);44 const octet0 = word >>> 24;45 const octet1 = (word >>> 16) & 0xff;46 const octet2 = (word >>> 8) & 0xff;47 const octet3 = word & 0xff;48 const sextet0 = table[octet0];49 const sextet1 = table[octet1];50 const sextet2 = table[octet2];51 const sextet3 = table[octet3];52 if (sextet0 < 0 || sextet1 < 0 || sextet2 < 0 || sextet3 < 0)53 throw new Error('INVALID_BASE64_SEQ');54 buf[j] = (sextet0 << 2) | (sextet1 >> 4);55 buf[j + 1] = (sextet1 << 4) | (sextet2 >> 2);56 buf[j + 2] = (sextet2 << 6) | sextet3;57 j += 3;58 }59 if (!padding)60 return buf;61 if (padding === 1) {62 const word = view.getUint16(mainEnd);63 const octet0 = word >> 8;64 const octet1 = word & 0xff;65 const octet2 = view.getUint8(mainEnd + 2);66 const sextet0 = table[octet0];67 const sextet1 = table[octet1];68 const sextet2 = table[octet2];69 if (sextet0 < 0 || sextet1 < 0 || sextet2 < 0)70 throw new Error('INVALID_BASE64_SEQ');71 buf[j] = (sextet0 << 2) | (sextet1 >> 4);72 buf[j + 1] = (sextet1 << 4) | (sextet2 >> 2);73 return buf;74 }75 const word = view.getUint16(mainEnd);76 const octet0 = word >> 8;77 const octet1 = word & 0xff;78 const sextet0 = table[octet0];79 const sextet1 = table[octet1];80 if (sextet0 < 0 || sextet1 < 0)81 throw new Error('INVALID_BASE64_SEQ');82 buf[j] = (sextet0 << 2) | (sextet1 >> 4);83 return buf;84 };85};86exports.createFromBase64Bin = createFromBase64Bin;87//# sourceMappingURL=createFromBase64Bin.js.map