lesgo 1.0.0 → 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 (315) hide show
  1. package/README.md +5 -4
  2. package/bin/lesgo-scripts.sh +4 -4
  3. package/dist/config/app.d.ts +7 -0
  4. package/dist/config/app.js +9 -0
  5. package/dist/config/aws.d.ts +5 -0
  6. package/dist/config/aws.js +4 -0
  7. package/dist/config/basicAuth.d.ts +7 -0
  8. package/dist/config/basicAuth.js +8 -0
  9. package/dist/config/crypto.d.ts +10 -0
  10. package/dist/config/crypto.js +9 -0
  11. package/dist/config/dynamodb.d.ts +8 -0
  12. package/dist/config/dynamodb.js +14 -0
  13. package/dist/config/elasticache.d.ts +7 -0
  14. package/dist/config/elasticache.js +6 -0
  15. package/dist/config/index.d.ts +11 -0
  16. package/dist/config/index.js +11 -0
  17. package/dist/config/jwt.d.ts +12 -0
  18. package/dist/config/jwt.js +16 -0
  19. package/dist/config/rds.d.ts +12 -0
  20. package/dist/config/rds.js +13 -0
  21. package/dist/config/s3.d.ts +5 -0
  22. package/dist/config/s3.js +5 -0
  23. package/dist/config/secretsManager.d.ts +4 -0
  24. package/dist/config/secretsManager.js +4 -0
  25. package/dist/config/sqs.d.ts +9 -0
  26. package/dist/config/sqs.js +18 -0
  27. package/dist/exceptions/LesgoException.d.ts +6 -0
  28. package/{src → dist}/exceptions/LesgoException.js +5 -4
  29. package/dist/exceptions/index.d.ts +1 -0
  30. package/dist/exceptions/index.js +1 -0
  31. package/dist/middlewares/disconnectMiddleware.d.ts +8 -0
  32. package/dist/middlewares/disconnectMiddleware.js +78 -0
  33. package/dist/middlewares/httpMiddleware.d.ts +12 -0
  34. package/dist/middlewares/httpMiddleware.js +74 -0
  35. package/dist/middlewares/httpResponseMiddleware.d.ts +7 -0
  36. package/dist/middlewares/httpResponseMiddleware.js +128 -0
  37. package/dist/middlewares/index.d.ts +7 -0
  38. package/dist/middlewares/index.js +7 -0
  39. package/dist/middlewares/invokeCommandMiddleware.d.ts +12 -0
  40. package/dist/middlewares/invokeCommandMiddleware.js +70 -0
  41. package/dist/middlewares/sqsMiddleware.d.ts +10 -0
  42. package/dist/middlewares/sqsMiddleware.js +70 -0
  43. package/dist/middlewares/verifyBasicAuthMiddleware.d.ts +8 -0
  44. package/dist/middlewares/verifyBasicAuthMiddleware.js +59 -0
  45. package/dist/middlewares/verifyJwtMiddleware.d.ts +6 -0
  46. package/dist/middlewares/verifyJwtMiddleware.js +37 -0
  47. package/dist/services/DynamoDbService/deleteRecord.d.ts +8 -0
  48. package/dist/services/DynamoDbService/deleteRecord.js +69 -0
  49. package/dist/services/DynamoDbService/getClient.d.ts +7 -0
  50. package/dist/services/DynamoDbService/getClient.js +30 -0
  51. package/dist/services/DynamoDbService/getTableName.d.ts +2 -0
  52. package/dist/services/DynamoDbService/getTableName.js +15 -0
  53. package/dist/services/DynamoDbService/index.d.ts +6 -0
  54. package/dist/services/DynamoDbService/index.js +6 -0
  55. package/dist/services/DynamoDbService/putRecord.d.ts +8 -0
  56. package/dist/services/DynamoDbService/putRecord.js +64 -0
  57. package/dist/services/DynamoDbService/query.d.ts +7 -0
  58. package/dist/services/DynamoDbService/query.js +78 -0
  59. package/dist/services/DynamoDbService/scan.d.ts +7 -0
  60. package/dist/services/DynamoDbService/scan.js +60 -0
  61. package/dist/services/DynamoDbService/updateRecord.d.ts +9 -0
  62. package/dist/services/DynamoDbService/updateRecord.js +89 -0
  63. package/dist/services/ElastiCacheRedisService/deleteRedisCache.d.ts +3 -0
  64. package/dist/services/ElastiCacheRedisService/deleteRedisCache.js +62 -0
  65. package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.d.ts +11 -0
  66. package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.js +69 -0
  67. package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.d.ts +12 -0
  68. package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.js +114 -0
  69. package/dist/services/ElastiCacheRedisService/getRedisCache.d.ts +3 -0
  70. package/dist/services/ElastiCacheRedisService/getRedisCache.js +70 -0
  71. package/dist/services/ElastiCacheRedisService/index.d.ts +5 -0
  72. package/dist/services/ElastiCacheRedisService/index.js +5 -0
  73. package/dist/services/ElastiCacheRedisService/setRedisCache.d.ts +6 -0
  74. package/dist/services/ElastiCacheRedisService/setRedisCache.js +77 -0
  75. package/dist/services/JWTService/decodeJwt.d.ts +7 -0
  76. package/dist/services/JWTService/decodeJwt.js +9 -0
  77. package/dist/services/JWTService/getJwtSecret.d.ts +13 -0
  78. package/dist/services/JWTService/getJwtSecret.js +54 -0
  79. package/dist/services/JWTService/index.d.ts +2 -0
  80. package/dist/services/JWTService/index.js +2 -0
  81. package/dist/services/JWTService/sign.d.ts +3 -0
  82. package/dist/services/JWTService/sign.js +31 -0
  83. package/dist/services/JWTService/verify.d.ts +7 -0
  84. package/dist/services/JWTService/verify.js +61 -0
  85. package/dist/services/LoggerService.d.ts +46 -0
  86. package/{src → dist}/services/LoggerService.js +29 -60
  87. package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.d.ts +2 -0
  88. package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.js +60 -0
  89. package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.d.ts +8 -0
  90. package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.js +87 -0
  91. package/dist/services/RDSAuroraMySQLProxyService/index.d.ts +3 -0
  92. package/dist/services/RDSAuroraMySQLProxyService/index.js +3 -0
  93. package/dist/services/RDSAuroraMySQLProxyService/query.d.ts +4 -0
  94. package/dist/services/RDSAuroraMySQLProxyService/query.js +63 -0
  95. package/dist/services/S3Service/getClient.d.ts +4 -0
  96. package/dist/services/S3Service/getClient.js +28 -0
  97. package/dist/services/S3Service/getDownloadSignedUrl.d.ts +7 -0
  98. package/dist/services/S3Service/getDownloadSignedUrl.js +58 -0
  99. package/dist/services/S3Service/getHeadObject.d.ts +13 -0
  100. package/dist/services/S3Service/getHeadObject.js +83 -0
  101. package/dist/services/S3Service/getObject.d.ts +10 -0
  102. package/dist/services/S3Service/getObject.js +89 -0
  103. package/dist/services/S3Service/getUploadSignedUrl.d.ts +7 -0
  104. package/dist/services/S3Service/getUploadSignedUrl.js +61 -0
  105. package/dist/services/S3Service/index.d.ts +6 -0
  106. package/dist/services/S3Service/index.js +6 -0
  107. package/dist/services/S3Service/putObject.d.ts +9 -0
  108. package/dist/services/S3Service/putObject.js +77 -0
  109. package/dist/services/SQSService/deleteMessage.d.ts +9 -0
  110. package/dist/services/SQSService/deleteMessage.js +69 -0
  111. package/dist/services/SQSService/dispatch.d.ts +9 -0
  112. package/dist/services/SQSService/dispatch.js +71 -0
  113. package/dist/services/SQSService/getClient.d.ts +4 -0
  114. package/dist/services/SQSService/getClient.js +28 -0
  115. package/dist/services/SQSService/getQueueUrl.d.ts +7 -0
  116. package/dist/services/SQSService/getQueueUrl.js +25 -0
  117. package/dist/services/SQSService/index.d.ts +4 -0
  118. package/dist/services/SQSService/index.js +4 -0
  119. package/dist/services/SQSService/receiveMessages.d.ts +8 -0
  120. package/dist/services/SQSService/receiveMessages.js +65 -0
  121. package/dist/services/SecretsManagerService/getClient.d.ts +7 -0
  122. package/dist/services/SecretsManagerService/getClient.js +28 -0
  123. package/dist/services/SecretsManagerService/getSecretValue.d.ts +7 -0
  124. package/dist/services/SecretsManagerService/getSecretValue.js +65 -0
  125. package/dist/services/SecretsManagerService/index.d.ts +2 -0
  126. package/dist/services/SecretsManagerService/index.js +2 -0
  127. package/dist/services/index.d.ts +1 -0
  128. package/dist/services/index.js +1 -0
  129. package/dist/types/aws.d.ts +8 -0
  130. package/dist/types/aws.js +1 -0
  131. package/dist/utils/cache/redis/deleteCache.d.ts +19 -0
  132. package/dist/utils/cache/redis/deleteCache.js +21 -0
  133. package/dist/utils/cache/redis/getCache.d.ts +22 -0
  134. package/dist/utils/cache/redis/getCache.js +24 -0
  135. package/dist/utils/cache/redis/getClient.d.ts +30 -0
  136. package/dist/utils/cache/redis/getClient.js +32 -0
  137. package/dist/utils/cache/redis/index.d.ts +4 -0
  138. package/dist/utils/cache/redis/index.js +4 -0
  139. package/dist/utils/cache/redis/setCache.d.ts +25 -0
  140. package/dist/utils/cache/redis/setCache.js +26 -0
  141. package/dist/utils/crypto/decrypt.d.ts +33 -0
  142. package/dist/utils/crypto/decrypt.js +59 -0
  143. package/dist/utils/crypto/encrypt.d.ts +31 -0
  144. package/dist/utils/crypto/encrypt.js +41 -0
  145. package/dist/utils/crypto/hash.d.ts +31 -0
  146. package/dist/utils/crypto/hash.js +56 -0
  147. package/dist/utils/crypto/index.d.ts +3 -0
  148. package/dist/utils/crypto/index.js +3 -0
  149. package/dist/utils/crypto/validateEncryptionFields.d.ts +19 -0
  150. package/dist/utils/crypto/validateEncryptionFields.js +71 -0
  151. package/dist/utils/db/mysql/proxy/disconnect.d.ts +2 -0
  152. package/dist/utils/db/mysql/proxy/disconnect.js +5 -0
  153. package/dist/utils/db/mysql/proxy/disconnectDb.d.ts +2 -0
  154. package/dist/utils/db/mysql/proxy/disconnectDb.js +5 -0
  155. package/dist/utils/db/mysql/proxy/getClient.d.ts +4 -0
  156. package/dist/utils/db/mysql/proxy/getClient.js +5 -0
  157. package/dist/utils/db/mysql/proxy/index.d.ts +3 -0
  158. package/dist/utils/db/mysql/proxy/index.js +3 -0
  159. package/dist/utils/db/mysql/proxy/query.d.ts +4 -0
  160. package/dist/utils/db/mysql/proxy/query.js +45 -0
  161. package/dist/utils/dynamodb/deleteRecord.d.ts +5 -0
  162. package/dist/utils/dynamodb/deleteRecord.js +39 -0
  163. package/dist/utils/dynamodb/getClient.d.ts +3 -0
  164. package/dist/utils/dynamodb/getClient.js +5 -0
  165. package/dist/utils/dynamodb/index.d.ts +6 -0
  166. package/dist/utils/dynamodb/index.js +6 -0
  167. package/dist/utils/dynamodb/putRecord.d.ts +4 -0
  168. package/dist/utils/dynamodb/putRecord.js +39 -0
  169. package/dist/utils/dynamodb/query.d.ts +5 -0
  170. package/dist/utils/dynamodb/query.js +52 -0
  171. package/dist/utils/dynamodb/scan.d.ts +4 -0
  172. package/dist/utils/dynamodb/scan.js +40 -0
  173. package/dist/utils/dynamodb/updateRecord.d.ts +5 -0
  174. package/dist/utils/dynamodb/updateRecord.js +53 -0
  175. package/dist/utils/formatUnixTimestamp.d.ts +8 -0
  176. package/dist/utils/formatUnixTimestamp.js +17 -0
  177. package/dist/utils/generateUid.d.ts +13 -0
  178. package/{src → dist}/utils/generateUid.js +9 -4
  179. package/dist/utils/getCurrentDatetime.d.ts +2 -0
  180. package/dist/utils/getCurrentDatetime.js +4 -0
  181. package/dist/utils/getCurrentTimestamp.d.ts +7 -0
  182. package/dist/utils/getCurrentTimestamp.js +9 -0
  183. package/dist/utils/getJwtSubFromAuthHeader.d.ts +9 -0
  184. package/dist/utils/getJwtSubFromAuthHeader.js +24 -0
  185. package/dist/utils/index.d.ts +9 -0
  186. package/dist/utils/index.js +9 -0
  187. package/dist/utils/isDecimal.d.ts +8 -0
  188. package/dist/utils/isDecimal.js +9 -0
  189. package/dist/utils/isEmail.d.ts +9 -0
  190. package/{src → dist}/utils/isEmail.js +9 -4
  191. package/dist/utils/isEmpty.d.ts +8 -0
  192. package/dist/utils/isEmpty.js +19 -0
  193. package/dist/utils/jwt/index.d.ts +2 -0
  194. package/dist/utils/jwt/index.js +2 -0
  195. package/dist/utils/jwt/sign.d.ts +3 -0
  196. package/dist/utils/jwt/sign.js +5 -0
  197. package/dist/utils/jwt/verify.d.ts +3 -0
  198. package/dist/utils/jwt/verify.js +12 -0
  199. package/dist/utils/logger.d.ts +20 -0
  200. package/dist/utils/logger.js +38 -0
  201. package/dist/utils/s3/getClient.d.ts +3 -0
  202. package/dist/utils/s3/getClient.js +5 -0
  203. package/dist/utils/s3/getDownloadSignedUrl.d.ts +5 -0
  204. package/dist/utils/s3/getDownloadSignedUrl.js +39 -0
  205. package/dist/utils/s3/getHeadObject.d.ts +10 -0
  206. package/dist/utils/s3/getHeadObject.js +39 -0
  207. package/dist/utils/s3/getObject.d.ts +13 -0
  208. package/dist/utils/s3/getObject.js +51 -0
  209. package/dist/utils/s3/getUploadSignedUrl.d.ts +5 -0
  210. package/dist/utils/s3/getUploadSignedUrl.js +39 -0
  211. package/dist/utils/s3/index.d.ts +6 -0
  212. package/dist/utils/s3/index.js +6 -0
  213. package/dist/utils/s3/putObject.d.ts +5 -0
  214. package/dist/utils/s3/putObject.js +39 -0
  215. package/dist/utils/secretsmanager/getClient.d.ts +3 -0
  216. package/dist/utils/secretsmanager/getClient.js +5 -0
  217. package/dist/utils/secretsmanager/getSecretValue.d.ts +4 -0
  218. package/dist/utils/secretsmanager/getSecretValue.js +68 -0
  219. package/dist/utils/secretsmanager/index.d.ts +2 -0
  220. package/dist/utils/secretsmanager/index.js +2 -0
  221. package/dist/utils/sqs/deleteMessage.d.ts +5 -0
  222. package/dist/utils/sqs/deleteMessage.js +39 -0
  223. package/dist/utils/sqs/dispatch.d.ts +5 -0
  224. package/dist/utils/sqs/dispatch.js +39 -0
  225. package/dist/utils/sqs/getClient.d.ts +3 -0
  226. package/dist/utils/sqs/getClient.js +5 -0
  227. package/dist/utils/sqs/index.d.ts +4 -0
  228. package/dist/utils/sqs/index.js +4 -0
  229. package/dist/utils/sqs/receiveMessages.d.ts +5 -0
  230. package/dist/utils/sqs/receiveMessages.js +39 -0
  231. package/dist/utils/validateFields.d.ts +22 -0
  232. package/{src → dist}/utils/validateFields.js +13 -19
  233. package/package.json +145 -34
  234. package/src/exceptions/__tests__/LesgoException.spec.js +0 -24
  235. package/src/exceptions/index.js +0 -4
  236. package/src/index.js +0 -4
  237. package/src/middlewares/__mocks__/ValidationErrorException.js +0 -18
  238. package/src/middlewares/__tests__/basicAuthMiddleware.spec.js +0 -264
  239. package/src/middlewares/__tests__/clientAuthMiddleware.spec.js +0 -235
  240. package/src/middlewares/__tests__/errorHttpResponseMiddleware.spec.js +0 -203
  241. package/src/middlewares/__tests__/gzipHttpResponse.spec.js +0 -185
  242. package/src/middlewares/__tests__/httpNoOutputMiddleware.spec.js +0 -201
  243. package/src/middlewares/__tests__/normalizeHttpRequestMiddleware.spec.js +0 -181
  244. package/src/middlewares/__tests__/normalizeSQSMessageMiddleware.spec.js +0 -120
  245. package/src/middlewares/__tests__/successHttpResponseMiddleware.spec.js +0 -172
  246. package/src/middlewares/__tests__/verifyJwtMiddleware.spec.js +0 -297
  247. package/src/middlewares/basicAuthMiddleware.js +0 -125
  248. package/src/middlewares/clientAuthMiddleware.js +0 -103
  249. package/src/middlewares/errorHttpResponseMiddleware.js +0 -101
  250. package/src/middlewares/gzipHttpResponse.js +0 -98
  251. package/src/middlewares/httpMiddleware.js +0 -19
  252. package/src/middlewares/httpNoOutputMiddleware.js +0 -91
  253. package/src/middlewares/index.js +0 -19
  254. package/src/middlewares/normalizeHttpRequestMiddleware.js +0 -101
  255. package/src/middlewares/normalizeSQSMessageMiddleware.js +0 -67
  256. package/src/middlewares/successHttpResponseMiddleware.js +0 -85
  257. package/src/middlewares/verifyJwtMiddleware.js +0 -73
  258. package/src/services/AuroraDbRDSProxyService.js +0 -182
  259. package/src/services/AuroraDbService.js +0 -111
  260. package/src/services/DynamoDbService.js +0 -177
  261. package/src/services/ElastiCacheService.js +0 -17
  262. package/src/services/ElasticsearchService.js +0 -181
  263. package/src/services/FirebaseAdminService.js +0 -108
  264. package/src/services/JwtService.js +0 -52
  265. package/src/services/S3Service.js +0 -59
  266. package/src/services/SQSService.js +0 -65
  267. package/src/services/__tests__/AuroraDbRDSProxyService.spec.js +0 -278
  268. package/src/services/__tests__/AuroraDbService.spec.js +0 -211
  269. package/src/services/__tests__/AwsElasticsearchConnection.spec.js +0 -89
  270. package/src/services/__tests__/DynamoDbService.spec.js +0 -314
  271. package/src/services/__tests__/ElasticsearchService.spec.js +0 -201
  272. package/src/services/__tests__/FirebaseAdminService.spec.js +0 -356
  273. package/src/services/__tests__/JwtService.spec.js +0 -35
  274. package/src/services/__tests__/LengthAwarePaginator.spec.js +0 -223
  275. package/src/services/__tests__/LoggerService.spec.js +0 -267
  276. package/src/services/__tests__/Paginator.spec.js +0 -383
  277. package/src/services/__tests__/S3Service.spec.js +0 -55
  278. package/src/services/__tests__/SQSService.spec.js +0 -47
  279. package/src/services/__tests__/SignedRequest.spec.js +0 -103
  280. package/src/services/aws/AwsElasticsearchConnection.js +0 -59
  281. package/src/services/aws/SignedRequest.js +0 -158
  282. package/src/services/index.js +0 -19
  283. package/src/services/pagination/LengthAwarePaginator.js +0 -49
  284. package/src/services/pagination/Paginator.js +0 -260
  285. package/src/utils/__mocks__/db.js +0 -109
  286. package/src/utils/__tests__/cache.spec.js +0 -131
  287. package/src/utils/__tests__/crypto.spec.js +0 -122
  288. package/src/utils/__tests__/db.spec.js +0 -70
  289. package/src/utils/__tests__/dynamodb.spec.js +0 -27
  290. package/src/utils/__tests__/elasticsearch.spec.js +0 -43
  291. package/src/utils/__tests__/generateUid.spec.js +0 -36
  292. package/src/utils/__tests__/getJwtSubFromAuthHeader.spec.js +0 -20
  293. package/src/utils/__tests__/isDecimal.spec.js +0 -12
  294. package/src/utils/__tests__/isEmail.spec.js +0 -28
  295. package/src/utils/__tests__/isEmpty.spec.js +0 -31
  296. package/src/utils/__tests__/logger.spec.js +0 -11
  297. package/src/utils/__tests__/objectStore.spec.js +0 -67
  298. package/src/utils/__tests__/prepSQLInsertParams.spec.js +0 -46
  299. package/src/utils/__tests__/prepSQLUpdateParams.spec.js +0 -36
  300. package/src/utils/__tests__/queue.spec.js +0 -54
  301. package/src/utils/__tests__/validateFields.spec.js +0 -374
  302. package/src/utils/cache.js +0 -215
  303. package/src/utils/crypto.js +0 -77
  304. package/src/utils/db.js +0 -17
  305. package/src/utils/dynamodb.js +0 -6
  306. package/src/utils/elasticsearch.js +0 -20
  307. package/src/utils/getJwtSubFromAuthHeader.js +0 -18
  308. package/src/utils/index.js +0 -26
  309. package/src/utils/isDecimal.js +0 -2
  310. package/src/utils/isEmpty.js +0 -6
  311. package/src/utils/logger.js +0 -25
  312. package/src/utils/objectStore.js +0 -11
  313. package/src/utils/prepSQLInsertParams.js +0 -21
  314. package/src/utils/prepSQLUpdateParams.js +0 -25
  315. package/src/utils/queue.js +0 -11
