File
Blob: src/client/lib/friendly-name.ts
| 1 | const ADJECTIVES = [ |
| 2 | "Hype", |
| 3 | "Breezy", |
| 4 | "Plucky", |
| 5 | "Sunny", |
| 6 | "Clever", |
| 7 | "Jolly", |
| 8 | "Witty", |
| 9 | "Mellow", |
| 10 | "Swift", |
| 11 | "Peppy", |
| 12 | "Zesty", |
| 13 | "Cozy", |
| 14 | "Nimble", |
| 15 | "Spry", |
| 16 | "Feisty", |
| 17 | "Dapper", |
| 18 | "Snappy", |
| 19 | "Wacky", |
| 20 | "Chirpy", |
| 21 | "Bubbly", |
| 22 | "Quirky", |
| 23 | "Jazzy", |
| 24 | "Cheery", |
| 25 | "Dreamy", |
| 26 | "Nifty", |
| 27 | "Groovy", |
| 28 | "Lively", |
| 29 | "Merry", |
| 30 | "Giddy", |
| 31 | "Eager", |
| 32 | "Happy", |
| 33 | "Bold", |
| 34 | "Brave", |
| 35 | "Calm", |
| 36 | "Crafty", |
| 37 | "Fancy", |
| 38 | "Glad", |
| 39 | "Heroic", |
| 40 | "Kind", |
| 41 | "Keen", |
| 42 | "Lucky", |
| 43 | "Loyal", |
| 44 | "Neat", |
| 45 | "Noble", |
| 46 | "Proud", |
| 47 | "Quick", |
| 48 | "Sharp", |
| 49 | "Sleek", |
| 50 | "Smart", |
| 51 | "Spiffy", |
| 52 | "Snug", |
| 53 | "Tidy", |
| 54 | "Warm", |
| 55 | "Wise", |
| 56 | "Zany", |
| 57 | "Bright", |
| 58 | "Sparky", |
| 59 | "Fresh", |
| 60 | "Curious", |
| 61 | "Sturdy", |
| 62 | "Hearty", |
| 63 | "Glossy", |
| 64 | "Jaunty", |
| 65 | "Sprightly", |
| 66 | ]; |
| 67 | |
| 68 | const NOUNS = [ |
| 69 | "Carrot", |
| 70 | "Sparrow", |
| 71 | "Teacup", |
| 72 | "Lantern", |
| 73 | "Otter", |
| 74 | "Pebble", |
| 75 | "Bagel", |
| 76 | "Pickle", |
| 77 | "Rabbit", |
| 78 | "Goose", |
| 79 | "Turnip", |
| 80 | "Panda", |
| 81 | "Wombat", |
| 82 | "Acorn", |
| 83 | "Walnut", |
| 84 | "Badger", |
| 85 | "Biscuit", |
| 86 | "Koala", |
| 87 | "Raccoon", |
| 88 | "Puffin", |
| 89 | "Pigeon", |
| 90 | "Muffin", |
| 91 | "Donut", |
| 92 | "Scooter", |
| 93 | "Dumpling", |
| 94 | "Cactus", |
| 95 | "Walrus", |
| 96 | "Hedgehog", |
| 97 | "Tuba", |
| 98 | "Cricket", |
| 99 | "Jellybean", |
| 100 | "Radish", |
| 101 | "Parsnip", |
| 102 | "Taco", |
| 103 | "Burrito", |
| 104 | "Pretzel", |
| 105 | "Marble", |
| 106 | "Penny", |
| 107 | "Rocket", |
| 108 | "Tornado", |
| 109 | "Banjo", |
| 110 | "Kazoo", |
| 111 | "Pinecone", |
| 112 | "Mango", |
| 113 | "Lemur", |
| 114 | "Toucan", |
| 115 | "Gecko", |
| 116 | "Fennec", |
| 117 | "Meerkat", |
| 118 | "Armadillo", |
| 119 | "Platypus", |
| 120 | "Llama", |
| 121 | "Alpaca", |
| 122 | "Capybara", |
| 123 | "Axolotl", |
| 124 | "Chinchilla", |
| 125 | "Iguana", |
| 126 | "Hornet", |
| 127 | "Beetle", |
| 128 | "Ferret", |
| 129 | "Narwhal", |
| 130 | "Quokka", |
| 131 | "Starling", |
| 132 | "Yak", |
| 133 | ]; |
| 134 | |
| 135 | function fnv1a(seed: string): number { |
| 136 | let hash = 0x811c9dc5; |
| 137 | for (let i = 0; i < seed.length; i++) { |
| 138 | hash ^= seed.charCodeAt(i); |
| 139 | hash = Math.imul(hash, 0x01000193); |
| 140 | } |
| 141 | return hash >>> 0; |
| 142 | } |
| 143 | |
| 144 | export function friendlyName(seed: string): string { |
| 145 | const hash = fnv1a(seed); |
| 146 | const adjective = ADJECTIVES[hash & 63]; |
| 147 | const noun = NOUNS[(hash >>> 6) & 63]; |
| 148 | return `${adjective} ${noun}`; |
| 149 | } |