You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					52 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					52 lines
				
				1.2 KiB
			| 
											3 years ago
										 | 'use strict' | ||
|  | 
 | ||
|  | const { addHook, resolveSwaggerFunction } = require('../util/common') | ||
|  | 
 | ||
|  | module.exports = function (fastify, opts, done) { | ||
|  |   opts = Object.assign({}, { | ||
|  |     exposeRoute: false, | ||
|  |     hiddenTag: 'X-HIDDEN', | ||
|  |     hideUntagged: false, | ||
|  |     stripBasePath: true, | ||
|  |     openapi: null, | ||
|  |     swagger: {}, | ||
|  |     transform: null, | ||
|  |     refResolver: { | ||
|  |       buildLocalReference (json, baseUri, fragment, i) { | ||
|  |         if (!json.title && json.$id) { | ||
|  |           json.title = json.$id | ||
|  |         } | ||
|  |         return `def-${i}` | ||
|  |       } | ||
|  |     } | ||
|  |   }, opts) | ||
|  | 
 | ||
|  |   const { routes, Ref } = addHook(fastify, opts) | ||
|  | 
 | ||
|  |   if (opts.exposeRoute === true) { | ||
|  |     const prefix = opts.routePrefix || '/documentation' | ||
|  |     const uiConfig = opts.uiConfig || {} | ||
|  |     const initOAuth = opts.initOAuth || {} | ||
|  |     const staticCSP = opts.staticCSP | ||
|  |     const transformStaticCSP = opts.transformStaticCSP | ||
|  |     fastify.register(require('../routes'), { | ||
|  |       prefix, | ||
|  |       uiConfig, | ||
|  |       initOAuth, | ||
|  |       staticCSP, | ||
|  |       transformStaticCSP, | ||
|  |       hooks: opts.uiHooks | ||
|  |     }) | ||
|  |   } | ||
|  | 
 | ||
|  |   const cache = { | ||
|  |     object: null, | ||
|  |     string: null | ||
|  |   } | ||
|  | 
 | ||
|  |   const swagger = resolveSwaggerFunction(opts, cache, routes, Ref, done) | ||
|  |   fastify.decorate('swagger', swagger) | ||
|  | 
 | ||
|  |   done() | ||
|  | } |