Skip to content

Commit ea91e09

Browse files
Harrison IfeanyichukwuHarrison Ifeanyichukwu
authored andcommitted
fix: update typings
1 parent 260c991 commit ea91e09

4 files changed

Lines changed: 55 additions & 18 deletions

File tree

src/@types/index.d.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import ChoiceRule, { ChoiceOptions } from './rules/ChoiceRule';
2525
import BaseRule, {
2626
BaseOptions,
2727
SuccessOrErrorMessage,
28-
DBCheck
28+
ModelDBCheck
2929
} from './rules/BaseRule';
3030
import {
3131
FileRule,
@@ -216,7 +216,19 @@ export interface ResolvedRule<F extends string> {
216216

217217
filters: Filters;
218218

219-
checks: DBCheck<F>[];
219+
/**
220+
* defines a list of database integrity checks to perform on the field value(s)
221+
*/
222+
// note: this should be left as it to avoid typescript complaints
223+
checks: Array<
224+
| (<N extends Handler<F> = Handler<F>>(
225+
value: DataValue,
226+
index: number,
227+
data: Data<F>,
228+
handler: N
229+
) => Promise<DataValue> | DataValue)
230+
| ModelDBCheck
231+
>;
220232

221233
/**
222234
* computes and return a new value for the field. it accepts two arguments

src/@types/rules/BaseRule.d.ts

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@ export interface ModelDBCheck {
1313
err?: string;
1414
}
1515

16-
export type DBCheckCallback<F extends string> = (
17-
value: DataValue,
18-
index: number,
19-
data: Data<F>,
20-
handler: Handler<F>
21-
) => Promise<SuccessOrErrorMessage> | SuccessOrErrorMessage;
16+
// export type DBCheckCallback<F extends string, N extends Handler<F>> = (
17+
// value: DataValue,
18+
// index: number,
19+
// data: Data<F>,
20+
// handler: N
21+
// ) => Promise<SuccessOrErrorMessage> | SuccessOrErrorMessage;
2222

23-
export type DBCheck<F extends string> = DBCheckCallback<F> | ModelDBCheck;
23+
// export type DBCheck<F extends string, N extends Handler<F>> =
24+
// | DBCheckCallback<F, N>
25+
// | ModelDBCheck;
2426

2527
export interface ShouldMatchObject<F extends string> {
2628
/**
@@ -87,7 +89,23 @@ export default interface BaseRule<F extends string> {
8789
/**
8890
* defines a list of database integrity checks to perform on the field value(s)
8991
*/
90-
checks?: DBCheck<F> | DBCheck<F>[];
92+
checks?:
93+
| (<N extends Handler<F> = Handler<F>>(
94+
value: DataValue,
95+
index: number,
96+
data: Data<F>,
97+
handler: N
98+
) => Promise<DataValue> | DataValue)
99+
| ModelDBCheck
100+
| Array<
101+
| (<N extends Handler<F> = Handler<F>>(
102+
value: DataValue,
103+
index: number,
104+
data: Data<F>,
105+
handler: N
106+
) => Promise<DataValue> | DataValue)
107+
| ModelDBCheck
108+
>;
91109

92110
/**
93111
* computes and return a new value for the field. it accepts two arguments

src/Common.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { ErrorBag, Options } from './@types';
22
import { isNumeric } from '@forensic-js/utils';
33
import { replaceCallback } from '@forensic-js/regex';
44
import StateException from './Exceptions/StateException';
5-
import { DBCheck } from './@types/rules/BaseRule';
5+
import { ModelDBCheck } from './@types/rules/BaseRule';
66

77
export default class Common<F extends string = string> {
88
protected errors: ErrorBag<F> = {} as ErrorBag<F>;
@@ -11,7 +11,7 @@ export default class Common<F extends string = string> {
1111

1212
protected field: string = '';
1313

14-
protected options: Options<F> | DBCheck<F> = {};
14+
protected options: Options<F> | ModelDBCheck = {};
1515

1616
protected index: number = 0;
1717

@@ -24,7 +24,11 @@ export default class Common<F extends string = string> {
2424
* @param options validation options
2525
* @param index field value index
2626
*/
27-
reset(field: string, options: Options<F> | DBCheck<F>, index: number): this {
27+
reset(
28+
field: string,
29+
options: Options<F> | ModelDBCheck,
30+
index: number
31+
): this {
2832
this.field = field;
2933
this.options = options;
3034
this.index = index;

src/Handler.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ import {
6161
ordinalize,
6262
capitalize
6363
} from 'inflection';
64-
import { DBCheckType, DBCheck, ModelDBCheck } from './@types/rules/BaseRule';
64+
import { DBCheckType, ModelDBCheck } from './@types/rules/BaseRule';
6565

6666
const globalConfig = {
6767
dbModel: DB_MODELS.NOSQL,
@@ -310,9 +310,10 @@ export default class Handler<F extends string = string> {
310310
required: boolean,
311311
field: string,
312312
value: DataValue,
313-
checks: DBCheck<F>[],
313+
rules: ResolvedRule<F>,
314314
index: number
315315
) {
316+
const { checks } = rules;
316317
for (const check of checks) {
317318
if (isCallable(check)) {
318319
const result = await check(value, index, this.data, this);
@@ -350,7 +351,9 @@ export default class Handler<F extends string = string> {
350351
*/
351352
private async validateDBChecks(fields: string[], required: boolean) {
352353
for (const field of fields) {
353-
const { checks, type } = this.resolvedRules[field] as ResolvedRule<F>;
354+
const rules = this.resolvedRules[field] as ResolvedRule<F>;
355+
const { checks, type } = rules;
356+
354357
if (checks.length > 0) {
355358
const values = makeArray<DataValue>(this.data[field]);
356359

@@ -363,7 +366,7 @@ export default class Handler<F extends string = string> {
363366
required,
364367
field,
365368
value === null ? '' : value.toString(),
366-
checks,
369+
rules,
367370
i
368371
);
369372
}
@@ -942,7 +945,7 @@ export default class Handler<F extends string = string> {
942945
requiredIf: pickValue('requiredIf', rule, undefined),
943946
options: pickObject('options', rule),
944947
filters: pickObject('filters', rule),
945-
checks: makeArray(rule.checks as DBCheck<F>[]),
948+
checks: rule.checks ? makeArray(rule.checks) : [],
946949
postCompute: pickValue('postCompute', rule, undefined),
947950
postValidate: pickValue('postValidate', rule, undefined)
948951
};

0 commit comments

Comments
 (0)