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,77 @@
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 { logger, validateFields } from '../../utils';
35
+ import { LesgoException } from '../../exceptions';
36
+ import getElastiCacheRedisClient from './getElastiCacheRedisClient';
37
+ const FILE = 'lesgo.services.ElastiCacheRedis.setRedisCache';
38
+ const setRedisCache = (key, value, opts, clientOpts) =>
39
+ __awaiter(void 0, void 0, void 0, function* () {
40
+ var _a;
41
+ const input = validateFields({ key, value }, [
42
+ { key: 'key', type: 'string', required: true },
43
+ { key: 'value', type: 'any', required: true },
44
+ ]);
45
+ opts = Object.assign(Object.assign({}, opts), {
46
+ EX:
47
+ (_a = opts === null || opts === void 0 ? void 0 : opts.EX) !== null &&
48
+ _a !== void 0
49
+ ? _a
50
+ : 300,
51
+ });
52
+ const client = yield getElastiCacheRedisClient(clientOpts);
53
+ input.value =
54
+ typeof input.value === 'object'
55
+ ? JSON.stringify(input.value)
56
+ : input.value;
57
+ try {
58
+ // @ts-ignore
59
+ const resp = yield client.set(input.key, input.value, 'EX', opts.EX);
60
+ logger.debug(`${FILE}::RECEIVED_RESPONSE`, { resp, input, value });
61
+ return resp;
62
+ } catch (err) {
63
+ throw new LesgoException(
64
+ 'Failed to set redis cache',
65
+ `${FILE}::SET_ERROR`,
66
+ 500,
67
+ {
68
+ err,
69
+ input,
70
+ value,
71
+ opts,
72
+ clientOpts,
73
+ }
74
+ );
75
+ }
76
+ });
77
+ export default setRedisCache;
@@ -0,0 +1,7 @@
1
+ import { JwtHeader, JwtPayload } from 'jsonwebtoken';
2
+ declare const decodeJwt: (token: string) => {
3
+ header: JwtHeader;
4
+ payload: JwtPayload;
5
+ signature: string;
6
+ };
7
+ export default decodeJwt;
@@ -0,0 +1,9 @@
1
+ const decodeJwt = token => {
2
+ const parts = token.split('.');
3
+ return {
4
+ header: JSON.parse(Buffer.from(parts[0], 'base64').toString('utf8')),
5
+ payload: JSON.parse(Buffer.from(parts[1], 'base64').toString('utf8')),
6
+ signature: parts[2],
7
+ };
8
+ };
9
+ export default decodeJwt;
@@ -0,0 +1,13 @@
1
+ export interface GetJwtSecretInput {
2
+ secret?: string;
3
+ keyid?: string;
4
+ }
5
+ export interface JwtSecret {
6
+ keyid: string;
7
+ secret: string;
8
+ }
9
+ declare const getJwtSecret: (input: GetJwtSecretInput) => {
10
+ keyid: string;
11
+ secret: string;
12
+ };
13
+ export default getJwtSecret;
@@ -0,0 +1,54 @@
1
+ import { LesgoException } from '../../exceptions';
2
+ import jwtConfig from '../../config/jwt';
3
+ const FILE = 'lesgo.services.JWTService.getJwtSecret';
4
+ const getJwtSecret = input => {
5
+ var _a, _b;
6
+ const jwtSecret = {
7
+ keyid: input.keyid || '',
8
+ secret: input.secret || '',
9
+ };
10
+ if (!input.secret) {
11
+ jwtSecret.keyid =
12
+ ((_a = jwtConfig.secrets[0]) === null || _a === void 0
13
+ ? void 0
14
+ : _a.keyid) || '';
15
+ jwtSecret.secret =
16
+ ((_b = jwtConfig.secrets[0]) === null || _b === void 0
17
+ ? void 0
18
+ : _b.secret) || '';
19
+ }
20
+ if (input.secret) {
21
+ const foundSecret = jwtConfig.secrets.find(
22
+ s => (s === null || s === void 0 ? void 0 : s.secret) === input.secret
23
+ );
24
+ if (!foundSecret) {
25
+ throw new LesgoException(
26
+ `No matching JWT Secret found.`,
27
+ `${FILE}::SECRET_NOT_FOUND`
28
+ );
29
+ }
30
+ jwtSecret.keyid = foundSecret.keyid;
31
+ jwtSecret.secret = foundSecret.secret;
32
+ }
33
+ if (input.keyid) {
34
+ const foundSecret = jwtConfig.secrets.find(
35
+ s => (s === null || s === void 0 ? void 0 : s.keyid) === input.keyid
36
+ );
37
+ if (!foundSecret) {
38
+ throw new LesgoException(
39
+ `kid ${input.keyid} not found.`,
40
+ `${FILE}::KID_NOT_FOUND`
41
+ );
42
+ }
43
+ jwtSecret.keyid = foundSecret.keyid;
44
+ jwtSecret.secret = foundSecret.secret;
45
+ }
46
+ if (!jwtSecret.secret) {
47
+ throw new LesgoException(
48
+ 'Missing Secret to sign JWT',
49
+ `${FILE}::SECRET_NOT_FOUND`
50
+ );
51
+ }
52
+ return jwtSecret;
53
+ };
54
+ export default getJwtSecret;
@@ -0,0 +1,2 @@
1
+ export { default as sign } from './sign';
2
+ export { default as verify } from './verify';
@@ -0,0 +1,2 @@
1
+ export { default as sign } from './sign';
2
+ export { default as verify } from './verify';
@@ -0,0 +1,3 @@
1
+ import { SignOptions } from 'jsonwebtoken';
2
+ declare const sign: (payload: any, secret?: string, opts?: SignOptions) => string;
3
+ export default sign;
@@ -0,0 +1,31 @@
1
+ import { sign as signJwt } from 'jsonwebtoken';
2
+ import { jwt as jwtConfig } from '../../config';
3
+ import { generateUid } from '../../utils';
4
+ import getJwtSecret from './getJwtSecret';
5
+ const sign = (payload, secret, opts) => {
6
+ const jwtSecret = getJwtSecret({
7
+ secret,
8
+ keyid: opts === null || opts === void 0 ? void 0 : opts.keyid,
9
+ });
10
+ const options = Object.assign(Object.assign({}, opts), {
11
+ algorithm:
12
+ (opts === null || opts === void 0 ? void 0 : opts.algorithm) ||
13
+ jwtConfig.algorithm,
14
+ expiresIn:
15
+ (opts === null || opts === void 0 ? void 0 : opts.expiresIn) ||
16
+ jwtConfig.expiresIn,
17
+ issuer:
18
+ (opts === null || opts === void 0 ? void 0 : opts.issuer) ||
19
+ jwtConfig.issuer,
20
+ audience:
21
+ (opts === null || opts === void 0 ? void 0 : opts.audience) ||
22
+ jwtConfig.audience,
23
+ jwtid:
24
+ (opts === null || opts === void 0 ? void 0 : opts.jwtid) ||
25
+ generateUid({ length: 16 }),
26
+ keyid: jwtSecret.keyid,
27
+ });
28
+ const token = signJwt(payload, jwtSecret.secret, options);
29
+ return token;
30
+ };
31
+ export default sign;
@@ -0,0 +1,7 @@
1
+ import { VerifyOptions } from 'jsonwebtoken';
2
+ export interface VerifyInputOptions extends VerifyOptions {
3
+ validateClaims?: boolean;
4
+ keyid?: string;
5
+ }
6
+ declare const verify: (token: string, secret?: string, opts?: VerifyInputOptions) => string | import("jsonwebtoken").JwtPayload | import("jsonwebtoken").Jwt;
7
+ export default verify;
@@ -0,0 +1,61 @@
1
+ import { verify as verifyToken } from 'jsonwebtoken';
2
+ import jwtConfig from '../../config/jwt';
3
+ import { LesgoException } from '../../exceptions';
4
+ import { isEmpty, logger } from '../../utils';
5
+ import getJwtSecret from './getJwtSecret';
6
+ import decodeJwt from './decodeJwt';
7
+ const FILE = 'lesgo.services.JWTService.verify';
8
+ const verify = (token, secret, opts) => {
9
+ const { header, payload, signature } = decodeJwt(token);
10
+ logger.debug(`${FILE}::DECODED_JWT`, { header, payload, signature });
11
+ const jwtSecret = getJwtSecret({
12
+ secret,
13
+ keyid:
14
+ payload.kid ||
15
+ header.kid ||
16
+ (opts === null || opts === void 0 ? void 0 : opts.keyid),
17
+ });
18
+ const validateClaims = !isEmpty(
19
+ opts === null || opts === void 0 ? void 0 : opts.validateClaims
20
+ )
21
+ ? opts === null || opts === void 0
22
+ ? void 0
23
+ : opts.validateClaims
24
+ : jwtConfig.validateClaims;
25
+ if (validateClaims) {
26
+ opts = Object.assign(
27
+ {
28
+ issuer:
29
+ (opts === null || opts === void 0 ? void 0 : opts.issuer) ||
30
+ jwtConfig.issuer,
31
+ audience:
32
+ (opts === null || opts === void 0 ? void 0 : opts.audience) ||
33
+ jwtConfig.audience,
34
+ },
35
+ opts
36
+ );
37
+ }
38
+ opts = Object.assign({ complete: true }, opts);
39
+ try {
40
+ logger.debug(`${FILE}::VERIFYING_TOKEN`, {
41
+ token,
42
+ opts,
43
+ isValidateClaims: validateClaims,
44
+ });
45
+ const decoded = verifyToken(token, jwtSecret.secret, opts);
46
+ logger.debug(`${FILE}::VERIFIED_TOKEN`, decoded);
47
+ return decoded;
48
+ } catch (error) {
49
+ throw new LesgoException(
50
+ 'Failed to verify token',
51
+ `${FILE}::VERIFY_ERROR`,
52
+ 500,
53
+ {
54
+ error,
55
+ token,
56
+ opts,
57
+ }
58
+ );
59
+ }
60
+ };
61
+ export default verify;
@@ -0,0 +1,46 @@
1
+ type LogLevel = 'error' | 'warn' | 'notice' | 'info' | 'debug';
2
+ interface LoggerServiceOptions {
3
+ logger?: string;
4
+ defaultMeta?: object;
5
+ transports?: Array<Transport>;
6
+ }
7
+ interface Transport {
8
+ logType: string;
9
+ level: string;
10
+ config?: TransportConfig;
11
+ }
12
+ interface TransportConfig {
13
+ getCreatedAt?: boolean;
14
+ meta?: object;
15
+ tags?: TransportConfigTags;
16
+ }
17
+ interface TransportConfigTags {
18
+ [key: string]: string;
19
+ }
20
+ export default class LoggerService {
21
+ logger: string;
22
+ meta: object;
23
+ transports: Array<Transport>;
24
+ logLevels: {
25
+ [key: string]: number;
26
+ };
27
+ constructor(opts?: LoggerServiceOptions);
28
+ log(level: LogLevel, message: string, extra?: {}): void;
29
+ error(message: string, extra?: {}): void;
30
+ warn(message: string, extra?: {}): void;
31
+ info(message: string, extra?: {}): void;
32
+ debug(message: string, extra?: {}): void;
33
+ notice(message: string, extra?: {}): void;
34
+ addMeta(meta?: {}): void;
35
+ consoleLogger(level: LogLevel, message: string): void | null;
36
+ checkIsLogRequired(transportName: string, level: LogLevel): boolean;
37
+ structureLogMessage(level: LogLevel, message: any, extra: object): {
38
+ level: LogLevel;
39
+ message: any;
40
+ logger: string;
41
+ extra: {};
42
+ };
43
+ refineMessagePerTransport(transportName: string, message: any): any;
44
+ getTransportByName(transportName: string): Transport | undefined;
45
+ }
46
+ export {};
@@ -1,9 +1,5 @@
1
1
  import LesgoException from '../exceptions/LesgoException';
