@webiny/handler 0.0.0-unstable.990c3ab1b6 → 0.0.0-unstable.aad28a72ae

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.js CHANGED
@@ -1,17 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.Context = void 0;
9
+
8
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
9
12
  var _api = require("@webiny/api");
13
+
10
14
  class Context extends _api.Context {
11
15
  // @ts-ignore
12
-
13
16
  // @ts-ignore
14
-
15
17
  constructor(params) {
16
18
  super(params);
17
19
  (0, _defineProperty2.default)(this, "server", void 0);
@@ -21,5 +23,7 @@ class Context extends _api.Context {
21
23
  this.server = params.server;
22
24
  this.routes = params.routes;
23
25
  }
26
+
24
27
  }
28
+
25
29
  exports.Context = Context;
package/Context.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["Context","BaseContext","constructor","params","server","routes"],"sources":["Context.ts"],"sourcesContent":["import { Context as BaseContext, ContextParams as BaseContextParams } from \"@webiny/api\";\nimport { Context as BaseContextType } from \"~/types\";\n\nexport interface ContextParams extends BaseContextParams {\n server: BaseContextType[\"server\"];\n routes: BaseContextType[\"routes\"];\n}\n\nexport class Context extends BaseContext implements BaseContextType {\n public readonly server: BaseContextType[\"server\"];\n public readonly routes: BaseContextType[\"routes\"];\n // @ts-ignore\n public handlerClient: BaseContextType[\"handlerClient\"];\n // @ts-ignore\n public request: BaseContextType[\"request\"];\n\n public constructor(params: ContextParams) {\n super(params);\n this.server = params.server;\n this.routes = params.routes;\n }\n}\n"],"mappings":";;;;;;;;AAAA;AAQO,MAAMA,OAAO,SAASC,YAAW,CAA4B;EAGhE;;EAEA;;EAGOC,WAAW,CAACC,MAAqB,EAAE;IACtC,KAAK,CAACA,MAAM,CAAC;IAAC;IAAA;IAAA;IAAA;IACd,IAAI,CAACC,MAAM,GAAGD,MAAM,CAACC,MAAM;IAC3B,IAAI,CAACC,MAAM,GAAGF,MAAM,CAACE,MAAM;EAC/B;AACJ;AAAC"}
1
+ {"version":3,"names":["Context","BaseContext","constructor","params","server","routes"],"sources":["Context.ts"],"sourcesContent":["import { Context as BaseContext, ContextParams as BaseContextParams } from \"@webiny/api\";\nimport { Context as BaseContextType } from \"~/types\";\n\nexport interface ContextParams extends BaseContextParams {\n server: BaseContextType[\"server\"];\n routes: BaseContextType[\"routes\"];\n}\n\nexport class Context extends BaseContext implements BaseContextType {\n public readonly server: BaseContextType[\"server\"];\n public readonly routes: BaseContextType[\"routes\"];\n // @ts-ignore\n public handlerClient: BaseContextType[\"handlerClient\"];\n // @ts-ignore\n public request: BaseContextType[\"request\"];\n\n public constructor(params: ContextParams) {\n super(params);\n this.server = params.server;\n this.routes = params.routes;\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAQO,MAAMA,OAAN,SAAsBC,YAAtB,CAA6D;EAGhE;EAEA;EAGOC,WAAW,CAACC,MAAD,EAAwB;IACtC,MAAMA,MAAN;IADsC;IAAA;IAAA;IAAA;IAEtC,KAAKC,MAAL,GAAcD,MAAM,CAACC,MAArB;IACA,KAAKC,MAAL,GAAcF,MAAM,CAACE,MAArB;EACH;;AAZ+D"}
package/fastify.js CHANGED
@@ -1,23 +1,40 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.createHandler = void 0;
9
+
8
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
9
12
  var _fastify = _interopRequireDefault(require("fastify"));
13
+
10
14
  var _utils = require("@webiny/utils");
15
+
11
16
  var _Context = require("./Context");
17
+
12
18
  var _error = _interopRequireDefault(require("@webiny/error"));
19
+
13
20
  var _RoutePlugin = require("./plugins/RoutePlugin");
21
+
14
22
  var _handlerClient = require("@webiny/handler-client");
23
+
15
24
  var _cookie = _interopRequireDefault(require("@fastify/cookie"));
25
+
26
+ var _compress = _interopRequireDefault(require("@fastify/compress"));
27
+
16
28
  var _middleware = require("./middleware");
29
+
17
30
  var _api = require("@webiny/api");
31
+
18
32
  var _BeforeHandlerPlugin = require("./plugins/BeforeHandlerPlugin");
33
+
19
34
  var _HandlerResultPlugin = require("./plugins/HandlerResultPlugin");
35
+
20
36
  var _HandlerErrorPlugin = require("./plugins/HandlerErrorPlugin");
37
+
21
38
  const DEFAULT_HEADERS = (0, _objectSpread2.default)({
22
39
  "Cache-Control": "no-store",
23
40
  "Content-Type": "application/json; charset=utf-8",
@@ -25,31 +42,38 @@ const DEFAULT_HEADERS = (0, _objectSpread2.default)({
25
42
  "Access-Control-Allow-Headers": "*",
26
43
  "Access-Control-Allow-Methods": "OPTIONS,POST,GET,DELETE,PUT,PATCH"
27
44
  }, (0, _utils.getWebinyVersionHeaders)());
45
+
28
46
  const getDefaultHeaders = routes => {
29
47
  /**
30
48
  * If we are accepting all headers, just output that one.
31
49
  */
32
50
  const keys = Object.keys(routes);
33
51
  const all = keys.every(key => routes[key].length > 0);
52
+
34
53
  if (all) {
35
54
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, DEFAULT_HEADERS), {}, {
36
55
  "Access-Control-Allow-Methods": "*"
37
56
  });
38
57
  }
58
+
39
59
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, DEFAULT_HEADERS), {}, {
40
60
  "Access-Control-Allow-Methods": keys.filter(key => {
41
61
  const type = key;
62
+
42
63
  if (!routes[type] || Array.isArray(routes[type]) === false) {
43
64
  return false;
44
65
  }
66
+
45
67
  return routes[type].length > 0;
46
68
  }).sort().join(",")
47
69
  });
48
70
  };
71
+
49
72
  const OPTIONS_HEADERS = {
50
73
  "Access-Control-Max-Age": "86400",
51
74
  "Cache-Control": "public, max-age=86400"
52
75
  };
