SHA256
32 lines
1.2 KiB
JavaScript
32 lines
1.2 KiB
JavaScript
import { TWEMOJI_GROUPS } from './js/components/twemoji-catalog.js?diagnostic=202607151545';
|
|
|
|
const items = TWEMOJI_GROUPS.flatMap((group) =>
|
|
group.items.map((item) => ({ ...item, category: group.id })),
|
|
);
|
|
|
|
function duplicateValues(key) {
|
|
return Object.entries(
|
|
items.reduce((groups, item) => {
|
|
const value = item[key];
|
|
(groups[value] ||= []).push(item.file);
|
|
return groups;
|
|
}, {}),
|
|
)
|
|
.filter(([, files]) => files.length > 1)
|
|
.map(([value, files]) => ({ value, files }));
|
|
}
|
|
|
|
const missing = items
|
|
.filter((item) => !item.emoji || !item.file || !item.name || !item.category || !item.previewUrl || !item.animatedUrl)
|
|
.map((item) => ({ file: item.file, missing: ['emoji', 'file', 'name', 'category', 'previewUrl', 'animatedUrl'].filter((field) => !item[field]) }));
|
|
|
|
console.log(JSON.stringify({
|
|
categories: TWEMOJI_GROUPS.map((group) => ({ id: group.id, label: group.label, count: group.items.length })),
|
|
total: items.length,
|
|
uniqueUnicode: new Set(items.map((item) => item.emoji)).size,
|
|
uniqueUrl: new Set(items.map((item) => item.file)).size,
|
|
duplicateUnicode: duplicateValues('emoji'),
|
|
duplicateUrl: duplicateValues('file'),
|
|
missing,
|
|
}, null, 2));
|