@scloud/lambda-api 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,6 +6,7 @@ This is a piece of useful boilerplate to handle the mechanics of routing, header
6
6
 
7
7
  ## Releae notes
8
8
 
9
+ * `0.2.4`: Allow Request.body to be `any`. Return simple text responses for handled errors (404, 500, 405)
9
10
  * `0.2.1`: Request headers are now made available in lowecase as well as their original case. The response body can now be `string` as well as `object`.
10
11
  * `0.2.2`: Add `Content-Type: text/plain` for string responses if not already set.
11
12
 
package/dist/handler.js CHANGED
@@ -2,12 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.apiHandler = void 0;
4
4
  const helpers_1 = require("./helpers");
5
+ function textResponse(statusCode, body) {
6
+ return {
7
+ statusCode,
8
+ headers: { 'Content-Type': 'text/plain' },
9
+ body
10
+ };
11
+ }
5
12
  /**
6
13
  * API route handler
7
14
  */
8
15
  async function apiHandler(event, context, routes = {
9
16
  '/api/ping': { GET: async (request) => ({ statusCode: 200, body: request }) },
10
- }, errorHandler = async (request) => ({ statusCode: 500, body: { error: `Internal server error: ${request.path}` } }), catchAll = async (request) => ({ statusCode: 404, body: { error: `Not found: ${request.path}` } })) {
17
+ }, errorHandler = async (request) => ({ statusCode: 500, body: { error: `Internal server error: ${request.path}` } }), catchAll = async (request) => textResponse(404, `Not found: ${request.path}`)) {
11
18
  console.log(`Executing ${context.functionName} version: ${process.env.COMMIT_HASH}`);
12
19
  const request = (0, helpers_1.parseRequest)(event);
13
20
  let response;
@@ -19,20 +26,24 @@ async function apiHandler(event, context, routes = {
19
26
  }
20
27
  else {
21
28
  const handlerFunction = route[request.method];
22
- if (!handlerFunction)
23
- return { statusCode: 405, body: JSON.stringify('Method not allowed') };
24
29
  // Handle the request:
25
- response = await handlerFunction(request);
30
+ if (handlerFunction)
31
+ response = await handlerFunction(request);
32
+ else
33
+ response = textResponse(405, 'Method not allowed');
26
34
  }
27
35
  }
28
36
  catch (e) {
37
+ // Fallback error handling
29
38
  console.error(`${e.message}\n${e.stack}`);
39
+ response = textResponse(500, `Internal server error: ${request.path}`);
30
40
  try {
31
41
  // Error handling
32
- response = await errorHandler(request, e);
42
+ if (errorHandler)
43
+ response = await errorHandler(request, e);
33
44
  }
34
45
  catch (ee) {
35
- response = { statusCode: 500, body: { error: `Internal server error: ${request.path} [errorHandler]` } };
46
+ console.error(`Error in error handler: ${e.message}\n${e.stack}`);
36
47
  }
37
48
  }
38
49
  // API Gateway Proxy result
@@ -63,4 +74,4 @@ async function apiHandler(event, context, routes = {
63
74
  return result;
64
75
  }
65
76
  exports.apiHandler = apiHandler;
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBLHVDQUFrRTtBQUVsRTs7R0FFRztBQUNJLEtBQUssVUFBVSxVQUFVLENBQzlCLEtBQTJCLEVBQzNCLE9BQWdCLEVBQ2hCLFNBQWlCO0lBQ2YsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRTtDQUN2RixFQUVELGVBQWtFLEtBQUssRUFBRSxPQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFDOUssV0FBb0IsS0FBSyxFQUFFLE9BQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFFcEgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLE9BQU8sQ0FBQyxZQUFZLGFBQWEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLE1BQU0sT0FBTyxHQUFHLElBQUEsc0JBQVksRUFBQyxLQUFLLENBQUMsQ0FBQztJQUVwQyxJQUFJLFFBQWtCLENBQUM7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBQSxvQkFBVSxFQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsa0JBQWtCO1lBQ2xCLFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBcUIsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxlQUFlO2dCQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztZQUU3RixzQkFBc0I7WUFDdEIsUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBSSxDQUFXLENBQUMsT0FBTyxLQUFNLENBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQztZQUNILGlCQUFpQjtZQUNqQixRQUFRLEdBQUcsTUFBTSxZQUFZLENBQUMsT0FBTyxFQUFFLENBQVUsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ1osUUFBUSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLE9BQU8sQ0FBQyxJQUFJLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztRQUMzRyxDQUFDO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixJQUFJLElBQUksR0FBVyxFQUFFLENBQUM7SUFDdEIsSUFBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdEMscUJBQXFCO1FBQ3JCLG9EQUFvRDtRQUNwRCxRQUFRLENBQUMsT0FBTyxHQUFHLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6RSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztJQUN2QixDQUFDO1NBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsZ0NBQWdDO1FBQ2hDLG1EQUFtRDtRQUNuRCxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUEwQjtRQUNwQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7UUFDL0IsSUFBSTtRQUNKLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztLQUMxQixDQUFDO0lBRUYsbUJBQW1CO0lBQ25CLE1BQU0sYUFBYSxHQUFHLElBQUEscUJBQVcsRUFBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEQsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixNQUFNLENBQUMsaUJBQWlCLEdBQUc7WUFDekIsTUFBTSxFQUFFLGFBQWE7U0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBL0RELGdDQStEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFQSUdhdGV3YXlQcm94eUV2ZW50LFxuICBBUElHYXRld2F5UHJveHlSZXN1bHQsXG4gIENvbnRleHQsXG59IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHtcbiAgSGFuZGxlciwgUmVxdWVzdCwgUmVzcG9uc2UsIFJvdXRlLCBSb3V0ZXMsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYnVpbGRDb29raWUsIG1hdGNoUm91dGUsIHBhcnNlUmVxdWVzdCB9IGZyb20gJy4vaGVscGVycyc7XG5cbi8qKlxuICogQVBJIHJvdXRlIGhhbmRsZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwaUhhbmRsZXIoXG4gIGV2ZW50OiBBUElHYXRld2F5UHJveHlFdmVudCxcbiAgY29udGV4dDogQ29udGV4dCxcbiAgcm91dGVzOiBSb3V0ZXMgPSB7XG4gICAgJy9hcGkvcGluZyc6IHsgR0VUOiBhc3luYyAocmVxdWVzdDogUmVxdWVzdCkgPT4gKHsgc3RhdHVzQ29kZTogMjAwLCBib2R5OiByZXF1ZXN0IH0pIH0sXG4gIH0sXG5cbiAgZXJyb3JIYW5kbGVyOiAocmVxdWVzdDogUmVxdWVzdCwgZTogRXJyb3IpID0+IFByb21pc2U8UmVzcG9uc2U+ID0gYXN5bmMgKHJlcXVlc3Q6IFJlcXVlc3QpID0+ICh7IHN0YXR1c0NvZGU6IDUwMCwgYm9keTogeyBlcnJvcjogYEludGVybmFsIHNlcnZlciBlcnJvcjogJHtyZXF1ZXN0LnBhdGh9YCB9IH0pLFxuICBjYXRjaEFsbDogSGFuZGxlciA9IGFzeW5jIChyZXF1ZXN0OiBSZXF1ZXN0KSA9PiAoeyBzdGF0dXNDb2RlOiA0MDQsIGJvZHk6IHsgZXJyb3I6IGBOb3QgZm91bmQ6ICR7cmVxdWVzdC5wYXRofWAgfSB9KSxcbik6IFByb21pc2U8QVBJR2F0ZXdheVByb3h5UmVzdWx0PiB7XG4gIGNvbnNvbGUubG9nKGBFeGVjdXRpbmcgJHtjb250ZXh0LmZ1bmN0aW9uTmFtZX0gdmVyc2lvbjogJHtwcm9jZXNzLmVudi5DT01NSVRfSEFTSH1gKTtcbiAgY29uc3QgcmVxdWVzdCA9IHBhcnNlUmVxdWVzdChldmVudCk7XG5cbiAgbGV0IHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgdHJ5IHtcbiAgICBjb25zdCByb3V0ZSA9IG1hdGNoUm91dGUocm91dGVzLCByZXF1ZXN0LnBhdGgpO1xuICAgIGlmICghcm91dGUpIHtcbiAgICAgIC8vIENhdGNoLWFsbCAvIDQwNFxuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBjYXRjaEFsbChyZXF1ZXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaGFuZGxlckZ1bmN0aW9uID0gcm91dGVbcmVxdWVzdC5tZXRob2QgYXMga2V5b2YgUm91dGVdO1xuICAgICAgaWYgKCFoYW5kbGVyRnVuY3Rpb24pIHJldHVybiB7IHN0YXR1c0NvZGU6IDQwNSwgYm9keTogSlNPTi5zdHJpbmdpZnkoJ01ldGhvZCBub3QgYWxsb3dlZCcpIH07XG5cbiAgICAgIC8vIEhhbmRsZSB0aGUgcmVxdWVzdDpcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgaGFuZGxlckZ1bmN0aW9uKHJlcXVlc3QpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYCR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9XFxuJHsoZSBhcyBFcnJvcikuc3RhY2t9YCk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEVycm9yIGhhbmRsaW5nXG4gICAgICByZXNwb25zZSA9IGF3YWl0IGVycm9ySGFuZGxlcihyZXF1ZXN0LCBlIGFzIEVycm9yKTtcbiAgICB9IGNhdGNoIChlZSkge1xuICAgICAgcmVzcG9uc2UgPSB7IHN0YXR1c0NvZGU6IDUwMCwgYm9keTogeyBlcnJvcjogYEludGVybmFsIHNlcnZlciBlcnJvcjogJHtyZXF1ZXN0LnBhdGh9IFtlcnJvckhhbmRsZXJdYCB9IH07XG4gICAgfVxuICB9XG5cbiAgLy8gQVBJIEdhdGV3YXkgUHJveHkgcmVzdWx0XG4gIGxldCBib2R5OiBzdHJpbmcgPSAnJztcbiAgaWYgKHR5cGVvZiByZXNwb25zZS5ib2R5ID09PSAnc3RyaW5nJykge1xuICAgIC8vIFVzZSB0aGUgYm9keSBhcy1pc1xuICAgIC8vIFBvdGVudGlhbGx5IGFkZCBhIHRleHQvcGxhaW4gY29udGVudCB0eXBlIGhlYWRlcjpcbiAgICByZXNwb25zZS5oZWFkZXJzID0geyAnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW4nLCAuLi5yZXNwb25zZS5oZWFkZXJzIH07XG4gICAgYm9keSA9IHJlc3BvbnNlLmJvZHk7XG4gIH0gZWxzZSBpZiAocmVzcG9uc2UuYm9keSkge1xuICAgIC8vIFN0cmluZ2lmeSB0aGUgcmVzcG9uc2Ugb2JqZWN0XG4gICAgLy8gQVBJIEdhdGV3YXkgcmV0dXJucyBhcHBsaWNhdGlwbm8vanNvbiBieSBkZWZhdWx0XG4gICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmJvZHkpO1xuICB9XG4gIGNvbnN0IHJlc3VsdDogQVBJR2F0ZXdheVByb3h5UmVzdWx0ID0ge1xuICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1c0NvZGUsXG4gICAgYm9keSxcbiAgICBoZWFkZXJzOiByZXNwb25zZS5oZWFkZXJzLFxuICB9O1xuXG4gIC8vIENvb2tpZXMgKGlmIHNldClcbiAgY29uc3QgY29va2llSGVhZGVycyA9IGJ1aWxkQ29va2llKHJlc3BvbnNlLmNvb2tpZXMpO1xuICBpZiAoY29va2llSGVhZGVycykge1xuICAgIHJlc3VsdC5tdWx0aVZhbHVlSGVhZGVycyA9IHtcbiAgICAgIENvb2tpZTogY29va2llSGVhZGVycyxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBLHVDQUFrRTtBQUVsRSxTQUFTLFlBQVksQ0FBQyxVQUFrQixFQUFFLElBQVk7SUFDcEQsT0FBTztRQUNMLFVBQVU7UUFDVixPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFO1FBQ3pDLElBQUk7S0FDTCxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLFVBQVUsQ0FDOUIsS0FBMkIsRUFDM0IsT0FBZ0IsRUFDaEIsU0FBaUI7SUFDZixXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO0NBQ3ZGLEVBRUQsZUFBa0UsS0FBSyxFQUFFLE9BQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSwwQkFBMEIsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUM5SyxXQUFvQixLQUFLLEVBQUUsT0FBZ0IsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxjQUFjLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUUvRixPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsT0FBTyxDQUFDLFlBQVksYUFBYSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckYsTUFBTSxPQUFPLEdBQUcsSUFBQSxzQkFBWSxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBDLElBQUksUUFBa0IsQ0FBQztJQUN2QixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFVLEVBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxrQkFBa0I7WUFDbEIsUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFxQixDQUFDLENBQUM7WUFFN0Qsc0JBQXNCO1lBQ3RCLElBQUksZUFBZTtnQkFBRSxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7O2dCQUMxRCxRQUFRLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLDBCQUEwQjtRQUMxQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUksQ0FBVyxDQUFDLE9BQU8sS0FBTSxDQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoRSxRQUFRLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDO1lBQ0gsaUJBQWlCO1lBQ2pCLElBQUksWUFBWTtnQkFBRSxRQUFRLEdBQUcsTUFBTSxZQUFZLENBQUMsT0FBTyxFQUFFLENBQVUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBNEIsQ0FBVyxDQUFDLE9BQU8sS0FBTSxDQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRixDQUFDO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixJQUFJLElBQUksR0FBVyxFQUFFLENBQUM7SUFDdEIsSUFBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdEMscUJBQXFCO1FBQ3JCLG9EQUFvRDtRQUNwRCxRQUFRLENBQUMsT0FBTyxHQUFHLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6RSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztJQUN2QixDQUFDO1NBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsZ0NBQWdDO1FBQ2hDLG1EQUFtRDtRQUNuRCxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUEwQjtRQUNwQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7UUFDL0IsSUFBSTtRQUNKLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztLQUMxQixDQUFDO0lBRUYsbUJBQW1CO0lBQ25CLE1BQU0sYUFBYSxHQUFHLElBQUEscUJBQVcsRUFBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEQsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixNQUFNLENBQUMsaUJBQWlCLEdBQUc7WUFDekIsTUFBTSxFQUFFLGFBQWE7U0FDdEIsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBakVELGdDQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFQSUdhdGV3YXlQcm94eUV2ZW50LFxuICBBUElHYXRld2F5UHJveHlSZXN1bHQsXG4gIENvbnRleHQsXG59IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHtcbiAgSGFuZGxlciwgUmVxdWVzdCwgUmVzcG9uc2UsIFJvdXRlLCBSb3V0ZXMsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYnVpbGRDb29raWUsIG1hdGNoUm91dGUsIHBhcnNlUmVxdWVzdCB9IGZyb20gJy4vaGVscGVycyc7XG5cbmZ1bmN0aW9uIHRleHRSZXNwb25zZShzdGF0dXNDb2RlOiBudW1iZXIsIGJvZHk6IHN0cmluZyk6IFJlc3BvbnNlIHtcbiAgcmV0dXJuIHtcbiAgICBzdGF0dXNDb2RlLFxuICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3BsYWluJyB9LFxuICAgIGJvZHlcbiAgfTtcbn1cblxuLyoqXG4gKiBBUEkgcm91dGUgaGFuZGxlclxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBpSGFuZGxlcihcbiAgZXZlbnQ6IEFQSUdhdGV3YXlQcm94eUV2ZW50LFxuICBjb250ZXh0OiBDb250ZXh0LFxuICByb3V0ZXM6IFJvdXRlcyA9IHtcbiAgICAnL2FwaS9waW5nJzogeyBHRVQ6IGFzeW5jIChyZXF1ZXN0OiBSZXF1ZXN0KSA9PiAoeyBzdGF0dXNDb2RlOiAyMDAsIGJvZHk6IHJlcXVlc3QgfSkgfSxcbiAgfSxcblxuICBlcnJvckhhbmRsZXI6IChyZXF1ZXN0OiBSZXF1ZXN0LCBlOiBFcnJvcikgPT4gUHJvbWlzZTxSZXNwb25zZT4gPSBhc3luYyAocmVxdWVzdDogUmVxdWVzdCkgPT4gKHsgc3RhdHVzQ29kZTogNTAwLCBib2R5OiB7IGVycm9yOiBgSW50ZXJuYWwgc2VydmVyIGVycm9yOiAke3JlcXVlc3QucGF0aH1gIH0gfSksXG4gIGNhdGNoQWxsOiBIYW5kbGVyID0gYXN5bmMgKHJlcXVlc3Q6IFJlcXVlc3QpID0+IHRleHRSZXNwb25zZSg0MDQsIGBOb3QgZm91bmQ6ICR7cmVxdWVzdC5wYXRofWApLFxuKTogUHJvbWlzZTxBUElHYXRld2F5UHJveHlSZXN1bHQ+IHtcbiAgY29uc29sZS5sb2coYEV4ZWN1dGluZyAke2NvbnRleHQuZnVuY3Rpb25OYW1lfSB2ZXJzaW9uOiAke3Byb2Nlc3MuZW52LkNPTU1JVF9IQVNIfWApO1xuICBjb25zdCByZXF1ZXN0ID0gcGFyc2VSZXF1ZXN0KGV2ZW50KTtcblxuICBsZXQgcmVzcG9uc2U6IFJlc3BvbnNlO1xuICB0cnkge1xuICAgIGNvbnN0IHJvdXRlID0gbWF0Y2hSb3V0ZShyb3V0ZXMsIHJlcXVlc3QucGF0aCk7XG4gICAgaWYgKCFyb3V0ZSkge1xuICAgICAgLy8gQ2F0Y2gtYWxsIC8gNDA0XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGNhdGNoQWxsKHJlcXVlc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBoYW5kbGVyRnVuY3Rpb24gPSByb3V0ZVtyZXF1ZXN0Lm1ldGhvZCBhcyBrZXlvZiBSb3V0ZV07XG5cbiAgICAgIC8vIEhhbmRsZSB0aGUgcmVxdWVzdDpcbiAgICAgIGlmIChoYW5kbGVyRnVuY3Rpb24pIHJlc3BvbnNlID0gYXdhaXQgaGFuZGxlckZ1bmN0aW9uKHJlcXVlc3QpO1xuICAgICAgZWxzZSByZXNwb25zZSA9IHRleHRSZXNwb25zZSg0MDUsICdNZXRob2Qgbm90IGFsbG93ZWQnKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBGYWxsYmFjayBlcnJvciBoYW5kbGluZ1xuICAgIGNvbnNvbGUuZXJyb3IoYCR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9XFxuJHsoZSBhcyBFcnJvcikuc3RhY2t9YCk7XG4gICAgcmVzcG9uc2UgPSB0ZXh0UmVzcG9uc2UoNTAwLCBgSW50ZXJuYWwgc2VydmVyIGVycm9yOiAke3JlcXVlc3QucGF0aH1gKTtcbiAgICB0cnkge1xuICAgICAgLy8gRXJyb3IgaGFuZGxpbmdcbiAgICAgIGlmIChlcnJvckhhbmRsZXIpIHJlc3BvbnNlID0gYXdhaXQgZXJyb3JIYW5kbGVyKHJlcXVlc3QsIGUgYXMgRXJyb3IpO1xuICAgIH0gY2F0Y2ggKGVlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBpbiBlcnJvciBoYW5kbGVyOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfVxcbiR7KGUgYXMgRXJyb3IpLnN0YWNrfWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFQSSBHYXRld2F5IFByb3h5IHJlc3VsdFxuICBsZXQgYm9keTogc3RyaW5nID0gJyc7XG4gIGlmICh0eXBlb2YgcmVzcG9uc2UuYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBVc2UgdGhlIGJvZHkgYXMtaXNcbiAgICAvLyBQb3RlbnRpYWxseSBhZGQgYSB0ZXh0L3BsYWluIGNvbnRlbnQgdHlwZSBoZWFkZXI6XG4gICAgcmVzcG9uc2UuaGVhZGVycyA9IHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3BsYWluJywgLi4ucmVzcG9uc2UuaGVhZGVycyB9O1xuICAgIGJvZHkgPSByZXNwb25zZS5ib2R5O1xuICB9IGVsc2UgaWYgKHJlc3BvbnNlLmJvZHkpIHtcbiAgICAvLyBTdHJpbmdpZnkgdGhlIHJlc3BvbnNlIG9iamVjdFxuICAgIC8vIEFQSSBHYXRld2F5IHJldHVybnMgYXBwbGljYXRpcG5vL2pzb24gYnkgZGVmYXVsdFxuICAgIGJvZHkgPSBKU09OLnN0cmluZ2lmeShyZXNwb25zZS5ib2R5KTtcbiAgfVxuICBjb25zdCByZXN1bHQ6IEFQSUdhdGV3YXlQcm94eVJlc3VsdCA9IHtcbiAgICBzdGF0dXNDb2RlOiByZXNwb25zZS5zdGF0dXNDb2RlLFxuICAgIGJvZHksXG4gICAgaGVhZGVyczogcmVzcG9uc2UuaGVhZGVycyxcbiAgfTtcblxuICAvLyBDb29raWVzIChpZiBzZXQpXG4gIGNvbnN0IGNvb2tpZUhlYWRlcnMgPSBidWlsZENvb2tpZShyZXNwb25zZS5jb29raWVzKTtcbiAgaWYgKGNvb2tpZUhlYWRlcnMpIHtcbiAgICByZXN1bHQubXVsdGlWYWx1ZUhlYWRlcnMgPSB7XG4gICAgICBDb29raWU6IGNvb2tpZUhlYWRlcnMsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
package/dist/types.d.ts CHANGED
@@ -16,7 +16,7 @@ export interface Request {
16
16
  cookies: {
17
17
  [name: string]: string;
18
18
  };
19
- body: object;
19
+ body: any;
20
20
  }
21
21
  export interface Response {
22
22
  statusCode: number;
package/dist/types.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2ltcGxpZmllZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgSFRUUCBSZXF1ZXN0LlxuICogVGhlIGltcGxlbWVudGF0aW9uIGd1YXJhbnRlZXMgdGhhdCB5b3UnbGwgYWx3YXlzIGhhdmUgbm9uLW51bGwgb2JqZWN0cyBmb3IgcXVlcnksIGhlYWRlcnMsIGNvb2tpZXMsIGFuZCBib2R5LlxuICogVGhlIG1ldGhvZCB3aWxsIGJlIHRoZSBIVFRQIG1ldGhvZCBmcm9tIHRoZSBBUEkgR2F0ZXdheSBwcm94dCBldmVudC5cbiAqIFRoZSBwYXRoIHdpbGwgYmUgdGhlIHBhdGggZnJvbSB0aGUgQVBJIEdhdGV3YXkgcHJveHkgZXZlbnQsIHdoaWNoIHN0YXJ0cyB3aXRoICcvJy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0IHtcbiAgbWV0aG9kOiBzdHJpbmcsXG4gIHBhdGg6IHN0cmluZyxcbiAgcXVlcnk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZzsgfSxcbiAgaGVhZGVyczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nOyB9LFxuICBjb29raWVzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmc7IH0sXG4gIGJvZHk6IG9iamVjdCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNwb25zZSB7XG4gIHN0YXR1c0NvZGU6IG51bWJlcixcbiAgaGVhZGVycz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZzsgfSxcbiAgY29va2llcz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZzsgfSxcbiAgYm9keT86IG9iamVjdCB8IHN0cmluZyxcbn1cblxuZXhwb3J0IHR5cGUgSGFuZGxlciA9IChyZXF1ZXN0OiBSZXF1ZXN0KSA9PiBQcm9taXNlPFJlc3BvbnNlPjtcbmV4cG9ydCBpbnRlcmZhY2UgUm91dGUge1xuICBHRVQ/OiBIYW5kbGVyLFxuICBQT1NUPzogSGFuZGxlcixcbiAgUFVUPzogSGFuZGxlcixcbiAgREVMRVRFPzogSGFuZGxlcixcbiAgT1BUSU9OUz86IEhhbmRsZXIsXG59XG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlcyB7IFtwYXRoOiBzdHJpbmddOiBSb3V0ZTsgfVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2ltcGxpZmllZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgSFRUUCBSZXF1ZXN0LlxuICogVGhlIGltcGxlbWVudGF0aW9uIGd1YXJhbnRlZXMgdGhhdCB5b3UnbGwgYWx3YXlzIGhhdmUgbm9uLW51bGwgb2JqZWN0cyBmb3IgcXVlcnksIGhlYWRlcnMsIGNvb2tpZXMsIGFuZCBib2R5LlxuICogVGhlIG1ldGhvZCB3aWxsIGJlIHRoZSBIVFRQIG1ldGhvZCBmcm9tIHRoZSBBUEkgR2F0ZXdheSBwcm94dCBldmVudC5cbiAqIFRoZSBwYXRoIHdpbGwgYmUgdGhlIHBhdGggZnJvbSB0aGUgQVBJIEdhdGV3YXkgcHJveHkgZXZlbnQsIHdoaWNoIHN0YXJ0cyB3aXRoICcvJy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0IHtcbiAgbWV0aG9kOiBzdHJpbmcsXG4gIHBhdGg6IHN0cmluZyxcbiAgcXVlcnk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZzsgfSxcbiAgaGVhZGVyczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nOyB9LFxuICBjb29raWVzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmc7IH0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGJvZHk6IGFueSxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNwb25zZSB7XG4gIHN0YXR1c0NvZGU6IG51bWJlcixcbiAgaGVhZGVycz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZzsgfSxcbiAgY29va2llcz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZzsgfSxcbiAgYm9keT86IG9iamVjdCB8IHN0cmluZyxcbn1cblxuZXhwb3J0IHR5cGUgSGFuZGxlciA9IChyZXF1ZXN0OiBSZXF1ZXN0KSA9PiBQcm9taXNlPFJlc3BvbnNlPjtcbmV4cG9ydCBpbnRlcmZhY2UgUm91dGUge1xuICBHRVQ/OiBIYW5kbGVyLFxuICBQT1NUPzogSGFuZGxlcixcbiAgUFVUPzogSGFuZGxlcixcbiAgREVMRVRFPzogSGFuZGxlcixcbiAgT1BUSU9OUz86IEhhbmRsZXIsXG59XG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlcyB7IFtwYXRoOiBzdHJpbmddOiBSb3V0ZTsgfVxuIl19
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@scloud/lambda-api",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Lambda handler for API Gateway proxy requests",
5
5
  "main": "dist/index.js",
6
6
  "files": [
7
7
  "dist/*"
8
8
  ],
9
9
  "scripts": {
10
- "lint": "eslint --fix src test",
10
+ "lint": "eslint --fix src/**/*",
11
11
  "test": "mocha --import=tsx -r tsconfig-paths/register 'test/**/*.spec.ts' # tsconfig-paths/register helps resolve imports in tests",
12
12
  "compile": "tsc",
13
13
  "package": "mkdir -p dist && cp -r js/src/* dist/"
@@ -39,16 +39,12 @@
39
39
  "@types/mocha": "*",
40
40
  "@types/node": "*",
41
41
  "@types/nunjucks": "*",
42
- "@typescript-eslint/eslint-plugin": "*",
43
- "@typescript-eslint/parser": "*",
44
42
  "axios": "*",
45
43
  "chai": "*",
46
44
  "eslint": "*",
47
- "eslint-config-airbnb-base": "*",
48
- "eslint-import-resolver-typescript": "*",
49
- "eslint-plugin-import": "*",
50
45
  "mocha": "*",
51
46
  "ts-node": "*",
47
+ "tsconfig-paths": "*",
52
48
  "tsx": "*",
53
49
  "typescript": "*",
54
50
  "typescript-eslint": "*"