Skip to content
File

Blob: src/client/lib/friendly-name.ts

typescript150 lines
1const 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 
68const 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 
135function 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 
144export 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}