Skip to content

pedramsafaei/obscure-string

Repository files navigation

🕶️ obscure-string

NPM Version Build Status License Types Included Bundle Size

A tiny utility to mask part of a string — perfect for hiding secrets, emails, API keys, and IDs. Fully customizable and zero dependencies.


✨ Features

  • 🔐 Hide sensitive values in logs and UIs
  • ⚙️ Customizable mask char, prefix, and suffix lengths
  • 🪶 Zero dependencies (<1KB gzipped)
  • 🧪 Fully tested with edge case handling
  • 🧠 TypeScript definitions included
  • 📦 Supports CommonJS, ESM, Node.js, bundlers
  • 🖥️ CLI support coming soon

📦 Install

npm install obscure-string
# or
yarn add obscure-string

🚀 Quick Start

const { obscureString } = require('obscure-string');

obscureString('mysecretkey');
// → 'mys*****key'

obscureString('[email protected]', {
  prefixLength: 2,
  suffixLength: 4,
  maskChar: '#',
});
// → 'jo##############.com'

⚙️ Options

Option Type Default Description
maskChar string * Character used for masking
prefixLength number 3 Visible characters at the beginning
suffixLength number 3 Visible characters at the end

If the input string is shorter than prefixLength + suffixLength, it's returned unchanged.


🧪 Examples

obscureString('mysecretkey');
// → 'mys*****key'

obscureString('supersecretvalue', { prefixLength: 2, suffixLength: 2 });
// → 'su************ue'

obscureString('veryshort', { prefixLength: 5, suffixLength: 5 });
// → 'veryshort' (too short to mask)

obscureString(null);
// → '' (non-string input)

obscureString('1234567890', { prefixLength: 2, suffixLength: 2 });
// → '12******90'

🔠 TypeScript Support

export function obscureString(
  str: string,
  options?: {
    maskChar?: string;
    prefixLength?: number;
    suffixLength?: number;
  }
): string;

🧪 Running Tests

npm test

Uses Jest for unit testing. See __tests__/ for test cases.


🧹 Formatting

npm run format

Uses Prettier with .prettierrc config.


🖥️ CLI (Coming Soon)

A CLI version is planned:

npx obscure-string "my-secret-token" --prefix 2 --suffix 4 --char "#"

👥 Contributing

Contributions welcome!

  1. 🍴 Fork the repo
  2. 🛠 Create a feature branch
  3. ✅ Add tests and update docs
  4. 🚀 Open a pull request

✅ Roadmap

  • Base string masking
  • TypeScript support
  • Prettier formatting
  • Jest test suite
  • CLI via npx
  • GitHub Actions CI
  • Optional string-type detectors (email, token, etc.)
  • VSCode extension (stretch)

🧾 License

MIT © PDR


🌍 Related Packages


Made with ❤️ to keep your secrets secret.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published