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