@corentinth/friendly-ids
is a lib that generates human-readable IDs for your projects. It is designed to be simple, fast, and easy to use.
import { generateId } from '@corentinth/friendly-ids';
const id = generateId();
console.log(id);
// fierce-zebra-456
- 78,648,000 combinations: The default generator can generate up to 78,648,000 unique IDs (348 nouns x 226 adjectives x 1000 numbers).
- Customizable: You can create your own generator with a custom separator and random int generator.
- No dependencies: The lib has no dependencies and is lightweight.
- TypeScript support: The lib is written in TypeScript and comes with type definitions.
- Tree-shakable: The lib is tree-shakable and only includes the code you use.
- Datasets: Each words is strictly letters, no special characters.
To install the package, use npm or yarn:
pnpm install @corentinth/friendly-ids
npm install @corentinth/friendly-ids
yarn add @corentinth/friendly-ids
import { generateId } from '@corentinth/friendly-ids';
const id = generateId();
console.log(id);
// fierce-zebra-456
import { createIdGenerator } from '@corentinth/friendly-ids';
const generateId = createIdGenerator();
const id = generateId();
console.log(id);
// fierce-zebra-456
With a custom separator:
import { createIdGenerator } from '@corentinth/friendly-ids';
const generateId = createIdGenerator({ separator: '_' });
const id = generateId();
console.log(id);
// brave_horse_537
All options:
import { createIdGenerator, adjectives } from '@corentinth/friendly-ids';
const generateId = createIdGenerator({
separator: '~',
// A list of chunks generators, each generator is a function that provides random helpers and expects a string or number as a return value
chunks: [
({ getRandomItem }) => getRandomItem(adjectives),
({ getRandomItem }) => getRandomItem(['foo', 'bar', 'baz']),
({ getRandomInt }) => getRandomInt({ min: 50, max: 100 }),
({ getRandomItem }) => getRandomItem(['a', 'b', 'c']),
],
// A custom implementation of the random int generator, by default based on Math.random
getRandomInt: ({ min, max }) => /* your implementation */,
});
const id = generateId();
console.log(id);
// fierce~foo~78~b
The lib comes with two datasets: adjectives
and animals
.
You can use them to customize your generator:
import { animals, adjectives } from '@corentinth/friendly-ids';
console.log(adjectives);
// [ 'adaptable', 'adventurous', 'affable', 'affectionate', 'afraid', ... ]
console.log(animals);
// [ 'albatross', 'alligator', 'alpaca', 'ant', 'anteater', ... ]
Contributions are welcome! Feel free to open issues or submit pull requests.
You can run the tests with the following command:
# one shot
pnpm run test
# watch mode
pnpm run test:watch
This project is licensed under the MIT License. See the LICENSE file for more information.
This project is crafted with ❤️ by Corentin Thomasset. If you find this project helpful, please consider supporting my work.