@twardoch/namzy 1.0.19 → 1.0.23

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,288 @@
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", "tulsa", "fargo", "salem",
7
+ "dover", "leeds", "york", "derby", "bath", "hull", "kent", "devon",
8
+ "essex", "berlin", "munich", "bremen", "bonn", "jena", "mainz", "madrid",
9
+ "lisbon", "porto", "faro", "braga", "athens", "sparta", "rhodes", "crete",
10
+ "naxos", "delos", "rabat", "oran", "tunis", "sana", "mecca", "jeddah",
11
+ "aden", "dubai", "amman", "mosul", "basra", "herat", "dhaka", "delhi",
12
+ "agra", "pune", "surat", "patna", "hanoi", "cebu", "davao", "medan",
13
+ "beijing", "wuhan", "xian", "dalian", "taipei", "seoul", "busan", "daegu",
14
+ "kobe", "sydney", "hobart", "darwin", "cairns", "cuzco", "quito", "cali",
15
+ "natal", "leon", "cancun", "austin", "fresno", "durham", "boise", "reno",
16
+ "juneau", "dublin", "galway", "cork", "bergen", "tromso", "malmo", "turku",
17
+ "kazan", "tomsk", "omsk", "perm", "minsk", "warsaw", "nile", "volga",
18
+ "rhine", "seine", "thames", "tiber", "indus", "congo", "niger", "douro",
19
+ "tagus", "ebro", "loire", "elbe", "oder", "don", "ural", "lena",
20
+ "amur", "chao", "jordan", "snake", "platte", "ohio", "red", "gila",
21
+ "fraser", "peace", "copper", "yampa", "green", "pearl", "james", "hudson",
22
+ "mohawk", "fox", "iowa", "cedar", "grand", "white", "salt", "neches",
23
+ "arno", "taro", "oglio", "adda", "mincio", "piave", "brenta", "ems",
24
+ "weser", "saale", "havel", "spree", "main", "neckar", "lech", "isar",
25
+ "inn", "drava", "sava", "tisza", "prut", "olt", "mures", "somes",
26
+ "drin", "tay", "clyde", "forth", "tweed", "spey", "severn", "trent",
27
+ "avon", "dee", "esk", "wye", "usk", "lee", "suir", "nore",
28
+ "boyne", "bann", "erne", "moy", "lagan", "mekong", "yukon", "ganges",
29
+ "yangtze", "meuse", "rhone", "tarn", "lot", "var", "ain", "aisne",
30
+ "marne", "yonne", "saone", "tilt", "teme", "dove", "ouse", "swale",
31
+ "ure", "tees", "amber", "coral", "jade", "lilac", "mauve", "ochre",
32
+ "ruby", "sepia", "teal", "umber", "plum", "cobalt", "cyan", "navy",
33
+ "salmon", "beige", "linen", "mint", "peach", "rose", "sand", "sky",
34
+ "slate", "snow", "tan", "wine", "bronze", "gold", "brass", "cherry",
35
+ "hazel", "honey", "lemon", "lime", "cream", "cocoa", "mocha", "sage",
36
+ "taupe", "fern", "flax", "ginger", "grape", "khaki", "orchid", "moss",
37
+ "rust", "sienna", "spruce", "jasper", "ash", "fawn", "dust", "gray",
38
+ "char", "ink", "frost", "silver", "claret", "garnet", "jet", "onyx",
39
+ "blush", "rouge", "crimson", "scarlet", "violet", "poppy", "saffron", "citrus",
40
+ "papaya", "melon", "thistle", "topaz", "quartz", "pewter", "saddle", "smoke",
41
+ "fuchsia", "buff", "brick", "coffee", "dune", "dawn", "vine", "ember",
42
+ "seal", "opal", "mango", "chia", "pine", "bay", "sable", "brave",
43
+ "bright", "calm", "clever", "cool", "deep", "eager", "fair", "fine",
44
+ "glad", "happy", "keen", "kind", "merry", "neat", "noble", "proud",
45
+ "quick", "quiet", "swift", "warm", "wise", "witty", "young", "jolly",
46
+ "lucky", "mighty", "smart", "snappy", "spry", "sunny", "super", "tidy",
47
+ "true", "vivid", "wild", "zippy", "able", "alert", "ample", "apt",
48
+ "artful", "balmy", "bold", "breezy", "brisk", "chic", "chill", "cosy",
49
+ "crisp", "dapper", "deft", "dreamy", "easy", "epic", "exact", "fancy",
50
+ "fluent", "fresh", "funky", "gallant", "gentle", "gifted", "glossy", "hardy",
51
+ "hearty", "honest", "humble", "jaunty", "jazzy", "jovial", "joyful", "lavish",
52
+ "light", "limber", "lithe", "loyal", "lucid", "lush", "mellow", "mild",
53
+ "modest", "nifty", "nimble", "peppy", "perky", "placid", "plucky", "plush",
54
+ "posh", "prime", "prompt", "pure", "quaint", "quirky", "rapid", "rare",
55
+ "regal", "robust", "rosy", "royal", "rugged", "sassy", "savvy", "sharp",
56
+ "shiny", "silky", "sleek", "slick", "harbor", "haven", "cove", "glade",
57
+ "meadow", "grove", "summit", "ridge", "peak", "canyon", "vista", "oasis",
58
+ "sanctum", "atrium", "plaza", "forum", "portal", "beacon", "torch", "spark",
59
+ "flame", "prism", "orbit", "comet", "zenith", "apex", "crown", "laurel",
60
+ "medal", "trophy", "gem", "jewel", "charm", "token", "coin", "badge",
61
+ "crest", "emblem", "sigil", "banner", "arrow", "anchor", "compass", "pillar",
62
+ "lantern", "keep", "tower", "castle", "bastion", "manor", "cabin", "lodge",
63
+ "chalet", "villa", "temple", "shrine", "altar", "chapel", "garden", "grotto",
64
+ "spring", "brook", "creek", "tide", "wave", "swell", "shell", "reef",
65
+ "port", "pier", "dock", "wharf", "isle", "atoll", "cape", "cliff",
66
+ "bluff", "mesa", "valley", "vale", "dale", "fen", "heath", "moor",
67
+ "delta", "lagoon", "fjord", "sound", "channel", "gulf", "inlet", "beach",
68
+ "basalt", "crystal", "beryl", "zircon", "spinel", "falcon", "eagle", "soar",
69
+ "glide", "drift", "float", "flow", "leap", "dash", "sprint", "march",
70
+ "wander", "roam", "voyage", "journey", "travel", "embark", "launch", "kindle",
71
+ "rise", "climb", "ascend", "bloom", "blossom", "flower", "grow", "expand",
72
+ "uplift", "foster", "shelter", "guard", "protect", "uphold", "support", "sustain",
73
+ "steady", "align", "tune", "craft", "fashion", "forge", "sculpt", "shape",
74
+ "mold", "weave", "thread", "knit", "stitch", "braid", "build", "raise",
75
+ "unveil", "reveal", "unfold", "open", "share", "spread", "gather", "collect",
76
+ "bond", "join", "meld", "merge", "blend", "fuse", "connect", "link",
77
+ "bridge", "rally", "thrive", "prosper", "attain", "master", "prevail", "excel",
78
+ "shine", "glow", "gleam", "glimmer", "sparkle", "beam", "flash", "flutter",
79
+ "dart", "dive", "surge", "swirl", "spin", "twirl", "pivot", "hover",
80
+ "linger", "swoop", "tumble", "vault", "bound", "bounce", "skip", "prance",
81
+ "gambol", "caper", "romp", "frolic", "cavort", "ada", "alex", "amy",
82
+ "ana", "avi", "ben", "bea", "cam", "dan", "eli", "emma",
83
+ "eva", "finn", "gus", "hugo", "ian", "iris", "ivan", "jane",
84
+ "juno", "kai", "kit", "liam", "lila", "luca", "lyra", "maya",
85
+ "mia", "milo", "nia", "noah", "nora", "oli", "omar", "otto",
86
+ "piper", "quinn", "rex", "rio", "ron", "sam", "sara", "seth",
87
+ "theo", "tom", "uma", "vera", "vic", "will", "xander", "yael",
88
+ "yuki", "zane", "zara", "alma", "anya", "beau", "cole", "cora",
89
+ "dane", "dora", "elsa", "enzo", "erin", "esme", "gabe", "gina",
90
+ "hank", "iggy", "inez", "ivy", "jack", "joel", "kade", "kara",
91
+ "kira", "kyle", "lana", "lars", "leah", "lily", "luna", "mack",
92
+ "maeve", "mads", "matt", "myra", "nash", "neil", "niko", "odin",
93
+ "oren", "orin", "pax", "pete", "raj", "rena", "rhys", "riya",
94
+ "rosa", "ruth", "ryan", "shay", "oak", "elm", "fir", "maple",
95
+ "birch", "beech", "alder", "holly", "rowan", "larch", "yew", "palm",
96
+ "aspen", "poplar", "willow", "walnut", "linden", "cypress", "plane", "fig",
97
+ "pear", "apple", "almond", "cacao", "banyan", "baobab", "teak", "dogwood",
98
+ "box", "quince", "balsa", "sandal", "myrtle", "locust", "pecan", "elder",
99
+ "robin", "finch", "wren", "hawk", "owl", "swan", "crane", "lark",
100
+ "raven", "jay", "kestrel", "heron", "ibis", "kite", "buzzard", "merlin",
101
+ "osprey", "peacock", "parrot", "ostrich", "emu", "kiwi", "puffin", "gull",
102
+ "tern", "petrel", "cuckoo", "magpie", "thrush", "sparrow", "martin", "swallow",
103
+ "plover", "snipe", "quail", "grouse", "turkey", "rooster", "hen", "duck",
104
+ "goose", "mallard", "stork", "bittern", "auk", "loon", "grebe", "coot",
105
+ "rail", "moorhen", "pigeon", "jackdaw", "rook", "crow", "warbler", "tit",
106
+ "pipit", "wagtail", "bunting", "linnet", "siskin", "redpoll", "waxwing", "redwing",
107
+ "shrike", "hoopoe", "roller", "toucan", "macaw", "budgie", "lapis", "mica",
108
+ "gypsum", "flint", "chert", "shale", "marble", "bone", "horn", "antler",
109
+ "storm", "mist", "dusk", "rain", "fog", "haze", "ice", "cloud",
110
+ "breeze", "gust", "gale", "tempest", "squall", "hail", "sleet", "drizzle",
111
+ "thunder", "rainbow", "zephyr", "sunset", "noon", "vapor", "steam", "cinder",
112
+ "spray", "spume", "foam", "shower", "monsoon", "typhoon", "vortex", "eddy",
113
+ "current", "draft", "draught", "warmth", "shimmer", "blaze", "flare", "bolt",
114
+ "cosmos", "pulsar", "quasar", "planet", "star", "moon", "sun", "thor",
115
+ "loki", "freya", "frigg", "hel", "baldr", "tyr", "atlas", "hera",
116
+ "mars", "vesta", "ceres", "leto", "niobe", "isis", "hathor", "horus",
117
+ "apis", "ptah", "thoth", "bast", "set", "seshat", "ammit", "khonsu",
118
+ "sobek", "bes", "maat", "shiva", "vishnu", "rama", "sita", "kali",
119
+ "durga", "indra", "ganesh", "kuber", "surya", "soma", "agni", "vayu",
120
+ "prana", "lakshmi", "mira", "yama", "zeus", "ares", "hades", "hermes",
121
+ "hebe", "helios", "eos", "nyx", "aether", "chaos", "gaia", "cronus",
122
+ "rhea", "tethys", "phoebe", "themis", "pan", "triton", "nereus", "proteus",
123
+ "circe", "scylla", "hydra",
87
124
  ];
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",
125
+ export const ROTATIONS = [
126
+ ["ba", "bo"],
127
+ ["bo", "ba"],
128
+ ["bi", "by"],
129
+ ["by", "bi"],
130
+ ["be", "bi"],
131
+ ["bi", "be"],
132
+ ["bo", "bu"],
133
+ ["bu", "bo"],
134
+ ["ca", "co"],
135
+ ["co", "ca"],
136
+ ["ci", "cy"],
137
+ ["cy", "ci"],
138
+ ["ce", "ci"],
139
+ ["ci", "ce"],
140
+ ["co", "cu"],
141
+ ["cu", "co"],
142
+ ["da", "do"],
143
+ ["do", "da"],
144
+ ["di", "dy"],
145
+ ["dy", "di"],
146
+ ["de", "di"],
147
+ ["di", "de"],
148
+ ["do", "du"],
149
+ ["du", "do"],
150
+ ["fa", "fo"],
151
+ ["fo", "fa"],
152
+ ["fi", "fy"],
153
+ ["fy", "fi"],
154
+ ["fe", "fi"],
155
+ ["fi", "fe"],
156
+ ["fo", "fu"],
157
+ ["fu", "fo"],
158
+ ["ga", "go"],
159
+ ["go", "ga"],
160
+ ["gi", "gy"],
161
+ ["gy", "gi"],
162
+ ["ge", "gi"],
163
+ ["gi", "ge"],
164
+ ["go", "gu"],
165
+ ["gu", "go"],
166
+ ["ha", "ho"],
167
+ ["ho", "ha"],
168
+ ["hi", "hy"],
169
+ ["hy", "hi"],
170
+ ["he", "hi"],
171
+ ["hi", "he"],
172
+ ["ho", "hu"],
173
+ ["hu", "ho"],
174
+ ["ja", "jo"],
175
+ ["jo", "ja"],
176
+ ["ji", "jy"],
177
+ ["jy", "ji"],
178
+ ["je", "ji"],
179
+ ["ji", "je"],
180
+ ["jo", "ju"],
181
+ ["ju", "jo"],
182
+ ["ka", "ko"],
183
+ ["ko", "ka"],
184
+ ["ki", "ky"],
185
+ ["ky", "ki"],
186
+ ["ke", "ki"],
187
+ ["ki", "ke"],
188
+ ["ko", "ku"],
189
+ ["ku", "ko"],
190
+ ["la", "lo"],
191
+ ["lo", "la"],
192
+ ["li", "ly"],
193
+ ["ly", "li"],
194
+ ["le", "li"],
195
+ ["li", "le"],
196
+ ["lo", "lu"],
197
+ ["lu", "lo"],
198
+ ["ma", "mo"],
199
+ ["mo", "ma"],
200
+ ["mi", "my"],
201
+ ["my", "mi"],
202
+ ["me", "mi"],
203
+ ["mi", "me"],
204
+ ["mo", "mu"],
205
+ ["mu", "mo"],
206
+ ["na", "no"],
207
+ ["no", "na"],
208
+ ["ni", "ny"],
209
+ ["ny", "ni"],
210
+ ["ne", "ni"],
211
+ ["ni", "ne"],
212
+ ["no", "nu"],
213
+ ["nu", "no"],
214
+ ["pa", "po"],
215
+ ["po", "pa"],
216
+ ["pi", "py"],
217
+ ["py", "pi"],
218
+ ["pe", "pi"],
219
+ ["pi", "pe"],
220
+ ["po", "pu"],
221
+ ["pu", "po"],
222
+ ["ra", "ro"],
223
+ ["ro", "ra"],
224
+ ["ri", "ry"],
225
+ ["ry", "ri"],
226
+ ["re", "ri"],
227
+ ["ri", "re"],
228
+ ["ro", "ru"],
229
+ ["ru", "ro"],
230
+ ["sa", "so"],
231
+ ["so", "sa"],
232
+ ["si", "sy"],
233
+ ["sy", "si"],
234
+ ["se", "si"],
235
+ ["si", "se"],
236
+ ["so", "su"],
237
+ ["su", "so"],
238
+ ["ta", "to"],
239
+ ["to", "ta"],
240
+ ["ti", "ty"],
241
+ ["ty", "ti"],
242
+ ["te", "ti"],
243
+ ["ti", "te"],
244
+ ["to", "tu"],
245
+ ["tu", "to"],
246
+ ["va", "vo"],
247
+ ["vo", "va"],
248
+ ["vi", "vy"],
249
+ ["vy", "vi"],
250
+ ["ve", "vi"],
251
+ ["vi", "ve"],
252
+ ["vo", "vu"],
253
+ ["vu", "vo"],
254
+ ["wa", "wo"],
255
+ ["wo", "wa"],
256
+ ["wi", "wy"],
257
+ ["wy", "wi"],
258
+ ["we", "wi"],
259
+ ["wi", "we"],
260
+ ["wo", "wu"],
261
+ ["wu", "wo"],
262
+ ["za", "zo"],
263
+ ["zo", "za"],
264
+ ["zi", "zy"],
265
+ ["zy", "zi"],
266
+ ["ze", "zi"],
267
+ ["zi", "ze"],
268
+ ["zo", "zu"],
269
+ ["zu", "zo"],
270
+ ["k", "q"],
271
+ ["q", "k"],
272
+ ["c", "k"],
273
+ ["k", "c"],
274
+ ["ph", "f"],
275
+ ["f", "ph"],
276
+ ["x", "ks"],
277
+ ["ks", "x"],
278
+ ];
279
+ export const BAD_SEAMS = [
280
+ "aa",
281
+ "ee",
282
+ "ii",
283
+ "oo",
284
+ "uu",
285
+ "yy",
286
+ "iy",
287
+ "yi",
174
288
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twardoch/namzy",
3
- "version": "1.0.19",
3
+ "version": "1.0.23",
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();