@inversifyjs/http-fastify 4.2.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @inversifyjs/http-fastify
2
2
 
3
+ ## 4.4.0
4
+
5
+ ### Patch Changes
6
+
7
+ Fixed fastify next function to be `() => void`
8
+
9
+ - Updated dependencies
10
+ - @inversifyjs/http-core@4.4.0
11
+
12
+ ## 4.3.0
13
+
14
+ ### Minor Changes
15
+
16
+ - Updated `InversifyFastifyHttpAdapter` to handle multipart form data
17
+ - Updated `FastifyHttpAdapterOptions` with `useMultipartFormData`
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies
22
+ - @inversifyjs/http-core@4.3.0
23
+
3
24
  ## 4.2.0
4
25
 
5
26
  ### Patch Changes
@@ -1,9 +1,9 @@
1
1
  import { Readable } from 'node:stream';
2
2
  import { HttpStatusCode, InversifyHttpAdapter, RouterParams } from '@inversifyjs/http-core';
3
- import { FastifyInstance, FastifyReply, FastifyRequest, HookHandlerDoneFunction } from 'fastify';
3
+ import { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';
4
4
  import { Container } from 'inversify';
5
5
  import { FastifyHttpAdapterOptions } from '../models/FastifyHttpAdapterOptions';
6
- export declare class InversifyFastifyHttpAdapter extends InversifyHttpAdapter<FastifyRequest, FastifyReply, HookHandlerDoneFunction, void, FastifyHttpAdapterOptions> {
6
+ export declare class InversifyFastifyHttpAdapter extends InversifyHttpAdapter<FastifyRequest, FastifyReply, () => void, void, FastifyHttpAdapterOptions> {
7
7
  #private;
8
8
  constructor(container: Container, httpAdapterOptions?: FastifyHttpAdapterOptions, customApp?: FastifyInstance);
9
9
  build(): Promise<FastifyInstance>;
@@ -17,6 +17,6 @@ export declare class InversifyFastifyHttpAdapter extends InversifyHttpAdapter<Fa
17
17
  protected _replyStream(_request: FastifyRequest, response: FastifyReply, value: Readable): Promise<void>;
18
18
  protected _setStatus(_request: FastifyRequest, response: FastifyReply, statusCode: HttpStatusCode): void;
19
19
  protected _setHeader(_request: FastifyRequest, response: FastifyReply, key: string, value: string): void;
20
- protected _buildRouter(routerParams: RouterParams<FastifyRequest, FastifyReply, HookHandlerDoneFunction, void>): void;
20
+ protected _buildRouter(routerParams: RouterParams<FastifyRequest, FastifyReply, () => void, void>): void;
21
21
  }
22
22
  //# sourceMappingURL=InversifyFastifyHttpAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InversifyFastifyHttpAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapter/InversifyFastifyHttpAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,OAAO,EACL,cAAc,EACd,oBAAoB,EAIpB,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,eAAe,EAEf,YAAY,EACZ,cAAc,EACd,uBAAuB,EAKxB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEhF,qBAAa,2BAA4B,SAAQ,oBAAoB,CACnE,cAAc,EACd,YAAY,EACZ,uBAAuB,EACvB,IAAI,EACJ,yBAAyB,CAC1B;;gBAIG,SAAS,EAAE,SAAS,EACpB,kBAAkB,CAAC,EAAE,yBAAyB,EAC9C,SAAS,CAAC,EAAE,eAAe;IAUhB,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;IAM9C,SAAS,CAAC,QAAQ,CAChB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,YAAY,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO;IAMV,SAAS,CAAC,UAAU,CAClB,OAAO,EAAE,cAAc,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO;IAKV,SAAS,CAAC,SAAS,CACjB,OAAO,EAAE,cAAc,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO;IAMV,SAAS,CAAC,WAAW,CACnB,OAAO,EAAE,cAAc,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO;IAMV,SAAS,CAAC,WAAW,CACnB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,YAAY,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO;IAMV,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,MAAM,GACZ,IAAI;IAIP,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,YAAY,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI;cAIS,YAAY,CAC1B,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC;IAIhB,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,cAAc,GACzB,IAAI;IAIP,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,IAAI;IAIP,SAAS,CAAC,YAAY,CACpB,YAAY,EAAE,YAAY,CACxB,cAAc,EACd,YAAY,EACZ,uBAAuB,EACvB,IAAI,CACL,GACA,IAAI;CAyLR"}
1
+ {"version":3,"file":"InversifyFastifyHttpAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapter/InversifyFastifyHttpAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKvC,OAAO,EAGL,cAAc,EACd,oBAAoB,EAIpB,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,eAAe,EAEf,YAAY,EACZ,cAAc,EAEf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEhF,qBAAa,2BAA4B,SAAQ,oBAAoB,CACnE,cAAc,EACd,YAAY,EACZ,MAAM,IAAI,EACV,IAAI,EACJ,yBAAyB,CAC1B;;gBAIG,SAAS,EAAE,SAAS,EACpB,kBAAkB,CAAC,EAAE,yBAAyB,EAC9C,SAAS,CAAC,EAAE,eAAe;IAgBhB,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;IAM9C,SAAS,CAAC,QAAQ,CAChB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,YAAY,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO;IAQV,SAAS,CAAC,UAAU,CAClB,OAAO,EAAE,cAAc,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO;IAKV,SAAS,CAAC,SAAS,CACjB,OAAO,EAAE,cAAc,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO;IAMV,SAAS,CAAC,WAAW,CACnB,OAAO,EAAE,cAAc,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO;IAMV,SAAS,CAAC,WAAW,CACnB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,YAAY,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO;IAMV,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,MAAM,GACZ,IAAI;IAIP,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,YAAY,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI;cAIS,YAAY,CAC1B,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC;IAIhB,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,cAAc,GACzB,IAAI;IAIP,SAAS,CAAC,UAAU,CAClB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,IAAI;IAIP,SAAS,CAAC,YAAY,CACpB,YAAY,EAAE,YAAY,CAAC,cAAc,EAAE,YAAY,EAAE,MAAM,IAAI,EAAE,IAAI,CAAC,GACzE,IAAI;CAkHR"}
@@ -4,12 +4,18 @@ exports.InversifyFastifyHttpAdapter = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const cookie_1 = tslib_1.__importDefault(require("@fastify/cookie"));
6
6
  const formbody_1 = tslib_1.__importDefault(require("@fastify/formbody"));
7
+ const multipart_1 = tslib_1.__importDefault(require("@fastify/multipart"));
7
8
  const http_core_1 = require("@inversifyjs/http-core");
8
9
  const fastify_1 = require("fastify");
9
10
  class InversifyFastifyHttpAdapter extends http_core_1.InversifyHttpAdapter {
10
11
  #app;
11
12
  constructor(container, httpAdapterOptions, customApp) {
12
- super(container, { logger: true, useCookies: false, useFormUrlEncoded: false }, httpAdapterOptions);
13
+ super(container, {
14
+ logger: true,
15
+ useCookies: false,
16
+ useFormUrlEncoded: false,
17
+ useMultipartFormData: false,
18
+ }, httpAdapterOptions, [http_core_1.RequestMethodParameterType.Body]);
13
19
  this.#app = this.#buildDefaultFastifyApp(customApp);
14
20
  }
15
21
  async build() {
@@ -17,29 +23,32 @@ class InversifyFastifyHttpAdapter extends http_core_1.InversifyHttpAdapter {
17
23
  return this.#app;
18
24
  }
19
25
  _getBody(request, _response, parameterName) {
20
- return parameterName !== undefined
21
- ? request.body[parameterName]
22
- : request.body;
26
+ if (this.httpAdapterOptions.useMultipartFormData !== false) {
27
+ return this.#getMultipartRequestBody(request, parameterName);
28
+ }
29
+ else {
30
+ return this.#getRequestBody(request, parameterName);
31
+ }
23
32
  }
24
33
  _getParams(request, parameterName) {
25
- return parameterName !== undefined
26
- ? request.params[parameterName]
27
- : request.params;
34
+ return parameterName === undefined
35
+ ? request.params
36
+ : request.params[parameterName];
28
37
  }
29
38
  _getQuery(request, parameterName) {
30
- return parameterName !== undefined
31
- ? request.query[parameterName]
32
- : request.query;
39
+ return parameterName === undefined
40
+ ? request.query
41
+ : request.query[parameterName];
33
42
  }
34
43
  _getHeaders(request, parameterName) {
35
- return parameterName !== undefined
36
- ? request.headers[parameterName]
37
- : request.headers;
44
+ return parameterName === undefined
45
+ ? request.headers
46
+ : request.headers[parameterName];
38
47
  }
39
48
  _getCookies(request, _response, parameterName) {
40
- return parameterName !== undefined
41
- ? request.cookies[parameterName]
42
- : request.cookies;
49
+ return parameterName === undefined
50
+ ? request.cookies
51
+ : request.cookies[parameterName];
43
52
  }
44
53
  _replyText(_request, response, value) {
45
54
  response.send(value);
@@ -57,24 +66,20 @@ class InversifyFastifyHttpAdapter extends http_core_1.InversifyHttpAdapter {
57
66
  response.header(key, value);
58
67
  }
59
68
  _buildRouter(routerParams) {
60
- const router = (fastifyInstance, _opts, done) => {
61
- for (const routeParams of routerParams.routeParamsList) {
62
- const orderedMiddlewareList = [
63
- ...routeParams.preHandlerMiddlewareList,
64
- ...routeParams.guardList,
65
- ];
66
- const normalizedUrl = routeParams.path === '/' ? '' : routeParams.path;
67
- fastifyInstance.route({
68
- handler: this.#buildFastifyHandler(routeParams.handler),
69
- method: this.#convertRequestMethodType(routeParams.requestMethodType),
70
- onResponse: this.#buildFastifyOnResponseAsyncMiddlewareList(routeParams.postHandlerMiddlewareList),
71
- preHandler: this.#buildFastifyPreHandlerAsyncMiddlewareList(orderedMiddlewareList),
72
- url: normalizedUrl,
73
- });
74
- }
75
- done();
76
- };
77
- this.#app.register(router, { prefix: routerParams.path });
69
+ for (const routeParams of routerParams.routeParamsList) {
70
+ const orderedHandlers = [
71
+ ...routeParams.preHandlerMiddlewareList,
72
+ ...routeParams.guardList,
73
+ routeParams.handler,
74
+ ...routeParams.postHandlerMiddlewareList,
75
+ ];
76
+ const normalizedPath = (0, http_core_1.buildNormalizedPath)(`${routerParams.path}${routeParams.path}`);
77
+ const handleMiddlewares = (0, http_core_1.handleMiddlewareList)(orderedHandlers);
78
+ const fastifyHandler = async (request, reply) => {
79
+ await handleMiddlewares(request, reply);
80
+ };
81
+ this.#getAppRouteHandler(routeParams.requestMethodType)(normalizedPath, fastifyHandler);
82
+ }
78
83
  }
79
84
  #buildDefaultFastifyApp(customApp) {
80
85
  const app = customApp ?? (0, fastify_1.fastify)();
@@ -84,63 +89,51 @@ class InversifyFastifyHttpAdapter extends http_core_1.InversifyHttpAdapter {
84
89
  if (this.httpAdapterOptions.useFormUrlEncoded) {
85
90
  app.register(formbody_1.default);
86
91
  }
92
+ if (this.httpAdapterOptions.useMultipartFormData !== false) {
93
+ if (this.httpAdapterOptions.useMultipartFormData === true) {
94
+ app.register(multipart_1.default);
95
+ }
96
+ else {
97
+ app.register(multipart_1.default, this.httpAdapterOptions.useMultipartFormData);
98
+ }
99
+ }
87
100
  return app;
88
101
  }
89
- #buildFastifyHandler(handler) {
90
- return async (request, reply) => {
91
- await new Promise((resolve, reject) => {
92
- const done = (err) => {
93
- if (err !== undefined) {
94
- reject(err);
95
- }
96
- else {
97
- resolve();
98
- }
99
- };
100
- resolve(handler(request, reply, done));
101
- });
102
- };
103
- }
104
- #buildFastifyPreHandlerAsyncMiddlewareList(middlewareList) {
105
- return middlewareList.map((middleware) => this.#buildFastifyPreHandlerAsyncMiddleware(middleware));
106
- }
107
- #buildFastifyOnResponseAsyncMiddlewareList(middlewareList) {
108
- return middlewareList.map((middleware) => this.#buildFastifyOnResponseAsyncMiddleware(middleware));
109
- }
110
- #buildFastifyPreHandlerAsyncMiddleware(middleware) {
111
- return async (request, reply) => {
112
- await new Promise((resolve, reject) => {
113
- const done = (err) => {
114
- if (err !== undefined) {
115
- reject(err);
116
- }
117
- else {
118
- resolve();
119
- }
120
- };
121
- middleware(request, reply, done);
122
- });
123
- };
124
- }
125
- #buildFastifyOnResponseAsyncMiddleware(middleware) {
126
- return async (request, reply) => {
127
- await new Promise((resolve, reject) => {
128
- const done = (err) => {
129
- if (err !== undefined) {
130
- reject(err);
131
- }
132
- else {
133
- resolve();
134
- }
135
- };
136
- middleware(request, reply, done);
137
- });
138
- };
139
- }
140
- #convertRequestMethodType(requestMethodType) {
141
- return requestMethodType === http_core_1.RequestMethodType.All
142
- ? Object.values(http_core_1.RequestMethodType).filter((method) => method !== http_core_1.RequestMethodType.All)
143
- : requestMethodType;
102
+ #getAppRouteHandler(requestMethodType) {
103
+ switch (requestMethodType) {
104
+ case http_core_1.RequestMethodType.All:
105
+ return this.#app.all.bind(this.#app);
106
+ case http_core_1.RequestMethodType.Delete:
107
+ return this.#app.delete.bind(this.#app);
108
+ case http_core_1.RequestMethodType.Get:
109
+ return this.#app.get.bind(this.#app);
110
+ case http_core_1.RequestMethodType.Head:
111
+ return this.#app.head.bind(this.#app);
112
+ case http_core_1.RequestMethodType.Options:
113
+ return this.#app.options.bind(this.#app);
114
+ case http_core_1.RequestMethodType.Patch:
115
+ return this.#app.patch.bind(this.#app);
116
+ case http_core_1.RequestMethodType.Post:
117
+ return this.#app.post.bind(this.#app);
118
+ case http_core_1.RequestMethodType.Put:
119
+ return this.#app.put.bind(this.#app);
120
+ }
121
+ }
122
+ #getMultipartRequestBody(request, parameterName) {
123
+ if (request.isMultipart()) {
124
+ if (parameterName === undefined) {
125
+ return request.parts();
126
+ }
127
+ throw new Error('Cannot get multipart form data body with a specific parameter name.');
128
+ }
129
+ else {
130
+ return this.#getRequestBody(request, parameterName);
131
+ }
132
+ }
133
+ #getRequestBody(request, parameterName) {
134
+ return parameterName === undefined
135
+ ? request.body
136
+ : request.body[parameterName];
144
137
  }
