# otp-number

> 🔐 A lightweight and flexible JavaScript library to generate random OTPs (One-Time Passwords) for use in both frontend and backend applications.

---

## ✨ Features

- ✅ Supports digits, uppercase, and lowercase characters
- ✅ Configurable OTP length
- ✅ Works in Node.js and browser (UMD compatible)
- ✅ Zero dependencies
- 🔢 **Numeric-only OTP shortcut** with `otp_number_only(length)`

---

## 📦 Installation

```bash
npm install otp-number
```

## 🔧 Usage

const { otp_number, otp_number_only } = require('otp-number');

// Generate a 6-digit OTP with digits, uppercase, and lowercase letters (default)
const defaultOTP = otp_number();
console.log(defaultOTP); // Example: "aB3dE9"

// Generate an 8-digit numeric-only OTP using the helper function
const numericOTP = otp_number_only(8);
console.log(numericOTP); // Example: "12345678"

// Generate a 10-character OTP with only uppercase letters and digits
const customOTP = otp_number(10, { digits: true, upperCase: true, lowerCase: false });
console.log(customOTP); // Example: "A1B2C3D4E5"

// Generate a 4-character OTP with only lowercase letters
const lowercaseOTP = otp_number(4, { digits: false, upperCase: false, lowerCase: true });
console.log(lowercaseOTP); // Example: "wxyz"

// Attempting to generate an OTP with no character sets enabled will throw an error:
try {
otp_number(6, { digits: false, upperCase: false, lowerCase: false });
} catch (error) {
console.error(error.message); // Output: "At least one character set must be enabled."
}

### Numeric Only Shortcut

```js
const { otp_number_only } = require('otp-number');
console.log(otp_number_only(6)); // ➤ "920384"

## Browser (UMD)

<script src="dist/otp-generator.umd.js"></script>
<script>
  const otp = OtpGenerator.otp_number(6, { digits: true, upperCase: true });
  console.log("OTP:", otp);
</script>


## ⚙️ API
otp_number(length, options)

Parameter	Type	Default	Description
length	number	6	Length of the OTP
options.digits	boolean	true	Include digits (0-9)
options.upperCase	boolean	false	Include uppercase letters (A-Z)
options.lowerCase	boolean	false	Include lowercase letters (a-z)

## 📌 Example Outputs

otp_number();
// ➤ "729314"

otp_number(6, { digits: true, upperCase: true });
// ➤ "5J8K2Q"

otp_number(4, { lowerCase: true });
// ➤ "kfza"
otp_number_only(length = 6)

A helper function that generates a numeric-only OTP string of the specified length. This is equivalent to calling otp_number(length, { digits: true }).

## 📁 Build (for Browser Support)

Install dev dependencies:

bash
Copy
Edit
npm install --save-dev rollup @rollup/plugin-commonjs @rollup/plugin-node-resolve
Build UMD:

bash
Copy
Edit
npx rollup -c

## 🔎 Keywords

otp, otp-number, random otp, otp generator, javascript otp, nodejs otp, one-time password, verification code, auth code, frontend backend otp, browser otp, 2FA
```
