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