1 |
|
2 |
|
3 | import { Buffer } from 'buffer'
|
4 | import { RawServerBase, RawServerDefault, RawRequestDefaultExpression } from './utils'
|
5 | import { FastifyRequest } from './request'
|
6 | import { RouteGenericInterface } from './route'
|
7 |
|
8 | type ContentTypeParserDoneFunction = (err: Error | null, body?: any) => void
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | export type FastifyBodyParser<
|
14 | RawBody extends string | Buffer,
|
15 | RawServer extends RawServerBase = RawServerDefault,
|
16 | RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
17 | RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
|
18 | > = ((request: FastifyRequest<RouteGeneric, RawServer, RawRequest>, rawBody: RawBody, done: ContentTypeParserDoneFunction) => void)
|
19 | | ((request: FastifyRequest<RouteGeneric, RawServer, RawRequest>, rawBody: RawBody) => Promise<any>)
|
20 |
|
21 | /**
|
22 | * Content Type Parser method that operates on request content
|
23 | */
|
24 | export type FastifyContentTypeParser<
|
25 | RawServer extends RawServerBase = RawServerDefault,
|
26 | RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>,
|
27 | RouteGeneric extends RouteGenericInterface = RouteGenericInterface,
|
28 | > = ((request: FastifyRequest<RouteGeneric, RawServer, RawRequest>, payload: RawRequest) => Promise<any>)
|
29 | | ((request: FastifyRequest<RouteGeneric, RawServer, RawRequest>, payload: RawRequest, done: ContentTypeParserDoneFunction) => void)
|
30 |
|
31 | /**
|
32 | * 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.
|
33 | */
|
34 | export interface AddContentTypeParser<
|
35 | RawServer extends RawServerBase = RawServerDefault,
|
36 | RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>
|
37 | > {
|
38 | (
|
39 | contentType: string | string[],
|
40 | opts: {
|
41 | bodyLimit?: number;
|
42 | },
|
43 | parser: FastifyContentTypeParser<RawServer, RawRequest>
|
44 | ): void;
|
45 | }
|
46 |
|
47 | export interface AddContentTypeParser<
|
48 | RawServer extends RawServerBase = RawServerDefault,
|
49 | RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>
|
50 | > {
|
51 | (contentType: string | string[], parser: FastifyContentTypeParser<RawServer, RawRequest>): void;
|
52 | }
|
53 |
|
54 | export interface AddContentTypeParser<
|
55 | RawServer extends RawServerBase = RawServerDefault,
|
56 | RawRequest extends RawRequestDefaultExpression<RawServer> = RawRequestDefaultExpression<RawServer>
|
57 | >{
|
58 | <parseAs extends string | Buffer>(
|
59 | contentType: string | string[],
|
60 | opts: {
|
61 | parseAs: parseAs extends Buffer ? 'buffer' : 'string';
|
62 | bodyLimit?: number;
|
63 | },
|
64 | parser: FastifyBodyParser<parseAs, RawServer, RawRequest>
|
65 | ): void;
|
66 | }
|
67 |
|
68 | /**
|
69 | * Checks for a type parser of a content type
|
70 | */
|
71 | export type hasContentTypeParser = (contentType: string) => boolean
|