lesgo 0.7.8 → 2.1.0

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 (318) hide show
  1. package/README.md +5 -4
  2. package/bin/lesgo-scripts.sh +52 -7
  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 +36 -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/CHANGELOG.md +0 -9
  235. package/src/exceptions/__tests__/LesgoException.spec.js +0 -24
  236. package/src/exceptions/index.js +0 -4
  237. package/src/index.js +0 -4
  238. package/src/middlewares/__mocks__/ValidationErrorException.js +0 -18
  239. package/src/middlewares/__tests__/basicAuthMiddleware.spec.js +0 -225
  240. package/src/middlewares/__tests__/clientAuthMiddleware.spec.js +0 -137
  241. package/src/middlewares/__tests__/errorHttpResponseMiddleware.spec.js +0 -190
  242. package/src/middlewares/__tests__/gzipHttpResponse.spec.js +0 -185
  243. package/src/middlewares/__tests__/httpNoOutputMiddleware.spec.js +0 -199
  244. package/src/middlewares/__tests__/normalizeHttpRequestMiddleware.spec.js +0 -181
  245. package/src/middlewares/__tests__/normalizeSQSMessageMiddleware.spec.js +0 -120
  246. package/src/middlewares/__tests__/serverAuthMiddleware.spec.js +0 -170
  247. package/src/middlewares/__tests__/successHttpResponseMiddleware.spec.js +0 -159
  248. package/src/middlewares/__tests__/verifyJwtMiddleware.spec.js +0 -222
  249. package/src/middlewares/basicAuthMiddleware.js +0 -145
  250. package/src/middlewares/clientAuthMiddleware.js +0 -82
  251. package/src/middlewares/errorHttpResponseMiddleware.js +0 -99
  252. package/src/middlewares/gzipHttpResponse.js +0 -98
  253. package/src/middlewares/httpMiddleware.js +0 -19
  254. package/src/middlewares/httpNoOutputMiddleware.js +0 -87
  255. package/src/middlewares/index.js +0 -15
  256. package/src/middlewares/normalizeHttpRequestMiddleware.js +0 -101
  257. package/src/middlewares/normalizeSQSMessageMiddleware.js +0 -67
  258. package/src/middlewares/serverAuthMiddleware.js +0 -29
  259. package/src/middlewares/successHttpResponseMiddleware.js +0 -83
  260. package/src/middlewares/verifyJwtMiddleware.js +0 -62
  261. package/src/services/AuroraDbRDSProxyService.js +0 -182
  262. package/src/services/AuroraDbService.js +0 -111
  263. package/src/services/DynamoDbService.js +0 -177
  264. package/src/services/ElastiCacheService.js +0 -17
  265. package/src/services/ElasticsearchService.js +0 -181
  266. package/src/services/FirebaseAdminService.js +0 -108
  267. package/src/services/JwtService.js +0 -52
  268. package/src/services/S3Service.js +0 -59
  269. package/src/services/SQSService.js +0 -65
  270. package/src/services/__tests__/AuroraDbRDSProxyService.spec.js +0 -278
  271. package/src/services/__tests__/AuroraDbService.spec.js +0 -211
  272. package/src/services/__tests__/AwsElasticsearchConnection.spec.js +0 -89
  273. package/src/services/__tests__/DynamoDbService.spec.js +0 -314
  274. package/src/services/__tests__/ElasticsearchService.spec.js +0 -201
  275. package/src/services/__tests__/FirebaseAdminService.spec.js +0 -356
  276. package/src/services/__tests__/JwtService.spec.js +0 -35
  277. package/src/services/__tests__/LengthAwarePaginator.spec.js +0 -223
  278. package/src/services/__tests__/LoggerService.spec.js +0 -252
  279. package/src/services/__tests__/Paginator.spec.js +0 -383
  280. package/src/services/__tests__/S3Service.spec.js +0 -55
  281. package/src/services/__tests__/SQSService.spec.js +0 -47
  282. package/src/services/__tests__/SignedRequest.spec.js +0 -103
  283. package/src/services/aws/AwsElasticsearchConnection.js +0 -59
  284. package/src/services/aws/SignedRequest.js +0 -158
  285. package/src/services/index.js +0 -19
  286. package/src/services/pagination/LengthAwarePaginator.js +0 -49
  287. package/src/services/pagination/Paginator.js +0 -260
  288. package/src/utils/__mocks__/db.js +0 -109
  289. package/src/utils/__tests__/cache.spec.js +0 -131
  290. package/src/utils/__tests__/crypto.spec.js +0 -122
  291. package/src/utils/__tests__/db.spec.js +0 -70
  292. package/src/utils/__tests__/dynamodb.spec.js +0 -27
  293. package/src/utils/__tests__/elasticsearch.spec.js +0 -43
  294. package/src/utils/__tests__/generateUid.spec.js +0 -36
  295. package/src/utils/__tests__/getJwtSubFromAuthHeader.spec.js +0 -20
  296. package/src/utils/__tests__/isDecimal.spec.js +0 -12
  297. package/src/utils/__tests__/isEmail.spec.js +0 -28
  298. package/src/utils/__tests__/isEmpty.spec.js +0 -31
  299. package/src/utils/__tests__/logger.spec.js +0 -11
  300. package/src/utils/__tests__/objectStore.spec.js +0 -67
  301. package/src/utils/__tests__/prepSQLInsertParams.spec.js +0 -46
  302. package/src/utils/__tests__/prepSQLUpdateParams.spec.js +0 -36
  303. package/src/utils/__tests__/queue.spec.js +0 -54
  304. package/src/utils/__tests__/validateFields.spec.js +0 -374
  305. package/src/utils/cache.js +0 -215
  306. package/src/utils/crypto.js +0 -77
  307. package/src/utils/db.js +0 -17
  308. package/src/utils/dynamodb.js +0 -6
  309. package/src/utils/elasticsearch.js +0 -20
  310. package/src/utils/getJwtSubFromAuthHeader.js +0 -18
  311. package/src/utils/index.js +0 -26
  312. package/src/utils/isDecimal.js +0 -2
  313. package/src/utils/isEmpty.js +0 -6
  314. package/src/utils/logger.js +0 -25
  315. package/src/utils/objectStore.js +0 -11
  316. package/src/utils/prepSQLInsertParams.js +0 -21
  317. package/src/utils/prepSQLUpdateParams.js +0 -25
  318. package/src/utils/queue.js +0 -11
