@asoftwareworld/form-builder-pro
Version:
ASW Form Builder Pro helps you with rapid development and designed web forms which includes several controls. The key feature of Form Builder is to make your content attractive and effective. We can customize our control at run time and preview the same b
50 lines • 7.87 kB
JavaScript
import { ObjectUtils } from '@asoftwareworld/form-builder-pro/utils';
export class Base64Decode {
/**
* Returns a URL-safe plaintext decoded string from b64 encoded input.
*/
static decode(input) {
let encodedString = input.replace(/-/g, '+').replace(/_/g, '/');
switch (encodedString.length % 4) {
case 0:
break;
case 2:
encodedString += '==';
break;
case 3:
encodedString += '=';
break;
default:
throw new Error('Invalid base64 string');
}
const inputUtf8Arr = this.base64DecToArr(encodedString);
return ObjectUtils.utf8ArrToString(inputUtf8Arr);
}
/**
* Decodes base64 into Uint8Array
*/
static base64DecToArr(base64String, nBlockSize) {
const sB64Enc = base64String.replace(/[^A-Za-z0-9\+\/]/g, '');
const nInLen = sB64Enc.length;
const nOutLen = nBlockSize ? Math.ceil(((nInLen * 3 + 1) >>> 2) / nBlockSize) * nBlockSize : (nInLen * 3 + 1) >>> 2;
const aBytes = new Uint8Array(nOutLen);
for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {
nMod4 = nInIdx & 3;
nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (18 - 6 * nMod4);
if (nMod4 === 3 || nInLen - nInIdx === 1) {
for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {
aBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255;
}
nUint24 = 0;
}
}
return aBytes;
}
/**
* Base64 string to array decoding helper
*/
static b64ToUint6(charNum) {
return charNum > 64 && charNum < 91 ? charNum - 65 : charNum > 96 && charNum < 123 ? charNum - 71 : charNum > 47 && charNum < 58 ? charNum + 4 : charNum === 43 ? 62 : charNum === 47 ? 63 : 0;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0RGVjb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvY29yZS9saWNlbnNlL2VuY29kZS9iYXNlNjREZWNvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXJFLE1BQU0sT0FBTyxZQUFZO0lBQ3JCOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFhO1FBQ3ZCLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEUsUUFBUSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9CLEtBQUssQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxDQUFDO2dCQUNGLGFBQWEsSUFBSSxJQUFJLENBQUM7Z0JBQ3RCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsYUFBYSxJQUFJLEdBQUcsQ0FBQztnQkFDckIsTUFBTTtZQUNWO2dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxPQUFPLFdBQVcsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFvQixFQUFFLFVBQW1CO1FBQ25FLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BILE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXZDLEtBQUssSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUNyRixLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNuQixPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQzNFLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxLQUFLLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQ2pFLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUNoRSxDQUFDO2dCQUNELE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDaEIsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQWU7UUFDckMsT0FBTyxPQUFPLEdBQUcsRUFBRSxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25NLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAnQGFzb2Z0d2FyZXdvcmxkL2Zvcm0tYnVpbGRlci1wcm8vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQmFzZTY0RGVjb2RlIHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgVVJMLXNhZmUgcGxhaW50ZXh0IGRlY29kZWQgc3RyaW5nIGZyb20gYjY0IGVuY29kZWQgaW5wdXQuXG4gICAgICovXG4gICAgc3RhdGljIGRlY29kZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGVuY29kZWRTdHJpbmcgPSBpbnB1dC5yZXBsYWNlKC8tL2csICcrJykucmVwbGFjZSgvXy9nLCAnLycpO1xuICAgICAgICBzd2l0Y2ggKGVuY29kZWRTdHJpbmcubGVuZ3RoICUgNCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGVuY29kZWRTdHJpbmcgKz0gJz09JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICBlbmNvZGVkU3RyaW5nICs9ICc9JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJhc2U2NCBzdHJpbmcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlucHV0VXRmOEFyciA9IHRoaXMuYmFzZTY0RGVjVG9BcnIoZW5jb2RlZFN0cmluZyk7XG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy51dGY4QXJyVG9TdHJpbmcoaW5wdXRVdGY4QXJyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWNvZGVzIGJhc2U2NCBpbnRvIFVpbnQ4QXJyYXlcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBiYXNlNjREZWNUb0FycihiYXNlNjRTdHJpbmc6IHN0cmluZywgbkJsb2NrU2l6ZT86IG51bWJlcik6IFVpbnQ4QXJyYXkge1xuICAgICAgICBjb25zdCBzQjY0RW5jID0gYmFzZTY0U3RyaW5nLnJlcGxhY2UoL1teQS1aYS16MC05XFwrXFwvXS9nLCAnJyk7XG4gICAgICAgIGNvbnN0IG5JbkxlbiA9IHNCNjRFbmMubGVuZ3RoO1xuICAgICAgICBjb25zdCBuT3V0TGVuID0gbkJsb2NrU2l6ZSA/IE1hdGguY2VpbCgoKG5JbkxlbiAqIDMgKyAxKSA+Pj4gMikgLyBuQmxvY2tTaXplKSAqIG5CbG9ja1NpemUgOiAobkluTGVuICogMyArIDEpID4+PiAyO1xuICAgICAgICBjb25zdCBhQnl0ZXMgPSBuZXcgVWludDhBcnJheShuT3V0TGVuKTtcblxuICAgICAgICBmb3IgKGxldCBuTW9kMywgbk1vZDQsIG5VaW50MjQgPSAwLCBuT3V0SWR4ID0gMCwgbkluSWR4ID0gMDsgbkluSWR4IDwgbkluTGVuOyBuSW5JZHgrKykge1xuICAgICAgICAgICAgbk1vZDQgPSBuSW5JZHggJiAzO1xuICAgICAgICAgICAgblVpbnQyNCB8PSB0aGlzLmI2NFRvVWludDYoc0I2NEVuYy5jaGFyQ29kZUF0KG5JbklkeCkpIDw8ICgxOCAtIDYgKiBuTW9kNCk7XG4gICAgICAgICAgICBpZiAobk1vZDQgPT09IDMgfHwgbkluTGVuIC0gbkluSWR4ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgZm9yIChuTW9kMyA9IDA7IG5Nb2QzIDwgMyAmJiBuT3V0SWR4IDwgbk91dExlbjsgbk1vZDMrKywgbk91dElkeCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFCeXRlc1tuT3V0SWR4XSA9IChuVWludDI0ID4+PiAoKDE2ID4+PiBuTW9kMykgJiAyNCkpICYgMjU1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuVWludDI0ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhQnl0ZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmFzZTY0IHN0cmluZyB0byBhcnJheSBkZWNvZGluZyBoZWxwZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0YXRpYyBiNjRUb1VpbnQ2KGNoYXJOdW06IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBjaGFyTnVtID4gNjQgJiYgY2hhck51bSA8IDkxID8gY2hhck51bSAtIDY1IDogY2hhck51bSA+IDk2ICYmIGNoYXJOdW0gPCAxMjMgPyBjaGFyTnVtIC0gNzEgOiBjaGFyTnVtID4gNDcgJiYgY2hhck51bSA8IDU4ID8gY2hhck51bSArIDQgOiBjaGFyTnVtID09PSA0MyA/IDYyIDogY2hhck51bSA9PT0gNDcgPyA2MyA6IDA7XG4gICAgfVxufVxuIl19