lesgo 1.0.0 → 2.1.1

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 (315) hide show
  1. package/README.md +5 -4
  2. package/bin/lesgo-scripts.sh +4 -4
  3. package/dist/config/app.d.ts +7 -0
  4. package/dist/config/app.js +9 -0
  5. package/dist/config/aws.d.ts +5 -0
  6. package/dist/config/aws.js +4 -0
  7. package/dist/config/basicAuth.d.ts +7 -0
  8. package/dist/config/basicAuth.js +8 -0
  9. package/dist/config/crypto.d.ts +10 -0
  10. package/dist/config/crypto.js +9 -0
  11. package/dist/config/dynamodb.d.ts +8 -0
  12. package/dist/config/dynamodb.js +14 -0
  13. package/dist/config/elasticache.d.ts +7 -0
  14. package/dist/config/elasticache.js +6 -0
  15. package/dist/config/index.d.ts +11 -0
  16. package/dist/config/index.js +11 -0
  17. package/dist/config/jwt.d.ts +12 -0
  18. package/dist/config/jwt.js +16 -0
  19. package/dist/config/rds.d.ts +12 -0
  20. package/dist/config/rds.js +13 -0
  21. package/dist/config/s3.d.ts +5 -0
  22. package/dist/config/s3.js +5 -0
  23. package/dist/config/secretsManager.d.ts +4 -0
  24. package/dist/config/secretsManager.js +4 -0
  25. package/dist/config/sqs.d.ts +9 -0
  26. package/dist/config/sqs.js +18 -0
  27. package/dist/exceptions/LesgoException.d.ts +6 -0
  28. package/{src → dist}/exceptions/LesgoException.js +5 -4
  29. package/dist/exceptions/index.d.ts +1 -0
  30. package/dist/exceptions/index.js +1 -0
  31. package/dist/middlewares/disconnectMiddleware.d.ts +8 -0
  32. package/dist/middlewares/disconnectMiddleware.js +78 -0
  33. package/dist/middlewares/httpMiddleware.d.ts +12 -0
  34. package/dist/middlewares/httpMiddleware.js +74 -0
  35. package/dist/middlewares/httpResponseMiddleware.d.ts +7 -0
  36. package/dist/middlewares/httpResponseMiddleware.js +128 -0
  37. package/dist/middlewares/index.d.ts +7 -0
  38. package/dist/middlewares/index.js +7 -0
  39. package/dist/middlewares/invokeCommandMiddleware.d.ts +12 -0
  40. package/dist/middlewares/invokeCommandMiddleware.js +70 -0
  41. package/dist/middlewares/sqsMiddleware.d.ts +10 -0
  42. package/dist/middlewares/sqsMiddleware.js +70 -0
  43. package/dist/middlewares/verifyBasicAuthMiddleware.d.ts +8 -0
  44. package/dist/middlewares/verifyBasicAuthMiddleware.js +59 -0
  45. package/dist/middlewares/verifyJwtMiddleware.d.ts +6 -0
  46. package/dist/middlewares/verifyJwtMiddleware.js +37 -0
  47. package/dist/services/DynamoDbService/deleteRecord.d.ts +8 -0
  48. package/dist/services/DynamoDbService/deleteRecord.js +69 -0
  49. package/dist/services/DynamoDbService/getClient.d.ts +7 -0
  50. package/dist/services/DynamoDbService/getClient.js +30 -0
  51. package/dist/services/DynamoDbService/getTableName.d.ts +2 -0
  52. package/dist/services/DynamoDbService/getTableName.js +15 -0
  53. package/dist/services/DynamoDbService/index.d.ts +6 -0
  54. package/dist/services/DynamoDbService/index.js +6 -0
  55. package/dist/services/DynamoDbService/putRecord.d.ts +8 -0
  56. package/dist/services/DynamoDbService/putRecord.js +64 -0
  57. package/dist/services/DynamoDbService/query.d.ts +7 -0
  58. package/dist/services/DynamoDbService/query.js +78 -0
  59. package/dist/services/DynamoDbService/scan.d.ts +7 -0
  60. package/dist/services/DynamoDbService/scan.js +60 -0
  61. package/dist/services/DynamoDbService/updateRecord.d.ts +9 -0
  62. package/dist/services/DynamoDbService/updateRecord.js +89 -0
  63. package/dist/services/ElastiCacheRedisService/deleteRedisCache.d.ts +3 -0
  64. package/dist/services/ElastiCacheRedisService/deleteRedisCache.js +62 -0
  65. package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.d.ts +11 -0
  66. package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.js +69 -0
  67. package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.d.ts +12 -0
  68. package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.js +114 -0
  69. package/dist/services/ElastiCacheRedisService/getRedisCache.d.ts +3 -0
  70. package/dist/services/ElastiCacheRedisService/getRedisCache.js +70 -0
  71. package/dist/services/ElastiCacheRedisService/index.d.ts +5 -0
  72. package/dist/services/ElastiCacheRedisService/index.js +5 -0
  73. package/dist/services/ElastiCacheRedisService/setRedisCache.d.ts +6 -0
  74. package/dist/services/ElastiCacheRedisService/setRedisCache.js +77 -0
  75. package/dist/services/JWTService/decodeJwt.d.ts +7 -0
  76. package/dist/services/JWTService/decodeJwt.js +9 -0
  77. package/dist/services/JWTService/getJwtSecret.d.ts +13 -0
  78. package/dist/services/JWTService/getJwtSecret.js +54 -0
  79. package/dist/services/JWTService/index.d.ts +2 -0
  80. package/dist/services/JWTService/index.js +2 -0
  81. package/dist/services/JWTService/sign.d.ts +3 -0
  82. package/dist/services/JWTService/sign.js +31 -0
  83. package/dist/services/JWTService/verify.d.ts +7 -0
  84. package/dist/services/JWTService/verify.js +61 -0
  85. package/dist/services/LoggerService.d.ts +46 -0
  86. package/{src → dist}/services/LoggerService.js +29 -60
  87. package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.d.ts +2 -0
  88. package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.js +60 -0
  89. package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.d.ts +8 -0
  90. package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.js +87 -0
  91. package/dist/services/RDSAuroraMySQLProxyService/index.d.ts +3 -0
  92. package/dist/services/RDSAuroraMySQLProxyService/index.js +3 -0
  93. package/dist/services/RDSAuroraMySQLProxyService/query.d.ts +4 -0
  94. package/dist/services/RDSAuroraMySQLProxyService/query.js +63 -0
  95. package/dist/services/S3Service/getClient.d.ts +4 -0
  96. package/dist/services/S3Service/getClient.js +28 -0
  97. package/dist/services/S3Service/getDownloadSignedUrl.d.ts +7 -0
  98. package/dist/services/S3Service/getDownloadSignedUrl.js +58 -0
  99. package/dist/services/S3Service/getHeadObject.d.ts +13 -0
  100. package/dist/services/S3Service/getHeadObject.js +83 -0
  101. package/dist/services/S3Service/getObject.d.ts +10 -0
  102. package/dist/services/S3Service/getObject.js +89 -0
  103. package/dist/services/S3Service/getUploadSignedUrl.d.ts +7 -0
  104. package/dist/services/S3Service/getUploadSignedUrl.js +61 -0
  105. package/dist/services/S3Service/index.d.ts +6 -0
  106. package/dist/services/S3Service/index.js +6 -0
  107. package/dist/services/S3Service/putObject.d.ts +9 -0
  108. package/dist/services/S3Service/putObject.js +77 -0
  109. package/dist/services/SQSService/deleteMessage.d.ts +9 -0
  110. package/dist/services/SQSService/deleteMessage.js +69 -0
  111. package/dist/services/SQSService/dispatch.d.ts +9 -0
  112. package/dist/services/SQSService/dispatch.js +71 -0
  113. package/dist/services/SQSService/getClient.d.ts +4 -0
  114. package/dist/services/SQSService/getClient.js +28 -0
  115. package/dist/services/SQSService/getQueueUrl.d.ts +7 -0
  116. package/dist/services/SQSService/getQueueUrl.js +25 -0
  117. package/dist/services/SQSService/index.d.ts +4 -0
  118. package/dist/services/SQSService/index.js +4 -0
  119. package/dist/services/SQSService/receiveMessages.d.ts +8 -0
  120. package/dist/services/SQSService/receiveMessages.js +65 -0
  121. package/dist/services/SecretsManagerService/getClient.d.ts +7 -0
  122. package/dist/services/SecretsManagerService/getClient.js +28 -0
  123. package/dist/services/SecretsManagerService/getSecretValue.d.ts +7 -0
  124. package/dist/services/SecretsManagerService/getSecretValue.js +65 -0
  125. package/dist/services/SecretsManagerService/index.d.ts +2 -0
  126. package/dist/services/SecretsManagerService/index.js +2 -0
  127. package/dist/services/index.d.ts +1 -0
  128. package/dist/services/index.js +1 -0
  129. package/dist/types/aws.d.ts +8 -0
  130. package/dist/types/aws.js +1 -0
  131. package/dist/utils/cache/redis/deleteCache.d.ts +19 -0
  132. package/dist/utils/cache/redis/deleteCache.js +21 -0
  133. package/dist/utils/cache/redis/getCache.d.ts +22 -0
  134. package/dist/utils/cache/redis/getCache.js +24 -0
  135. package/dist/utils/cache/redis/getClient.d.ts +30 -0
  136. package/dist/utils/cache/redis/getClient.js +32 -0
  137. package/dist/utils/cache/redis/index.d.ts +4 -0
  138. package/dist/utils/cache/redis/index.js +4 -0
  139. package/dist/utils/cache/redis/setCache.d.ts +25 -0
  140. package/dist/utils/cache/redis/setCache.js +26 -0
  141. package/dist/utils/crypto/decrypt.d.ts +33 -0
  142. package/dist/utils/crypto/decrypt.js +59 -0
  143. package/dist/utils/crypto/encrypt.d.ts +31 -0
  144. package/dist/utils/crypto/encrypt.js +41 -0
  145. package/dist/utils/crypto/hash.d.ts +31 -0
  146. package/dist/utils/crypto/hash.js +56 -0
  147. package/dist/utils/crypto/index.d.ts +3 -0
  148. package/dist/utils/crypto/index.js +3 -0
  149. package/dist/utils/crypto/validateEncryptionFields.d.ts +19 -0
  150. package/dist/utils/crypto/validateEncryptionFields.js +71 -0
  151. package/dist/utils/db/mysql/proxy/disconnect.d.ts +2 -0
  152. package/dist/utils/db/mysql/proxy/disconnect.js +5 -0
  153. package/dist/utils/db/mysql/proxy/disconnectDb.d.ts +2 -0
  154. package/dist/utils/db/mysql/proxy/disconnectDb.js +5 -0
  155. package/dist/utils/db/mysql/proxy/getClient.d.ts +4 -0
  156. package/dist/utils/db/mysql/proxy/getClient.js +5 -0
  157. package/dist/utils/db/mysql/proxy/index.d.ts +3 -0
  158. package/dist/utils/db/mysql/proxy/index.js +3 -0
  159. package/dist/utils/db/mysql/proxy/query.d.ts +4 -0
  160. package/dist/utils/db/mysql/proxy/query.js +45 -0
  161. package/dist/utils/dynamodb/deleteRecord.d.ts +5 -0
  162. package/dist/utils/dynamodb/deleteRecord.js +39 -0
  163. package/dist/utils/dynamodb/getClient.d.ts +3 -0
  164. package/dist/utils/dynamodb/getClient.js +5 -0
  165. package/dist/utils/dynamodb/index.d.ts +6 -0
  166. package/dist/utils/dynamodb/index.js +6 -0
  167. package/dist/utils/dynamodb/putRecord.d.ts +4 -0
  168. package/dist/utils/dynamodb/putRecord.js +39 -0
  169. package/dist/utils/dynamodb/query.d.ts +5 -0
  170. package/dist/utils/dynamodb/query.js +52 -0
  171. package/dist/utils/dynamodb/scan.d.ts +4 -0
  172. package/dist/utils/dynamodb/scan.js +40 -0
  173. package/dist/utils/dynamodb/updateRecord.d.ts +5 -0
  174. package/dist/utils/dynamodb/updateRecord.js +53 -0
  175. package/dist/utils/formatUnixTimestamp.d.ts +8 -0
  176. package/dist/utils/formatUnixTimestamp.js +17 -0
  177. package/dist/utils/generateUid.d.ts +13 -0
  178. package/{src → dist}/utils/generateUid.js +9 -4
  179. package/dist/utils/getCurrentDatetime.d.ts +2 -0
  180. package/dist/utils/getCurrentDatetime.js +4 -0
  181. package/dist/utils/getCurrentTimestamp.d.ts +7 -0
  182. package/dist/utils/getCurrentTimestamp.js +9 -0
  183. package/dist/utils/getJwtSubFromAuthHeader.d.ts +9 -0
  184. package/dist/utils/getJwtSubFromAuthHeader.js +24 -0
  185. package/dist/utils/index.d.ts +9 -0
  186. package/dist/utils/index.js +9 -0
  187. package/dist/utils/isDecimal.d.ts +8 -0
  188. package/dist/utils/isDecimal.js +9 -0
  189. package/dist/utils/isEmail.d.ts +9 -0
  190. package/{src → dist}/utils/isEmail.js +9 -4
  191. package/dist/utils/isEmpty.d.ts +8 -0
  192. package/dist/utils/isEmpty.js +19 -0
  193. package/dist/utils/jwt/index.d.ts +2 -0
  194. package/dist/utils/jwt/index.js +2 -0
  195. package/dist/utils/jwt/sign.d.ts +3 -0
  196. package/dist/utils/jwt/sign.js +5 -0
  197. package/dist/utils/jwt/verify.d.ts +3 -0
  198. package/dist/utils/jwt/verify.js +12 -0
  199. package/dist/utils/logger.d.ts +20 -0
  200. package/dist/utils/logger.js +38 -0
  201. package/dist/utils/s3/getClient.d.ts +3 -0
  202. package/dist/utils/s3/getClient.js +5 -0
  203. package/dist/utils/s3/getDownloadSignedUrl.d.ts +5 -0
  204. package/dist/utils/s3/getDownloadSignedUrl.js +39 -0
  205. package/dist/utils/s3/getHeadObject.d.ts +10 -0
  206. package/dist/utils/s3/getHeadObject.js +39 -0
  207. package/dist/utils/s3/getObject.d.ts +13 -0
  208. package/dist/utils/s3/getObject.js +51 -0
  209. package/dist/utils/s3/getUploadSignedUrl.d.ts +5 -0
  210. package/dist/utils/s3/getUploadSignedUrl.js +39 -0
  211. package/dist/utils/s3/index.d.ts +6 -0
  212. package/dist/utils/s3/index.js +6 -0
  213. package/dist/utils/s3/putObject.d.ts +5 -0
  214. package/dist/utils/s3/putObject.js +39 -0
  215. package/dist/utils/secretsmanager/getClient.d.ts +3 -0
  216. package/dist/utils/secretsmanager/getClient.js +5 -0
  217. package/dist/utils/secretsmanager/getSecretValue.d.ts +4 -0
  218. package/dist/utils/secretsmanager/getSecretValue.js +68 -0
  219. package/dist/utils/secretsmanager/index.d.ts +2 -0
  220. package/dist/utils/secretsmanager/index.js +2 -0
  221. package/dist/utils/sqs/deleteMessage.d.ts +5 -0
  222. package/dist/utils/sqs/deleteMessage.js +39 -0
  223. package/dist/utils/sqs/dispatch.d.ts +5 -0
  224. package/dist/utils/sqs/dispatch.js +39 -0
  225. package/dist/utils/sqs/getClient.d.ts +3 -0
  226. package/dist/utils/sqs/getClient.js +5 -0
  227. package/dist/utils/sqs/index.d.ts +4 -0
  228. package/dist/utils/sqs/index.js +4 -0
  229. package/dist/utils/sqs/receiveMessages.d.ts +5 -0
  230. package/dist/utils/sqs/receiveMessages.js +39 -0
  231. package/dist/utils/validateFields.d.ts +22 -0
  232. package/{src → dist}/utils/validateFields.js +13 -19
  233. package/package.json +145 -34
  234. package/src/exceptions/__tests__/LesgoException.spec.js +0 -24
  235. package/src/exceptions/index.js +0 -4
  236. package/src/index.js +0 -4
  237. package/src/middlewares/__mocks__/ValidationErrorException.js +0 -18
  238. package/src/middlewares/__tests__/basicAuthMiddleware.spec.js +0 -264
  239. package/src/middlewares/__tests__/clientAuthMiddleware.spec.js +0 -235
  240. package/src/middlewares/__tests__/errorHttpResponseMiddleware.spec.js +0 -203
  241. package/src/middlewares/__tests__/gzipHttpResponse.spec.js +0 -185
  242. package/src/middlewares/__tests__/httpNoOutputMiddleware.spec.js +0 -201
  243. package/src/middlewares/__tests__/normalizeHttpRequestMiddleware.spec.js +0 -181
  244. package/src/middlewares/__tests__/normalizeSQSMessageMiddleware.spec.js +0 -120
  245. package/src/middlewares/__tests__/successHttpResponseMiddleware.spec.js +0 -172
  246. package/src/middlewares/__tests__/verifyJwtMiddleware.spec.js +0 -297
  247. package/src/middlewares/basicAuthMiddleware.js +0 -125
  248. package/src/middlewares/clientAuthMiddleware.js +0 -103
  249. package/src/middlewares/errorHttpResponseMiddleware.js +0 -101
  250. package/src/middlewares/gzipHttpResponse.js +0 -98
  251. package/src/middlewares/httpMiddleware.js +0 -19
  252. package/src/middlewares/httpNoOutputMiddleware.js +0 -91
  253. package/src/middlewares/index.js +0 -19
  254. package/src/middlewares/normalizeHttpRequestMiddleware.js +0 -101
  255. package/src/middlewares/normalizeSQSMessageMiddleware.js +0 -67
  256. package/src/middlewares/successHttpResponseMiddleware.js +0 -85
  257. package/src/middlewares/verifyJwtMiddleware.js +0 -73
  258. package/src/services/AuroraDbRDSProxyService.js +0 -182
  259. package/src/services/AuroraDbService.js +0 -111
  260. package/src/services/DynamoDbService.js +0 -177
  261. package/src/services/ElastiCacheService.js +0 -17
  262. package/src/services/ElasticsearchService.js +0 -181
  263. package/src/services/FirebaseAdminService.js +0 -108
  264. package/src/services/JwtService.js +0 -52
  265. package/src/services/S3Service.js +0 -59
  266. package/src/services/SQSService.js +0 -65
  267. package/src/services/__tests__/AuroraDbRDSProxyService.spec.js +0 -278
  268. package/src/services/__tests__/AuroraDbService.spec.js +0 -211
  269. package/src/services/__tests__/AwsElasticsearchConnection.spec.js +0 -89
  270. package/src/services/__tests__/DynamoDbService.spec.js +0 -314
  271. package/src/services/__tests__/ElasticsearchService.spec.js +0 -201
  272. package/src/services/__tests__/FirebaseAdminService.spec.js +0 -356
  273. package/src/services/__tests__/JwtService.spec.js +0 -35
  274. package/src/services/__tests__/LengthAwarePaginator.spec.js +0 -223
  275. package/src/services/__tests__/LoggerService.spec.js +0 -267
  276. package/src/services/__tests__/Paginator.spec.js +0 -383
  277. package/src/services/__tests__/S3Service.spec.js +0 -55
  278. package/src/services/__tests__/SQSService.spec.js +0 -47
  279. package/src/services/__tests__/SignedRequest.spec.js +0 -103
  280. package/src/services/aws/AwsElasticsearchConnection.js +0 -59
  281. package/src/services/aws/SignedRequest.js +0 -158
  282. package/src/services/index.js +0 -19
  283. package/src/services/pagination/LengthAwarePaginator.js +0 -49
  284. package/src/services/pagination/Paginator.js +0 -260
  285. package/src/utils/__mocks__/db.js +0 -109
  286. package/src/utils/__tests__/cache.spec.js +0 -131
  287. package/src/utils/__tests__/crypto.spec.js +0 -122
  288. package/src/utils/__tests__/db.spec.js +0 -70
  289. package/src/utils/__tests__/dynamodb.spec.js +0 -27
  290. package/src/utils/__tests__/elasticsearch.spec.js +0 -43
  291. package/src/utils/__tests__/generateUid.spec.js +0 -36
  292. package/src/utils/__tests__/getJwtSubFromAuthHeader.spec.js +0 -20
  293. package/src/utils/__tests__/isDecimal.spec.js +0 -12
  294. package/src/utils/__tests__/isEmail.spec.js +0 -28
  295. package/src/utils/__tests__/isEmpty.spec.js +0 -31
  296. package/src/utils/__tests__/logger.spec.js +0 -11
  297. package/src/utils/__tests__/objectStore.spec.js +0 -67
  298. package/src/utils/__tests__/prepSQLInsertParams.spec.js +0 -46
  299. package/src/utils/__tests__/prepSQLUpdateParams.spec.js +0 -36
  300. package/src/utils/__tests__/queue.spec.js +0 -54
  301. package/src/utils/__tests__/validateFields.spec.js +0 -374
  302. package/src/utils/cache.js +0 -215
  303. package/src/utils/crypto.js +0 -77
  304. package/src/utils/db.js +0 -17
  305. package/src/utils/dynamodb.js +0 -6
  306. package/src/utils/elasticsearch.js +0 -20
  307. package/src/utils/getJwtSubFromAuthHeader.js +0 -18
  308. package/src/utils/index.js +0 -26
  309. package/src/utils/isDecimal.js +0 -2
  310. package/src/utils/isEmpty.js +0 -6
  311. package/src/utils/logger.js +0 -25
  312. package/src/utils/objectStore.js +0 -11
  313. package/src/utils/prepSQLInsertParams.js +0 -21
  314. package/src/utils/prepSQLUpdateParams.js +0 -25
  315. package/src/utils/queue.js +0 -11
