Skip to content
Merged

Dev #40

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
## Changelog

### [v5.20.0](https://github.com/panates/valgen/compare/v5.19.5...v5.20.0) -
### [v6.0.0](https://github.com/panates/valgen/compare/v5.20.0...v6.0.0) -

#### 🛠 Refactoring and Updates

- refactor: Improved typing exports using namespaces @Eray Hanoğlu
- refactor: Minor typing update @Eray Hanoğlu

#### 💬 General Changes

- dev: Fixed issues for new lint rules @Eray Hanoğlu

### [v5.20.0](https://github.com/panates/valgen/compare/v5.19.5...v5.20.0) - 6 April 2026

#### 🚀 New Features

Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "valgen",
"description": "Fast runtime type validator, converter and io (encoding/decoding) library",
"version": "5.20.0",
"version": "6.0.0",
"author": "Panates",
"license": "MIT",
"private": true,
Expand Down
13 changes: 5 additions & 8 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
import { Context, ExecutionOptions } from './core/index.js';
import { DatePrecision } from './rules/index.js';
import * as vg from './rules/index.js';

export * from './constants.js';
export * from './core/index.js';
export type { DatePrecision } from './rules/type-rules/is-date.js';
export type { IsObject } from './rules/type-rules/is-object.js';

const isAlpha = vg.isAlpha();
const isAlphanumeric = vg.isAlphanumeric();
Expand Down Expand Up @@ -69,18 +66,18 @@ const toDate = vg.isDate({ coerce: true });
const toDateStringValidators = new Map();
const toDateString = (
input: Date | string | number,
options?: ExecutionOptions & { trim?: DatePrecision },
options?: ExecutionOptions & { trim?: vg.isDateString.Precision },
ctx?: Context,
) => {
const trim = options?.trim ?? 'ms';
let validator = toDateStringValidators.get(trim);
const precisionMax = options?.trim ?? 'ms';
let validator = toDateStringValidators.get(precisionMax);
if (!validator) {
validator = vg.isDateString({
coerce: true,
precisionMax: trim,
precisionMax,
trim: true,
});
toDateStringValidators.set(trim, validator);
toDateStringValidators.set(precisionMax, validator);
}
return validator(input, options, ctx);
};
Expand Down
21 changes: 4 additions & 17 deletions src/rules/format-rules/is-alpha.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import {
* Check if the string contains only letters (a-zA-Z).
* @validator isAlpha
*/
export function isAlpha(options?: ValidationOptions) {
export function isAlpha(options?: isAlpha.Options) {
return validator<string, string>(
'isLowercase',
'isAlpha',
(input: unknown, context: Context, _this): Nullish<string> => {
if (typeof input === 'string' && validatorJS.isAlpha(input)) return input;
context.fail(_this, `"Value must be an alpha string`, input);
Expand All @@ -21,19 +21,6 @@ export function isAlpha(options?: ValidationOptions) {
);
}

/**
* Check if the string contains only letters and numbers.
* @validator isAlphanumeric
*/
export function isAlphanumeric(options?: ValidationOptions) {
return validator<string, string>(
'isAlphanumeric',
(input: unknown, context: Context, _this): Nullish<string> => {
if (typeof input === 'string' && validatorJS.isAlphanumeric(input)) {
return input;
}
context.fail(_this, `"Value must be an alphanumeric string`, input);
},
options,
);
export namespace isAlpha {
export interface Options extends ValidationOptions {}
}
28 changes: 28 additions & 0 deletions src/rules/format-rules/is-alphanumeric.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import validatorJS from '@browsery/validator';
import type { Nullish } from 'ts-gems';
import {
type Context,
type ValidationOptions,
validator,
} from '../../core/index.js';

/**
* Check if the string contains only letters and numbers.
* @validator isAlphanumeric
*/
export function isAlphanumeric(options?: isAlphanumeric.Options) {
return validator<string, string>(
'isAlphanumeric',
(input: unknown, context: Context, _this): Nullish<string> => {
if (typeof input === 'string' && validatorJS.isAlphanumeric(input)) {
return input;
}
context.fail(_this, `"Value must be an alphanumeric string`, input);
},
options,
);
}

export namespace isAlphanumeric {
export interface Options extends ValidationOptions {}
}
6 changes: 5 additions & 1 deletion src/rules/format-rules/is-ascii.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
* Check if the string contains ASCII chars only.
* @validator isAscii
*/
export function isAscii(options?: ValidationOptions) {
export function isAscii(options?: isAscii.Options) {
return validator<string, string>(
'isAscii',
(input: unknown, context: Context, _this): Nullish<string> => {
Expand All @@ -20,3 +20,7 @@ export function isAscii(options?: ValidationOptions) {
options,
);
}

export namespace isAscii {
export interface Options extends ValidationOptions {}
}
9 changes: 5 additions & 4 deletions src/rules/format-rules/is-base64.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,11 @@ import {
validator,
} from '../../core/index.js';

export interface Base64ValidatorOptions
extends ValidationOptions, _IsBase64Options {}

/**
* Validates if value is a "Base64" string.
* @validator isBase64
*/
export function isBase64(options?: Base64ValidatorOptions) {
export function isBase64(options?: isBase64.Options) {
return validator<string, string>(
'isBase64',
(input: unknown, context: Context, _this): Nullish<string> => {
Expand All @@ -27,3 +24,7 @@ export function isBase64(options?: Base64ValidatorOptions) {
options,
);
}

export namespace isBase64 {
export interface Options extends ValidationOptions, _IsBase64Options {}
}
6 changes: 5 additions & 1 deletion src/rules/format-rules/is-btc-address.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
* Validates if value is a BTC address.
* @validator isBtcAddress
*/
export function isBtcAddress(options?: ValidationOptions) {
export function isBtcAddress(options?: isBtcAddress.Options) {
return validator<string, string>(
'isBtcAddress',
(input: unknown, context: Context, _this): Nullish<string> => {
Expand All @@ -22,3 +22,7 @@ export function isBtcAddress(options?: ValidationOptions) {
options,
);
}

export namespace isBtcAddress {
export interface Options extends ValidationOptions {}
}
9 changes: 5 additions & 4 deletions src/rules/format-rules/is-credit-card.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,11 @@ import {
validator,
} from '../../core/index.js';

export interface CreditCardValidatorOptions
extends ValidationOptions, _IsCreditCardOptions {}

/**
* Validates if value is a credit card number
* @validator isCreditCard
*/
export function isCreditCard(options?: CreditCardValidatorOptions) {
export function isCreditCard(options?: isCreditCard.Options) {
return validator<string, string>(
'isCreditCard',
(input: unknown, context: Context, _this): Nullish<string> => {
Expand All @@ -30,3 +27,7 @@ export function isCreditCard(options?: CreditCardValidatorOptions) {
options,
);
}

export namespace isCreditCard {
export interface Options extends ValidationOptions, _IsCreditCardOptions {}
}
6 changes: 5 additions & 1 deletion src/rules/format-rules/is-decimal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
* such as `0.1`, `.3`, `1.1`, `1.00003`, `4.0` etc.
* @validator isDecimal
*/
export function isDecimal(options?: ValidationOptions) {
export function isDecimal(options?: isDecimal.Options) {
return validator<string, string>(
'isDecimal',
(input: unknown, context: Context, _this): Nullish<string> => {
Expand All @@ -23,3 +23,7 @@ export function isDecimal(options?: ValidationOptions) {
options,
);
}

export namespace isDecimal {
export interface Options extends ValidationOptions {}
}
6 changes: 5 additions & 1 deletion src/rules/format-rules/is-ean.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
* Validates if value is an EAN (European Article Number)
* @validator isEAN
*/
export function isEAN(options?: ValidationOptions) {
export function isEAN(options?: isEAN.Options) {
return validator<string, string>(
'isEAN',
(input: unknown, context: Context, _this): Nullish<string> => {
Expand All @@ -24,3 +24,7 @@ export function isEAN(options?: ValidationOptions) {
options,
);
}

export namespace isEAN {
export interface Options extends ValidationOptions {}
}
Loading