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.
		
		
		
		
		
			
		
			
				
					
					
						
							181 lines
						
					
					
						
							4.5 KiB
						
					
					
				
			
		
		
	
	
							181 lines
						
					
					
						
							4.5 KiB
						
					
					
				import {FastifyPluginCallback, FastifySchema, onRequestHookHandler, preHandlerHookHandler} from 'fastify';
 | 
						|
import { OpenAPI, OpenAPIV2, OpenAPIV3 } from 'openapi-types';
 | 
						|
 | 
						|
declare module 'fastify' {
 | 
						|
  interface FastifyInstance {
 | 
						|
    swagger: (
 | 
						|
      opts?: {
 | 
						|
        yaml?: boolean;
 | 
						|
      }
 | 
						|
    ) => OpenAPI.Document;
 | 
						|
 | 
						|
    swaggerCSP: {
 | 
						|
      script: string[];
 | 
						|
      style: string[];
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  interface FastifySchema {
 | 
						|
    hide?: boolean;
 | 
						|
    deprecated?: boolean;
 | 
						|
    tags?: string[];
 | 
						|
    description?: string;
 | 
						|
    summary?: string;
 | 
						|
    consumes?: string[];
 | 
						|
    produces?: string[];
 | 
						|
    externalDocs?: OpenAPIV2.ExternalDocumentationObject | OpenAPIV3.ExternalDocumentationObject;
 | 
						|
    security?: Array<{ [securityLabel: string]: string[] }>;
 | 
						|
    /**
 | 
						|
     * OpenAPI operation unique identifier
 | 
						|
     */
 | 
						|
    operationId?: string;
 | 
						|
  }
 | 
						|
 | 
						|
  interface RouteShorthandOptions {
 | 
						|
    links?: {
 | 
						|
      [statusCode: string]: OpenAPIV3.ResponseObject['links'];
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
export const fastifySwagger: FastifyPluginCallback<SwaggerOptions>;
 | 
						|
 | 
						|
export type SwaggerOptions = (FastifyStaticSwaggerOptions | FastifyDynamicSwaggerOptions);
 | 
						|
export interface FastifySwaggerOptions {
 | 
						|
  mode?: 'static' | 'dynamic';
 | 
						|
  /**
 | 
						|
   * Overwrite the swagger url end-point
 | 
						|
   * @default /documentation
 | 
						|
   */
 | 
						|
  routePrefix?: string;
 | 
						|
  /**
 | 
						|
   * To expose the documentation api
 | 
						|
   * @default false
 | 
						|
   */
 | 
						|
  exposeRoute?: boolean;
 | 
						|
  /**
 | 
						|
   * Swagger UI Config
 | 
						|
   */
 | 
						|
  uiConfig?: FastifySwaggerUiConfigOptions
 | 
						|
  initOAuth?: FastifySwaggerInitOAuthOptions
 | 
						|
  /**
 | 
						|
   * CSP Config
 | 
						|
   */
 | 
						|
  staticCSP?: boolean | string | Record<string, string | string[]>
 | 
						|
  transformStaticCSP?: (header: string) => string
 | 
						|
  /**
 | 
						|
   * route hooks
 | 
						|
   */
 | 
						|
  uiHooks?: FastifySwaggerUiHooksOptions
 | 
						|
}
 | 
						|
 | 
						|
export type FastifySwaggerUiConfigOptions = Partial<{
 | 
						|
  deepLinking: boolean
 | 
						|
  displayOperationId: boolean
 | 
						|
  defaultModelsExpandDepth: number
 | 
						|
  defaultModelExpandDepth: number
 | 
						|
  defaultModelRendering: string
 | 
						|
  displayRequestDuration: boolean
 | 
						|
  docExpansion: string
 | 
						|
  filter: boolean | string
 | 
						|
  layout: string
 | 
						|
  maxDisplayedTags: number
 | 
						|
  showExtensions: boolean
 | 
						|
  showCommonExtensions: boolean
 | 
						|
  useUnsafeMarkdown: boolean
 | 
						|
  syntaxHighlight: {
 | 
						|
    activate?: boolean
 | 
						|
    theme?: string
 | 
						|
  } | false
 | 
						|
  tryItOutEnabled: boolean
 | 
						|
  validatorUrl: string | null
 | 
						|
}>
 | 
						|
 | 
						|
export type FastifySwaggerInitOAuthOptions = Partial<{
 | 
						|
  clientId: string,
 | 
						|
  clientSecret: string,
 | 
						|
  realm: string,
 | 
						|
  appName: string,
 | 
						|
  scopeSeparator: string,
 | 
						|
  scopes: string | string[],
 | 
						|
  additionalQueryStringParams: { [key: string]: any },
 | 
						|
  useBasicAuthenticationWithAccessCodeGrant: boolean,
 | 
						|
  usePkceWithAuthorizationCodeGrant: boolean
 | 
						|
}>
 | 
						|
 | 
						|
type JSONValue =
 | 
						|
    | string
 | 
						|
    | null
 | 
						|
    | number
 | 
						|
    | boolean
 | 
						|
    | JSONObject
 | 
						|
    | Array<JSONValue>;
 | 
						|
 | 
						|
export interface JSONObject {
 | 
						|
  [key: string]: JSONValue;
 | 
						|
}
 | 
						|
 | 
						|
export interface FastifyDynamicSwaggerOptions extends FastifySwaggerOptions {
 | 
						|
  mode?: 'dynamic';
 | 
						|
  swagger?: Partial<OpenAPIV2.Document>;
 | 
						|
  openapi?: Partial<OpenAPIV3.Document>
 | 
						|
  hiddenTag?: string;
 | 
						|
  hideUntagged?: boolean;
 | 
						|
  /**
 | 
						|
   * Strips matching base path from routes in documentation
 | 
						|
   * @default true
 | 
						|
   */
 | 
						|
  stripBasePath?: boolean;
 | 
						|
  /**
 | 
						|
   * custom function to transform the route's schema and url
 | 
						|
   */
 | 
						|
  transform?: <S extends FastifySchema = FastifySchema>({schema, url}: {schema: S, url: string}) => { schema: JSONObject, url: string };
 | 
						|
 | 
						|
  refResolver?: {
 | 
						|
    /** Clone the input schema without changing it. Default to `false`. */
 | 
						|
    clone?: boolean;
 | 
						|
    buildLocalReference: (
 | 
						|
      /** The `json` that is being resolved. */
 | 
						|
      json: JSONObject,
 | 
						|
      /** The `baseUri` object of the schema. */
 | 
						|
      baseUri: {
 | 
						|
        scheme?: string;
 | 
						|
        userinfo?: string;
 | 
						|
        host?: string;
 | 
						|
        port?: number | string;
 | 
						|
        path?: string;
 | 
						|
        query?: string;
 | 
						|
        fragment?: string;
 | 
						|
        reference?: string;
 | 
						|
        error?: string;
 | 
						|
      },
 | 
						|
      /** `fragment` is the `$ref` string when the `$ref` is a relative reference. */
 | 
						|
      fragment: string,
 | 
						|
      /** `i` is a local counter to generate a unique key. */
 | 
						|
      i: number
 | 
						|
    ) => string;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
export interface StaticPathSpec {
 | 
						|
  path: string;
 | 
						|
  postProcessor?: (spec: OpenAPI.Document) => OpenAPI.Document;
 | 
						|
  baseDir: string;
 | 
						|
}
 | 
						|
 | 
						|
export interface StaticDocumentSpec {
 | 
						|
  document: OpenAPIV2.Document | OpenAPIV3.Document;
 | 
						|
}
 | 
						|
 | 
						|
export interface FastifyStaticSwaggerOptions extends FastifySwaggerOptions {
 | 
						|
  mode: 'static';
 | 
						|
  specification: StaticPathSpec | StaticDocumentSpec;
 | 
						|
}
 | 
						|
 | 
						|
export type FastifySwaggerUiHooksOptions = Partial<{
 | 
						|
  onRequest?: onRequestHookHandler,
 | 
						|
  preHandler?: preHandlerHookHandler,
 | 
						|
}>
 | 
						|
 | 
						|
export default fastifySwagger;
 |