natural-english-ids

1.0.1 • Public • Published

Natural English IDs

This is a package that lets you generate natural probably-unique IDs using english words.

It allows you to specify word delimiters, capitalizations, and custom words.

A unique feature is the option to turn on memory, which will ensure that a generator will never generate two of the same ID. It achieves this using a Bloom Filter.

Installation

npm i natural-english-ids

Usage

Create a new ID Generator using:

const gen = new NEIGenerator(options)

Options takes a few parameters:

const options = {
    length: 3,
    delimiter: "-",
    capitalization: "title",
    customwords: ["dog", "abba"],
    onlycustom: false,
    nomemory: false
}

length should be an integer specifying the number of words in the generated id. Defaults to 3.

delimiter can be any string, and is what separates the words in the generated word. Defaults to "-".

capitalization can be either "lower", "upper", or "title", which are all lowercase, all uppercase, and title case respectively. Defaults to lower.

customwords is a list of strings that you would like to include in the generated word list. Defaults to the empty list.

onlycustom should be set to true if you would like to only use custom words and no others. Defaults to false.

nomemory toggles the use of an internal Bloom Filter to ensure nonduplicity of generated IDs. Defaults to false.

Generate using:

const nei = gen.generate()

Bloom Filter Hyperparameters

This package uses this implementation of a bloom filter with 32 * 256 bits and 16 hash functions by default. I don't see a real need to change these parameters but, in the future, I may let these parameters be tweaked.

Issues

I would love to support parts of speech, but I just need this working right now.

I would also like to clean the current word list (the original was borrowed from the xkcd password generator). I've removed words that could be included in problematic word combinations, but it would be nice to do a deeper clean or choose a better word list.

It'd be nice if the bloom filter could clear after it has 10 rejections in a row; that way we can protect against an overfull filter.

Contributing

Feel free to make pull requests and contribute to this project! A list of potential contributions can be found in the Issues tab.

Package Sidebar

Install

npm i natural-english-ids

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

41.3 kB

Total Files

6

Last publish

Collaborators

  • n-young