normalizeEmail.js 642 B

1234567891011121314151617
  1. // copied from https://github.com/Quiet-Terminal-Interactive/QTIAuth/blob/main/src/lib.js
  2. export default (email) => {
  3. if (!email || !email?.match(/^[\w.!#$%&'*+/=?^`{|}~-]+@[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?(?:\.[a-z\d](?:[a-z\d-]{0,61}[a-z\d])?)*$/i)) return null;
  4. email = email.toLowerCase().trim();
  5. // Gmail ignores dots and everything after "+" in the local part.
  6. if (email.endsWith('@gmail.com')) {
  7. const [local] = email.split('@');
  8. const cleaned = local.replace(/\./g, '').split('+')[0];
  9. return `${cleaned}@gmail.com`;
  10. }
  11. const [local, domain] = email.split('@');
  12. return `${local.split('+')[0]}@${domain}`;
  13. }