# @ack_inc/rand-str

> Generate a random string of specified length, and satisfying specified constraints

Latest version **1.0.2** (published 2021-05-10) · MIT license · 0 weekly downloads

## Install

```sh
npm install @ack_inc/rand-str
pnpm add @ack_inc/rand-str
yarn add @ack_inc/rand-str
bun add @ack_inc/rand-str
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.2 |
| Published | 2021-05-10 |
| First published | 2021-05-07 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=12 |
| Dependencies | 0 |
| Unpacked size | 7.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Anirudh Nimmagadda |
| Maintainers | ack_inc |
| Keywords | generate random, generate random string, generate random token, random string, random string generator, random token, random token generator |

## Links

- npm: https://www.npmjs.com/package/@ack_inc/rand-str
- Repository: https://github.com/ackinc/node-rand-str
- Homepage: https://github.com/ackinc/node-rand-str#readme
- Issues: https://github.com/ackinc/node-rand-str/issues
- npm.io page: https://npm.io/package/@ack_inc/rand-str

## Alternatives

- [@mce/gif](https://npm.io/package/@mce/gif.md) — 2.6K weekly downloads
- [cleanse](https://npm.io/package/cleanse.md) — 173 weekly downloads
- [str](https://npm.io/package/str.md) — 127 weekly downloads
- [naming](https://npm.io/package/naming.md) — 95 weekly downloads
- [tap-telco-api](https://npm.io/package/tap-telco-api.md) — 19 weekly downloads

## Recent versions

- 1.0.2 (latest) — 2021-05-10
- 1.0.1 — 2021-05-09
- 1.0.0 — 2021-05-07

## README

# node-rand-str

Generate a random string (lower/upper alphabets, digits, symbols) of specified length,
and satisfying the specified constraints

If no constraints are specified, the library assumes all characters are allowed

Main use case: password or temporary token generation

## Deprecation Notice

As of 9 May 2021, this function has been subsumed into the [ack_inc/node-utils](https://www.npmjs.com/package/@ack_inc/utils) repo

This package will no longer be updated

## Usage

```
const rsg = require('@ack_inc/rand-str');
console.log(rsg(<anything but a whole number>)); //=> throws TypeError
console.log(rsg(0)); //=> ""
console.log(rsg(5)); //=> "3`8aE"
console.log(rsg(5, { lowercase: true })); //=> "fewjk"
console.log(rsg(5, { lowercase: true, uppercase: true, digits: true, symbols: true })); //=> "%q31G"
```

## API

### rsg(nChars, constraints)

Generate a string of length `nChars` that satisfies `constraints`

#### Parameters

###### nChars

Required. Must be a whole number.

###### constraints

Object specifying what characters can be in the generated string.
It can have the following keys:

| Key       | Type    | Effect                                  |
| --------- | ------- | --------------------------------------- |
| lowercase | Boolean | if `true`, include lowercase characters |
| uppercase | Boolean | if `true`, include uppercase chracters  |
| digits    | Boolean | if `true`, include digits               |
| symbols   | Boolean | if `true`, include symbols              |

If `constraints` is not provided or is empty, it is assumed that all characters are allowed

## To Do

- Constraint: whitelisted chars
- Constraint: blacklisted chars
- Constraint: symbols that can be part of a url-component (See https://stackoverflow.com/questions/695438/what-are-the-safe-characters-for-making-urls)

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