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.
		
		
		
		
		
			
		
			
				
					197 lines
				
				8.9 KiB
			
		
		
			
		
	
	
					197 lines
				
				8.9 KiB
			| 
											3 years ago
										 | import * as http from 'http' | ||
|  | import * as http2 from 'http2' | ||
|  | import * as https from 'https' | ||
|  | import { ConstraintStrategy, HTTPVersion } from 'find-my-way' | ||
|  | 
 | ||
|  | import { FastifyRequest, RequestGenericInterface } from './types/request' | ||
|  | import { RawServerBase, RawServerDefault, RawRequestDefaultExpression, RawReplyDefaultExpression } from './types/utils' | ||
|  | import { FastifyLoggerInstance, FastifyLoggerOptions } from './types/logger' | ||
|  | import { FastifyInstance } from './types/instance' | ||
|  | import { FastifyServerFactory } from './types/serverFactory' | ||
|  | import { Options as AjvOptions } from '@fastify/ajv-compiler' | ||
|  | import { FastifyError } from '@fastify/error' | ||
|  | import { FastifyReply } from './types/reply' | ||
|  | import { FastifySchemaValidationError } from './types/schema' | ||
|  | import { ConstructorAction, ProtoAction } from "./types/content-type-parser"; | ||
|  | import { Socket } from 'net' | ||
|  | import { Options as FJSOptions } from 'fast-json-stringify' | ||
|  | import { ValidatorCompiler } from '@fastify/ajv-compiler' | ||
|  | import { FastifySerializerCompiler } from './types/schema'; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Fastify factory function for the standard fastify http, https, or http2 server instance. | ||
|  |  * | ||
|  |  * The default function utilizes http | ||
|  |  * | ||
|  |  * @param opts Fastify server options | ||
|  |  * @returns Fastify server instance | ||
|  |  */ | ||
|  | declare function fastify< | ||
|  |   Server extends http2.Http2SecureServer, | ||
|  |   Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>, | ||
|  |   Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>, | ||
|  |   Logger extends FastifyLoggerInstance = FastifyLoggerInstance | ||
|  | >(opts: FastifyHttp2SecureOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger> & PromiseLike<FastifyInstance<Server, Request, Reply, Logger>> | ||
|  | declare function fastify< | ||
|  |   Server extends http2.Http2Server, | ||
|  |   Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>, | ||
|  |   Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>, | ||
|  |   Logger extends FastifyLoggerInstance = FastifyLoggerInstance | ||
|  | >(opts: FastifyHttp2Options<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger> & PromiseLike<FastifyInstance<Server, Request, Reply, Logger>> | ||
|  | declare function fastify< | ||
|  |   Server extends https.Server, | ||
|  |   Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>, | ||
|  |   Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>, | ||
|  |   Logger extends FastifyLoggerInstance = FastifyLoggerInstance | ||
|  | >(opts: FastifyHttpsOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger> & PromiseLike<FastifyInstance<Server, Request, Reply, Logger>> | ||
|  | declare function fastify< | ||
|  |   Server extends http.Server, | ||
|  |   Request extends RawRequestDefaultExpression<Server> = RawRequestDefaultExpression<Server>, | ||
|  |   Reply extends RawReplyDefaultExpression<Server> = RawReplyDefaultExpression<Server>, | ||
|  |   Logger extends FastifyLoggerInstance = FastifyLoggerInstance | ||
|  | >(opts?: FastifyServerOptions<Server, Logger>): FastifyInstance<Server, Request, Reply, Logger> & PromiseLike<FastifyInstance<Server, Request, Reply, Logger>> | ||
|  | export default fastify | ||
|  | 
 | ||
|  | export type FastifyHttp2SecureOptions< | ||
|  |   Server extends http2.Http2SecureServer, | ||
|  |   Logger extends FastifyLoggerInstance = FastifyLoggerInstance | ||
|  | > = FastifyServerOptions<Server, Logger> & { | ||
|  |   http2: true, | ||
|  |   https: http2.SecureServerOptions, | ||
|  |   http2SessionTimeout?: number | ||
|  | } | ||
|  | 
 | ||
|  | export type FastifyHttp2Options< | ||
|  |   Server extends http2.Http2Server, | ||
|  |   Logger extends FastifyLoggerInstance = FastifyLoggerInstance | ||
|  | > = FastifyServerOptions<Server, Logger> & { | ||
|  |   http2: true, | ||
|  |   http2SessionTimeout?: number | ||
|  | } | ||
|  | 
 | ||
|  | export type FastifyHttpsOptions< | ||
|  |   Server extends https.Server, | ||
|  |   Logger extends FastifyLoggerInstance = FastifyLoggerInstance | ||
|  | > = FastifyServerOptions<Server, Logger> & { | ||
|  |   https: https.ServerOptions | ||
|  | } | ||
|  | 
 | ||
|  | type FindMyWayVersion<RawServer extends RawServerBase> = RawServer extends http.Server ? HTTPVersion.V1 : HTTPVersion.V2 | ||
|  | 
 | ||
|  | export interface ConnectionError extends Error { | ||
|  |   code: string, | ||
|  |   bytesParsed: number, | ||
|  |   rawPacket: { | ||
|  |     type: string, | ||
|  |     data: number[] | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | /** | ||
|  |  * Options for a fastify server instance. Utilizes conditional logic on the generic server parameter to enforce certain https and http2 | ||
|  |  */ | ||
|  | export type FastifyServerOptions< | ||
|  |   RawServer extends RawServerBase = RawServerDefault, | ||
|  |   Logger extends FastifyLoggerInstance = FastifyLoggerInstance | ||
|  | > = { | ||
|  |   ignoreTrailingSlash?: boolean, | ||
|  |   connectionTimeout?: number, | ||
|  |   keepAliveTimeout?: number, | ||
|  |   maxRequestsPerSocket?: number, | ||
|  |   forceCloseConnections?: boolean, | ||
|  |   requestTimeout?: number, | ||
|  |   pluginTimeout?: number, | ||
|  |   bodyLimit?: number, | ||
|  |   maxParamLength?: number, | ||
|  |   disableRequestLogging?: boolean, | ||
|  |   exposeHeadRoutes?: boolean, | ||
|  |   onProtoPoisoning?: ProtoAction, | ||
|  |   onConstructorPoisoning?: ConstructorAction, | ||
|  |   logger?: boolean | FastifyLoggerOptions<RawServer> | Logger, | ||
|  |   serializerOpts?: FJSOptions | Record<string, unknown>, | ||
|  |   serverFactory?: FastifyServerFactory<RawServer>, | ||
|  |   caseSensitive?: boolean, | ||
|  |   requestIdHeader?: string, | ||
|  |   requestIdLogLabel?: string; | ||
|  |   jsonShorthand?: boolean; | ||
|  |   genReqId?: <RequestGeneric extends RequestGenericInterface = RequestGenericInterface>(req: FastifyRequest<RequestGeneric, RawServer, RawRequestDefaultExpression<RawServer>>) => string, | ||
|  |   trustProxy?: boolean | string | string[] | number | TrustProxyFunction, | ||
|  |   querystringParser?: (str: string) => { [key: string]: unknown }, | ||
|  |   /** | ||
|  |    * @deprecated Prefer using the `constraints.version` property | ||
|  |    */ | ||
|  |   versioning?: { | ||
|  |     storage(): { | ||
|  |       get(version: string): string | null, | ||
|  |       set(version: string, store: Function): void | ||
|  |       del(version: string): void, | ||
|  |       empty(): void | ||
|  |     }, | ||
|  |     deriveVersion<Context>(req: Object, ctx?: Context): string // not a fan of using Object here. Also what is Context? Can either of these be better defined?
 | ||
|  |   }, | ||
|  |   constraints?: { | ||
|  |     [name: string]: ConstraintStrategy<FindMyWayVersion<RawServer>, unknown>, | ||
|  |   }, | ||
|  |   schemaController?: { | ||
|  |     bucket?: (parentSchemas?: unknown) => { | ||
|  |       addSchema(schema: unknown): FastifyInstance; | ||
|  |       getSchema(schemaId: string): unknown; | ||
|  |       getSchemas(): Record<string, unknown>; | ||
|  |     }; | ||
|  |     compilersFactory?: { | ||
|  |       buildValidator?: ValidatorCompiler; | ||
|  |       buildSerializer?: (externalSchemas: unknown, serializerOptsServerOption: FastifyServerOptions["serializerOpts"]) => FastifySerializerCompiler<unknown>; | ||
|  |     }; | ||
|  |   }; | ||
|  |   return503OnClosing?: boolean, | ||
|  |   ajv?: { | ||
|  |     customOptions?: AjvOptions, | ||
|  |     plugins?: (Function | [Function, unknown])[] | ||
|  |   }, | ||
|  |   frameworkErrors?: <RequestGeneric extends RequestGenericInterface = RequestGenericInterface>( | ||
|  |     error: FastifyError, | ||
|  |     req: FastifyRequest<RequestGeneric, RawServer, RawRequestDefaultExpression<RawServer>>, | ||
|  |     res: FastifyReply<RawServer, RawRequestDefaultExpression<RawServer>, RawReplyDefaultExpression<RawServer>> | ||
|  |   ) => void, | ||
|  |   rewriteUrl?: (req: RawRequestDefaultExpression<RawServer>) => string, | ||
|  |   schemaErrorFormatter?: (errors: FastifySchemaValidationError[], dataVar: string) => Error, | ||
|  |   /** | ||
|  |    * listener to error events emitted by client connections | ||
|  |    */ | ||
|  |   clientErrorHandler?: (error: ConnectionError, socket: Socket) => void | ||
|  | } | ||
|  | 
 | ||
|  | type TrustProxyFunction = (address: string, hop: number) => boolean | ||
|  | 
 | ||
|  | declare module '@fastify/error' { | ||
|  |   interface FastifyError { | ||
|  |     validation?: ValidationResult[]; | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | export interface ValidationResult { | ||
|  |   keyword: string; | ||
|  |   dataPath: string; | ||
|  |   schemaPath: string; | ||
|  |   params: Record<string, string | string[]>; | ||
|  |   message: string; | ||
|  | } | ||
|  | 
 | ||
|  | /* Export all additional types */ | ||
|  | export type { Chain as LightMyRequestChain, InjectOptions, Response as LightMyRequestResponse, CallbackFunc as LightMyRequestCallback } from 'light-my-request' | ||
|  | export { FastifyRequest, RequestGenericInterface } from './types/request' | ||
|  | export { FastifyReply } from './types/reply' | ||
|  | export { FastifyPluginCallback, FastifyPluginAsync, FastifyPluginOptions, FastifyPlugin } from './types/plugin' | ||
|  | export { FastifyInstance, PrintRoutesOptions } from './types/instance' | ||
|  | export { FastifyLoggerOptions, FastifyLoggerInstance, FastifyLogFn, LogLevel } from './types/logger' | ||
|  | export { FastifyContext, FastifyContextConfig } from './types/context' | ||
|  | export { RouteHandler, RouteHandlerMethod, RouteOptions, RouteShorthandMethod, RouteShorthandOptions, RouteShorthandOptionsWithHandler } from './types/route' | ||
|  | export * from './types/register' | ||
|  | export { FastifyBodyParser, FastifyContentTypeParser, AddContentTypeParser, hasContentTypeParser, getDefaultJsonParser, ProtoAction, ConstructorAction } from './types/content-type-parser' | ||
|  | export { FastifyError } from '@fastify/error' | ||
|  | export { FastifySchema, FastifySchemaCompiler } from './types/schema' | ||
|  | export { HTTPMethods, RawServerBase, RawRequestDefaultExpression, RawReplyDefaultExpression, RawServerDefault, ContextConfigDefault, RequestBodyDefault, RequestQuerystringDefault, RequestParamsDefault, RequestHeadersDefault } from './types/utils' | ||
|  | export * from './types/hooks' | ||
|  | export { FastifyServerFactory, FastifyServerFactoryHandler } from './types/serverFactory' | ||
|  | export { fastify } |