caniemail
Version:
HTML and CSS Feature Support for Email Clients from caniemail.com
59 lines • 1.81 kB
JavaScript
import micromatch from 'micromatch';
export const clientNames = [
'apple-mail.macos',
'apple-mail.ios',
'gmail.desktop-webmail',
'gmail.ios',
'gmail.android',
'gmail.mobile-webmail',
'orange.desktop-webmail',
'orange.ios',
'orange.android',
'outlook.windows',
'outlook.windows-mail',
'outlook.macos',
'outlook.ios',
'outlook.android',
'yahoo.desktop-webmail',
'yahoo.ios',
'yahoo.android',
'aol.desktop-webmail',
'aol.ios',
'aol.android',
'samsung-email.android',
'sfr.desktop-webmail',
'sfr.ios',
'sfr.android',
'thunderbird.macos',
'protonmail.desktop-webmail',
'protonmail.ios',
'protonmail.android',
'hey.desktop-webmail',
'mail-ru.desktop-webmail',
'fastmail.desktop-webmail',
'laposte.desktop-webmail'
];
export const parseClients = (globs) => Array.from(new Set(micromatch(clientNames, globs)));
export function getSupportType(stats) {
const statKeys = Object.keys(stats).sort((k1, k2) => {
if (k1 < k2)
return -1;
else if (k1 > k2)
return 1;
return 0;
});
// TODO: option to specify specific version, right now, it defaults to latest
const latestEmailClient = statKeys[statKeys.length - 1];
const supportStatus = stats[latestEmailClient];
let noteNumbers = [...supportStatus.matchAll(/#(\d+)/g)]
.map((matches) => matches[1])
.map((noteNumber) => Number(noteNumber));
if (noteNumbers.length === 0)
noteNumbers = void 0;
if (supportStatus.startsWith('y'))
return { noteNumbers, type: 'full' };
else if (supportStatus.startsWith('n'))
return { noteNumbers, type: 'none' };
return { noteNumbers, type: 'partial' };
}
//# sourceMappingURL=clients.js.map