76
+
53
77
  const createHandler = params => {
54
78
  const definedRoutes = {
55
79
  POST: [],
@@ -69,15 +93,18 @@ const createHandler = params => {
69
93
  TRACE: [],
70
94
  UNLOCK: []
71
95
  };
96
+
72
97
  const throwOnDefinedRoute = (type, path, options) => {
73
98
  if (type === "ALL") {
74
99
  const all = Object.keys(definedRoutes).some(key => {
75
100
  const routes = definedRoutes[key];
76
101
  return routes.includes(path);
77
102
  });
103
+
78
104
  if (!all) {
79
105
  return;
80
106
  }
107
+
81
108
  throw new _error.default(`You cannot override a route with onAll() method, please remove unnecessary route from the system.`, "OVERRIDE_ROUTE_ERROR", {
82
109
  type,
83
110
  path
@@ -87,46 +114,81 @@ const createHandler = params => {
87
114
  } else if ((options === null || options === void 0 ? void 0 : options.override) === true) {
88
115
  return;
89
116
  }
117
+
90
118
  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
119
  type,
92
120
  path
93
121
  });
94
122
  };
123
+
95
124
  const addDefinedRoute = (inputType, path) => {
96
125
  const type = inputType.toUpperCase();
126
+
97
127
  if (!definedRoutes[type]) {
98
128
  return;
99
129
  } else if (definedRoutes[type].includes(path)) {
100
130
  return;
101
131
  }
132
+
102
133
  definedRoutes[type].push(path);
103
134
  };
104
135
  /**
105
136
  * We must attach the server to our internal context if we want to have it accessible.
106
137
  */
138
+
139
+
107
140
  const app = (0, _fastify.default)((0, _objectSpread2.default)({}, params.options || {}));
108
141
  /**
109
142
  * We need to register routes in our system so we can output headers later on and dissallow overriding routes.
110
143
  */
144
+
111
145
  app.addHook("onRoute", route => {
112
146
  const method = route.method;
147
+
113
148
  if (Array.isArray(method)) {
114
149
  for (const m of method) {
115
150
  addDefinedRoute(m, route.path);
116
151
  }
152
+
117
153
  return;
118
154
  }
155
+
119
156
  addDefinedRoute(method, route.path);
120
157
  });
121
158
  /**
159
+ * ############################
160
+ * Register the Fastify plugins.
161
+ */
162
+
163
+ /**
164
+ * Package @fastify/cookie
122
165
  *
166
+ * https://github.com/fastify/fastify-cookie
123
167
  */
168
+
124
169
  app.register(_cookie.default, {
125
170
  parseOptions: {} // options for parsing cookies
171
+
172
+ });
173
+ /**
174
+ * Package @fastify/compress
175
+ *
176
+ * https://github.com/fastify/fastify-compress
177
+ */
178
+
179
+ app.register(_compress.default, {
180
+ global: true,
181
+ threshold: 1024,
182
+ onUnsupportedEncoding: (encoding, _, reply) => {
183
+ reply.code(406);
184
+ return `We do not support the ${encoding} encoding.`;
185
+ },
186
+ inflateIfDeflated: true
126
187
  });
127
188
  /**
128
189
  * Route helpers - mostly for users.
129
190
  */
191
+
130
192
  const routes = {
131
193
  defined: definedRoutes,
132
194
  onPost: (path, handler, options) => {
@@ -169,6 +231,7 @@ const createHandler = params => {
169
231
  * And it must be one of the first context plugins applied.
170
232
  */
171
233
  (0, _handlerClient.createHandlerClient)(), ...(params.plugins || [])],
234
+
172
235
  /**
173
236
  * Inserted via webpack on build time.
174
237
  */
@@ -179,8 +242,8 @@ const createHandler = params => {
179
242
  /**
180
243
  * We are attaching our custom context to webiny variable on the fastify app so it is accessible everywhere
181
244
  */
182
- app.decorate("webiny", context);
183
245
 
246
+ app.decorate("webiny", context);
184
247
  /**
185
248
  * We have few types of triggers:
186
249
  * * Events - EventPlugin
@@ -188,37 +251,44 @@ const createHandler = params => {
188
251
  *
189
252
  * Routes are registered in fastify but events must be handled in package which implements cloud specific methods.
190
253
  */
191
- const routePlugins = app.webiny.plugins.byType(_RoutePlugin.RoutePlugin.type);
192
254
 
255
+ const routePlugins = app.webiny.plugins.byType(_RoutePlugin.RoutePlugin.type);
193
256
  /**
194
257
  * Add routes to the system.
195
258
  */
259
+
196
260
  for (const plugin of routePlugins) {
197
261
  plugin.cb((0, _objectSpread2.default)((0, _objectSpread2.default)({}, app.webiny.routes), {}, {
198
262
  context: app.webiny
199
263
  }));
200
264
  }
201
-
202
265
  /**
203
266
  * On every request we add default headers, which can be changed later.
204
267
  * Also, if it is an options request, we skip everything after this hook and output options headers.
205
268
  */
269
+
270
+
206
271
  app.addHook("onRequest", async (request, reply) => {
207
272
  const defaultHeaders = getDefaultHeaders(definedRoutes);
208
273
  reply.headers(defaultHeaders);
274
+
209
275
  if (request.method !== "OPTIONS") {
210
276
  return;
211
277
  }
278
+
212
279
  const raw = reply.code(204).hijack().raw;
213
280
  const headers = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, defaultHeaders), OPTIONS_HEADERS);
281
+
214
282
  for (const key in headers) {
215
283
  raw.setHeader(key, headers[key]);
216
284
  }
285
+
217
286
  raw.end("");
218
287
  });
219
288
  app.addHook("preParsing", async request => {
220
289
  app.webiny.request = request;
221
290
  const plugins = app.webiny.plugins.byType(_api.ContextPlugin.type);
291
+
222
292
  for (const plugin of plugins) {
223
293
  await plugin.apply(app.webiny);
224
294
  }
@@ -226,27 +296,32 @@ const createHandler = params => {
226
296
  /**
227
297
  *
228
298
  */
299
+
229
300
  app.addHook("preHandler", async () => {
230
301
  const plugins = app.webiny.plugins.byType(_BeforeHandlerPlugin.BeforeHandlerPlugin.type);
302
+
231
303
  for (const plugin of plugins) {
232
304
  await plugin.apply(app.webiny);
233
305
  }
234
306
  });
235
-
236
307
  /**
237
308
  *
238
309
  */
310
+
239
311
  const preSerialization = async (_, __, payload) => {
240
312
  const plugins = app.webiny.plugins.byType(_HandlerResultPlugin.HandlerResultPlugin.type);
313
+
241
314
  for (const plugin of plugins) {
242
315
  await plugin.handle(app.webiny, payload);
243
316
  }
317
+
244
318
  return payload;
245
319
  };
320
+
246
321
  app.addHook("preSerialization", preSerialization);
247
322
  app.addHook("onError", async (_, reply, error) => {
248
- const plugins = app.webiny.plugins.byType(_HandlerErrorPlugin.HandlerErrorPlugin.type);
249
- // Log error to cloud, as these can be extremely annoying to debug!
323
+ const plugins = app.webiny.plugins.byType(_HandlerErrorPlugin.HandlerErrorPlugin.type); // Log error to cloud, as these can be extremely annoying to debug!
324
+
250
325
  console.log("@webiny/handler");
251
326
  console.log(JSON.stringify((0, _objectSpread2.default)((0, _objectSpread2.default)({}, error || {}), {}, {
252
327
  message: error === null || error === void 0 ? void 0 : error.message,
@@ -264,4 +339,5 @@ const createHandler = params => {
264
339
  });
265
340
  return app;
266
341
  };
342
+
267
343
  exports.createHandler = createHandler;
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":["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","fastifyCookie","parseOptions","fastifyCompress","global","threshold","onUnsupportedEncoding","encoding","_","reply","code","inflateIfDeflated","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","defaultHeaders","headers","raw","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 fastifyCookie from \"@fastify/cookie\";\nimport fastifyCompress from \"@fastify/compress\";\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 * 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 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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"}
package/index.js CHANGED
@@ -3,7 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+
6
7
  var _fastify = require("./fastify");
8
+
7
9
  Object.keys(_fastify).forEach(function (key) {
8
10
  if (key === "default" || key === "__esModule") return;
9
11
  if (key in exports && exports[key] === _fastify[key]) return;
@@ -14,7 +16,9 @@ Object.keys(_fastify).forEach(function (key) {
14
16
  }
15
17
  });
16
18
  });
19
+
17
20
  var _ContextPlugin = require("@webiny/api/plugins/ContextPlugin");
21
+
18
22
  Object.keys(_ContextPlugin).forEach(function (key) {
19
23
  if (key === "default" || key === "__esModule") return;
20
24
  if (key in exports && exports[key] === _ContextPlugin[key]) return;
@@ -25,7 +29,9 @@ Object.keys(_ContextPlugin).forEach(function (key) {
25
29
  }
26
30
  });
27
31
  });
32
+
28
33
  var _Context = require("./Context");
34
+
29
35
  Object.keys(_Context).forEach(function (key) {
30
36
  if (key === "default" || key === "__esModule") return;
31
37
  if (key in exports && exports[key] === _Context[key]) return;
@@ -36,7 +42,9 @@ Object.keys(_Context).forEach(function (key) {
36
42
  }
37
43
  });
38
44
  });
45
+
39
46
  var _EventPlugin = require("./plugins/EventPlugin");
47
+
40
48
  Object.keys(_EventPlugin).forEach(function (key) {
41
49
  if (key === "default" || key === "__esModule") return;
42
50
  if (key in exports && exports[key] === _EventPlugin[key]) return;
@@ -47,7 +55,9 @@ Object.keys(_EventPlugin).forEach(function (key) {
47
55
  }
48
56
  });
49
57
  });
58
+
50
59
  var _RoutePlugin = require("./plugins/RoutePlugin");
60
+
51
61
  Object.keys(_RoutePlugin).forEach(function (key) {
52
62
  if (key === "default" || key === "__esModule") return;
53
63
  if (key in exports && exports[key] === _RoutePlugin[key]) return;
@@ -58,7 +68,9 @@ Object.keys(_RoutePlugin).forEach(function (key) {
58
68
  }
59
69
  });
60
70
  });
71
+
61
72
  var _BeforeHandlerPlugin = require("./plugins/BeforeHandlerPlugin");
73
+
62
74
  Object.keys(_BeforeHandlerPlugin).forEach(function (key) {
63
75
  if (key === "default" || key === "__esModule") return;
64
76
  if (key in exports && exports[key] === _BeforeHandlerPlugin[key]) return;
@@ -69,7 +81,9 @@ Object.keys(_BeforeHandlerPlugin).forEach(function (key) {
69
81
  }
70
82
  });
71
83
  });
84
+
72
85
  var _HandlerErrorPlugin = require("./plugins/HandlerErrorPlugin");
86
+
73
87
  Object.keys(_HandlerErrorPlugin).forEach(function (key) {
74
88
  if (key === "default" || key === "__esModule") return;
75
89
  if (key in exports && exports[key] === _HandlerErrorPlugin[key]) return;
@@ -80,7 +94,9 @@ Object.keys(_HandlerErrorPlugin).forEach(function (key) {
80
94
  }
81
95
  });
82
96
  });
97
+
83
98
  var _HandlerResultPlugin = require("./plugins/HandlerResultPlugin");
99
+
84
100
  Object.keys(_HandlerResultPlugin).forEach(function (key) {
85
101
  if (key === "default" || key === "__esModule") return;
86
102
  if (key in exports && exports[key] === _HandlerResultPlugin[key]) return;
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"~/fastify\";\nexport * from \"@webiny/api/plugins/ContextPlugin\";\nexport * from \"~/Context\";\nexport * from \"~/plugins/EventPlugin\";\nexport * from \"~/plugins/RoutePlugin\";\nexport * from \"~/plugins/BeforeHandlerPlugin\";\nexport * from \"~/plugins/HandlerErrorPlugin\";\nexport * from \"~/plugins/HandlerResultPlugin\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"~/fastify\";\nexport * from \"@webiny/api/plugins/ContextPlugin\";\nexport * from \"~/Context\";\nexport * from \"~/plugins/EventPlugin\";\nexport * from \"~/plugins/RoutePlugin\";\nexport * from \"~/plugins/BeforeHandlerPlugin\";\nexport * from \"~/plugins/HandlerErrorPlugin\";\nexport * from \"~/plugins/HandlerResultPlugin\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
package/middleware.js CHANGED
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.middleware = void 0;
7
+
7
8
  /**
8
9
  * Compose a single middleware from the array of middleware functions
9
10
  */
@@ -11,19 +12,22 @@ const middleware = (functions = []) => {
11
12
  return (...args) => {
12
13
  if (!functions.length) {
13
14
  return Promise.resolve();
14
- }
15
+ } // Create a clone of function chain to prevent modifying the original array with `shift()`
16
+
15
17
 
16
- // Create a clone of function chain to prevent modifying the original array with `shift()`
17
18
  const chain = [...functions];
18
19
  return new Promise((parentResolve, parentReject) => {
19
20
  const next = async () => {
20
21
  const fn = chain.shift();
22
+
21
23
  if (!fn) {
22
24
  return Promise.resolve();
23
25
  }
26
+
24
27
  return new Promise(async (resolve, reject) => {
25
28
  try {
26
29
  const result = await fn(...args, resolve);
30
+
27
31
  if (typeof result !== "undefined") {
28
32
  return parentResolve(result);
29
33
  }
@@ -38,8 +42,10 @@ const middleware = (functions = []) => {
38
42
  parentReject(e);
39
43
  });
40
44
  };
45
+
41
46
  return next();
42
47
  });
43
48
  };
44
49
  };
50
+
45
51
  exports.middleware = middleware;
package/middleware.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["middleware","functions","args","length","Promise","resolve","chain","parentResolve","parentReject","next","fn","shift","reject","result","e","then","catch"],"sources":["middleware.ts"],"sourcesContent":["/**\n * Compose a single middleware from the array of middleware functions\n */\nexport const middleware = (functions: Function[] = []): Function => {\n return (...args: string[]): Promise<any> => {\n if (!functions.length) {\n return Promise.resolve();\n }\n\n // Create a clone of function chain to prevent modifying the original array with `shift()`\n const chain = [...functions];\n return new Promise((parentResolve: any, parentReject) => {\n const next = async (): Promise<any> => {\n const fn = chain.shift();\n if (!fn) {\n return Promise.resolve();\n }\n\n return new Promise(async (resolve, reject) => {\n try {\n const result = await fn(...args, resolve);\n if (typeof result !== \"undefined\") {\n return parentResolve(result);\n }\n } catch (e) {\n reject(e);\n }\n })\n .then(() => {\n return next();\n })\n .then(() => {\n parentResolve(...args);\n })\n .catch(e => {\n parentReject(e);\n });\n };\n\n return next();\n });\n };\n};\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACO,MAAMA,UAAU,GAAG,CAACC,SAAqB,GAAG,EAAE,KAAe;EAChE,OAAO,CAAC,GAAGC,IAAc,KAAmB;IACxC,IAAI,CAACD,SAAS,CAACE,MAAM,EAAE;MACnB,OAAOC,OAAO,CAACC,OAAO,EAAE;IAC5B;;IAEA;IACA,MAAMC,KAAK,GAAG,CAAC,GAAGL,SAAS,CAAC;IAC5B,OAAO,IAAIG,OAAO,CAAC,CAACG,aAAkB,EAAEC,YAAY,KAAK;MACrD,MAAMC,IAAI,GAAG,YAA0B;QACnC,MAAMC,EAAE,GAAGJ,KAAK,CAACK,KAAK,EAAE;QACxB,IAAI,CAACD,EAAE,EAAE;UACL,OAAON,OAAO,CAACC,OAAO,EAAE;QAC5B;QAEA,OAAO,IAAID,OAAO,CAAC,OAAOC,OAAO,EAAEO,MAAM,KAAK;UAC1C,IAAI;YACA,MAAMC,MAAM,GAAG,MAAMH,EAAE,CAAC,GAAGR,IAAI,EAAEG,OAAO,CAAC;YACzC,IAAI,OAAOQ,MAAM,KAAK,WAAW,EAAE;cAC/B,OAAON,aAAa,CAACM,MAAM,CAAC;YAChC;UACJ,CAAC,CAAC,OAAOC,CAAC,EAAE;YACRF,MAAM,CAACE,CAAC,CAAC;UACb;QACJ,CAAC,CAAC,CACGC,IAAI,CAAC,MAAM;UACR,OAAON,IAAI,EAAE;QACjB,CAAC,CAAC,CACDM,IAAI,CAAC,MAAM;UACRR,aAAa,CAAC,GAAGL,IAAI,CAAC;QAC1B,CAAC,CAAC,CACDc,KAAK,CAACF,CAAC,IAAI;UACRN,YAAY,CAACM,CAAC,CAAC;QACnB,CAAC,CAAC;MACV,CAAC;MAED,OAAOL,IAAI,EAAE;IACjB,CAAC,CAAC;EACN,CAAC;AACL,CAAC;AAAC"}
1
+ {"version":3,"names":["middleware","functions","args","length","Promise","resolve","chain","parentResolve","parentReject","next","fn","shift","reject","result","e","then","catch"],"sources":["middleware.ts"],"sourcesContent":["/**\n * Compose a single middleware from the array of middleware functions\n */\nexport const middleware = (functions: Function[] = []): Function => {\n return (...args: string[]): Promise<any> => {\n if (!functions.length) {\n return Promise.resolve();\n }\n\n // Create a clone of function chain to prevent modifying the original array with `shift()`\n const chain = [...functions];\n return new Promise((parentResolve: any, parentReject) => {\n const next = async (): Promise<any> => {\n const fn = chain.shift();\n if (!fn) {\n return Promise.resolve();\n }\n\n return new Promise(async (resolve, reject) => {\n try {\n const result = await fn(...args, resolve);\n if (typeof result !== \"undefined\") {\n return parentResolve(result);\n }\n } catch (e) {\n reject(e);\n }\n })\n .then(() => {\n return next();\n })\n .then(() => {\n parentResolve(...args);\n })\n .catch(e => {\n parentReject(e);\n });\n };\n\n return next();\n });\n };\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACO,MAAMA,UAAU,GAAG,CAACC,SAAqB,GAAG,EAAzB,KAA0C;EAChE,OAAO,CAAC,GAAGC,IAAJ,KAAqC;IACxC,IAAI,CAACD,SAAS,CAACE,MAAf,EAAuB;MACnB,OAAOC,OAAO,CAACC,OAAR,EAAP;IACH,CAHuC,CAKxC;;;IACA,MAAMC,KAAK,GAAG,CAAC,GAAGL,SAAJ,CAAd;IACA,OAAO,IAAIG,OAAJ,CAAY,CAACG,aAAD,EAAqBC,YAArB,KAAsC;MACrD,MAAMC,IAAI,GAAG,YAA0B;QACnC,MAAMC,EAAE,GAAGJ,KAAK,CAACK,KAAN,EAAX;;QACA,IAAI,CAACD,EAAL,EAAS;UACL,OAAON,OAAO,CAACC,OAAR,EAAP;QACH;;QAED,OAAO,IAAID,OAAJ,CAAY,OAAOC,OAAP,EAAgBO,MAAhB,KAA2B;UAC1C,IAAI;YACA,MAAMC,MAAM,GAAG,MAAMH,EAAE,CAAC,GAAGR,IAAJ,EAAUG,OAAV,CAAvB;;YACA,IAAI,OAAOQ,MAAP,KAAkB,WAAtB,EAAmC;cAC/B,OAAON,aAAa,CAACM,MAAD,CAApB;YACH;UACJ,CALD,CAKE,OAAOC,CAAP,EAAU;YACRF,MAAM,CAACE,CAAD,CAAN;UACH;QACJ,CATM,EAUFC,IAVE,CAUG,MAAM;UACR,OAAON,IAAI,EAAX;QACH,CAZE,EAaFM,IAbE,CAaG,MAAM;UACRR,aAAa,CAAC,GAAGL,IAAJ,CAAb;QACH,CAfE,EAgBFc,KAhBE,CAgBIF,CAAC,IAAI;UACRN,YAAY,CAACM,CAAD,CAAZ;QACH,CAlBE,CAAP;MAmBH,CAzBD;;MA2BA,OAAOL,IAAI,EAAX;IACH,CA7BM,CAAP;EA8BH,CArCD;AAsCH,CAvCM"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/handler",
3
- "version": "0.0.0-unstable.990c3ab1b6",
3
+ "version": "0.0.0-unstable.aad28a72ae",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,22 +12,23 @@
12
12
  ],
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
- "@babel/runtime": "7.20.1",
15
+ "@babel/runtime": "7.19.0",
16
+ "@fastify/compress": "6.2.0",
16
17
  "@fastify/cookie": "8.3.0",
17
- "@webiny/api": "0.0.0-unstable.990c3ab1b6",
18
- "@webiny/error": "0.0.0-unstable.990c3ab1b6",
19
- "@webiny/handler-client": "0.0.0-unstable.990c3ab1b6",
20
- "@webiny/plugins": "0.0.0-unstable.990c3ab1b6",
21
- "@webiny/utils": "0.0.0-unstable.990c3ab1b6",
22
- "fastify": "4.10.2"
18
+ "@webiny/api": "0.0.0-unstable.aad28a72ae",
19
+ "@webiny/error": "0.0.0-unstable.aad28a72ae",
20
+ "@webiny/handler-client": "0.0.0-unstable.aad28a72ae",
21
+ "@webiny/plugins": "0.0.0-unstable.aad28a72ae",
22
+ "@webiny/utils": "0.0.0-unstable.aad28a72ae",
23
+ "fastify": "4.11.0"
23
24
  },
24
25
  "devDependencies": {
25
26
  "@babel/cli": "^7.19.3",
26
27
  "@babel/core": "^7.19.3",
27
28
  "@babel/preset-env": "^7.19.4",
28
29
  "@babel/preset-typescript": "^7.18.6",
29
- "@webiny/cli": "^0.0.0-unstable.990c3ab1b6",
30
- "@webiny/project-utils": "^0.0.0-unstable.990c3ab1b6",
30
+ "@webiny/cli": "^0.0.0-unstable.aad28a72ae",
31
+ "@webiny/project-utils": "^0.0.0-unstable.aad28a72ae",
31
32
  "babel-plugin-lodash": "^3.3.4",
32
33
  "merge": "^1.2.1",
33
34
  "rimraf": "^3.0.2",
@@ -42,5 +43,5 @@
42
43
  "build": "yarn webiny run build",
43
44
  "watch": "yarn webiny run watch"
44
45
  },
45
- "gitHead": "87e7b4d0a643f65b31d029d6bf2a81902fb940a8"
46
+ "gitHead": "aad28a72ae72f19b80a3196d2b4439399acc67ad"
46
47
  }
@@ -1,28 +1,38 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.createBeforeHandlerPlugin = exports.BeforeHandlerPlugin = void 0;
9
+
8
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
9
12
  var _plugins = require("@webiny/plugins");
13
+
10
14
  class BeforeHandlerPlugin extends _plugins.Plugin {
11
15
  constructor(callable) {
12
16
  super();
13
17
  (0, _defineProperty2.default)(this, "_callable", void 0);
14
18
  this._callable = callable;
15
19
  }
20
+
16
21
  async apply(context) {
17
22
  if (typeof this._callable !== "function") {
18
23
  throw Error(`Missing callable in BeforeHandlerPlugin! Either pass a callable to plugin constructor or extend the plugin and override the "apply" method.`);
19
24
  }
25
+
20
26
  return this._callable(context);
21
27
  }
28
+
22
29
  }
30
+
23
31
  exports.BeforeHandlerPlugin = BeforeHandlerPlugin;
24
32
  (0, _defineProperty2.default)(BeforeHandlerPlugin, "type", "before-handler");
33
+
25
34
  const createBeforeHandlerPlugin = callable => {
26
35
  return new BeforeHandlerPlugin(callable);
27
36
  };
37
+
28
38
  exports.createBeforeHandlerPlugin = createBeforeHandlerPlugin;
@@ -1 +1 @@
1
- {"version":3,"names":["BeforeHandlerPlugin","Plugin","constructor","callable","_callable","apply","context","Error","createBeforeHandlerPlugin"],"sources":["BeforeHandlerPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { Context } from \"~/types\";\n\nexport interface BeforeHandlerCallable<T extends Context = Context> {\n (context: T): void | Promise<void>;\n}\n\nexport class BeforeHandlerPlugin<T extends Context = Context> extends Plugin {\n public static override readonly type: string = \"before-handler\";\n private readonly _callable: BeforeHandlerCallable<T>;\n\n constructor(callable: BeforeHandlerCallable<T>) {\n super();\n this._callable = callable;\n }\n\n public async apply(context: T): Promise<void> {\n if (typeof this._callable !== \"function\") {\n throw Error(\n `Missing callable in BeforeHandlerPlugin! Either pass a callable to plugin constructor or extend the plugin and override the \"apply\" method.`\n );\n }\n\n return this._callable(context);\n }\n}\n\nexport const createBeforeHandlerPlugin = <T extends Context = Context>(\n callable: BeforeHandlerCallable<T>\n): BeforeHandlerPlugin<T> => {\n return new BeforeHandlerPlugin<T>(callable);\n};\n"],"mappings":";;;;;;;;AAAA;AAOO,MAAMA,mBAAmB,SAAsCC,eAAM,CAAC;EAIzEC,WAAW,CAACC,QAAkC,EAAE;IAC5C,KAAK,EAAE;IAAC;IACR,IAAI,CAACC,SAAS,GAAGD,QAAQ;EAC7B;EAEA,MAAaE,KAAK,CAACC,OAAU,EAAiB;IAC1C,IAAI,OAAO,IAAI,CAACF,SAAS,KAAK,UAAU,EAAE;MACtC,MAAMG,KAAK,CACN,6IAA4I,CAChJ;IACL;IAEA,OAAO,IAAI,CAACH,SAAS,CAACE,OAAO,CAAC;EAClC;AACJ;AAAC;AAAA,8BAlBYN,mBAAmB,UACmB,gBAAgB;AAmB5D,MAAMQ,yBAAyB,GAClCL,QAAkC,IACT;EACzB,OAAO,IAAIH,mBAAmB,CAAIG,QAAQ,CAAC;AAC/C,CAAC;AAAC"}
1
+ {"version":3,"names":["BeforeHandlerPlugin","Plugin","constructor","callable","_callable","apply","context","Error","createBeforeHandlerPlugin"],"sources":["BeforeHandlerPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { Context } from \"~/types\";\n\nexport interface BeforeHandlerCallable<T extends Context = Context> {\n (context: T): void | Promise<void>;\n}\n\nexport class BeforeHandlerPlugin<T extends Context = Context> extends Plugin {\n public static override readonly type: string = \"before-handler\";\n private readonly _callable: BeforeHandlerCallable<T>;\n\n constructor(callable: BeforeHandlerCallable<T>) {\n super();\n this._callable = callable;\n }\n\n public async apply(context: T): Promise<void> {\n if (typeof this._callable !== \"function\") {\n throw Error(\n `Missing callable in BeforeHandlerPlugin! Either pass a callable to plugin constructor or extend the plugin and override the \"apply\" method.`\n );\n }\n\n return this._callable(context);\n }\n}\n\nexport const createBeforeHandlerPlugin = <T extends Context = Context>(\n callable: BeforeHandlerCallable<T>\n): BeforeHandlerPlugin<T> => {\n return new BeforeHandlerPlugin<T>(callable);\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAOO,MAAMA,mBAAN,SAA+DC,eAA/D,CAAsE;EAIzEC,WAAW,CAACC,QAAD,EAAqC;IAC5C;IAD4C;IAE5C,KAAKC,SAAL,GAAiBD,QAAjB;EACH;;EAEiB,MAALE,KAAK,CAACC,OAAD,EAA4B;IAC1C,IAAI,OAAO,KAAKF,SAAZ,KAA0B,UAA9B,EAA0C;MACtC,MAAMG,KAAK,CACN,6IADM,CAAX;IAGH;;IAED,OAAO,KAAKH,SAAL,CAAeE,OAAf,CAAP;EACH;;AAjBwE;;;8BAAhEN,mB,UACsC,gB;;AAmB5C,MAAMQ,yBAAyB,GAClCL,QADqC,IAEZ;EACzB,OAAO,IAAIH,mBAAJ,CAA2BG,QAA3B,CAAP;AACH,CAJM"}
@@ -1,12 +1,16 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.createEvent = exports.EventPlugin = void 0;
9
+
8
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
9
12
  var _Plugin = require("@webiny/plugins/Plugin");
13
+
10
14
  /**
11
15
  * EventPlugin must be handled in the package which implements fastify for certain cloud.
12
16
  * There is no standard input for AWS Lambda, Google Cloud Functions and MS Azure Functions so we let that
@@ -15,17 +19,20 @@ var _Plugin = require("@webiny/plugins/Plugin");
15
19
  * Note that only one EventPlugin can be defined per fastify initialisation.
16
20
  * If more is needed, check ~/fastify.ts and implement that possibility.
17
21
  */
18
-
19
22
  class EventPlugin extends _Plugin.Plugin {
20
23
  constructor(cb) {
21
24
  super();
22
25
  (0, _defineProperty2.default)(this, "cb", void 0);
23
26
  this.cb = cb;
24
27
  }
28
+
25
29
  }
30
+
26
31
  exports.EventPlugin = EventPlugin;
27
32
  (0, _defineProperty2.default)(EventPlugin, "type", "handler.fastify.event");
33
+
28
34
  const createEvent = cb => {
29
35
  return new EventPlugin(cb);
30
36
  };
37
+
31
38
  exports.createEvent = createEvent;
@@ -1 +1 @@
1
- {"version":3,"names":["EventPlugin","Plugin","constructor","cb","createEvent"],"sources":["EventPlugin.ts"],"sourcesContent":["/**\n * EventPlugin must be handled in the package which implements fastify for certain cloud.\n * There is no standard input for AWS Lambda, Google Cloud Functions and MS Azure Functions so we let that\n * to be sorted out in the implementation package.\n *\n * Note that only one EventPlugin can be defined per fastify initialisation.\n * If more is needed, check ~/fastify.ts and implement that possibility.\n */\nimport { Plugin } from \"@webiny/plugins/Plugin\";\nimport { Request, Context as BaseContext, Reply } from \"~/types\";\n\nexport interface EventPluginCallableParams<Payload, Context extends BaseContext> {\n context: Context;\n payload: Payload;\n request: Request;\n reply: Reply;\n}\n\nexport interface EventPluginCallable<Payload, Context extends BaseContext, Response> {\n (params: EventPluginCallableParams<Payload, Context>): Promise<Response | Reply>;\n}\n\nexport class EventPlugin<\n Payload = any,\n Context extends BaseContext = BaseContext,\n Response = any\n> extends Plugin {\n public static override type = \"handler.fastify.event\";\n\n public readonly cb: EventPluginCallable<Payload, Context, Response>;\n\n public constructor(cb: EventPluginCallable<Payload, Context, Response>) {\n super();\n this.cb = cb;\n }\n}\n\nexport const createEvent = <\n Payload = any,\n Context extends BaseContext = BaseContext,\n Response = any\n>(\n cb: EventPluginCallable<Payload, Context, Response>\n) => {\n return new EventPlugin<Payload, Context, Response>(cb);\n};\n"],"mappings":";;;;;;;;AAQA;AARA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeO,MAAMA,WAAW,SAIdC,cAAM,CAAC;EAKNC,WAAW,CAACC,EAAmD,EAAE;IACpE,KAAK,EAAE;IAAC;IACR,IAAI,CAACA,EAAE,GAAGA,EAAE;EAChB;AACJ;AAAC;AAAA,8BAbYH,WAAW,UAKU,uBAAuB;AAUlD,MAAMI,WAAW,GAKpBD,EAAmD,IAClD;EACD,OAAO,IAAIH,WAAW,CAA6BG,EAAE,CAAC;AAC1D,CAAC;AAAC"}
1
+ {"version":3,"names":["EventPlugin","Plugin","constructor","cb","createEvent"],"sources":["EventPlugin.ts"],"sourcesContent":["/**\n * EventPlugin must be handled in the package which implements fastify for certain cloud.\n * There is no standard input for AWS Lambda, Google Cloud Functions and MS Azure Functions so we let that\n * to be sorted out in the implementation package.\n *\n * Note that only one EventPlugin can be defined per fastify initialisation.\n * If more is needed, check ~/fastify.ts and implement that possibility.\n */\nimport { Plugin } from \"@webiny/plugins/Plugin\";\nimport { Request, Context as BaseContext, Reply } from \"~/types\";\n\nexport interface EventPluginCallableParams<Payload, Context extends BaseContext> {\n context: Context;\n payload: Payload;\n request: Request;\n reply: Reply;\n}\n\nexport interface EventPluginCallable<Payload, Context extends BaseContext, Response> {\n (params: EventPluginCallableParams<Payload, Context>): Promise<Response | Reply>;\n}\n\nexport class EventPlugin<\n Payload = any,\n Context extends BaseContext = BaseContext,\n Response = any\n> extends Plugin {\n public static override type = \"handler.fastify.event\";\n\n public readonly cb: EventPluginCallable<Payload, Context, Response>;\n\n public constructor(cb: EventPluginCallable<Payload, Context, Response>) {\n super();\n this.cb = cb;\n }\n}\n\nexport const createEvent = <\n Payload = any,\n Context extends BaseContext = BaseContext,\n Response = any\n>(\n cb: EventPluginCallable<Payload, Context, Response>\n) => {\n return new EventPlugin<Payload, Context, Response>(cb);\n};\n"],"mappings":";;;;;;;;;;;AAQA;;AARA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAeO,MAAMA,WAAN,SAIGC,cAJH,CAIU;EAKNC,WAAW,CAACC,EAAD,EAAsD;IACpE;IADoE;IAEpE,KAAKA,EAAL,GAAUA,EAAV;EACH;;AARY;;;8BAJJH,W,UAKqB,uB;;AAU3B,MAAMI,WAAW,GAKpBD,EALuB,IAMtB;EACD,OAAO,IAAIH,WAAJ,CAA4CG,EAA5C,CAAP;AACH,CARM"}
@@ -1,25 +1,34 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.createHandlerErrorPlugin = exports.HandlerErrorPlugin = void 0;
9
+
8
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
9
12
  var _plugins = require("@webiny/plugins");
13
+
10
14
  class HandlerErrorPlugin extends _plugins.Plugin {
11
15
  constructor(callable) {
12
16
  super();
13
17
  (0, _defineProperty2.default)(this, "_callable", void 0);
14
18
  this._callable = callable;
15
19
  }
20
+
16
21
  async handle(context, error, next) {
17
22
  return this._callable(context, error, next);
18
23
  }
24
+
19
25
  }
26
+
20
27
  exports.HandlerErrorPlugin = HandlerErrorPlugin;
21
28
  (0, _defineProperty2.default)(HandlerErrorPlugin, "type", "handler-error");
29
+
22
30
  const createHandlerErrorPlugin = callable => {
23
31
  return new HandlerErrorPlugin(callable);
24
32
  };
33
+
25
34
  exports.createHandlerErrorPlugin = createHandlerErrorPlugin;
@@ -1 +1 @@
1
- {"version":3,"names":["HandlerErrorPlugin","Plugin","constructor","callable","_callable","handle","context","error","next","createHandlerErrorPlugin"],"sources":["HandlerErrorPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { Context } from \"~/types\";\n\nexport interface HandlerErrorCallable<T extends Context = Context> {\n (context: T, error: Error, next: Function): Promise<any>;\n}\n\nexport class HandlerErrorPlugin<T extends Context = Context> extends Plugin {\n public static override readonly type: string = \"handler-error\";\n\n private readonly _callable: HandlerErrorCallable<T>;\n\n public constructor(callable: HandlerErrorCallable<T>) {\n super();\n this._callable = callable;\n }\n\n public async handle(context: T, error: Error, next: Function): Promise<any> {\n return this._callable(context, error, next);\n }\n}\n\nexport const createHandlerErrorPlugin = <T extends Context = Context>(\n callable: HandlerErrorCallable<T>\n): HandlerErrorPlugin<T> => {\n return new HandlerErrorPlugin<T>(callable);\n};\n"],"mappings":";;;;;;;;AAAA;AAOO,MAAMA,kBAAkB,SAAsCC,eAAM,CAAC;EAKjEC,WAAW,CAACC,QAAiC,EAAE;IAClD,KAAK,EAAE;IAAC;IACR,IAAI,CAACC,SAAS,GAAGD,QAAQ;EAC7B;EAEA,MAAaE,MAAM,CAACC,OAAU,EAAEC,KAAY,EAAEC,IAAc,EAAgB;IACxE,OAAO,IAAI,CAACJ,SAAS,CAACE,OAAO,EAAEC,KAAK,EAAEC,IAAI,CAAC;EAC/C;AACJ;AAAC;AAAA,8BAbYR,kBAAkB,UACoB,eAAe;AAc3D,MAAMS,wBAAwB,GACjCN,QAAiC,IACT;EACxB,OAAO,IAAIH,kBAAkB,CAAIG,QAAQ,CAAC;AAC9C,CAAC;AAAC"}
1
+ {"version":3,"names":["HandlerErrorPlugin","Plugin","constructor","callable","_callable","handle","context","error","next","createHandlerErrorPlugin"],"sources":["HandlerErrorPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { Context } from \"~/types\";\n\nexport interface HandlerErrorCallable<T extends Context = Context> {\n (context: T, error: Error, next: Function): Promise<any>;\n}\n\nexport class HandlerErrorPlugin<T extends Context = Context> extends Plugin {\n public static override readonly type: string = \"handler-error\";\n\n private readonly _callable: HandlerErrorCallable<T>;\n\n public constructor(callable: HandlerErrorCallable<T>) {\n super();\n this._callable = callable;\n }\n\n public async handle(context: T, error: Error, next: Function): Promise<any> {\n return this._callable(context, error, next);\n }\n}\n\nexport const createHandlerErrorPlugin = <T extends Context = Context>(\n callable: HandlerErrorCallable<T>\n): HandlerErrorPlugin<T> => {\n return new HandlerErrorPlugin<T>(callable);\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAOO,MAAMA,kBAAN,SAA8DC,eAA9D,CAAqE;EAKjEC,WAAW,CAACC,QAAD,EAAoC;IAClD;IADkD;IAElD,KAAKC,SAAL,GAAiBD,QAAjB;EACH;;EAEkB,MAANE,MAAM,CAACC,OAAD,EAAaC,KAAb,EAA2BC,IAA3B,EAAyD;IACxE,OAAO,KAAKJ,SAAL,CAAeE,OAAf,EAAwBC,KAAxB,EAA+BC,IAA/B,CAAP;EACH;;AAZuE;;;8BAA/DR,kB,UACsC,e;;AAc5C,MAAMS,wBAAwB,GACjCN,QADoC,IAEZ;EACxB,OAAO,IAAIH,kBAAJ,CAA0BG,QAA1B,CAAP;AACH,CAJM"}
@@ -1,25 +1,34 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.createHandlerResultPlugin = exports.HandlerResultPlugin = void 0;
9
+
8
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
9
12
  var _plugins = require("@webiny/plugins");
13
+
10
14
  class HandlerResultPlugin extends _plugins.Plugin {
11
15
  constructor(callable) {
12
16
  super();
13
17
  (0, _defineProperty2.default)(this, "_callable", void 0);
14
18
  this._callable = callable;
15
19
  }
20
+
16
21
  async handle(context, result) {
17
22
  return this._callable(context, result);
18
23
  }
24
+
19
25
  }
26
+
20
27
  exports.HandlerResultPlugin = HandlerResultPlugin;
21
28
  (0, _defineProperty2.default)(HandlerResultPlugin, "type", "handler-result");
29
+
22
30
  const createHandlerResultPlugin = callable => {
23
31
  return new HandlerResultPlugin(callable);
24
32
  };
33
+
25
34
  exports.createHandlerResultPlugin = createHandlerResultPlugin;
@@ -1 +1 @@
1
- {"version":3,"names":["HandlerResultPlugin","Plugin","constructor","callable","_callable","handle","context","result","createHandlerResultPlugin"],"sources":["HandlerResultPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { Context } from \"~/types\";\n\nexport interface HandlerResultCallable<T extends Context = Context> {\n (context: T, result: any): Promise<any>;\n}\n\nexport class HandlerResultPlugin<T extends Context = Context> extends Plugin {\n public static override readonly type: string = \"handler-result\";\n\n private readonly _callable: HandlerResultCallable<T>;\n\n public constructor(callable: HandlerResultCallable<T>) {\n super();\n this._callable = callable;\n }\n\n public async handle(context: T, result: any): Promise<any> {\n return this._callable(context, result);\n }\n}\n\nexport const createHandlerResultPlugin = <T extends Context = Context>(\n callable: HandlerResultCallable<T>\n): HandlerResultPlugin<T> => {\n return new HandlerResultPlugin<T>(callable);\n};\n"],"mappings":";;;;;;;;AAAA;AAOO,MAAMA,mBAAmB,SAAsCC,eAAM,CAAC;EAKlEC,WAAW,CAACC,QAAkC,EAAE;IACnD,KAAK,EAAE;IAAC;IACR,IAAI,CAACC,SAAS,GAAGD,QAAQ;EAC7B;EAEA,MAAaE,MAAM,CAACC,OAAU,EAAEC,MAAW,EAAgB;IACvD,OAAO,IAAI,CAACH,SAAS,CAACE,OAAO,EAAEC,MAAM,CAAC;EAC1C;AACJ;AAAC;AAAA,8BAbYP,mBAAmB,UACmB,gBAAgB;AAc5D,MAAMQ,yBAAyB,GAClCL,QAAkC,IACT;EACzB,OAAO,IAAIH,mBAAmB,CAAIG,QAAQ,CAAC;AAC/C,CAAC;AAAC"}
1
+ {"version":3,"names":["HandlerResultPlugin","Plugin","constructor","callable","_callable","handle","context","result","createHandlerResultPlugin"],"sources":["HandlerResultPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { Context } from \"~/types\";\n\nexport interface HandlerResultCallable<T extends Context = Context> {\n (context: T, result: any): Promise<any>;\n}\n\nexport class HandlerResultPlugin<T extends Context = Context> extends Plugin {\n public static override readonly type: string = \"handler-result\";\n\n private readonly _callable: HandlerResultCallable<T>;\n\n public constructor(callable: HandlerResultCallable<T>) {\n super();\n this._callable = callable;\n }\n\n public async handle(context: T, result: any): Promise<any> {\n return this._callable(context, result);\n }\n}\n\nexport const createHandlerResultPlugin = <T extends Context = Context>(\n callable: HandlerResultCallable<T>\n): HandlerResultPlugin<T> => {\n return new HandlerResultPlugin<T>(callable);\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAOO,MAAMA,mBAAN,SAA+DC,eAA/D,CAAsE;EAKlEC,WAAW,CAACC,QAAD,EAAqC;IACnD;IADmD;IAEnD,KAAKC,SAAL,GAAiBD,QAAjB;EACH;;EAEkB,MAANE,MAAM,CAACC,OAAD,EAAaC,MAAb,EAAwC;IACvD,OAAO,KAAKH,SAAL,CAAeE,OAAf,EAAwBC,MAAxB,CAAP;EACH;;AAZwE;;;8BAAhEP,mB,UACsC,gB;;AAc5C,MAAMQ,yBAAyB,GAClCL,QADqC,IAEZ;EACzB,OAAO,IAAIH,mBAAJ,CAA2BG,QAA3B,CAAP;AACH,CAJM"}
@@ -1,22 +1,30 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.createRoute = exports.RoutePlugin = void 0;
9
+
8
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
9
12
  var _Plugin = require("@webiny/plugins/Plugin");
13
+
10
14
  class RoutePlugin extends _Plugin.Plugin {
11
15
  constructor(cb) {
12
16
  super();
13
17
  (0, _defineProperty2.default)(this, "cb", void 0);
14
18
  this.cb = cb;
15
19
  }
20
+
16
21
  }
22
+
17
23
  exports.RoutePlugin = RoutePlugin;
18
24
  (0, _defineProperty2.default)(RoutePlugin, "type", "handler.fastify.route");
25
+
19
26
  const createRoute = cb => {
20
27
  return new RoutePlugin(cb);
21
28
  };
29
+
22
30
  exports.createRoute = createRoute;
@@ -1 +1 @@
1
- {"version":3,"names":["RoutePlugin","Plugin","constructor","cb","createRoute"],"sources":["RoutePlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins/Plugin\";\nimport { Context, RouteMethod } from \"~/types\";\n\ninterface RoutePluginCbParams<T extends Context> {\n context: T;\n onGet: RouteMethod;\n onPost: RouteMethod;\n onPut: RouteMethod;\n onPatch: RouteMethod;\n onDelete: RouteMethod;\n onOptions: RouteMethod;\n onAll: RouteMethod;\n onHead: RouteMethod;\n}\nexport interface RoutePluginCb<T extends Context> {\n (params: RoutePluginCbParams<T>): void;\n}\n\nexport class RoutePlugin<T extends Context = Context> extends Plugin {\n public static override readonly type: string = \"handler.fastify.route\";\n\n public readonly cb: RoutePluginCb<T>;\n\n public constructor(cb: RoutePluginCb<T>) {\n super();\n this.cb = cb;\n }\n}\n\nexport const createRoute = <T extends Context = Context>(cb: RoutePluginCb<T>): RoutePlugin<T> => {\n return new RoutePlugin<T>(cb);\n};\n"],"mappings":";;;;;;;;AAAA;AAkBO,MAAMA,WAAW,SAAsCC,cAAM,CAAC;EAK1DC,WAAW,CAACC,EAAoB,EAAE;IACrC,KAAK,EAAE;IAAC;IACR,IAAI,CAACA,EAAE,GAAGA,EAAE;EAChB;AACJ;AAAC;AAAA,8BATYH,WAAW,UAC2B,uBAAuB;AAUnE,MAAMI,WAAW,GAAiCD,EAAoB,IAAqB;EAC9F,OAAO,IAAIH,WAAW,CAAIG,EAAE,CAAC;AACjC,CAAC;AAAC"}
1
+ {"version":3,"names":["RoutePlugin","Plugin","constructor","cb","createRoute"],"sources":["RoutePlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins/Plugin\";\nimport { Context, RouteMethod } from \"~/types\";\n\ninterface RoutePluginCbParams<T extends Context> {\n context: T;\n onGet: RouteMethod;\n onPost: RouteMethod;\n onPut: RouteMethod;\n onPatch: RouteMethod;\n onDelete: RouteMethod;\n onOptions: RouteMethod;\n onAll: RouteMethod;\n onHead: RouteMethod;\n}\nexport interface RoutePluginCb<T extends Context> {\n (params: RoutePluginCbParams<T>): void;\n}\n\nexport class RoutePlugin<T extends Context = Context> extends Plugin {\n public static override readonly type: string = \"handler.fastify.route\";\n\n public readonly cb: RoutePluginCb<T>;\n\n public constructor(cb: RoutePluginCb<T>) {\n super();\n this.cb = cb;\n }\n}\n\nexport const createRoute = <T extends Context = Context>(cb: RoutePluginCb<T>): RoutePlugin<T> => {\n return new RoutePlugin<T>(cb);\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAkBO,MAAMA,WAAN,SAAuDC,cAAvD,CAA8D;EAK1DC,WAAW,CAACC,EAAD,EAAuB;IACrC;IADqC;IAErC,KAAKA,EAAL,GAAUA,EAAV;EACH;;AARgE;;;8BAAxDH,W,UACsC,uB;;AAU5C,MAAMI,WAAW,GAAiCD,EAA9B,IAAuE;EAC9F,OAAO,IAAIH,WAAJ,CAAmBG,EAAnB,CAAP;AACH,CAFM"}
package/types.js CHANGED
@@ -15,4 +15,5 @@ Object.defineProperty(exports, "HTTPMethods", {
15
15
  return _fastify.HTTPMethods;
16
16
  }
17
17
  });
18
+
18
19
  var _fastify = require("fastify");
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {\n FastifyInstance,\n FastifyRequest,\n FastifyReply,\n HTTPMethods,\n RouteHandlerMethod\n} from \"fastify\";\n\nexport { FastifyInstance, HTTPMethods } from \"fastify\";\nimport { ClientContext } from \"@webiny/handler-client/types\";\n\nexport interface RouteMethodOptions {\n override?: boolean;\n}\n\nexport type RouteMethodPath = `/${string}` | \"*\";\nexport interface RouteMethod {\n (path: RouteMethodPath, handler: RouteHandlerMethod, options?: RouteMethodOptions): void;\n}\n\nexport type Request = FastifyRequest;\nexport type Reply = FastifyReply;\n\nexport type DefinedContextRoutes = Record<HTTPMethods, string[]>;\nexport interface ContextRoutes {\n defined: DefinedContextRoutes;\n onGet: RouteMethod;\n onPost: RouteMethod;\n onPut: RouteMethod;\n onPatch: RouteMethod;\n onDelete: RouteMethod;\n onOptions: RouteMethod;\n onAll: RouteMethod;\n onHead: RouteMethod;\n}\n\nexport interface Context extends ClientContext {\n /**\n * An instance of fastify server.\n * Use at your own risk.\n * @instance\n */\n server: FastifyInstance;\n /**\n * Current request. Must be set only once!\n */\n request: FastifyRequest;\n /**\n * @internal\n */\n routes: ContextRoutes;\n}\n\ndeclare module \"fastify\" {\n interface FastifyInstance {\n webiny: Context;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA"}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {\n FastifyInstance,\n FastifyRequest,\n FastifyReply,\n HTTPMethods,\n RouteHandlerMethod\n} from \"fastify\";\n\nexport { FastifyInstance, HTTPMethods } from \"fastify\";\nimport { ClientContext } from \"@webiny/handler-client/types\";\n\nexport interface RouteMethodOptions {\n override?: boolean;\n}\n\nexport type RouteMethodPath = `/${string}` | \"*\";\nexport interface RouteMethod {\n (path: RouteMethodPath, handler: RouteHandlerMethod, options?: RouteMethodOptions): void;\n}\n\nexport type Request = FastifyRequest;\nexport type Reply = FastifyReply;\n\nexport type DefinedContextRoutes = Record<HTTPMethods, string[]>;\nexport interface ContextRoutes {\n defined: DefinedContextRoutes;\n onGet: RouteMethod;\n onPost: RouteMethod;\n onPut: RouteMethod;\n onPatch: RouteMethod;\n onDelete: RouteMethod;\n onOptions: RouteMethod;\n onAll: RouteMethod;\n onHead: RouteMethod;\n}\n\nexport interface Context extends ClientContext {\n /**\n * An instance of fastify server.\n * Use at your own risk.\n * @instance\n */\n server: FastifyInstance;\n /**\n * Current request. Must be set only once!\n */\n request: FastifyRequest;\n /**\n * @internal\n */\n routes: ContextRoutes;\n}\n\ndeclare module \"fastify\" {\n interface FastifyInstance {\n webiny: Context;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA"}