2
-
3
- const getCurrentDateTime = () => {
4
- return new Date().toUTCString();
5
- };
6
-
2
+ import { getCurrentDatetime } from '../utils';
7
3
  export default class LoggerService {
8
4
  constructor(opts = {}) {
9
5
  const defaultOptions = {
@@ -11,131 +7,111 @@ export default class LoggerService {
11
7
  meta: {},
12
8
  transports: [],
13
9
  };
14
-
15
- const options = {
16
- ...defaultOptions,
10
+ const options = Object.assign(Object.assign({}, defaultOptions), {
17
11
  logger: opts.logger || defaultOptions.logger,
18
- meta: {
19
- ...defaultOptions.meta,
20
- ...(opts.defaultMeta || {}),
21
- },
12
+ meta: Object.assign(
13
+ Object.assign({}, defaultOptions.meta),
14
+ opts.defaultMeta || {}
15
+ ),
22
16
  transports: opts.transports || [],
23
- };
24
-
17
+ });
25
18
  this.logger = options.logger;
26
19
  this.meta = options.meta;
27
20
  this.transports = options.transports;
28
- this.getCreatedAt = options.getCreatedAt;
29
-
30
21
  this.logLevels = {
31
22
  error: 0,
32
23
  warn: 1,
33
- info: 2,
34
- debug: 3,
24
+ notice: 2,
25
+ info: 3,
26
+ debug: 4,
35
27
  };
36
28
  }
37
-
38
29
  log(level, message, extra = {}) {
39
30
  if (level === undefined || !Object.keys(this.logLevels).includes(level)) {
40
31
  throw new LesgoException('Invalid level provided in log()');
41
32
  }
42
-
43
33
  const structuredMessage = this.structureLogMessage(level, message, extra);
44
-
45
34
  this.transports.map(transport => {
35
+ // @ts-ignore
46
36
  return this[`${transport.logType}Logger`](level, structuredMessage);
47
37
  });
48
38
  }
49
-
50
39
  error(message, extra = {}) {
51
40
  this.log('error', message, extra);
52
41
  }
53
-
54
42
  warn(message, extra = {}) {
55
43
  this.log('warn', message, extra);
56
44
  }
57
-
58
45
  info(message, extra = {}) {
59
46
  this.log('info', message, extra);
60
47
  }
61
-
62
48
  debug(message, extra = {}) {
63
49
  this.log('debug', message, extra);
64
50
  }
65
-
51
+ notice(message, extra = {}) {
52
+ this.log('notice', message, extra);
53
+ }
66
54
  addMeta(meta = {}) {
67
- this.meta = {
68
- ...this.meta,
69
- ...meta,
70
- };
55
+ this.meta = Object.assign(Object.assign({}, this.meta), meta);
71
56
  }
72
-
73
57
  consoleLogger(level, message) {
74
58
  if (!this.checkIsLogRequired('console', level)) return null;
75
59
  const refinedMessage = this.refineMessagePerTransport('console', message);
76
- return console[level](JSON.stringify(refinedMessage)); // eslint-disable-line no-console
60
+ const consoleFunc = level === 'notice' ? 'log' : level;
61
+ return console[consoleFunc](JSON.stringify(refinedMessage));
77
62
  }
78
-
79
63
  checkIsLogRequired(transportName, level) {
80
- const transportLevel = this.getTransportByName(transportName).level;
81
-
64
+ const transport = this.getTransportByName(transportName);
65
+ if (transport === undefined) {
66
+ return false;
67
+ }
68
+ const transportLevel = transport.level;
82
69
  if (this.logLevels[transportLevel] < this.logLevels[level]) {
83
70
  return false;
84
71
  }
85
-
86
72
  return true;
87
73
  }
88
-
89
74
  structureLogMessage(level, message, extra) {
90
75
  const structuredMessage = {
91
76
  level,
92
77
  message,
93
78
  logger: this.logger,
94
- extra: {
95
- ...this.meta,
96
- ...extra,
97
- },
79
+ extra: Object.assign(Object.assign({}, this.meta), extra),
98
80
  };
99
-
100
81
  return structuredMessage;
101
82
  }
102
-
103
83
  refineMessagePerTransport(transportName, message) {
104
84
  const transport = this.getTransportByName(transportName);
105
- const refinedMessage = { ...message };
106
-
85
+ const refinedMessage = message;
86
+ if (transport === undefined) {
87
+ return refinedMessage;
88
+ }
107
89
  if (transport.config !== undefined) {
108
90
  if (transport.config.meta !== undefined) {
109
- refinedMessage.extra = {
110
- ...refinedMessage.extra,
111
- ...transport.config.meta,
112
- };
91
+ refinedMessage.extra = Object.assign(
92
+ Object.assign({}, refinedMessage.extra),
93
+ transport.config.meta
94
+ );
113
95
  }
114
-
115
96
  if (transport.config.tags !== undefined) {
116
97
  refinedMessage.tags = transport.config.tags;
117
98
  }
118
-
119
99
  if (
120
100
  refinedMessage.tags !== undefined &&
121
101
  refinedMessage.extra.tags !== undefined
122
102
  ) {
123
- refinedMessage.tags = {
124
- ...refinedMessage.tags,
125
- ...refinedMessage.extra.tags,
126
- };
127
-
103
+ refinedMessage.tags = Object.assign(
104
+ Object.assign({}, refinedMessage.tags),
105
+ refinedMessage.extra.tags
106
+ );
128
107
  delete refinedMessage.extra.tags;
129
108
  }
130
-
131
109
  if (transport.config.getCreatedAt) {
132
- refinedMessage.created = getCurrentDateTime();
110
+ refinedMessage.created = getCurrentDatetime();
133
111
  }
134
112
  }
135
-
136
113
  return refinedMessage;
137
114
  }
138
-
139
115
  getTransportByName(transportName) {
140
116
  return this.transports.find(
141
117
  transport => transport.logType === transportName
@@ -0,0 +1,2 @@
1
+ declare const disconnectMySQLProxyClient: () => Promise<void>;
2
+ export default disconnectMySQLProxyClient;
@@ -0,0 +1,60 @@
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 { logger } from '../../utils';
35
+ import { singleton } from '../RDSAuroraMySQLProxyService/getMySQLProxyClient';
36
+ const FILE =
37
+ 'lesgo.services.RDSAuroraMySQLProxyService.disconnectMySQLProxyClient';
38
+ const disconnectMySQLProxyClient = () =>
39
+ __awaiter(void 0, void 0, void 0, function* () {
40
+ const singletonConns = Object.keys(singleton);
41
+ if (singletonConns.length === 0) {
42
+ logger.debug(`${FILE}::NO_CONNECTIONS_TO_DISCONNECT`);
43
+ return;
44
+ }
45
+ logger.debug(`${FILE}::PREPARING_TO_DISCONNECT`, {
46
+ singletonConns,
47
+ });
48
+ singletonConns.forEach(singletonConn =>
49
+ __awaiter(void 0, void 0, void 0, function* () {
50
+ try {
51
+ yield singleton[singletonConn].end();
52
+ delete singleton[singletonConn];
53
+ logger.debug(`${FILE}::COMPLETED`, { singletonConn });
54
+ } catch (err) {
55
+ logger.error(`${FILE}::ERROR`, { singletonConn, err });
56
+ }
57
+ })
58
+ );
59
+ });
60
+ export default disconnectMySQLProxyClient;
@@ -0,0 +1,8 @@
1
+ import { Connection, ConnectionOptions } from 'mysql2/promise';
2
+ import { RDSAuroraMySQLProxyClientOptions } from '../../types/aws';
3
+ export interface Singleton {
4
+ [key: string]: Connection;
5
+ }
6
+ export declare const singleton: Singleton;
7
+ declare const getMySQLProxyClient: (connOptions?: ConnectionOptions, clientOpts?: RDSAuroraMySQLProxyClientOptions) => Promise<Connection>;
8
+ export default getMySQLProxyClient;
@@ -0,0 +1,87 @@
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 { createConnection } from 'mysql2/promise';
35
+ import { logger, isEmpty, validateFields } from '../../utils';
36
+ import { rds as rdsConfig } from '../../config';
37
+ import { getSecretValue } from '../../utils/secretsmanager';
38
+ const FILE = 'lesgo.services.RDSAuroraMySQLProxyService.getMySQLProxyClient';
39
+ export const singleton = {};
40
+ const getMySQLProxyClient = (connOptions, clientOpts) =>
41
+ __awaiter(void 0, void 0, void 0, function* () {
42
+ const options = validateFields(clientOpts || {}, [
43
+ { key: 'region', type: 'string', required: false },
44
+ { key: 'singletonConn', type: 'string', required: false },
45
+ { key: 'dbCredentialsSecretId', type: 'string', required: false },
46
+ { key: 'databaseName', type: 'string', required: false },
47
+ ]);
48
+ const region = options.region || rdsConfig.aurora.mysql.region;
49
+ const singletonConn = options.singletonConn || 'default';
50
+ const dbCredentialsSecretId =
51
+ options.dbCredentialsSecretId ||
52
+ rdsConfig.aurora.mysql.proxy.dbCredentialsSecretId;
53
+ const databaseName =
54
+ options.databaseName || rdsConfig.aurora.mysql.databaseName;
55
+ if (!isEmpty(singleton[singletonConn])) {
56
+ logger.debug(`${FILE}::REUSE_RDS_CONNECTION`, {
57
+ client: singleton[singletonConn],
58
+ region,
59
+ });
60
+ return singleton[singletonConn];
61
+ }
62
+ const dbCredentials = yield getSecretValue(
63
+ dbCredentialsSecretId,
64
+ undefined,
65
+ {
66
+ region,
67
+ singletonConn,
68
+ }
69
+ );
70
+ const validatedDbCredentials = validateFields(dbCredentials, [
71
+ { key: 'host', type: 'string', required: true },
72
+ { key: 'username', type: 'string', required: true },
73
+ { key: 'password', type: 'string', required: true },
74
+ ]);
75
+ const conn = yield createConnection(
76
+ Object.assign(Object.assign({}, connOptions), {
77
+ host: validatedDbCredentials.host,
78
+ user: validatedDbCredentials.username,
79
+ password: validatedDbCredentials.password,
80
+ database: databaseName,
81
+ })
82
+ );
83
+ singleton[singletonConn] = conn;
84
+ logger.debug(`${FILE}::NEW_RDS_CONNECTION`);
85
+ return conn;
86
+ });
87
+ export default getMySQLProxyClient;
@@ -0,0 +1,3 @@
1
+ export { default as disconnectMySQLProxyClient } from './disconnectMySQLProxyClient';
2
+ export { default as getMySQLProxyClient } from './getMySQLProxyClient';
3
+ export { default as query } from './query';
@@ -0,0 +1,3 @@
1
+ export { default as disconnectMySQLProxyClient } from './disconnectMySQLProxyClient';
2
+ export { default as getMySQLProxyClient } from './getMySQLProxyClient';
3
+ export { default as query } from './query';
@@ -0,0 +1,4 @@
1
+ import { ConnectionOptions } from 'mysql2/promise';
2
+ import { RDSAuroraMySQLProxyClientOptions } from '../../types/aws';
3
+ declare const query: (sql: string, preparedValues?: any[], connOptions?: ConnectionOptions, clientOpts?: RDSAuroraMySQLProxyClientOptions) => Promise<[import("mysql2/promise").QueryResult, import("mysql2/typings/mysql/lib/protocol/packets/FieldPacket").FieldPacket[]]>;
4
+ export default query;