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,47 +0,0 @@
1
- import aws from 'Config/aws'; // eslint-disable-line import/no-unresolved
2
- import { SQS } from 'aws-sdk';
3
- import SQSService from '../SQSService';
4
-
5
- describe('ServicesGroup: test SQSService instantiation', () => {
6
- it('test instantiate default SQSService', () => {
7
- // eslint-disable-next-line no-unused-vars
8
- const sqs = new SQSService();
9
-
10
- expect(SQS).toHaveBeenCalledWith({});
11
- });
12
-
13
- it('test instantiate SQSService with custom options', () => {
14
- // eslint-disable-next-line no-unused-vars
15
- const sqs = new SQSService({
16
- accessKeyId: 'aws.sqs.options.accessKeyId',
17
- secretAccessKey: 'aws.sqs.options.secretAccessKey',
18
- region: 'aws.sqs.options.region',
19
- });
20
-
21
- expect(SQS).toHaveBeenCalledWith({
22
- accessKeyId: 'aws.sqs.options.accessKeyId',
23
- secretAccessKey: 'aws.sqs.options.secretAccessKey',
24
- region: 'aws.sqs.options.region',
25
- });
26
- });
27
- });
28
-
29
- describe('ServicesGroup: test SQSService usage', () => {
30
- it('test dispatch', () => {
31
- // eslint-disable-next-line no-unused-vars
32
- const sqs = new SQSService({}, aws.sqs.queues);
33
-
34
- return expect(
35
- sqs.dispatch({ someData: 'someValue' }, 'pingQueue')
36
- ).resolves.toMatchObject({
37
- MessageId: 'MessageId',
38
- mocked: {
39
- opts: {},
40
- params: {
41
- MessageBody: '{"someData":"someValue"}',
42
- QueueUrl: `${aws.sqs.queues.pingQueue.url}`,
43
- },
44
- },
45
- });
46
- });
47
- });
@@ -1,103 +0,0 @@
1
- /* eslint-disable no-console */
2
- /* eslint-disable no-unused-vars */
3
- import AWS from 'aws-sdk';
4
- import {
5
- initialize,
6
- handleSuccess,
7
- handleFail,
8
- sendRequest,
9
- signedRequest,
10
- } from '../aws/SignedRequest';
11
-
12
- const httpResp = {
13
- statusCode: 0,
14
- on: (key, cb) => {
15
- if (key === 'data') {
16
- cb('{"data": "mockedData"}');
17
- } else if (key === 'end') {
18
- cb();
19
- }
20
- },
21
- };
22
-
23
- const wrongHttpResp = {
24
- statusCode: 0,
25
- on: (key, cb) => {
26
- if (key === 'data') {
27
- cb('notJsonFormat');
28
- } else if (key === 'end') {
29
- cb();
30
- }
31
- },
32
- };
33
-
34
- // mock the process.nextTick
35
- process.nextTick = jest.fn().mockImplementation(cb => {
36
- cb();
37
- });
38
-
39
- describe('ServicesGroup: test SignedRequest', () => {
40
- it('test handleSuccess', () => {
41
- httpResp.statusCode = 200;
42
- handleSuccess(httpResp, true, (key, body) => {});
43
- handleSuccess(httpResp, false, (key, body) => {});
44
- httpResp.statusCode = 500;
45
- handleSuccess(httpResp, false, (key, body) => {});
46
-
47
- // should throw error 'Invalid JSON response'
48
- wrongHttpResp.statusCode = 200;
49
- handleSuccess(wrongHttpResp, false, (key, body) => {});
50
- wrongHttpResp.statusCode = 500;
51
- handleSuccess(wrongHttpResp, false, (key, body) => {});
52
-
53
- handleSuccess(
54
- {
55
- statusCode: 200,
56
- on: (key, cb) => {
57
- if (key === 'data') {
58
- cb('notJsonFormat');
59
- } else if (key === 'end') {
60
- cb();
61
- }
62
- },
63
- },
64
- false,
65
- (key, body) => {}
66
- );
67
- });
68
-
69
- it('test handleFail', () => {
70
- const cb = error => {
71
- console.log(error);
72
- };
73
- handleFail('mockingErrorAsString', cb);
74
- handleFail(new Error('mockingErrorAsInstance'), cb);
75
- });
76
-
77
- it('test initialize', () => {
78
- initialize(AWS, {
79
- awsCreds: null,
80
- });
81
- });
82
-
83
- it('test sendRequest', () => {
84
- sendRequest({ rawResponse: false, method: 'POST' }, () => {});
85
- });
86
-
87
- it('test signedRequest', () => {
88
- // null params
89
- signedRequest(AWS, {}).send(null, () => {});
90
-
91
- // no method params
92
- signedRequest(AWS, {}).send({}, () => {});
93
-
94
- // with method params
95
- // no AWS
96
- signedRequest(AWS, {}).send(
97
- {
98
- method: 'POST',
99
- },
100
- () => {}
101
- );
102
- });
103
- });
@@ -1,59 +0,0 @@
1
- import AWS from 'aws-sdk'; // eslint-disable-line import/no-extraneous-dependencies
2
- import { Connection } from '@elastic/elasticsearch';
3
- import SignedRequest from './SignedRequest';
4
- import LesgoException from '../../exceptions/LesgoException';
5
-
6
- /* eslint-disable class-methods-use-this */
7
- export default class AwsElasticsearchConnection extends Connection {
8
- constructor(opts) {
9
- super(opts);
10
-
11
- this.opts = opts;
12
- }
13
-
14
- async request(params, cb) {
15
- try {
16
- const awsCreds = await this.getCredentials();
17
-
18
- /* istanbul ignore else */
19
- if (!this.opts.awsRegion) {
20
- throw new LesgoException('Please provide the awsRegion!');
21
- }
22
-
23
- const httpClient = SignedRequest(AWS, {
24
- endpoint: this.opts.url.host,
25
- region: this.opts.awsRegion,
26
- service: 'es',
27
- awsCreds,
28
- });
29
-
30
- httpClient.send(
31
- {
32
- method: params.method,
33
- path: params.path,
34
- message: params.body,
35
- headers: params.headers,
36
- rawResponse: true, // @elastic search expect Raw Response
37
- },
38
- cb
39
- );
40
- } catch (err) {
41
- cb(err);
42
- }
43
- }
44
-
45
- getCredentials() {
46
- // eslint-disable-next-line consistent-return
47
- return new Promise((resolve, reject) => {
48
- if (AWS.config.credentials === null) {
49
- return reject(new Error('Invalid AWS Credentials'));
50
- }
51
-
52
- AWS.config.getCredentials((err, creds) => {
53
- if (err) return reject(err);
54
-
55
- return resolve(creds);
56
- });
57
- });
58
- }
59
- }
@@ -1,158 +0,0 @@
1
- /**
2
- * Create the utility that sends signed request
3
- *
4
- * @ref
5
- * https://github.com/guardian/aws-signed-request
6
- * https://github.com/TheDeveloper/http-aws-es
7
- * https://github.com/elastic/elasticsearch-js
8
- *
9
- * @param {aws-sdk} AWS sdk
10
- * @param {Object} config Configuration containing
11
- * * endpoint: AWS endpoint
12
- * * region: AWS region
13
- * * service: AWS service
14
- * * rawResponse: Will return rawResponse from httprequest
15
- * * awsCreds: Aws crendential to use. default to AWS default
16
- * * region: AWS region
17
- * @return {Object} Utility with method `send`
18
- */
19
- let AWS;
20
- let awsEndpoint;
21
- let awsCreds;
22
- let service;
23
- let region;
24
-
25
- const initialize = (aws, config) => {
26
- AWS = aws;
27
- awsEndpoint = new AWS.Endpoint(config.endpoint);
28
- awsCreds = config.awsCreds || new AWS.EnvironmentCredentials('AWS');
29
- service = config.service;
30
- region = config.region;
31
- };
32
-
33
- const handleSuccess = (httpResp, asPlainText, callback) => {
34
- let respBody = '';
35
- httpResp.on('data', chunk => {
36
- respBody += chunk;
37
- });
38
- httpResp.on('end', () => {
39
- if (httpResp.statusCode >= 200 && httpResp.statusCode < 400) {
40
- if (asPlainText) {
41
- process.nextTick(() => {
42
- callback(null, respBody);
43
- });
44
- } else {
45
- try {
46
- const parsedRespBody = JSON.parse(respBody);
47
- process.nextTick(() => {
48
- callback(null, parsedRespBody);
49
- });
50
- } catch (ex) {
51
- const error = new Error('Invalid JSON response');
52
- error.responseText = respBody;
53
- process.nextTick(() => {
54
- callback(error);
55
- });
56
- }
57
- }
58
- } else {
59
- let errorMessage;
60
- try {
61
- const errorResponse = JSON.parse(respBody);
62
- errorMessage = errorResponse.Message;
63
- } catch (ex) {
64
- errorMessage = respBody;
65
- }
66
- process.nextTick(() => {
67
- const error = new Error(errorMessage);
68
- error.responseText = respBody;
69
- callback(error);
70
- });
71
- }
72
- });
73
- };
74
-
75
- const handleFail = (err, callback) => {
76
- const error = typeof err === 'string' ? new Error(err) : err;
77
- process.nextTick(() => {
78
- callback(error);
79
- });
80
- };
81
-
82
- const sendRequest = (params, callback) => {
83
- const req = new AWS.HttpRequest(awsEndpoint);
84
- const rawResponse = params.rawResponse || false;
85
-
86
- req.method = params.method.toUpperCase();
87
- req.path = params.path;
88
- req.region = region;
89
- req.headers = params.headers || {};
90
- req.headers['presigned-expires'] = false;
91
- req.headers.Host = awsEndpoint.host;
92
-
93
- if (params.message) {
94
- req.body =
95
- typeof params.message === 'string'
96
- ? params.message
97
- : JSON.stringify(params.message);
98
- }
99
-
100
- const signer = new AWS.Signers.V4(req, service);
101
- signer.addAuthorization(awsCreds, new Date());
102
-
103
- const send = new AWS.NodeHttpClient();
104
- send.handleRequest(
105
- req,
106
- AWS.config.httpOptions,
107
- /* istanbul ignore next */
108
- httpResp => {
109
- // eslint-disable-next-line no-unused-expressions
110
- rawResponse
111
- ? callback(null, httpResp)
112
- : handleSuccess(httpResp, params.json === false, callback);
113
- },
114
- /* istanbul ignore next */
115
- err => {
116
- // eslint-disable-next-line no-unused-expressions
117
- rawResponse ? callback(err) : handleFail(err, callback);
118
- }
119
- );
120
- };
121
-
122
- const signedRequest = (aws, config) => {
123
- initialize(aws, config);
124
-
125
- return {
126
- /**
127
- * Send a request
128
- * @param {Object} params Object containing
129
- * * method: HTTP method (e.g GET, POST)
130
- * * path: Request path (e.g. '/_cat/indices')
131
- * * message: Request body (String or JSON)
132
- * * json: Boolean, whether the response from the server should be parsed as JSON
133
- * @return {[type]} [description]
134
- */
135
- send(params, callback) {
136
- if (!params) {
137
- process.nextTick(() => {
138
- callback(new TypeError('Missing or invalid parameters'));
139
- });
140
- } else if (!params.method) {
141
- process.nextTick(() => {
142
- callback(new TypeError('Missing method'));
143
- });
144
- } else {
145
- try {
146
- sendRequest(params, callback);
147
- } catch (ex) /* istanbul ignore next */ {
148
- process.nextTick(() => {
149
- callback(ex);
150
- });
151
- }
152
- }
153
- },
154
- };
155
- };
156
-
157
- export { initialize, handleSuccess, handleFail, sendRequest, signedRequest };
158
- export default signedRequest;
@@ -1,19 +0,0 @@
1
- import AuroraDbService from './AuroraDbService';
2
- import DynamoDbService from './DynamoDbService';
3
- import ElastiCacheService from './ElastiCacheService';
4
- import ElasticsearchService from './ElasticsearchService';
5
- import JwtService from './JwtService';
6
- import LoggerService from './LoggerService';
7
- import S3Service from './S3Service';
8
- import SQSService from './SQSService';
9
-
10
- export {
11
- AuroraDbService,
12
- DynamoDbService,
13
- ElastiCacheService,
14
- ElasticsearchService,
15
- JwtService,
16
- LoggerService,
17
- S3Service,
18
- SQSService,
19
- };
@@ -1,49 +0,0 @@
1
- import Paginator from './Paginator';
2
- import LesgoException from '../../exceptions/LesgoException';
3
- import validateFields from '../../utils/validateFields';
4
-
5
- const FILE = 'Services/pagination/LengthAwarePaginator';
6
-
7
- export default class LengthAwarePaginator extends Paginator {
8
- /**
9
- * Constructor
10
- *
11
- * @param db
12
- * @param sql
13
- * @param sqlParams
14
- * @param options
15
- * @param connection
16
- */
17
- constructor(db, sql, sqlParams, options, connection = {}) {
18
- const validFields = [{ key: 'total', type: 'number', required: true }];
19
-
20
- let validated = {};
21
- try {
22
- validated = validateFields(options, validFields);
23
- } catch (error) {
24
- throw new LesgoException(
25
- error.message,
26
- `${FILE}::FIELD_VALIDATION_EXCEPTION`,
27
- 500,
28
- {
29
- ...options,
30
- error,
31
- }
32
- );
33
- }
34
-
35
- const { total } = validated;
36
-
37
- super(db, sql, sqlParams, options, connection);
38
- this.totalProp = total;
39
- }
40
-
41
- /**
42
- * Total items in all pages.
43
- *
44
- * @returns {null|number}
45
- */
46
- async total() {
47
- return this.totalProp;
48
- }
49
- }
@@ -1,260 +0,0 @@
1
- import LesgoException from '../../exceptions/LesgoException';
2
- import validateFields from '../../utils/validateFields';
3
-
4
- const FILE = 'Services/pagination/Paginator';
5
-
6
- export default class Paginator {
7
- /**
8
- * Constructor
9
- *
10
- * @param db
11
- * @param sql
12
- * @param sqlParams
13
- * @param options
14
- */
15
- constructor(db, sql, sqlParams, options = {}, connection = {}) {
16
- const validFields = [
17
- { key: 'db', type: 'object', required: true },
18
- { key: 'sql', type: 'string', required: true },
19
- { key: 'sqlParams', type: 'object', required: true },
20
- { key: 'perPage', type: 'number', required: false },
21
- { key: 'currentPage', type: 'number', required: false },
22
- { key: 'connection', type: 'object', required: false },
23
- ];
24
-
25
- let validated = {};
26
- try {
27
- validated = validateFields(
28
- {
29
- db,
30
- sql,
31
- sqlParams,
32
- ...options,
33
- connection,
34
- },
35
- validFields
36
- );
37
- } catch (error) {
38
- throw new LesgoException(
39
- error.message,
40
- `${FILE}::FIELD_VALIDATION_EXCEPTION`,
41
- 500,
42
- {
43
- ...options,
44
- error,
45
- }
46
- );
47
- }
48
-
49
- const { perPage, currentPage } = validated;
50
-
51
- this.dbProp = db;
52
- this.sqlProp = sql;
53
- this.sqlParamsProp = sqlParams;
54
- this.perPageProp = perPage || 10;
55
- this.currentPageProp = currentPage || 1;
56
-
57
- this.hasNext = false;
58
-
59
- this.response = [];
60
- this.totalProp = false;
61
-
62
- this.connection = connection;
63
- }
64
-
65
- /**
66
- * Count all items in the current page.
67
- *
68
- * @returns {number}
69
- */
70
- async count() {
71
- return this.response.length || (await this.executeQuery()).length;
72
- }
73
-
74
- /**
75
- * Previous page
76
- *
77
- * @returns {boolean|number}
78
- */
79
- previousPage() {
80
- if (this.currentPage() > 1) {
81
- return this.currentPage() - 1;
82
- }
83
-
84
- return false;
85
- }
86
-
87
- /**
88
- * The current page.
89
- *
90
- * @returns {*|number}
91
- */
92
- currentPage() {
93
- return this.currentPageProp;
94
- }
95
-
96
- /**
97
- * Next page
98
- *
99
- * @returns {Promise<boolean|*>}
100
- */
101
- async nextPage() {
102
- if (this.response.length <= 0) {
103
- await this.executeQuery();
104
- }
105
-
106
- if (this.hasNext) {
107
- return this.currentPage() + 1;
108
- }
109
-
110
- return false;
111
- }
112
-
113
- /**
114
- * First item in the current page.
115
- *
116
- * @returns {*}
117
- */
118
- async firstItem() {
119
- if (this.response.length <= 0) {
120
- await this.executeQuery();
121
- }
122
-
123
- return this.response[0];
124
- }
125
-
126
- /**
127
- * Last item in the current page.
128
- */
129
- async lastItem() {
130
- if (this.response.length <= 0) {
131
- await this.executeQuery();
132
- }
133
-
134
- return this.response[this.response.length - 1];
135
- }
136
-
137
- /**
138
- * Number of items per page.
139
- *
140
- * @returns {*}
141
- */
142
- perPage() {
143
- return this.perPageProp;
144
- }
145
-
146
- /**
147
- * Get the last page.
148
- *
149
- * @returns {Promise<number>}
150
- */
151
- async lastPage() {
152
- return this.calculateTotalNumberOfPages();
153
- }
154
-
155
- /**
156
- * Total items in all pages.
157
- *
158
- * @returns {null|number}
159
- */
160
- async total() {
161
- return this.totalProp || this.countTotalItems();
162
- }
163
-
164
- /**
165
- * All items in the current page.
166
- *
167
- * @returns {[]}
168
- */
169
- async items() {
170
- if (this.response.length <= 0) {
171
- await this.executeQuery();
172
- }
173
-
174
- return this.response;
175
- }
176
-
177
- /**
178
- * Convert to object.
179
- *
180
- * @returns {Promise<{per_page: *, count: *, items: *, current_page: (*|number)}>}
181
- */
182
- async toObject() {
183
- if (this.response.length <= 0) {
184
- await this.executeQuery();
185
- }
186
-
187
- return {
188
- count: await this.count(),
189
- previous_page: this.previousPage(),
190
- current_page: this.currentPage(),
191
- next_page: await this.nextPage(),
192
- last_page: await this.lastPage(),
193
- per_page: this.perPage(),
194
- total: await this.total(),
195
- items: await this.items(),
196
- };
197
- }
198
-
199
- // They act as protected methods.
200
-
201
- getLimitAndOffsetByPageAndContentPerPage() {
202
- const offset = this.currentPage() * this.perPage() - this.perPage();
203
- const limit = this.perPage();
204
-
205
- return {
206
- offset,
207
- limit,
208
- };
209
- }
210
-
211
- generatePaginationSqlSnippet() {
212
- const values = this.getLimitAndOffsetByPageAndContentPerPage();
213
- const limitWithExtraData = values.limit + 1;
214
- return this.sqlProp.concat(
215
- ` LIMIT ${limitWithExtraData} OFFSET ${values.offset}`
216
- );
217
- }
218
-
219
- async executeQuery() {
220
- const total = this.totalProp;
221
- if (
222
- (typeof total === 'number' && total > 0) ||
223
- (typeof total !== 'number' && !total)
224
- ) {
225
- this.response = await this.dbProp.select(
226
- this.generatePaginationSqlSnippet(),
227
- this.sqlParamsProp,
228
- this.connection
229
- );
230
- }
231
-
232
- this.hasNext = this.response.length > this.perPage();
233
- if (this.hasNext) {
234
- this.response.pop();
235
- }
236
-
237
- return this.response;
238
- }
239
-
240
- /**
241
- * Count total items with basic implementation.
242
- *
243
- * @returns {Promise<number>}
244
- */
245
- async countTotalItems() {
246
- const resp = await this.dbProp.select(
247
- this.sqlProp,
248
- this.sqlParamsProp,
249
- this.connection
250
- );
251
- this.totalProp = Object.keys(resp).length;
252
-
253
- return this.totalProp;
254
- }
255
-
256
- async calculateTotalNumberOfPages() {
257
- const total = await this.total();
258
- return Math.ceil(total / this.perPage());
259
- }
260
- }