AtobTemplate.ts 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. import { base64alphabetSwapped } from '../../../../constants/Base64AlphabetSwapped';
  2. /**
  3. * This atob logic completely ignores padding characters
  4. *
  5. * @returns {string}
  6. */
  7. export function AtobTemplate (): string {
  8. return `
  9. var {atobFunctionName} = function (input) {
  10. const chars = '${base64alphabetSwapped}';
  11. let output = '';
  12. let tempEncodedString = '';
  13. for (
  14. let bc = 0, bs, buffer, idx = 0;
  15. buffer = input.charAt(idx++);
  16. ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
  17. bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
  18. ) {
  19. buffer = chars.indexOf(buffer);
  20. }
  21. for (let k = 0, length = output.length; k < length; k++) {
  22. tempEncodedString += '%' + ('00' + output.charCodeAt(k).toString(16)).slice(-2);
  23. }
  24. return decodeURIComponent(tempEncodedString);
  25. };
  26. `;
  27. }