@@ -0,0 +1,128 @@
1
+ var __awaiter =
2
+ (this && this.__awaiter) ||
3
+ function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P
6
+ ? value
7
+ : new P(function (resolve) {
8
+ resolve(value);
9
+ });
10
+ }
11
+ return new (P || (P = Promise))(function (resolve, reject) {
12
+ function fulfilled(value) {
13
+ try {
14
+ step(generator.next(value));
15
+ } catch (e) {
16
+ reject(e);
17
+ }
18
+ }
19
+ function rejected(value) {
20
+ try {
21
+ step(generator['throw'](value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ }
26
+ function step(result) {
27
+ result.done
28
+ ? resolve(result.value)
29
+ : adopt(result.value).then(fulfilled, rejected);
30
+ }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ import { isEmpty, logger } from '../utils';
35
+ const FILE = 'lesgo.middlewares.httpResponseMiddleware';
36
+ const defaultOptions = {
37
+ debugMode: false,
38
+ headers: {
39
+ 'Access-Control-Allow-Origin': '*',
40
+ 'Cache-Control': 'no-cache',
41
+ 'Content-Type': 'application/json',
42
+ },
43
+ isBase64Encoded: false,
44
+ };
45
+ const httpResponseMiddleware = (opts = {}) => {
46
+ const options = Object.assign(
47
+ Object.assign(Object.assign({}, defaultOptions), opts),
48
+ {
49
+ headers: Object.assign(
50
+ Object.assign({}, defaultOptions.headers),
51
+ opts.headers
52
+ ),
53
+ }
54
+ );
55
+ const httpResponseMiddlewareAfter = request =>
56
+ __awaiter(void 0, void 0, void 0, function* () {
57
+ var _a;
58
+ let body;
59
+ if (options.headers['Content-Type'] !== 'application/json') {
60
+ body = request.response;
61
+ } else {
62
+ body = {
63
+ status: 'success',
64
+ data: request.response,
65
+ _meta: options.debugMode ? request.event : {},
66
+ };
67
+ }
68
+ const responseData = {
69
+ statusCode: 200,
70
+ headers: Object.assign(
71
+ Object.assign({}, options.headers),
72
+ (_a = request.response) === null || _a === void 0
73
+ ? void 0
74
+ : _a.headers
75
+ ),
76
+ body,
77
+ isBase64Encoded: options.isBase64Encoded,
78
+ };
79
+ logger.debug(`${FILE}::RESPONSE_DATA_SUCCESS`, responseData);
80
+ request.response = Object.assign(Object.assign({}, responseData), {
81
+ body:
82
+ options.headers['Content-Type'] === 'application/json'
83
+ ? JSON.stringify(responseData.body)
84
+ : responseData.body,
85
+ });
86
+ });
87
+ const httpResponseMiddlewareOnError = request =>
88
+ __awaiter(void 0, void 0, void 0, function* () {
89
+ var _b;
90
+ const error = request.error;
91
+ if (error.extra && error.extra.statusCode) {
92
+ delete error.extra.statusCode;
93
+ }
94
+ const responseData = {
95
+ statusCode: error.statusCode || 500,
96
+ headers: Object.assign(
97
+ Object.assign({}, options.headers),
98
+ (_b = request.response) === null || _b === void 0
99
+ ? void 0
100
+ : _b.headers
101
+ ),
102
+ body: {
103
+ status: 'error',
104
+ data: null,
105
+ error: {
106
+ code: error.code || 'UNHANDLED_ERROR',
107
+ message: error.message || 'Unhandled error occurred',
108
+ details: error.extra || {},
109
+ },
110
+ _meta: options.debugMode ? request.event : {},
111
+ },
112
+ };
113
+ logger.debug(`${FILE}::RESPONSE_DATA_ERROR`, responseData);
114
+ request.response = Object.assign(Object.assign({}, responseData), {
115
+ body: JSON.stringify(responseData.body),
116
+ });
117
+ if (isEmpty(error.statusCode) || error.statusCode >= 500) {
118
+ logger.error(error.message, error);
119
+ } else {
120
+ logger.warn(error.message, error);
121
+ }
122
+ });
123
+ return {
124
+ after: httpResponseMiddlewareAfter,
125
+ onError: httpResponseMiddlewareOnError,
126
+ };
127
+ };
128
+ export default httpResponseMiddleware;
@@ -0,0 +1,7 @@
1
+ export { default as disconnectMiddleware } from './disconnectMiddleware';
2
+ export { default as httpMiddleware } from './httpMiddleware';
3
+ export { default as httpResponseMiddleware } from './httpResponseMiddleware';
4
+ export { default as invokeCommandMiddleware } from './invokeCommandMiddleware';
5
+ export { default as sqsMiddleware } from './sqsMiddleware';
6
+ export { default as verifyBasicAuthMiddleware } from './verifyBasicAuthMiddleware';
7
+ export { default as verifyJwtMiddleware } from './verifyJwtMiddleware';
@@ -0,0 +1,7 @@
1
+ export { default as disconnectMiddleware } from './disconnectMiddleware';
2
+ export { default as httpMiddleware } from './httpMiddleware';
3
+ export { default as httpResponseMiddleware } from './httpResponseMiddleware';
4
+ export { default as invokeCommandMiddleware } from './invokeCommandMiddleware';
5
+ export { default as sqsMiddleware } from './sqsMiddleware';
6
+ export { default as verifyBasicAuthMiddleware } from './verifyBasicAuthMiddleware';
7
+ export { default as verifyJwtMiddleware } from './verifyJwtMiddleware';
@@ -0,0 +1,12 @@
1
+ import middy from '@middy/core';
2
+ import { DisconnectMiddlewareOptions } from './disconnectMiddleware';
3
+ export interface InvokeCommandMiddlewareOptions extends DisconnectMiddlewareOptions {
4
+ debugMode?: boolean;
5
+ [key: string]: any;
6
+ }
7
+ declare const invokeCommandMiddleware: (opts?: InvokeCommandMiddlewareOptions) => {
8
+ before: (handler: middy.Request) => Promise<void>;
9
+ after: (handler: middy.Request) => Promise<void>;
10
+ onError: (handler: middy.Request) => Promise<void>;
11
+ };
12
+ export default invokeCommandMiddleware;
@@ -0,0 +1,70 @@
1
+ var __awaiter =
2
+ (this && this.__awaiter) ||
3
+ function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P
6
+ ? value
7
+ : new P(function (resolve) {
8
+ resolve(value);
9
+ });
10
+ }
11
+ return new (P || (P = Promise))(function (resolve, reject) {
12
+ function fulfilled(value) {
13
+ try {
14
+ step(generator.next(value));
15
+ } catch (e) {
16
+ reject(e);
17
+ }
18
+ }
19
+ function rejected(value) {
20
+ try {
21
+ step(generator['throw'](value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ }
26
+ function step(result) {
27
+ result.done
28
+ ? resolve(result.value)
29
+ : adopt(result.value).then(fulfilled, rejected);
30
+ }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ import eventNormalizer from '@middy/event-normalizer';
35
+ import doNotWaitForEmptyEventLoop from '@middy/do-not-wait-for-empty-event-loop';
36
+ import disconnectMiddleware from './disconnectMiddleware';
37
+ const invokeCommandMiddleware = (opts = {}) => {
38
+ const middlewarePackages = [
39
+ doNotWaitForEmptyEventLoop(),
40
+ eventNormalizer(),
41
+ disconnectMiddleware(opts),
42
+ ];
43
+ return {
44
+ before: handler =>
45
+ __awaiter(void 0, void 0, void 0, function* () {
46
+ for (const middleware of middlewarePackages) {
47
+ if (middleware.before) {
48
+ yield middleware.before(handler);
49
+ }
50
+ }
51
+ }),
52
+ after: handler =>
53
+ __awaiter(void 0, void 0, void 0, function* () {
54
+ for (const middleware of middlewarePackages) {
55
+ if (middleware.after) {
56
+ yield middleware.after(handler);
57
+ }
58
+ }
59
+ }),
60
+ onError: handler =>
61
+ __awaiter(void 0, void 0, void 0, function* () {
62
+ for (const middleware of middlewarePackages) {
63
+ if (middleware.onError) {
64
+ yield middleware.onError(handler);
65
+ }
66
+ }
67
+ }),
68
+ };
69
+ };
70
+ export default invokeCommandMiddleware;
@@ -0,0 +1,10 @@
1
+ import middy from '@middy/core';
2
+ export interface HttpMiddlewareOptions {
3
+ debugMode?: boolean;
4
+ }
5
+ declare const httpMiddleware: () => {
6
+ before: (handler: middy.Request) => Promise<void>;
7
+ after: (handler: middy.Request) => Promise<void>;
8
+ onError: (handler: middy.Request) => Promise<void>;
9
+ };
10
+ export default httpMiddleware;
@@ -0,0 +1,70 @@
1
+ var __awaiter =
2
+ (this && this.__awaiter) ||
3
+ function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P
6
+ ? value
7
+ : new P(function (resolve) {
8
+ resolve(value);
9
+ });
10
+ }
11
+ return new (P || (P = Promise))(function (resolve, reject) {
12
+ function fulfilled(value) {
13
+ try {
14
+ step(generator.next(value));
15
+ } catch (e) {
16
+ reject(e);
17
+ }
18
+ }
19
+ function rejected(value) {
20
+ try {
21
+ step(generator['throw'](value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ }
26
+ function step(result) {
27
+ result.done
28
+ ? resolve(result.value)
29
+ : adopt(result.value).then(fulfilled, rejected);
30
+ }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ import eventNormalizer from '@middy/event-normalizer';
35
+ import doNotWaitForEmptyEventLoop from '@middy/do-not-wait-for-empty-event-loop';
36
+ import disconnectMiddleware from './disconnectMiddleware';
37
+ const httpMiddleware = () => {
38
+ const middlewarePackages = [
39
+ doNotWaitForEmptyEventLoop(),
40
+ eventNormalizer(),
41
+ disconnectMiddleware(),
42
+ ];
43
+ return {
44
+ before: handler =>
45
+ __awaiter(void 0, void 0, void 0, function* () {
46
+ for (const middleware of middlewarePackages) {
47
+ if (middleware.before) {
48
+ yield middleware.before(handler);
49
+ }
50
+ }
51
+ }),
52
+ after: handler =>
53
+ __awaiter(void 0, void 0, void 0, function* () {
54
+ for (const middleware of middlewarePackages) {
55
+ if (middleware.after) {
56
+ yield middleware.after(handler);
57
+ }
58
+ }
59
+ }),
60
+ onError: handler =>
61
+ __awaiter(void 0, void 0, void 0, function* () {
62
+ for (const middleware of middlewarePackages) {
63
+ if (middleware.onError) {
64
+ yield middleware.onError(handler);
65
+ }
66
+ }
67
+ }),
68
+ };
69
+ };
70
+ export default httpMiddleware;
@@ -0,0 +1,8 @@
1
+ import middy from '@middy/core';
2
+ export interface VerifyBasicAuthMiddlewareOptions {
3
+ debugMode?: boolean;
4
+ }
5
+ declare const verifyBasicAuthMiddleware: (options?: VerifyBasicAuthMiddlewareOptions) => {
6
+ before: (request: middy.Request) => void;
7
+ };
8
+ export default verifyBasicAuthMiddleware;
@@ -0,0 +1,59 @@
1
+ import logger from '../utils/logger';
2
+ import { LesgoException } from '../exceptions';
3
+ import { validateFields } from '../utils';
4
+ import { basicAuth as basicAuthConfig } from '../config';
5
+ const FILE = 'lesgo.middlewares.verifyBasicAuthMiddleware';
6
+ const verifyBasicAuthMiddleware = (options = {}) => {
7
+ let decoded;
8
+ let input;
9
+ const verifyBasicAuth = basicAuth => {
10
+ if (basicAuth.includes('Basic')) {
11
+ basicAuth = basicAuth.replace('Basic ', '');
12
+ }
13
+ decoded = Buffer.from(basicAuth, 'base64').toString('utf8');
14
+ const [username, password] = decoded.split(':');
15
+ logger.debug(`${FILE}::BASIC_AUTH_DECODED`, { username, password });
16
+ try {
17
+ input = validateFields({ username, password }, [
18
+ { key: 'username', type: 'string', required: true },
19
+ { key: 'password', type: 'string', required: true },
20
+ ]);
21
+ } catch (error) {
22
+ throw new LesgoException(
23
+ 'Invalid basic auth due to missing fields',
24
+ `${FILE}::INVALID_BASIC_AUTH_MISSING_FIELDS`,
25
+ 401,
26
+ error
27
+ );
28
+ }
29
+ const matchFound = basicAuthConfig.authorizedList.find(
30
+ a => a.username === username && a.password === password
31
+ );
32
+ if (!matchFound) {
33
+ throw new LesgoException(
34
+ 'Invalid basic auth due to no match found',
35
+ `${FILE}::INVALID_BASIC_AUTH_NO_MATCH`,
36
+ 401
37
+ );
38
+ }
39
+ return { username: input.username };
40
+ };
41
+ const verifyBasicAuthMiddlewareBefore = request => {
42
+ logger.debug(`${FILE}::BASIC_AUTH_TO_VERIFY`, { request, options });
43
+ const basicAuth = request.event.headers.authorization;
44
+ if (!basicAuth) {
45
+ throw new LesgoException(
46
+ 'No basic auth provided',
47
+ `${FILE}::NO_BASIC_AUTH_PROVIDED`,
48
+ 401
49
+ );
50
+ }
51
+ const decoded = verifyBasicAuth(basicAuth);
52
+ logger.debug(`${FILE}::BASIC_AUTH_VERIFIED`);
53
+ request.event.basicAuth = decoded;
54
+ };
55
+ return {
56
+ before: verifyBasicAuthMiddlewareBefore,
57
+ };
58
+ };
59
+ export default verifyBasicAuthMiddleware;
@@ -0,0 +1,6 @@
1
+ import middy from '@middy/core';
2
+ import { VerifyInputOptions } from '../services/JWTService/verify';
3
+ declare const verifyJwtMiddleware: (secret?: string, options?: VerifyInputOptions) => {
4
+ before: (request: middy.Request) => void;
5
+ };
6
+ export default verifyJwtMiddleware;
@@ -0,0 +1,37 @@
1
+ import { verify } from '../utils/jwt';
2
+ import logger from '../utils/logger';
3
+ import { LesgoException } from '../exceptions';
4
+ const FILE = 'lesgo.middlewares.verifyJwtMiddleware';
5
+ const verifyJwtMiddleware = (secret, options) => {
6
+ const verifyJwt = (token, secret, opts) => {
7
+ try {
8
+ const decoded = verify(token, secret, opts);
9
+ return decoded;
10
+ } catch (error) {
11
+ throw new LesgoException(
12
+ 'Error verifying JWT',
13
+ `${FILE}::ERROR_VERIFYING_JWT`,
14
+ 401,
15
+ error
16
+ );
17
+ }
18
+ };
19
+ const verifyJwtMiddlewareBefore = request => {
20
+ logger.debug(`${FILE}::JWT_TO_VERIFY`, { request, options });
21
+ const token = request.event.headers.authorization;
22
+ if (!token) {
23
+ throw new LesgoException(
24
+ 'No token provided',
25
+ `${FILE}::NO_TOKEN_PROVIDED`,
26
+ 401
27
+ );
28
+ }
29
+ const decoded = verifyJwt(token, secret, options);
30
+ logger.debug(`${FILE}::JWT_VERIFIED`, { decoded });
31
+ request.event.jwt = decoded;
32
+ };
33
+ return {
34
+ before: verifyJwtMiddlewareBefore,
35
+ };
36
+ };
37
+ export default verifyJwtMiddleware;
@@ -0,0 +1,8 @@
1
+ import { DeleteCommandInput, NativeAttributeValue } from '@aws-sdk/lib-dynamodb';
2
+ import { ClientOptions } from '../../types/aws';
3
+ export type Key = Record<string, NativeAttributeValue>;
4
+ export interface DeleteRecordOptions extends Partial<Omit<DeleteCommandInput, 'TableName'>> {
5
+ TableName?: string;
6
+ }
7
+ declare const deleteRecord: (key: Key, tableAlias: string, opts?: DeleteRecordOptions, clientOpts?: ClientOptions) => Promise<import("@aws-sdk/lib-dynamodb").DeleteCommandOutput>;
8
+ export default deleteRecord;
@@ -0,0 +1,69 @@
1
+ var __awaiter =
2
+ (this && this.__awaiter) ||
3
+ function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P
6
+ ? value
7
+ : new P(function (resolve) {
8
+ resolve(value);
9
+ });
10
+ }
11
+ return new (P || (P = Promise))(function (resolve, reject) {
12
+ function fulfilled(value) {
13
+ try {
14
+ step(generator.next(value));
15
+ } catch (e) {
16
+ reject(e);
17
+ }
18
+ }
19
+ function rejected(value) {
20
+ try {
21
+ step(generator['throw'](value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ }
26
+ function step(result) {
27
+ result.done
28
+ ? resolve(result.value)
29
+ : adopt(result.value).then(fulfilled, rejected);
30
+ }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ import { DeleteCommand } from '@aws-sdk/lib-dynamodb';
35
+ import LesgoException from '../../exceptions/LesgoException';
36
+ import { validateFields, logger } from '../../utils';
37
+ import getClient from './getClient';
38
+ import getTableName from './getTableName';
39
+ const FILE = 'lesgo.services.DynamoDbService.deleteRecord';
40
+ const deleteRecord = (key, tableAlias, opts, clientOpts) =>
41
+ __awaiter(void 0, void 0, void 0, function* () {
42
+ const input = validateFields({ key, tableAlias }, [
43
+ { key: 'key', type: 'object', required: true },
44
+ { key: 'tableAlias', type: 'string', required: true },
45
+ ]);
46
+ const tableName = getTableName(input.tableAlias);
47
+ const client = getClient(clientOpts);
48
+ const commandInput = Object.assign(
49
+ { TableName: tableName, Key: input.key },
50
+ opts
51
+ );
52
+ try {
53
+ const data = yield client.send(new DeleteCommand(commandInput));
54
+ logger.debug(`${FILE}::RECEIVED_RESPONSE`, { data, commandInput });
55
+ return data;
56
+ } catch (error) {
57
+ throw new LesgoException(
58
+ 'Failed to delete record',
59
+ `${FILE}::ERROR`,
60
+ 500,
61
+ {
62
+ error,
63
+ commandInput,
64
+ clientOpts,
65
+ }
66
+ );
67
+ }
68
+ });
69
+ export default deleteRecord;
@@ -0,0 +1,7 @@
1
+ import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
2
+ import { ClientOptions } from '../../types/aws';
3
+ export interface Singleton {
4
+ [key: string]: DynamoDBDocumentClient;
5
+ }
6
+ declare const getClient: (opts?: ClientOptions) => DynamoDBDocumentClient;
7
+ export default getClient;
@@ -0,0 +1,30 @@
1
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
+ import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
3
+ import { isEmpty, logger, validateFields } from '../../utils';
4
+ import { dynamodb as dynamodbConfig } from '../../config';
5
+ const FILE = 'lesgo.services.DynamoDbService.getClient';
6
+ const singleton = {};
7
+ const getClient = (opts = {}) => {
8
+ const options = validateFields(opts, [
9
+ { key: 'region', type: 'string', required: false },
10
+ { key: 'singletonConn', type: 'string', required: false },
11
+ ]);
12
+ const region = options.region || dynamodbConfig.region;
13
+ const singletonConn = options.singletonConn || 'default';
14
+ if (!isEmpty(singleton[singletonConn])) {
15
+ logger.debug(`${FILE}::REUSE_CLIENT_SINGLETON`, {
16
+ client: singleton[singletonConn],
17
+ region,
18
+ });
19
+ return singleton[singletonConn];
20
+ }
21
+ const ddbClient = new DynamoDBClient({ region });
22
+ const client = DynamoDBDocumentClient.from(ddbClient);
23
+ logger.debug(`${FILE}::NEW_CLIENT_SINGLETON`, {
24
+ client,
25
+ region,
26
+ });
27
+ singleton[singletonConn] = client;
28
+ return client;
29
+ };
30
+ export default getClient;
@@ -0,0 +1,2 @@
1
+ declare const _default: (tableAlias: string) => string;
2
+ export default _default;
@@ -0,0 +1,15 @@
1
+ import { LesgoException } from '../../exceptions';
2
+ import dynamodbConfig from '../../config/dynamodb';
3
+ const FILE = 'lesgo.services.DynamoDbService.getTableName';
4
+ export default tableAlias => {
5
+ const table = dynamodbConfig.tables.find(t => t.alias === tableAlias);
6
+ if (!table) {
7
+ throw new LesgoException(
8
+ 'Table not found',
9
+ `${FILE}::TABLE_NOT_FOUND`,
10
+ 404,
11
+ { tableAlias }
12
+ );
13
+ }
14
+ return table.name;
15
+ };
@@ -0,0 +1,6 @@
1
+ export { default as deleteRecord } from './deleteRecord';
2
+ export { default as getClient } from './getClient';
3
+ export { default as putRecord } from './putRecord';
4
+ export { default as query } from './query';
5
+ export { default as scan } from './scan';
6
+ export { default as updateRecord } from './updateRecord';
@@ -0,0 +1,6 @@
1
+ export { default as deleteRecord } from './deleteRecord';
2
+ export { default as getClient } from './getClient';
3
+ export { default as putRecord } from './putRecord';
4
+ export { default as query } from './query';
5
+ export { default as scan } from './scan';
6
+ export { default as updateRecord } from './updateRecord';
@@ -0,0 +1,8 @@
1
+ import { NativeAttributeValue, PutCommandInput } from '@aws-sdk/lib-dynamodb';
2
+ import { ClientOptions } from '../../types/aws';
3
+ export interface PutRecordOptions extends Partial<Omit<PutCommandInput, 'TableName'>> {
4
+ TableName?: string;
5
+ }
6
+ export type Item = Record<string, NativeAttributeValue>;
7
+ declare const putRecord: (item: Item, tableAlias: string, opts?: PutRecordOptions, clientOpts?: ClientOptions) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput>;
8
+ export default putRecord;
@@ -0,0 +1,64 @@
1
+ var __awaiter =
2
+ (this && this.__awaiter) ||
3
+ function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P
6
+ ? value
7
+ : new P(function (resolve) {
8
+ resolve(value);
9
+ });
10
+ }
11
+ return new (P || (P = Promise))(function (resolve, reject) {
12
+ function fulfilled(value) {
13
+ try {
14
+ step(generator.next(value));
15
+ } catch (e) {
16
+ reject(e);
17
+ }
18
+ }
19
+ function rejected(value) {
20
+ try {
21
+ step(generator['throw'](value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ }
26
+ function step(result) {
27
+ result.done
28
+ ? resolve(result.value)
29
+ : adopt(result.value).then(fulfilled, rejected);
30
+ }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ import { PutCommand } from '@aws-sdk/lib-dynamodb';
35
+ import LesgoException from '../../exceptions/LesgoException';
36
+ import { validateFields, logger } from '../../utils';
37
+ import getTableName from './getTableName';
38
+ import getClient from './getClient';
39
+ const FILE = 'lesgo.services.DynamoDbService.putRecord';
40
+ const putRecord = (item, tableAlias, opts, clientOpts) =>
41
+ __awaiter(void 0, void 0, void 0, function* () {
42
+ const input = validateFields({ item, tableAlias }, [
43
+ { key: 'item', type: 'object', required: true },
44
+ { key: 'tableAlias', type: 'string', required: true },
45
+ ]);
46
+ const tableName = getTableName(input.tableAlias);
47
+ const client = getClient(clientOpts);
48
+ const commandInput = Object.assign(
49
+ { TableName: tableName, Item: input.item },
50
+ opts
51
+ );
52
+ try {
53
+ const resp = yield client.send(new PutCommand(commandInput));
54
+ logger.debug(`${FILE}::RECEIVED_RESPONSE`, { resp, commandInput });
55
+ return resp;
56
+ } catch (error) {
57
+ throw new LesgoException('Failed to put record', `${FILE}::ERROR`, 500, {
58
+ error,
59
+ commandInput,
60
+ clientOpts,
61
+ });
62
+ }
63
+ });
64
+ export default putRecord;
@@ -0,0 +1,7 @@
1
+ import { NativeAttributeValue, QueryCommandInput } from '@aws-sdk/lib-dynamodb';
2
+ import { ClientOptions } from '../../types/aws';
3
+ export interface QueryOptions extends Partial<Omit<QueryCommandInput, 'TableName'>> {
4
+ TableName?: string;
5
+ }
6
+ declare const query: (tableAlias: string, keyConditionExpression: string, expressionAttributeValues: Record<string, NativeAttributeValue>, opts?: QueryOptions, clientOpts?: ClientOptions) => Promise<import("@aws-sdk/lib-dynamodb").QueryCommandOutput>;
7
+ export default query;