@fintalk.ai/lambda-handlers 1.0.4 → 2.1.3

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 (115) hide show
  1. package/README.md +62 -20
  2. package/lib/errors/bad-request-error.d.ts +1 -1
  3. package/lib/errors/bad-request-error.js +3 -2
  4. package/lib/errors/bad-request-error.js.map +1 -1
  5. package/lib/errors/conflict-error.d.ts +1 -1
  6. package/lib/errors/conflict-error.js +4 -2
  7. package/lib/errors/conflict-error.js.map +1 -1
  8. package/lib/errors/fintalk-error.d.ts +11 -6
  9. package/lib/errors/fintalk-error.js +3 -2
  10. package/lib/errors/fintalk-error.js.map +1 -1
  11. package/lib/errors/forbidden-error.d.ts +1 -1
  12. package/lib/errors/forbidden-error.js +4 -2
  13. package/lib/errors/forbidden-error.js.map +1 -1
  14. package/lib/errors/gone-error.d.ts +1 -1
  15. package/lib/errors/gone-error.js +4 -2
  16. package/lib/errors/gone-error.js.map +1 -1
  17. package/lib/errors/internal-server-error.d.ts +1 -1
  18. package/lib/errors/internal-server-error.js +4 -2
  19. package/lib/errors/internal-server-error.js.map +1 -1
  20. package/lib/errors/not-acceptable-error.d.ts +1 -1
  21. package/lib/errors/not-acceptable-error.js +4 -2
  22. package/lib/errors/not-acceptable-error.js.map +1 -1
  23. package/lib/errors/not-found-error.d.ts +1 -1
  24. package/lib/errors/not-found-error.js +4 -2
  25. package/lib/errors/not-found-error.js.map +1 -1
  26. package/lib/errors/payment-required-error.d.ts +1 -1
  27. package/lib/errors/payment-required-error.js +4 -2
  28. package/lib/errors/payment-required-error.js.map +1 -1
  29. package/lib/errors/precondition-failed-error.d.ts +1 -1
  30. package/lib/errors/precondition-failed-error.js +4 -2
  31. package/lib/errors/precondition-failed-error.js.map +1 -1
  32. package/lib/errors/service-unavailable-error.d.ts +1 -1
  33. package/lib/errors/service-unavailable-error.js +4 -2
  34. package/lib/errors/service-unavailable-error.js.map +1 -1
  35. package/lib/errors/teapot-error.d.ts +1 -1
  36. package/lib/errors/teapot-error.js +4 -2
  37. package/lib/errors/teapot-error.js.map +1 -1
  38. package/lib/errors/too-many-requests-error.d.ts +1 -1
  39. package/lib/errors/too-many-requests-error.js +4 -2
  40. package/lib/errors/too-many-requests-error.js.map +1 -1
  41. package/lib/errors/unauthorized-error.d.ts +1 -1
  42. package/lib/errors/unauthorized-error.js +4 -2
  43. package/lib/errors/unauthorized-error.js.map +1 -1
  44. package/lib/errors/unprocessable-entity-error.d.ts +1 -1
  45. package/lib/errors/unprocessable-entity-error.js +4 -3
  46. package/lib/errors/unprocessable-entity-error.js.map +1 -1
  47. package/lib/errors/websocket-error.d.ts +40 -0
  48. package/lib/errors/websocket-error.js +54 -0
  49. package/lib/errors/websocket-error.js.map +1 -0
  50. package/lib/handlers/api-proxy.js +150 -56
  51. package/lib/handlers/api-proxy.js.map +1 -1
  52. package/lib/handlers/api.d.ts +5 -1
  53. package/lib/handlers/api.js +130 -38
  54. package/lib/handlers/api.js.map +1 -1
  55. package/lib/handlers/authorizer.d.ts +7 -0
  56. package/lib/handlers/authorizer.js +181 -0
  57. package/lib/handlers/authorizer.js.map +1 -0
  58. package/lib/handlers/cloudwatch.d.ts +7 -0
  59. package/lib/handlers/cloudwatch.js +143 -0
  60. package/lib/handlers/cloudwatch.js.map +1 -0
  61. package/lib/handlers/invoke.d.ts +7 -1
  62. package/lib/handlers/invoke.js +101 -26
  63. package/lib/handlers/invoke.js.map +1 -1
  64. package/lib/handlers/kinesis.d.ts +13 -0
  65. package/lib/handlers/kinesis.js +193 -0
  66. package/lib/handlers/kinesis.js.map +1 -0
  67. package/lib/handlers/lambda-proxy/index.d.ts +8 -0
  68. package/lib/handlers/lambda-proxy/index.js +182 -0
  69. package/lib/handlers/lambda-proxy/index.js.map +1 -0
  70. package/lib/handlers/lambda-proxy/validate-event-data.d.ts +3 -0
  71. package/lib/handlers/lambda-proxy/validate-event-data.js +26 -0
  72. package/lib/handlers/lambda-proxy/validate-event-data.js.map +1 -0
  73. package/lib/handlers/sqs-v2.d.ts +5 -3
  74. package/lib/handlers/sqs-v2.js +110 -22
  75. package/lib/handlers/sqs-v2.js.map +1 -1
  76. package/lib/handlers/sqs.d.ts +11 -2
  77. package/lib/handlers/sqs.js +119 -16
  78. package/lib/handlers/sqs.js.map +1 -1
  79. package/lib/index.d.ts +4 -0
  80. package/lib/index.js +9 -1
  81. package/lib/index.js.map +1 -1
  82. package/lib/models.d.ts +9 -2
  83. package/lib/utils/check-envs.d.ts +3 -0
  84. package/lib/utils/check-envs.js +14 -0
  85. package/lib/utils/check-envs.js.map +1 -0
  86. package/lib/utils/convert-query-string.d.ts +3 -0
  87. package/lib/utils/convert-query-string.js +18 -0
  88. package/lib/utils/convert-query-string.js.map +1 -0
  89. package/lib/utils/extract-queue-name.d.ts +2 -0
  90. package/lib/utils/extract-queue-name.js +9 -0
  91. package/lib/utils/extract-queue-name.js.map +1 -0
  92. package/lib/utils/find-path.d.ts +2 -0
  93. package/lib/utils/find-path.js +14 -0
  94. package/lib/utils/find-path.js.map +1 -0
  95. package/lib/utils/kinesis-parse.d.ts +2 -0
  96. package/lib/utils/kinesis-parse.js +14 -0
  97. package/lib/utils/kinesis-parse.js.map +1 -0
  98. package/lib/utils/lower-case-headers.d.ts +2 -2
  99. package/lib/utils/lower-case-headers.js.map +1 -1
  100. package/lib/utils/parse-authorizer-request.d.ts +4 -0
  101. package/lib/utils/parse-authorizer-request.js +32 -0
  102. package/lib/utils/parse-authorizer-request.js.map +1 -0
  103. package/lib/utils/parse-path-params.d.ts +2 -0
  104. package/lib/utils/parse-path-params.js +14 -0
  105. package/lib/utils/parse-path-params.js.map +1 -0
  106. package/lib/utils/parse-request.d.ts +0 -1
  107. package/lib/utils/parse-request.js +3 -12
  108. package/lib/utils/parse-request.js.map +1 -1
  109. package/lib/utils/provider-flush.d.ts +4 -0
  110. package/lib/utils/provider-flush.js +81 -0
  111. package/lib/utils/provider-flush.js.map +1 -0
  112. package/lib/utils/sleep.d.ts +2 -0
  113. package/lib/utils/sleep.js +7 -0
  114. package/lib/utils/sleep.js.map +1 -0
  115. package/package.json +26 -34
