π― Use case
This file lives under βutils/β, which covers cross-cutting helpers (shell, tempfiles, settings, messages, process input, β¦). On the API surface it exposes generateWordSlug and generateShortWordSlug β mainly functions, hooks, or classes. Dependencies touch crypto. What the file header says: Random word slug generator for plan IDs Inspired by https://github.com/nas5w/random-word-slugs with Claude-flavored words.
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
Random word slug generator for plan IDs Inspired by https://github.com/nas5w/random-word-slugs with Claude-flavored words
π€ Exports (heuristic)
generateWordSluggenerateShortWordSlug
π External import roots
Package roots from from "β¦" (relative paths omitted).
crypto
π₯οΈ Source preview
/**
* Random word slug generator for plan IDs
* Inspired by https://github.com/nas5w/random-word-slugs
* with Claude-flavored words
*/
import { randomBytes } from 'crypto'
// Adjectives for slug generation - whimsical and delightful
const ADJECTIVES = [
// Classic pleasant adjectives
'abundant',
'ancient',
'bright',
'calm',
'cheerful',
'clever',
'cozy',
'curious',
'dapper',
'dazzling',
'deep',
'delightful',
'eager',
'elegant',
'enchanted',
'fancy',
'fluffy',
'gentle',
'gleaming',
'golden',
'graceful',
'happy',
'hidden',
'humble',
'jolly',
'joyful',
'keen',
'kind',
'lively',
'lovely',
'lucky',
'luminous',
'magical',
'majestic',
'mellow',
'merry',
'mighty',
'misty',
'noble',
'peaceful',
'playful',
'polished',
'precious',
'proud',
'quiet',
'quirky',
'radiant',
'rosy',
'serene',
'shiny',
'silly',
'sleepy',
'smooth',
'snazzy',
'snug',
'snuggly',
'soft',
'sparkling',
'spicy',
'splendid',
'sprightly',
'starry',
'steady',
'sunny',
'swift',
'tender',
'tidy',
'toasty',
'tranquil',
'twinkly',
'valiant',
'vast',
'velvet',
'vivid',
'warm',
'whimsical',
'wild',
'wise',
'witty',
'wondrous',
'zany',
'zesty',
'zippy',
// Whimsical / magical
'breezy',
'bubbly',
'buzzing',
'cheeky',
'cosmic',
'cozy',
'crispy',
'crystalline',
'cuddly',
'drifting',
'dreamy',
'effervescent',
'ethereal',
'fizzy',
'flickering',
'floating',
'floofy',
'fluttering',
'foamy',
'frolicking',
'fuzzy',
'giggly',
'glimmering',
'glistening',
'glittery',
'glowing',
'goofy',
'groovy',
'harmonic',
'hazy',
'humming',
'iridescent',
'jaunty',
'jazzy',
'jiggly',
'melodic',
'moonlit',
'mossy',
'nifty',
'peppy',
'prancy',
'purrfect',
'purring',
'quizzical',
'rippling',
'rustling',
'shimmering',
'shimmying',
'snappy',
'snoopy',
'squishy',
'swirling',
'ticklish',
'tingly',
'twinkling',
'velvety',
'wiggly',
'wobbly',
'woolly',
'zazzy',
// Programming concepts
'abstract',
'adaptive',
'agile',
'async',
'atomic',
'binary',
'cached',
'compiled',
'composed',
'compressed',
'concurrent',
'cryptic',
'curried',
'declarative',
'delegated',
'distributed',
'dynamic',
'eager',
'elegant',
'encapsulated',
'enumerated',
'eventual',
'expressive',
'federated',
'functional',
'generic',
'greedy',
'hashed',
'idempotent',
'immutable',
'imperative',
'indexed',
'inherited',
'iterative',
'lazy',
'lexical',
'linear',
'linked',
'logical',
'memoized',
'modular',
'mutable',
'nested',
'optimized',
'parallel',
'parsed',
'partitioned',
'piped',
'polymorphic',
'pure',
'reactive',
'recursive',
'refactored',
'reflective',
'replicated',
'resilient',
'robust',
'scalable',
'sequential',
'serialized',
'sharded',
'sorted',
'staged',
'stateful',
'stateless',
'streamed',
'structured',
'synchronous',
'synthetic',
'temporal',
'transient',
'typed',
'unified',
'validated',
'vectorized',
'virtual',
] as const
// Nouns for slug generation - whimsical creatures, nature, and fun objects
const NOUNS = [
// Nature & cosmic
'aurora',
'avalanche',
'blossom',
'breeze',
'brook',
'bubble',
'canyon',
'cascade',
'cloud',
'clover',
'comet',
'coral',
'cosmos',
'creek',
'crescent',
'crystal',
'dawn',
'dewdrop',
'dusk',
'eclipse',
'ember',
'feather',
'fern',
'firefly',
'flame',
'flurry',
'fog',
'forest',
'frost',
'galaxy',
'garden',
'glacier',
'glade',
'grove',
'harbor',
'horizon',
'island',
'lagoon',
'lake',
'leaf',
'lightning',
'meadow',
'meteor',
'mist',
'moon',
'moonbeam',
'mountain',
'nebula',
'nova',
'ocean',
'orbit',
'pebble',
'petal',
'pine',
'planet',
'pond',
'puddle',
'quasar',
'rain',
'rainbow',
'reef',
'ripple',
'river',
'shore',
'sky',
'snowflake',
'spark',
'spring',
'star',
'stardust',
'starlight',
'storm',
'stream',
'summit',
'sun',
'sunbeam',
'sunrise',
'sunset',
'thunder',
'tide',
'twilight',
'valley',
'volcano',
'waterfall',
'wave',
'willow',
'wind',
// Cute creatures
'alpaca',
'axolotl',
'badger',
'bear',
'beaver',
'bee',
'bird',
'bumblebee',
'bunny',
'cat',
'chipmunk',
'crab',
'crane',
'deer',
'dolphin',
'dove',
'dragon',
'dragonfly',
'duckling',
'eagle',
'elephant',
'falcon',
'finch',
'flamingo',
'fox',
'frog',
'giraffe',
'goose',
'hamster',
'hare',
'hedgehog',
'hippo',
'hummingbird',
'jellyfish',
'kitten',
'koala',
'ladybug',
'lark',
'lemur',
'llama',
'lobster',
'lynx',
'manatee',
'meerkat',
'moth',
'narwhal',
'newt',
'octopus',
'otter',
'owl',
'panda',
'parrot',
'peacock',
'pelican',
'penguin',
'phoenix',
'piglet',
'platypus',
'pony',
'porcupine',
'puffin',
'puppy',
'quail',
'quokka',
'rabbit',
'raccoon',
'raven',
'robin',
'salamander',
'seahorse',
'seal',
'sloth',
'snail',
'sparrow',
'sphinx',
'squid',
'squirrel',
'starfish',
'swan',
'tiger',
'toucan',
'turtle',
'unicorn',
'walrus',
'whale',
'wolf',
'wombat',
'wren',
'yeti',
'zebra',
// Fun objects & concepts
'acorn',
'anchor',
'balloon',
'beacon',
'biscuit',
'blanket',
'bonbon',
'book',
'boot',
'cake',
'candle',
'candy',
'castle',
'charm',
'clock',
'cocoa',
'cookie',
'crayon',
'crown',
'cupcake',
'donut',
'dream',
'fairy',
'fiddle',
'flask',
'flute',
'fountain',
'gadget',
'gem',
'gizmo',
'globe',
'goblet',
'hammock',
'harp',
'haven',
'hearth',
'honey',
'journal',
'kazoo',
'kettle',
'key',
'kite',
'lantern',
'lemon',
'lighthouse',
'locket',
'lollipop',
'mango',
'map',
'marble',
'marshmallow',
'melody',
'mitten',
'mochi',
'muffin',
'music',
'nest',
'noodle',
'oasis',
'origami',
'pancake',
'parasol',
'peach',
'pearl',
'pebble',
'pie',
'pillow',
'pinwheel',
'pixel',
'pizza',
'plum',
'popcorn',
'pretzel',
'prism',
'pudding',
'pumpkin',
'puzzle',
'quiche',
'quill',
'quilt',
'riddle',
'rocket',
'rose',
'scone',
'scroll',
'shell',
'sketch',
'snowglobe',
'sonnet',
'sparkle',
'spindle',
'sprout',
'sundae',
'swing',
'taco',
'teacup',
'teapot',
'thimble',
'toast',
'token',
'tome',
'tower',
'treasure',
'treehouse',
'trinket',
'truffle',
'tulip',
'umbrella',
'waffle',
'wand',
'whisper',
'whistle',
'widget',
'wreath',
'zephyr',
// Computer scientists
'abelson',
'adleman',
'aho',
'allen',
'babbage',
'bachman',
'backus',
'barto',
'bengio',
'bentley',
'blum',
'boole',
'brooks',
'catmull',
'cerf',
'cherny',
'church',
'clarke',
'cocke',
'codd',
'conway',
'cook',
'corbato',
'cray',
'curry',
'dahl',
'diffie',
'dijkstra',
'dongarra',
'eich',
'emerson',
'engelbart',
'feigenbaum',
'floyd',
'gosling',
'graham',
'gray',
'hamming',
'hanrahan',
'hartmanis',
'hejlsberg',
'hellman',
'hennessy',
'hickey',
'hinton',
'hoare',
'hollerith',
'hopcroft',
'hopper',
'iverson',
'kahan',
'kahn',
'karp',
'kay',
'kernighan',
'knuth',
'kurzweil',
'lamport',
'lampson',
'lecun',
'lerdorf',
'liskov',
'lovelace',
'matsumoto',
'mccarthy',
'metcalfe',
'micali',
'milner',
'minsky',
'moler',
'moore',
'naur',
'neumann',
'newell',
'nygaard',
'papert',
'parnas',
'pascal',
'patterson',
'pearl',
'perlis',
'pike',
'pnueli',
'rabin',
'reddy',
'ritchie',
'rivest',
'rossum',
'russell',
'scott',
'sedgewick',
'shamir',
'shannon',
'sifakis',
'simon',
'stallman',
'stearns',
'steele',
'stonebraker',
'stroustrup',
'sutherland',
'sutton',
'tarjan',
'thacker',
'thompson',
'torvalds',
'turing',
'ullman',
'valiant',
'wadler',
'wall',
'wigderson',
'wilkes',
'wilkinson',
'wirth',
'wozniak',
'yao',
] as const
// Verbs for the middle word - whimsical action words
const VERBS = [
'baking',
'beaming',
'booping',
'bouncing',
'brewing',
'bubbling',
'chasing',
'churning',
'coalescing',
'conjuring',
'cooking',
'crafting',
'crunching',
'cuddling',
'dancing',
'dazzling',
'discovering',
'doodling',
'dreaming',
'drifting',
'enchanting',
'exploring',
'finding',
'floating',
'fluttering',
'foraging',
'forging',
'frolicking',
'gathering',
'giggling',
'gliding',
'greeting',
'growing',
'hatching',
'herding',
'honking',
'hopping',
'hugging',
'humming',
'imagining',
'inventing',
'jingling',
'juggling',
'jumping',
'kindling',
'knitting',
'launching',
'leaping',
'mapping',
'marinating',
'meandering',
'mixing',
'moseying',
'munching',
'napping',
'nibbling',
'noodling',
'orbiting',
'painting',
'percolating',
'petting',
'plotting',
'pondering',
'popping',
'prancing',
'purring',
'puzzling',
'questing',
'riding',
'roaming',
'rolling',
'sauteeing',
'scribbling',
'seeking',
'shimmying',
'singing',
'skipping',
'sleeping',
'snacking',
'sniffing',
'snuggling',
'soaring',
'sparking',
'spinning',
'splashing',
'sprouting',
'squishing',
'stargazing',
'stirring',
'strolling',
'swimming',
'swinging',
'tickling',
'tinkering',
'toasting',
'tumbling',
'twirling',
'waddling',
'wandering',
'watching',
'weaving',
'whistling',
'wibbling',
'wiggling',
'wishing',
'wobbling',
'wondering',
'yawning',
'zooming',
] as const
/**
* Generate a cryptographically random integer in the range [0, max)
*/
function randomInt(max: number): number {
// Use crypto.randomBytes for better randomness than Math.random
const bytes = randomBytes(4)
const value = bytes.readUInt32BE(0)
return value % max
}
/**
* Pick a random element from an array
*/
function pickRandom<T>(array: readonly T[]): T {
return array[randomInt(array.length)]!
}
/**
* Generate a random word slug in the format "adjective-verb-noun"
* Example: "gleaming-brewing-phoenix", "cosmic-pondering-lighthouse"
*/
export function generateWordSlug(): string {
const adjective = pickRandom(ADJECTIVES)
const verb = pickRandom(VERBS)
const noun = pickRandom(NOUNS)
return `${adjective}-${verb}-${noun}`
}
/**
* Generate a shorter random word slug in the format "adjective-noun"
* Example: "graceful-unicorn", "cosmic-lighthouse"
*/
export function generateShortWordSlug(): string {
const adjective = pickRandom(ADJECTIVES)
const noun = pickRandom(NOUNS)
return `${adjective}-${noun}`
}