@@ -0,0 +1,63 @@
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 getClient from './getMySQLProxyClient';
37
+ const FILE = 'lesgo.services.RDSAuroraMySQLService.query';
38
+ const query = (sql, preparedValues, connOptions, clientOpts) =>
39
+ __awaiter(void 0, void 0, void 0, function* () {
40
+ const input = validateFields({ sql, preparedValues }, [
41
+ { key: 'sql', type: 'string', required: true },
42
+ { key: 'preparedValues', type: 'array', required: false },
43
+ ]);
44
+ const connection = yield getClient(connOptions, clientOpts);
45
+ try {
46
+ const resp = yield connection.execute(input.sql, input.preparedValues);
47
+ logger.debug(`${FILE}::RECEIVED_RESPONSE`, {
48
+ result: resp[0],
49
+ sql,
50
+ preparedValues,
51
+ });
52
+ return resp;
53
+ } catch (err) {
54
+ throw new LesgoException('Failed to query', `${FILE}::QUERY_ERROR`, 500, {
55
+ err,
56
+ sql,
57
+ preparedValues,
58
+ connOptions,
59
+ clientOpts,
60
+ });
61
+ }
62
+ });
63
+ export default query;
@@ -0,0 +1,4 @@
1
+ import { S3Client } from '@aws-sdk/client-s3';
2
+ import { ClientOptions } from '../../types/aws';
3
+ declare const getClient: (clientOpts?: ClientOptions) => S3Client;
4
+ export default getClient;
@@ -0,0 +1,28 @@
1
+ import { S3Client } from '@aws-sdk/client-s3';
2
+ import { logger, isEmpty, validateFields } from '../../utils';
3
+ import { s3 as s3Config } from '../../config';
4
+ const FILE = 'lesgo.services.S3Service.getClient';
5
+ const singleton = {};
6
+ const getClient = (clientOpts = {}) => {
7
+ const options = validateFields(clientOpts, [
8
+ { key: 'region', type: 'string', required: false },
9
+ { key: 'singletonConn', type: 'string', required: false },
10
+ ]);
11
+ const region = options.region || s3Config.region;
12
+ const singletonConn = options.singletonConn || 'default';
13
+ if (!isEmpty(singleton[singletonConn])) {
14
+ logger.debug(`${FILE}::REUSE_CLIENT_SINGLETON`, {
15
+ client: singleton[singletonConn],
16
+ region,
17
+ });
18
+ return singleton[singletonConn];
19
+ }
20
+ const client = new S3Client({ region });
21
+ logger.debug(`${FILE}::NEW_CLIENT`, {
22
+ client,
23
+ region,
24
+ });
25
+ singleton[singletonConn] = client;
26
+ return client;
27
+ };
28
+ export default getClient;
@@ -0,0 +1,7 @@
1
+ import { ClientOptions } from '../../types/aws';
2
+ import { GetObjectOptions } from './getObject';
3
+ export interface GetSignedUrlOptions {
4
+ expiresIn?: number;
5
+ }
6
+ declare const getDownloadSignedUrl: (key: string, opts?: GetObjectOptions, signingOpts?: GetSignedUrlOptions, clientOpts?: ClientOptions) => Promise<string>;
7
+ export default getDownloadSignedUrl;
@@ -0,0 +1,58 @@
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 { GetObjectCommand } from '@aws-sdk/client-s3';
35
+ import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
36
+ import s3Config from '../../config/s3';
37
+ import { validateFields } from '../../utils';
38
+ import getClient from './getClient';
39
+ const getDownloadSignedUrl = (key, opts, signingOpts, clientOpts) =>
40
+ __awaiter(void 0, void 0, void 0, function* () {
41
+ const input = validateFields({ key }, [
42
+ { key: 'key', type: 'string', required: true },
43
+ ]);
44
+ const client = getClient(clientOpts);
45
+ const commandInput = Object.assign(
46
+ {
47
+ Bucket:
48
+ (opts === null || opts === void 0 ? void 0 : opts.Bucket) ||
49
+ s3Config.bucket,
50
+ Key: input.key,
51
+ },
52
+ opts
53
+ );
54
+ const command = new GetObjectCommand(commandInput);
55
+ signingOpts = Object.assign({ expiresIn: 3600 }, signingOpts);
56
+ return getSignedUrl(client, command, signingOpts);
57
+ });
58
+ export default getDownloadSignedUrl;
@@ -0,0 +1,13 @@
1
+ import { HeadObjectCommandInput } from '@aws-sdk/client-s3';
2
+ import { ClientOptions } from '../../types/aws';
3
+ export type HeadObjectOptions = Omit<HeadObjectCommandInput, 'Key'> & {
4
+ Key?: string;
5
+ };
6
+ declare const getHeadObject: (key: string, opts?: HeadObjectOptions, clientOpts?: ClientOptions) => Promise<{
7
+ LastModified: Date | undefined;
8
+ ContentLength: number | undefined;
9
+ ETag: string | undefined;
10
+ ContentType: string | undefined;
11
+ Metadata: Record<string, string> | undefined;
12
+ }>;
13
+ export default getHeadObject;
@@ -0,0 +1,83 @@
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 { HeadObjectCommand } from '@aws-sdk/client-s3';
35
+ import s3Config from '../../config/s3';
36
+ import LesgoException from '../../exceptions/LesgoException';
37
+ import { logger, validateFields } from '../../utils';
38
+ import getClient from './getClient';
39
+ const FILE = 'lesgo.services.S3Service.getHeadObject';
40
+ const getHeadObject = (key, opts, clientOpts) =>
41
+ __awaiter(void 0, void 0, void 0, function* () {
42
+ const input = validateFields({ key }, [
43
+ { key: 'key', type: 'string', required: true },
44
+ ]);
45
+ const client = getClient(clientOpts);
46
+ const commandInput = Object.assign(
47
+ {
48
+ Bucket:
49
+ (opts === null || opts === void 0 ? void 0 : opts.Bucket) ||
50
+ s3Config.bucket,
51
+ Key: input.key,
52
+ },
53
+ opts
54
+ );
55
+ try {
56
+ const response = yield client.send(new HeadObjectCommand(commandInput));
57
+ const { LastModified, ContentLength, ETag, ContentType, Metadata } =
58
+ response;
59
+ logger.debug(`${FILE}::RESPONSE`, {
60
+ LastModified,
61
+ ContentLength,
62
+ ETag,
63
+ ContentType,
64
+ Metadata,
65
+ response,
66
+ commandInput,
67
+ });
68
+ return { LastModified, ContentLength, ETag, ContentType, Metadata };
69
+ } catch (error) {
70
+ throw new LesgoException(
71
+ 'Error occurred getting object metadata from S3 bucket',
72
+ `${FILE}::ERROR`,
73
+ 500,
74
+ {
75
+ error,
76
+ commandInput,
77
+ opts,
78
+ clientOpts,
79
+ }
80
+ );
81
+ }
82
+ });
83
+ export default getHeadObject;
@@ -0,0 +1,10 @@
1
+ /// <reference types="node" />
2
+ import { GetObjectCommandInput } from '@aws-sdk/client-s3';
3
+ import { ClientOptions } from '../../types/aws';
4
+ export interface GetObjectOptions extends Partial<Omit<GetObjectCommandInput, 'Key' | 'Bucket'>> {
5
+ Key?: string;
6
+ Bucket?: string;
7
+ }
8
+ export declare const streamToBuffer: (stream?: any) => Promise<Buffer>;
9
+ declare const getObject: (key: string, opts?: GetObjectOptions, clientOpts?: ClientOptions) => Promise<import("@aws-sdk/client-s3").GetObjectCommandOutput>;
10
+ export default getObject;
@@ -0,0 +1,89 @@
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 { GetObjectCommand } from '@aws-sdk/client-s3';
35
+ import { Readable } from 'stream';
36
+ import LesgoException from '../../exceptions/LesgoException';
37
+ import s3Config from '../../config/s3';
38
+ import { logger, validateFields } from '../../utils';
39
+ import getClient from './getClient';
40
+ const FILE = 'lesgo.services.S3Service.getObject';
41
+ export const streamToBuffer = stream =>
42
+ __awaiter(void 0, void 0, void 0, function* () {
43
+ if (!stream || !(stream instanceof Readable)) {
44
+ throw new LesgoException(
45
+ 'Data is not a readable stream',
46
+ `${FILE}::ERROR_NOT_READABLE_STREAM`
47
+ );
48
+ }
49
+ return new Promise((resolve, reject) => {
50
+ const chunks = [];
51
+ stream.on('data', chunk => chunks.push(chunk));
52
+ stream.on('error', reject);
53
+ stream.on('end', () => resolve(Buffer.concat(chunks)));
54
+ });
55
+ });
56
+ const getObject = (key, opts, clientOpts) =>
57
+ __awaiter(void 0, void 0, void 0, function* () {
58
+ const input = validateFields({ key }, [
59
+ { key: 'key', type: 'string', required: true },
60
+ ]);
61
+ const client = getClient(clientOpts);
62
+ const commandInput = Object.assign(
63
+ {
64
+ Bucket:
65
+ (opts === null || opts === void 0 ? void 0 : opts.Bucket) ||
66
+ s3Config.bucket,
67
+ Key: input.key,
68
+ },
69
+ opts
70
+ );
71
+ try {
72
+ const resp = yield client.send(new GetObjectCommand(commandInput));
73
+ logger.debug(`${FILE}::RESPONSE`, { commandInput });
74
+ return resp;
75
+ } catch (error) {
76
+ throw new LesgoException(
77
+ 'Error occurred getting object from S3 bucket',
78
+ `${FILE}::ERROR`,
79
+ 500,
80
+ {
81
+ error,
82
+ commandInput,
83
+ opts,
84
+ clientOpts,
85
+ }
86
+ );
87
+ }
88
+ });
89
+ export default getObject;
@@ -0,0 +1,7 @@
1
+ import { ClientOptions } from '../../types/aws';
2
+ import { PutObjectOptions } from './putObject';
3
+ export interface GetSignedUrlOptions {
4
+ expiresIn?: number;
5
+ }
6
+ declare const getUploadSignedUrl: (key: string, opts?: PutObjectOptions, signingOpts?: GetSignedUrlOptions, clientOpts?: ClientOptions) => Promise<string>;
7
+ export default getUploadSignedUrl;
@@ -0,0 +1,61 @@
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 { PutObjectCommand } from '@aws-sdk/client-s3';
35
+ import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
36
+ import { logger, validateFields } from '../../utils';
37
+ import s3Config from '../../config/s3';
38
+ import getClient from './getClient';
39
+ const FILE = 'lesgo.services.S3Service.getUploadSignedUrl';
40
+ const getUploadSignedUrl = (key, opts, signingOpts, clientOpts) =>
41
+ __awaiter(void 0, void 0, void 0, function* () {
42
+ const input = validateFields({ key }, [
43
+ { key: 'key', type: 'string', required: true },
44
+ ]);
45
+ const client = getClient(clientOpts);
46
+ const commandInput = Object.assign(
47
+ {
48
+ Bucket:
49
+ (opts === null || opts === void 0 ? void 0 : opts.Bucket) ||
50
+ s3Config.bucket,
51
+ Key: input.key,
52
+ },
53
+ opts
54
+ );
55
+ const command = new PutObjectCommand(commandInput);
56
+ signingOpts = Object.assign({ expiresIn: 3600 }, signingOpts);
57
+ const resp = yield getSignedUrl(client, command, signingOpts);
58
+ logger.debug(`${FILE}::RESPONSE`, { resp, commandInput, signingOpts });
59
+ return resp;
60
+ });
61
+ export default getUploadSignedUrl;
@@ -0,0 +1,6 @@
1
+ export { default as getClient } from './getClient';
2
+ export { default as getDownloadSignedUrl } from './getDownloadSignedUrl';
3
+ export { default as getHeadObject } from './getHeadObject';
4
+ export { default as getObject } from './getObject';
5
+ export { default as getUploadSignedUrl } from './getUploadSignedUrl';
6
+ export { default as putObject } from './putObject';
@@ -0,0 +1,6 @@
1
+ export { default as getClient } from './getClient';
2
+ export { default as getDownloadSignedUrl } from './getDownloadSignedUrl';
3
+ export { default as getHeadObject } from './getHeadObject';
4
+ export { default as getObject } from './getObject';
5
+ export { default as getUploadSignedUrl } from './getUploadSignedUrl';
6
+ export { default as putObject } from './putObject';
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ import { PutObjectCommandInput } from '@aws-sdk/client-s3';
3
+ import { ClientOptions } from '../../types/aws';
4
+ export interface PutObjectOptions extends Partial<Omit<PutObjectCommandInput, 'Key' | 'Bucket'>> {
5
+ Key?: string;
6
+ Bucket?: string;
7
+ }
8
+ declare const putObject: (key: string, file: Buffer | Uint8Array | Blob | string, opts?: PutObjectOptions, clientOpts?: ClientOptions) => Promise<import("@aws-sdk/client-s3").PutObjectCommandOutput>;
9
+ export default putObject;
@@ -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 { PutObjectCommand } from '@aws-sdk/client-s3';
35
+ import LesgoException from '../../exceptions/LesgoException';
36
+ import s3Config from '../../config/s3';
37
+ import { logger, validateFields } from '../../utils';
38
+ import getClient from './getClient';
39
+ const FILE = 'lesgo.services.S3Service.putObject';
40
+ const putObject = (key, file, opts, clientOpts) =>
41
+ __awaiter(void 0, void 0, void 0, function* () {
42
+ const input = validateFields({ key }, [
43
+ { key: 'key', type: 'string', required: true },
44
+ ]);
45
+ const client = getClient(clientOpts);
46
+ const commandInput = Object.assign(
47
+ {
48
+ Bucket:
49
+ (opts === null || opts === void 0 ? void 0 : opts.Bucket) ||
50
+ s3Config.bucket,
51
+ Key: input.key,
52
+ Body: file,
53
+ StorageClass:
54
+ (opts === null || opts === void 0 ? void 0 : opts.StorageClass) ||
55
+ 'STANDARD',
56
+ },
57
+ opts
58
+ );
59
+ try {
60
+ const response = yield client.send(new PutObjectCommand(commandInput));
61
+ logger.debug(`${FILE}::RESPONSE`, { response, commandInput });
62
+ return response;
63
+ } catch (error) {
64
+ throw new LesgoException(
65
+ 'Error occurred putting object to S3 bucket',
66
+ `${FILE}::ERROR`,
67
+ 500,
68
+ {
69
+ error,
70
+ commandInput,
71
+ opts,
72
+ clientOpts,
73
+ }
74
+ );
75
+ }
76
+ });
77
+ export default putObject;
@@ -0,0 +1,9 @@
1
+ import { DeleteMessageCommandInput } from '@aws-sdk/client-sqs';
2
+ import { ClientOptions } from '../../types/aws';
3
+ import { Queue } from './getQueueUrl';
4
+ export interface DeleteMessageOptions extends Partial<Omit<DeleteMessageCommandInput, 'QueueUrl' | 'ReceiptHandle'>> {
5
+ QueueUrl?: string;
6
+ ReceiptHandle?: string;
7
+ }
8
+ declare const deleteMessage: (queue: string | Queue, receiptHandle: string, opts?: DeleteMessageOptions, clientOpts?: ClientOptions) => Promise<void>;
9
+ export default deleteMessage;
@@ -0,0 +1,69 @@
1
+ var __awaiter =
2
+ (this && this.__awaiter) ||
3
+ function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P
6
+ ? value
7
+ : new P(function (resolve) {
8
+ resolve(value);
9
+ });
10
+ }
11
+ return new (P || (P = Promise))(function (resolve, reject) {
12
+ function fulfilled(value) {
13
+ try {
14
+ step(generator.next(value));
15
+ } catch (e) {
16
+ reject(e);
17
+ }
18
+ }
19
+ function rejected(value) {
20
+ try {
21
+ step(generator['throw'](value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ }
26
+ function step(result) {
27
+ result.done
28
+ ? resolve(result.value)
29
+ : adopt(result.value).then(fulfilled, rejected);
30
+ }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ import { DeleteMessageCommand } from '@aws-sdk/client-sqs';
35
+ import LesgoException from '../../exceptions/LesgoException';
36
+ import { logger, validateFields } from '../../utils';
37
+ import getClient from './getClient';
38
+ import getQueueUrl from './getQueueUrl';
39
+ const FILE = 'lesgo.services.SQSService.deleteMessage';
40
+ const deleteMessage = (queue, receiptHandle, opts, clientOpts) =>
41
+ __awaiter(void 0, void 0, void 0, function* () {
42
+ const queueUrl = getQueueUrl(queue);
43
+ const input = validateFields({ receiptHandle }, [
44
+ { key: 'receiptHandle', type: 'string', required: true },
45
+ ]);
46
+ const client = getClient(clientOpts);
47
+ const commandInput = Object.assign(
48
+ { QueueUrl: queueUrl, ReceiptHandle: input.receiptHandle },
49
+ opts
50
+ );
51
+ try {
52
+ yield client.send(new DeleteMessageCommand(commandInput));
53
+ logger.debug(`${FILE}::MESSAGE_DELETED_FROM_QUEUE`, {
54
+ commandInput,
55
+ });
56
+ } catch (error) {
57
+ throw new LesgoException(
58
+ 'Error occurred deleting message from queue',
59
+ `${FILE}::DELETE_MESSAGE_ERROR`,
60
+ 500,
61
+ {
62
+ error,
63
+ commandInput,
64
+ opts,
65
+ }
66
+ );
67
+ }
68
+ });
69
+ export default deleteMessage;
@@ -0,0 +1,9 @@
1
+ import { SendMessageCommandInput } from '@aws-sdk/client-sqs';
2
+ import { ClientOptions } from '../../types/aws';
3
+ import { Queue } from './getQueueUrl';
4
+ export interface DispatchOptions extends Partial<Omit<SendMessageCommandInput, 'QueueUrl' | 'MessageBody'>> {
5
+ QueueUrl?: string;
6
+ MessageBody?: string;
7
+ }
8
+ declare const dispatch: (payload: Record<any, any>, queue: string | Queue, opts?: DispatchOptions, clientOpts?: ClientOptions) => Promise<import("@aws-sdk/client-sqs").SendMessageCommandOutput>;
9
+ export default dispatch;