@twardoch/namzy 1.0.19 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/wordlist.js CHANGED
@@ -1,174 +1,202 @@
1
- // Geographic names (A-Za-z only, no diacritics). Shared across all implementations.
2
- export const GEO = [
3
- "tokyo", "paris", "oslo", "berlin", "lagos", "lima",
4
- "boston", "vienna", "cairo", "kyoto", "dubai", "seoul",
5
- "milan", "tunis", "perth", "genoa", "porto", "bruges",
6
- "ghent", "brest", "ashford", "sofia", "riga", "lyon",
7
- "basel", "natal", "recife", "darwin", "hobart", "ashbury",
8
- "varna", "split", "kotor", "tirana", "skopje", "bitola",
9
- "plovdiv", "gabrovo", "ruse", "delhi", "rome", "athens",
10
- "nairobi", "bali", "havana", "lisbon", "bogota", "dakar",
11
- "quito", "vilnius", "vaduz", "bern", "accra", "kigali",
12
- "abuja", "bamako", "niamey", "lome", "prague", "dublin",
13
- "naples", "tulum", "tbilisi", "yerevan", "astana", "lusaka",
14
- "harare", "asmara", "manaus", "cuenca", "merida", "geneva",
15
- "zurich", "venice", "sydney", "denver", "austin", "phoenix",
16
- "tucson", "reno", "boise", "fargo", "tulsa", "tampa",
17
- "miami", "salem", "dover", "trenton", "helena", "juneau",
18
- "topeka", "albany", "amsterdam", "antwerp", "arusha", "aspen",
19
- "atlanta", "auckland", "baku", "bangkok", "barcelona", "ashgrove",
20
- "ashfield", "bergen", "bilbao", "bordeaux", "braga", "brisbane",
21
- "bristol", "brussels", "bucharest", "budapest", "calgary", "canberra",
22
- "cardiff", "casablanca", "chicago", "cologne", "colombo", "copenhagen",
23
- "cork", "dresden", "durban", "edinburgh", "florence", "frankfurt",
24
- "gdansk", "glasgow", "granada", "guangzhou", "hamburg", "hanoi",
25
- "helsinki", "houston", "jakarta", "krakow", "leipzig", "lille",
26
- "london", "luanda", "lucerne", "madrid", "malaga", "manila",
27
- "marrakesh", "marseille", "melbourne", "memphis", "montreal", "munich",
28
- "nagoya", "nantes", "napier", "nashville", "orlando", "osaka",
29
- "ottawa", "palermo", "panama", "phuket", "pisa", "poznan",
30
- "quebec", "reykjavik", "rotterdam", "sapporo", "sevilla", "shanghai",
31
- "stockholm", "suzhou", "swansea", "bayfield", "tallinn", "tangier",
32
- "thimphu", "toronto", "toulouse", "trieste", "valencia", "vancouver",
33
- "verona", "warsaw", "winnipeg", "wroclaw", "zagreb", "aarhus",
34
- "abidjan", "adelaide", "alger", "annaba", "ankara", "antalya",
35
- "arezzo", "asuncion", "avignon", "baltimore", "banjul", "belem",
36
- "bologna", "bremen", "cancun", "caracas", "cartagena", "catania",
37
- "charlotte", "chennai", "chiangmai", "cleveland", "cordoba", "curitiba",
38
- "cusco", "dallas", "dundee", "espoo", "fez", "freetown",
39
- "fukuoka", "funchal", "gothenburg", "guayaquil", "bayport", "halifax",
40
- "hamilton", "honolulu", "ibadan", "innsbruck", "izmir", "jaipur",
41
- "kampala", "kansas", "kathmandu", "kingston", "kinshasa", "koblenz",
42
- "kortrijk", "lahti", "lausanne", "leeds", "leuven", "liege",
43
- "liverpool", "ljubljana", "lodz", "luxor", "bayview", "madison",
44
- "malmo", "manchester", "mandalay", "maputo", "mendoza", "monterrey",
45
- "montevideo", "noumea", "nuremberg", "okinawa", "omaha", "padua",
46
- "penang", "portland", "pretoria", "rabat", "raleigh", "rennes",
47
- "richmond", "salzburg", "samarkand", "santander", "santiago", "sendai",
48
- "singapore", "skagen", "stavanger", "stuttgart", "surabaya", "suva",
49
- "tampere", "taranto", "tarragona", "tiruchirappalli", "trondheim", "utrecht",
50
- "valletta", "victoria", "vigo", "bergenfield", "bellevue", "bloomington",
51
- "boulder", "bozeman", "bradford", "brighton", "brookline", "cambridge",
52
- "carmel", "carson", "cedarpark", "chandler", "chico", "claremont",
53
- "clearwater", "concord", "corvallis", "dayton", "decatur", "denton",
54
- "duluth", "durham", "eugene", "everett", "fairbanks", "fairfield",
55
- "flagstaff", "fremont", "fresno", "frisco", "gainesville", "garland",
56
- "gilbert", "grandrapids", "greensboro", "greenville", "hartford", "hayward",
57
- "henderson", "holland", "irvine", "ithaca", "lancaster", "lansing",
58
- "lincoln", "lowell", "madisonville", "marion", "mesa", "miamibeach",
59
- "midland", "milford", "mobile", "modesto", "monterey", "moreno",
60
- "naperville", "newark", "newhaven", "newport", "norfolk", "norman",
61
- "oakland", "oceanside", "olympia", "orleans", "pasadena", "peoria",
62
- "plano", "pocatello", "pueblo", "redmond", "riverside", "rochester",
63
- "rockford", "roseville", "sacramento", "savannah", "scottsdale", "somerville",
64
- "spokane", "springfield", "stockton", "tacoma", "tempe", "torrance",
65
- "tuscaloosa", "waco", "waterloo", "westport", "wichita", "wilmington",
66
- "worcester", "yonkers", "york", "abilene", "akron", "annapolis",
67
- "appleton", "arlington", "ashland", "atherton", "auburn", "bakersfield",
68
- "bayonne", "benicia", "berkeley", "billings", "bloomfield", "bluffton",
69
- "boca", "bradenton", "brentwood", "burlington", "camden", "canton",
70
- "carlisle", "cheyenne", "chicopee", "clifton", "columbia", "columbus",
71
- "conway", "cranston", "davis", "daytona", "deland", "dentonville",
72
- "desmoines", "elgin", "elizabeth", "elkhart", "elmira", "erie",
73
- "eureka", "evansville", "everglades", "fallsburg", "fayetteville", "flint",
74
- "florissant", "fortwayne", "frederick", "fredericksburg", "gastonia", "georgetown",
75
- "glendale", "grandforks", "greenbay", "haverhill", "highpoint", "hollywood",
76
- "huntington", "huntsville", "independence", "jackson", "jacksonville", "joliet",
77
- "kenosha", "kettering", "knoxville", "laredo", "lawrence", "lexington",
78
- "livermore", "longmont", "lubbock", "macon", "malibu", "medford",
79
- "merced", "mesquite", "missoula", "moline", "murfreesboro", "napa",
80
- "newton", "niagara", "norwalk", "ocala", "ogden", "ontario",
81
- "orange", "oshkosh", "owensboro", "palmcoast", "pensacola", "pomona",
82
- "providence", "provo", "quincy", "racine", "redding", "renton",
83
- "roanoke", "rockville", "roswell", "roundrock", "salinas", "sanjose",
84
- "sanmateo", "santaana", "santafe", "santarosa", "sarasota", "schaumburg",
85
- "shreveport", "siouxcity", "southbend", "stcloud", "stillwater", "sunnyvale",
86
- "syracuse", "baywood",
1
+ // this_file: src/wordlist.ts
2
+ // AUTO-GENERATED by scripts/generate_data.py. Do not edit.
3
+ export const STEMS = [
4
+ "paris", "tokyo", "milan", "rome", "oslo", "lima", "baku", "doha",
5
+ "kiev", "riga", "sofia", "kabul", "dakar", "cairo", "accra", "perth",
6
+ "miami", "boston", "dallas", "denver", "vegas", "omaha", "tulsa", "fargo",
7
+ "salem", "mobile", "tucson", "ottawa", "calgary", "dover", "leeds", "york",
8
+ "derby", "oxford", "bristol", "cardiff", "bath", "hull", "kent", "devon",
9
+ "essex", "berlin", "munich", "bremen", "bonn", "jena", "mainz", "madrid",
10
+ "sevilla", "malaga", "bilbao", "toledo", "oviedo", "lisbon", "porto", "faro",
11
+ "evora", "braga", "athens", "sparta", "rhodes", "crete", "naxos", "delos",
12
+ "rabat", "tangier", "oran", "tunis", "sana", "mecca", "jeddah", "aden",
13
+ "dubai", "manama", "beirut", "amman", "aleppo", "mosul", "basra", "shiraz",
14
+ "tabriz", "herat", "lahore", "dhaka", "mumbai", "delhi", "jaipur", "agra",
15
+ "chennai", "pune", "surat", "bhopal", "indore", "nagpur", "patna", "kandy",
16
+ "galle", "lhasa", "hanoi", "manila", "cebu", "davao", "jakarta", "bandung",
17
+ "medan", "penang", "melaka", "beijing", "wuhan", "harbin", "chengdu", "ningbo",
18
+ "xian", "dalian", "taipei", "seoul", "busan", "daegu", "sapporo", "sendai",
19
+ "nagoya", "kobe", "niigata", "sydney", "hobart", "darwin", "cairns", "mackay",
20
+ "alice", "auckland", "nelson", "napier", "cuzco", "quito", "bogota", "cali",
21
+ "caracas", "recife", "manaus", "natal", "asuncion", "santiago", "rosario", "havana",
22
+ "nassau", "panama", "leon", "merida", "oaxaca", "puebla", "cancun", "austin",
23
+ "houston", "phoenix", "fresno", "oakland", "raleigh", "durham", "nashville", "eugene",
24
+ "boise", "reno", "juneau", "wichita", "topeka", "lincoln", "helena", "pierre",
25
+ "dublin", "galway", "cork", "bergen", "tromso", "aarhus", "malmo", "turku",
26
+ "tampere", "kazan", "samara", "tomsk", "omsk", "perm", "minsk", "vilnius",
27
+ "tallinn", "warsaw", "krakow", "brno", "linz", "graz", "salzburg", "basel",
28
+ "geneva", "lyon", "nantes", "nice", "dijon", "reims", "lille", "rouen",
29
+ "nile", "amazon", "volga", "rhine", "danube", "seine", "thames", "tiber",
30
+ "tigris", "ganges", "indus", "mekong", "yukon", "hudson", "congo", "niger",
31
+ "zambezi", "orinoco", "parana", "douro", "tagus", "ebro", "loire", "elbe",
32
+ "oder", "vistula", "dnieper", "don", "ural", "lena", "ob", "amur",
33
+ "yangtze", "huang", "chao", "brahma", "yamuna", "kaveri", "jordan", "euphrates",
34
+ "orange", "limpopo", "senegal", "gambia", "okavango", "murray", "darling", "colorado",
35
+ "snake", "platte", "ohio", "missouri", "illinois", "arkansas", "red", "brazos",
36
+ "pecos", "rio", "gila", "salmon", "willamette", "sacramento", "klamath", "fraser",
37
+ "churchill", "peace", "mackenzie", "liard", "skeena", "thompson", "saskatchewan", "athabasca",
38
+ "saint", "lawrence", "saguenay", "copper", "kobuk", "noatak", "yampa", "green",
39
+ "roanoke", "savannah", "neuse", "cape", "pearl", "alabama", "tombigbee", "chattahoochee",
40
+ "suwannee", "santee", "broad", "oconee", "black", "tar", "peedee", "yadkin",
41
+ "catawba", "cumberland", "tennessee", "kanawha", "shenandoah", "james", "potomac", "susquehanna",
42
+ "delaware", "connecticut", "penobscot", "kennebec", "androscoggin", "merrimack", "housatonic", "genesee",
43
+ "mohawk", "oswego", "niagara", "maumee", "wabash", "cuyahoga", "muskingum", "scioto",
44
+ "licking", "barren", "rock", "fox", "sangamon", "iowa", "cedar", "des",
45
+ "moines", "wapsipinicon", "skunk", "chariton", "grand", "gasconade", "meramec", "current",
46
+ "eleven", "white", "cache", "buffalo", "neosho", "verdigris", "cimarron", "washita",
47
+ "canadian", "salt", "nueces", "frio", "llano", "san", "sabine", "trinity",
48
+ "neches", "lavaca", "guadalupe", "medina", "concho", "po", "arno", "tevere",
49
+ "adige", "taro", "ticino", "oglio", "adda", "mincio", "piave", "brenta",
50
+ "ems", "weser", "saale", "havel", "spree", "main", "neckar", "lech",
51
+ "isar", "inn", "drava", "sava", "morava", "tisza", "prut", "siret",
52
+ "olt", "mures", "somes", "argesh", "struma", "maritsa", "vardar", "drin",
53
+ "tay", "clyde", "azure", "amber", "coral", "indigo", "ivory", "jade",
54
+ "lilac", "mauve", "ochre", "olive", "ruby", "saffron", "scarlet", "sepia",
55
+ "teal", "violet", "umber", "vermilion", "plum", "cobalt", "cyan", "magenta",
56
+ "crimson", "maroon", "navy", "beige", "linen", "mint", "peach", "rose",
57
+ "sand", "sky", "slate", "snow", "tan", "wine", "bronze", "gold",
58
+ "silver", "brass", "cherry", "chestnut", "hazel", "honey", "lemon", "lime",
59
+ "cream", "cocoa", "coffee", "mocha", "russet", "sage", "taupe", "burgundy",
60
+ "claret", "emerald", "fern", "flax", "ginger", "grape", "khaki", "orchid",
61
+ "orchard", "fuchsia", "magnolia", "chartreuse", "moss", "myrtle", "pumpkin", "raspberry",
62
+ "rust", "seagreen", "seashell", "sienna", "sorrel", "spruce", "squash", "tangerine",
63
+ "thistle", "topaz", "turquoise", "viridian", "wheat", "zaffre", "puce", "mulberry",
64
+ "damask", "carmine", "cerise", "garnet", "hyacinth", "jasmine", "lavender", "melon",
65
+ "mustard", "nutmeg", "paprika", "periwinkle", "persimmon", "pewter", "pomegranate", "poppy",
66
+ "quince", "rosewood", "ruche", "saddle", "sangria", "seafoam", "shamrock", "smoke",
67
+ "spearmint", "sterling", "sunflower", "terra", "tomato", "vanilla", "veronica", "wisteria",
68
+ "xanadu", "zinnia", "absinthe", "alabaster", "apricot", "aqua", "aquamarine", "asparagus",
69
+ "avocado", "azalea", "bistre", "bittersweet", "blush", "bordeaux", "brick", "buff",
70
+ "bumblebee", "butter", "byzantium", "canary", "cardinal", "celadon", "celeste", "chambray",
71
+ "chamois", "cinnabar", "citrine", "clover", "coquelicot", "daffodil", "dandelion", "eggshell",
72
+ "electric", "firebrick", "flame", "glaucous", "goldenrod", "gunmetal", "heliotrope", "iceberg",
73
+ "icterine", "isabelline", "imperial", "jet", "juniper", "lemonade", "mahogany", "malachite",
74
+ "mango", "midnight", "moonbeam", "morello", "nutbrown", "obsidian", "opal", "opaline",
75
+ "oyster", "paisley", "papaya", "pastel", "pink", "pistachio", "platinum", "porcelain",
76
+ "primrose", "prussian", "quartz", "quicksilver", "rouge", "sable", "sapphire", "seal",
77
+ "shadow", "starlight", "sunset", "thunder", "umbra", "walnut", "brave", "bright",
78
+ "calm", "clever", "cool", "deep", "eager", "fair", "fine", "glad",
79
+ "happy", "keen", "kind", "lively", "merry", "neat", "noble", "proud",
80
+ "quick", "quiet", "swift", "warm", "wise", "witty", "young", "zest",
81
+ "jolly", "lucky", "mighty", "smart", "snappy", "spry", "sunny", "super",
82
+ "tidy", "true", "vivid", "wild", "zippy", "able", "active", "alert",
83
+ "ample", "apt", "artful", "balmy", "bold", "breezy", "brisk", "chic",
84
+ "chill", "cosy", "crisp", "dapper", "dashing", "dazzling", "deft", "divine",
85
+ "dreamy", "dynamic", "earnest", "easy", "elated", "elegant", "epic", "exact",
86
+ "fancy", "fluent", "fresh", "friendly", "funky", "gallant", "gentle", "gifted",
87
+ "glossy", "graceful", "hardy", "hearty", "honest", "hopeful", "humble", "jaunty",
88
+ "jazzy", "jovial", "joyful", "jubilant", "lavish", "legit", "liberal", "light",
89
+ "limber", "lithe", "lovely", "loyal", "lucid", "lush", "magic", "mellow",
90
+ "mild", "modest", "nifty", "nimble", "nimbly", "notable", "peppy", "perky",
91
+ "placid", "plucky", "plush", "polished", "polite", "posh", "prime", "pristine",
92
+ "prompt", "pure", "quaint", "quirky", "radiant", "rapid", "rare", "regal",
93
+ "reliable", "robust", "rosy", "royal", "rugged", "sassy", "savvy", "serene",
94
+ "sharp", "shiny", "silky", "sincere", "sleek", "slick", "smooth", "snug",
95
+ "solid", "sparkly", "spirited", "splendid", "spotless", "spunky", "stable", "stately",
96
+ "steady", "stellar", "stoic", "strong", "stunning", "stylish", "suave", "subtle",
97
+ "sturdy", "supple", "svelte", "tactful", "tender", "thrifty", "timeless", "top",
98
+ "tough", "tranquil", "trendy", "trusty", "upbeat", "valiant", "velvet", "warmhearted",
99
+ "welcoming", "worthy", "zealous", "ace", "adept", "agile", "airy", "ardent",
100
+ "astute", "beaming", "benign", "bonny", "buoyant", "candid", "charming", "cheery",
101
+ "chipper", "choice", "classic", "clean", "cogent", "comfy", "cordial", "cosmic",
102
+ "cute", "daring", "dauntless", "harbor", "haven", "cove", "glade", "meadow",
103
+ "grove", "summit", "ridge", "peak", "canyon", "vista", "oasis", "sanctum",
104
+ "atrium", "plaza", "forum", "agora", "portal", "beacon", "torch", "ember",
105
+ "spark", "prism", "orbit", "comet", "nebula", "pulsar", "quasar", "zenith",
106
+ "apex", "crown", "laurel", "medal", "trophy", "gem", "jewel", "charm",
107
+ "token", "coin", "badge", "crest", "emblem", "sigil", "banner", "pennant",
108
+ "arrow", "anchor", "compass", "keystone", "cornerstone", "pillar", "lantern", "lighthouse",
109
+ "keep", "tower", "castle", "bastion", "citadel", "fortress", "manor", "cottage",
110
+ "cabin", "lodge", "chalet", "villa", "palace", "temple", "shrine", "altar",
111
+ "chapel", "cathedral", "basilica", "garden", "grotto", "fountain", "spring", "brook",
112
+ "creek", "falls", "rapids", "tide", "wave", "swell", "shell", "reef",
113
+ "port", "pier", "dock", "wharf", "marina", "island", "isle", "archipelago",
114
+ "atoll", "cliff", "bluff", "mesa", "plateau", "valley", "vale", "dale",
115
+ "fen", "heath", "moor", "savanna", "prairie", "tundra", "delta", "lagoon",
116
+ "estuary", "fjord", "strait", "sound", "channel", "bay", "gulf", "inlet",
117
+ "lakeshore", "beach", "dune", "cinder", "pumice", "basalt", "granite", "crystal",
118
+ "agate", "onyx", "zircon", "spinel", "beryl", "peridot", "tourmaline", "jasper",
119
+ "moonstone", "sunstone", "bloodstone", "amethyst", "lapis", "carnelian", "chalcedony", "tigereye",
120
+ "hematite", "meadowlark", "falcon", "eagle", "hawk", "swan", "crane", "heron",
121
+ "robin", "wren", "finch", "sparrow", "sunbeam", "dawn", "dusk", "twilight",
122
+ "moonlight", "aurora", "rainbow", "zephyr", "breeze", "gale", "storm", "lightning",
123
+ "whirlwind", "tempest", "meridian", "solstice", "equinox", "talisman", "amulet", "scepter",
124
+ "chalice", "goblet", "flute", "lyre", "harp", "drum", "bell", "chime",
125
+ "echo", "soar", "glide", "drift", "float", "flow", "leap", "dash",
126
+ "sprint", "march", "wander", "roam", "explore", "voyage", "venture", "journey",
127
+ "travel", "embark", "launch", "begin", "start", "ignite", "kindle", "awaken",
128
+ "arise", "rise", "climb", "ascend", "conquer", "triumph", "flourish", "thrive",
129
+ "prosper", "bloom", "blossom", "flower", "grow", "expand", "evolve", "elevate",
130
+ "empower", "energize", "inspire", "uplift", "cherish", "nurture", "foster", "shelter",
131
+ "guard", "protect", "uphold", "support", "sustain", "balance", "harmonize", "align",
132
+ "tune", "compose", "craft", "fashion", "forge", "sculpt", "shape", "mold",
133
+ "weave", "thread", "knit", "stitch", "braid", "binds", "build", "raise",
134
+ "rear", "render", "discover", "unveil", "reveal", "disclose", "unfold", "open",
135
+ "share", "spread", "broadcast", "gather", "collect", "compile", "assemble", "unite",
136
+ "bond", "join", "meld", "merge", "blend", "fuse", "synthesize", "integrate",
137
+ "connect", "link", "bridge", "converge", "rally", "succeed", "achieve", "attain",
138
+ "master", "prevail", "excel", "shine", "glow", "gleam", "glimmer", "sparkle",
139
+ "radiate", "beam", "flash", "flutter", "dart", "dive", "surge", "swirl",
140
+ "spin", "twirl", "pivot", "hover", "linger", "pirouette", "swoop", "swivel",
141
+ "cascade", "tumble", "vault", "bound", "bounce", "skip", "prance", "gambol",
142
+ "caper", "romp", "frolic", "cavort", "dance", "sway", "glisten", "shimmer",
143
+ "scintillate", "twinkle", "dazzle", "illuminate", "brighten", "amplify", "boost", "charge",
144
+ "fortify", "embolden", "enliven", "enchant", "captivate", "beguile", "mesmerize", "delight",
145
+ "gladden", "enrich", "endow", "grant", "gift", "bestow", "yield", "deliver",
146
+ "produce", "furnish", "supply", "provide", "cultivate", "plant", "sow", "reap",
147
+ "harvest", "till", "tend", "mind", "heal", "mend", "renew", "restore",
148
+ "revive", "refresh", "rejuvenate", "quicken", "hasten", "propel", "thrust", "guide",
149
+ "steer", "navigate", "course", "chart", "map", "ada", "alex", "amy",
150
+ "ana", "avi", "ben", "bea", "cam", "dan", "dee", "eli",
151
+ "emma", "eva", "finn", "gus", "hugo", "ian", "iris", "ivan",
152
+ "jane", "juno", "kai", "kit", "liam", "lila", "luca", "lyra",
153
+ "maya", "mia", "milo", "nia", "noah", "nora", "oli", "omar",
154
+ "otto", "piper", "quinn", "rex", "ron", "sam", "sara", "seth",
155
+ "theo", "tom", "uma", "vera", "vic", "will", "xander", "yael",
156
+ "yuki", "zane", "zara", "alma", "anya", "beau", "cole", "cora",
157
+ "dane", "dora", "elsa", "enzo", "erin", "esme", "gabe", "gina",
158
+ "hank", "iggy", "inez", "ivy", "jack", "joel", "kade", "kara",
159
+ "kira", "kyle", "lana", "lars", "leah", "lily", "luna", "mack",
160
+ "maeve", "mads", "matt", "myra", "nash", "neil", "niko", "odin",
161
+ "oren", "orin", "pax", "pete", "raj", "rena", "rhys", "riya",
162
+ "rosa", "ruth", "ryan", "ryla", "shay", "simon", "sloan", "stef",
163
+ "tara", "teo", "tess", "thane", "tilda", "toby", "vance", "vita",
164
+ "vlad", "walt", "wes", "xenia", "yves", "zeke", "zion", "abe",
165
+ "alan", "amir", "andi", "arden", "aria", "ariel", "arlo", "asher",
166
+ "aster", "atticus", "august", "beck", "beth", "blake", "blanche", "bo",
167
+ "bridget", "bruno", "cael", "cain", "cal", "calla", "callie", "camilo",
168
+ "cara", "casey", "cass", "cato", "cecily", "celia", "celine", "cesar",
169
+ "chase", "clio", "colt", "cooper", "corin", "cyrus", "daisy", "dalia",
170
+ "dario", "darby", "dax", "desmond", "dexter", "diana", "dimitri", "dina",
171
+ "dom", "drew", "dru", "dylan", "eden", "edith", "elena", "elias",
172
+ "eliza", "elif", "ellis", "emery", "emil", "eric", "estes", "evan",
173
+ "ewan", "ezra",
87
174
  ];
88
- // Common words (A-Za-z only, no diacritics). Shared across all implementations.
89
- export const COMMON = [
90
- "river", "stone", "ember", "frost", "harbor", "willow",
91
- "copper", "marble", "anchor", "lantern", "cedar", "falcon",
92
- "coral", "dagger", "flint", "grove", "haven", "iron",
93
- "jasper", "kelp", "larch", "mast", "nettle", "oak",
94
- "pine", "quill", "reed", "sage", "thorn", "umber",
95
- "vale", "wren", "yarrow", "zenith", "amber", "birch",
96
- "cliff", "drift", "forge", "glade", "mesa", "canyon",
97
- "basin", "fern", "gale", "peak", "ridge", "shore",
98
- "tide", "bluff", "brook", "crest", "delta", "glen",
99
- "helm", "inlet", "jetty", "knoll", "loft", "moor",
100
- "notch", "orbit", "prism", "thunder", "silver", "meadow",
101
- "basalt", "summit", "valley", "bridge", "beacon", "ranger",
102
- "timber", "clover", "pebble", "ripple", "canopy", "chimney",
103
- "cinder", "comet", "ferret", "glider", "jaguar", "kernel",
104
- "lancer", "mortar", "nebula", "osprey", "patrol", "quartz",
105
- "rafter", "sparrow", "granite", "hazel", "kindle", "laurel",
106
- "mossy", "nimble", "ochre", "russet", "sable", "vapor",
107
- "wicker", "cobalt", "dune", "hollow", "ivy", "juniper",
108
- "linden", "mist", "oyster", "acorn", "anvil", "apron",
109
- "arrow", "ash", "atlas", "autumn", "badge", "banner",
110
- "beryl", "blossom", "boulder", "bramble", "brass", "breeze",
111
- "briar", "bronze", "brooklet", "buckle", "burl", "cairn",
112
- "candle", "canvas", "cavern", "chalk", "charm", "citrine",
113
- "cloud", "cloverleaf", "cobaltcore", "compass", "copperleaf", "cradle",
114
- "cricket", "crystal", "daisy", "dale", "dawn", "deerden",
115
- "desert", "dew", "diamond", "dovetail", "dragonfly", "dream",
116
- "drifter", "dunecrest", "dusk", "echo", "elm", "fernleaf",
117
- "firefly", "fjord", "flame", "flower", "flume", "forest",
118
- "foxglove", "garden", "garnet", "geode", "glacier", "glimmer",
119
- "goldfinch", "gravel", "greenwood", "griffin", "harborlight", "hearth",
120
- "heather", "heron", "hill", "honey", "horizon", "icicle",
121
- "ivory", "jewel", "kestrel", "lagoon", "laurelwood", "leaf",
122
- "lighthouse", "lilac", "lotus", "meadowlark", "moon", "moss",
123
- "myrtle", "nectar", "nightingale", "obsidian", "olive", "opal",
124
- "orchard", "otter", "pebblebrook", "petal", "plume", "prairie",
125
- "rain", "raven", "redwood", "reef", "ribbon", "root",
126
- "rose", "ruby", "sail", "salt", "sapphire", "scarlet",
127
- "seabird", "sequoia", "shadow", "shale", "shell", "shimmer",
128
- "skylark", "slate", "smoke", "snow", "sparrowhawk", "spindle",
129
- "spirit", "spring", "spruce", "star", "starlight", "storm",
130
- "stream", "sunbeam", "sunset", "sycamore", "talon", "thicket",
131
- "thistle", "thunderhead", "tidepool", "topaz", "trail", "valleyfield",
132
- "velvet", "violet", "walnut", "waterfall", "wave", "wind",
133
- "winter", "wolfram", "woodland", "zephyr", "ashwood", "bell",
134
- "bird", "bloom", "branch", "bright", "brookside", "camp",
135
- "campfire", "castle", "chime", "clay", "cloudbank", "coast",
136
- "copperwood", "creek", "crown", "emberfall", "field", "firestone",
137
- "flag", "fog", "fox", "gardenia", "gate", "glow",
138
- "grass", "grovewood", "harborstone", "hilltop", "honeycomb", "island",
139
- "kestrelwing", "lake", "leafwing", "marigold", "moonstone", "morning",
140
- "acacia", "alpine", "amulet", "apple", "apricot", "arcade",
141
- "arcadia", "archer", "argent", "armor", "asters", "aster",
142
- "aurora", "awning", "badger", "bamboo", "barley", "basil",
143
- "basket", "bayberry", "beech", "bellflower", "berry", "billet",
144
- "biscuit", "blackbird", "bluebell", "bluejay", "bonnet", "bough",
145
- "braid", "bread", "brick", "bridle", "brocade", "buckthorn",
146
- "burrow", "buttercup", "cabochon", "campion", "canary", "caraway",
147
- "catkin", "celeriac", "cello", "chanter", "chanticleer", "chestnut",
148
- "citadel", "clementine", "cloverfield", "cobble", "codex", "columbine",
149
- "corduroy", "cornflower", "courier", "coventry", "cove", "cowbell",
150
- "crocus", "curlew", "cypress", "damask", "daffodil", "dandelion",
151
- "dewdrop", "distaff", "driftwood", "eider", "elder", "elderberry",
152
- "elfin", "emerald", "enamel", "equinox", "faience", "feather",
153
- "fennel", "fiddle", "finch", "fir", "firwood", "flax",
154
- "floret", "flute", "freesia", "frostline", "gable", "galax",
155
- "garland", "gentian", "ginger", "gingham", "glenwood", "gosling",
156
- "grain", "grebe", "halcyon", "hazelnut", "headland", "heliotrope",
157
- "holly", "holystone", "honeydew", "hornbeam", "hyacinth", "inkwood",
158
- "iris", "ironwood", "jasmine", "jennet", "jonquil", "kettle",
159
- "kingsley", "laburnum", "lace", "ladle", "larkspur", "lavender",
160
- "leather", "ledger", "lemongrass", "linnet", "lodestar", "loquat",
161
- "lyre", "magnolia", "mandolin", "maple", "mariner", "marmot",
162
- "mayflower", "meadowrun", "merlin", "mica", "milkweed", "millet",
163
- "minnow", "mint", "mirabelle", "moonbeam", "moonrise", "moorland",
164
- "mulberry", "nimbus", "nuthatch", "oatfield", "olivewood", "onyx",
165
- "oriole", "oxbow", "pansy", "parchment", "partridge", "pear",
166
- "pearwood", "pelican", "pepper", "peridot", "pewter", "pheasant",
167
- "pimpernel", "pipit", "pistachio", "poplar", "porcelain", "primrose",
168
- "quail", "quince", "quincewood", "rainbird", "rainstone", "reedbed",
169
- "reedling", "rook", "rosemary", "rowan", "saddle", "saffron",
170
- "sandalwood", "satin", "sawgrass", "scallop", "seafoam", "seedling",
171
- "selkie", "shepherd", "shoal", "silk", "silverbell", "skylight",
172
- "snowdrop", "songbird", "sorrel", "spindlewood", "spindleberry", "sprucewood",
173
- "starling", "stonecrop",
175
+ export const ROTATIONS = [
176
+ ["a", "e"],
177
+ ["e", "i"],
178
+ ["i", "y"],
179
+ ["o", "u"],
180
+ ["u", "o"],
181
+ ["y", "i"],
182
+ ["b", "p"],
183
+ ["c", "k"],
184
+ ["d", "t"],
185
+ ["f", "v"],
186
+ ["g", "j"],
187
+ ["h", "x"],
188
+ ["j", "y"],
189
+ ["k", "c"],
190
+ ["l", "r"],
191
+ ["m", "n"],
192
+ ["n", "m"],
193
+ ["p", "b"],
194
+ ["q", "k"],
195
+ ["r", "l"],
196
+ ["s", "z"],
197
+ ["t", "d"],
198
+ ["v", "f"],
199
+ ["w", "v"],
200
+ ["x", "z"],
201
+ ["z", "s"],
174
202
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twardoch/namzy",
3
- "version": "1.0.19",
3
+ "version": "1.0.21",
4
4
  "description": "Generates fun fused human-friendly project names",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/cli.ts CHANGED
@@ -4,24 +4,21 @@
4
4
  import { generate } from "./index.js";
5
5
 
6
6
  const HELP = `
7
- namzy — generate fun fused project names
7
+ namzy — generate compact, memorable, unique names
8
8
 
9
9
  Usage:
10
10
  namzy [options]
11
11
 
12
12
  Options:
13
13
  --count <N> Number of names to generate (default: 1)
14
+ --seed <N> Integer seed (default: current timestamp)
14
15
  --help Show this help
15
-
16
- Examples:
17
- namzy
18
- namzy --count 5
19
16
  `.trimStart();
20
17
 
21
- function parseArgs(argv: string[]): { count: number } {
18
+ function parseArgs(argv: string[]): { count: number; seed?: number } {
22
19
  const args = argv.slice(2);
23
20
  let count = 1;
24
-
21
+ let seed: number | undefined;
25
22
  for (let i = 0; i < args.length; i++) {
26
23
  const arg = args[i];
27
24
  switch (arg) {
@@ -33,30 +30,35 @@ function parseArgs(argv: string[]): { count: number } {
33
30
  case "--count": {
34
31
  const n = parseInt(args[++i], 10);
35
32
  if (Number.isNaN(n) || n < 1) {
36
- process.stderr.write(`--count must be a positive integer\n`);
33
+ process.stderr.write("--count must be a positive integer\n");
37
34
  process.exit(1);
38
35
  }
39
36
  count = n;
40
37
  break;
41
38
  }
39
+ case "--seed": {
40
+ const n = parseInt(args[++i], 10);
41
+ if (Number.isNaN(n)) {
42
+ process.stderr.write("--seed must be an integer\n");
43
+ process.exit(1);
44
+ }
45
+ seed = n;
46
+ break;
47
+ }
42
48
  default:
43
49
  process.stderr.write(`Unknown flag: ${arg}\nRun namzy --help for usage.\n`);
44
50
  process.exit(1);
45
51
  }
46
52
  }
47
- return { count };
53
+ return { count, seed };
48
54
  }
49
55
 
50
- async function main(): Promise<void> {
51
- const { count } = parseArgs(process.argv);
52
- const base = Date.now();
56
+ function main(): void {
57
+ const { count, seed } = parseArgs(process.argv);
58
+ const base = seed ?? Date.now();
53
59
  for (let i = 0; i < count; i++) {
54
- const name = await generate({ seed: base + i * 1337 });
55
- process.stdout.write(`${name}\n`);
60
+ process.stdout.write(`${generate({ seed: base + i * 2654435761 })}\n`);
56
61
  }
57
62
  }
58
63
 
59
- main().catch((err) => {
60
- process.stderr.write(`Error: ${err instanceof Error ? err.message : String(err)}\n`);
61
- process.exit(1);
62
- });
64
+ main();
package/src/index.ts CHANGED
@@ -1,35 +1,27 @@
1
1
  // this_file: src/index.ts
2
2
 
3
- import { activeRotationMask, joinClean, mangle, mulberry32 } from "./mangle.js";
4
- import { COMMON, GEO } from "./wordlist.js";
3
+ import { applyRotations, buildName, mulberry32 } from "./mangle.js";
4
+ import { ROTATIONS, STEMS } from "./wordlist.js";
5
5
 
6
6
  export interface NamzyOptions {
7
- seed?: number;
7
+ seed?: number;
8
8
  }
9
9
 
10
- function capitalize(s: string): string {
11
- return s.charAt(0).toUpperCase() + s.slice(1);
10
+ /** Generate one namzy name. Default seed is the current timestamp. */
11
+ export function generate(opts?: NamzyOptions): string {
12
+ const seed = opts?.seed ?? Date.now();
13
+ return buildName(mulberry32(seed));
12
14
  }
13
15
 
14
- function pick<T>(arr: T[], rng: () => number): T {
15
- return arr[Math.floor(rng() * arr.length)];
16
+ /** Generate `count` names. Distinct seeds derived from the base seed. */
17
+ export function generateMany(count: number, opts?: NamzyOptions): string[] {
18
+ const base = opts?.seed ?? Date.now();
19
+ const out: string[] = [];
20
+ for (let i = 0; i < count; i++) {
21
+ out.push(generate({ seed: base + i * 2654435761 }));
22
+ }
23
+ return out;
16
24
  }
17
25
 
18
- /**
19
- * Generate a single fused, mangled namzy name.
20
- * Two raw words → junction-cleaned fusion → consonant rotation → capitalize.
21
- */
22
- export async function generate(opts?: NamzyOptions): Promise<string> {
23
- const seed = opts?.seed ?? Date.now();
24
- const rng = mulberry32(seed);
25
-
26
- const w1 = pick(GEO, rng).toLowerCase();
27
- const w2 = pick(COMMON, rng).toLowerCase();
28
- const [first, second] = rng() < 0.5 ? [w1, w2] : [w2, w1];
29
-
30
- const fused = joinClean(first, second);
31
- return capitalize(mangle(fused, activeRotationMask(rng)));
32
- }
33
-
34
- export { COMMON, GEO } from "./wordlist.js";
35
- export { activeRotationMask, joinClean, mangle, mulberry32 };
26
+ export { STEMS, ROTATIONS } from "./wordlist.js";
27
+ export { applyRotations, buildName, mulberry32 };