Skip to content

Commit e60315e

Browse files
author
LEI
committed
fix: multipart middleware ajv options formats and types
1 parent 46ed8fb commit e60315e

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

src/framework/types.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ export type SecurityHandlers = {
3131
) => boolean | Promise<boolean>;
3232
};
3333

34-
export interface MultipartOpts extends ajv.Options {
35-
multerOpts: any;
34+
export interface MultipartOpts {
35+
multerOpts: boolean | multer.Options;
36+
ajvOpts: ajv.Options;
3637
}
3738

3839
export interface RequestValidatorOptions

src/middlewares/openapi.multipart.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ export function multipart(
1919
options: MultipartOpts,
2020
): OpenApiRequestHandler {
2121
const mult = multer(options.multerOpts);
22-
const Ajv = createRequestAjv(apiDoc, {
23-
unknownFormats: options.unknownFormats,
24-
});
22+
const Ajv = createRequestAjv(apiDoc, { ...options.ajvOpts });
2523
return (req, res, next) => {
2624
// TODO check that format: binary (for upload) else do not use multer.any()
2725
// use multer.none() if no binary parameters exist

src/openapi.validator.ts

+12-3
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ export class OpenApiValidator {
8585
}
8686

8787
installMiddleware(spec: Promise<Spec>): OpenApiRequestHandler[] {
88-
const { formats } = this.options;
8988
const middlewares: OpenApiRequestHandler[] = [];
9089
const pContext = spec.then((spec) => {
9190
const responseApiDoc = this.options.validateResponses
@@ -98,7 +97,7 @@ export class OpenApiValidator {
9897
useDefaults: true,
9998
unknownFormats: this.options.unknownFormats,
10099
format: this.options.validateFormats,
101-
formats: formats.reduce((acc, f) => {
100+
formats: this.options.formats.reduce((acc, f) => {
102101
acc[f.name] = {
103102
type: f.type,
104103
validate: f.validate,
@@ -257,7 +256,17 @@ export class OpenApiValidator {
257256
private multipartMiddleware(apiDoc: OpenAPIV3.Document) {
258257
return middlewares.multipart(apiDoc, {
259258
multerOpts: this.options.fileUploader,
260-
unknownFormats: this.options.unknownFormats,
259+
ajvOpts: {
260+
unknownFormats: this.options.unknownFormats,
261+
format: this.options.validateFormats,
262+
formats: this.options.formats.reduce((acc, f) => {
263+
acc[f.name] = {
264+
type: f.type,
265+
validate: f.validate,
266+
};
267+
return acc;
268+
}, {}),
269+
},
261270
});
262271
}
263272

0 commit comments

Comments
 (0)