feat: build

This commit is contained in:
claude-code-best
2026-03-31 19:22:47 +08:00
commit f90eee85d8
1906 changed files with 514339 additions and 0 deletions

800
src/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}`
}