@webiny/handler 0.0.0-unstable.6e5425ee89 → 0.0.0-unstable.7c9e8fbfd6
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/Context.d.ts +18 -9
- package/Context.js +20 -11
- package/Context.js.map +1 -1
- package/PreHandler/IPreHandler.d.ts +9 -0
- package/PreHandler/IPreHandler.js +13 -0
- package/PreHandler/IPreHandler.js.map +1 -0
- package/PreHandler/IfNotOptionsRequest.d.ts +9 -0
- package/PreHandler/IfNotOptionsRequest.js +28 -0
- package/PreHandler/IfNotOptionsRequest.js.map +1 -0
- package/PreHandler/IfOptionsRequest.d.ts +9 -0
- package/PreHandler/IfOptionsRequest.js +28 -0
- package/PreHandler/IfOptionsRequest.js.map +1 -0
- package/PreHandler/PreHandler.d.ts +9 -0
- package/PreHandler/PreHandler.js +24 -0
- package/PreHandler/PreHandler.js.map +1 -0
- package/PreHandler/ProcessBeforeHandlerPlugins.d.ts +10 -0
- package/PreHandler/ProcessBeforeHandlerPlugins.js +31 -0
- package/PreHandler/ProcessBeforeHandlerPlugins.js.map +1 -0
- package/PreHandler/ProcessContextPlugins.d.ts +10 -0
- package/PreHandler/ProcessContextPlugins.js +31 -0
- package/PreHandler/ProcessContextPlugins.js.map +1 -0
- package/PreHandler/ProcessHandlerOnRequestPlugins.d.ts +10 -0
- package/PreHandler/ProcessHandlerOnRequestPlugins.js +33 -0
- package/PreHandler/ProcessHandlerOnRequestPlugins.js.map +1 -0
- package/PreHandler/SendEarlyOptionsResponse.d.ts +9 -0
- package/PreHandler/SendEarlyOptionsResponse.js +38 -0
- package/PreHandler/SendEarlyOptionsResponse.js.map +1 -0
- package/PreHandler/SetDefaultHeaders.d.ts +9 -0
- package/PreHandler/SetDefaultHeaders.js +64 -0
- package/PreHandler/SetDefaultHeaders.js.map +1 -0
- package/ResponseHeaders.d.ts +25 -0
- package/ResponseHeaders.js +46 -0
- package/ResponseHeaders.js.map +1 -0
- package/fastify.d.ts +6 -4
- package/fastify.js +247 -113
- package/fastify.js.map +1 -1
- package/index.d.ts +8 -1
- package/index.js +67 -9
- package/index.js.map +1 -1
- package/package.json +15 -23
- package/plugins/BeforeHandlerPlugin.d.ts +1 -1
- package/plugins/BeforeHandlerPlugin.js +4 -5
- package/plugins/BeforeHandlerPlugin.js.map +1 -1
- package/plugins/EventPlugin.d.ts +1 -1
- package/plugins/EventPlugin.js +4 -5
- package/plugins/EventPlugin.js.map +1 -1
- package/plugins/HandlerErrorPlugin.d.ts +6 -3
- package/plugins/HandlerErrorPlugin.js +4 -5
- package/plugins/HandlerErrorPlugin.js.map +1 -1
- package/plugins/HandlerOnRequestPlugin.d.ts +21 -0
- package/plugins/HandlerOnRequestPlugin.js +31 -0
- package/plugins/HandlerOnRequestPlugin.js.map +1 -0
- package/plugins/HandlerResultPlugin.d.ts +1 -1
- package/plugins/HandlerResultPlugin.js +4 -5
- package/plugins/HandlerResultPlugin.js.map +1 -1
- package/plugins/ModifyFastifyPlugin.d.ts +13 -0
- package/plugins/ModifyFastifyPlugin.js +24 -0
- package/plugins/ModifyFastifyPlugin.js.map +1 -0
- package/plugins/ModifyResponseHeadersPlugin.d.ts +14 -0
- package/plugins/ModifyResponseHeadersPlugin.js +24 -0
- package/plugins/ModifyResponseHeadersPlugin.js.map +1 -0
- package/plugins/OnRequestResponseSendPlugin.d.ts +26 -0
- package/plugins/OnRequestResponseSendPlugin.js +40 -0
- package/plugins/OnRequestResponseSendPlugin.js.map +1 -0
- package/plugins/OnRequestTimeoutPlugin.d.ts +12 -0
- package/plugins/OnRequestTimeoutPlugin.js +24 -0
- package/plugins/OnRequestTimeoutPlugin.js.map +1 -0
- package/plugins/RoutePlugin.d.ts +1 -1
- package/plugins/RoutePlugin.js +4 -5
- package/plugins/RoutePlugin.js.map +1 -1
- package/stringifyError.d.ts +5 -0
- package/stringifyError.js +27 -0
- package/stringifyError.js.map +1 -0
- package/suppressPunycodeWarnings.d.ts +4 -0
- package/suppressPunycodeWarnings.js +11 -0
- package/suppressPunycodeWarnings.js.map +1 -0
- package/types.d.ts +14 -13
- package/types.js +4 -7
- package/types.js.map +1 -1
- package/middleware.d.ts +0 -4
- package/middleware.js +0 -45
- package/middleware.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isFunction","setter","ResponseHeaders","headers","Map","constructor","initialHeaders","Object","keys","forEach","key","set","header","previousValue","get","newValue","merge","create","getHeaders","fromEntries","exports"],"sources":["ResponseHeaders.ts"],"sourcesContent":["import type * as http from \"http\";\n\ntype ExtraHeaders = {\n \"content-type\"?: string | undefined;\n \"x-webiny-version\"?: http.OutgoingHttpHeader | undefined;\n};\n\ntype AllHeaders = http.OutgoingHttpHeaders & ExtraHeaders;\n\nexport type StandardHeaderValue = http.OutgoingHttpHeader | undefined;\n\n// Extract known standard headers, and remove all non-string keys.\nexport type StandardHeaders = {\n [K in keyof AllHeaders as string extends K\n ? never\n : number extends K\n ? never\n : K]: http.OutgoingHttpHeaders[K];\n} & {\n [name: string]: StandardHeaderValue;\n};\n\nfunction isFunction<T>(setter: unknown): setter is (value: T) => T {\n return typeof setter === \"function\";\n}\n\ntype Setter<T> = ((value: T) => T) | T;\n\nexport class ResponseHeaders {\n private readonly headers = new Map<keyof StandardHeaders, StandardHeaderValue>();\n\n private constructor(initialHeaders?: StandardHeaders) {\n if (initialHeaders) {\n (Object.keys(initialHeaders) as Array<keyof StandardHeaders>).forEach(key => {\n this.headers.set(key, initialHeaders[key]);\n });\n }\n }\n\n set<T extends keyof StandardHeaders>(header: T, setter: Setter<StandardHeaders[T]>) {\n if (isFunction<StandardHeaders[T]>(setter)) {\n const previousValue = this.headers.get(header) as StandardHeaders[T];\n const newValue = setter(previousValue);\n this.headers.set(header, newValue);\n return this;\n }\n\n this.headers.set(header, setter);\n\n return this;\n }\n\n merge(headers: ResponseHeaders) {\n return ResponseHeaders.create({ ...this.getHeaders(), ...headers.getHeaders() });\n }\n\n getHeaders() {\n return Object.fromEntries(this.headers);\n }\n\n static create(initialHeaders?: StandardHeaders) {\n return new ResponseHeaders(initialHeaders);\n }\n}\n"],"mappings":";;;;;;AAWA;;AAWA,SAASA,UAAUA,CAAIC,MAAe,EAA6B;EAC/D,OAAO,OAAOA,MAAM,KAAK,UAAU;AACvC;AAIO,MAAMC,eAAe,CAAC;EACRC,OAAO,GAAG,IAAIC,GAAG,CAA6C,CAAC;EAExEC,WAAWA,CAACC,cAAgC,EAAE;IAClD,IAAIA,cAAc,EAAE;MACfC,MAAM,CAACC,IAAI,CAACF,cAAc,CAAC,CAAkCG,OAAO,CAACC,GAAG,IAAI;QACzE,IAAI,CAACP,OAAO,CAACQ,GAAG,CAACD,GAAG,EAAEJ,cAAc,CAACI,GAAG,CAAC,CAAC;MAC9C,CAAC,CAAC;IACN;EACJ;EAEAC,GAAGA,CAAkCC,MAAS,EAAEX,MAAkC,EAAE;IAChF,IAAID,UAAU,CAAqBC,MAAM,CAAC,EAAE;MACxC,MAAMY,aAAa,GAAG,IAAI,CAACV,OAAO,CAACW,GAAG,CAACF,MAAM,CAAuB;MACpE,MAAMG,QAAQ,GAAGd,MAAM,CAACY,aAAa,CAAC;MACtC,IAAI,CAACV,OAAO,CAACQ,GAAG,CAACC,MAAM,EAAEG,QAAQ,CAAC;MAClC,OAAO,IAAI;IACf;IAEA,IAAI,CAACZ,OAAO,CAACQ,GAAG,CAACC,MAAM,EAAEX,MAAM,CAAC;IAEhC,OAAO,IAAI;EACf;EAEAe,KAAKA,CAACb,OAAwB,EAAE;IAC5B,OAAOD,eAAe,CAACe,MAAM,CAAC;MAAE,GAAG,IAAI,CAACC,UAAU,CAAC,CAAC;MAAE,GAAGf,OAAO,CAACe,UAAU,CAAC;IAAE,CAAC,CAAC;EACpF;EAEAA,UAAUA,CAAA,EAAG;IACT,OAAOX,MAAM,CAACY,WAAW,CAAC,IAAI,CAAChB,OAAO,CAAC;EAC3C;EAEA,OAAOc,MAAMA,CAACX,cAAgC,EAAE;IAC5C,OAAO,IAAIJ,eAAe,CAACI,cAAc,CAAC;EAC9C;AACJ;AAACc,OAAA,CAAAlB,eAAA,GAAAA,eAAA","ignoreList":[]}
|
package/fastify.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { PluginCollection } from "@webiny/plugins/types";
|
|
3
|
-
import {
|
|
2
|
+
import type { PluginCollection } from "@webiny/plugins/types";
|
|
3
|
+
import { PluginsContainer } from "@webiny/plugins/types";
|
|
4
|
+
import type { FastifyInstance, FastifyServerOptions as ServerOptions } from "fastify";
|
|
4
5
|
export interface CreateHandlerParams {
|
|
5
|
-
plugins: PluginCollection;
|
|
6
|
+
plugins: PluginCollection | PluginsContainer;
|
|
6
7
|
options?: ServerOptions;
|
|
8
|
+
debug?: boolean;
|
|
7
9
|
}
|
|
8
|
-
export declare const createHandler: (params: CreateHandlerParams) =>
|
|
10
|
+
export declare const createHandler: (params: CreateHandlerParams) => FastifyInstance<import("fastify").RawServerDefault, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, import("fastify").FastifyBaseLogger, import("fastify").FastifyTypeProviderDefault> & PromiseLike<FastifyInstance<import("fastify").RawServerDefault, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, import("fastify").FastifyBaseLogger, import("fastify").FastifyTypeProviderDefault>>;
|
package/fastify.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.createHandler = void 0;
|
|
8
|
-
var
|
|
8
|
+
var _types = require("@webiny/plugins/types");
|
|
9
9
|
var _fastify = _interopRequireDefault(require("fastify"));
|
|
10
10
|
var _utils = require("@webiny/utils");
|
|
11
11
|
var _Context = require("./Context");
|
|
@@ -13,42 +13,34 @@ var _error = _interopRequireDefault(require("@webiny/error"));
|
|
|
13
13
|
var _RoutePlugin = require("./plugins/RoutePlugin");
|
|
14
14
|
var _handlerClient = require("@webiny/handler-client");
|
|
15
15
|
var _cookie = _interopRequireDefault(require("@fastify/cookie"));
|
|
16
|
-
var
|
|
16
|
+
var _compress = _interopRequireDefault(require("@fastify/compress"));
|
|
17
17
|
var _api = require("@webiny/api");
|
|
18
18
|
var _BeforeHandlerPlugin = require("./plugins/BeforeHandlerPlugin");
|
|
19
19
|
var _HandlerResultPlugin = require("./plugins/HandlerResultPlugin");
|
|
20
20
|
var _HandlerErrorPlugin = require("./plugins/HandlerErrorPlugin");
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (!routes[type] || Array.isArray(routes[type]) === false) {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
return routes[type].length > 0;
|
|
46
|
-
}).sort().join(",")
|
|
21
|
+
var _ModifyFastifyPlugin = require("./plugins/ModifyFastifyPlugin");
|
|
22
|
+
var _HandlerOnRequestPlugin = require("./plugins/HandlerOnRequestPlugin");
|
|
23
|
+
var _ResponseHeaders = require("./ResponseHeaders");
|
|
24
|
+
var _ModifyResponseHeadersPlugin = require("./plugins/ModifyResponseHeadersPlugin");
|
|
25
|
+
var _SetDefaultHeaders = require("./PreHandler/SetDefaultHeaders");
|
|
26
|
+
var _PreHandler = require("./PreHandler/PreHandler");
|
|
27
|
+
var _stringifyError = require("./stringifyError");
|
|
28
|
+
var _ProcessHandlerOnRequestPlugins = require("./PreHandler/ProcessHandlerOnRequestPlugins");
|
|
29
|
+
var _ProcessContextPlugins = require("./PreHandler/ProcessContextPlugins");
|
|
30
|
+
var _IfNotOptionsRequest = require("./PreHandler/IfNotOptionsRequest");
|
|
31
|
+
var _ProcessBeforeHandlerPlugins = require("./PreHandler/ProcessBeforeHandlerPlugins");
|
|
32
|
+
var _IfOptionsRequest = require("./PreHandler/IfOptionsRequest");
|
|
33
|
+
var _SendEarlyOptionsResponse = require("./PreHandler/SendEarlyOptionsResponse");
|
|
34
|
+
var _OnRequestTimeoutPlugin = require("./plugins/OnRequestTimeoutPlugin.js");
|
|
35
|
+
var _OnRequestResponseSendPlugin = require("./plugins/OnRequestResponseSendPlugin.js");
|
|
36
|
+
const modifyResponseHeaders = (app, request, reply) => {
|
|
37
|
+
const modifyHeaders = app.webiny.plugins.byType(_ModifyResponseHeadersPlugin.ModifyResponseHeadersPlugin.type);
|
|
38
|
+
const replyHeaders = reply.getHeaders();
|
|
39
|
+
const headers = _ResponseHeaders.ResponseHeaders.create(replyHeaders);
|
|
40
|
+
modifyHeaders.forEach(plugin => {
|
|
41
|
+
plugin.modify(request, headers);
|
|
47
42
|
});
|
|
48
|
-
|
|
49
|
-
const OPTIONS_HEADERS = {
|
|
50
|
-
"Access-Control-Max-Age": "86400",
|
|
51
|
-
"Cache-Control": "public, max-age=86400"
|
|
43
|
+
reply.headers(headers.getHeaders());
|
|
52
44
|
};
|
|
53
45
|
const createHandler = params => {
|
|
54
46
|
const definedRoutes = {
|
|
@@ -67,33 +59,39 @@ const createHandler = params => {
|
|
|
67
59
|
PROPPATCH: [],
|
|
68
60
|
SEARCH: [],
|
|
69
61
|
TRACE: [],
|
|
70
|
-
UNLOCK: []
|
|
62
|
+
UNLOCK: [],
|
|
63
|
+
REPORT: [],
|
|
64
|
+
MKCALENDAR: []
|
|
71
65
|
};
|
|
72
66
|
const throwOnDefinedRoute = (type, path, options) => {
|
|
73
67
|
if (type === "ALL") {
|
|
74
|
-
const all = Object.keys(definedRoutes).
|
|
68
|
+
const all = Object.keys(definedRoutes).find(k => {
|
|
69
|
+
const key = k.toUpperCase();
|
|
75
70
|
const routes = definedRoutes[key];
|
|
76
71
|
return routes.includes(path);
|
|
77
72
|
});
|
|
78
73
|
if (!all) {
|
|
79
74
|
return;
|
|
80
75
|
}
|
|
76
|
+
console.error(`Error while registering onAll route. One of the routes is already defined.`);
|
|
77
|
+
console.error(JSON.stringify(all));
|
|
81
78
|
throw new _error.default(`You cannot override a route with onAll() method, please remove unnecessary route from the system.`, "OVERRIDE_ROUTE_ERROR", {
|
|
82
79
|
type,
|
|
83
80
|
path
|
|
84
81
|
});
|
|
85
82
|
} else if (definedRoutes[type].includes(path) === false) {
|
|
86
83
|
return;
|
|
87
|
-
} else if (
|
|
84
|
+
} else if (options?.override === true) {
|
|
88
85
|
return;
|
|
89
86
|
}
|
|
87
|
+
console.error(`Error while trying to override route: [${type}] ${path}`);
|
|
90
88
|
throw new _error.default(`When you are trying to override existing route, you must send "override" parameter when adding that route.`, "OVERRIDE_ROUTE_ERROR", {
|
|
91
89
|
type,
|
|
92
90
|
path
|
|
93
91
|
});
|
|
94
92
|
};
|
|
95
|
-
const addDefinedRoute = (
|
|
96
|
-
const type =
|
|
93
|
+
const addDefinedRoute = (input, path) => {
|
|
94
|
+
const type = input.toUpperCase();
|
|
97
95
|
if (!definedRoutes[type]) {
|
|
98
96
|
return;
|
|
99
97
|
} else if (definedRoutes[type].includes(path)) {
|
|
@@ -101,12 +99,19 @@ const createHandler = params => {
|
|
|
101
99
|
}
|
|
102
100
|
definedRoutes[type].push(path);
|
|
103
101
|
};
|
|
102
|
+
|
|
104
103
|
/**
|
|
105
104
|
* We must attach the server to our internal context if we want to have it accessible.
|
|
106
105
|
*/
|
|
107
|
-
const app = (0, _fastify.default)(
|
|
106
|
+
const app = (0, _fastify.default)({
|
|
107
|
+
bodyLimit: 536870912,
|
|
108
|
+
// 512MB
|
|
109
|
+
disableRequestLogging: true,
|
|
110
|
+
...(params.options || {})
|
|
111
|
+
});
|
|
112
|
+
|
|
108
113
|
/**
|
|
109
|
-
* We need to register routes in our system
|
|
114
|
+
* We need to register routes in our system to output headers later on, and disallow route overriding.
|
|
110
115
|
*/
|
|
111
116
|
app.addHook("onRoute", route => {
|
|
112
117
|
const method = route.method;
|
|
@@ -119,11 +124,31 @@ const createHandler = params => {
|
|
|
119
124
|
addDefinedRoute(method, route.path);
|
|
120
125
|
});
|
|
121
126
|
/**
|
|
127
|
+
* ############################
|
|
128
|
+
* Register the Fastify plugins.
|
|
129
|
+
*/
|
|
130
|
+
/**
|
|
131
|
+
* Package @fastify/cookie
|
|
122
132
|
*
|
|
133
|
+
* https://github.com/fastify/fastify-cookie
|
|
123
134
|
*/
|
|
124
135
|
app.register(_cookie.default, {
|
|
125
136
|
parseOptions: {} // options for parsing cookies
|
|
126
137
|
});
|
|
138
|
+
/**
|
|
139
|
+
* Package @fastify/compress
|
|
140
|
+
*
|
|
141
|
+
* https://github.com/fastify/fastify-compress
|
|
142
|
+
*/
|
|
143
|
+
app.register(_compress.default, {
|
|
144
|
+
global: true,
|
|
145
|
+
threshold: 1024,
|
|
146
|
+
onUnsupportedEncoding: (encoding, _, reply) => {
|
|
147
|
+
reply.code(406);
|
|
148
|
+
return `We do not support the ${encoding} encoding.`;
|
|
149
|
+
},
|
|
150
|
+
inflateIfDeflated: true
|
|
151
|
+
});
|
|
127
152
|
/**
|
|
128
153
|
* Route helpers - mostly for users.
|
|
129
154
|
*/
|
|
@@ -162,106 +187,215 @@ const createHandler = params => {
|
|
|
162
187
|
app.head(path, handler);
|
|
163
188
|
}
|
|
164
189
|
};
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* We must have handlerClient by default.
|
|
169
|
-
* And it must be one of the first context plugins applied.
|
|
170
|
-
*/
|
|
171
|
-
(0, _handlerClient.createHandlerClient)(), ...(params.plugins || [])],
|
|
172
|
-
/**
|
|
173
|
-
* Inserted via webpack on build time.
|
|
174
|
-
*/
|
|
175
|
-
WEBINY_VERSION: process.env.WEBINY_VERSION,
|
|
176
|
-
server: app,
|
|
177
|
-
routes
|
|
178
|
-
});
|
|
190
|
+
let context;
|
|
191
|
+
const plugins = new _types.PluginsContainer([
|
|
179
192
|
/**
|
|
180
|
-
* We
|
|
193
|
+
* We must have handlerClient by default.
|
|
194
|
+
* And it must be one of the first context plugins applied.
|
|
181
195
|
*/
|
|
182
|
-
|
|
196
|
+
(0, _handlerClient.createHandlerClient)()]);
|
|
197
|
+
plugins.merge(params.plugins || []);
|
|
198
|
+
try {
|
|
199
|
+
context = new _Context.Context({
|
|
200
|
+
plugins,
|
|
201
|
+
/**
|
|
202
|
+
* Inserted via webpack at build time.
|
|
203
|
+
*/
|
|
204
|
+
WEBINY_VERSION: process.env.WEBINY_VERSION,
|
|
205
|
+
routes
|
|
206
|
+
});
|
|
207
|
+
} catch (ex) {
|
|
208
|
+
console.error(`Error while constructing the Context.`);
|
|
209
|
+
console.error((0, _stringifyError.stringifyError)(ex));
|
|
210
|
+
throw ex;
|
|
211
|
+
}
|
|
183
212
|
|
|
184
213
|
/**
|
|
185
|
-
* We
|
|
186
|
-
* * Events - EventPlugin
|
|
187
|
-
* * Routes - RoutePlugin
|
|
188
|
-
*
|
|
189
|
-
* Routes are registered in fastify but events must be handled in package which implements cloud specific methods.
|
|
214
|
+
* We are attaching our custom context to webiny variable on the fastify app, so it is accessible everywhere.
|
|
190
215
|
*/
|
|
191
|
-
|
|
216
|
+
app.decorate("webiny", context);
|
|
192
217
|
|
|
193
218
|
/**
|
|
194
|
-
*
|
|
219
|
+
* With this we ensure that an undefined request body is not parsed on OPTIONS requests,
|
|
220
|
+
* in case there's a `content-type` header set for whatever reason.
|
|
221
|
+
*
|
|
222
|
+
* @see https://fastify.dev/docs/latest/Reference/ContentTypeParser/#content-type-parser
|
|
195
223
|
*/
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
}
|
|
224
|
+
app.addHook("onRequest", async request => {
|
|
225
|
+
if (request.method === "OPTIONS" && request.body === undefined) {
|
|
226
|
+
request.headers["content-type"] = undefined;
|
|
227
|
+
}
|
|
228
|
+
});
|
|
201
229
|
|
|
202
230
|
/**
|
|
203
|
-
*
|
|
204
|
-
*
|
|
231
|
+
* At this point, request body is properly parsed, and we can execute Webiny business logic.
|
|
232
|
+
* - set default headers
|
|
233
|
+
* - process `HandlerOnRequestPlugin`
|
|
234
|
+
* - if OPTIONS request, exit early
|
|
235
|
+
* - process `ContextPlugin`
|
|
236
|
+
* - process `BeforeHandlerPlugin`
|
|
205
237
|
*/
|
|
206
|
-
app.addHook("
|
|
207
|
-
|
|
208
|
-
reply
|
|
209
|
-
|
|
210
|
-
|
|
238
|
+
app.addHook("preHandler", async (request, reply) => {
|
|
239
|
+
app.webiny.request = request;
|
|
240
|
+
app.webiny.reply = reply;
|
|
241
|
+
/**
|
|
242
|
+
* Default code to 200 - so we do not need to set it again.
|
|
243
|
+
* Usually we set errors manually when we use reply.send.
|
|
244
|
+
*/
|
|
245
|
+
reply.code(200);
|
|
246
|
+
const handlerOnRequestPlugins = app.webiny.plugins.byType(_HandlerOnRequestPlugin.HandlerOnRequestPlugin.type);
|
|
247
|
+
const contextPlugins = app.webiny.plugins.byType(_api.ContextPlugin.type);
|
|
248
|
+
const beforeHandlerPlugins = app.webiny.plugins.byType(_BeforeHandlerPlugin.BeforeHandlerPlugin.type);
|
|
249
|
+
const modifyHeadersPlugins = app.webiny.plugins.byType(_ModifyResponseHeadersPlugin.ModifyResponseHeadersPlugin.type);
|
|
250
|
+
const preHandler = new _PreHandler.PreHandler([new _SetDefaultHeaders.SetDefaultHeaders(definedRoutes), new _ProcessHandlerOnRequestPlugins.ProcessHandlerOnRequestPlugins(handlerOnRequestPlugins), new _IfNotOptionsRequest.IfNotOptionsRequest([new _ProcessContextPlugins.ProcessContextPlugins(app.webiny, contextPlugins), new _ProcessBeforeHandlerPlugins.ProcessBeforeHandlerPlugins(app.webiny, beforeHandlerPlugins)]), new _IfOptionsRequest.IfOptionsRequest([new _SendEarlyOptionsResponse.SendEarlyOptionsResponse(modifyHeadersPlugins)])]);
|
|
251
|
+
await preHandler.execute(request, reply, app.webiny);
|
|
252
|
+
});
|
|
253
|
+
app.addHook("preSerialization", async (_, __, payload) => {
|
|
254
|
+
const plugins = app.webiny.plugins.byType(_HandlerResultPlugin.HandlerResultPlugin.type);
|
|
255
|
+
let name;
|
|
256
|
+
try {
|
|
257
|
+
for (const plugin of plugins) {
|
|
258
|
+
name = plugin.name;
|
|
259
|
+
await plugin.handle(app.webiny, payload);
|
|
260
|
+
}
|
|
261
|
+
} catch (ex) {
|
|
262
|
+
console.error(`Error while running the "HandlerResultPlugin" ${name ? `(${name})` : ""} plugin in the preSerialization hook.`);
|
|
263
|
+
console.error((0, _stringifyError.stringifyError)(ex));
|
|
264
|
+
throw ex;
|
|
265
|
+
}
|
|
266
|
+
return payload;
|
|
267
|
+
});
|
|
268
|
+
app.setErrorHandler(async (error, _, reply) => {
|
|
269
|
+
/**
|
|
270
|
+
* IMPORTANT! Do not send anything if reply was already sent.
|
|
271
|
+
*/
|
|
272
|
+
if (reply.sent) {
|
|
273
|
+
console.warn("Reply already sent, cannot send the result (handler:setErrorHandler).");
|
|
274
|
+
return reply;
|
|
275
|
+
}
|
|
276
|
+
return reply.status(500).headers({
|
|
277
|
+
"Cache-Control": "no-store"
|
|
278
|
+
}).send(
|
|
279
|
+
/**
|
|
280
|
+
* When we are sending the error in the response, we cannot send the whole error object, as it might contain some sensitive data.
|
|
281
|
+
*/
|
|
282
|
+
JSON.stringify({
|
|
283
|
+
message: error.message,
|
|
284
|
+
code: error.code,
|
|
285
|
+
data: error.data
|
|
286
|
+
}));
|
|
287
|
+
});
|
|
288
|
+
app.addHook("onError", async (_, reply, error) => {
|
|
289
|
+
const plugins = app.webiny.plugins.byType(_HandlerErrorPlugin.HandlerErrorPlugin.type);
|
|
290
|
+
/**
|
|
291
|
+
* Log error to cloud, as these can be extremely annoying to debug!
|
|
292
|
+
*/
|
|
293
|
+
console.error("Logging error in @webiny/handler");
|
|
294
|
+
try {
|
|
295
|
+
console.error((0, _stringifyError.stringifyError)(error));
|
|
296
|
+
} catch (ex) {
|
|
297
|
+
console.warn("Could not stringify error:");
|
|
298
|
+
console.log(error);
|
|
299
|
+
console.error("Stringify error:", ex);
|
|
211
300
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
301
|
+
/**
|
|
302
|
+
* IMPORTANT! Do not send anything if reply was already sent.
|
|
303
|
+
*/
|
|
304
|
+
if (!reply.sent) {
|
|
305
|
+
reply.status(500).headers({
|
|
306
|
+
"Cache-Control": "no-store"
|
|
307
|
+
}).send(
|
|
308
|
+
/**
|
|
309
|
+
* When we are sending the error in the response, we cannot send the whole error object, as it might contain some sensitive data.
|
|
310
|
+
*/
|
|
311
|
+
JSON.stringify({
|
|
312
|
+
message: error.message,
|
|
313
|
+
code: error.code,
|
|
314
|
+
data: error.data
|
|
315
|
+
}));
|
|
316
|
+
} else {
|
|
317
|
+
console.warn("Reply already sent, cannot send the result (handler:addHook:onError).");
|
|
216
318
|
}
|
|
217
|
-
|
|
319
|
+
const handler = (0, _utils.middleware)(plugins.map(pl => {
|
|
320
|
+
return (context, error, next) => {
|
|
321
|
+
return pl.handle(context, error, next);
|
|
322
|
+
};
|
|
323
|
+
}));
|
|
324
|
+
await handler(app.webiny, error);
|
|
325
|
+
return reply;
|
|
218
326
|
});
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Apply response headers modifier plugins.
|
|
330
|
+
*/
|
|
331
|
+
app.addHook("onSend", async (request, reply, input) => {
|
|
332
|
+
modifyResponseHeaders(app, request, reply);
|
|
333
|
+
const plugins = app.webiny.plugins.byType(_OnRequestResponseSendPlugin.OnRequestResponseSendPlugin.type);
|
|
334
|
+
let payload = input;
|
|
222
335
|
for (const plugin of plugins) {
|
|
223
|
-
await plugin.
|
|
336
|
+
payload = await plugin.exec(request, reply, payload);
|
|
224
337
|
}
|
|
338
|
+
return payload;
|
|
225
339
|
});
|
|
340
|
+
|
|
226
341
|
/**
|
|
227
|
-
*
|
|
342
|
+
* We need to output the benchmark results at the end of the request in both response and timeout cases
|
|
228
343
|
*/
|
|
229
|
-
app.addHook("
|
|
230
|
-
|
|
344
|
+
app.addHook("onResponse", async () => {
|
|
345
|
+
await context.benchmark.output();
|
|
346
|
+
});
|
|
347
|
+
app.addHook("onTimeout", async (request, reply) => {
|
|
348
|
+
const plugins = app.webiny.plugins.byType(_OnRequestTimeoutPlugin.OnRequestTimeoutPlugin.type);
|
|
231
349
|
for (const plugin of plugins) {
|
|
232
|
-
await plugin.
|
|
350
|
+
await plugin.exec(request, reply);
|
|
233
351
|
}
|
|
352
|
+
await context.benchmark.output();
|
|
234
353
|
});
|
|
235
354
|
|
|
236
355
|
/**
|
|
356
|
+
* With these plugins we give users possibility to do anything they want on our fastify instance.
|
|
357
|
+
*/
|
|
358
|
+
const modifyPlugins = app.webiny.plugins.byType(_ModifyFastifyPlugin.ModifyFastifyPlugin.type);
|
|
359
|
+
let modifyFastifyPluginName;
|
|
360
|
+
try {
|
|
361
|
+
for (const plugin of modifyPlugins) {
|
|
362
|
+
modifyFastifyPluginName = plugin.name;
|
|
363
|
+
plugin.modify(app);
|
|
364
|
+
}
|
|
365
|
+
} catch (ex) {
|
|
366
|
+
console.error(`Error while running the "ModifyFastifyPlugin" ${modifyFastifyPluginName ? `(${modifyFastifyPluginName})` : ""} plugin in the end of the "createHandler" callable.`);
|
|
367
|
+
console.error((0, _stringifyError.stringifyError)(ex));
|
|
368
|
+
throw ex;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* We have few types of triggers:
|
|
373
|
+
* * Events - EventPlugin
|
|
374
|
+
* * Routes - RoutePlugin
|
|
237
375
|
*
|
|
376
|
+
* Routes are registered in fastify but events must be handled in package which implements cloud specific methods.
|
|
238
377
|
*/
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
378
|
+
const routePlugins = app.webiny.plugins.byType(_RoutePlugin.RoutePlugin.type);
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Add routes to the system.
|
|
382
|
+
*/
|
|
383
|
+
let routePluginName;
|
|
384
|
+
try {
|
|
385
|
+
for (const plugin of routePlugins) {
|
|
386
|
+
routePluginName = plugin.name;
|
|
387
|
+
plugin.cb({
|
|
388
|
+
...app.webiny.routes,
|
|
389
|
+
context: app.webiny
|
|
390
|
+
});
|
|
243
391
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
// Log error to cloud, as these can be extremely annoying to debug!
|
|
250
|
-
console.log("@webiny/handler");
|
|
251
|
-
console.log(JSON.stringify((0, _objectSpread2.default)((0, _objectSpread2.default)({}, error || {}), {}, {
|
|
252
|
-
message: error === null || error === void 0 ? void 0 : error.message,
|
|
253
|
-
code: error === null || error === void 0 ? void 0 : error.code
|
|
254
|
-
})));
|
|
255
|
-
const handler = (0, _middleware.middleware)(plugins.map(pl => {
|
|
256
|
-
return (context, error, next) => {
|
|
257
|
-
return pl.handle(context, error, next);
|
|
258
|
-
};
|
|
259
|
-
}));
|
|
260
|
-
await handler(app.webiny, error);
|
|
261
|
-
return reply.headers({
|
|
262
|
-
"Cache-Control": "no-store"
|
|
263
|
-
}).status(500);
|
|
264
|
-
});
|
|
392
|
+
} catch (ex) {
|
|
393
|
+
console.error(`Error while running the "RoutePlugin" ${routePluginName ? `(${routePluginName})` : ""} plugin in the beginning of the "createHandler" callable.`);
|
|
394
|
+
console.error((0, _stringifyError.stringifyError)(ex));
|
|
395
|
+
throw ex;
|
|
396
|
+
}
|
|
265
397
|
return app;
|
|
266
398
|
};
|
|
267
|
-
exports.createHandler = createHandler;
|
|
399
|
+
exports.createHandler = createHandler;
|
|
400
|
+
|
|
401
|
+
//# sourceMappingURL=fastify.js.map
|
package/fastify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEFAULT_HEADERS","getWebinyVersionHeaders","getDefaultHeaders","routes","keys","Object","all","every","key","length","filter","type","Array","isArray","sort","join","OPTIONS_HEADERS","createHandler","params","definedRoutes","POST","GET","OPTIONS","DELETE","PATCH","PUT","HEAD","COPY","LOCK","MKCOL","MOVE","PROPFIND","PROPPATCH","SEARCH","TRACE","UNLOCK","throwOnDefinedRoute","path","options","some","includes","WebinyError","override","addDefinedRoute","inputType","toUpperCase","push","app","fastify","addHook","route","method","m","register","fastifyCookies","parseOptions","defined","onPost","handler","post","onGet","get","onOptions","onDelete","delete","onPatch","patch","onPut","put","onAll","onHead","head","context","Context","plugins","createHandlerClient","WEBINY_VERSION","process","env","server","decorate","routePlugins","webiny","byType","RoutePlugin","plugin","cb","request","reply","defaultHeaders","headers","raw","code","hijack","setHeader","end","ContextPlugin","apply","BeforeHandlerPlugin","preSerialization","_","__","payload","HandlerResultPlugin","handle","error","HandlerErrorPlugin","console","log","JSON","stringify","message","middleware","map","pl","next","status"],"sources":["fastify.ts"],"sourcesContent":["import { PluginCollection } from \"@webiny/plugins/types\";\nimport fastify, {\n FastifyServerOptions as ServerOptions,\n preSerializationAsyncHookHandler\n} from \"fastify\";\nimport { getWebinyVersionHeaders } from \"@webiny/utils\";\nimport { ContextRoutes, DefinedContextRoutes, RouteMethodOptions, HTTPMethods } from \"~/types\";\nimport { Context } from \"~/Context\";\nimport WebinyError from \"@webiny/error\";\nimport { RoutePlugin } from \"./plugins/RoutePlugin\";\nimport { createHandlerClient } from \"@webiny/handler-client\";\nimport fastifyCookies from \"@fastify/cookie\";\nimport { middleware } from \"~/middleware\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { BeforeHandlerPlugin } from \"./plugins/BeforeHandlerPlugin\";\nimport { HandlerResultPlugin } from \"./plugins/HandlerResultPlugin\";\nimport { HandlerErrorPlugin } from \"./plugins/HandlerErrorPlugin\";\n\nconst DEFAULT_HEADERS: Record<string, string> = {\n \"Cache-Control\": \"no-store\",\n \"Content-Type\": \"application/json; charset=utf-8\",\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Headers\": \"*\",\n \"Access-Control-Allow-Methods\": \"OPTIONS,POST,GET,DELETE,PUT,PATCH\",\n ...getWebinyVersionHeaders()\n};\n\nconst getDefaultHeaders = (routes: DefinedContextRoutes): Record<string, string> => {\n /**\n * If we are accepting all headers, just output that one.\n */\n const keys = Object.keys(routes);\n const all = keys.every(key => routes[key as HTTPMethods].length > 0);\n if (all) {\n return {\n ...DEFAULT_HEADERS,\n \"Access-Control-Allow-Methods\": \"*\"\n };\n }\n return {\n ...DEFAULT_HEADERS,\n \"Access-Control-Allow-Methods\": keys\n .filter(key => {\n const type = key as unknown as HTTPMethods;\n if (!routes[type] || Array.isArray(routes[type]) === false) {\n return false;\n }\n return routes[type].length > 0;\n })\n .sort()\n .join(\",\")\n };\n};\n\nconst OPTIONS_HEADERS: Record<string, string> = {\n \"Access-Control-Max-Age\": \"86400\",\n \"Cache-Control\": \"public, max-age=86400\"\n};\n\nexport interface CreateHandlerParams {\n plugins: PluginCollection;\n options?: ServerOptions;\n}\n\nexport const createHandler = (params: CreateHandlerParams) => {\n const definedRoutes: DefinedContextRoutes = {\n POST: [],\n GET: [],\n OPTIONS: [],\n DELETE: [],\n PATCH: [],\n PUT: [],\n HEAD: [],\n COPY: [],\n LOCK: [],\n MKCOL: [],\n MOVE: [],\n PROPFIND: [],\n PROPPATCH: [],\n SEARCH: [],\n TRACE: [],\n UNLOCK: []\n };\n\n const throwOnDefinedRoute = (\n type: HTTPMethods | \"ALL\",\n path: string,\n options?: RouteMethodOptions\n ): void => {\n if (type === \"ALL\") {\n const all = Object.keys(definedRoutes).some(key => {\n const routes = definedRoutes[key as HTTPMethods];\n return routes.includes(path);\n });\n if (!all) {\n return;\n }\n throw new WebinyError(\n `You cannot override a route with onAll() method, please remove unnecessary route from the system.`,\n \"OVERRIDE_ROUTE_ERROR\",\n {\n type,\n path\n }\n );\n } else if (definedRoutes[type].includes(path) === false) {\n return;\n } else if (options?.override === true) {\n return;\n }\n throw new WebinyError(\n `When you are trying to override existing route, you must send \"override\" parameter when adding that route.`,\n \"OVERRIDE_ROUTE_ERROR\",\n {\n type,\n path\n }\n );\n };\n\n const addDefinedRoute = (inputType: HTTPMethods, path: string): void => {\n const type = (inputType as string).toUpperCase() as HTTPMethods;\n if (!definedRoutes[type]) {\n return;\n } else if (definedRoutes[type].includes(path)) {\n return;\n }\n definedRoutes[type].push(path);\n };\n /**\n * We must attach the server to our internal context if we want to have it accessible.\n */\n const app = fastify({\n ...(params.options || {})\n });\n /**\n * We need to register routes in our system so we can output headers later on and dissallow overriding routes.\n */\n app.addHook(\"onRoute\", route => {\n const method = route.method;\n if (Array.isArray(method)) {\n for (const m of method) {\n addDefinedRoute(m, route.path);\n }\n return;\n }\n addDefinedRoute(method, route.path);\n });\n /**\n *\n */\n app.register(fastifyCookies, {\n parseOptions: {} // options for parsing cookies\n });\n /**\n * Route helpers - mostly for users.\n */\n const routes: ContextRoutes = {\n defined: definedRoutes,\n onPost: (path, handler, options) => {\n throwOnDefinedRoute(\"POST\", path, options);\n app.post(path, handler);\n },\n onGet: (path, handler, options) => {\n throwOnDefinedRoute(\"GET\", path, options);\n app.get(path, handler);\n },\n onOptions: (path, handler, options) => {\n throwOnDefinedRoute(\"OPTIONS\", path, options);\n app.options(path, handler);\n },\n onDelete: (path, handler, options) => {\n throwOnDefinedRoute(\"DELETE\", path, options);\n app.delete(path, handler);\n },\n onPatch: (path, handler, options) => {\n throwOnDefinedRoute(\"PATCH\", path, options);\n app.patch(path, handler);\n },\n onPut: (path, handler, options) => {\n throwOnDefinedRoute(\"PUT\", path, options);\n app.put(path, handler);\n },\n onAll: (path, handler, options) => {\n throwOnDefinedRoute(\"ALL\", path, options);\n app.all(path, handler);\n },\n onHead: (path, handler, options) => {\n throwOnDefinedRoute(\"HEAD\", path, options);\n app.head(path, handler);\n }\n };\n const context = new Context({\n plugins: [\n /**\n * We must have handlerClient by default.\n * And it must be one of the first context plugins applied.\n */\n createHandlerClient(),\n ...(params.plugins || [])\n ],\n /**\n * Inserted via webpack on build time.\n */\n WEBINY_VERSION: process.env.WEBINY_VERSION as string,\n server: app,\n routes\n });\n /**\n * We are attaching our custom context to webiny variable on the fastify app so it is accessible everywhere\n */\n app.decorate(\"webiny\", context);\n\n /**\n * We have few types of triggers:\n * * Events - EventPlugin\n * * Routes - RoutePlugin\n *\n * Routes are registered in fastify but events must be handled in package which implements cloud specific methods.\n */\n const routePlugins = app.webiny.plugins.byType<RoutePlugin>(RoutePlugin.type);\n\n /**\n * Add routes to the system.\n */\n for (const plugin of routePlugins) {\n plugin.cb({\n ...app.webiny.routes,\n context: app.webiny\n });\n }\n\n /**\n * On every request we add default headers, which can be changed later.\n * Also, if it is an options request, we skip everything after this hook and output options headers.\n */\n app.addHook(\"onRequest\", async (request, reply) => {\n const defaultHeaders = getDefaultHeaders(definedRoutes);\n reply.headers(defaultHeaders);\n if (request.method !== \"OPTIONS\") {\n return;\n }\n const raw = reply.code(204).hijack().raw;\n const headers = { ...defaultHeaders, ...OPTIONS_HEADERS };\n for (const key in headers) {\n raw.setHeader(key, headers[key]);\n }\n\n raw.end(\"\");\n });\n\n app.addHook(\"preParsing\", async request => {\n app.webiny.request = request;\n const plugins = app.webiny.plugins.byType<ContextPlugin>(ContextPlugin.type);\n for (const plugin of plugins) {\n await plugin.apply(app.webiny);\n }\n });\n /**\n *\n */\n app.addHook(\"preHandler\", async () => {\n const plugins = app.webiny.plugins.byType<BeforeHandlerPlugin>(BeforeHandlerPlugin.type);\n for (const plugin of plugins) {\n await plugin.apply(app.webiny);\n }\n });\n\n /**\n *\n */\n const preSerialization: preSerializationAsyncHookHandler<any> = async (_, __, payload) => {\n const plugins = app.webiny.plugins.byType<HandlerResultPlugin>(HandlerResultPlugin.type);\n for (const plugin of plugins) {\n await plugin.handle(app.webiny, payload);\n }\n return payload;\n };\n\n app.addHook(\"preSerialization\", preSerialization);\n\n app.addHook(\"onError\", async (_, reply, error) => {\n const plugins = app.webiny.plugins.byType<HandlerErrorPlugin>(HandlerErrorPlugin.type);\n // Log error to cloud, as these can be extremely annoying to debug!\n console.log(\"@webiny/handler\");\n console.log(\n JSON.stringify({\n ...(error || {}),\n message: error?.message,\n code: error?.code\n })\n );\n const handler = middleware(\n plugins.map(pl => {\n return (context: Context, error: Error, next: Function) => {\n return pl.handle(context, error, next);\n };\n })\n );\n await handler(app.webiny, error);\n\n return reply\n .headers({\n \"Cache-Control\": \"no-store\"\n })\n .status(500);\n });\n\n return app;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_types","require","_fastify","_interopRequireDefault","_utils","_Context","_error","_RoutePlugin","_handlerClient","_cookie","_compress","_api","_BeforeHandlerPlugin","_HandlerResultPlugin","_HandlerErrorPlugin","_ModifyFastifyPlugin","_HandlerOnRequestPlugin","_ResponseHeaders","_ModifyResponseHeadersPlugin","_SetDefaultHeaders","_PreHandler","_stringifyError","_ProcessHandlerOnRequestPlugins","_ProcessContextPlugins","_IfNotOptionsRequest","_ProcessBeforeHandlerPlugins","_IfOptionsRequest","_SendEarlyOptionsResponse","_OnRequestTimeoutPlugin","_OnRequestResponseSendPlugin","modifyResponseHeaders","app","request","reply","modifyHeaders","webiny","plugins","byType","ModifyResponseHeadersPlugin","type","replyHeaders","getHeaders","headers","ResponseHeaders","create","forEach","plugin","modify","createHandler","params","definedRoutes","POST","GET","OPTIONS","DELETE","PATCH","PUT","HEAD","COPY","LOCK","MKCOL","MOVE","PROPFIND","PROPPATCH","SEARCH","TRACE","UNLOCK","REPORT","MKCALENDAR","throwOnDefinedRoute","path","options","all","Object","keys","find","k","key","toUpperCase","routes","includes","console","error","JSON","stringify","WebinyError","override","addDefinedRoute","input","push","fastify","bodyLimit","disableRequestLogging","addHook","route","method","Array","isArray","m","register","fastifyCookie","parseOptions","fastifyCompress","global","threshold","onUnsupportedEncoding","encoding","_","code","inflateIfDeflated","defined","onPost","handler","post","onGet","get","onOptions","onDelete","delete","onPatch","patch","onPut","put","onAll","onHead","head","context","PluginsContainer","createHandlerClient","merge","Context","WEBINY_VERSION","process","env","ex","stringifyError","decorate","body","undefined","handlerOnRequestPlugins","HandlerOnRequestPlugin","contextPlugins","ContextPlugin","beforeHandlerPlugins","BeforeHandlerPlugin","modifyHeadersPlugins","preHandler","PreHandler","SetDefaultHeaders","ProcessHandlerOnRequestPlugins","IfNotOptionsRequest","ProcessContextPlugins","ProcessBeforeHandlerPlugins","IfOptionsRequest","SendEarlyOptionsResponse","execute","__","payload","HandlerResultPlugin","name","handle","setErrorHandler","sent","warn","status","send","message","data","HandlerErrorPlugin","log","middleware","map","pl","next","OnRequestResponseSendPlugin","exec","benchmark","output","OnRequestTimeoutPlugin","modifyPlugins","ModifyFastifyPlugin","modifyFastifyPluginName","routePlugins","RoutePlugin","routePluginName","cb","exports"],"sources":["fastify.ts"],"sourcesContent":["import type { PluginCollection } from \"@webiny/plugins/types\";\nimport { PluginsContainer } from \"@webiny/plugins/types\";\nimport type { FastifyInstance, FastifyServerOptions as ServerOptions } from \"fastify\";\nimport fastify from \"fastify\";\nimport type { MiddlewareCallable } from \"@webiny/utils\";\nimport { middleware } from \"@webiny/utils\";\nimport type {\n ContextRoutes,\n DefinedContextRoutes,\n HTTPMethods,\n Reply,\n Request,\n RouteMethodOptions\n} from \"~/types\";\nimport { Context } from \"~/Context\";\nimport WebinyError from \"@webiny/error\";\nimport { RoutePlugin } from \"./plugins/RoutePlugin\";\nimport { createHandlerClient } from \"@webiny/handler-client\";\nimport fastifyCookie from \"@fastify/cookie\";\nimport fastifyCompress from \"@fastify/compress\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { BeforeHandlerPlugin } from \"./plugins/BeforeHandlerPlugin\";\nimport { HandlerResultPlugin } from \"./plugins/HandlerResultPlugin\";\nimport { HandlerErrorPlugin } from \"./plugins/HandlerErrorPlugin\";\nimport { ModifyFastifyPlugin } from \"~/plugins/ModifyFastifyPlugin\";\nimport { HandlerOnRequestPlugin } from \"~/plugins/HandlerOnRequestPlugin\";\nimport type { StandardHeaders } from \"~/ResponseHeaders\";\nimport { ResponseHeaders } from \"~/ResponseHeaders\";\nimport { ModifyResponseHeadersPlugin } from \"~/plugins/ModifyResponseHeadersPlugin\";\nimport { SetDefaultHeaders } from \"./PreHandler/SetDefaultHeaders\";\nimport { PreHandler } from \"./PreHandler/PreHandler\";\nimport { stringifyError } from \"./stringifyError\";\nimport { ProcessHandlerOnRequestPlugins } from \"./PreHandler/ProcessHandlerOnRequestPlugins\";\nimport { ProcessContextPlugins } from \"./PreHandler/ProcessContextPlugins\";\nimport { IfNotOptionsRequest } from \"./PreHandler/IfNotOptionsRequest\";\nimport { ProcessBeforeHandlerPlugins } from \"./PreHandler/ProcessBeforeHandlerPlugins\";\nimport { IfOptionsRequest } from \"./PreHandler/IfOptionsRequest\";\nimport { SendEarlyOptionsResponse } from \"./PreHandler/SendEarlyOptionsResponse\";\nimport { OnRequestTimeoutPlugin } from \"~/plugins/OnRequestTimeoutPlugin.js\";\nimport { OnRequestResponseSendPlugin } from \"~/plugins/OnRequestResponseSendPlugin.js\";\n\nconst modifyResponseHeaders = (app: FastifyInstance, request: Request, reply: Reply) => {\n const modifyHeaders = app.webiny.plugins.byType<ModifyResponseHeadersPlugin>(\n ModifyResponseHeadersPlugin.type\n );\n\n const replyHeaders = reply.getHeaders() as StandardHeaders;\n const headers = ResponseHeaders.create(replyHeaders);\n\n modifyHeaders.forEach(plugin => {\n plugin.modify(request, headers);\n });\n\n reply.headers(headers.getHeaders());\n};\n\nexport interface CreateHandlerParams {\n plugins: PluginCollection | PluginsContainer;\n options?: ServerOptions;\n debug?: boolean;\n}\n\nexport const createHandler = (params: CreateHandlerParams) => {\n const definedRoutes: DefinedContextRoutes = {\n POST: [],\n GET: [],\n OPTIONS: [],\n DELETE: [],\n PATCH: [],\n PUT: [],\n HEAD: [],\n COPY: [],\n LOCK: [],\n MKCOL: [],\n MOVE: [],\n PROPFIND: [],\n PROPPATCH: [],\n SEARCH: [],\n TRACE: [],\n UNLOCK: [],\n REPORT: [],\n MKCALENDAR: []\n };\n\n const throwOnDefinedRoute = (\n type: HTTPMethods | \"ALL\",\n path: string,\n options?: RouteMethodOptions\n ): void => {\n if (type === \"ALL\") {\n const all = Object.keys(definedRoutes).find(k => {\n const key = k.toUpperCase() as HTTPMethods;\n const routes = definedRoutes[key];\n return routes.includes(path);\n });\n if (!all) {\n return;\n }\n console.error(\n `Error while registering onAll route. One of the routes is already defined.`\n );\n console.error(JSON.stringify(all));\n throw new WebinyError(\n `You cannot override a route with onAll() method, please remove unnecessary route from the system.`,\n \"OVERRIDE_ROUTE_ERROR\",\n {\n type,\n path\n }\n );\n } else if (definedRoutes[type].includes(path) === false) {\n return;\n } else if (options?.override === true) {\n return;\n }\n console.error(`Error while trying to override route: [${type}] ${path}`);\n throw new WebinyError(\n `When you are trying to override existing route, you must send \"override\" parameter when adding that route.`,\n \"OVERRIDE_ROUTE_ERROR\",\n {\n type,\n path\n }\n );\n };\n\n const addDefinedRoute = (input: HTTPMethods, path: string): void => {\n const type = input.toUpperCase() as HTTPMethods;\n if (!definedRoutes[type]) {\n return;\n } else if (definedRoutes[type].includes(path)) {\n return;\n }\n definedRoutes[type].push(path);\n };\n\n /**\n * We must attach the server to our internal context if we want to have it accessible.\n */\n const app = fastify({\n bodyLimit: 536870912, // 512MB\n disableRequestLogging: true,\n ...(params.options || {})\n });\n\n /**\n * We need to register routes in our system to output headers later on, and disallow route overriding.\n */\n app.addHook(\"onRoute\", route => {\n const method = route.method as HTTPMethods | HTTPMethods[];\n if (Array.isArray(method)) {\n for (const m of method) {\n addDefinedRoute(m, route.path);\n }\n return;\n }\n addDefinedRoute(method, route.path);\n });\n /**\n * ############################\n * Register the Fastify plugins.\n */\n /**\n * Package @fastify/cookie\n *\n * https://github.com/fastify/fastify-cookie\n */\n app.register(fastifyCookie, {\n parseOptions: {} // options for parsing cookies\n });\n /**\n * Package @fastify/compress\n *\n * https://github.com/fastify/fastify-compress\n */\n app.register(fastifyCompress, {\n global: true,\n threshold: 1024,\n onUnsupportedEncoding: (encoding, _, reply) => {\n reply.code(406);\n return `We do not support the ${encoding} encoding.`;\n },\n inflateIfDeflated: true\n });\n /**\n * Route helpers - mostly for users.\n */\n const routes: ContextRoutes = {\n defined: definedRoutes,\n onPost: (path, handler, options) => {\n throwOnDefinedRoute(\"POST\", path, options);\n app.post(path, handler);\n },\n onGet: (path, handler, options) => {\n throwOnDefinedRoute(\"GET\", path, options);\n app.get(path, handler);\n },\n onOptions: (path, handler, options) => {\n throwOnDefinedRoute(\"OPTIONS\", path, options);\n app.options(path, handler);\n },\n onDelete: (path, handler, options) => {\n throwOnDefinedRoute(\"DELETE\", path, options);\n app.delete(path, handler);\n },\n onPatch: (path, handler, options) => {\n throwOnDefinedRoute(\"PATCH\", path, options);\n app.patch(path, handler);\n },\n onPut: (path, handler, options) => {\n throwOnDefinedRoute(\"PUT\", path, options);\n app.put(path, handler);\n },\n onAll: (path, handler, options) => {\n throwOnDefinedRoute(\"ALL\", path, options);\n app.all(path, handler);\n },\n onHead: (path, handler, options) => {\n throwOnDefinedRoute(\"HEAD\", path, options);\n app.head(path, handler);\n }\n };\n let context: Context;\n\n const plugins = new PluginsContainer([\n /**\n * We must have handlerClient by default.\n * And it must be one of the first context plugins applied.\n */\n createHandlerClient()\n ]);\n plugins.merge(params.plugins || []);\n\n try {\n context = new Context({\n plugins,\n /**\n * Inserted via webpack at build time.\n */\n WEBINY_VERSION: process.env.WEBINY_VERSION as string,\n routes\n });\n } catch (ex) {\n console.error(`Error while constructing the Context.`);\n console.error(stringifyError(ex));\n throw ex;\n }\n\n /**\n * We are attaching our custom context to webiny variable on the fastify app, so it is accessible everywhere.\n */\n app.decorate(\"webiny\", context);\n\n /**\n * With this we ensure that an undefined request body is not parsed on OPTIONS requests,\n * in case there's a `content-type` header set for whatever reason.\n *\n * @see https://fastify.dev/docs/latest/Reference/ContentTypeParser/#content-type-parser\n */\n app.addHook(\"onRequest\", async request => {\n if (request.method === \"OPTIONS\" && request.body === undefined) {\n request.headers[\"content-type\"] = undefined;\n }\n });\n\n /**\n * At this point, request body is properly parsed, and we can execute Webiny business logic.\n * - set default headers\n * - process `HandlerOnRequestPlugin`\n * - if OPTIONS request, exit early\n * - process `ContextPlugin`\n * - process `BeforeHandlerPlugin`\n */\n app.addHook(\"preHandler\", async (request, reply) => {\n app.webiny.request = request;\n app.webiny.reply = reply;\n /**\n * Default code to 200 - so we do not need to set it again.\n * Usually we set errors manually when we use reply.send.\n */\n reply.code(200);\n\n const handlerOnRequestPlugins = app.webiny.plugins.byType<HandlerOnRequestPlugin>(\n HandlerOnRequestPlugin.type\n );\n\n const contextPlugins = app.webiny.plugins.byType<ContextPlugin>(ContextPlugin.type);\n\n const beforeHandlerPlugins = app.webiny.plugins.byType<BeforeHandlerPlugin>(\n BeforeHandlerPlugin.type\n );\n\n const modifyHeadersPlugins = app.webiny.plugins.byType<ModifyResponseHeadersPlugin>(\n ModifyResponseHeadersPlugin.type\n );\n\n const preHandler = new PreHandler([\n new SetDefaultHeaders(definedRoutes),\n new ProcessHandlerOnRequestPlugins(handlerOnRequestPlugins),\n new IfNotOptionsRequest([\n new ProcessContextPlugins(app.webiny, contextPlugins),\n new ProcessBeforeHandlerPlugins(app.webiny, beforeHandlerPlugins)\n ]),\n new IfOptionsRequest([new SendEarlyOptionsResponse(modifyHeadersPlugins)])\n ]);\n\n await preHandler.execute(request, reply, app.webiny);\n });\n\n app.addHook(\"preSerialization\", async (_, __, payload) => {\n const plugins = app.webiny.plugins.byType<HandlerResultPlugin>(HandlerResultPlugin.type);\n let name: string | undefined;\n try {\n for (const plugin of plugins) {\n name = plugin.name;\n await plugin.handle(app.webiny, payload);\n }\n } catch (ex) {\n console.error(\n `Error while running the \"HandlerResultPlugin\" ${\n name ? `(${name})` : \"\"\n } plugin in the preSerialization hook.`\n );\n console.error(stringifyError(ex));\n throw ex;\n }\n return payload;\n });\n\n app.setErrorHandler<WebinyError>(async (error, _, reply) => {\n /**\n * IMPORTANT! Do not send anything if reply was already sent.\n */\n if (reply.sent) {\n console.warn(\"Reply already sent, cannot send the result (handler:setErrorHandler).\");\n return reply;\n }\n return reply\n .status(500)\n .headers({\n \"Cache-Control\": \"no-store\"\n })\n .send(\n /**\n * When we are sending the error in the response, we cannot send the whole error object, as it might contain some sensitive data.\n */\n JSON.stringify({\n message: error.message,\n code: error.code,\n data: error.data\n })\n );\n });\n\n app.addHook(\"onError\", async (_, reply, error: any) => {\n const plugins = app.webiny.plugins.byType<HandlerErrorPlugin>(HandlerErrorPlugin.type);\n /**\n * Log error to cloud, as these can be extremely annoying to debug!\n */\n console.error(\"Logging error in @webiny/handler\");\n try {\n console.error(stringifyError(error));\n } catch (ex) {\n console.warn(\"Could not stringify error:\");\n console.log(error);\n console.error(\"Stringify error:\", ex);\n }\n /**\n * IMPORTANT! Do not send anything if reply was already sent.\n */\n if (!reply.sent) {\n reply\n .status(500)\n .headers({\n \"Cache-Control\": \"no-store\"\n })\n .send(\n /**\n * When we are sending the error in the response, we cannot send the whole error object, as it might contain some sensitive data.\n */\n JSON.stringify({\n message: error.message,\n code: error.code,\n data: error.data\n })\n );\n } else {\n console.warn(\"Reply already sent, cannot send the result (handler:addHook:onError).\");\n }\n\n const handler = middleware(\n plugins.map(pl => {\n return (context: Context, error: Error, next: MiddlewareCallable) => {\n return pl.handle(context, error, next);\n };\n })\n );\n await handler(app.webiny, error);\n\n return reply;\n });\n\n /**\n * Apply response headers modifier plugins.\n */\n app.addHook(\"onSend\", async (request, reply, input) => {\n modifyResponseHeaders(app, request, reply);\n const plugins = app.webiny.plugins.byType<OnRequestResponseSendPlugin>(\n OnRequestResponseSendPlugin.type\n );\n let payload = input;\n for (const plugin of plugins) {\n payload = await plugin.exec(request, reply, payload);\n }\n return payload;\n });\n\n /**\n * We need to output the benchmark results at the end of the request in both response and timeout cases\n */\n app.addHook(\"onResponse\", async () => {\n await context.benchmark.output();\n });\n\n app.addHook(\"onTimeout\", async (request, reply) => {\n const plugins = app.webiny.plugins.byType<OnRequestTimeoutPlugin>(\n OnRequestTimeoutPlugin.type\n );\n for (const plugin of plugins) {\n await plugin.exec(request, reply);\n }\n await context.benchmark.output();\n });\n\n /**\n * With these plugins we give users possibility to do anything they want on our fastify instance.\n */\n const modifyPlugins = app.webiny.plugins.byType<ModifyFastifyPlugin>(ModifyFastifyPlugin.type);\n\n let modifyFastifyPluginName: string | undefined;\n try {\n for (const plugin of modifyPlugins) {\n modifyFastifyPluginName = plugin.name;\n plugin.modify(app);\n }\n } catch (ex) {\n console.error(\n `Error while running the \"ModifyFastifyPlugin\" ${\n modifyFastifyPluginName ? `(${modifyFastifyPluginName})` : \"\"\n } plugin in the end of the \"createHandler\" callable.`\n );\n console.error(stringifyError(ex));\n throw ex;\n }\n\n /**\n * We have few types of triggers:\n * * Events - EventPlugin\n * * Routes - RoutePlugin\n *\n * Routes are registered in fastify but events must be handled in package which implements cloud specific methods.\n */\n const routePlugins = app.webiny.plugins.byType<RoutePlugin>(RoutePlugin.type);\n\n /**\n * Add routes to the system.\n */\n let routePluginName: string | undefined;\n try {\n for (const plugin of routePlugins) {\n routePluginName = plugin.name;\n plugin.cb({\n ...app.webiny.routes,\n context: app.webiny\n });\n }\n } catch (ex) {\n console.error(\n `Error while running the \"RoutePlugin\" ${\n routePluginName ? `(${routePluginName})` : \"\"\n } plugin in the beginning of the \"createHandler\" callable.`\n );\n console.error(stringifyError(ex));\n throw ex;\n }\n\n return app;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/index.d.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
import "./suppressPunycodeWarnings";
|
|
1
2
|
export * from "./fastify";
|
|
2
|
-
export * from "@webiny/api/plugins/ContextPlugin";
|
|
3
3
|
export * from "./Context";
|
|
4
|
+
export * from "./ResponseHeaders";
|
|
4
5
|
export * from "./plugins/EventPlugin";
|
|
5
6
|
export * from "./plugins/RoutePlugin";
|
|
6
7
|
export * from "./plugins/BeforeHandlerPlugin";
|
|
7
8
|
export * from "./plugins/HandlerErrorPlugin";
|
|
8
9
|
export * from "./plugins/HandlerResultPlugin";
|
|
10
|
+
export * from "./plugins/HandlerOnRequestPlugin";
|
|
11
|
+
export * from "./plugins/ModifyFastifyPlugin";
|
|
12
|
+
export * from "./plugins/ModifyResponseHeadersPlugin";
|
|
13
|
+
export * from "./plugins/OnRequestResponseSendPlugin.js";
|
|
14
|
+
export * from "./plugins/OnRequestTimeoutPlugin.js";
|
|
15
|
+
export * from "./ResponseHeaders";
|