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
						
					
					
				| 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 }
 |