145
138
  }
146
139
  exports.InversifyFastifyHttpAdapter = InversifyFastifyHttpAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"InversifyFastifyHttpAdapter.js","sourceRoot":"","sources":["../../../src/adapter/InversifyFastifyHttpAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InversifyFastifyHttpAdapter.js","sourceRoot":"","sources":["../../../src/adapter/InversifyFastifyHttpAdapter.ts"],"names":[],"mappings":";;;;AAEA,qEAA+D;AAC/D,yEAAgD;AAChD,2EAAkD;AAClD,sDASgC;AAChC,qCAOiB;AAKjB,MAAa,2BAA4B,SAAQ,gCAMhD;IACU,IAAI,CAAkB;IAE/B,YACE,SAAoB,EACpB,kBAA8C,EAC9C,SAA2B;QAE3B,KAAK,CACH,SAAS,EACT;YACE,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,KAAK;YACjB,iBAAiB,EAAE,KAAK;YACxB,oBAAoB,EAAE,KAAK;SAC5B,EACD,kBAAkB,EAClB,CAAC,sCAA0B,CAAC,IAAI,CAAC,CAClC,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE1B,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAES,QAAQ,CAChB,OAAuB,EACvB,SAAuB,EACvB,aAAsB;QAEtB,IAAI,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YAC3D,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAES,UAAU,CAClB,OAAuB,EACvB,aAAsB;QAEtB,OAAO,aAAa,KAAK,SAAS;YAChC,CAAC,CAAC,OAAO,CAAC,MAAM;YAChB,CAAC,CAAE,OAAO,CAAC,MAAkC,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC;IACS,SAAS,CACjB,OAAuB,EACvB,aAAsB;QAEtB,OAAO,aAAa,KAAK,SAAS;YAChC,CAAC,CAAC,OAAO,CAAC,KAAK;YACf,CAAC,CAAE,OAAO,CAAC,KAAiC,CAAC,aAAa,CAAC,CAAC;IAChE,CAAC;IAES,WAAW,CACnB,OAAuB,EACvB,aAAsB;QAEtB,OAAO,aAAa,KAAK,SAAS;YAChC,CAAC,CAAC,OAAO,CAAC,OAAO;YACjB,CAAC,CAAE,OAAO,CAAC,OAAmC,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC;IAES,WAAW,CACnB,OAAuB,EACvB,SAAuB,EACvB,aAAsB;QAEtB,OAAO,aAAa,KAAK,SAAS;YAChC,CAAC,CAAC,OAAO,CAAC,OAAO;YACjB,CAAC,CAAE,OAAO,CAAC,OAAmC,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC;IAES,UAAU,CAClB,QAAwB,EACxB,QAAsB,EACtB,KAAa;QAEb,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAES,UAAU,CAClB,QAAwB,EACxB,QAAsB,EACtB,KAAc;QAEd,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAES,KAAK,CAAC,YAAY,CAC1B,QAAwB,EACxB,QAAsB,EACtB,KAAe;QAEf,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAES,UAAU,CAClB,QAAwB,EACxB,QAAsB,EACtB,UAA0B;QAE1B,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAES,UAAU,CAClB,QAAwB,EACxB,QAAsB,EACtB,GAAW,EACX,KAAa;QAEb,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAES,YAAY,CACpB,YAA0E;QAE1E,KAAK,MAAM,WAAW,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;YACvD,MAAM,eAAe,GAKf;gBACJ,GAAG,WAAW,CAAC,wBAAwB;gBACvC,GAAG,WAAW,CAAC,SAAS;gBACxB,WAAW,CAAC,OAAO;gBACnB,GAAG,WAAW,CAAC,yBAAyB;aACzC,CAAC;YAEF,MAAM,cAAc,GAAW,IAAA,+BAAmB,EAChD,GAAG,YAAY,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAC1C,CAAC;YAEF,MAAM,iBAAiB,GAGF,IAAA,gCAAoB,EAAC,eAAe,CAAC,CAAC;YAE3D,MAAM,cAAc,GAAuB,KAAK,EAC9C,OAAuB,EACvB,KAAmB,EACJ,EAAE;gBACjB,MAAM,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC,CAAC;YAEF,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CACrD,cAAc,EACd,cAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED,uBAAuB,CAAC,SAA2B;QACjD,MAAM,GAAG,GAAoB,SAAS,IAAI,IAAA,iBAAO,GAAE,CAAC;QAEpD,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;YACvC,GAAG,CAAC,QAAQ,CACV,gBAEC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;YAC9C,GAAG,CAAC,QAAQ,CAAC,kBAAe,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YAC3D,IAAI,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;gBAC1D,GAAG,CAAC,QAAQ,CAAC,mBAAgB,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,QAAQ,CACV,mBAAgB,EAChB,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAC7C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,mBAAmB,CACjB,iBAAoC;QAEpC,QAAQ,iBAAiB,EAAE,CAAC;YAC1B,KAAK,6BAAiB,CAAC,GAAG;gBACxB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,KAAK,6BAAiB,CAAC,MAAM;gBAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,KAAK,6BAAiB,CAAC,GAAG;gBACxB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,KAAK,6BAAiB,CAAC,IAAI;gBACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,KAAK,6BAAiB,CAAC,OAAO;gBAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,KAAK,6BAAiB,CAAC,KAAK;gBAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,6BAAiB,CAAC,IAAI;gBACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,KAAK,6BAAiB,CAAC,GAAG;gBACxB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,wBAAwB,CACtB,OAAuB,EACvB,aAAiC;QAEjC,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;YAED,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,eAAe,CACb,OAAuB,EACvB,aAAiC;QAEjC,OAAO,aAAa,KAAK,SAAS;YAChC,CAAC,CAAC,OAAO,CAAC,IAAI;YACd,CAAC,CAAE,OAAO,CAAC,IAAgC,CAAC,aAAa,CAAC,CAAC;IAC/D,CAAC;CACF;AA/OD,kEA+OC"}
