Files
T

33 lines
1.0 KiB
TypeScript

import { base64alphabetSwapped } from '../../../../constants/Base64AlphabetSwapped';
/**
* This atob logic completely ignores padding characters
*
* @returns {string}
*/
export function AtobTemplate (): string {
return `
var {atobFunctionName} = function (input) {
const chars = '${base64alphabetSwapped}';
let output = '';
let tempEncodedString = '';
for (
let bc = 0, bs, buffer, idx = 0;
buffer = input.charAt(idx++);
~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
) {
buffer = chars.indexOf(buffer);
}
for (let k = 0, length = output.length; k < length; k++) {
tempEncodedString += '%' + ('00' + output.charCodeAt(k).toString(16)).slice(-2);
}
return decodeURIComponent(tempEncodedString);
};
`;
}