/** * KoalaSync Shared Name Generation & Emoji Mapping * * ⚠ïļ WARNING: This is the SINGLE SOURCE OF TRUTH. * If you edit this file, you MUST run: node scripts/build-extension.cjs * to propagate changes to the extension. * * The emoji map covers every animal/creature that has a Unicode emoji. * Entries are sorted by key length (longest first) at lookup time to * prevent substring false-matches (e.g. "caterpillar" must be checked * before "cat"). * * If you add a new animal noun to USERNAME_NOUNS, ensure it has a * corresponding entry in ANIMAL_EMOJI_MAP (or a substring that already * maps to a suitable emoji). */ export const USERNAME_ADJECTIVES = [ 'Happy', 'Cool', 'Fast', 'Smart', 'Brave', 'Calm', 'Sneaky', 'Lazy', 'Wild', 'Chill', 'Lucky', 'Epic', 'Swift', 'Bold', 'Mighty', 'Cosmic', 'Neon', 'Shadow', 'Crystal', 'Thunder', 'Silent', 'Golden', 'Fierce', 'Noble', 'Mystic', 'Frozen', 'Blazing', 'Sapphire', 'Iron', 'Crimson', 'Turbo', 'Zen', 'Pixel', 'Cyber', 'Solar', 'Lunar', 'Astro', 'Hyper', 'Steel', 'Rogue', 'Alpha', 'Omega', 'Royal', 'Nitro', 'Warp', 'Frost', ]; export const USERNAME_NOUNS = [ 'Koala', 'Panda', 'Tiger', 'Eagle', 'Fox', 'Bear', 'Wolf', 'Lion', 'Hawk', 'Seal', 'Owl', 'Shark', 'Dragon', 'Phoenix', 'Falcon', 'Panther', 'Raven', 'Cobra', 'Lynx', 'Jaguar', 'Orca', 'Mantis', 'Viper', 'Condor', 'Badger', 'Otter', 'Rhino', 'Crane', 'Mongoose', 'Specter', 'Cat', 'Dog', 'Deer', 'Bat', 'Gorilla', 'Monkey', 'Rabbit', 'Horse', 'Unicorn', 'Zebra', 'Leopard', 'Cheetah', 'Puma', 'Ram', 'Goat', 'Bull', 'Donkey', 'Moose', 'Elephant', 'Giraffe', 'Hippo', 'Sloth', 'Kangaroo', 'Raccoon', 'Hamster', 'Hedgehog', 'Skunk', 'Beaver', 'Bison', 'Camel', 'Llama', 'Hyena', 'Coyote', 'Mouse', 'Pig', 'Boar', 'Polar', 'Orangutan', 'Mammoth', 'Crow', 'Duck', 'Swan', 'Penguin', 'Parrot', 'Peacock', 'Dove', 'Dodo', 'Turkey', 'Flamingo', 'Chicken', 'Rooster', 'Goose', 'Dolphin', 'Whale', 'Crab', 'Lobster', 'Octopus', 'Opossum', 'Squid', 'Jellyfish', 'Turtle', 'Crocodile', 'Lizard', 'Snake', 'Frog', 'Toad', 'Gecko', 'Bee', 'Ant', 'Spider', 'Scorpion', 'Butterfly', 'Ladybug', 'Beetle', 'Snail', 'Dragonfly', 'Caterpillar', 'Alien', 'Robot', 'Mermaid', 'Ghoul', 'Sprite', 'Cyborg', 'Dinosaur', 'Reaper', 'Wraith', 'Sphinx', 'Yeti', 'Goblin', 'Pirate', 'Ninja', 'Samurai', 'Wizard', 'Knight', 'Bandit', 'Storm', 'Comet', 'Nebula', 'Quasar', 'Vortex', ]; export const ANIMAL_EMOJI_MAP = { 'hippopotamus': 'ðŸĶ›', 'rhinoceros': 'ðŸĶ', 'caterpillar': '🐛', 'chimpanzee': 'ðŸĩ', 'orangutan': 'ðŸĶ§', 'blackbird': 'ðŸĶ‍⮛', 'bumblebee': '🐝', 'cockatoo': 'ðŸĶœ', 'cockroach': 'ðŸŠģ', 'dragonfly': '🐉', 'grasshopper': 'ðŸĶ—', 'hedgehog': 'ðŸĶ”', 'jellyfish': '🊞', 'kangaroo': 'ðŸĶ˜', 'ladybird': '🐞', 'ladybug': '🐞', 'porcupine': 'ðŸĶ”', 'scorpion': 'ðŸĶ‚', 'tarantula': '🕷ïļ', 'alligator': '🐊', 'anaconda': '🐍', 'antelope': 'ðŸĶŒ', 'blowfish': 'ðŸĄ', 'butterfly': 'ðŸĶ‹', 'chameleon': 'ðŸĶŽ', 'chipmunk': 'ðŸŋïļ', 'crocodile': '🐊', 'dinosaur': 'ðŸĶ–', 'elephant': '🐘', 'flamingo': 'ðŸĶĐ', 'giraffe': 'ðŸĶ’', 'hamster': 'ðŸđ', 'leopard': '🐆', 'lobster': 'ðŸĶž', 'mermaid': '🧜‍♀ïļ', 'mongoose': 'ðŸĶĶ', 'mosquito': 'ðŸĶŸ', 'pangolin': 'ðŸĶ”', 'peacock': 'ðŸĶš', 'penguin': '🐧', 'phoenix': 'ðŸĶ‍ðŸ”Ĩ', 'raccoon': 'ðŸĶ', 'seahorse': 'ðŸī', 'sealion': 'ðŸĶ­', 'unicorn': 'ðŸĶ„', 'vampire': 'ðŸĶ‡', 'warthog': '🐗', 'wolverine': 'ðŸĶĄ', 'mammoth': 'ðŸĶĢ', 'meerkat': 'ðŸĶĶ', 'octopus': '🐙', 'opossum': '🐭', 'ostrich': 'ðŸĶ', 'panther': '🐆', 'pelican': 'ðŸĶĐ', 'rooster': '🐓', 'serpent': '🐍', 'specter': 'ðŸ‘ŧ', 'spectre': 'ðŸ‘ŧ', 'sparrow': 'ðŸĶ', 'spider': '🕷ïļ', 'sphinx': 'ðŸĶ', 'squirrel': 'ðŸŋïļ', 'stingray': 'ðŸĶˆ', 'termite': '🐜', 'tortoise': 'ðŸĒ', 'turkey': 'ðŸĶƒ', 'walrus': 'ðŸĶ­', 'wombat': 'ðŸĶĄ', 'woodpecker': 'ðŸĶ', 'alien': 'ðŸ‘ū', 'badger': 'ðŸĶĄ', 'beaver': 'ðŸĶŦ', 'beetle': 'ðŸŠē', 'beluga': '🐋', 'bison': 'ðŸĶŽ', 'bobcat': 'ðŸą', 'buffalo': 'ðŸĶŽ', 'bunny': '🐰', 'camel': '🐊', 'cheetah': '🐆', 'chicken': '🐔', 'cobra': '🐍', 'condor': 'ðŸĶ…', 'cougar': '🐆', 'coyote': '🐚', 'crane': 'ðŸĶĐ', 'cricket': 'ðŸĶ—', 'crow': 'ðŸĶ‍⮛', 'cyborg': 'ðŸĪ–', 'dolphin': '🐎', 'donkey': 'ðŸŦ', 'dragon': '🐉', 'drake': '🐉', 'eagle': 'ðŸĶ…', 'falcon': 'ðŸĶ…', 'ferret': 'ðŸĶĶ', 'gazelle': 'ðŸĶŒ', 'gecko': 'ðŸĶŽ', 'gerbil': 'ðŸđ', 'ghost': 'ðŸ‘ŧ', 'ghoul': 'ðŸ‘ŧ', 'goose': 'ðŸŠŋ', 'gopher': 'ðŸđ', 'gorilla': 'ðŸĶ', 'grizzly': 'ðŸŧ', 'heron': 'ðŸĶĐ', 'hippo': 'ðŸĶ›', 'hornet': '🐝', 'hyena': '🐚', 'iguana': 'ðŸĶŽ', 'jackal': '🐚', 'jaguar': '🐆', 'kitten': 'ðŸą', 'koala': 'ðŸĻ', 'lemur': '🐒', 'lizard': 'ðŸĶŽ', 'llama': 'ðŸĶ™', 'locust': 'ðŸĶ—', 'lynx': 'ðŸą', 'macaw': 'ðŸĶœ', 'mantis': 'ðŸĶ—', 'mink': 'ðŸĶĶ', 'monkey': 'ðŸĩ', 'moose': 'ðŸĶŒ', 'mouse': '🐭', 'orca': '🐋', 'otter': 'ðŸĶĶ', 'oyster': 'ðŸĶŠ', 'panda': '🐞', 'parrot': 'ðŸĶœ', 'pigeon': '🕊ïļ', 'polar': 'ðŸŧ‍❄ïļ', 'poodle': 'ðŸĐ', 'puffin': '🐧', 'puma': '🐆', 'rabbit': '🐰', 'raptor': 'ðŸĶ–', 'raven': 'ðŸĶ‍⮛', 'reaper': 'ðŸ‘ŧ', 'rhino': 'ðŸĶ', 'robin': 'ðŸĶ', 'robot': 'ðŸĪ–', 'salmon': '🐟', 'shrimp': 'ðŸĶ', 'skunk': 'ðŸĶĻ', 'sloth': 'ðŸĶĨ', 'snail': '🐌', 'snake': '🐍', 'sprite': '🧚', 'squid': 'ðŸĶ‘', 'swan': 'ðŸĶĒ', 'tapir': '🐗', 'tiger': 'ðŸŊ', 'toad': 'ðŸļ', 'trout': '🐟', 'tuna': '🐟', 'turtle': 'ðŸĒ', 'viper': '🐍', 'vulture': 'ðŸĶ…', 'weasel': 'ðŸĶĶ', 'whale': '🐋', 'wolf': '🐚', 'wraith': 'ðŸ‘ŧ', 'zebra': 'ðŸĶ“', 'ape': 'ðŸĶ', 'ant': '🐜', 'bat': 'ðŸĶ‡', 'bee': '🐝', 'bug': '🐛', 'cat': 'ðŸą', 'cow': 'ðŸŪ', 'crab': 'ðŸĶ€', 'dog': 'ðŸķ', 'duck': 'ðŸĶ†', 'elk': 'ðŸĶŒ', 'fly': '🊰', 'fox': 'ðŸĶŠ', 'frog': 'ðŸļ', 'goat': '🐐', 'hawk': 'ðŸĶ…', 'hen': '🐔', 'hog': '🐷', 'lion': 'ðŸĶ', 'mole': '🐭', 'moth': 'ðŸĶ‹', 'mule': 'ðŸŦ', 'owl': 'ðŸĶ‰', 'pig': '🐷', 'ram': '🐏', 'rat': '🐀', 'seal': 'ðŸĶ­', 'shark': 'ðŸĶˆ', 'wasp': '🐝', 'yak': '🐂', 'doe': 'ðŸĶŒ', 'ewe': '🐑', 'buck': 'ðŸĶŒ', 'ox': '🐂', 'bull': '🐂', 'dodo': 'ðŸĶĪ', 'boar': '🐗', 'bear': 'ðŸŧ', 'deer': 'ðŸĶŒ', 'dove': '🕊ïļ', 'fish': '🐟', 'hare': '🐰', 'horse': 'ðŸī', 'lamb': '🐑', 'mare': 'ðŸī', 'pony': 'ðŸī', 'pup': 'ðŸķ', 'croc': '🐊', 'gnat': 'ðŸĶŸ', 'gnu': 'ðŸĶŽ', 'yeti': 'ðŸĶ', 'goblin': '👚', 'pirate': 'ðŸī', 'ninja': 'ðŸĨ·', 'samurai': 'ðŸĨ·', 'wizard': '🧙', 'knight': '⚔ïļ', 'bandit': 'ðŸĶđ', 'storm': 'ðŸŒĐïļ', 'comet': '☄ïļ', 'nebula': '🌌', 'quasar': '🌟', 'vortex': '🌊ïļ', }; export function getAvatarForName(username) { if (!username) return '\u{1F464}'; const lower = username.toLowerCase(); const sorted = Object.entries(ANIMAL_EMOJI_MAP).sort((a, b) => b[0].length - a[0].length); for (const [key, emoji] of sorted) { if (lower.includes(key)) return emoji; } return '\u{1F464}'; } export function generateUsername() { const adj = USERNAME_ADJECTIVES[Math.floor(Math.random() * USERNAME_ADJECTIVES.length)]; const noun = USERNAME_NOUNS[Math.floor(Math.random() * USERNAME_NOUNS.length)]; return `${adj}${noun}`; }