8000 GitHub - CorentinTh/friendly-ids: Generate human readable unique identifiers.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

CorentinTh/friendly-ids

Repository files navigation

@corentinth/friendly-ids

@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

Features

  • 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.

Installation

To install the package, use npm or yarn:

pnpm install @corentinth/friendly-ids

npm install @corentinth/friendly-ids

yarn add @corentinth/friendly-ids

Usage

Generate a friendly ID

import { generateId } from '@corentinth/friendly-ids';

const id = generateId();

console.log(id);
// fierce-zebra-456

Create a custom generator

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

Datasets

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', ... ]

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

Testing

You can run the tests with the following command:

# one shot
pnpm run test

# watch mode
pnpm run test:watch

License

This project is licensed under the MIT License. See the LICENSE file for more information.

Credits and Acknowledgements

This project is crafted with ❤️ by Corentin Thomasset. If you find this project helpful, please consider supporting my work.

About

Generate human readable unique identifiers.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0