@fintalk.ai/lambda-handlers 1.0.0 → 1.0.2

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.
Files changed (94) hide show
  1. package/lib/constants.d.ts +6 -0
  2. package/lib/constants.js +10 -0
  3. package/lib/constants.js.map +1 -0
  4. package/lib/errors/bad-request-error.d.ts +4 -0
  5. package/lib/errors/bad-request-error.js +34 -0
  6. package/lib/errors/bad-request-error.js.map +1 -0
  7. package/lib/errors/conflict-error.d.ts +4 -0
  8. package/lib/errors/conflict-error.js +33 -0
  9. package/lib/errors/conflict-error.js.map +1 -0
  10. package/lib/errors/fintalk-error.d.ts +36 -0
  11. package/lib/errors/fintalk-error.js +54 -0
  12. package/lib/errors/fintalk-error.js.map +1 -0
  13. package/lib/errors/forbidden-error.d.ts +4 -0
  14. package/lib/errors/forbidden-error.js +33 -0
  15. package/lib/errors/forbidden-error.js.map +1 -0
  16. package/lib/errors/gone-error.d.ts +4 -0
  17. package/lib/errors/gone-error.js +33 -0
  18. package/lib/errors/gone-error.js.map +1 -0
  19. package/lib/errors/internal-server-error.d.ts +4 -0
  20. package/lib/errors/internal-server-error.js +33 -0
  21. package/lib/errors/internal-server-error.js.map +1 -0
  22. package/lib/errors/not-acceptable-error.d.ts +4 -0
  23. package/lib/errors/not-acceptable-error.js +33 -0
  24. package/lib/errors/not-acceptable-error.js.map +1 -0
  25. package/lib/errors/not-found-error.d.ts +4 -0
  26. package/lib/errors/not-found-error.js +33 -0
  27. package/lib/errors/not-found-error.js.map +1 -0
  28. package/lib/errors/payment-required-error.d.ts +4 -0
  29. package/lib/errors/payment-required-error.js +33 -0
  30. package/lib/errors/payment-required-error.js.map +1 -0
  31. package/lib/errors/precondition-failed-error.d.ts +4 -0
  32. package/lib/errors/precondition-failed-error.js +33 -0
  33. package/lib/errors/precondition-failed-error.js.map +1 -0
  34. package/lib/errors/service-unavailable-error.d.ts +4 -0
  35. package/lib/errors/service-unavailable-error.js +33 -0
  36. package/lib/errors/service-unavailable-error.js.map +1 -0
  37. package/lib/errors/teapot-error.d.ts +4 -0
  38. package/lib/errors/teapot-error.js +33 -0
  39. package/lib/errors/teapot-error.js.map +1 -0
  40. package/lib/errors/too-many-requests-error.d.ts +4 -0
  41. package/lib/errors/too-many-requests-error.js +33 -0
  42. package/lib/errors/too-many-requests-error.js.map +1 -0
  43. package/lib/errors/unauthorized-error.d.ts +4 -0
  44. package/lib/errors/unauthorized-error.js +33 -0
  45. package/lib/errors/unauthorized-error.js.map +1 -0
  46. package/lib/errors/unprocessable-entity-error.d.ts +4 -0
  47. package/lib/errors/unprocessable-entity-error.js +34 -0
  48. package/lib/errors/unprocessable-entity-error.js.map +1 -0
  49. package/lib/handlers/api-proxy.d.ts +13 -0
  50. package/lib/handlers/api-proxy.js +163 -0
  51. package/lib/handlers/api-proxy.js.map +1 -0
  52. package/lib/handlers/api.d.ts +7 -0
  53. package/lib/handlers/api.js +106 -0
  54. package/lib/handlers/api.js.map +1 -0
  55. package/lib/handlers/invoke.d.ts +7 -0
  56. package/lib/handlers/invoke.js +83 -0
  57. package/lib/handlers/invoke.js.map +1 -0
  58. package/lib/handlers/sqs-v2.d.ts +21 -0
  59. package/lib/handlers/sqs-v2.js +140 -0
  60. package/lib/handlers/sqs-v2.js.map +1 -0
  61. package/lib/handlers/sqs.d.ts +7 -0
  62. package/lib/handlers/sqs.js +77 -0
  63. package/lib/handlers/sqs.js.map +1 -0
  64. package/lib/index.d.ts +22 -0
  65. package/lib/index.js +64 -0
  66. package/lib/index.js.map +1 -0
  67. package/lib/models.d.ts +72 -0
  68. package/lib/models.js +3 -0
  69. package/lib/models.js.map +1 -0
  70. package/lib/utils/compare-ignore-case.d.ts +2 -0
  71. package/lib/utils/compare-ignore-case.js +10 -0
  72. package/lib/utils/compare-ignore-case.js.map +1 -0
  73. package/lib/utils/extract-ip.d.ts +3 -0
  74. package/lib/utils/extract-ip.js +12 -0
  75. package/lib/utils/extract-ip.js.map +1 -0
  76. package/lib/utils/extract-user.d.ts +4 -0
  77. package/lib/utils/extract-user.js +57 -0
  78. package/lib/utils/extract-user.js.map +1 -0
  79. package/lib/utils/get-user-id.d.ts +3 -0
  80. package/lib/utils/get-user-id.js +18 -0
  81. package/lib/utils/get-user-id.js.map +1 -0
  82. package/lib/utils/json-parse.d.ts +2 -0
  83. package/lib/utils/json-parse.js +27 -0
  84. package/lib/utils/json-parse.js.map +1 -0
  85. package/lib/utils/lower-case-headers.d.ts +3 -0
  86. package/lib/utils/lower-case-headers.js +22 -0
  87. package/lib/utils/lower-case-headers.js.map +1 -0
  88. package/lib/utils/parse-body.d.ts +2 -0
  89. package/lib/utils/parse-body.js +19 -0
  90. package/lib/utils/parse-body.js.map +1 -0
  91. package/lib/utils/parse-request.d.ts +5 -0
  92. package/lib/utils/parse-request.js +44 -0
  93. package/lib/utils/parse-request.js.map +1 -0
  94. package/package.json +4 -6
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ var fintalk_error_1 = __importDefault(require("./fintalk-error"));
22
+ var TooManyRequestsError = (function (_super) {
23
+ __extends(TooManyRequestsError, _super);
24
+ function TooManyRequestsError(message) {
25
+ if (message === void 0) { message = 'Too Many Requests'; }
26
+ var _this = _super.call(this, message, 429) || this;
27
+ Object.setPrototypeOf(_this, TooManyRequestsError.prototype);
28
+ return _this;
29
+ }
30
+ return TooManyRequestsError;
31
+ }(fintalk_error_1.default));
32
+ exports.default = TooManyRequestsError;
33
+ //# sourceMappingURL=too-many-requests-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"too-many-requests-error.js","sourceRoot":"","sources":["../../src/errors/too-many-requests-error.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,kEAA0C;AAE1C;IAAkD,wCAAY;IAC5D,8BAAa,OAAqC;QAArC,wBAAA,EAAA,6BAAqC;QAAlD,YACE,kBAAM,OAAO,EAAE,GAAG,CAAC,SAEpB;QADC,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAA;;IAC7D,CAAC;IACH,2BAAC;AAAD,CAAC,AALD,CAAkD,uBAAY,GAK7D"}
@@ -0,0 +1,4 @@
1
+ import FintalkError from './fintalk-error';
2
+ export default class UnauthorizedError extends FintalkError {
3
+ constructor(message?: string);
4
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ var fintalk_error_1 = __importDefault(require("./fintalk-error"));
22
+ var UnauthorizedError = (function (_super) {
23
+ __extends(UnauthorizedError, _super);
24
+ function UnauthorizedError(message) {
25
+ if (message === void 0) { message = 'Unauthorized'; }
26
+ var _this = _super.call(this, message, 401) || this;
27
+ Object.setPrototypeOf(_this, UnauthorizedError.prototype);
28
+ return _this;
29
+ }
30
+ return UnauthorizedError;
31
+ }(fintalk_error_1.default));
32
+ exports.default = UnauthorizedError;
33
+ //# sourceMappingURL=unauthorized-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unauthorized-error.js","sourceRoot":"","sources":["../../src/errors/unauthorized-error.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,kEAA0C;AAE1C;IAA+C,qCAAY;IACzD,2BAAa,OAAgC;QAAhC,wBAAA,EAAA,wBAAgC;QAA7C,YACE,kBAAM,OAAO,EAAE,GAAG,CAAC,SAEpB;QADC,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAA;;IAC1D,CAAC;IACH,wBAAC;AAAD,CAAC,AALD,CAA+C,uBAAY,GAK1D"}
@@ -0,0 +1,4 @@
1
+ import FintalkError from './fintalk-error';
2
+ export default class UnprocessableEntityError extends FintalkError {
3
+ constructor(message?: string, details?: any[] | undefined);
4
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ var fintalk_error_1 = __importDefault(require("./fintalk-error"));
22
+ var UnprocessableEntityError = (function (_super) {
23
+ __extends(UnprocessableEntityError, _super);
24
+ function UnprocessableEntityError(message, details) {
25
+ if (message === void 0) { message = 'Unprocessable Entity'; }
26
+ if (details === void 0) { details = undefined; }
27
+ var _this = _super.call(this, message, 422, details) || this;
28
+ Object.setPrototypeOf(_this, UnprocessableEntityError.prototype);
29
+ return _this;
30
+ }
31
+ return UnprocessableEntityError;
32
+ }(fintalk_error_1.default));
33
+ exports.default = UnprocessableEntityError;
34
+ //# sourceMappingURL=unprocessable-entity-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unprocessable-entity-error.js","sourceRoot":"","sources":["../../src/errors/unprocessable-entity-error.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,kEAA0C;AAE1C;IAAsD,4CAAY;IAChE,kCACE,OAAwC,EACxC,OAAsC;QADtC,wBAAA,EAAA,gCAAwC;QACxC,wBAAA,EAAA,mBAAsC;QAFxC,YAIE,kBAAM,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,SAE7B;QADC,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAA;;IACjE,CAAC;IACH,+BAAC;AAAD,CAAC,AARD,CAAsD,uBAAY,GAQjE"}
@@ -0,0 +1,13 @@
1
+ import { APIGatewayProxyEvent, APIGatewayProxyResult, Context } from 'aws-lambda';
2
+ import { Options, Route } from '../models';
3
+ export declare class LambdaApiProxyHandler {
4
+ readonly base: string;
5
+ readonly routes: Route[];
6
+ constructor(options?: Options);
7
+ addRoute(route: Route): void;
8
+ corsObject(event: APIGatewayProxyEvent, headers: {
9
+ [key: string]: string;
10
+ }): APIGatewayProxyResult;
11
+ findRoute(event: APIGatewayProxyEvent): Route | undefined;
12
+ handler(event: APIGatewayProxyEvent, context: Context): Promise<APIGatewayProxyResult>;
13
+ }
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.LambdaApiProxyHandler = void 0;
54
+ var fintalk_logger_1 = __importDefault(require("fintalk-logger"));
55
+ var node_match_path_1 = require("node-match-path");
56
+ var constants_1 = require("../constants");
57
+ var not_found_error_1 = __importDefault(require("../errors/not-found-error"));
58
+ var compare_ignore_case_1 = __importDefault(require("../utils/compare-ignore-case"));
59
+ var parse_request_1 = __importDefault(require("../utils/parse-request"));
60
+ var LambdaApiProxyHandler = (function () {
61
+ function LambdaApiProxyHandler(options) {
62
+ this.routes = [];
63
+ this.base = options
64
+ && options.base
65
+ && typeof options.base === 'string'
66
+ ? options.base.trim()
67
+ : '';
68
+ }
69
+ LambdaApiProxyHandler.prototype.addRoute = function (route) {
70
+ this.routes.push(__assign(__assign({}, route), { path: "".concat(this.base).concat(route.path) }));
71
+ };
72
+ LambdaApiProxyHandler.prototype.corsObject = function (event, headers) {
73
+ var route = this.routes.find(function (_a) {
74
+ var path = _a.path;
75
+ var matches = (0, node_match_path_1.match)(path, event.path).matches;
76
+ return matches;
77
+ });
78
+ if (!route) {
79
+ fintalk_logger_1.default.warn({
80
+ message: 'Route not found',
81
+ path: event.path,
82
+ method: event.httpMethod,
83
+ });
84
+ throw new not_found_error_1.default();
85
+ }
86
+ return {
87
+ headers: headers,
88
+ statusCode: 200,
89
+ body: '{}',
90
+ };
91
+ };
92
+ LambdaApiProxyHandler.prototype.findRoute = function (event) {
93
+ return this.routes.find(function (_a) {
94
+ var path = _a.path, method = _a.method;
95
+ var matches = (0, node_match_path_1.match)(path, event.path).matches;
96
+ return matches && (0, compare_ignore_case_1.default)(method, event.httpMethod);
97
+ });
98
+ };
99
+ LambdaApiProxyHandler.prototype.handler = function (event, context) {
100
+ var _a;
101
+ return __awaiter(this, void 0, void 0, function () {
102
+ var method, route, request, _b, response, error_1;
103
+ return __generator(this, function (_c) {
104
+ switch (_c.label) {
105
+ case 0:
106
+ _c.trys.push([0, 4, , 5]);
107
+ method = event.httpMethod.toUpperCase();
108
+ if (method === 'OPTIONS') {
109
+ return [2, this.corsObject(event, constants_1.defaultHeaders)];
110
+ }
111
+ route = this.findRoute(event);
112
+ if (!route) {
113
+ fintalk_logger_1.default.warn({
114
+ message: 'Route not found',
115
+ path: event.path,
116
+ method: method,
117
+ });
118
+ throw new not_found_error_1.default();
119
+ }
120
+ request = (0, parse_request_1.default)(event, context, route.path);
121
+ if (!route.auth) return [3, 2];
122
+ _b = request;
123
+ return [4, route.auth(request)];
124
+ case 1:
125
+ _b.auth = _c.sent();
126
+ _c.label = 2;
127
+ case 2: return [4, route.run(request)];
128
+ case 3:
129
+ response = _c.sent();
130
+ return [2, {
131
+ headers: __assign(__assign({}, constants_1.defaultHeaders), response.headers),
132
+ multiValueHeaders: response.multiValueHeaders,
133
+ statusCode: (_a = response.statusCode) !== null && _a !== void 0 ? _a : 200,
134
+ body: JSON.stringify(response.body),
135
+ }];
136
+ case 4:
137
+ error_1 = _c.sent();
138
+ if (error_1.isTreated) {
139
+ return [2, {
140
+ headers: constants_1.defaultHeaders,
141
+ statusCode: error_1.code,
142
+ body: JSON.stringify(error_1.toObject()),
143
+ }];
144
+ }
145
+ fintalk_logger_1.default.error(error_1);
146
+ return [2, {
147
+ headers: constants_1.defaultHeaders,
148
+ statusCode: 500,
149
+ body: JSON.stringify({
150
+ error: {
151
+ message: 'Internal Server Error',
152
+ },
153
+ }),
154
+ }];
155
+ case 5: return [2];
156
+ }
157
+ });
158
+ });
159
+ };
160
+ return LambdaApiProxyHandler;
161
+ }());
162
+ exports.LambdaApiProxyHandler = LambdaApiProxyHandler;
163
+ //# sourceMappingURL=api-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-proxy.js","sourceRoot":"","sources":["../../src/handlers/api-proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { APIGatewayProxyEvent, APIGatewayProxyResult, Context } from 'aws-lambda';
2
+ import { Controller } from '../models';
3
+ export declare class LambdaApiHandler {
4
+ readonly controller: Controller;
5
+ constructor(controller: Controller);
6
+ handler(event: APIGatewayProxyEvent, context: Context): Promise<APIGatewayProxyResult>;
7
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.LambdaApiHandler = void 0;
54
+ var fintalk_logger_1 = __importDefault(require("fintalk-logger"));
55
+ var constants_1 = require("../constants");
56
+ var parse_request_1 = __importDefault(require("../utils/parse-request"));
57
+ var LambdaApiHandler = (function () {
58
+ function LambdaApiHandler(controller) {
59
+ this.controller = controller;
60
+ }
61
+ LambdaApiHandler.prototype.handler = function (event, context) {
62
+ var _a;
63
+ return __awaiter(this, void 0, void 0, function () {
64
+ var request, response, error_1;
65
+ return __generator(this, function (_b) {
66
+ switch (_b.label) {
67
+ case 0:
68
+ _b.trys.push([0, 2, , 3]);
69
+ request = (0, parse_request_1.default)(event, context);
70
+ return [4, this.controller(request)];
71
+ case 1:
72
+ response = _b.sent();
73
+ return [2, {
74
+ headers: __assign(__assign({}, constants_1.defaultHeaders), response.headers),
75
+ multiValueHeaders: response.multiValueHeaders,
76
+ statusCode: (_a = response.statusCode) !== null && _a !== void 0 ? _a : 200,
77
+ body: JSON.stringify(response.body),
78
+ }];
79
+ case 2:
80
+ error_1 = _b.sent();
81
+ if (error_1.isTreated) {
82
+ return [2, {
83
+ headers: constants_1.defaultHeaders,
84
+ statusCode: error_1.code,
85
+ body: JSON.stringify(error_1.toObject()),
86
+ }];
87
+ }
88
+ fintalk_logger_1.default.error(error_1);
89
+ return [2, {
90
+ headers: constants_1.defaultHeaders,
91
+ statusCode: 500,
92
+ body: JSON.stringify({
93
+ error: {
94
+ message: 'Internal Server Error',
95
+ },
96
+ }),
97
+ }];
98
+ case 3: return [2];
99
+ }
100
+ });
101
+ });
102
+ };
103
+ return LambdaApiHandler;
104
+ }());
105
+ exports.LambdaApiHandler = LambdaApiHandler;
106
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/handlers/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,kEAAmC;AAEnC,0CAA6C;AAE7C,yEAAiD;AAEjD;IAGE,0BAAa,UAAsB;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAEK,kCAAO,GAAb,UACE,KAA2B,EAC3B,OAAgB;;;;;;;;wBAGR,OAAO,GAAG,IAAA,uBAAY,EAAC,KAAK,EAAE,OAAO,CAAC,CAAA;wBAC3B,WAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAA;;wBAAzC,QAAQ,GAAG,SAA8B;wBAE/C,WAAO;gCACL,OAAO,wBACF,0BAAc,GACd,QAAQ,CAAC,OAAO,CACpB;gCACD,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;gCAC7C,UAAU,EAAE,MAAA,QAAQ,CAAC,UAAU,mCAAI,GAAG;gCACtC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;6BACpC,EAAA;;;wBAED,IAAI,OAAK,CAAC,SAAS,EAAE;4BACnB,WAAO;oCACL,OAAO,EAAE,0BAAc;oCACvB,UAAU,EAAE,OAAK,CAAC,IAAI;oCACtB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAK,CAAC,QAAQ,EAAE,CAAC;iCACvC,EAAA;yBACF;wBAED,wBAAM,CAAC,KAAK,CAAC,OAAK,CAAC,CAAA;wBACnB,WAAO;gCACL,OAAO,EAAE,0BAAc;gCACvB,UAAU,EAAE,GAAG;gCACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oCACnB,KAAK,EAAE;wCACL,OAAO,EAAE,uBAAuB;qCACjC;iCACF,CAAC;6BACH,EAAA;;;;;KAEJ;IACH,uBAAC;AAAD,CAAC,AA7CD,IA6CC;AA7CY,4CAAgB"}
@@ -0,0 +1,7 @@
1
+ import { Context } from 'aws-lambda';
2
+ import { InvokeHandler, InvokeResponse } from '../models';
3
+ export declare class LambdaInvokeHandler {
4
+ readonly invokeHandler: InvokeHandler;
5
+ constructor(handler: InvokeHandler);
6
+ handler(event: any, context: Context): Promise<InvokeResponse<any>>;
7
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.LambdaInvokeHandler = void 0;
43
+ var fintalk_logger_1 = __importDefault(require("fintalk-logger"));
44
+ var LambdaInvokeHandler = (function () {
45
+ function LambdaInvokeHandler(handler) {
46
+ this.invokeHandler = handler;
47
+ }
48
+ LambdaInvokeHandler.prototype.handler = function (event, context) {
49
+ return __awaiter(this, void 0, void 0, function () {
50
+ var response, error_1;
51
+ return __generator(this, function (_a) {
52
+ switch (_a.label) {
53
+ case 0:
54
+ _a.trys.push([0, 2, , 3]);
55
+ return [4, this.invokeHandler(event, context)];
56
+ case 1:
57
+ response = _a.sent();
58
+ return [2, response];
59
+ case 2:
60
+ error_1 = _a.sent();
61
+ if (error_1.isTreated) {
62
+ return [2, {
63
+ success: false,
64
+ error: error_1.toObject(),
65
+ }];
66
+ }
67
+ fintalk_logger_1.default.error(error_1);
68
+ return [2, {
69
+ success: false,
70
+ error: {
71
+ message: error_1.message,
72
+ code: error_1.code,
73
+ },
74
+ }];
75
+ case 3: return [2];
76
+ }
77
+ });
78
+ });
79
+ };
80
+ return LambdaInvokeHandler;
81
+ }());
82
+ exports.LambdaInvokeHandler = LambdaInvokeHandler;
83
+ //# sourceMappingURL=invoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../src/handlers/invoke.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kEAAmC;AAInC;IAGE,6BAAa,OAAsB;QACjC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAA;IAC9B,CAAC;IAEK,qCAAO,GAAb,UACE,KAAU,EACV,OAAgB;;;;;;;wBAGG,WAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EAAA;;wBAAnD,QAAQ,GAAG,SAAwC;wBAEzD,WAAO,QAAQ,EAAA;;;wBAEf,IAAI,OAAK,CAAC,SAAS,EAAE;4BACnB,WAAO;oCACL,OAAO,EAAE,KAAK;oCACd,KAAK,EAAE,OAAK,CAAC,QAAQ,EAAE;iCACxB,EAAA;yBACF;wBAED,wBAAM,CAAC,KAAK,CAAC,OAAK,CAAC,CAAA;wBACnB,WAAO;gCACL,OAAO,EAAE,KAAK;gCACd,KAAK,EAAE;oCACL,OAAO,EAAE,OAAK,CAAC,OAAO;oCACtB,IAAI,EAAE,OAAK,CAAC,IAAI;iCACjB;6BACF,EAAA;;;;;KAEJ;IACH,0BAAC;AAAD,CAAC,AAjCD,IAiCC;AAjCY,kDAAmB"}
@@ -0,0 +1,21 @@
1
+ import { SQSBatchResponse, SQSEvent, SQSRecord } from 'aws-lambda';
2
+ import Logger from 'fintalk-logger/lib/logger';
3
+ import { WorkerV2 } from '../models';
4
+ export interface LambdaSqsHandlerV2Options {
5
+ worker: WorkerV2;
6
+ service: string;
7
+ parallel: boolean;
8
+ }
9
+ export declare class LambdaSqsHandlerV2 {
10
+ readonly options: LambdaSqsHandlerV2Options;
11
+ constructor(options: LambdaSqsHandlerV2Options);
12
+ parseBody(body: string, logger: Logger): {
13
+ success: boolean;
14
+ data: any;
15
+ } | {
16
+ success: boolean;
17
+ data?: undefined;
18
+ };
19
+ executeWorker(record: SQSRecord): Promise<string | null>;
20
+ handler(event: SQSEvent): Promise<SQSBatchResponse>;
21
+ }