// Regenerates the emoji test fixture (packages/message-parser/tests/fixtures/allEmoji.ts) from // emojibase-data — the canonical set the coverage test parses. Snapshot: rerun after bumping the // dependency. Run: node scripts/emoji/generateEmojiFixture.mjs import { writeFileSync } from 'node:fs'; import { createRequire } from 'node:module'; const require = createRequire(import.meta.url); const data = require('emojibase-data/en/data.json'); const { version } = require('emojibase-data/package.json'); // Every base emoji + skin-tone variant, de-duplicated. const set = new Set(); for (const e of data) { if (e.emoji) { set.add(e.emoji); } for (const s of e.skins ?? []) { if (s.emoji) { set.add(s.emoji); } } } const emojis = [...set]; // One space-separated string split at runtime — a single compact line, not thousands. No emoji // contains a space, and prettier-ignore keeps it off Prettier's long-line wrapping. const out = `// Auto-generated by scripts/emoji/generateEmojiFixture.mjs — do not edit by hand. // Full emoji set from emojibase-data@${version} (${emojis.length} entries: base + skin-tone variants). // Regenerate after bumping emojibase-data: node scripts/emoji/generateEmojiFixture.mjs export const EMOJIBASE_VERSION = '${version}'; // prettier-ignore export const ALL_EMOJI: readonly string[] = '${emojis.join(' ')}'.split(' '); `; const target = new URL('../../packages/message-parser/tests/fixtures/allEmoji.ts', import.meta.url); writeFileSync(target, out); console.log(`Wrote ${emojis.length} emojis (emojibase-data@${version}) to ${target.pathname}`);