# nid

> Nice clean-mouthed random id generation, without any swearing!

Latest version **2.0.1** (published 2022-12-29) · MIT license · 0 weekly downloads

## Install

```sh
npm install nid
pnpm add nid
yarn add nid
bun add nid
```

## Health

**Score 40/100 (D)** — status: abandoned.

Positive: has types; no vulnerabilities; high maintenance score; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 2.0.1 |
| Published | 2022-12-29 |
| First published | 2013-02-07 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=12 |
| Dependencies | 0 |
| Unpacked size | 20.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 33 |
| Author | Richard Rodger |
| Maintainers | rjrodger |
| Keywords | random, unique, id, identifier, generate, generator, generation, swear, curse |

## Links

- npm: https://www.npmjs.com/package/nid
- Repository: https://github.com/rjrodger/nid
- Issues: https://github.com/rjrodger/nid/issues
- npm.io page: https://npm.io/package/nid

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 2.0.1 (latest) — 2022-12-29
- 2.0.0 — 2022-05-12
- 1.3.3 — 2020-09-17
- 1.3.2 — 2020-09-17
- 1.3.1 — 2020-09-17
- 1.3.0 — 2020-09-17
- 1.2.1 — 2020-09-04
- 1.2.0 — 2020-09-04
- 1.1.0 — 2020-02-23
- 0.4.0 — 2020-02-22
- 0.3.2 — 2014-03-06
- 0.3.1 — 2014-03-05
- 0.3.0 — 2013-02-08
- 0.2.0 — 2013-02-08
- 0.1.0 — 2013-02-07

## README

# nid

### Nice clean-mouthed random id generation, without any swearing!

A Node.js module that generates random identifiers for public consumption. Swear words not included.

[![npm version](https://img.shields.io/npm/v/nid.svg)](https://npmjs.com/package/nid)
[![build](https://github.com/rjrodger/nid/actions/workflows/build.yml/badge.svg)](https://github.com/rjrodger/nid/actions/workflows/build.yml)
[![Coverage Status](https://coveralls.io/repos/github/rjrodger/nid/badge.svg?branch=main)](https://coveralls.io/github/rjrodger/nid?branch=main)
[![Known Vulnerabilities](https://snyk.io/test/github/rjrodger/nid/badge.svg)](https://snyk.io/test/github/rjrodger/nid)
[![DeepScan grade](https://deepscan.io/api/teams/5016/projects/21043/branches/592913/badge/grade.svg)](https://deepscan.io/dashboard#view=project&tid=5016&pid=21043&bid=592913)
[![Maintainability](https://api.codeclimate.com/v1/badges/7334f15641ad06bfc86d/maintainability)](https://codeclimate.com/github/rjrodger/nid/maintainability)

| ![Voxgig](https://www.voxgig.com/res/img/vgt01r.png) | This open source module is sponsored and supported by [Voxgig](https://www.voxgig.com). |
|---|---|



### What it Does

This module is useful for custom short links, password generation and
any sort of unique tag an end user might see.

By default the [big seven curse words](http://en.wikipedia.org/wiki/Seven_dirty_words) are avoided
(thanks [@dshaw](http://twitter.com/dshaw)!). The [Battlestar Galactica version](http://en.battlestarwiki.org/wiki/Frak) of one of the big seven is also avoided.

NOTE: this module is *not* cryptographically secure and should only be used in low-risk environments.


### Quick example

```JavaScript
var nid = require('nid')

// generate a 6 character alphanumberic id, like: ytnzt2
console.log( nid() )

// generate a 3 character alphanumberic id, like: 5rg
console.log( nid(3) )

```


## Install

```sh
npm install nid
```


## Length

You can change the length of the identifier string by passing an
integer to _nid_, as per the quick example above. The default
alphanumeric alphabet is used.


## Options

You can change the ids generated by passing an options object to the
_nid_ function. A new, custom, function is returned. For example:

```JavaScript
var mynid = require('nid')({length:8})

// generate an 8 character alphanumberic id, like: qnzvetvp
console.log( mynid() )
```

You have the following options:

   * _length_: number of characters in the id string
   * _alphabet_: a string containing the set of characters in the id, e.g. 1234567890abcdef
   * _curses_: specify the list of curse words to avoid (you can use _exclude_ as an alias if you don't want to sound quaint)

You can specify the curses as:

   * an array of strings: ["gosh","darn"]
   * a CSV formatted string: "gosh, darn"
   * a regular expression: matches are excluded
   * a function: first arg is the proposed id, return true to exclude

As a convenience you can use the following alphabet shortcuts:

   * _hex_: alphabet is '0123456789abcdef'
   * _HEX_: alphabet is '0123456789ABCDEF'

### Examples:

```JavaScript
var nid = require('nid')

var nid_ABC = nid({alphabet:'ABC'})
console.log(nid_ABC()) // prints something like BCCABB

var nid_hex = nid({hex:1})
console.log(nid_hex()) // prints something like 47b5df

var nid_noa = nid({curses:/a/})
console.log(nid_noa()) // never includes an 'a' character
```

## How it Works

Keep getting a random character from a given alphabet of characters,
until you have enough to meet the length requirement. Then check if it
contains a curse word (case-insensitive). If so, try again.

---
_Source: https://npm.io/package/nid · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
