Skip to content

Commit

Permalink
make typings nodenext compatible (#693)
Browse files Browse the repository at this point in the history
  • Loading branch information
Uzlopak authored Nov 22, 2022
1 parent d504587 commit 30f41c8
Show file tree
Hide file tree
Showing 2 changed files with 114 additions and 105 deletions.
217 changes: 112 additions & 105 deletions index.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {FastifyPluginCallback, FastifySchema, onRequestHookHandler, preHandlerHookHandler} from 'fastify';
import { FastifyPluginCallback, FastifySchema, onRequestHookHandler, preHandlerHookHandler } from 'fastify';
import { OpenAPI, OpenAPIV2, OpenAPIV3 } from 'openapi-types';

/**
Expand All @@ -21,9 +21,9 @@ declare module 'openapi-types' {
declare module 'fastify' {
interface FastifyInstance {
swagger:
((opts?: { yaml?: false }) => OpenAPI.Document) &
((opts: { yaml: true }) => string) &
((opts: { yaml: boolean }) => OpenAPI.Document | string);
((opts?: { yaml?: false }) => OpenAPI.Document) &
((opts: { yaml: true }) => string) &
((opts: { yaml: boolean }) => OpenAPI.Document | string);

swaggerCSP: {
script: string[];
Expand Down Expand Up @@ -54,121 +54,128 @@ declare module 'fastify' {
}
}

export const fastifySwagger: FastifyPluginCallback<SwaggerOptions>;
type FastifySwagger = FastifyPluginCallback<fastifySwagger.SwaggerOptions>

export type SwaggerOptions = (FastifyStaticSwaggerOptions | FastifyDynamicSwaggerOptions);
export interface FastifySwaggerOptions {
mode?: 'static' | 'dynamic';
}
declare namespace fastifySwagger {
export type SwaggerOptions = (FastifyStaticSwaggerOptions | FastifyDynamicSwaggerOptions);
export interface FastifySwaggerOptions {
mode?: 'static' | 'dynamic';
}

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
supportedSubmitMethods: Array<'get' | 'post' | 'put' | 'delete' | 'patch' | 'options'>
persistAuthorization: boolean
}>

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 =
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
supportedSubmitMethods: Array<'get' | 'post' | 'put' | 'delete' | 'patch' | 'options'>
persistAuthorization: boolean
}>

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 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 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 StaticPathSpec {
path: string;
postProcessor?: (spec: OpenAPI.Document) => OpenAPI.Document;
baseDir: string;
}

export interface StaticDocumentSpec {
document: OpenAPIV2.Document | OpenAPIV3.Document;
}
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 interface FastifyStaticSwaggerOptions extends FastifySwaggerOptions {
mode: 'static';
specification: StaticPathSpec | StaticDocumentSpec;
export const fastifySwagger: FastifySwagger
export { fastifySwagger as default }
}

export type FastifySwaggerUiHooksOptions = Partial<{
onRequest?: onRequestHookHandler,
preHandler?: preHandlerHookHandler,
}>
declare function fastifySwagger(...params: Parameters<FastifySwagger>): ReturnType<FastifySwagger>

export default fastifySwagger;
export = fastifySwagger;
2 changes: 2 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,5 @@ module.exports = fp(fastifySwagger, {
fastify: '4.x',
name: '@fastify/swagger'
})
module.exports.fastifySwagger = fastifySwagger
module.exports.default = fastifySwagger

0 comments on commit 30f41c8

Please sign in to comment.