import { TELEGRAM_EMOJI_GROUPS } from './js/components/telegram-emoji-catalog.js?diagnostic=202607151545'; const items = TELEGRAM_EMOJI_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: TELEGRAM_EMOJI_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));