Tiny, intent-based string validation for JavaScript & TypeScript
npm install isx-intentisx is designed for developers who want clear, readable, and type-safe string validation. Instead of writing complex regex for every project, use isx to express your intent.
bash
npm install isx-intent
or
yarn add isx-intent
or
pnpm add isx-intent
`
🛠️ Usage
$3
Returns true if valid, false otherwise. Acts as a Type Guard.
`typescript
`typescript
import { isx } from 'isx-intent';
if (isx.email('hello@world.com')) {
// TypeScript knows value is a valid email string here
}
isx.url('https://google.com'); // true
isx.port(8080); // true
isx.uuid('f47ac10b...'); // true
`
$3
Throws a ValidationError if the check fails. Useful for flow control and early returns.
`typescript
`typescript
import { assert } from 'isx-intent';
try {
assert.email(userInput);
// Proceed with confidence
} catch (error) {
console.log(error.message); // "Invalid email address"
console.log(error.code); // "INVALID_EMAIL"
}
`
---
📚 API Reference
$3
- email(value): Validates email format.
- url(value): Validates URL format (supports localhost and ports).
- ip(value, version?): Validates IPv4 or IPv6.
- fqdn(value): Fully Qualified Domain Name.
$3
- password(value, options?): Defaults to min length 8. Can require special chars.
- uuid(value): RFC4122 v4 UUID.
- ulid(value): Universal Unique Lexicographically Sortable Identifier.
- cuid(value): Collision-resistant IDs.
- mongodbId(value): MongoDB ObjectId format.
$3
- creditCard(value): Validates using Luhn algorithm.
- currency(value, codes?): ISO currency codes (USD, EUR, etc.).
- iban(value): International Bank Account Number format.
$3
- json(value): Checks if string is valid parsable JSON.
- semver(value): Semantic Versioning (e.g., 1.2.3-beta.1).
- port(value): Number between 0 and 65535.
- handle(value): Social handles (e.g., @username).
- macAddress(value): Standard MAC address format.
- hexColor(value), rgbColor(value), hslColor(value): CSS color formats.
---
🛡️ Error Handling
The assert API throws a ValidationError which extends the native Error class and includes a code property for programmatic handling.
`typescript
`typescript
import { ValidationError } from 'isx-intent';
// ... inside a catch block
if (error instanceof ValidationError) {
switch (error.code) {
case 'INVALID_EMAIL':
// handle specific error
}
}
``