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