@@ -1,6 +1,8 @@
1
+ import { type FastifyMultipartAttachFieldsToBodyOptions, FastifyMultipartOptions } from '@fastify/multipart';
1
2
  import { HttpAdapterOptions } from '@inversifyjs/http-core';
2
3
  export interface FastifyHttpAdapterOptions extends HttpAdapterOptions {
3
4
  useCookies?: boolean;
4
5
  useFormUrlEncoded?: boolean;
6
+ useMultipartFormData?: boolean | FastifyMultipartAttachFieldsToBodyOptions | FastifyMultipartOptions;
5
7
  }
6
8
  //# sourceMappingURL=FastifyHttpAdapterOptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FastifyHttpAdapterOptions.d.ts","sourceRoot":"","sources":["../../../src/models/FastifyHttpAdapterOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B"}
1
+ {"version":3,"file":"FastifyHttpAdapterOptions.d.ts","sourceRoot":"","sources":["../../../src/models/FastifyHttpAdapterOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,yCAAyC,EAC9C,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EACjB,OAAO,GACP,yCAAyC,GACzC,uBAAuB,CAAC;CAC7B"}
@@ -1,4 +1,4 @@
1
1
  import { Middleware } from '@inversifyjs/http-core';
2
- import { FastifyReply, FastifyRequest, HookHandlerDoneFunction } from 'fastify';
3
- export type FastifyMiddleware = Middleware<FastifyRequest, FastifyReply, HookHandlerDoneFunction, void>;
2
+ import { FastifyReply, FastifyRequest } from 'fastify';
3
+ export type FastifyMiddleware = Middleware<FastifyRequest, FastifyReply, () => void, void>;
4
4
  //# sourceMappingURL=FastifyMiddleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FastifyMiddleware.d.ts","sourceRoot":"","sources":["../../../src/models/FastifyMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAEhF,MAAM,MAAM,iBAAiB,GAAG,UAAU,CACxC,cAAc,EACd,YAAY,EACZ,uBAAuB,EACvB,IAAI,CACL,CAAC"}
1
+ {"version":3,"file":"FastifyMiddleware.d.ts","sourceRoot":"","sources":["../../../src/models/FastifyMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CACxC,cAAc,EACd,YAAY,EACZ,MAAM,IAAI,EACV,IAAI,CACL,CAAC"}
@@ -1,14 +1,16 @@
1
1
  import { Readable } from 'node:stream';
2
2
  import { HttpAdapterOptions, InversifyHttpAdapter, HttpStatusCode, RouterParams, ErrorFilter, Guard, Interceptor, Middleware } from '@inversifyjs/http-core';
3
- import { FastifyRequest, FastifyReply, HookHandlerDoneFunction, FastifyInstance } from 'fastify';
3
+ import { FastifyRequest, FastifyReply, FastifyInstance } from 'fastify';
4
4
  import { Container } from 'inversify';
5
+ import { FastifyMultipartAttachFieldsToBodyOptions, FastifyMultipartOptions } from '@fastify/multipart';
5
6
 
6
7
  interface FastifyHttpAdapterOptions extends HttpAdapterOptions {
7
8
  useCookies?: boolean;
8
9
  useFormUrlEncoded?: boolean;
10
+ useMultipartFormData?: boolean | FastifyMultipartAttachFieldsToBodyOptions | FastifyMultipartOptions;
9
11
  }
10
12
 
11
- declare class InversifyFastifyHttpAdapter extends InversifyHttpAdapter<FastifyRequest, FastifyReply, HookHandlerDoneFunction, void, FastifyHttpAdapterOptions> {
13
+ declare class InversifyFastifyHttpAdapter extends InversifyHttpAdapter<FastifyRequest, FastifyReply, () => void, void, FastifyHttpAdapterOptions> {
12
14
  #private;
13
15
  constructor(container: Container, httpAdapterOptions?: FastifyHttpAdapterOptions, customApp?: FastifyInstance);
14
16
  build(): Promise<FastifyInstance>;
@@ -22,7 +24,7 @@ declare class InversifyFastifyHttpAdapter extends InversifyHttpAdapter<FastifyRe
22
24
  protected _replyStream(_request: FastifyRequest, response: FastifyReply, value: Readable): Promise<void>;
23
25
  protected _setStatus(_request: FastifyRequest, response: FastifyReply, statusCode: HttpStatusCode): void;
24
26
  protected _setHeader(_request: FastifyRequest, response: FastifyReply, key: string, value: string): void;
25
- protected _buildRouter(routerParams: RouterParams<FastifyRequest, FastifyReply, HookHandlerDoneFunction, void>): void;
27
+ protected _buildRouter(routerParams: RouterParams<FastifyRequest, FastifyReply, () => void, void>): void;
26
28
  }
27
29
 
28
30
  type FastifyErrorFilter<TError = unknown> = ErrorFilter<TError, FastifyRequest, FastifyReply, void>;
@@ -31,7 +33,7 @@ type FastifyGuard = Guard<FastifyRequest>;
31
33
 
32
34
  type FastifyInterceptor = Interceptor<FastifyRequest, FastifyReply>;
33
35
 
34
- type FastifyMiddleware = Middleware<FastifyRequest, FastifyReply, HookHandlerDoneFunction, void>;
36
+ type FastifyMiddleware = Middleware<FastifyRequest, FastifyReply, () => void, void>;
35
37
 
36
38
  export { InversifyFastifyHttpAdapter };
37
39
  export type { FastifyErrorFilter, FastifyGuard, FastifyHttpAdapterOptions, FastifyInterceptor, FastifyMiddleware };
package/lib/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import e from"@fastify/cookie";import r from"@fastify/formbody";import{InversifyHttpAdapter as t,RequestMethodType as s}from"@inversifyjs/http-core";import{fastify as i}from"fastify";class a extends t{#e;constructor(e,r,t){super(e,{logger:!0,useCookies:!1,useFormUrlEncoded:!1},r),this.#e=this.#r(t)}async build(){return await this._buildServer(),this.#e}_getBody(e,r,t){return void 0!==t?e.body[t]:e.body}_getParams(e,r){return void 0!==r?e.params[r]:e.params}_getQuery(e,r){return void 0!==r?e.query[r]:e.query}_getHeaders(e,r){return void 0!==r?e.headers[r]:e.headers}_getCookies(e,r,t){return void 0!==t?e.cookies[t]:e.cookies}_replyText(e,r,t){r.send(t)}_replyJson(e,r,t){r.send(t)}async _replyStream(e,r,t){await r.send(t)}_setStatus(e,r,t){r.status(t)}_setHeader(e,r,t,s){r.header(t,s)}_buildRouter(e){this.#e.register((r,t,s)=>{for(const t of e.routeParamsList){const e=[...t.preHandlerMiddlewareList,...t.guardList],s="/"===t.path?"":t.path;r.route({handler:this.#t(t.handler),method:this.#s(t.requestMethodType),onResponse:this.#i(t.postHandlerMiddlewareList),preHandler:this.#a(e),url:s})}s()},{prefix:e.path})}#r(t){const s=t??i();return this.httpAdapterOptions.useCookies&&s.register(e),this.httpAdapterOptions.useFormUrlEncoded&&s.register(r),s}#t(e){return async(r,t)=>{await new Promise((s,i)=>{s(e(r,t,e=>{void 0!==e?i(e):s()}))})}}#a(e){return e.map(e=>this.#d(e))}#i(e){return e.map(e=>this.#o(e))}#d(e){return async(r,t)=>{await new Promise((s,i)=>{e(r,t,e=>{void 0!==e?i(e):s()})})}}#o(e){return async(r,t)=>{await new Promise((s,i)=>{e(r,t,e=>{void 0!==e?i(e):s()})})}}#s(e){return e===s.All?Object.values(s).filter(e=>e!==s.All):e}}export{a as InversifyFastifyHttpAdapter};
1
+ import t from"@fastify/cookie";import e from"@fastify/formbody";import r from"@fastify/multipart";import{InversifyHttpAdapter as s,RequestMethodParameterType as a,buildNormalizedPath as i,handleMiddlewareList as p,RequestMethodType as o}from"@inversifyjs/http-core";import{fastify as d}from"fastify";class u extends s{#t;constructor(t,e,r){super(t,{logger:!0,useCookies:!1,useFormUrlEncoded:!1,useMultipartFormData:!1},e,[a.Body]),this.#t=this.#e(r)}async build(){return await this._buildServer(),this.#t}_getBody(t,e,r){return!1!==this.httpAdapterOptions.useMultipartFormData?this.#r(t,r):this.#s(t,r)}_getParams(t,e){return void 0===e?t.params:t.params[e]}_getQuery(t,e){return void 0===e?t.query:t.query[e]}_getHeaders(t,e){return void 0===e?t.headers:t.headers[e]}_getCookies(t,e,r){return void 0===r?t.cookies:t.cookies[r]}_replyText(t,e,r){e.send(r)}_replyJson(t,e,r){e.send(r)}async _replyStream(t,e,r){await e.send(r)}_setStatus(t,e,r){e.status(r)}_setHeader(t,e,r,s){e.header(r,s)}_buildRouter(t){for(const e of t.routeParamsList){const r=[...e.preHandlerMiddlewareList,...e.guardList,e.handler,...e.postHandlerMiddlewareList],s=i(`${t.path}${e.path}`),a=p(r),o=async(t,e)=>{await a(t,e)};this.#a(e.requestMethodType)(s,o)}}#e(s){const a=s??d();return this.httpAdapterOptions.useCookies&&a.register(t),this.httpAdapterOptions.useFormUrlEncoded&&a.register(e),!1!==this.httpAdapterOptions.useMultipartFormData&&(!0===this.httpAdapterOptions.useMultipartFormData?a.register(r):a.register(r,this.httpAdapterOptions.useMultipartFormData)),a}#a(t){switch(t){case o.All:return this.#t.all.bind(this.#t);case o.Delete:return this.#t.delete.bind(this.#t);case o.Get:return this.#t.get.bind(this.#t);case o.Head:return this.#t.head.bind(this.#t);case o.Options:return this.#t.options.bind(this.#t);case o.Patch:return this.#t.patch.bind(this.#t);case o.Post:return this.#t.post.bind(this.#t);case o.Put:return this.#t.put.bind(this.#t)}}#r(t,e){if(t.isMultipart()){if(void 0===e)return t.parts();throw new Error("Cannot get multipart form data body with a specific parameter name.")}return this.#s(t,e)}#s(t,e){return void 0===e?t.body:t.body[e]}}export{u as InversifyFastifyHttpAdapter};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/adapter/InversifyFastifyHttpAdapter.ts"],"sourcesContent":[null],"names":["InversifyFastifyHttpAdapter","InversifyHttpAdapter","app","constructor","container","httpAdapterOptions","customApp","super","logger","useCookies","useFormUrlEncoded","this","buildDefaultFastifyApp","build","_buildServer","_getBody","request","_response","parameterName","undefined","body","_getParams","params","_getQuery","query","_getHeaders","headers","_getCookies","cookies","_replyText","_request","response","value","send","_replyJson","_replyStream","_setStatus","statusCode","status","_setHeader","key","header","_buildRouter","routerParams","register","fastifyInstance","_opts","done","routeParams","routeParamsList","orderedMiddlewareList","preHandlerMiddlewareList","guardList","normalizedUrl","path","route","handler","buildFastifyHandler","method","convertRequestMethodType","requestMethodType","onResponse","buildFastifyOnResponseAsyncMiddlewareList","postHandlerMiddlewareList","preHandler","buildFastifyPreHandlerAsyncMiddlewareList","url","prefix","fastify","cookie","fastifyFormbody","async","reply","Promise","resolve","reject","err","middlewareList","map","middleware","buildFastifyPreHandlerAsyncMiddleware","buildFastifyOnResponseAsyncMiddleware","RequestMethodType","All","Object","values","filter"],"mappings":"uLA4BM,MAAOA,UAAoCC,EAOtCC,GAET,WAAAC,CACEC,EACAC,EACAC,GAEAC,MACEH,EACA,CAAEI,QAAQ,EAAMC,YAAY,EAAOC,mBAAmB,GACtDL,GAEFM,MAAKT,EAAOS,MAAKC,EAAwBN,EAC3C,CAEO,WAAMO,GAGX,aAFMF,KAAKG,eAEJH,MAAKT,CACd,CAEU,QAAAa,CACRC,EACAC,EACAC,GAEA,YAAyBC,IAAlBD,EACFF,EAAQI,KAAiCF,GAC1CF,EAAQI,IACd,CAEU,UAAAC,CACRL,EACAE,GAEA,YAAyBC,IAAlBD,EACFF,EAAQM,OAAmCJ,GAC5CF,EAAQM,MACd,CACU,SAAAC,CACRP,EACAE,GAEA,YAAyBC,IAAlBD,EACFF,EAAQQ,MAAkCN,GAC3CF,EAAQQ,KACd,CAEU,WAAAC,CACRT,EACAE,GAEA,YAAyBC,IAAlBD,EACHF,EAAQU,QAAQR,GAChBF,EAAQU,OACd,CAEU,WAAAC,CACRX,EACAC,EACAC,GAEA,YAAyBC,IAAlBD,EACHF,EAAQY,QAAQV,GAChBF,EAAQY,OACd,CAEU,UAAAC,CACRC,EACAC,EACAC,GAEAD,EAASE,KAAKD,EAChB,CAEU,UAAAE,CACRJ,EACAC,EACAC,GAEAD,EAASE,KAAKD,EAChB,CAEU,kBAAMG,CACdL,EACAC,EACAC,SAEMD,EAASE,KAAKD,EACtB,CAEU,UAAAI,CACRN,EACAC,EACAM,GAEAN,EAASO,OAAOD,EAClB,CAEU,UAAAE,CACRT,EACAC,EACAS,EACAR,GAEAD,EAASU,OAAOD,EAAKR,EACvB,CAEU,YAAAU,CACRC,GAyCAhC,MAAKT,EAAK0C,SAlC4B,CACpCC,EACAC,EACAC,KAEA,IAAK,MAAMC,KAAeL,EAAaM,gBAAiB,CACtD,MAAMC,EAIA,IACDF,EAAYG,4BACZH,EAAYI,WAGXC,EACiB,MAArBL,EAAYM,KAAe,GAAKN,EAAYM,KAE9CT,EAAgBU,MAAM,CACpBC,QAAS7C,MAAK8C,EAAqBT,EAAYQ,SAC/CE,OAAQ/C,MAAKgD,EAA0BX,EAAYY,mBACnDC,WAAYlD,MAAKmD,EACfd,EAAYe,2BAEdC,WAAYrD,MAAKsD,EACff,GAEFgB,IAAKb,GAET,CAEAN,KAGyB,CAAEoB,OAAQxB,EAAaW,MACpD,CAEA,EAAA1C,CAAwBN,GACtB,MAAMJ,EAAuBI,GAAa8D,IAc1C,OAZIzD,KAAKN,mBAAmBI,YAC1BP,EAAI0C,SACFyB,GAMA1D,KAAKN,mBAAmBK,mBAC1BR,EAAI0C,SAAS0B,GAGRpE,CACT,CAEA,EAAAuD,CACED,GAMA,OAAOe,MACLvD,EACAwD,WAEM,IAAIC,QACR,CACEC,EACAC,KAUAD,EAAQlB,EAAQxC,EAASwD,EARcI,SACzBzD,IAARyD,EACFD,EAAOC,GAEPF,SAQZ,CAEA,EAAAT,CACEY,GAMA,OAAOA,EAAeC,IAElBC,GAKGpE,MAAKqE,EAAuCD,GAErD,CAEA,EAAAjB,CACEe,GAMA,OAAOA,EAAeC,IAElBC,GAKGpE,MAAKsE,EAAuCF,GAErD,CAEA,EAAAC,CACED,GAMA,OAAOR,MAAOvD,EAAyBwD,WAC/B,IAAIC,QACR,CACEC,EACAC,KAUAI,EAAW/D,EAASwD,EARmBI,SACzBzD,IAARyD,EACFD,EAAOC,GAEPF,QAQZ,CAEA,EAAAO,CACEF,GAMA,OAAOR,MAAOvD,EAAyBwD,WAC/B,IAAIC,QACR,CACEC,EACAC,KAUAI,EAAW/D,EAASwD,EARmBI,SACzBzD,IAARyD,EACFD,EAAOC,GAEPF,QAQZ,CAEA,EAAAf,CACEC,GAEA,OAAOA,IAAsBsB,EAAkBC,IAC3CC,OAAOC,OAAOH,GAAmBI,OAC9B5B,GAA8BA,IAAWwB,EAAkBC,KAE9DvB,CACN"}
1
+ {"version":3,"file":"index.js","sources":["../../src/adapter/InversifyFastifyHttpAdapter.ts"],"sourcesContent":[null],"names":["InversifyFastifyHttpAdapter","InversifyHttpAdapter","app","constructor","container","httpAdapterOptions","customApp","super","logger","useCookies","useFormUrlEncoded","useMultipartFormData","RequestMethodParameterType","Body","this","buildDefaultFastifyApp","build","_buildServer","_getBody","request","_response","parameterName","getMultipartRequestBody","getRequestBody","_getParams","undefined","params","_getQuery","query","_getHeaders","headers","_getCookies","cookies","_replyText","_request","response","value","send","_replyJson","_replyStream","_setStatus","statusCode","status","_setHeader","key","header","_buildRouter","routerParams","routeParams","routeParamsList","orderedHandlers","preHandlerMiddlewareList","guardList","handler","postHandlerMiddlewareList","normalizedPath","buildNormalizedPath","path","handleMiddlewares","handleMiddlewareList","fastifyHandler","async","reply","getAppRouteHandler","requestMethodType","fastify","register","cookie","fastifyFormbody","fastifyMultipart","RequestMethodType","All","all","bind","Delete","delete","Get","get","Head","head","Options","options","Patch","patch","Post","post","Put","put","isMultipart","parts","Error","body"],"mappings":"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"}
package/package.json CHANGED
@@ -7,22 +7,23 @@
7
7
  "dependencies": {
8
8
  "@fastify/cookie": "11.0.2",
9
9
  "@fastify/formbody": "8.0.2",
10
- "@inversifyjs/http-core": "4.2.0"
10
+ "@fastify/multipart": "9.3.0",
11
+ "@inversifyjs/http-core": "4.4.0"
11
12
  },
12
13
  "devDependencies": {
13
14
  "@stryker-mutator/core": "9.3.0",
14
15
  "@stryker-mutator/typescript-checker": "9.3.0",
15
16
  "@stryker-mutator/vitest-runner": "9.3.0",
16
- "@types/node": "24.10.0",
17
- "@vitest/coverage-v8": "4.0.7",
17
+ "@types/node": "24.10.1",
18
+ "@vitest/coverage-v8": "4.0.10",
18
19
  "eslint": "9.39.1",
19
20
  "prettier": "3.6.2",
20
21
  "rimraf": "6.1.0",
21
- "rollup": "4.52.5",
22
+ "rollup": "4.53.2",
22
23
  "ts-loader": "9.5.4",
23
24
  "tslib": "2.8.1",
24
25
  "typescript": "5.9.3",
25
- "vitest": "4.0.7"
26
+ "vitest": "4.0.10"
26
27
  },
27
28
  "devEngines": {
28
29
  "node": "^24.10.0",
@@ -50,7 +51,7 @@
50
51
  },
51
52
  "name": "@inversifyjs/http-fastify",
52
53
  "peerDependencies": {
53
- "fastify": "^5.6.1",
54
+ "fastify": "^5.6.2",
54
55
  "inversify": "^7.10.4"
55
56
  },
56
57
  "publishConfig": {
@@ -60,7 +61,7 @@
60
61
  "type": "git",
61
62
  "url": "git+https://github.com/inversify/monorepo.git"
62
63
  },
63
- "version": "4.2.0",
64
+ "version": "4.4.0",
64
65
  "scripts": {
65
66
  "build": "pnpm run build:cjs && pnpm run build:esm",
66
67
  "build:cjs": "tsc --build tsconfig.cjs.json && pnpm exec foundation-ts-package-cjs ./lib/cjs",