1 | import { RawServerBase, RawServerDefault, RawRequestDefaultExpression } from './utils'
|
2 | import { FastifyRequest } from './request'
|
3 | import { RouteGenericInterface } from './route'
|
4 | import { FastifyTypeProvider, FastifyTypeProviderDefault } from './type-provider'
|
5 | import { FastifySchema } from './schema'
|
6 |
|
7 | type ContentTypeParserDoneFunction = (err: Error | null, body?: any) => void
|
8 |
|
9 |
|
10 |
|
11 |
|
12 | export 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 | */
|
25 | export 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 | */
|
37 | export 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 | */
|
65 | export type hasContentTypeParser = (contentType: string | RegExp) => boolean
|
66 |
|
67 | export type ProtoAction = 'error' | 'remove' | 'ignore'
|
68 |
|
69 | export type ConstructorAction = 'error' | 'remove' | 'ignore'
|
70 |
|
71 | export type getDefaultJsonParser = (onProtoPoisoning: ProtoAction, onConstructorPoisoning: ConstructorAction) => FastifyBodyParser<string>
|
72 |
|
73 | export type removeContentTypeParser = (contentType: string | RegExp | (string | RegExp)[]) => void
|
74 |
|
75 | export type removeAllContentTypeParsers = () => void
|