Skip to content

Commit 58b1de2

Browse files
committed
Do not mutate request
1 parent 996e4d5 commit 58b1de2

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

src/backend.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ export class OpenAPIBackend<D extends Document = Document> {
426426

427427
// parse request again now with coerced types, if needed
428428
if (this.validator.coerceTypes) {
429-
context.request = this.router.parseRequest(req, context.operation);
429+
context.request = this.router.parseRequest(context.validation.coerced, context.operation);
430430
}
431431
}
432432

src/validation.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ type Document = OpenAPIV3_1.Document | OpenAPIV3.Document;
1717
* @export
1818
* @interface ValidationStatus
1919
*/
20-
export interface ValidationResult {
20+
export interface ValidationResult<T = any> {
2121
valid: boolean;
2222
errors?: ErrorObject[] | null;
23+
coerced?: T;
2324
}
2425

2526
/**
@@ -230,8 +231,8 @@ export class OpenAPIValidator<D extends Document = Document> {
230231
* @returns {ValidationResult}
231232
* @memberof OpenAPIRequestValidator
232233
*/
233-
public validateRequest(req: Request, operation?: Operation<D> | string): ValidationResult {
234-
const result: ValidationResult = { valid: true };
234+
public validateRequest(req: Request, operation?: Operation<D> | string): ValidationResult<Request> {
235+
const result: ValidationResult = { valid: true, coerced: { ...req } };
235236
result.errors = [];
236237

237238
if (!operation) {
@@ -314,8 +315,8 @@ export class OpenAPIValidator<D extends Document = Document> {
314315
if (validate.errors) {
315316
result.errors.push(...validate.errors);
316317
} else if (this.coerceTypes) {
317-
req.query = parameters.query;
318-
req.params = parameters.path;
318+
result.coerced.query = parameters.query;
319+
result.coerced.params = parameters.path;
319320
}
320321
}
321322

0 commit comments

Comments
 (0)