@@ -1,98 +0,0 @@
1
- import zlib from 'zlib';
2
- import LesgoException from '../exceptions/LesgoException';
3
-
4
- /**
5
- * Perform zipping and add neccessary header
6
- */
7
- export const gzip = async response => {
8
- return new Promise((resolve, reject) => {
9
- try {
10
- zlib.gzip(response.body, (error, gzippedResponse) => {
11
- if (error) {
12
- reject(new LesgoException(error.message, 'GZIP_LIB_ERROR'));
13
- } else {
14
- response.body = gzippedResponse.toString('base64');
15
- response.isBase64Encoded = true;
16
- response.headers = {
17
- ...response.headers,
18
- 'Content-Encoding': 'gzip',
19
- };
20
- resolve(response);
21
- }
22
- });
23
- } catch (err) {
24
- /* istanbul ignore next */
25
- reject(new LesgoException(err.message, 'GZIP_UNKNOWN_ERROR', 500));
26
- }
27
- });
28
- };
29
-
30
- /**
31
- * Determine request origin
32
- */
33
- export const determineRequestOrigin = handler => {
34
- const { requestContext = {} } = handler.event;
35
- let requestFrom = 'APIGATEWAY';
36
-
37
- if (requestContext.elb) {
38
- requestFrom = 'ELB';
39
- }
40
-
41
- if (requestContext.apiId) {
42
- requestFrom = 'APIGATEWAY';
43
- }
44
-
45
- return requestFrom;
46
- };
47
-
48
- /**
49
- * Determine headers Accept-Encoding exist
50
- */
51
- export const determineRequestAcceptEncoding = handler => {
52
- const { headers } = handler.event;
53
-
54
- let acceptEncoding =
55
- headers['Accept-encoding'] ||
56
- headers['accept-encoding'] ||
57
- headers['Accept-Encoding'];
58
-
59
- if (acceptEncoding) {
60
- // normalise header
61
- const re = / /g;
62
- acceptEncoding = acceptEncoding
63
- .replace(re, '')
64
- .toLowerCase()
65
- .split(',');
66
-
67
- if (acceptEncoding.includes('gzip')) {
68
- return true;
69
- }
70
- }
71
-
72
- return false;
73
- };
74
-
75
- export const gzipHttpResponse = async (handler, options = {}) => {
76
- /*
77
- * By default we zip on ELB request only, but you also add APIGATEWAY
78
- * Supported Request [ELB, APIGATEWAY]
79
- */
80
- let zipWhenRequest = ['ELB'];
81
- if (options.zipWhenRequest) {
82
- zipWhenRequest = options.zipWhenRequest;
83
- }
84
-
85
- const requestFrom = determineRequestOrigin(handler);
86
-
87
- if (
88
- zipWhenRequest.includes(requestFrom) &&
89
- determineRequestAcceptEncoding(handler)
90
- ) {
91
- // eslint-disable-next-line no-param-reassign
92
- handler.response = await gzip(handler.response);
93
- }
94
-
95
- return handler.response;
96
- };
97
-
98
- export default gzipHttpResponse;
@@ -1,19 +0,0 @@
1
- import { normalizeHttpRequestBeforeHandler } from './normalizeHttpRequestMiddleware';
2
- import { successHttpResponseAfterHandler } from './successHttpResponseMiddleware';
3
- import { errorHttpResponseAfterHandler } from './errorHttpResponseMiddleware';
4
-
5
- /**
6
- * Combines all http middlewares into a single middleware
7
- */
8
- /* istanbul ignore next */
9
- const httpMiddleware = opts => {
10
- return {
11
- before: (handler, next) => normalizeHttpRequestBeforeHandler(handler, next),
12
- after: (handler, next) =>
13
- successHttpResponseAfterHandler(handler, next, opts),
14
- onError: (handler, next) =>
15
- errorHttpResponseAfterHandler(handler, next, opts),
16
- };
17
- };
18
-
19
- export default httpMiddleware;
@@ -1,91 +0,0 @@
1
- import app from 'Config/app'; // eslint-disable-line import/no-unresolved
2
- import { normalizeHttpRequestBeforeHandler } from './normalizeHttpRequestMiddleware';
3
- import { successHttpResponseHandler } from './successHttpResponseMiddleware';
4
- import { errorHttpResponseHandler } from './errorHttpResponseMiddleware';
5
-
6
- const allowResponse = () => {
7
- return app.debug;
8
- };
9
-
10
- const successHttpNoOutputResponseHandler = async opts => {
11
- const { queryStringParameters } = opts.event;
12
- const debug = queryStringParameters && queryStringParameters.debug;
13
- const response = await successHttpResponseHandler(opts);
14
- const shouldAllowResponse = opts.allowResponse || allowResponse;
15
-
16
- /* istanbul ignore next */
17
- if (!debug || !shouldAllowResponse(opts)) {
18
- response.body = '';
19
- }
20
-
21
- return response;
22
- };
23
-
24
- export const successHttpNoOutputResponseAfterHandler = async (
25
- handler,
26
- next,
27
- opts
28
- ) => {
29
- const defaults = {
30
- response: handler.response,
31
- event: handler.event,
32
- allowResponse,
33
- };
34
- const options = { ...defaults, ...opts };
35
-
36
- // eslint-disable-next-line no-param-reassign
37
- handler.response = await successHttpNoOutputResponseHandler(options);
38
-
39
- /* istanbul ignore next */
40
- next();
41
- };
42
-
43
- const errorHttpResponseNoOutputHandler = async opts => {
44
- const { queryStringParameters } = opts.event;
45
- const debug = queryStringParameters && queryStringParameters.debug;
46
- const response = await errorHttpResponseHandler({
47
- ...opts,
48
- debugMode: opts.debugMode || debug,
49
- });
50
- const shouldAllowResponse = opts.allowResponse || allowResponse;
51
-
52
- if (!debug || !shouldAllowResponse(opts)) {
53
- response.statusCode = 200;
54
- response.body = '';
55
- }
56
-
57
- return response;
58
- };
59
-
60
- export const errorHttpNoOutputResponseAfterHandler = async (
61
- handler,
62
- next,
63
- opts
64
- ) => {
65
- const defaults = {
66
- error: handler.error,
67
- event: handler.event,
68
- logger: console.error, // eslint-disable-line no-console
69
- allowResponse,
70
- };
71
-
72
- const options = { ...defaults, ...opts };
73
-
74
- // eslint-disable-next-line no-param-reassign
75
- handler.response = await errorHttpResponseNoOutputHandler(options);
76
- /* istanbul ignore next */
77
- next();
78
- };
79
-
80
- /* istanbul ignore next */
81
- const httpNoOutputMiddleware = opts => {
82
- return {
83
- before: (handler, next) => normalizeHttpRequestBeforeHandler(handler, next),
84
- after: (handler, next) =>
85
- successHttpNoOutputResponseAfterHandler(handler, next, opts),
86
- onError: (handler, next) =>
87
- errorHttpNoOutputResponseAfterHandler(handler, next, opts),
88
- };
89
- };
90
-
91
- export default httpNoOutputMiddleware;
@@ -1,19 +0,0 @@
1
- import httpMiddleware from './httpMiddleware';
2
- import normalizeHttpRequestMiddleware from './normalizeHttpRequestMiddleware';
3
- import successHttpResponseMiddleware from './successHttpResponseMiddleware';
4
- import errorHttpResponseMiddleware from './errorHttpResponseMiddleware';
5
- import normalizeSQSMessageMiddleware from './normalizeSQSMessageMiddleware';
6
- import verifyJwtMiddleware from './verifyJwtMiddleware';
7
- import basicAuthMiddleware from './basicAuthMiddleware';
8
- import clientAuthMiddleware from './clientAuthMiddleware';
9
-
10
- export {
11
- httpMiddleware,
12
- normalizeHttpRequestMiddleware,
13
- successHttpResponseMiddleware,
14
- errorHttpResponseMiddleware,
15
- normalizeSQSMessageMiddleware,
16
- verifyJwtMiddleware,
17
- basicAuthMiddleware,
18
- clientAuthMiddleware,
19
- };
@@ -1,101 +0,0 @@
1
- import app from 'Config/app'; // eslint-disable-line import/no-unresolved
2
- import getJwtSubFromAuthHeader from '../utils/getJwtSubFromAuthHeader';
3
- import logger from '../utils/logger';
4
-
5
- export const normalizeRequest = opts => {
6
- const { headers, body } = opts;
7
- let { qs } = opts;
8
- let input = null;
9
-
10
- // to be consistent with api gateway, we convert empty object to null
11
- if (JSON.stringify(qs) === '{}') qs = null;
12
-
13
- if (!headers && qs === null) return input;
14
-
15
- if (qs !== null) input = qs;
16
-
17
- const contentType = headers['Content-Type'] || headers['content-type'];
18
-
19
- if (!contentType) return input;
20
-
21
- /* istanbul ignore else */
22
- if (contentType.startsWith('application/json')) {
23
- try {
24
- input = { ...input, ...JSON.parse(body) };
25
- } catch (err) {
26
- throw new Error(
27
- 'Content type defined as JSON but an invalid JSON was provided'
28
- );
29
- }
30
- }
31
-
32
- return input;
33
- };
34
-
35
- export const normalizeHttpRequestBeforeHandler = (handler, next) => {
36
- const options = {
37
- headers: handler.event.headers,
38
- qs: handler.event.queryStringParameters,
39
- body: handler.event.body,
40
- };
41
-
42
- // eslint-disable-next-line no-param-reassign
43
- handler.event.input = normalizeRequest(options);
44
-
45
- const authHeader =
46
- options.headers.Authorization || options.headers.authorization;
47
-
48
- const auth = {};
49
- if (authHeader) {
50
- auth.sub = getJwtSubFromAuthHeader(authHeader);
51
- }
52
-
53
- // eslint-disable-next-line no-param-reassign
54
- handler.event.auth = auth;
55
-
56
- const tags = {};
57
- switch (handler.event.version) {
58
- case '2.0': {
59
- if (handler.event.requestContext && handler.event.requestContext.http) {
60
- tags.path = handler.event.requestContext.http.path;
61
- tags.httpMethod = handler.event.requestContext.http.method;
62
- }
63
- break;
64
- }
65
- default:
66
- tags.path = handler.event.path;
67
- tags.httpMethod = handler.event.httpMethod;
68
- break;
69
- }
70
-
71
- logger.addMeta({
72
- requestId: handler.event.requestContext
73
- ? handler.event.requestContext.requestId
74
- : null,
75
- tags,
76
- });
77
-
78
- if (app.debug) {
79
- logger.addMeta({
80
- auth: handler.event.auth,
81
- queryStringParameters: options.qs,
82
- body: options.body,
83
- });
84
- }
85
-
86
- /* istanbul ignore next */
87
- next();
88
- };
89
-
90
- /**
91
- * Normalizes handler.event.body and handler.event.queryStringParameters
92
- * as handler.event.input Object
93
- */
94
- /* istanbul ignore next */
95
- const normalizeHttpRequestMiddleware = () => {
96
- return {
97
- before: (handler, next) => normalizeHttpRequestBeforeHandler(handler, next),
98
- };
99
- };
100
-
101
- export default normalizeHttpRequestMiddleware;
@@ -1,67 +0,0 @@
1
- import logger from '../utils/logger';
2
- import isEmpty from '../utils/isEmpty';
3
-
4
- const FILE = 'Lesgo/middlewares/normalizeSQSMessageMiddleware';
5
-
6
- export const normalizeHandler = records => {
7
- let recordCount = 0;
8
-
9
- if (!records || records === null || Object.keys(records).length === 0) {
10
- recordCount = null;
11
- } else {
12
- recordCount = Object.keys(records).length;
13
- }
14
-
15
- logger.addMeta({ recordCount });
16
-
17
- if (recordCount === null) return null;
18
-
19
- return Object.values(records).map(record => ({
20
- messageId: record.messageId,
21
- receiptHandle: record.receiptHandle,
22
- ...JSON.parse(record.body),
23
- }));
24
- };
25
-
26
- export const disconnectConnections = async opts => {
27
- try {
28
- const disconnect = [];
29
- if (opts) {
30
- if (!isEmpty(opts.cache)) disconnect.push(opts.cache.end());
31
- if (!isEmpty(opts.db)) disconnect.push(opts.db.end());
32
- if (!isEmpty(opts.dbRead)) disconnect.push(opts.dbRead.end());
33
- }
34
-
35
- if (disconnect.length > 0) {
36
- await Promise.all(disconnect);
37
- }
38
- } catch (err) {
39
- logger.error(`${FILE}::Failed to end connection`, err);
40
- }
41
- };
42
-
43
- /**
44
- * Normalizes handler.event.Records as handler.event.collections Object.
45
- * This type of request is received by SQS listeners
46
- */
47
- /* istanbul ignore next */
48
- const normalizeSQSMessageMiddleware /* istanbul ignore next */ = opts => {
49
- return {
50
- before: (handler, next) => {
51
- const { Records } = handler.event;
52
- // eslint-disable-next-line no-param-reassign
53
- handler.event.collection = normalizeHandler(Records);
54
- next();
55
- },
56
- after: async (handler, next) => {
57
- await disconnectConnections(opts);
58
- next();
59
- },
60
- onError: async (handler, next) => {
61
- await disconnectConnections(opts);
62
- next();
63
- },
64
- };
65
- };
66
-
67
- export default normalizeSQSMessageMiddleware;
@@ -1,85 +0,0 @@
1
- import gzipHttpResponse from './gzipHttpResponse';
2
- import isEmpty from '../utils/isEmpty';
3
- import logger from '../utils/logger';
4
-
5
- const FILE = 'Lesgo/middlewares/successHttpResponseMiddleware';
6
-
7
- export const successHttpResponseHandler = async opts => {
8
- const defaults = {
9
- response: '',
10
- statusCode: 200,
11
- event: {},
12
- debugMode: false,
13
- headers: {
14
- 'Access-Control-Allow-Origin': '*',
15
- 'Cache-Control': 'no-cache',
16
- 'Content-Type': 'application/json',
17
- },
18
- };
19
-
20
- const optionsHeadersMerged =
21
- opts === undefined
22
- ? { ...defaults.headers }
23
- : {
24
- ...opts,
25
- headers: { ...defaults.headers, ...opts.headers },
26
- };
27
-
28
- const options = { ...defaults, ...optionsHeadersMerged };
29
-
30
- try {
31
- const disconnect = [];
32
- if (!isEmpty(opts.cache)) disconnect.push(opts.cache.end());
33
- if (!isEmpty(opts.db)) disconnect.push(opts.db.end());
34
- if (!isEmpty(opts.dbRead)) disconnect.push(opts.dbRead.end());
35
-
36
- if (disconnect.length > 0) {
37
- await Promise.all(disconnect);
38
- }
39
- } catch (err) {
40
- logger.error(`${FILE}::Failed to end connection`, err);
41
- }
42
-
43
- return {
44
- headers: options.headers,
45
- statusCode: options.statusCode,
46
- body: options.formatSuccess
47
- ? options.formatSuccess(options)
48
- : JSON.stringify({
49
- status: 'success',
50
- data: options.response,
51
- _meta: options.debugMode ? options.event : {},
52
- }),
53
- };
54
- };
55
-
56
- export const successHttpResponseAfterHandler = async (handler, next, opts) => {
57
- const defaults = {
58
- response: handler.response,
59
- event: handler.event,
60
- };
61
-
62
- const options = { ...defaults, ...opts };
63
-
64
- // eslint-disable-next-line no-param-reassign
65
- handler.response = await successHttpResponseHandler(options);
66
-
67
- // eslint-disable-next-line no-param-reassign
68
- handler.response = await gzipHttpResponse(handler, opts);
69
-
70
- /* istanbul ignore next */
71
- next();
72
- };
73
-
74
- /**
75
- * Formats response for successful responses
76
- */
77
- /* istanbul ignore next */
78
- const successHttpResponseMiddleware = opts => {
79
- return {
80
- after: (handler, next) =>
81
- successHttpResponseAfterHandler(handler, next, opts),
82
- };
83
- };
84
-
85
- export default successHttpResponseMiddleware;
@@ -1,73 +0,0 @@
1
- import config from 'Config/jwt'; // eslint-disable-line import/no-unresolved
2
- import JwtService from '../services/JwtService';
3
- import LesgoException from '../exceptions/LesgoException';
4
-
5
- export const token = headers => {
6
- const authorizationHeader = headers.Authorization || headers.authorization;
7
-
8
- if (!authorizationHeader) {
9
- throw new LesgoException(
10
- 'Authorization Header is required!',
11
- 'JWT_MISSING_AUTHORIZATION_HEADER',
12
- 403
13
- );
14
- }
15
-
16
- const parsed = authorizationHeader.split(' ');
17
-
18
- if (!parsed[1]) {
19
- throw new LesgoException(
20
- 'Missing Bearer token!',
21
- 'JWT_MISSING_BEARER_TOKEN',
22
- 403
23
- );
24
- }
25
-
26
- return parsed[1];
27
- };
28
-
29
- export const verifyJwtMiddlewareBeforeHandler = async (handler, next, opts) => {
30
- const { headers } = handler.event;
31
-
32
- const finalConfig =
33
- typeof opts !== 'undefined' && 'jwtConfig' in opts
34
- ? opts.jwtConfig
35
- : config;
36
-
37
- const { secret, callback } = finalConfig;
38
-
39
- try {
40
- const service = new JwtService(token(headers), {
41
- ...finalConfig,
42
- ...{
43
- secret: typeof secret === 'function' ? secret(handler) : secret,
44
- },
45
- });
46
-
47
- // eslint-disable-next-line no-param-reassign
48
- handler.event.decodedJwt = service.validate().decoded;
49
-
50
- if (typeof callback === 'function') {
51
- await callback(handler);
52
- }
53
-
54
- next();
55
- } catch (err) {
56
- if (err.name === 'JsonWebTokenError') {
57
- throw new LesgoException(err.message, 'JWT_ERROR', 403, err);
58
- } else if (err.name === 'TokenExpiredError') {
59
- throw new LesgoException(err.message, 'JWT_EXPIRED', 403, err);
60
- } else {
61
- throw err;
62
- }
63
- }
64
- };
65
-
66
- const verifyJwtMiddleware /* istanbul ignore next */ = opts => {
67
- return {
68
- before: (handler, next) =>
69
- verifyJwtMiddlewareBeforeHandler(handler, next, opts),
70
- };
71
- };
72
-
73
- export default verifyJwtMiddleware;