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
@@ -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;