npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

nid

v2.0.1

Published

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

Downloads

46,728

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 build Coverage Status Known Vulnerabilities DeepScan grade Maintainability

| Voxgig | This open source module is sponsored and supported by Voxgig. | |---|---|

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 are avoided (thanks @dshaw!). The Battlestar Galactica version 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

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

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:

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:

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.