Skip to content

Commit b9d4840

Browse files
committed
Enable strict compiler option
1 parent 0d92955 commit b9d4840

File tree

14 files changed

+218
-229
lines changed

14 files changed

+218
-229
lines changed

package-lock.json

Lines changed: 176 additions & 176 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/interfaces.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414

1515
export interface IValidator<T, U> {
1616
definition: U;
17-
validate: (input: T) => IValidationError<T, U>;
17+
validate: (input: T) => IValidationError<T, U> | null;
1818
}
1919

2020
export interface IBaseValidatorDefinition {

src/validators/enum.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@ import {
44
} from "../errors";
55
import {
66
IBaseValidatorDefinition,
7-
IValidationError,
87
IValidator,
98
} from "../interfaces";
109

1110
export interface IEnumValidatorDefinition<T> extends IBaseValidatorDefinition {
1211
enum: T[];
1312
}
1413

15-
export class EnumValidator<T> implements IValidator<{}, IEnumValidatorDefinition<T>> {
14+
export class EnumValidator<T> implements IValidator<T | null, IEnumValidatorDefinition<T>> {
1615
constructor(public definition: IEnumValidatorDefinition<T>) {
1716
this.definition.type = "enum";
1817
const len = this.definition.enum.length;
@@ -30,7 +29,7 @@ export class EnumValidator<T> implements IValidator<{}, IEnumValidatorDefinition
3029
}
3130
}
3231

33-
public validate(input: T): IValidationError<T, IEnumValidatorDefinition<T>> {
32+
public validate(input: T | null) {
3433
const err = {
3534
definition: this.definition,
3635
input,
@@ -40,7 +39,7 @@ export class EnumValidator<T> implements IValidator<{}, IEnumValidatorDefinition
4039
}
4140
for (const e of this.definition.enum) {
4241
if (e === input) {
43-
return;
42+
return null;
4443
}
4544
}
4645
return err;

src/validators/format.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@ import {
33
} from "../errors";
44
import {
55
IBaseValidatorDefinition,
6-
IValidationError,
76
IValidator,
87
} from "../interfaces";
98

109
export interface IFormatValidatorDefinition extends IBaseValidatorDefinition {
1110
format: string;
1211
}
1312

14-
export class FormatValidator implements IValidator<string, IFormatValidatorDefinition> {
13+
export class FormatValidator implements IValidator<string | null, IFormatValidatorDefinition> {
1514
private static rDateTime: RegExp = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.?\d{1,9})?(?:[+-]\d{2}:\d{2}|Z)/;
1615
private static rEmail: RegExp = /^.+@.+\..+$/;
1716
private static rUri: RegExp = /^[0-9a-zA-Z]+:\/\/.+$/;
@@ -31,7 +30,7 @@ export class FormatValidator implements IValidator<string, IFormatValidatorDefin
3130
}
3231
}
3332

34-
public validate(input: string): IValidationError<string, IFormatValidatorDefinition> {
33+
public validate(input: string | null) {
3534
const err = {
3635
definition: this.definition,
3736
input,
@@ -45,31 +44,31 @@ export class FormatValidator implements IValidator<string, IFormatValidatorDefin
4544
switch (format) {
4645
case "date-time": {
4746
if (FormatValidator.rDateTime.test(input)) {
48-
return;
47+
return null;
4948
}
5049
break;
5150
}
5251
case "email": {
5352
if (FormatValidator.rEmail.test(input)) {
54-
return;
53+
return null;
5554
}
5655
break;
5756
}
5857
case "hostname": {
5958
if (this.isHostName(input)) {
60-
return;
59+
return null;
6160
}
6261
break;
6362
}
6463
case "uri": {
6564
if (FormatValidator.rUri.test(input)) {
66-
return;
65+
return null;
6766
}
6867
break;
6968
}
7069
case "password-0Aa": {
7170
if (this.isPassword0Aa(input)) {
72-
return;
71+
return null;
7372
}
7473
break;
7574
}

src/validators/max_items.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@ import {
44
import {
55
IBaseValidatorDefinition,
66
IHasLength,
7-
IValidationError,
87
IValidator,
98
} from "../interfaces";
109

1110
export interface IMaxItemsValidatorDefinition extends IBaseValidatorDefinition {
1211
maxItems: number;
1312
}
1413

15-
export class MaxItemsValidator implements IValidator<any, IMaxItemsValidatorDefinition> {
14+
export class MaxItemsValidator implements IValidator<IHasLength | null, IMaxItemsValidatorDefinition> {
1615
constructor(public definition: IMaxItemsValidatorDefinition) {
1716
this.definition.type = "max_items";
1817
const {maxItems} = this.definition;
@@ -21,7 +20,7 @@ export class MaxItemsValidator implements IValidator<any, IMaxItemsValidatorDefi
2120
}
2221
}
2322

24-
public validate(input: IHasLength): IValidationError<any, IMaxItemsValidatorDefinition> {
23+
public validate(input: IHasLength | null) {
2524
const err = {
2625
definition: this.definition,
2726
input,
@@ -30,7 +29,7 @@ export class MaxItemsValidator implements IValidator<any, IMaxItemsValidatorDefi
3029
return err;
3130
}
3231
if (input.length <= this.definition.maxItems) {
33-
return;
32+
return null;
3433
}
3534
return err;
3635
}

src/validators/max_length.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,22 @@ import {
33
} from "../errors";
44
import {
55
IBaseValidatorDefinition,
6-
IValidationError,
76
IValidator,
87
} from "../interfaces";
98

109
export interface IMaxLengthValidatorDefinition extends IBaseValidatorDefinition {
1110
maxLength: number;
1211
}
1312

14-
export class MaxLengthValidator implements IValidator<string, IMaxLengthValidatorDefinition> {
13+
export class MaxLengthValidator implements IValidator<string | null, IMaxLengthValidatorDefinition> {
1514
constructor(public definition: IMaxLengthValidatorDefinition) {
1615
this.definition.type = "max_length";
1716
if (this.definition.maxLength < 0) {
1817
throw new NoLengthError(`the max length should be greater than, or equal to, 0`);
1918
}
2019
}
2120

22-
public validate(input: string): IValidationError<string, IMaxLengthValidatorDefinition> {
21+
public validate(input: string | null) {
2322
const err = {
2423
definition: this.definition,
2524
input,
@@ -28,7 +27,7 @@ export class MaxLengthValidator implements IValidator<string, IMaxLengthValidato
2827
return err;
2928
}
3029
if (input.length <= this.definition.maxLength) {
31-
return;
30+
return null;
3231
}
3332
return err;
3433
}

src/validators/maximum.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import {
22
IBaseValidatorDefinition,
3-
IValidationError,
43
IValidator,
54
} from "../interfaces";
65

@@ -9,12 +8,12 @@ export interface IMaximumValidatorDefinition extends IBaseValidatorDefinition {
98
exclusive: boolean;
109
}
1110

12-
export class MaximumValidator implements IValidator<number, IMaximumValidatorDefinition> {
11+
export class MaximumValidator implements IValidator<number | null, IMaximumValidatorDefinition> {
1312
constructor(public definition: IMaximumValidatorDefinition) {
1413
this.definition.type = "maximum";
1514
}
1615

17-
public validate(input: number): IValidationError<number, IMaximumValidatorDefinition> {
16+
public validate(input: number | null) {
1817
const err = {
1918
definition: this.definition,
2019
input,
@@ -25,13 +24,13 @@ export class MaximumValidator implements IValidator<number, IMaximumValidatorDef
2524

2625
if (!this.definition.exclusive) {
2726
if (input <= this.definition.maximum) {
28-
return;
27+
return null;
2928
}
3029
return err;
3130
}
3231

3332
if (input < this.definition.maximum) {
34-
return;
33+
return null;
3534
}
3635
return err;
3736
}

src/validators/min_items.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@ import {
44
import {
55
IBaseValidatorDefinition,
66
IHasLength,
7-
IValidationError,
87
IValidator,
98
} from "../interfaces";
109

1110
export interface IMinItemsValidatorDefinition extends IBaseValidatorDefinition {
1211
minItems: number;
1312
}
1413

15-
export class MinItemsValidator implements IValidator<any, IMinItemsValidatorDefinition> {
14+
export class MinItemsValidator implements IValidator<IHasLength | null, IMinItemsValidatorDefinition> {
1615
constructor(public definition: IMinItemsValidatorDefinition) {
1716
this.definition.type = "min_items";
1817
const {minItems} = this.definition;
@@ -21,7 +20,7 @@ export class MinItemsValidator implements IValidator<any, IMinItemsValidatorDefi
2120
}
2221
}
2322

24-
public validate(input: IHasLength): IValidationError<any, IMinItemsValidatorDefinition> {
23+
public validate(input: IHasLength | null) {
2524
const err = {
2625
definition: this.definition,
2726
input,
@@ -30,7 +29,7 @@ export class MinItemsValidator implements IValidator<any, IMinItemsValidatorDefi
3029
return err;
3130
}
3231
if (input.length >= this.definition.minItems) {
33-
return;
32+
return null;
3433
}
3534
return err;
3635
}

src/validators/min_length.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,22 @@ import {
33
} from "../errors";
44
import {
55
IBaseValidatorDefinition,
6-
IValidationError,
76
IValidator,
87
} from "../interfaces";
98

109
export interface IMinLengthValidatorDefinition extends IBaseValidatorDefinition {
1110
minLength: number;
1211
}
1312

14-
export class MinLengthValidator implements IValidator<string, IMinLengthValidatorDefinition> {
13+
export class MinLengthValidator implements IValidator<string | null, IMinLengthValidatorDefinition> {
1514
constructor(public definition: IMinLengthValidatorDefinition) {
1615
this.definition.type = "min_length";
1716
if (this.definition.minLength < 0) {
1817
throw new NoLengthError(`the minimum length should be greater than, or equal to, 0`);
1918
}
2019
}
2120

22-
public validate(input: string): IValidationError<string, IMinLengthValidatorDefinition> {
21+
public validate(input: string | null) {
2322
const err = {
2423
definition: this.definition,
2524
input,
@@ -28,7 +27,7 @@ export class MinLengthValidator implements IValidator<string, IMinLengthValidato
2827
return err;
2928
}
3029
if (input.length >= this.definition.minLength) {
31-
return;
30+
return null;
3231
}
3332
return err;
3433
}

src/validators/minimum.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import {
22
IBaseValidatorDefinition,
3-
IValidationError,
43
IValidator,
54
} from "../interfaces";
65

@@ -9,12 +8,12 @@ export interface IMinimumValidatorDefinition extends IBaseValidatorDefinition {
98
exclusive: boolean;
109
}
1110

12-
export class MinimumValidator implements IValidator<number, IMinimumValidatorDefinition> {
11+
export class MinimumValidator implements IValidator<number | null, IMinimumValidatorDefinition> {
1312
constructor(public definition: IMinimumValidatorDefinition) {
1413
this.definition.type = "minimum";
1514
}
1615

17-
public validate(input: number): IValidationError<number, IMinimumValidatorDefinition> {
16+
public validate(input: number | null) {
1817
const err = {
1918
definition: this.definition,
2019
input,
@@ -25,13 +24,13 @@ export class MinimumValidator implements IValidator<number, IMinimumValidatorDef
2524

2625
if (!this.definition.exclusive) {
2726
if (input >= this.definition.minimum) {
28-
return;
27+
return null;
2928
}
3029
return err;
3130
}
3231

3332
if (input > this.definition.minimum) {
34-
return;
33+
return null;
3534
}
3635
return err;
3736
}

0 commit comments

Comments
 (0)