Skip to content

Commit 6ee9910

Browse files
committed
Return error if the input value is null
1 parent d0af3c3 commit 6ee9910

20 files changed

+358
-50
lines changed

lib/validators/enum.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,19 @@ export class EnumValidator<T> implements IValidator<{}, IEnumValidatorDefinition
3131
}
3232

3333
public validate(input: T): IValidationError<T, IEnumValidatorDefinition<T>> {
34+
const invalid = {
35+
definition: this.definition,
36+
input,
37+
};
38+
if (input == null) {
39+
return invalid;
40+
}
3441
for (let i = 0; i < this.definition.enum.length; i++) {
3542
const e = this.definition.enum[i];
3643
if (e === input) {
3744
return;
3845
}
3946
}
40-
return {
41-
definition: this.definition,
42-
input,
43-
};
47+
return invalid;
4448
}
4549
}

lib/validators/format.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,15 @@ export class FormatValidator implements IValidator<string, IFormatValidatorDefin
3232
}
3333

3434
public validate(input: string): IValidationError<string, IFormatValidatorDefinition> {
35+
const invalid = {
36+
definition: this.definition,
37+
input,
38+
};
39+
40+
if (input == null) {
41+
return invalid;
42+
}
43+
3544
const {format} = this.definition;
3645
switch (format) {
3746
case "date-time": {
@@ -66,10 +75,7 @@ export class FormatValidator implements IValidator<string, IFormatValidatorDefin
6675
}
6776

6877
}
69-
return {
70-
definition: this.definition,
71-
input,
72-
};
78+
return invalid;
7379
}
7480

7581
// stolen from https://golang.org/src/net/dnsclient.go

lib/validators/max_items.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,16 @@ export class MaxItemsValidator implements IValidator<any, IMaxItemsValidatorDefi
2222
}
2323

2424
public validate(input: IHasLength): IValidationError<any, IMaxItemsValidatorDefinition> {
25+
const invalid = {
26+
definition: this.definition,
27+
input,
28+
};
29+
if (input == null) {
30+
return invalid;
31+
}
2532
if (input.length <= this.definition.maxItems) {
2633
return;
2734
}
28-
return {
29-
input,
30-
definition: this.definition,
31-
};
35+
return invalid;
3236
}
3337
}

lib/validators/max_length.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,16 @@ export class MaxLengthValidator implements IValidator<string, IMaxLengthValidato
2020
}
2121

2222
public validate(input: string): IValidationError<string, IMaxLengthValidatorDefinition> {
23+
const invalid = {
24+
definition: this.definition,
25+
input,
26+
};
27+
if (input == null) {
28+
return invalid;
29+
}
2330
if (input.length <= this.definition.maxLength) {
2431
return;
2532
}
26-
return {
27-
input,
28-
definition: this.definition,
29-
};
33+
return invalid;
3034
}
3135
}

lib/validators/maximum.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,24 @@ export class MaximumValidator implements IValidator<number, IMaximumValidatorDef
1515
}
1616

1717
public validate(input: number): IValidationError<number, IMaximumValidatorDefinition> {
18+
const invalid = {
19+
definition: this.definition,
20+
input,
21+
};
22+
if (input == null) {
23+
return invalid;
24+
}
25+
1826
if (!this.definition.exclusive) {
1927
if (input <= this.definition.maximum) {
2028
return;
2129
}
22-
return {
23-
input,
24-
definition: this.definition,
25-
};
30+
return invalid;
2631
}
2732

2833
if (input < this.definition.maximum) {
2934
return;
3035
}
31-
return {
32-
input,
33-
definition: this.definition,
34-
};
36+
return invalid;
3537
}
3638
}

lib/validators/min_items.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,16 @@ export class MinItemsValidator implements IValidator<any, IMinItemsValidatorDefi
2222
}
2323

2424
public validate(input: IHasLength): IValidationError<any, IMinItemsValidatorDefinition> {
25+
const invalid = {
26+
definition: this.definition,
27+
input,
28+
};
29+
if (input == null) {
30+
return invalid;
31+
}
2532
if (input.length >= this.definition.minItems) {
2633
return;
2734
}
28-
return {
29-
input,
30-
definition: this.definition,
31-
};
35+
return invalid;
3236
}
3337
}

lib/validators/min_length.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,16 @@ export class MinLengthValidator implements IValidator<string, IMinLengthValidato
2020
}
2121

2222
public validate(input: string): IValidationError<string, IMinLengthValidatorDefinition> {
23+
const invalid = {
24+
definition: this.definition,
25+
input,
26+
};
27+
if (input == null) {
28+
return invalid;
29+
}
2330
if (input.length >= this.definition.minLength) {
2431
return;
2532
}
26-
return {
27-
input,
28-
definition: this.definition,
29-
};
33+
return invalid;
3034
}
3135
}

lib/validators/minimum.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,24 @@ export class MinimumValidator implements IValidator<number, IMinimumValidatorDef
1515
}
1616

1717
public validate(input: number): IValidationError<number, IMinimumValidatorDefinition> {
18+
const invalid = {
19+
definition: this.definition,
20+
input,
21+
};
22+
if (input == null) {
23+
return invalid;
24+
}
25+
1826
if (!this.definition.exclusive) {
1927
if (input >= this.definition.minimum) {
2028
return;
2129
}
22-
return {
23-
input,
24-
definition: this.definition,
25-
};
30+
return invalid;
2631
}
2732

2833
if (input > this.definition.minimum) {
2934
return;
3035
}
31-
return {
32-
input,
33-
definition: this.definition,
34-
};
36+
return invalid;
3537
}
3638
}

lib/validators/pattern.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,16 @@ export class PatternValidator implements IValidator<string, IPatternValidatorDef
2929
}
3030

3131
public validate(input: string): IValidationError<string, IPatternValidatorDefinition> {
32-
if (this.regExp.test(input)) {
33-
return;
34-
}
35-
return {
32+
const invalid = {
3633
definition: this.definition,
3734
input,
3835
};
36+
if (input == null) {
37+
return invalid;
38+
}
39+
if (this.regExp.test(input)) {
40+
return;
41+
}
42+
return invalid;
3943
}
4044
}

lib/validators/required.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,22 @@ export class RequiredValidator implements IValidator<any, IRequiredValidatorDefi
3232
}
3333

3434
public validate(input: any): IValidationError<any, IRequiredValidatorDefinition> {
35-
const {required} = this.definition;
35+
const invalid = {
36+
definition: this.definition,
37+
input,
38+
};
39+
40+
if (input == null) {
41+
return invalid;
42+
}
3643

44+
const {required} = this.definition;
3745
for (let i = 0; i < required.length; i++) {
3846
const key = required[i];
3947
if (input[key] == null) {
40-
return {
41-
definition: this.definition,
42-
input,
43-
};
48+
return invalid;
4449
}
4550
}
46-
4751
return;
4852
}
4953
}

0 commit comments

Comments
 (0)