CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
createFromBase64Bin.js87 linesDownload Raw Back to lib
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
basant307/AI_Governance_Project · CoolFace