From 93693b7e5cda2fa0561357d17460380ca968b721 Mon Sep 17 00:00:00 2001 From: Carmine DiMascio Date: Mon, 23 Dec 2019 12:47:03 -0500 Subject: [PATCH] annotate types --- src/middlewares/openapi.request.validator.ts | 15 ++++++++++++--- .../parameters/parameters.transform.ts | 10 +++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/middlewares/openapi.request.validator.ts b/src/middlewares/openapi.request.validator.ts index 35da57e8..1226040a 100644 --- a/src/middlewares/openapi.request.validator.ts +++ b/src/middlewares/openapi.request.validator.ts @@ -16,9 +16,18 @@ import { OpenApiRequestMetadata, } from '../framework/types'; -import { ParametersParser } from './parameters/parameters.parse'; +import { + ParametersParser, + ParametersSchema, +} from './parameters/parameters.parse'; import { ParametersTransform } from './parameters/parameters.transform'; +type BodySchema = OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject | {}; +export interface DraftSchema { + required: string[]; + properties: ParametersSchema & BodySchema; +} + export class RequestValidator { private _middlewareCache: { [key: string]: RequestHandler } = {}; private _apiDocs: OpenAPIV3.Document; @@ -166,7 +175,7 @@ class RequestBody { path: string, contentType: ContentType, requestBody: OpenAPIV3.RequestBodyObject, - ): object { + ): BodySchema { if (requestBody.content) { let content = null; for (const type of contentType.equivalents()) { @@ -196,7 +205,7 @@ class RequestBody { ajv: Ajv, contentType: ContentType, requestBody: OpenAPIV3.RequestBodyObject, - ): object { + ): BodySchema { const bodyContentSchema = requestBody.content[contentType.contentType] && requestBody.content[contentType.contentType].schema; diff --git a/src/middlewares/parameters/parameters.transform.ts b/src/middlewares/parameters/parameters.transform.ts index 92fb7de7..7da73e83 100644 --- a/src/middlewares/parameters/parameters.transform.ts +++ b/src/middlewares/parameters/parameters.transform.ts @@ -14,7 +14,7 @@ export class ParametersTransform { this.schema = schema; } - applyExplodedJsonTransform(req: OpenApiRequest) { + public applyExplodedJsonTransform(req: OpenApiRequest): void { // forcing convert to object if scheme describes param as object + explode // for easy validation, keep the schema but update whereabouts of its sub components this.parameters.parseObjectExplode.forEach(item => { @@ -42,7 +42,7 @@ export class ParametersTransform { }); } - applyJsonTransform(req: OpenApiRequest) { + public applyJsonTransform(req: OpenApiRequest): void { /** * support json in request params, query, headers and cookies * like this filter={"type":"t-shirt","color":"blue"} @@ -63,7 +63,7 @@ export class ParametersTransform { }); } - applyJsonArrayTransform(req: OpenApiRequest) { + public applyJsonArrayTransform(req: OpenApiRequest): void { /** * array deserialization * filter=foo,bar,baz @@ -79,7 +79,7 @@ export class ParametersTransform { }); } - applyExplodedJsonArrayTransform(req: OpenApiRequest) { + public applyExplodedJsonArrayTransform(req: OpenApiRequest): void { /** * forcing convert to array if scheme describes param as array + explode */ @@ -93,7 +93,7 @@ export class ParametersTransform { }); } - applyPathTransform(req: OpenApiRequest) { + public applyPathTransform(req: OpenApiRequest): void { const openapi = req.openapi; const shouldUpdatePathParams = Object.keys(openapi.pathParams).length > 0;