UNPKG

codenames

Version:

Converts numerical values into human-readable names following a specific theme (e.g., cities)

402 lines (336 loc) 8.72 kB
/** * Auto-generated theme aggregator file. Do not edit manually. * Run 'bun run scripts/generate.ts all' to regenerate. * * SPDX-FileCopyrightText: 2025-present Kriasoft * SPDX-License-Identifier: MIT */ import adjectives10 from "./adjectives-10.js"; import adjectives20 from "./adjectives-20.js"; import adjectives30 from "./adjectives-30.js"; import adjectives50 from "./adjectives-50.js"; import adjectives100 from "./adjectives-100.js"; import animals10 from "./animals-10.js"; import animals20 from "./animals-20.js"; import animals30 from "./animals-30.js"; import animals50 from "./animals-50.js"; import animals100 from "./animals-100.js"; import cities10 from "./cities-10.js"; import cities20 from "./cities-20.js"; import cities30 from "./cities-30.js"; import cities50 from "./cities-50.js"; import cities100 from "./cities-100.js"; import clothing10 from "./clothing-10.js"; import clothing20 from "./clothing-20.js"; import clothing30 from "./clothing-30.js"; import clothing50 from "./clothing-50.js"; import clothing100 from "./clothing-100.js"; import colors10 from "./colors-10.js"; import colors20 from "./colors-20.js"; import colors30 from "./colors-30.js"; import colors50 from "./colors-50.js"; import colors100 from "./colors-100.js"; import countries10 from "./countries-10.js"; import countries20 from "./countries-20.js"; import countries30 from "./countries-30.js"; import countries50 from "./countries-50.js"; import countries100 from "./countries-100.js"; import elements10 from "./elements-10.js"; import elements20 from "./elements-20.js"; import elements30 from "./elements-30.js"; import elements50 from "./elements-50.js"; import elements100 from "./elements-100.js"; import emotions10 from "./emotions-10.js"; import emotions20 from "./emotions-20.js"; import emotions30 from "./emotions-30.js"; import emotions50 from "./emotions-50.js"; import emotions100 from "./emotions-100.js"; import food10 from "./food-10.js"; import food20 from "./food-20.js"; import food30 from "./food-30.js"; import food50 from "./food-50.js"; import food100 from "./food-100.js"; import gems10 from "./gems-10.js"; import gems20 from "./gems-20.js"; import gems30 from "./gems-30.js"; import gems50 from "./gems-50.js"; import gems100 from "./gems-100.js"; import nature10 from "./nature-10.js"; import nature20 from "./nature-20.js"; import nature30 from "./nature-30.js"; import nature50 from "./nature-50.js"; import nature100 from "./nature-100.js"; import snacks10 from "./snacks-10.js"; import snacks20 from "./snacks-20.js"; import snacks30 from "./snacks-30.js"; import snacks50 from "./snacks-50.js"; import snacks100 from "./snacks-100.js"; export type Theme = | "adjectives-10" | "adjectives-20" | "adjectives-30" | "adjectives-50" | "adjectives-100" | "animals-10" | "animals-20" | "animals-30" | "animals-50" | "animals-100" | "cities-10" | "cities-20" | "cities-30" | "cities-50" | "cities-100" | "clothing-10" | "clothing-20" | "clothing-30" | "clothing-50" | "clothing-100" | "colors-10" | "colors-20" | "colors-30" | "colors-50" | "colors-100" | "countries-10" | "countries-20" | "countries-30" | "countries-50" | "countries-100" | "elements-10" | "elements-20" | "elements-30" | "elements-50" | "elements-100" | "emotions-10" | "emotions-20" | "emotions-30" | "emotions-50" | "emotions-100" | "food-10" | "food-20" | "food-30" | "food-50" | "food-100" | "gems-10" | "gems-20" | "gems-30" | "gems-50" | "gems-100" | "nature-10" | "nature-20" | "nature-30" | "nature-50" | "nature-100" | "snacks-10" | "snacks-20" | "snacks-30" | "snacks-50" | "snacks-100"; /** * Array of all available theme names for discoverability and validation. */ export const themes: readonly Theme[] = [ "adjectives-10", "adjectives-20", "adjectives-30", "adjectives-50", "adjectives-100", "animals-10", "animals-20", "animals-30", "animals-50", "animals-100", "cities-10", "cities-20", "cities-30", "cities-50", "cities-100", "clothing-10", "clothing-20", "clothing-30", "clothing-50", "clothing-100", "colors-10", "colors-20", "colors-30", "colors-50", "colors-100", "countries-10", "countries-20", "countries-30", "countries-50", "countries-100", "elements-10", "elements-20", "elements-30", "elements-50", "elements-100", "emotions-10", "emotions-20", "emotions-30", "emotions-50", "emotions-100", "food-10", "food-20", "food-30", "food-50", "food-100", "gems-10", "gems-20", "gems-30", "gems-50", "gems-100", "nature-10", "nature-20", "nature-30", "nature-50", "nature-100", "snacks-10", "snacks-20", "snacks-30", "snacks-50", "snacks-100", ] as const; /** * Converts a number to a human-readable codename using the specified theme. * * @param input - The number to convert * @param theme - The theme name to use * @returns A string codename * * @example * ```typescript * import codename from "codenames/all"; * codename(123, "cities-20") // "tokyo" * codename(456, "animals-50") // "cat" * ``` */ export function codename(input: number, theme: Theme): string { switch (theme) { case "adjectives-10": return adjectives10(input); case "adjectives-20": return adjectives20(input); case "adjectives-30": return adjectives30(input); case "adjectives-50": return adjectives50(input); case "adjectives-100": return adjectives100(input); case "animals-10": return animals10(input); case "animals-20": return animals20(input); case "animals-30": return animals30(input); case "animals-50": return animals50(input); case "animals-100": return animals100(input); case "cities-10": return cities10(input); case "cities-20": return cities20(input); case "cities-30": return cities30(input); case "cities-50": return cities50(input); case "cities-100": return cities100(input); case "clothing-10": return clothing10(input); case "clothing-20": return clothing20(input); case "clothing-30": return clothing30(input); case "clothing-50": return clothing50(input); case "clothing-100": return clothing100(input); case "colors-10": return colors10(input); case "colors-20": return colors20(input); case "colors-30": return colors30(input); case "colors-50": return colors50(input); case "colors-100": return colors100(input); case "countries-10": return countries10(input); case "countries-20": return countries20(input); case "countries-30": return countries30(input); case "countries-50": return countries50(input); case "countries-100": return countries100(input); case "elements-10": return elements10(input); case "elements-20": return elements20(input); case "elements-30": return elements30(input); case "elements-50": return elements50(input); case "elements-100": return elements100(input); case "emotions-10": return emotions10(input); case "emotions-20": return emotions20(input); case "emotions-30": return emotions30(input); case "emotions-50": return emotions50(input); case "emotions-100": return emotions100(input); case "food-10": return food10(input); case "food-20": return food20(input); case "food-30": return food30(input); case "food-50": return food50(input); case "food-100": return food100(input); case "gems-10": return gems10(input); case "gems-20": return gems20(input); case "gems-30": return gems30(input); case "gems-50": return gems50(input); case "gems-100": return gems100(input); case "nature-10": return nature10(input); case "nature-20": return nature20(input); case "nature-30": return nature30(input); case "nature-50": return nature50(input); case "nature-100": return nature100(input); case "snacks-10": return snacks10(input); case "snacks-20": return snacks20(input); case "snacks-30": return snacks30(input); case "snacks-50": return snacks50(input); case "snacks-100": return snacks100(input); default: throw new Error( `Unknown theme: ${theme}. Available themes: ${themes.join(", ")}`, ); } } export default codename;