UNPKG

3.8 kBTypeScriptView Raw
1import { RawServerBase, RawServerDefault, RawRequestDefaultExpression } from './utils'
2import { FastifyRequest } from './request'
3import { RouteGenericInterface } from './route'
4import { FastifyTypeProvider, FastifyTypeProviderDefault } from './type-provider'
5import { FastifySchema } from './schema'
6
7type ContentTypeParserDoneFunction = (err: Error | null, body?: any) => void
8
9/**
10 * Body parser method that operators on request body
11 */
12export type FastifyBodyParser<
13 RawBody extends string | Buffer,
14 RawServer extends RawServerBase = RawServerDefault,
15 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
16 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
17 SchemaCompiler extends FastifySchema = FastifySchema,
18 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
19> = ((request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider>, rawBody: RawBody, done: ContentTypeParserDoneFunction) => void)
20| ((request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider>, rawBody: RawBody) => Promise<any>)
21
22/**
23 * Content Type Parser method that operates on request content
24 */
25export type FastifyContentTypeParser<
26 RawServer extends RawServerBase = RawServerDefault,
27 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
28 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
29 SchemaCompiler extends FastifySchema = FastifySchema,
30 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
31> = ((request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider>, payload: RawRequest) => Promise<any>)
32| ((request: FastifyRequest<RouteGeneric, RawServer, RawRequest, SchemaCompiler, TypeProvider>, payload: RawRequest, done: ContentTypeParserDoneFunction) => void)
33
34/**
35 * Natively, Fastify only supports 'application/json' and 'text/plain' content types. The default charset is utf-8. If you need to support different content types, you can use the addContentTypeParser API. The default JSON and/or plain text parser can be changed.
36 */
37export interface AddContentTypeParser<
38 RawServer extends RawServerBase = RawServerDefault,
39 RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
40 RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
41 SchemaCompiler extends FastifySchema = FastifySchema,
42 TypeProvider extends FastifyTypeProvider = FastifyTypeProviderDefault,
43> {
44 (
45 contentType: string | string[] | RegExp,
46 opts: {
47 bodyLimit?: number;
48 },
49 parser: FastifyContentTypeParser<RawServer, RawRequest, RouteGeneric, SchemaCompiler, TypeProvider>
50 ): void;
51 (contentType: string | string[] | RegExp, parser: FastifyContentTypeParser<RawServer, RawRequest, RouteGeneric, SchemaCompiler, TypeProvider>): void;
52 <parseAs extends string | Buffer>(
53 contentType: string | string[] | RegExp,
54 opts: {
55 parseAs: parseAs extends Buffer ? 'buffer' : 'string';
56 bodyLimit?: number;
57 },
58 parser: FastifyBodyParser<parseAs, RawServer, RawRequest, RouteGeneric, SchemaCompiler, TypeProvider>
59 ): void;
60}
61
62/**
63 * Checks for a type parser of a content type
64 */
65export type hasContentTypeParser = (contentType: string | RegExp) => boolean
66
67export type ProtoAction = 'error' | 'remove' | 'ignore'
68
69export type ConstructorAction = 'error' | 'remove' | 'ignore'
70
71export type getDefaultJsonParser = (onProtoPoisoning: ProtoAction, onConstructorPoisoning: ConstructorAction) => FastifyBodyParser<string>
72
73export type removeContentTypeParser = (contentType: string | RegExp | (string | RegExp)[]) => void
74
75export type removeAllContentTypeParsers = () => void