@heliosjs/aws 1.0.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 (179) hide show
  1. package/README.md +540 -0
  2. package/dist/constants.d.ts +25 -0
  3. package/dist/constants.js +34 -0
  4. package/dist/constants.js.map +1 -0
  5. package/dist/index.d.ts +3 -0
  6. package/dist/index.js +19 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/lambda.d.ts +14 -0
  9. package/dist/lambda.js +149 -0
  10. package/dist/lambda.js.map +1 -0
  11. package/dist/types/aws/index.d.ts +2 -0
  12. package/dist/types/aws/index.js +19 -0
  13. package/dist/types/aws/index.js.map +1 -0
  14. package/dist/types/aws/lambda.d.ts +55 -0
  15. package/dist/types/aws/lambda.js +3 -0
  16. package/dist/types/aws/lambda.js.map +1 -0
  17. package/dist/types/aws/plugin.d.ts +16 -0
  18. package/dist/types/aws/plugin.js +3 -0
  19. package/dist/types/aws/plugin.js.map +1 -0
  20. package/dist/types/core/common.d.ts +44 -0
  21. package/dist/types/core/common.js +15 -0
  22. package/dist/types/core/common.js.map +1 -0
  23. package/dist/types/core/controller.d.ts +78 -0
  24. package/dist/types/core/controller.js +3 -0
  25. package/dist/types/core/controller.js.map +1 -0
  26. package/dist/types/core/cors.d.ts +10 -0
  27. package/dist/types/core/cors.js +3 -0
  28. package/dist/types/core/cors.js.map +1 -0
  29. package/dist/types/core/error.d.ts +72 -0
  30. package/dist/types/core/error.js +19 -0
  31. package/dist/types/core/error.js.map +1 -0
  32. package/dist/types/core/index.d.ts +9 -0
  33. package/dist/types/core/index.js +26 -0
  34. package/dist/types/core/index.js.map +1 -0
  35. package/dist/types/core/multipart.d.ts +8 -0
  36. package/dist/types/core/multipart.js +3 -0
  37. package/dist/types/core/multipart.js.map +1 -0
  38. package/dist/types/core/request.d.ts +65 -0
  39. package/dist/types/core/request.js +3 -0
  40. package/dist/types/core/request.js.map +1 -0
  41. package/dist/types/core/response.d.ts +49 -0
  42. package/dist/types/core/response.js +3 -0
  43. package/dist/types/core/response.js.map +1 -0
  44. package/dist/types/core/sanitize.d.ts +8 -0
  45. package/dist/types/core/sanitize.js +3 -0
  46. package/dist/types/core/sanitize.js.map +1 -0
  47. package/dist/types/core/sse.d.ts +37 -0
  48. package/dist/types/core/sse.js +3 -0
  49. package/dist/types/core/sse.js.map +1 -0
  50. package/dist/types/ws/index.d.ts +50 -0
  51. package/dist/types/ws/index.js +3 -0
  52. package/dist/types/ws/index.js.map +1 -0
  53. package/dist/utils/aws/helpers.d.ts +4 -0
  54. package/dist/utils/aws/helpers.js +84 -0
  55. package/dist/utils/aws/helpers.js.map +1 -0
  56. package/dist/utils/aws/index.d.ts +6 -0
  57. package/dist/utils/aws/index.js +23 -0
  58. package/dist/utils/aws/index.js.map +1 -0
  59. package/dist/utils/aws/lambda.d.ts +6 -0
  60. package/dist/utils/aws/lambda.event.normalizers.d.ts +42 -0
  61. package/dist/utils/aws/lambda.event.normalizers.js +260 -0
  62. package/dist/utils/aws/lambda.event.normalizers.js.map +1 -0
  63. package/dist/utils/aws/lambda.js +50 -0
  64. package/dist/utils/aws/lambda.js.map +1 -0
  65. package/dist/utils/aws/parsers.d.ts +8 -0
  66. package/dist/utils/aws/parsers.js +69 -0
  67. package/dist/utils/aws/parsers.js.map +1 -0
  68. package/dist/utils/aws/plugin.d.ts +9 -0
  69. package/dist/utils/aws/plugin.js +43 -0
  70. package/dist/utils/aws/plugin.js.map +1 -0
  71. package/dist/utils/aws/request.factory.d.ts +6 -0
  72. package/dist/utils/aws/request.factory.js +14 -0
  73. package/dist/utils/aws/request.factory.js.map +1 -0
  74. package/dist/utils/aws/response.factory.d.ts +8 -0
  75. package/dist/utils/aws/response.factory.js +14 -0
  76. package/dist/utils/aws/response.factory.js.map +1 -0
  77. package/dist/utils/core/controller.d.ts +25 -0
  78. package/dist/utils/core/controller.js +219 -0
  79. package/dist/utils/core/controller.js.map +1 -0
  80. package/dist/utils/core/cors.d.ts +8 -0
  81. package/dist/utils/core/cors.js +128 -0
  82. package/dist/utils/core/cors.js.map +1 -0
  83. package/dist/utils/core/endpoint.d.ts +3 -0
  84. package/dist/utils/core/endpoint.js +28 -0
  85. package/dist/utils/core/endpoint.js.map +1 -0
  86. package/dist/utils/core/error/apperror.d.ts +31 -0
  87. package/dist/utils/core/error/apperror.js +131 -0
  88. package/dist/utils/core/error/apperror.js.map +1 -0
  89. package/dist/utils/core/error/authorizations.d.ts +7 -0
  90. package/dist/utils/core/error/authorizations.js +17 -0
  91. package/dist/utils/core/error/authorizations.js.map +1 -0
  92. package/dist/utils/core/error/base.d.ts +20 -0
  93. package/dist/utils/core/error/base.js +52 -0
  94. package/dist/utils/core/error/base.js.map +1 -0
  95. package/dist/utils/core/error/dependencyFailed.d.ts +7 -0
  96. package/dist/utils/core/error/dependencyFailed.js +17 -0
  97. package/dist/utils/core/error/dependencyFailed.js.map +1 -0
  98. package/dist/utils/core/error/duplicateEntry.d.ts +7 -0
  99. package/dist/utils/core/error/duplicateEntry.js +17 -0
  100. package/dist/utils/core/error/duplicateEntry.js.map +1 -0
  101. package/dist/utils/core/error/forbidden.d.ts +7 -0
  102. package/dist/utils/core/error/forbidden.js +17 -0
  103. package/dist/utils/core/error/forbidden.js.map +1 -0
  104. package/dist/utils/core/error/helpers.d.ts +8 -0
  105. package/dist/utils/core/error/helpers.js +144 -0
  106. package/dist/utils/core/error/helpers.js.map +1 -0
  107. package/dist/utils/core/error/index.d.ts +12 -0
  108. package/dist/utils/core/error/index.js +29 -0
  109. package/dist/utils/core/error/index.js.map +1 -0
  110. package/dist/utils/core/error/invalidState.d.ts +7 -0
  111. package/dist/utils/core/error/invalidState.js +17 -0
  112. package/dist/utils/core/error/invalidState.js.map +1 -0
  113. package/dist/utils/core/error/notfound.d.ts +7 -0
  114. package/dist/utils/core/error/notfound.js +18 -0
  115. package/dist/utils/core/error/notfound.js.map +1 -0
  116. package/dist/utils/core/error/rateLimit.d.ts +7 -0
  117. package/dist/utils/core/error/rateLimit.js +17 -0
  118. package/dist/utils/core/error/rateLimit.js.map +1 -0
  119. package/dist/utils/core/error/serviceUnavailable.d.ts +7 -0
  120. package/dist/utils/core/error/serviceUnavailable.js +17 -0
  121. package/dist/utils/core/error/serviceUnavailable.js.map +1 -0
  122. package/dist/utils/core/error/validation.d.ts +10 -0
  123. package/dist/utils/core/error/validation.js +20 -0
  124. package/dist/utils/core/error/validation.js.map +1 -0
  125. package/dist/utils/core/headers.d.ts +2 -0
  126. package/dist/utils/core/headers.js +10 -0
  127. package/dist/utils/core/headers.js.map +1 -0
  128. package/dist/utils/core/helper.d.ts +6 -0
  129. package/dist/utils/core/helper.js +66 -0
  130. package/dist/utils/core/helper.js.map +1 -0
  131. package/dist/utils/core/index.d.ts +10 -0
  132. package/dist/utils/core/index.js +27 -0
  133. package/dist/utils/core/index.js.map +1 -0
  134. package/dist/utils/core/multipart.d.ts +9 -0
  135. package/dist/utils/core/multipart.js +207 -0
  136. package/dist/utils/core/multipart.js.map +1 -0
  137. package/dist/utils/core/request.d.ts +100 -0
  138. package/dist/utils/core/request.js +218 -0
  139. package/dist/utils/core/request.js.map +1 -0
  140. package/dist/utils/core/response.d.ts +48 -0
  141. package/dist/utils/core/response.js +269 -0
  142. package/dist/utils/core/response.js.map +1 -0
  143. package/dist/utils/core/routeWalker.d.ts +2 -0
  144. package/dist/utils/core/routeWalker.js +115 -0
  145. package/dist/utils/core/routeWalker.js.map +1 -0
  146. package/dist/utils/core/sanitize.d.ts +30 -0
  147. package/dist/utils/core/sanitize.js +134 -0
  148. package/dist/utils/core/sanitize.js.map +1 -0
  149. package/dist/utils/shared/index.d.ts +2 -0
  150. package/dist/utils/shared/index.js +19 -0
  151. package/dist/utils/shared/index.js.map +1 -0
  152. package/dist/utils/shared/parsers.d.ts +11 -0
  153. package/dist/utils/shared/parsers.js +133 -0
  154. package/dist/utils/shared/parsers.js.map +1 -0
  155. package/dist/utils/shared/validate.d.ts +1 -0
  156. package/dist/utils/shared/validate.js +41 -0
  157. package/dist/utils/shared/validate.js.map +1 -0
  158. package/dist/utils/socket/index.d.ts +3 -0
  159. package/dist/utils/socket/index.js +20 -0
  160. package/dist/utils/socket/index.js.map +1 -0
  161. package/dist/utils/socket/server.d.ts +33 -0
  162. package/dist/utils/socket/server.js +218 -0
  163. package/dist/utils/socket/server.js.map +1 -0
  164. package/dist/utils/socket/service.d.ts +20 -0
  165. package/dist/utils/socket/service.js +42 -0
  166. package/dist/utils/socket/service.js.map +1 -0
  167. package/dist/utils/socket/socket.d.ts +16 -0
  168. package/dist/utils/socket/socket.js +33 -0
  169. package/dist/utils/socket/socket.js.map +1 -0
  170. package/dist/utils/sse/index.d.ts +2 -0
  171. package/dist/utils/sse/index.js +19 -0
  172. package/dist/utils/sse/index.js.map +1 -0
  173. package/dist/utils/sse/server.d.ts +14 -0
  174. package/dist/utils/sse/server.js +85 -0
  175. package/dist/utils/sse/server.js.map +1 -0
  176. package/dist/utils/sse/service.d.ts +17 -0
  177. package/dist/utils/sse/service.js +40 -0
  178. package/dist/utils/sse/service.js.map +1 -0
  179. package/package.json +33 -0
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeEvent = exports.getLambdaEventType = exports.normalizeLambdaFunctionUrlEvent = exports.normalizeCloudFrontEvent = exports.normalizeALBEvent = exports.normalizeAPIGatewayV2Event = exports.normalizeAPIGatewayEvent = void 0;
4
+ const shared_1 = require("../shared");
5
+ const lambda_1 = require("./lambda");
6
+ const parsers_1 = require("./parsers");
7
+ const getUrls = (event) => {
8
+ const protocol = event.headers?.['x-forwarded-proto'] || 'https';
9
+ const host = event.headers?.host || 'localhost';
10
+ const path = event.path ?? event.rawPath;
11
+ let url = `${protocol}://${host}${path}`;
12
+ const requestUrl = new URL(url);
13
+ return { requestUrl, url };
14
+ };
15
+ /**
16
+ * Safely convert path parameters
17
+ */
18
+ const normalizePathParams = (params) => {
19
+ const result = {};
20
+ if (!params)
21
+ return result;
22
+ Object.entries(params).forEach(([key, value]) => {
23
+ if (value !== undefined && value !== null) {
24
+ result[key] = value;
25
+ }
26
+ });
27
+ return result;
28
+ };
29
+ // ==================== API Gateway v1 (REST API) ====================
30
+ const normalizeAPIGatewayEvent = (event, context) => {
31
+ const headers = (0, shared_1.parseHeaders)(event.headers);
32
+ const body = (0, shared_1.parseBody)({ headers, body: event.body, isBase64Encoded: event.isBase64Encoded });
33
+ const cookies = (0, shared_1.parseRequestCookie)(headers?.Cookie || headers?.cookie || headers.cookies);
34
+ const rawBody = Buffer.from(event.body || '', 'base64');
35
+ const { url, requestUrl } = getUrls(event);
36
+ return {
37
+ requestId: context.awsRequestId,
38
+ method: event.httpMethod,
39
+ url,
40
+ requestUrl,
41
+ path: event.path,
42
+ cookies,
43
+ headers,
44
+ query: (0, lambda_1.getQueryStringParameters)(event) ?? (0, lambda_1.getMultiValueQueryStringParameters)(event),
45
+ params: normalizePathParams(event.pathParameters),
46
+ rawBody,
47
+ body,
48
+ source: 'lambda',
49
+ timestamp: new Date(),
50
+ isBase64Encoded: event.isBase64Encoded || false,
51
+ context: context,
52
+ event,
53
+ sourceIp: event.requestContext?.identity?.sourceIp,
54
+ userAgent: typeof event.headers?.['user-agent'] === 'string' ? event.headers['user-agent'] : undefined,
55
+ };
56
+ };
57
+ exports.normalizeAPIGatewayEvent = normalizeAPIGatewayEvent;
58
+ // ==================== API Gateway v2 (HTTP API) ====================
59
+ const normalizeAPIGatewayV2Event = (event, context) => {
60
+ const rawBody = Buffer.from(event.body || '', 'base64');
61
+ const headers = (0, shared_1.parseHeaders)(event.headers);
62
+ const body = (0, shared_1.parseBody)({ headers, body: event.body, isBase64Encoded: event.isBase64Encoded });
63
+ const { url, requestUrl } = getUrls(event);
64
+ const cookies = (0, shared_1.parseRequestCookie)(headers?.Cookie || headers?.cookie || headers.cookies);
65
+ return {
66
+ requestId: context.awsRequestId,
67
+ method: event.requestContext.http.method,
68
+ url,
69
+ requestUrl,
70
+ path: event.rawPath,
71
+ cookies,
72
+ headers,
73
+ query: (0, lambda_1.getQueryStringParameters)(event),
74
+ params: normalizePathParams(event.pathParameters),
75
+ rawBody,
76
+ body,
77
+ source: 'lambda',
78
+ timestamp: new Date(),
79
+ event,
80
+ context,
81
+ isBase64Encoded: event.isBase64Encoded || false,
82
+ sourceIp: event.requestContext?.http?.sourceIp,
83
+ userAgent: typeof event.headers?.['user-agent'] === 'string' ? event.headers['user-agent'] : undefined,
84
+ };
85
+ };
86
+ exports.normalizeAPIGatewayV2Event = normalizeAPIGatewayV2Event;
87
+ // // ==================== Application Load Balancer ====================
88
+ const normalizeALBEvent = (event, context) => {
89
+ const rawBody = Buffer.from(event.body || '', 'base64');
90
+ const headers = (0, shared_1.parseHeaders)(event.headers);
91
+ const cookies = (0, shared_1.parseRequestCookie)(headers?.Cookie || headers?.cookie || headers.cookies);
92
+ const body = (0, shared_1.parseBody)({ headers, body: event.body });
93
+ const { url, requestUrl } = getUrls(event);
94
+ return {
95
+ requestId: context.awsRequestId,
96
+ method: event.httpMethod,
97
+ url,
98
+ requestUrl,
99
+ path: event.path,
100
+ cookies,
101
+ headers,
102
+ query: (0, lambda_1.getQueryStringParameters)(event) ?? (0, lambda_1.getMultiValueQueryStringParameters)(event),
103
+ params: {},
104
+ rawBody,
105
+ body,
106
+ event,
107
+ context,
108
+ source: 'lambda',
109
+ timestamp: new Date(),
110
+ isBase64Encoded: !!event.isBase64Encoded,
111
+ sourceIp: event.headers?.['x-forwarded-for']?.split(',')[0]?.trim(),
112
+ userAgent: event.headers?.['user-agent'],
113
+ };
114
+ };
115
+ exports.normalizeALBEvent = normalizeALBEvent;
116
+ // // ==================== CloudFront ====================
117
+ const normalizeCloudFrontEvent = (event, context) => {
118
+ const record = event.Records?.[0];
119
+ const request = record?.cf?.request;
120
+ const headers = (0, parsers_1.parseCloudFrontHeaders)(request?.headers);
121
+ const cookies = (0, shared_1.parseRequestCookie)(headers?.Cookie || headers?.cookie || headers.cookies);
122
+ const rawBody = Buffer.from(request.body?.data || '', 'base64');
123
+ const isBase64Encoded = request.body?.encoding === 'base64';
124
+ const body = (0, shared_1.parseBody)({ headers, body: request.body, isBase64Encoded });
125
+ const sourceIp = request?.clientIp ||
126
+ headers['cloudfront-viewer-address']?.toString().split(':')[0] ||
127
+ headers['x-forwarded-for']?.toString().split(',')[0]?.trim();
128
+ const { url, requestUrl } = getUrls(request);
129
+ return {
130
+ requestId: context.awsRequestId,
131
+ method: request?.method,
132
+ path: request?.uri || '/',
133
+ url,
134
+ requestUrl,
135
+ headers,
136
+ cookies,
137
+ query: (0, shared_1.parseQuery)(requestUrl),
138
+ params: {},
139
+ rawBody,
140
+ body,
141
+ context,
142
+ event,
143
+ source: 'lambda',
144
+ timestamp: new Date(),
145
+ isBase64Encoded: request.body?.encoding === 'base64',
146
+ sourceIp,
147
+ userAgent: headers['user-agent']?.toString(),
148
+ };
149
+ };
150
+ exports.normalizeCloudFrontEvent = normalizeCloudFrontEvent;
151
+ /**
152
+ * Нормализует Lambda Function URL event
153
+ */
154
+ const normalizeLambdaFunctionUrlEvent = (event, context) => {
155
+ const query = {};
156
+ if (event.queryStringParameters) {
157
+ Object.entries(event.queryStringParameters).forEach(([key, value]) => {
158
+ query[key] = value + '';
159
+ });
160
+ }
161
+ else if (event.rawQueryString) {
162
+ const params = new URLSearchParams(event.rawQueryString);
163
+ params.forEach((value, key) => {
164
+ const values = params.getAll(key);
165
+ query[key] = values.length > 1 ? values : value;
166
+ });
167
+ }
168
+ const cookies = {};
169
+ if (event.cookies) {
170
+ event.cookies.forEach((cookie) => {
171
+ const [name, value] = cookie.split('=');
172
+ if (name && value) {
173
+ cookies[name] = decodeURIComponent(value);
174
+ }
175
+ });
176
+ }
177
+ const protocol = event.requestContext.http.protocol.split('/')[0].toLowerCase();
178
+ const host = event.requestContext.domainName;
179
+ const path = event.rawPath;
180
+ const queryString = event.rawQueryString ? `?${event.rawQueryString}` : '';
181
+ const fullUrl = `${protocol}://${host}${path}${queryString}`;
182
+ const requestUrl = new URL(fullUrl);
183
+ let body = event.body || {};
184
+ if (event.body && event.isBase64Encoded) {
185
+ try {
186
+ body = Buffer.from(event.body, 'base64').toString('utf-8');
187
+ }
188
+ catch (error) {
189
+ console.error('Failed to decode base64 body:', error);
190
+ }
191
+ }
192
+ if (typeof body === 'string') {
193
+ const trimmed = body.trim();
194
+ if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
195
+ try {
196
+ body = JSON.parse(body);
197
+ }
198
+ catch { }
199
+ }
200
+ }
201
+ const headers = {};
202
+ Object.entries(event.headers).forEach(([key, value]) => {
203
+ headers[key] = value + '';
204
+ });
205
+ return {
206
+ source: 'lambda',
207
+ method: event.requestContext.http.method,
208
+ path: event.rawPath,
209
+ requestUrl,
210
+ url: requestUrl.toString(),
211
+ headers,
212
+ query,
213
+ body,
214
+ params: {},
215
+ cookies,
216
+ sourceIp: event.requestContext.http.sourceIp,
217
+ userAgent: event.requestContext.http.userAgent,
218
+ requestId: context.awsRequestId,
219
+ stage: event.requestContext.stage,
220
+ timestamp: new Date(event.requestContext.timeEpoch),
221
+ raw: event,
222
+ context,
223
+ isBase64Encoded: !!event.isBase64Encoded,
224
+ };
225
+ };
226
+ exports.normalizeLambdaFunctionUrlEvent = normalizeLambdaFunctionUrlEvent;
227
+ const getLambdaEventType = (event) => {
228
+ if (event.version === '2.0' && event.rawPath && event.requestContext?.http) {
229
+ return 'lambda-url';
230
+ }
231
+ if (event.requestContext?.apiId && event.httpMethod)
232
+ return 'apigateway';
233
+ if (event.version === '2.0' || event.requestContext?.http)
234
+ return 'apigatewayv2';
235
+ if (event.requestContext?.elb)
236
+ return 'alb';
237
+ if (event.Records?.[0]?.cf)
238
+ return 'cloudfront';
239
+ return 'unknown';
240
+ };
241
+ exports.getLambdaEventType = getLambdaEventType;
242
+ const normalizeEvent = (event, context) => {
243
+ const type = (0, exports.getLambdaEventType)(event);
244
+ switch (type) {
245
+ case 'apigateway':
246
+ return (0, exports.normalizeAPIGatewayEvent)(event, context);
247
+ case 'apigatewayv2':
248
+ return (0, exports.normalizeAPIGatewayV2Event)(event, context);
249
+ case 'alb':
250
+ return (0, exports.normalizeALBEvent)(event, context);
251
+ case 'cloudfront':
252
+ return (0, exports.normalizeCloudFrontEvent)(event, context);
253
+ case 'lambda-url':
254
+ return (0, exports.normalizeLambdaFunctionUrlEvent)(event, context);
255
+ default:
256
+ throw new Error(`Unsupported event type: ${type}`);
257
+ }
258
+ };
259
+ exports.normalizeEvent = normalizeEvent;
260
+ //# sourceMappingURL=lambda.event.normalizers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda.event.normalizers.js","sourceRoot":"","sources":["../../../src/utils/aws/lambda.event.normalizers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMultiValueQueryStringParameters = exports.getQueryStringParameters = exports.getSourceIp = exports.getEventType = void 0;
4
+ const getEventType = (event) => {
5
+ if (event.httpMethod && event.resource) {
6
+ return 'rest';
7
+ }
8
+ if (event.version === '2.0' || event.requestContext?.http) {
9
+ return 'http';
10
+ }
11
+ if (event.version && event.rawPath && !event.requestContext?.http) {
12
+ return 'url';
13
+ }
14
+ return 'rest';
15
+ };
16
+ exports.getEventType = getEventType;
17
+ const getSourceIp = (event) => {
18
+ const forwardedFor = event.headers['x-forwarded-for'];
19
+ if (forwardedFor) {
20
+ if (Array.isArray(forwardedFor)) {
21
+ return forwardedFor[0].split(',')[0].trim();
22
+ }
23
+ return forwardedFor.split(',')[0].trim();
24
+ }
25
+ if (event.requestContext?.identity?.sourceIp) {
26
+ return event.requestContext.identity.sourceIp;
27
+ }
28
+ if (event.requestContext?.http?.sourceIp) {
29
+ return event.requestContext.http.sourceIp;
30
+ }
31
+ return '0.0.0.0';
32
+ };
33
+ exports.getSourceIp = getSourceIp;
34
+ const getQueryStringParameters = (event) => {
35
+ const query = {};
36
+ Object.entries(event.queryStringParameters ?? {}).forEach(([key, value]) => {
37
+ query[key] = value || '';
38
+ });
39
+ return query;
40
+ };
41
+ exports.getQueryStringParameters = getQueryStringParameters;
42
+ const getMultiValueQueryStringParameters = (event) => {
43
+ const query = {};
44
+ Object.entries(event.multiValueQueryStringParameters ?? {}).forEach(([key, value]) => {
45
+ query[key] = value;
46
+ });
47
+ return query;
48
+ };
49
+ exports.getMultiValueQueryStringParameters = getMultiValueQueryStringParameters;
50
+ //# sourceMappingURL=lambda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../src/utils/aws/lambda.ts"],"names":[],"mappings":";;;AAEO,MAAM,YAAY,GAAG,CAAC,KAAU,EAA2B,EAAE;IAClE,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAXW,QAAA,YAAY,gBAWvB;AAEK,MAAM,WAAW,GAAG,CAAC,KAAsB,EAAU,EAAE;IAC5D,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAChD,CAAC;IAED,IAAI,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAlBW,QAAA,WAAW,eAkBtB;AAEK,MAAM,wBAAwB,GAAG,CACtC,KAA+D,EAC/D,EAAE;IACF,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACzE,KAAK,CAAC,GAAG,CAAC,GAAI,KAAgB,IAAI,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AATW,QAAA,wBAAwB,4BASnC;AAEK,MAAM,kCAAkC,GAAG,CAAC,KAAsC,EAAE,EAAE;IAC3F,MAAM,KAAK,GAA6B,EAAE,CAAC;IAE3C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACnF,KAAK,CAAC,GAAG,CAAC,GAAG,KAAiB,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AARW,QAAA,kCAAkC,sCAQ7C"}
@@ -0,0 +1,8 @@
1
+ import { NormalizedEvent } from '../../types/aws';
2
+ export declare const parseCloudFrontHeaders: (headers?: {
3
+ [name: string]: Array<{
4
+ key?: string | undefined;
5
+ value: string;
6
+ }>;
7
+ }) => Record<string, string | string[]>;
8
+ export declare const normalizeLambdaEvent: (event: any, type: string) => NormalizedEvent;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeLambdaEvent = exports.parseCloudFrontHeaders = void 0;
4
+ const parseLambdaQueryString = (queryString) => {
5
+ const params = {};
6
+ if (!queryString)
7
+ return params;
8
+ new URLSearchParams(queryString).forEach((value, key) => {
9
+ params[key] = value;
10
+ });
11
+ return params;
12
+ };
13
+ const parseCloudFrontHeaders = (headers) => {
14
+ const result = {};
15
+ if (!headers)
16
+ return result;
17
+ Object.entries(headers).forEach(([key, values]) => {
18
+ if (values.length > 1) {
19
+ result[key] = values.map((v) => v.value);
20
+ }
21
+ else {
22
+ result[key] = values[0]?.value || '';
23
+ }
24
+ });
25
+ return result;
26
+ };
27
+ exports.parseCloudFrontHeaders = parseCloudFrontHeaders;
28
+ const normalizeLambdaEvent = (event, type) => {
29
+ const base = {
30
+ headers: event.headers || {},
31
+ body: event.body || null,
32
+ isBase64Encoded: event.isBase64Encoded || false,
33
+ requestContext: event.requestContext,
34
+ };
35
+ switch (type) {
36
+ case 'rest':
37
+ return {
38
+ ...base,
39
+ httpMethod: event.httpMethod,
40
+ path: event.path,
41
+ queryStringParameters: event.queryStringParameters || {},
42
+ multiValueQueryStringParameters: event.multiValueQueryStringParameters,
43
+ pathParameters: event.pathParameters || {},
44
+ cookies: event.headers?.Cookie ? [event.headers.Cookie] : [],
45
+ };
46
+ case 'http':
47
+ return {
48
+ ...base,
49
+ httpMethod: event.requestContext?.http?.method || 'GET',
50
+ path: event.rawPath,
51
+ queryStringParameters: event.queryStringParameters || {},
52
+ pathParameters: event.pathParameters || {},
53
+ cookies: event.cookies || [],
54
+ };
55
+ case 'url':
56
+ return {
57
+ ...base,
58
+ httpMethod: event.requestContext?.http?.method || 'GET',
59
+ path: event.rawPath,
60
+ queryStringParameters: parseLambdaQueryString(event.rawQueryString),
61
+ pathParameters: {},
62
+ cookies: [],
63
+ };
64
+ default:
65
+ throw new Error(`Unsupported event type: ${type}`);
66
+ }
67
+ };
68
+ exports.normalizeLambdaEvent = normalizeLambdaEvent;
69
+ //# sourceMappingURL=parsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../src/utils/aws/parsers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { PluginHookKeys, PluginKeys, Plugin as TPlugin } from '../../types/aws';
2
+ import { MiddlewareCB } from '../../types/core';
3
+ export declare class Plugin {
4
+ plugins: TPlugin[];
5
+ middlewares: MiddlewareCB[];
6
+ protected callPluginHook<K extends PluginHookKeys>(hookName: K, ...args: any): Promise<void>;
7
+ protected callPluginMethod<K extends PluginKeys>(hookName: PluginKeys, ...args: any): Promise<void>;
8
+ usePlugin(plugin: any): this;
9
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Plugin = void 0;
4
+ class Plugin {
5
+ plugins = [];
6
+ middlewares = [];
7
+ async callPluginHook(hookName, ...args) {
8
+ for (const plugin of this.plugins) {
9
+ const hook = plugin.hooks?.[hookName];
10
+ if (hook) {
11
+ try {
12
+ await hook(...args);
13
+ }
14
+ catch (error) {
15
+ console.error(`Plugin ${plugin.name} hook ${hookName} error:`, error);
16
+ }
17
+ }
18
+ }
19
+ }
20
+ async callPluginMethod(hookName, ...args) {
21
+ for (const plugin of this.plugins) {
22
+ const hook = plugin?.[hookName];
23
+ if (hook) {
24
+ try {
25
+ await hook(...args);
26
+ }
27
+ catch (error) {
28
+ console.error(`Plugin ${plugin.name} hook ${hookName} error:`, error);
29
+ }
30
+ }
31
+ }
32
+ }
33
+ usePlugin(plugin) {
34
+ this.plugins.push(plugin);
35
+ plugin.onInit?.(this);
36
+ if (plugin.middleware) {
37
+ this.middlewares?.unshift(plugin.middleware);
38
+ }
39
+ return this;
40
+ }
41
+ }
42
+ exports.Plugin = Plugin;
43
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/utils/aws/plugin.ts"],"names":[],"mappings":";;;AAGA,MAAa,MAAM;IACjB,OAAO,GAAc,EAAE,CAAC;IACxB,WAAW,GAAmB,EAAE,CAAC;IACvB,KAAK,CAAC,cAAc,CAC5B,QAAW,EACX,GAAG,IAAS;QAEZ,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC;oBACH,MAAO,IAAY,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC/B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,IAAI,SAAS,QAAQ,SAAS,EAAE,KAAK,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACS,KAAK,CAAC,gBAAgB,CAC9B,QAAoB,EACpB,GAAG,IAAS;QAEZ,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC;oBACH,MAAO,IAAY,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC/B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,IAAI,SAAS,QAAQ,SAAS,EAAE,KAAK,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,CAAC,MAAW;QACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA3CD,wBA2CC"}
@@ -0,0 +1,6 @@
1
+ import { Context } from 'aws-lambda';
2
+ import { LambdaEvent } from '../../types/aws';
3
+ import { Request } from '../core/request';
4
+ export declare class RequestFactory {
5
+ static create(event: LambdaEvent, context: Context): Request;
6
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestFactory = void 0;
4
+ const request_1 = require("../core/request");
5
+ const lambda_event_normalizers_1 = require("./lambda.event.normalizers");
6
+ class RequestFactory {
7
+ static create(event, context) {
8
+ // Detect event type
9
+ const normalized = (0, lambda_event_normalizers_1.normalizeEvent)(event, context);
10
+ return new request_1.Request(normalized);
11
+ }
12
+ }
13
+ exports.RequestFactory = RequestFactory;
14
+ //# sourceMappingURL=request.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.factory.js","sourceRoot":"","sources":["../../../src/utils/aws/request.factory.ts"],"names":[],"mappings":";;;AAGA,6CAA0C;AAC1C,yEAA4D;AAE5D,MAAa,cAAc;IACzB,MAAM,CAAC,MAAM,CAAC,KAAkB,EAAE,OAAgB;QAChD,oBAAoB;QACpB,MAAM,UAAU,GAAG,IAAA,yCAAc,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,iBAAO,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;CACF;AAND,wCAMC"}
@@ -0,0 +1,8 @@
1
+ import { Meta } from '../../types/core';
2
+ import { Response } from '../core/response';
3
+ export declare class ResponseFactory {
4
+ /**
5
+ * Create Response for Lambda
6
+ */
7
+ static create(meta: Meta): Response;
8
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResponseFactory = void 0;
4
+ const response_1 = require("../core/response");
5
+ class ResponseFactory {
6
+ /**
7
+ * Create Response for Lambda
8
+ */
9
+ static create(meta) {
10
+ return new response_1.Response('lambda', meta);
11
+ }
12
+ }
13
+ exports.ResponseFactory = ResponseFactory;
14
+ //# sourceMappingURL=response.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.factory.js","sourceRoot":"","sources":["../../../src/utils/aws/response.factory.ts"],"names":[],"mappings":";;;AAEA,+CAA4C;AAE5C,MAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,IAAU;QACtB,OAAO,IAAI,mBAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;CACF;AAPD,0CAOC"}
@@ -0,0 +1,25 @@
1
+ import 'reflect-metadata';
2
+ import { ControllerInstance, ControllerMethods, CORSConfig, InterceptorCB, IRequest, IResponse, MiddlewareCB, SanitizerConfig } from '../../types/core';
3
+ export declare const executeControllerMethod: (controller: ControllerInstance, propertyName: string, request: IRequest, response: IResponse) => Promise<any>;
4
+ export declare const getControllerMethods: (controller: ControllerInstance) => ControllerMethods;
5
+ export declare const getAllMethods: (obj: any) => string[];
6
+ export declare const findRouteInController: (instance: any, path: string, route: string, method: string) => {
7
+ name: string;
8
+ pathParams: Record<string, string>;
9
+ priority: number;
10
+ middlewares: MiddlewareCB[];
11
+ cors?: CORSConfig;
12
+ sanitizers: SanitizerConfig[];
13
+ };
14
+ export declare const NextFunction: (error: any) => void;
15
+ export declare const getResponse: (data: {
16
+ controllerInstance: ControllerInstance;
17
+ name: string;
18
+ interceptors: InterceptorCB[];
19
+ request: IRequest;
20
+ response: IResponse;
21
+ }) => Promise<any>;
22
+ export declare const applyMiddlewaresVsSanitizers: (request: IRequest, response: IResponse, functions: {
23
+ sanitizers: SanitizerConfig[][];
24
+ middlewares: MiddlewareCB[][];
25
+ }) => Promise<void>;