Skip to content

Commit 5dc15ff

Browse files
chore: remove validation function
1 parent ee644aa commit 5dc15ff

22 files changed

+62
-163
lines changed

src/types/base.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export interface ValidationResult {
2222

2323
export interface ValidationRule<T> {
2424
name: string
25-
test: (value: T | null | undefined) => boolean
25+
test: (value: T) => boolean
2626
message: string
2727
params?: Record<string, any>
2828
}
@@ -31,8 +31,8 @@ export interface Validator<T> {
3131
name: ValidationNames
3232
isRequired: boolean
3333
getRules: () => ValidationRule<T>[]
34-
test: (value: T | null | undefined) => boolean
35-
validate: (value: T | undefined | null) => ValidationResult
34+
test: (value: T) => boolean
35+
validate: (value: T) => ValidationResult
3636
required: () => this
3737
optional: () => this
3838
}

src/validators/arrays.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export class ArrayValidator<T> extends BaseValidator<T[]> implements ArrayValida
1616
min(length: number): this {
1717
return this.addRule({
1818
name: 'min',
19-
test: (value: T[] | null | undefined) => {
19+
test: (value: T[]) => {
2020
if (value === null || value === undefined)
2121
return false
2222
return value.length >= length
@@ -29,7 +29,7 @@ export class ArrayValidator<T> extends BaseValidator<T[]> implements ArrayValida
2929
max(length: number): this {
3030
return this.addRule({
3131
name: 'max',
32-
test: (value: T[] | null | undefined) => {
32+
test: (value: T[]) => {
3333
if (value === null || value === undefined)
3434
return false
3535
return value.length <= length
@@ -42,7 +42,7 @@ export class ArrayValidator<T> extends BaseValidator<T[]> implements ArrayValida
4242
length(length: number): this {
4343
return this.addRule({
4444
name: 'length',
45-
test: (value: T[] | null | undefined) => {
45+
test: (value: T[]) => {
4646
if (value === null || value === undefined)
4747
return false
4848
return value.length === length
@@ -55,7 +55,7 @@ export class ArrayValidator<T> extends BaseValidator<T[]> implements ArrayValida
5555
each(validator: Validator<T>): this {
5656
return this.addRule({
5757
name: 'each',
58-
test: (value: T[] | null | undefined) => {
58+
test: (value: T[]) => {
5959
if (value === null || value === undefined)
6060
return false
6161
return value.every(item => validator.test(item))
@@ -67,7 +67,7 @@ export class ArrayValidator<T> extends BaseValidator<T[]> implements ArrayValida
6767
unique(): this {
6868
return this.addRule({
6969
name: 'unique',
70-
test: (value: T[] | null | undefined) => {
70+
test: (value: T[]) => {
7171
if (value === null || value === undefined)
7272
return false
7373
const seen = new Set()

src/validators/base.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export abstract class BaseValidator<T> implements Validator<T> {
2727
return this
2828
}
2929

30-
validate(value: T | undefined | null): ValidationResult {
30+
validate(value: T): ValidationResult {
3131
const errors: ValidationError[] = []
3232

3333
if (!this.isRequired && (value === undefined || value === null || value === '')) {
@@ -68,7 +68,7 @@ export abstract class BaseValidator<T> implements Validator<T> {
6868
return this.rules
6969
}
7070

71-
test(value: T | null | undefined): boolean {
71+
test(value: T): boolean {
7272
return this.validate(value).valid
7373
}
7474

src/validators/binary.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export class BinaryValidator extends BaseValidator<string> implements BinaryVali
88
super()
99
this.addRule({
1010
name: 'binary',
11-
test: (value: unknown): value is string => {
11+
test: (value: string) => {
1212
if (typeof value !== 'string') {
1313
return false
1414
}

src/validators/blob.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export class BlobValidator extends BaseValidator<string> implements BlobValidato
88
super()
99
this.addRule({
1010
name: 'blob',
11-
test: (value: unknown): value is string => {
11+
test: (value: string) => {
1212
if (typeof value !== 'string') {
1313
return false
1414
}

src/validators/datetimes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export class DatetimeValidator extends BaseValidator<Date> implements DatetimeVa
88
super()
99
this.addRule({
1010
name: 'datetime',
11-
test: (value: unknown): value is Date => {
11+
test: (value: Date) => {
1212
if (!(value instanceof Date)) {
1313
return false
1414
}

src/validators/decimal.ts

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export class DecimalValidator extends NumberValidator implements DecimalValidato
99
super()
1010
this.addRule({
1111
name: 'decimal',
12-
test: (value: unknown): value is number => {
12+
test: (value: number) => {
1313
// First check if it's a number
1414
if (typeof value !== 'number' || Number.isNaN(value) || !Number.isFinite(value)) {
1515
return false
@@ -21,15 +21,10 @@ export class DecimalValidator extends NumberValidator implements DecimalValidato
2121
})
2222
}
2323

24-
// Override test method to handle type checking
25-
test(value: unknown): boolean {
26-
return this.validate(value as number).valid
27-
}
28-
2924
min(min: number): this {
3025
return this.addRule({
3126
name: 'min',
32-
test: (value: number | null | undefined) => {
27+
test: (value: number) => {
3328
if (typeof value !== 'number')
3429
return false
3530
return value >= min
@@ -42,7 +37,7 @@ export class DecimalValidator extends NumberValidator implements DecimalValidato
4237
max(max: number): this {
4338
return this.addRule({
4439
name: 'max',
45-
test: (value: number | null | undefined) => {
40+
test: (value: number) => {
4641
if (typeof value !== 'number')
4742
return false
4843
return value <= max
@@ -55,7 +50,7 @@ export class DecimalValidator extends NumberValidator implements DecimalValidato
5550
length(length: number): this {
5651
return this.addRule({
5752
name: 'length',
58-
test: (value: number | null | undefined) => {
53+
test: (value: number) => {
5954
if (typeof value !== 'number')
6055
return false
6156
return value.toString().length === length
@@ -68,7 +63,7 @@ export class DecimalValidator extends NumberValidator implements DecimalValidato
6863
positive(): this {
6964
return this.addRule({
7065
name: 'positive',
71-
test: (value: number | null | undefined) => {
66+
test: (value: number) => {
7267
if (typeof value !== 'number')
7368
return false
7469
return value > 0
@@ -80,7 +75,7 @@ export class DecimalValidator extends NumberValidator implements DecimalValidato
8075
negative(): this {
8176
return this.addRule({
8277
name: 'negative',
83-
test: (value: number | null | undefined) => {
78+
test: (value: number) => {
8479
if (typeof value !== 'number')
8580
return false
8681
return value < 0
@@ -92,7 +87,7 @@ export class DecimalValidator extends NumberValidator implements DecimalValidato
9287
divisibleBy(divisor: number): this {
9388
return this.addRule({
9489
name: 'divisibleBy',
95-
test: (value: number | null | undefined) => {
90+
test: (value: number) => {
9691
if (typeof value !== 'number')
9792
return false
9893
return isDivisibleBy(String(value), divisor)
@@ -102,25 +97,13 @@ export class DecimalValidator extends NumberValidator implements DecimalValidato
10297
})
10398
}
10499

105-
custom(fn: (value: number | null | undefined) => boolean, message: string): this {
100+
custom(fn: (value: number) => boolean, message: string): this {
106101
return this.addRule({
107102
name: 'custom',
108103
test: fn,
109104
message,
110105
})
111106
}
112-
113-
validate(value: number | undefined | null): any {
114-
// Only allow actual numbers
115-
if (typeof value !== 'number' || Number.isNaN(value)) {
116-
const error = { message: 'This field is required' }
117-
return this.isPartOfShape
118-
? { valid: false, errors: { [this.fieldName]: [error] } }
119-
: { valid: false, errors: [error] }
120-
}
121-
// Otherwise, use the base validation
122-
return super.validate(value)
123-
}
124107
}
125108

126109
// Export a function to create decimal validators

src/validators/enums.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export class EnumValidator<T extends string | number> extends BaseValidator<T> i
1111
this.allowedValues = allowedValues
1212
this.addRule({
1313
name: 'enum',
14-
test: (value: unknown): value is T => this.allowedValues.includes(value as T),
14+
test: (value: T) => this.allowedValues.includes(value),
1515
message: 'Must be one of: {values}',
1616
params: { values: this.allowedValues.join(', ') },
1717
})

src/validators/float.ts

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import type { FloatOptions, FloatValidatorType, ValidationNames } from '../types'
1+
import type { FloatValidatorType, ValidationNames } from '../types'
22
import isDivisibleBy from '../lib/isDivisibleBy'
3-
import { BaseValidator } from './base'
43
import { NumberValidator } from './numbers'
54

65
export class FloatValidator extends NumberValidator implements FloatValidatorType {
@@ -25,14 +24,10 @@ export class FloatValidator extends NumberValidator implements FloatValidatorTyp
2524
})
2625
}
2726

28-
test(value: unknown): boolean {
29-
return this.validate(value as number).valid
30-
}
31-
3227
min(min: number): this {
3328
return this.addRule({
3429
name: 'min',
35-
test: (value: number | null | undefined) => {
30+
test: (value: number) => {
3631
if (typeof value !== 'number')
3732
return false
3833
return value >= min
@@ -45,7 +40,7 @@ export class FloatValidator extends NumberValidator implements FloatValidatorTyp
4540
max(max: number): this {
4641
return this.addRule({
4742
name: 'max',
48-
test: (value: number | null | undefined) => {
43+
test: (value: number) => {
4944
if (typeof value !== 'number')
5045
return false
5146
return value <= max
@@ -58,7 +53,7 @@ export class FloatValidator extends NumberValidator implements FloatValidatorTyp
5853
length(length: number): this {
5954
return this.addRule({
6055
name: 'length',
61-
test: (value: number | null | undefined) => {
56+
test: (value: number) => {
6257
if (typeof value !== 'number')
6358
return false
6459
return value.toString().length === length
@@ -71,7 +66,7 @@ export class FloatValidator extends NumberValidator implements FloatValidatorTyp
7166
positive(): this {
7267
return this.addRule({
7368
name: 'positive',
74-
test: (value: number | null | undefined) => {
69+
test: (value: number) => {
7570
if (typeof value !== 'number')
7671
return false
7772
return value > 0
@@ -83,7 +78,7 @@ export class FloatValidator extends NumberValidator implements FloatValidatorTyp
8378
negative(): this {
8479
return this.addRule({
8580
name: 'negative',
86-
test: (value: number | null | undefined) => {
81+
test: (value: number) => {
8782
if (typeof value !== 'number')
8883
return false
8984
return value < 0
@@ -95,7 +90,7 @@ export class FloatValidator extends NumberValidator implements FloatValidatorTyp
9590
divisibleBy(divisor: number): this {
9691
return this.addRule({
9792
name: 'divisibleBy',
98-
test: (value: number | null | undefined) => {
93+
test: (value: number) => {
9994
if (typeof value !== 'number')
10095
return false
10196
return isDivisibleBy(String(value), divisor)
@@ -105,25 +100,13 @@ export class FloatValidator extends NumberValidator implements FloatValidatorTyp
105100
})
106101
}
107102

108-
custom(fn: (value: number | null | undefined) => boolean, message: string): this {
103+
custom(fn: (value: number) => boolean, message: string): this {
109104
return this.addRule({
110105
name: 'custom',
111106
test: fn,
112107
message,
113108
})
114109
}
115-
116-
validate(value: number | undefined | null): any {
117-
// Only allow actual numbers (including Infinity)
118-
if (typeof value !== 'number' || Number.isNaN(value)) {
119-
const error = { message: 'This field is required' }
120-
return this.isPartOfShape
121-
? { valid: false, errors: { [this.fieldName]: [error] } }
122-
: { valid: false, errors: [error] }
123-
}
124-
// Otherwise, use the base validation
125-
return super.validate(value)
126-
}
127110
}
128111

129112
// Export a function to create float validators

src/validators/integer.ts

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export class IntegerValidator extends NumberValidator implements IntegerValidato
1111
this.rules = this.rules.filter(rule => rule.name !== 'number')
1212
this.addRule({
1313
name: 'number',
14-
test: (value: unknown): value is number => {
14+
test: (value: number) => {
1515
// First check if it's a number
1616
if (typeof value !== 'number' || Number.isNaN(value) || !Number.isFinite(value)) {
1717
return false
@@ -26,7 +26,7 @@ export class IntegerValidator extends NumberValidator implements IntegerValidato
2626
min(min: number): this {
2727
return this.addRule({
2828
name: 'min',
29-
test: (value: number | null | undefined) => {
29+
test: (value: number) => {
3030
if (typeof value !== 'number')
3131
return false
3232
return value >= min
@@ -39,7 +39,7 @@ export class IntegerValidator extends NumberValidator implements IntegerValidato
3939
max(max: number): this {
4040
return this.addRule({
4141
name: 'max',
42-
test: (value: number | null | undefined) => {
42+
test: (value: number) => {
4343
if (typeof value !== 'number')
4444
return false
4545
return value <= max
@@ -52,7 +52,7 @@ export class IntegerValidator extends NumberValidator implements IntegerValidato
5252
positive(): this {
5353
return this.addRule({
5454
name: 'positive',
55-
test: (value: number | null | undefined) => {
55+
test: (value: number) => {
5656
if (typeof value !== 'number')
5757
return false
5858
return value > 0
@@ -64,7 +64,7 @@ export class IntegerValidator extends NumberValidator implements IntegerValidato
6464
negative(): this {
6565
return this.addRule({
6666
name: 'negative',
67-
test: (value: number | null | undefined) => {
67+
test: (value: number) => {
6868
if (typeof value !== 'number')
6969
return false
7070
return value < 0
@@ -73,25 +73,13 @@ export class IntegerValidator extends NumberValidator implements IntegerValidato
7373
})
7474
}
7575

76-
custom(fn: (value: number | null | undefined) => boolean, message: string): this {
76+
custom(fn: (value: number) => boolean, message: string): this {
7777
return this.addRule({
7878
name: 'custom',
7979
test: fn,
8080
message,
8181
})
8282
}
83-
84-
validate(value: number | undefined | null): any {
85-
// Only allow actual numbers
86-
if (typeof value !== 'number' || Number.isNaN(value)) {
87-
const error = { message: 'This field is required' }
88-
return this.isPartOfShape
89-
? { valid: false, errors: { [this.fieldName]: [error] } }
90-
: { valid: false, errors: [error] }
91-
}
92-
// Otherwise, use the base validation
93-
return super.validate(value)
94-
}
9583
}
9684

9785
// Export a function to create integer validators

0 commit comments

Comments
 (0)