@nestjs/platform-fastify 10.3.8 → 10.3.10
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/Readme.md +64 -52
- package/adapters/fastify-adapter.d.ts +8 -5
- package/adapters/fastify-adapter.js +14 -6
- package/package.json +4 -4
package/Readme.md
CHANGED
|
@@ -57,69 +57,81 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors
|
|
|
57
57
|
|
|
58
58
|
#### Principal Sponsors
|
|
59
59
|
|
|
60
|
-
<table style="text-align:center;"
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
<a href="https://
|
|
64
|
-
<td>
|
|
65
|
-
<a href="https://
|
|
66
|
-
|
|
60
|
+
<table style="text-align:center;">
|
|
61
|
+
<tr>
|
|
62
|
+
<td><a href="https://trilon.io" target="_blank"><img src="https://nestjs.com/img/trilon.svg" width="200" valign="middle" /></a></td>
|
|
63
|
+
<td><a href="https://microsoft.com/" target="_blank"><img src="https://nestjs.com/img/logos/microsoft-logo.png" width="180" valign="middle" /></a></td>
|
|
64
|
+
<td><a href="https://mojam.co" target="_blank"><img src="https://nestjs.com/img/logos/mojam-logo.png" width="80" valign="middle" /></a></td>
|
|
65
|
+
<td><a href="https://marblism.com?utm_source=nest" target="_blank"><img src="https://nestjs.com/img/logos/marblism-logo.png" width="180" valign="middle" /></a></td>
|
|
66
|
+
<td><a href="https://valor-software.com/" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/valor-software.png" width="170" valign="middle" /></a></td>
|
|
67
|
+
<td><a href="https://amplication.com/" target="_blank"><img src="https://nestjs.com/img/logos/amplication-logo.svg" width="190" valign="middle" /></a></td>
|
|
68
|
+
</tr>
|
|
69
|
+
</table>
|
|
67
70
|
|
|
68
71
|
#### Gold Sponsors
|
|
69
72
|
|
|
70
|
-
<table style="text-align:center;"
|
|
71
|
-
|
|
72
|
-
<td>
|
|
73
|
-
<a href="https://github.com/Sanofi-IADC" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/sanofi.png" width="180" valign="middle" /></a></td>
|
|
74
|
-
<td>
|
|
75
|
-
<a href="https://
|
|
76
|
-
<td>
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
<a href="https://
|
|
80
|
-
<a href="https://
|
|
81
|
-
<a href="https://
|
|
82
|
-
<td>
|
|
83
|
-
<a href="https://
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
<a href="https://skunk.team" target="_blank"><img src="https://nestjs.com/img/skunk-logo.png" height="60" valign="middle" /></a></td>
|
|
87
|
-
</tr></table>
|
|
73
|
+
<table style="text-align:center;">
|
|
74
|
+
<tr>
|
|
75
|
+
<td><a href="https://www.redhat.com" target="_blank"><img src="https://nestjs.com/img/logos/red-hat-logo.svg" width="200" valign="middle" /></a></td>
|
|
76
|
+
<td><a href="https://github.com/Sanofi-IADC" target="_blank"><img src="https://docs.nestjs.com/assets/sponsors/sanofi.png" width="180" valign="middle" /></a></td>
|
|
77
|
+
<td><a href="https://nx.dev" target="_blank"><img src="https://nestjs.com/img/logos/nx-logo.png" height="45" valign="middle" /></a></td>
|
|
78
|
+
<td><a href="https://intrinsic.ventures/" target="_blank"><img src="https://nestjs.com/img/logos/intrinisic-logo.png" width="210" valign="middle" /></a></td>
|
|
79
|
+
<td><a href="https://jetbrains.com/" target="_blank"><img src="https://nestjs.com/img/logos/jetbrains-logo.svg" width="90" valign="middle" /></a></td>
|
|
80
|
+
</tr>
|
|
81
|
+
<tr>
|
|
82
|
+
<td><a href="https://snyk.co/nestjs" target="_blank"><img src="https://nestjs.com/img/logos/snyk-logo-black.png" width="185" valign="middle" /></a></td>
|
|
83
|
+
<td><a href="https://fuseautotech.com/" target="_blank"><img src="https://nestjs.com/img/logos/fuse-logo.svg" width="105" valign="middle" /></a></td>
|
|
84
|
+
<td><a href="https://ridicorp.com/career/" target="_blank"><img src="https://nestjs.com/img/logos/ridi-logo.svg" width="105" valign="middle" /></a></td>
|
|
85
|
+
<td><a href="https://www.movavi.com/imovie-for-windows.html" target="_blank"><img src="https://nestjs.com/img/logos/movavi-logo.svg" width="105" valign="middle" /></a></td>
|
|
86
|
+
<td><a href="https://skunk.team" target="_blank"><img src="https://nestjs.com/img/logos/skunk-logo.png" height="60" valign="middle" /></a></td>
|
|
87
|
+
</tr>
|
|
88
|
+
</table>
|
|
88
89
|
|
|
89
90
|
#### Silver Sponsors
|
|
90
91
|
|
|
91
|
-
<table style="text-align:center;"
|
|
92
|
-
<
|
|
93
|
-
<td><a href="https://
|
|
92
|
+
<table style="text-align:center;">
|
|
93
|
+
<tr>
|
|
94
|
+
<td><a href="https://n.inc" target="_blank"><img src="https://nestjs.com/img/logos/n-inc-logo.svg" width="90" valign="middle" /></a></td>
|
|
95
|
+
<td><a href="https://twistag.com/" target="_blank"><img src="https://nestjs.com/img/logos/twistag-logo.png" width="120" valign="middle" /></a></td>
|
|
96
|
+
<td><a href="https://www.dinii.jp/" target="_blank"><img src="https://nestjs.com/img/logos/dinii-logo.png" width="75" valign="middle" /></a></td>
|
|
97
|
+
<td><a href="https://www.mercedes-benz.com/" target="_blank"><img src="https://nestjs.com/img/logos/mercedes-logo.png" width="110" valign="middle" /></a></td>
|
|
94
98
|
</tr>
|
|
95
99
|
</table>
|
|
96
100
|
|
|
97
101
|
#### Sponsors
|
|
98
102
|
|
|
99
|
-
<table
|
|
100
|
-
<
|
|
101
|
-
<a href="https://www.
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
<a href="https://
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
<td align="center" valign="middle"><a href="https://
|
|
110
|
-
|
|
111
|
-
<td align="center" valign="middle"><a href="https://
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
103
|
+
<table>
|
|
104
|
+
<tr>
|
|
105
|
+
<td align="center" valign="middle"><a href="https://www.swingdev.io" target="_blank"><img src="https://nestjs.com/img/logos/swingdev-logo.svg#1" width="110" valign="middle" /></a></td>
|
|
106
|
+
<td align="center" valign="middle"><a href="https://www.novologic.com/" target="_blank"><img src="https://nestjs.com/img/logos/novologic.png" width="110" valign="middle" /></a></td>
|
|
107
|
+
<td align="center" valign="middle"><a href="https://mantro.net/" target="_blank"><img src="https://nestjs.com/img/logos/mantro-logo.svg" width="95" valign="middle" /></a></td>
|
|
108
|
+
<td align="center" valign="middle"><a href="https://triplebyte.com/" target="_blank"><img src="https://nestjs.com/img/logos/triplebyte.png" width="107" valign="middle" /></a></td>
|
|
109
|
+
<td align="center" valign="middle"><a href="https://nearpod.com/" target="_blank"><img src="https://nestjs.com/img/logos/nearpod-logo.svg" width="100" valign="middle" /></a></td>
|
|
110
|
+
<td align="center" valign="middle"><a href="https://genuinebee.com/" target="_blank"><img src="https://nestjs.com/img/logos/genuinebee.svg" width="97" valign="middle" /></a></td>
|
|
111
|
+
</tr>
|
|
112
|
+
<tr>
|
|
113
|
+
<td align="center" valign="middle"><a href="https://vpn-review.com/vpn-for-torrenting" target="_blank"><img src="https://nestjs.com/img/logos/vpn-review-logo.png" width="85" valign="middle" /></a></td>
|
|
114
|
+
<td align="center" valign="middle"><a href="https://lambda-it.ch/" target="_blank"><img src="https://nestjs.com/img/logos/lambda-it-logo.svg" width="115" valign="middle" /></a></td>
|
|
115
|
+
<td align="center" valign="middle"><a href="https://rocketech.it/cases/?utm_source=google&utm_medium=badge&utm_campaign=nestjs" target="_blank"><img src="https://nestjs.com/img/logos/rocketech-logo.svg" width="110" valign="middle" /></a></td>
|
|
116
|
+
<td align="center" valign="middle"><a href="https://www.anonymistic.com/" target="_blank"><img src="https://nestjs.com/img/logos/anonymistic-logo.png" width="125" valign="middle" /></a></td>
|
|
117
|
+
<td align="center" valign="middle"><a href="https://www.naologic.com/" target="_blank"><img src="https://nestjs.com/img/logos/naologic-logo.svg" width="125" valign="middle" /></a></td>
|
|
118
|
+
<td align="center" valign="middle"><a href="https://triplecore.io" target="_blank"><img src="https://nestjs.com/img/logos/triplecore-logo.svg" width="50" valign="middle" /></a></td>
|
|
119
|
+
</tr>
|
|
120
|
+
<tr>
|
|
121
|
+
<td align="center" valign="middle"><a href="https://thecasinowizard.com/bonuses/no-deposit-bonuses/" target="_blank"><img src="https://nestjs.com/img/logos/casinowizard-logo.png" width="120" valign="middle" /></a></td>
|
|
122
|
+
<td align="center" valign="middle"><a href="https://polygon-software.ch/" target="_blank"><img src="https://nestjs.com/img/logos/polygon-logo.svg" width="120" valign="middle" /></a></td>
|
|
123
|
+
<td align="center" valign="middle"><a href="https://boringowl.io/" target="_blank"><img src="https://nestjs.com/img/logos/boringowl-logo.svg" width="120" valign="middle" /></a></td>
|
|
124
|
+
<td align="center" valign="middle"><a href="https://nordbot.app/" target="_blank"><img src="https://nestjs.com/img/logos/nordbot-logo.png" width="120" valign="middle" /></a></td>
|
|
125
|
+
<td align="center" valign="middle"><a href="https://doppio.sh/" target="_blank"><img src="https://nestjs.com/img/logos/dopiosh-logo.png" width="50" valign="middle" /></a></td>
|
|
126
|
+
<td align="center" valign="middle"><a href="https://www.hingehealth.com/" target="_blank"><img src="https://nestjs.com/img/logos/hinge-health-logo.svg" width="100" valign="middle" /></a></td>
|
|
127
|
+
</tr>
|
|
128
|
+
<tr>
|
|
129
|
+
<td align="center" valign="middle"><a href="https://julienferand.dev/" target="_blank"><img src="https://nestjs.com/img/logos/julienferand-logo.jpeg" width="65" valign="middle" /></a></td>
|
|
130
|
+
<td align="center" valign="middle"><a href="https://www.tripoffice.com/" target="_blank"><img src="https://nestjs.com/img/logos/tripoffice-logo.png" width="140" valign="middle" /></a></td>
|
|
131
|
+
<td align="center" valign="middle"><a href="https://solcellsforetag.se/" target="_blank"><img src="https://nestjs.com/img/logos/solcellsforetag-logo.svg" width="140" valign="middle" /></a></td>
|
|
132
|
+
<td align="center" valign="middle"><a href="https://www.itflashcards.com/" target="_blank"><img src="https://nestjs.com/img/logos/it_flashcards-logo.png" width="150" valign="middle" /></a></td>
|
|
133
|
+
</tr>
|
|
134
|
+
</table>
|
|
123
135
|
|
|
124
136
|
## Backers
|
|
125
137
|
|
|
@@ -11,15 +11,18 @@ import * as https from 'https';
|
|
|
11
11
|
import { InjectOptions, Chain as LightMyRequestChain, Response as LightMyRequestResponse } from 'light-my-request';
|
|
12
12
|
import { NestFastifyBodyParserOptions } from '../interfaces';
|
|
13
13
|
import { FastifyStaticOptions, FastifyViewOptions } from '../interfaces/external';
|
|
14
|
-
type
|
|
14
|
+
type FastifyAdapterBaseOptions<Server extends RawServerBase = RawServerDefault, Logger extends FastifyBaseLogger = FastifyBaseLogger> = FastifyServerOptions<Server, Logger> & {
|
|
15
|
+
skipMiddie?: boolean;
|
|
16
|
+
};
|
|
17
|
+
type FastifyHttp2SecureOptions<Server extends http2.Http2SecureServer, Logger extends FastifyBaseLogger = FastifyBaseLogger> = FastifyAdapterBaseOptions<Server, Logger> & {
|
|
15
18
|
http2: true;
|
|
16
19
|
https: http2.SecureServerOptions;
|
|
17
20
|
};
|
|
18
|
-
type FastifyHttp2Options<Server extends http2.Http2Server, Logger extends FastifyBaseLogger = FastifyBaseLogger> =
|
|
21
|
+
type FastifyHttp2Options<Server extends http2.Http2Server, Logger extends FastifyBaseLogger = FastifyBaseLogger> = FastifyAdapterBaseOptions<Server, Logger> & {
|
|
19
22
|
http2: true;
|
|
20
23
|
http2SessionTimeout?: number;
|
|
21
24
|
};
|
|
22
|
-
type FastifyHttpsOptions<Server extends https.Server, Logger extends FastifyBaseLogger = FastifyBaseLogger> =
|
|
25
|
+
type FastifyHttpsOptions<Server extends https.Server, Logger extends FastifyBaseLogger = FastifyBaseLogger> = FastifyAdapterBaseOptions<Server, Logger> & {
|
|
23
26
|
https: https.ServerOptions;
|
|
24
27
|
};
|
|
25
28
|
type VersionedRoute<TRequest, TResponse> = ((req: TRequest, res: TResponse, next: Function) => Function) & {
|
|
@@ -42,10 +45,10 @@ export declare class FastifyAdapter<TServer extends RawServerBase = RawServerDef
|
|
|
42
45
|
protected readonly instance: TInstance;
|
|
43
46
|
private _isParserRegistered;
|
|
44
47
|
private isMiddieRegistered;
|
|
45
|
-
private versioningOptions
|
|
48
|
+
private versioningOptions?;
|
|
46
49
|
private readonly versionConstraint;
|
|
47
50
|
get isParserRegistered(): boolean;
|
|
48
|
-
constructor(instanceOrOptions?: TInstance | FastifyHttp2Options<any> | FastifyHttp2SecureOptions<any> | FastifyHttpsOptions<any> |
|
|
51
|
+
constructor(instanceOrOptions?: TInstance | FastifyHttp2Options<any> | FastifyHttp2SecureOptions<any> | FastifyHttpsOptions<any> | FastifyAdapterBaseOptions<TServer>);
|
|
49
52
|
init(): Promise<void>;
|
|
50
53
|
listen(port: string | number, callback?: () => void): void;
|
|
51
54
|
listen(port: string | number, hostname: string, callback?: () => void): void;
|
|
@@ -59,7 +59,7 @@ class FastifyAdapter extends http_adapter_1.AbstractHttpAdapter {
|
|
|
59
59
|
},
|
|
60
60
|
deriveConstraint: (req) => {
|
|
61
61
|
// Media Type (Accept Header) Versioning Handler
|
|
62
|
-
if (this.versioningOptions
|
|
62
|
+
if (this.versioningOptions?.type === common_1.VersioningType.MEDIA_TYPE) {
|
|
63
63
|
const MEDIA_TYPE_HEADER = 'Accept';
|
|
64
64
|
const acceptHeaderValue = (req.headers?.[MEDIA_TYPE_HEADER] || req.headers?.[MEDIA_TYPE_HEADER.toLowerCase()]);
|
|
65
65
|
const acceptHeaderVersionParameter = acceptHeaderValue
|
|
@@ -70,7 +70,7 @@ class FastifyAdapter extends http_adapter_1.AbstractHttpAdapter {
|
|
|
70
70
|
: acceptHeaderVersionParameter.split(this.versioningOptions.key)[1];
|
|
71
71
|
}
|
|
72
72
|
// Header Versioning Handler
|
|
73
|
-
else if (this.versioningOptions
|
|
73
|
+
else if (this.versioningOptions?.type === common_1.VersioningType.HEADER) {
|
|
74
74
|
const customHeaderVersionParameter = req.headers?.[this.versioningOptions.header] ||
|
|
75
75
|
req.headers?.[this.versioningOptions.header.toLowerCase()];
|
|
76
76
|
return (0, shared_utils_1.isUndefined)(customHeaderVersionParameter)
|
|
@@ -78,7 +78,7 @@ class FastifyAdapter extends http_adapter_1.AbstractHttpAdapter {
|
|
|
78
78
|
: customHeaderVersionParameter;
|
|
79
79
|
}
|
|
80
80
|
// Custom Versioning Handler
|
|
81
|
-
else if (this.versioningOptions
|
|
81
|
+
else if (this.versioningOptions?.type === common_1.VersioningType.CUSTOM) {
|
|
82
82
|
return this.versioningOptions.extractor(req);
|
|
83
83
|
}
|
|
84
84
|
return undefined;
|
|
@@ -94,6 +94,9 @@ class FastifyAdapter extends http_adapter_1.AbstractHttpAdapter {
|
|
|
94
94
|
...instanceOrOptions,
|
|
95
95
|
});
|
|
96
96
|
this.setInstance(instance);
|
|
97
|
+
if (instanceOrOptions?.skipMiddie) {
|
|
98
|
+
this.isMiddieRegistered = true;
|
|
99
|
+
}
|
|
97
100
|
}
|
|
98
101
|
async init() {
|
|
99
102
|
if (this.isMiddieRegistered) {
|
|
@@ -371,6 +374,11 @@ class FastifyAdapter extends http_adapter_1.AbstractHttpAdapter {
|
|
|
371
374
|
const routeConstraints = Reflect.getMetadata(constants_1.FASTIFY_ROUTE_CONSTRAINTS_METADATA, handlerRef);
|
|
372
375
|
const hasConfig = !(0, shared_utils_1.isUndefined)(routeConfig);
|
|
373
376
|
const hasConstraints = !(0, shared_utils_1.isUndefined)(routeConstraints);
|
|
377
|
+
const routeToInject = {
|
|
378
|
+
method: routerMethodKey,
|
|
379
|
+
url: args[0],
|
|
380
|
+
handler: handlerRef,
|
|
381
|
+
};
|
|
374
382
|
if (isVersioned || hasConstraints || hasConfig) {
|
|
375
383
|
const isPathAndRouteTuple = args.length === 2;
|
|
376
384
|
if (isPathAndRouteTuple) {
|
|
@@ -388,11 +396,11 @@ class FastifyAdapter extends http_adapter_1.AbstractHttpAdapter {
|
|
|
388
396
|
},
|
|
389
397
|
}),
|
|
390
398
|
};
|
|
391
|
-
const
|
|
392
|
-
return this.instance
|
|
399
|
+
const routeToInjectWithOptions = { ...routeToInject, ...options };
|
|
400
|
+
return this.instance.route(routeToInjectWithOptions);
|
|
393
401
|
}
|
|
394
402
|
}
|
|
395
|
-
return this.instance
|
|
403
|
+
return this.instance.route(routeToInject);
|
|
396
404
|
}
|
|
397
405
|
}
|
|
398
406
|
exports.FastifyAdapter = FastifyAdapter;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestjs/platform-fastify",
|
|
3
|
-
"version": "10.3.
|
|
3
|
+
"version": "10.3.10",
|
|
4
4
|
"description": "Nest - modern, fast, powerful node.js web framework (@platform-fastify)",
|
|
5
5
|
"author": "Kamil Mysliwiec",
|
|
6
6
|
"license": "MIT",
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@fastify/cors": "9.0.1",
|
|
22
22
|
"@fastify/formbody": "7.4.0",
|
|
23
|
-
"@fastify/middie": "8.3.
|
|
24
|
-
"fastify": "4.
|
|
23
|
+
"@fastify/middie": "8.3.1",
|
|
24
|
+
"fastify": "4.28.0",
|
|
25
25
|
"light-my-request": "5.13.0",
|
|
26
26
|
"path-to-regexp": "3.2.0",
|
|
27
|
-
"tslib": "2.6.
|
|
27
|
+
"tslib": "2.6.3"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"@fastify/static": "^6.0.0 || ^7.0.0",
|