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
@@ -1,62 +0,0 @@
1
- import config from 'Config/jwt'; // eslint-disable-line import/no-unresolved
2
- import JwtService from '../services/JwtService';
3
- import LesgoException from '../exceptions/LesgoException';
4
-
5
- export const token = headers => {
6
- const authorizationHeader = headers.Authorization || headers.authorization;
7
-
8
- if (!authorizationHeader) {
9
- throw new LesgoException(
10
- 'Authorization Header is required!',
11
- 'JWT_MISSING_AUTHORIZATION_HEADER',
12
- 403
13
- );
14
- }
15
-
16
- const parsed = authorizationHeader.split(' ');
17
-
18
- if (!parsed[1]) {
19
- throw new LesgoException(
20
- 'Missing Bearer token!',
21
- 'JWT_MISSING_BEARER_TOKEN',
22
- 403
23
- );
24
- }
25
-
26
- return parsed[1];
27
- };
28
-
29
- export const verifyJwtMiddlewareBeforeHandler = (handler, next, opts) => {
30
- const { headers } = handler.event;
31
-
32
- const finalConfig =
33
- typeof opts !== 'undefined' && 'jwtConfig' in opts
34
- ? opts.jwtConfig
35
- : config;
36
-
37
- try {
38
- const service = new JwtService(token(headers), finalConfig);
39
-
40
- // eslint-disable-next-line no-param-reassign
41
- handler.event.decodedJwt = service.validate().decoded;
42
-
43
- next();
44
- } catch (err) {
45
- if (err.name === 'JsonWebTokenError') {
46
- throw new LesgoException(err.message, 'JWT_ERROR', 403);
47
- } else if (err.name === 'TokenExpiredError') {
48
- throw new LesgoException(err.message, 'JWT_EXPIRED', 403);
49
- } else {
50
- throw err;
51
- }
52
- }
53
- };
54
-
55
- const verifyJwtMiddleware /* istanbul ignore next */ = opts => {
56
- return {
57
- before: (handler, next) =>
58
- verifyJwtMiddlewareBeforeHandler(handler, next, opts),
59
- };
60
- };
61
-
62
- export default verifyJwtMiddleware;
@@ -1,182 +0,0 @@
1
- import mysql from 'mysql2/promise';
2
- import logger from '../utils/logger';
3
- import isEmpty from '../utils/isEmpty';
4
- import LesgoException from '../exceptions/LesgoException';
5
- import LengthAwarePaginator from './pagination/LengthAwarePaginator';
6
- import Paginator from './pagination/Paginator';
7
-
8
- const FILE = 'Lesgo/services/AuroraDbRDSProxyService';
9
-
10
- /**
11
- * Service to connect to AWS Aurora Provisioned MySQL Database via RDS Proxy.
12
- * Use Services/AuroraDbServerlessService for the Serverless type via Data API.
13
- */
14
- export default class AuroraDbRDSProxyService {
15
- constructor(opts = {}) {
16
- const { host, user, password, database } = opts;
17
-
18
- this.clientOpts = {
19
- host,
20
- user,
21
- password,
22
- database,
23
- };
24
-
25
- this.conn = {};
26
- }
27
-
28
- /**
29
- * Persists the database connection for later use
30
- *
31
- * @param {*} connectionOpts
32
- * @returns
33
- */
34
- async pConnect(connectionOpts = {}) {
35
- await this.connect({ ...connectionOpts, persists: true });
36
- }
37
-
38
- async connect(connectionOpts = {}) {
39
- const clientOpts = {
40
- host: connectionOpts.host ? connectionOpts.host : this.clientOpts.host,
41
- user: connectionOpts.user ? connectionOpts.user : this.clientOpts.user,
42
- password: connectionOpts.password
43
- ? connectionOpts.password
44
- : this.clientOpts.password,
45
- database: connectionOpts.database
46
- ? connectionOpts.database
47
- : this.clientOpts.database,
48
- };
49
-
50
- const persistentConn = connectionOpts.persists;
51
-
52
- logger.debug(`${FILE}::PREPARING DB CONNECTION`, {
53
- clientOpts,
54
- persistentConn,
55
- });
56
-
57
- const conn = await mysql.createConnection(clientOpts);
58
- conn.config.namedPlaceholders = true;
59
- logger.debug(`${FILE}::DB CONNECTED`);
60
-
61
- if (persistentConn) {
62
- this.conn = conn;
63
- }
64
-
65
- return conn;
66
- }
67
-
68
- /* eslint-disable-next-line class-methods-use-this */
69
- async end(conn = {}) {
70
- logger.debug(`${FILE}::ENDING DB CONNECTION`);
71
- if (!isEmpty(conn)) {
72
- await conn.end();
73
- logger.debug(`${FILE}::DB DISCONNECTED`);
74
- } else {
75
- await this.conn.end();
76
- logger.debug(`${FILE}::PERSISTED DB DISCONNECTED`);
77
- }
78
- }
79
-
80
- async query(sql, sqlParams, connectionOpts = {}) {
81
- let conn = {};
82
- if (!isEmpty(connectionOpts)) {
83
- conn = await this.connect(connectionOpts);
84
- } else if (isEmpty(this.conn)) {
85
- conn = await this.connect();
86
- } else {
87
- conn = this.conn;
88
- }
89
-
90
- try {
91
- logger.debug(`${FILE}::QUERYING_DB`, { sql, sqlParams });
92
- const [results, fields] = await conn.execute(sql, sqlParams);
93
- logger.debug(`${FILE}::DB_RESPONSE`, { results, fields });
94
-
95
- return { results, fields };
96
- } catch (err) {
97
- throw new LesgoException(
98
- 'Exception caught executing SQL Statement',
99
- `${FILE}::QUERY_EXECUTION_EXCEPTION`,
100
- 500,
101
- { err }
102
- );
103
- } finally {
104
- if (isEmpty(this.conn) || !isEmpty(connectionOpts)) await this.end(conn);
105
- }
106
- }
107
-
108
- async select(sql, sqlParams, connectionOpts = {}) {
109
- const resp = await this.query(sql, sqlParams, connectionOpts);
110
- return resp.results;
111
- }
112
-
113
- async selectFirst(sql, sqlParams, connectionOpts = {}) {
114
- const resp = await this.query(sql, sqlParams, connectionOpts);
115
- return resp.results[0];
116
- }
117
-
118
- async selectPaginate(
119
- sql,
120
- sqlParams,
121
- perPage = 10,
122
- currentPage = 1,
123
- total = null,
124
- connectionOpts = {}
125
- ) {
126
- let paginator;
127
- if (typeof total === 'number') {
128
- paginator = new LengthAwarePaginator(
129
- this,
130
- sql,
131
- sqlParams,
132
- {
133
- perPage,
134
- currentPage,
135
- total,
136
- },
137
- connectionOpts
138
- );
139
- } else {
140
- paginator = new Paginator(
141
- this,
142
- sql,
143
- sqlParams,
144
- {
145
- perPage,
146
- currentPage,
147
- },
148
- connectionOpts
149
- );
150
- }
151
-
152
- return (await paginator).toObject();
153
- }
154
-
155
- async insert(sql, sqlParams, connectionOpts = {}) {
156
- const resp = await this.query(sql, sqlParams, connectionOpts);
157
-
158
- if (resp.results.affectedRows <= 0) {
159
- throw new LesgoException(
160
- 'No records inserted from INSERT query',
161
- `${FILE}::NO_RECORDS_INSERTED`,
162
- 400,
163
- { resp, sql, sqlParams }
164
- );
165
- }
166
-
167
- return resp.results.insertId;
168
- }
169
-
170
- async update(sql, sqlParams, connectionOpts = {}) {
171
- const resp = await this.query(sql, sqlParams, connectionOpts);
172
-
173
- if (resp.results.changedRows <= 0) {
174
- logger.warn(`${FILE}::No records updated from UPDATE query`, {
175
- sql,
176
- sqlParams,
177
- });
178
- }
179
-
180
- return Promise.resolve();
181
- }
182
- }
@@ -1,111 +0,0 @@
1
- import dataApiClient from 'data-api-client';
2
- import logger from '../utils/logger';
3
- import LesgoException from '../exceptions/LesgoException';
4
- import LengthAwarePaginator from './pagination/LengthAwarePaginator';
5
- import Paginator from './pagination/Paginator';
6
-
7
- const FILE = 'Lesgo/services/AuroraDbService';
8
-
9
- export default class AuroraDbService {
10
- constructor(opts = {}) {
11
- this.client = null;
12
- this.connect(opts);
13
- }
14
-
15
- connect(opts) {
16
- const { secretArn, resourceArn, database, region } = opts;
17
-
18
- const clientOpts = {
19
- secretArn,
20
- resourceArn,
21
- database,
22
- };
23
-
24
- if (region) {
25
- clientOpts.region = region;
26
- }
27
-
28
- this.client = dataApiClient(clientOpts);
29
- }
30
-
31
- async query(sql, sqlParams) {
32
- try {
33
- logger.debug(`${FILE}::QUERYING_DB`, { sql, sqlParams });
34
- const resp = await this.client.query(sql, sqlParams);
35
- logger.debug(`${FILE}::DB_RESPONSE`, { resp });
36
-
37
- return resp;
38
- } catch (err) {
39
- throw new LesgoException(
40
- 'Exception caught executing SQL Statement',
41
- 'AURORADBSERVICE_QUERY_EXCEPTION',
42
- 500,
43
- { err }
44
- );
45
- }
46
- }
47
-
48
- async select(sql, sqlParams) {
49
- const resp = await this.query(sql, sqlParams);
50
- return resp.records;
51
- }
52
-
53
- async selectFirst(sql, sqlParams) {
54
- const resp = await this.query(sql, sqlParams);
55
- return resp.records[0];
56
- }
57
-
58
- async selectPaginate(
59
- sql,
60
- sqlParams,
61
- perPage = 10,
62
- currentPage = 1,
63
- total = null
64
- ) {
65
- let paginator;
66
- if (typeof total === 'number') {
67
- paginator = new LengthAwarePaginator(this, sql, sqlParams, {
68
- perPage,
69
- currentPage,
70
- total,
71
- });
72
- } else {
73
- paginator = new Paginator(this, sql, sqlParams, {
74
- perPage,
75
- currentPage,
76
- });
77
- }
78
-
79
- return (await paginator).toObject();
80
- }
81
-
82
- async insert(sql, sqlParams) {
83
- const resp = await this.query(sql, sqlParams);
84
-
85
- if (resp.numberOfRecordsUpdated <= 0) {
86
- throw new LesgoException(
87
- 'No records inserted from INSERT query',
88
- 'AURORADBSERVICE_NO_RECORDS_INSERTED',
89
- 400,
90
- { resp, sql, sqlParams }
91
- );
92
- }
93
-
94
- return resp.insertId;
95
- }
96
-
97
- async update(sql, sqlParams) {
98
- const resp = await this.query(sql, sqlParams);
99
-
100
- if (resp.numberOfRecordsUpdated <= 0) {
101
- throw new LesgoException(
102
- 'No records updated from UPDATE query',
103
- 'AURORADBSERVICE_NO_RECORDS_UPDATED',
104
- 400,
105
- { resp, sql, sqlParams }
106
- );
107
- }
108
-
109
- return Promise.resolve();
110
- }
111
- }
@@ -1,177 +0,0 @@
1
- import { DocumentClient } from 'aws-sdk/clients/dynamodb'; // eslint-disable-line import/no-extraneous-dependencies
2
- import LesgoException from '../exceptions/LesgoException';
3
- import logger from '../utils/logger';
4
-
5
- const FILE = 'Lesgo/services/DynamoDbService';
6
-
7
- export default class DynamoDb {
8
- constructor(opts = {}) {
9
- this.client = null;
10
- this.connect(opts);
11
- }
12
-
13
- connect(opts) {
14
- const { region } = opts;
15
-
16
- if (!region)
17
- throw new LesgoException(
18
- 'Missing required parameter region',
19
- 'DYNAMODB_MISSING_PARAMETER',
20
- 500,
21
- { opts }
22
- );
23
-
24
- this.client = new DocumentClient({ region });
25
- }
26
-
27
- async query(
28
- tableName,
29
- keyConditionExpression,
30
- expressionAttributeValues,
31
- projectionExpression
32
- ) {
33
- const params = this.prepareQueryPayload(
34
- tableName,
35
- keyConditionExpression,
36
- expressionAttributeValues,
37
- projectionExpression
38
- );
39
-
40
- logger.debug(`${FILE}::PREPARING_QUERY`, { params });
41
-
42
- try {
43
- const data = await this.client.query(params).promise();
44
- logger.debug(`${FILE}::RECEIVED_QUERY_RESPONSE`, { data });
45
- return data.Items;
46
- } catch (err) {
47
- throw new LesgoException(
48
- 'EXCEPTION ENCOUNTERED FOR DYNAMODB QUERY OPERATION',
49
- 'DYNAMODB_QUERY_EXCEPTION',
50
- 500,
51
- { err, params }
52
- );
53
- }
54
- }
55
-
56
- async queryCount(
57
- tableName,
58
- keyConditionExpression,
59
- expressionAttributeValues
60
- ) {
61
- const params = this.prepareQueryCountPayload(
62
- tableName,
63
- keyConditionExpression,
64
- expressionAttributeValues
65
- );
66
-
67
- logger.debug(`${FILE}::PREPARING_QUERY_COUNT`, { params });
68
-
69
- try {
70
- const data = await this.client.query(params).promise();
71
- logger.debug(`${FILE}::RECEIVED_QUERY_COUNT_RESPONSE`, { data });
72
- return data.Count;
73
- } catch (err) {
74
- throw new LesgoException(
75
- 'EXCEPTION ENCOUNTERED FOR DYNAMODB QUERY COUNT OPERATION',
76
- 'DYNAMODB_QUERY_COUNT_EXCEPTION',
77
- 500,
78
- { err, params }
79
- );
80
- }
81
- }
82
-
83
- async put(tableName, item) {
84
- const params = this.preparePutPayload(tableName, item);
85
-
86
- logger.debug(`${FILE}::PREPARING_PUT`, { params });
87
-
88
- try {
89
- const data = await this.client.put(params).promise();
90
- logger.debug(`${FILE}::RECEIVED_PUT_RESPONSE`, { data });
91
- return data;
92
- } catch (err) {
93
- throw new LesgoException(
94
- 'EXCEPTION ENCOUNTERED FOR DYNAMODB PUT OPERATION',
95
- 'DYNAMODB_PUT_EXCEPTION',
96
- 500,
97
- { err, params }
98
- );
99
- }
100
- }
101
-
102
- async update(tableName, key, updateExpression, expressionAttributeValues) {
103
- const params = this.prepareUpdatePayload(
104
- tableName,
105
- key,
106
- updateExpression,
107
- expressionAttributeValues
108
- );
109
-
110
- logger.debug(`${FILE}::PREPARING_UPDATE`, { params });
111
-
112
- try {
113
- const data = await this.client.update(params).promise();
114
- logger.debug(`${FILE}::RECEIVED_UPDATE_RESPONSE`, { data });
115
- return data;
116
- } catch (err) {
117
- throw new LesgoException(
118
- 'EXCEPTION ENCOUNTERED FOR DYNAMODB UPDATE OPERATION',
119
- 'DYNAMODB_UPDATE_EXCEPTION',
120
- 500,
121
- { err, params }
122
- );
123
- }
124
- }
125
-
126
- // eslint-disable-next-line class-methods-use-this
127
- prepareQueryPayload(
128
- tableName,
129
- keyConditionExpression,
130
- expressionAttributeValues,
131
- projectionExpression
132
- ) {
133
- return {
134
- TableName: tableName,
135
- KeyConditionExpression: keyConditionExpression,
136
- ProjectionExpression: projectionExpression,
137
- ExpressionAttributeValues: expressionAttributeValues,
138
- };
139
- }
140
-
141
- // eslint-disable-next-line class-methods-use-this
142
- prepareQueryCountPayload(
143
- tableName,
144
- keyConditionExpression,
145
- expressionAttributeValues
146
- ) {
147
- return {
148
- TableName: tableName,
149
- KeyConditionExpression: keyConditionExpression,
150
- ExpressionAttributeValues: expressionAttributeValues,
151
- Select: 'COUNT',
152
- };
153
- }
154
-
155
- // eslint-disable-next-line class-methods-use-this
156
- preparePutPayload(tableName, item) {
157
- return {
158
- TableName: tableName,
159
- Item: item,
160
- };
161
- }
162
-
163
- // eslint-disable-next-line class-methods-use-this
164
- prepareUpdatePayload(
165
- tableName,
166
- key,
167
- updateExpression,
168
- expressionAttributeValues
169
- ) {
170
- return {
171
- TableName: tableName,
172
- Key: key,
173
- UpdateExpression: updateExpression,
174
- ExpressionAttributeValues: expressionAttributeValues,
175
- };
176
- }
177
- }
@@ -1,17 +0,0 @@
1
- import MemcachePlus from 'memcache-plus';
2
-
3
- export default class ElastiCacheService {
4
- constructor(options) {
5
- // @TODO:
6
- // - determine the driver used 'memcached' or 'redis'
7
- // - add switch-case that will set the driver
8
-
9
- this.setDriver(new MemcachePlus(options));
10
- }
11
-
12
- setDriver(driver) {
13
- this.driver = driver;
14
-
15
- return this;
16
- }
17
- }