Skip to content

Commit

Permalink
check: type checkSchema function and friends
Browse files Browse the repository at this point in the history
  • Loading branch information
gustavohenke committed Jan 27, 2018
1 parent 1954d81 commit dfeea70
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 0 deletions.
1 change: 1 addition & 0 deletions check/index.d.ts
Expand Up @@ -5,5 +5,6 @@ export {
ValidatorOptions,
} from './check';
export * from './one-of';
export * from './schema';
export * from './validation-chain-builders';
export * from './validation-result';
74 changes: 74 additions & 0 deletions check/schema.d.ts
@@ -0,0 +1,74 @@
import { ValidationChain, ValidatorOptions, CustomValidator } from './check';
import { Location } from './location';

export function checkSchema(schema: ValidationSchema): ValidationChain[];

type ValidationSchema = Record<string, ValidationParamSchema>;

type ValidatorSchemaOptions<T = any> = true | {
options?: T | T[];
errorMessage?: any;
};

interface ValidationParamSchema {
in: Location | Location[],
errorMessage?: any

custom?: ValidatorSchemaOptions<CustomValidator>;
optional?: boolean | ValidatorOptions.OptionalOptions;

equals?: ValidatorSchemaOptions;
contains?: ValidatorSchemaOptions;
isAfter?: ValidatorSchemaOptions;
isAlpha?: ValidatorSchemaOptions;
isAlphanumeric?: ValidatorSchemaOptions;
isAscii?: ValidatorSchemaOptions;
isBase64?: ValidatorSchemaOptions;
isBefore?: ValidatorSchemaOptions;
isBoolean?: ValidatorSchemaOptions;
isByteLength?: ValidatorSchemaOptions;
isCreditCard?: ValidatorSchemaOptions;
isCurrency?: ValidatorSchemaOptions;
isDataURI?: ValidatorSchemaOptions;
isDate?: ValidatorSchemaOptions;
isDecimal?: ValidatorSchemaOptions;
isDivisibleBy?: ValidatorSchemaOptions;
isEmail?: ValidatorSchemaOptions;
isEmpty?: ValidatorSchemaOptions;
isFloat?: ValidatorSchemaOptions;
isFQDN?: ValidatorSchemaOptions;
isFullWidth?: ValidatorSchemaOptions;
isHalfWidth?: ValidatorSchemaOptions;
isHash?: ValidatorSchemaOptions;
isHexadecimal?: ValidatorSchemaOptions;
isHexColor?: ValidatorSchemaOptions;
isIn?: ValidatorSchemaOptions;
isInt?: ValidatorSchemaOptions;
isIP?: ValidatorSchemaOptions;
isISIN?: ValidatorSchemaOptions;
isISO31661Alpha2?: ValidatorSchemaOptions;
isISO8601?: ValidatorSchemaOptions;
isISRC?: ValidatorSchemaOptions;
isISBN?: ValidatorSchemaOptions;
isISSN?: ValidatorSchemaOptions;
isJSON?: ValidatorSchemaOptions;
isNumeric?: ValidatorSchemaOptions;
isLatLong?: ValidatorSchemaOptions;
isLength?: ValidatorSchemaOptions;
isLowercase?: ValidatorSchemaOptions;
isMACAddress?: ValidatorSchemaOptions;
isMD5?: ValidatorSchemaOptions;
isMimeType?: ValidatorSchemaOptions;
isMobilePhone?: ValidatorSchemaOptions;
isMongoId?: ValidatorSchemaOptions;
isMultibyte?: ValidatorSchemaOptions;
isPostalCode?: ValidatorSchemaOptions;
isPort?: ValidatorSchemaOptions;
isSurrogatePair?: ValidatorSchemaOptions;
isUppercase?: ValidatorSchemaOptions;
isURL?: ValidatorSchemaOptions;
isUUID?: ValidatorSchemaOptions;
isVariableWidth?: ValidatorSchemaOptions;
isWhitelisted?: ValidatorSchemaOptions;
matches?: ValidatorSchemaOptions;
}
24 changes: 24 additions & 0 deletions check/schema.spec.ts
@@ -0,0 +1,24 @@
import { ValidationChain } from './check';
import { checkSchema, ValidationSchema, ValidationParamSchema } from './schema';

const fooSchema: ValidationParamSchema = {
in: 'body',
isAlpha: true,
isIn: {
errorMessage: 'foo',
options: [['foo', 'bar']]
},
custom: {
options: (value, { req, location, path }) => {
return value + req.body.foo + location + path;
}
}
};

const barSchema: ValidationParamSchema = {
in: ['body', 'params'],
errorMessage: 'foo'
};

const schema: ValidationSchema = { fooSchema, barSchema };
const chains: ValidationChain[] = checkSchema(schema);

0 comments on commit dfeea70

Please sign in to comment.