@smokyy14/validators-js
v0.1.4
Published
Unified validators library (email, URL, IP, credit cards, UUID, hashes and more), inspired by Python's validators package.
Maintainers
Readme
@smokyy14/validators-js
A validators library with a unified, consistent API, inspired by Python's validators package. In npm, this kind of validation is scattered across dozens of separate packages, each with its own signature and conventions — here everything lives under a single style.
import { isEmail, isURL, isCreditCard } from '@smokyy14/validators-js';
isEmail('[email protected]'); // true
isURL('https://example.com'); // true
isCreditCard('4111111111111111'); // { valid: true, type: 'visa' }Why
- One API: every function follows the
isX(value, options?)pattern. - Zero runtime dependencies.
- Native TypeScript, with exported types for every
optionsobject. - Tree-shakeable: only import what you use.
- ESM + CJS: works in any modern or legacy Node project.
Installation
npm install @smokyy14/validators-jsAvailable validators
| Function | Description |
|---|---|
| isEmail(value, options?) | Validates email addresses |
| isURL(value, options?) | Validates URLs (protocol, host, IP, port) |
| isDomain(value, options?) | Validates domain names (FQDN) |
| isIP(value, options?) / isIPv4(value) / isIPv6(value) | Validates IP addresses |
| isCreditCard(value) | Validates a card number (Luhn) and detects the brand |
| isUUID(value, options?) | Validates UUIDs, with support for versions (1-5) and the nil UUID |
| isMACAddress(value, options?) | Validates MAC addresses |
| isSlug(value, options?) | Validates URL-style slugs |
| isHash(value, algorithm) | Validates hash format (md5, sha1, sha256, sha384, sha512) |
| isLength(value, options?) | Validates that a string's length falls within a range |
Examples
isEmail('[email protected]'); // true
isEmail('user@localhost', { requireTld: false }); // trueURL
isURL('https://example.com'); // true
isURL('ftp://files.example.com', { protocols: ['ftp'] }); // true
isURL('http://127.0.0.1', { allowIP: true }); // trueCredit card
const result = isCreditCard('4111111111111111');
// { valid: true, type: 'visa' }UUID
isUUID('123e4567-e89b-42d3-a456-426614174000', { version: 4 }); // true
isUUID('00000000-0000-0000-0000-000000000000', { allowNil: true }); // trueHash
isHash('d41d8cd98f00b204e9800998ecf8427e', 'md5'); // trueSee more examples in examples/basic-usage.ts.
Development
npm install # install dependencies
npm test # run tests (vitest)
npm run build # generate dist/ (ESM + CJS + types)
npm run lint # run eslintContributing
PRs are welcome. If you add a new validator, follow the existing pattern:
- Function in
src/validators/<name>.ts. optionstypes insrc/types.ts.- Export in
src/index.ts. - Tests in
tests/<name>.test.ts.
License
MIT
