@@ -39,7 +39,7 @@ module.exports = function ExpressOpenApi (_routePrefix, _doc, _opts) {
3939 // Where the magic happens
4040 const middleware = function OpenApiMiddleware ( req , res , next ) {
4141 if ( isFirstRequest ) {
42- middleware . document = generateDocument ( middleware . document , req . app . _router || req . app . router , opts . basePath )
42+ middleware . document = generateDocument ( middleware . document , req . app . _router || req . app . router , opts . basePath , middleware )
4343 isFirstRequest = false
4444 }
4545
@@ -48,8 +48,8 @@ module.exports = function ExpressOpenApi (_routePrefix, _doc, _opts) {
4848
4949 // Expose the current document and prefix
5050 middleware . routePrefix = routePrefix
51- middleware . document = generateDocument ( doc , undefined , opts . basePath )
52- middleware . generateDocument = generateDocument
51+ middleware . document = generateDocument ( doc , undefined , opts . basePath , middleware )
52+ middleware . generateDocument = ( doc , router , basePath ) => generateDocument ( doc , router , basePath , middleware )
5353 middleware . options = opts
5454
5555 // Add a path schema to the document
@@ -59,6 +59,7 @@ module.exports = function ExpressOpenApi (_routePrefix, _doc, _opts) {
5959 }
6060
6161 setSchema ( schemaMiddleware , schema )
62+ schemaMiddleware . _ownerMiddleware = middleware
6263 return schemaMiddleware
6364 }
6465
@@ -73,6 +74,7 @@ module.exports = function ExpressOpenApi (_routePrefix, _doc, _opts) {
7374 }
7475
7576 setSchema ( validSchemaMiddleware , schema )
77+ validSchemaMiddleware . _ownerMiddleware = middleware
7678 return validSchemaMiddleware
7779 }
7880
@@ -131,13 +133,13 @@ module.exports = function ExpressOpenApi (_routePrefix, _doc, _opts) {
131133
132134 // OpenAPI document as json
133135 router . get ( `${ routePrefix } .json` , ( req , res ) => {
134- middleware . document = generateDocument ( middleware . document , req . app . _router || req . app . router , opts . basePath )
136+ middleware . document = generateDocument ( middleware . document , req . app . _router || req . app . router , opts . basePath , middleware )
135137 res . json ( middleware . document )
136138 } )
137139
138140 // OpenAPI document as yaml
139141 router . get ( [ `${ routePrefix } .yaml` , `${ routePrefix } .yml` ] , ( req , res ) => {
140- const jsonSpec = generateDocument ( middleware . document , req . app . _router || req . app . router , opts . basePath )
142+ const jsonSpec = generateDocument ( middleware . document , req . app . _router || req . app . router , opts . basePath , middleware )
141143 const yamlSpec = YAML . stringify ( jsonSpec )
142144
143145 res . type ( 'yaml' )
@@ -146,7 +148,7 @@ module.exports = function ExpressOpenApi (_routePrefix, _doc, _opts) {
146148
147149 router . get ( `${ routePrefix } /components/:type/:name.json` , ( req , res , next ) => {
148150 const { type, name } = req . params
149- middleware . document = generateDocument ( middleware . document , req . app . _router || req . app . router , opts . basePath )
151+ middleware . document = generateDocument ( middleware . document , req . app . _router || req . app . router , opts . basePath , middleware )
150152
151153 // No component by that identifer
152154 if ( ! middleware . document . components [ type ] || ! middleware . document . components [ type ] [ name ] ) {
@@ -159,7 +161,7 @@ module.exports = function ExpressOpenApi (_routePrefix, _doc, _opts) {
159161
160162 // Validate full open api document
161163 router . get ( `${ routePrefix } /validate` , ( req , res ) => {
162- middleware . document = generateDocument ( middleware . document , req . app . _router || req . app . router , opts . basePath )
164+ middleware . document = generateDocument ( middleware . document , req . app . _router || req . app . router , opts . basePath , middleware )
163165 SwaggerParser . validate ( middleware . document , ( err , api ) => {
164166 if ( err ) {
165167 return res . json ( {
0 commit comments