This commit is contained in:
kuberwastaken 2026-03-31 16:25:52 +05:30
commit ec53fcbe95
1905 changed files with 513762 additions and 0 deletions

800
utils/words.ts Normal file
View file

@ -0,0 +1,800 @@
/**
* 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}`
}