@@ -21,10 +21,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
21
21
  var fintalk_error_1 = __importDefault(require("./fintalk-error"));
22
22
  var UnprocessableEntityError = (function (_super) {
23
23
  __extends(UnprocessableEntityError, _super);
24
- function UnprocessableEntityError(message, details) {
24
+ function UnprocessableEntityError(message, details, user_error_code) {
25
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;
26
+ if (details === void 0) { details = []; }
27
+ if (user_error_code === void 0) { user_error_code = ''; }
28
+ var _this = _super.call(this, message, 422, details, user_error_code) || this;
28
29
  Object.setPrototypeOf(_this, UnprocessableEntityError.prototype);
29
30
  return _this;
30
31
  }
@@ -1 +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"}
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,OAAmB,EACnB,eAA4B;QAF5B,wBAAA,EAAA,gCAAwC;QACxC,wBAAA,EAAA,YAAmB;QACnB,gCAAA,EAAA,oBAA4B;QAH9B,YAKE,kBAAM,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,CAAC,SAE9C;QADC,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAA;;IACjE,CAAC;IACH,+BAAC;AAAD,CAAC,AATD,CAAsD,uBAAY,GASjE"}
@@ -0,0 +1,40 @@
1
+ export default class WebsocketError extends Error {
2
+ isTreated: boolean;
3
+ code: number;
4
+ details?: any;
5
+ constructor(message: string, code?: number, details?: any);
6
+ getDetails(): {
7
+ details?: undefined;
8
+ } | {
9
+ details: any;
10
+ };
11
+ toObject(): {
12
+ error: boolean;
13
+ status: number;
14
+ body: {
15
+ details?: undefined;
16
+ code: number;
17
+ message: string;
18
+ } | {
19
+ details: any;
20
+ code: number;
21
+ message: string;
22
+ };
23
+ details?: undefined;
24
+ name: string;
25
+ } | {
26
+ error: boolean;
27
+ status: number;
28
+ body: {
29
+ details?: undefined;
30
+ code: number;
31
+ message: string;
32
+ } | {
33
+ details: any;
34
+ code: number;
35
+ message: string;
36
+ };
37
+ details: any;
38
+ name: string;
39
+ };
40
+ }
@@ -0,0 +1,54 @@
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 __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ var WebsocketError = (function (_super) {
30
+ __extends(WebsocketError, _super);
31
+ function WebsocketError(message, code, details) {
32
+ var _this = _super.call(this, message) || this;
33
+ _this.isTreated = true;
34
+ _this.message = message;
35
+ _this.code = code || 400;
36
+ _this.details = details;
37
+ Object.setPrototypeOf(_this, WebsocketError.prototype);
38
+ return _this;
39
+ }
40
+ WebsocketError.prototype.getDetails = function () {
41
+ if (!this.details) {
42
+ return {};
43
+ }
44
+ return {
45
+ details: this.details,
46
+ };
47
+ };
48
+ WebsocketError.prototype.toObject = function () {
49
+ return __assign(__assign({ name: this.message }, this.getDetails()), { error: true, status: this.code, body: __assign({ code: this.code, message: this.message }, this.getDetails()) });
50
+ };
51
+ return WebsocketError;
52
+ }(Error));
53
+ exports.default = WebsocketError;
54
+ //# sourceMappingURL=websocket-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-error.js","sourceRoot":"","sources":["../../src/errors/websocket-error.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;IAA4C,kCAAK;IAK/C,wBAAa,OAAe,EAAE,IAAa,EAAE,OAAa;QAA1D,YACE,kBAAM,OAAO,CAAC,SAQf;QANC,KAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,KAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,KAAI,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,CAAA;QACvB,KAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;;IACvD,CAAC;IAED,mCAAU,GAAV;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO,EAAE,CAAA;SACV;QAED,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAA;IACH,CAAC;IAED,iCAAQ,GAAR;QACE,2BACE,IAAI,EAAE,IAAI,CAAC,OAAO,IACf,IAAI,CAAC,UAAU,EAAE,KACpB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,CAAC,IAAI,EACjB,IAAI,aACF,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,IAAI,CAAC,OAAO,IAClB,IAAI,CAAC,UAAU,EAAE,KAEvB;IACH,CAAC;IACH,qBAAC;AAAD,CAAC,AAvCD,CAA4C,KAAK,GAuChD"}
@@ -51,12 +51,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
51
51
  };
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.LambdaApiProxyHandler = void 0;
54
+ var api_1 = require("@opentelemetry/api");
55
+ var core_1 = require("@opentelemetry/core");
56
+ var semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
57
+ var otlp_1 = require("@stone-ton/otlp");
54
58
  var fintalk_logger_1 = __importDefault(require("fintalk-logger"));
55
59
  var node_match_path_1 = require("node-match-path");
56
60
  var constants_1 = require("../constants");
57
61
  var not_found_error_1 = __importDefault(require("../errors/not-found-error"));
62
+ var check_envs_1 = __importDefault(require("../utils/check-envs"));
58
63
  var compare_ignore_case_1 = __importDefault(require("../utils/compare-ignore-case"));
64
+ var convert_query_string_1 = __importDefault(require("../utils/convert-query-string"));
59
65
  var parse_request_1 = __importDefault(require("../utils/parse-request"));
66
+ var provider_flush_1 = __importDefault(require("../utils/provider-flush"));
60
67
  var LambdaApiProxyHandler = (function () {
61
68
  function LambdaApiProxyHandler(options) {
62
69
  this.routes = [];
@@ -97,63 +104,150 @@ var LambdaApiProxyHandler = (function () {
97
104
  });
98
105
  };
99
106
  LambdaApiProxyHandler.prototype.handler = function (event, context) {
100
- var _a;
101
107
  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
- }
108
+ var activeContext;
109
+ var _this = this;
110
+ return __generator(this, function (_a) {
111
+ (0, check_envs_1.default)(fintalk_logger_1.default);
112
+ activeContext = api_1.propagation.extract(api_1.context.active(), {
113
+ traceparent: event.headers.traceparent,
114
+ });
115
+ return [2, otlp_1.tracer.startActiveSpan('handler', {
116
+ kind: api_1.SpanKind.SERVER,
117
+ startTime: (0, core_1.hrTime)(),
118
+ }, activeContext, function (span) { return __awaiter(_this, void 0, void 0, function () {
119
+ var remainingTimeInMillis, timeout, spanContext, request, method, route, _a, response, error_1;
120
+ var _b;
121
+ var _c, _d, _e, _f, _g, _h, _j;
122
+ return __generator(this, function (_k) {
123
+ switch (_k.label) {
124
+ case 0:
125
+ remainingTimeInMillis = context.getRemainingTimeInMillis();
126
+ timeout = setTimeout(function () {
127
+ span.setStatus({
128
+ code: api_1.SpanStatusCode.ERROR,
129
+ message: 'Detected an impending timeout',
130
+ });
131
+ span.end((0, core_1.hrTime)());
132
+ (0, provider_flush_1.default)(otlp_1.tracerProvider);
133
+ }, remainingTimeInMillis - 100);
134
+ _k.label = 1;
135
+ case 1:
136
+ _k.trys.push([1, 5, 6, 8]);
137
+ spanContext = span.spanContext();
138
+ fintalk_logger_1.default.setCustomArgs({
139
+ dd: {
140
+ trace_id: spanContext.traceId,
141
+ span_id: spanContext.spanId,
142
+ },
143
+ });
144
+ request = (0, parse_request_1.default)(event, context);
145
+ span.setAttributes((_b = {},
146
+ _b[semantic_conventions_1.SemanticResourceAttributes.CLOUD_REGION] = process.env.AWS_REGION,
147
+ _b[semantic_conventions_1.SemanticResourceAttributes.CLOUD_PLATFORM] = semantic_conventions_1.CloudPlatformValues.AWS_LAMBDA,
148
+ _b['faas.version'] = process.env.AWS_EXECUTION_ENV,
149
+ _b[semantic_conventions_1.SemanticAttributes.FAAS_EXECUTION] = request.id,
150
+ _b[semantic_conventions_1.SemanticResourceAttributes.FAAS_MAX_MEMORY] = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE,
151
+ _b[semantic_conventions_1.SemanticResourceAttributes.FAAS_NAME] = context.functionName,
152
+ _b[semantic_conventions_1.SemanticResourceAttributes.FAAS_ID] = context.invokedFunctionArn,
153
+ _b[semantic_conventions_1.SemanticAttributes.FAAS_TRIGGER] = semantic_conventions_1.FaasTriggerValues.HTTP,
154
+ _b['client.address'] = request.ip,
155
+ _b['server.address'] = event.requestContext.domainName,
156
+ _b['server.port'] = '443',
157
+ _b['http.request.method'] = request.method,
158
+ _b['url.path'] = request.path,
159
+ _b['url.query'] = (0, convert_query_string_1.default)(request.multiValueQuery),
160
+ _b['url.scheme'] = 'https',
161
+ _b['user_agent.original'] = request.userAgent,
162
+ _b));
163
+ method = event.httpMethod.toUpperCase();
164
+ if (method === 'OPTIONS') {
165
+ return [2, this.corsObject(event, constants_1.defaultHeaders)];
166
+ }
167
+ route = this.findRoute(event);
168
+ if (!route) {
169
+ fintalk_logger_1.default.warn({
170
+ message: 'Route not found',
171
+ path: event.path,
172
+ method: method,
173
+ });
174
+ throw new not_found_error_1.default();
175
+ }
176
+ span.setAttribute('http.route', route.path);
177
+ request = (0, parse_request_1.default)(event, context, route.path);
178
+ if (!route.auth) return [3, 3];
179
+ _a = request;
180
+ return [4, route.auth(request)];
181
+ case 2:
182
+ _a.auth = _k.sent();
183
+ _k.label = 3;
184
+ case 3:
185
+ span.setAttributes({
186
+ user_id: (_c = request.user) === null || _c === void 0 ? void 0 : _c.id,
187
+ email: (_d = request.user) === null || _d === void 0 ? void 0 : _d.email,
188
+ });
189
+ if (process.env.OTLP_LAMBDA_DEBUG === 'true') {
190
+ span.setAttributes({
191
+ 'http.request.body': JSON.stringify(request.body),
192
+ 'http.request.headers': JSON.stringify(request.headers),
193
+ });
194
+ }
195
+ return [4, route.run(request, context)];
196
+ case 4:
197
+ response = _k.sent();
198
+ span.setAttribute('http.response.status_code', (_f = (_e = response.statusCode) === null || _e === void 0 ? void 0 : _e.toString()) !== null && _f !== void 0 ? _f : '200');
199
+ if (process.env.OTLP_LAMBDA_DEBUG === 'true') {
200
+ span.setAttributes({
201
+ 'http.response.body': JSON.stringify(response.body),
202
+ 'http.response.headers': JSON.stringify(response.headers),
203
+ });
204
+ }
205
+ span.setStatus({ code: api_1.SpanStatusCode.OK });
206
+ return [2, {
207
+ headers: __assign(__assign({}, constants_1.defaultHeaders), response.headers),
208
+ multiValueHeaders: response.multiValueHeaders,
209
+ statusCode: (_g = response.statusCode) !== null && _g !== void 0 ? _g : 200,
210
+ body: JSON.stringify(response.body),
211
+ }];
212
+ case 5:
213
+ error_1 = _k.sent();
214
+ span.setAttributes({
215
+ 'exception.message': error_1.message,
216
+ 'exception.stacktrace': error_1.trace,
217
+ 'http.response.status_code': (_j = (_h = error_1.code) === null || _h === void 0 ? void 0 : _h.toString()) !== null && _j !== void 0 ? _j : '500',
218
+ });
219
+ span.setStatus({
220
+ code: api_1.SpanStatusCode.ERROR,
221
+ message: error_1.message,
222
+ });
223
+ if (error_1.isTreated) {
224
+ return [2, {
225
+ headers: constants_1.defaultHeaders,
226
+ statusCode: error_1.code,
227
+ body: JSON.stringify(error_1.toObject()),
228
+ }];
229
+ }
230
+ fintalk_logger_1.default.error(error_1);
231
+ return [2, {
232
+ headers: constants_1.defaultHeaders,
233
+ statusCode: 500,
234
+ body: JSON.stringify({
235
+ error: {
236
+ message: 'Internal Server Error',
237
+ },
238
+ }),
239
+ }];
240
+ case 6:
241
+ clearTimeout(timeout);
242
+ span.end((0, core_1.hrTime)());
243
+ return [4, (0, provider_flush_1.default)(otlp_1.tracerProvider)];
244
+ case 7:
245
+ _k.sent();
246
+ return [7];
247
+ case 8: return [2];
248
+ }
249
+ });
250
+ }); })];
157
251
  });
158
252
  });
159
253
  };
@@ -1 +1 @@
1
- {"version":3,"file":"api-proxy.js","sourceRoot":"","sources":["../../src/handlers/api-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-proxy.js","sourceRoot":"","sources":["../../src/handlers/api-proxy.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  import { APIGatewayProxyEvent, APIGatewayProxyResult, Context } from 'aws-lambda';
2
2
  import { Controller } from '../models';
3
+ export interface Options {
4
+ path?: string;
5
+ }
3
6
  export declare class LambdaApiHandler {
4
7
  readonly controller: Controller;
5
- constructor(controller: Controller);
8
+ readonly options: Options;
9
+ constructor(controller: Controller, options?: Options);
6
10
  handler(event: APIGatewayProxyEvent, context: Context): Promise<APIGatewayProxyResult>;
7
11
  }
@@ -51,52 +51,144 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
51
51
  };
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.LambdaApiHandler = void 0;
54
+ var api_1 = require("@opentelemetry/api");
55
+ var core_1 = require("@opentelemetry/core");
56
+ var semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
57
+ var otlp_1 = require("@stone-ton/otlp");
54
58
  var fintalk_logger_1 = __importDefault(require("fintalk-logger"));
55
59
  var constants_1 = require("../constants");
60
+ var check_envs_1 = __importDefault(require("../utils/check-envs"));
61
+ var convert_query_string_1 = __importDefault(require("../utils/convert-query-string"));
56
62
  var parse_request_1 = __importDefault(require("../utils/parse-request"));
63
+ var provider_flush_1 = __importDefault(require("../utils/provider-flush"));
57
64
  var LambdaApiHandler = (function () {
58
- function LambdaApiHandler(controller) {
65
+ function LambdaApiHandler(controller, options) {
66
+ if (options === void 0) { options = {}; }
59
67
  this.controller = controller;
68
+ this.options = options;
60
69
  }
61
70
  LambdaApiHandler.prototype.handler = function (event, context) {
62
- var _a;
63
71
  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
- }
72
+ var activeContext;
73
+ var _this = this;
74
+ return __generator(this, function (_a) {
75
+ (0, check_envs_1.default)(fintalk_logger_1.default);
76
+ activeContext = api_1.propagation.extract(api_1.context.active(), {
77
+ traceparent: event.headers.traceparent,
78
+ });
79
+ return [2, otlp_1.tracer.startActiveSpan('handler', {
80
+ kind: api_1.SpanKind.SERVER,
81
+ startTime: (0, core_1.hrTime)(),
82
+ }, activeContext, function (span) { return __awaiter(_this, void 0, void 0, function () {
83
+ var remainingTimeInMillis, timeout, spanContext, request, response, error_1;
84
+ var _a;
85
+ var _b, _c, _d, _e, _f, _g, _h, _j;
86
+ return __generator(this, function (_k) {
87
+ switch (_k.label) {
88
+ case 0:
89
+ remainingTimeInMillis = context.getRemainingTimeInMillis();
90
+ timeout = setTimeout(function () {
91
+ span.setStatus({
92
+ code: api_1.SpanStatusCode.ERROR,
93
+ message: 'Detected an impending timeout',
94
+ });
95
+ span.end((0, core_1.hrTime)());
96
+ (0, provider_flush_1.default)(otlp_1.tracerProvider);
97
+ }, remainingTimeInMillis - 100);
98
+ _k.label = 1;
99
+ case 1:
100
+ _k.trys.push([1, 3, 4, 6]);
101
+ spanContext = span.spanContext();
102
+ fintalk_logger_1.default.setCustomArgs({
103
+ dd: {
104
+ trace_id: spanContext.traceId,
105
+ span_id: spanContext.spanId,
106
+ },
107
+ });
108
+ request = (0, parse_request_1.default)(event, context);
109
+ span.setAttributes((_a = {},
110
+ _a[semantic_conventions_1.SemanticResourceAttributes.CLOUD_REGION] = process.env.AWS_REGION,
111
+ _a[semantic_conventions_1.SemanticResourceAttributes.CLOUD_PLATFORM] = semantic_conventions_1.CloudPlatformValues.AWS_LAMBDA,
112
+ _a['faas.version'] = process.env.AWS_EXECUTION_ENV,
113
+ _a[semantic_conventions_1.SemanticAttributes.FAAS_EXECUTION] = request.id,
114
+ _a[semantic_conventions_1.SemanticResourceAttributes.FAAS_MAX_MEMORY] = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE,
115
+ _a[semantic_conventions_1.SemanticResourceAttributes.FAAS_NAME] = context.functionName,
116
+ _a[semantic_conventions_1.SemanticResourceAttributes.FAAS_ID] = context.invokedFunctionArn,
117
+ _a[semantic_conventions_1.SemanticAttributes.FAAS_TRIGGER] = semantic_conventions_1.FaasTriggerValues.HTTP,
118
+ _a['client.address'] = request.ip,
119
+ _a['http.route'] = (_b = this.options.path) !== null && _b !== void 0 ? _b : request.path,
120
+ _a['server.address'] = event.requestContext.domainName,
121
+ _a['server.port'] = '443',
122
+ _a['http.request.method'] = request.method,
123
+ _a['url.path'] = request.path,
124
+ _a['url.query'] = (0, convert_query_string_1.default)(request.multiValueQuery),
125
+ _a['url.scheme'] = 'https',
126
+ _a['user_agent.original'] = request.userAgent,
127
+ _a.user_id = (_c = request.user) === null || _c === void 0 ? void 0 : _c.id,
128
+ _a.email = (_d = request.user) === null || _d === void 0 ? void 0 : _d.email,
129
+ _a));
130
+ if (process.env.OTLP_LAMBDA_DEBUG === 'true') {
131
+ span.setAttributes({
132
+ 'http.request.body': JSON.stringify(request.body),
133
+ 'http.request.headers': JSON.stringify(request.headers),
134
+ });
135
+ }
136
+ return [4, this.controller(request, context)];
137
+ case 2:
138
+ response = _k.sent();
139
+ span.setAttribute('http.response.status_code', (_f = (_e = response.statusCode) === null || _e === void 0 ? void 0 : _e.toString()) !== null && _f !== void 0 ? _f : '200');
140
+ if (process.env.OTLP_LAMBDA_DEBUG === 'true') {
141
+ span.setAttributes({
142
+ 'http.response.body': JSON.stringify(response.body),
143
+ 'http.response.headers': JSON.stringify(response.headers),
144
+ });
145
+ }
146
+ span.setStatus({ code: api_1.SpanStatusCode.OK });
147
+ return [2, {
148
+ headers: __assign(__assign({}, constants_1.defaultHeaders), response.headers),
149
+ multiValueHeaders: response.multiValueHeaders,
150
+ statusCode: (_g = response.statusCode) !== null && _g !== void 0 ? _g : 200,
151
+ body: JSON.stringify(response.body),
152
+ }];
153
+ case 3:
154
+ error_1 = _k.sent();
155
+ span.setAttributes({
156
+ 'exception.message': error_1.message,
157
+ 'exception.stacktrace': error_1.trace,
158
+ 'http.response.status_code': (_j = (_h = error_1.code) === null || _h === void 0 ? void 0 : _h.toString()) !== null && _j !== void 0 ? _j : '500',
159
+ });
160
+ span.setStatus({
161
+ code: api_1.SpanStatusCode.ERROR,
162
+ message: error_1.message,
163
+ });
164
+ if (error_1.isTreated) {
165
+ return [2, {
166
+ headers: constants_1.defaultHeaders,
167
+ statusCode: error_1.code,
168
+ body: JSON.stringify(error_1.toObject()),
169
+ }];
170
+ }
171
+ fintalk_logger_1.default.error(error_1);
172
+ return [2, {
173
+ headers: constants_1.defaultHeaders,
174
+ statusCode: 500,
175
+ body: JSON.stringify({
176
+ error: {
177
+ message: 'Internal Server Error',
178
+ },
179
+ }),
180
+ }];
181
+ case 4:
182
+ clearTimeout(timeout);
183
+ span.end((0, core_1.hrTime)());
184
+ return [4, (0, provider_flush_1.default)(otlp_1.tracerProvider)];
185
+ case 5:
186
+ _k.sent();
187
+ return [7];
188
+ case 6: return [2];
189
+ }
190
+ });
191
+ }); })];
100
192
  });
101
193
  });
102
194
  };
@@ -1 +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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/handlers/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAK2B;AAC3B,4CAA4C;AAC5C,4EAK4C;AAC5C,wCAAwD;AAMxD,kEAAmC;AAEnC,0CAA6C;AAE7C,mEAA2C;AAC3C,uFAA8D;AAC9D,yEAAiD;AACjD,2EAAmD;AAOnD;IAIE,0BAAa,UAAsB,EAAE,OAAqB;QAArB,wBAAA,EAAA,YAAqB;QACxD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEK,kCAAO,GAAb,UACE,KAA2B,EAC3B,OAAgB;;;;;gBAEhB,IAAA,oBAAS,EAAC,wBAAM,CAAC,CAAA;gBAEX,aAAa,GAAG,iBAAW,CAAC,OAAO,CACvC,aAAW,CAAC,MAAM,EAAE,EACpB;oBACE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW;iBACvC,CACF,CAAA;gBAED,WAAO,aAAM,CAAC,eAAe,CAC3B,SAAS,EACT;wBACE,IAAI,EAAE,cAAQ,CAAC,MAAM;wBACrB,SAAS,EAAE,IAAA,aAAM,GAAE;qBACpB,EACD,aAAa,EACb,UAAO,IAAI;;;;;;;oCACH,qBAAqB,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAA;oCAC1D,OAAO,GAAG,UAAU,CAAC;wCACzB,IAAI,CAAC,SAAS,CAAC;4CACb,IAAI,EAAE,oBAAc,CAAC,KAAK;4CAC1B,OAAO,EAAE,+BAA+B;yCACzC,CAAC,CAAA;wCAEF,IAAI,CAAC,GAAG,CAAC,IAAA,aAAM,GAAE,CAAC,CAAA;wCAElB,IAAA,wBAAa,EAAC,qBAAc,CAAC,CAAA;oCAC/B,CAAC,EAAE,qBAAqB,GAAG,GAAG,CAAC,CAAA;;;;oCAGvB,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;oCACtC,wBAAM,CAAC,aAAa,CAAC;wCACnB,EAAE,EAAE;4CACF,QAAQ,EAAE,WAAW,CAAC,OAAO;4CAC7B,OAAO,EAAE,WAAW,CAAC,MAAM;yCAC5B;qCACF,CAAC,CAAA;oCAEI,OAAO,GAAG,IAAA,uBAAY,EAAC,KAAK,EAAE,OAAO,CAAC,CAAA;oCAE5C,IAAI,CAAC,aAAa;wCAChB,GAAC,iDAA0B,CAAC,YAAY,IAAG,OAAO,CAAC,GAAG,CAAC,UAAU;wCACjE,GAAC,iDAA0B,CAAC,cAAc,IAAG,0CAAmB,CAAC,UAAU;wCAC3E,kBAAc,GAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;wCAC7C,GAAC,yCAAkB,CAAC,cAAc,IAAG,OAAO,CAAC,EAAE;wCAC/C,GAAC,iDAA0B,CAAC,eAAe,IAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B;wCACzF,GAAC,iDAA0B,CAAC,SAAS,IAAG,OAAO,CAAC,YAAY;wCAC5D,GAAC,iDAA0B,CAAC,OAAO,IAAG,OAAO,CAAC,kBAAkB;wCAChE,GAAC,yCAAkB,CAAC,YAAY,IAAG,wCAAiB,CAAC,IAAI;wCACzD,oBAAgB,GAAE,OAAO,CAAC,EAAE;wCAC5B,gBAAY,GAAE,MAAA,IAAI,CAAC,OAAO,CAAC,IAAI,mCAAI,OAAO,CAAC,IAAI;wCAC/C,oBAAgB,GAAE,KAAK,CAAC,cAAc,CAAC,UAAU;wCACjD,iBAAa,GAAE,KAAK;wCACpB,yBAAqB,GAAE,OAAO,CAAC,MAAM;wCACrC,cAAU,GAAE,OAAO,CAAC,IAAI;wCACxB,eAAW,GAAE,IAAA,8BAAkB,EAAC,OAAO,CAAC,eAAe,CAAC;wCACxD,gBAAY,GAAE,OAAO;wCACrB,yBAAqB,GAAE,OAAO,CAAC,SAAS;wCACxC,UAAO,GAAE,MAAA,OAAO,CAAC,IAAI,0CAAE,EAAE;wCACzB,QAAK,GAAE,MAAA,OAAO,CAAC,IAAI,0CAAE,KAAK;4CAC1B,CAAA;oCAEF,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM,EAAE;wCAC5C,IAAI,CAAC,aAAa,CAAC;4CACjB,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;4CACjD,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;yCACxD,CAAC,CAAA;qCACH;oCAEgB,WAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAA;;oCAAlD,QAAQ,GAAG,SAAuC;oCAExD,IAAI,CAAC,YAAY,CACf,2BAA2B,EAC3B,MAAA,MAAA,QAAQ,CAAC,UAAU,0CAAE,QAAQ,EAAE,mCAAI,KAAK,CACzC,CAAA;oCAED,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM,EAAE;wCAC5C,IAAI,CAAC,aAAa,CAAC;4CACjB,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;4CACnD,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;yCAC1D,CAAC,CAAA;qCACH;oCAED,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,EAAE,EAAE,CAAC,CAAA;oCAE3C,WAAO;4CACL,OAAO,wBACF,0BAAc,GACd,QAAQ,CAAC,OAAO,CACpB;4CACD,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;4CAC7C,UAAU,EAAE,MAAA,QAAQ,CAAC,UAAU,mCAAI,GAAG;4CACtC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;yCACpC,EAAA;;;oCAED,IAAI,CAAC,aAAa,CAAC;wCACjB,mBAAmB,EAAE,OAAK,CAAC,OAAO;wCAClC,sBAAsB,EAAE,OAAK,CAAC,KAAK;wCACnC,2BAA2B,EAAE,MAAA,MAAA,OAAK,CAAC,IAAI,0CAAE,QAAQ,EAAE,mCAAI,KAAK;qCAC7D,CAAC,CAAA;oCACF,IAAI,CAAC,SAAS,CAAC;wCACb,IAAI,EAAE,oBAAc,CAAC,KAAK;wCAC1B,OAAO,EAAE,OAAK,CAAC,OAAO;qCACvB,CAAC,CAAA;oCAEF,IAAI,OAAK,CAAC,SAAS,EAAE;wCACnB,WAAO;gDACL,OAAO,EAAE,0BAAc;gDACvB,UAAU,EAAE,OAAK,CAAC,IAAI;gDACtB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAK,CAAC,QAAQ,EAAE,CAAC;6CACvC,EAAA;qCACF;oCAED,wBAAM,CAAC,KAAK,CAAC,OAAK,CAAC,CAAA;oCACnB,WAAO;4CACL,OAAO,EAAE,0BAAc;4CACvB,UAAU,EAAE,GAAG;4CACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gDACnB,KAAK,EAAE;oDACL,OAAO,EAAE,uBAAuB;iDACjC;6CACF,CAAC;yCACH,EAAA;;oCAED,YAAY,CAAC,OAAO,CAAC,CAAA;oCACrB,IAAI,CAAC,GAAG,CAAC,IAAA,aAAM,GAAE,CAAC,CAAA;oCAElB,WAAM,IAAA,wBAAa,EAAC,qBAAc,CAAC,EAAA;;oCAAnC,SAAmC,CAAA;;;;;yBAEtC,CACF,EAAA;;;KACF;IACH,uBAAC;AAAD,CAAC,AAjJD,IAiJC;AAjJY,4CAAgB"}
@@ -0,0 +1,7 @@
1
+ import { APIGatewayIAMAuthorizerResult, APIGatewayRequestAuthorizerEvent, Context } from 'aws-lambda';
2
+ import { AuthorizerHandler } from '../models';
3
+ export declare class LambdaAuthorizerHandler {
4
+ readonly authHanlder: AuthorizerHandler;
5
+ constructor(handler: AuthorizerHandler);
6
+ handler(event: APIGatewayRequestAuthorizerEvent, context: Context): Promise<APIGatewayIAMAuthorizerResult>;
7
+ }