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.
- package/README.md +5 -4
- package/bin/lesgo-scripts.sh +52 -7
- package/dist/config/app.d.ts +7 -0
- package/dist/config/app.js +9 -0
- package/dist/config/aws.d.ts +5 -0
- package/dist/config/aws.js +4 -0
- package/dist/config/basicAuth.d.ts +7 -0
- package/dist/config/basicAuth.js +8 -0
- package/dist/config/crypto.d.ts +10 -0
- package/dist/config/crypto.js +9 -0
- package/dist/config/dynamodb.d.ts +8 -0
- package/dist/config/dynamodb.js +14 -0
- package/dist/config/elasticache.d.ts +7 -0
- package/dist/config/elasticache.js +6 -0
- package/dist/config/index.d.ts +11 -0
- package/dist/config/index.js +11 -0
- package/dist/config/jwt.d.ts +12 -0
- package/dist/config/jwt.js +16 -0
- package/dist/config/rds.d.ts +12 -0
- package/dist/config/rds.js +13 -0
- package/dist/config/s3.d.ts +5 -0
- package/dist/config/s3.js +5 -0
- package/dist/config/secretsManager.d.ts +4 -0
- package/dist/config/secretsManager.js +4 -0
- package/dist/config/sqs.d.ts +9 -0
- package/dist/config/sqs.js +18 -0
- package/dist/exceptions/LesgoException.d.ts +6 -0
- package/{src → dist}/exceptions/LesgoException.js +5 -4
- package/dist/exceptions/index.d.ts +1 -0
- package/dist/exceptions/index.js +1 -0
- package/dist/middlewares/disconnectMiddleware.d.ts +8 -0
- package/dist/middlewares/disconnectMiddleware.js +78 -0
- package/dist/middlewares/httpMiddleware.d.ts +12 -0
- package/dist/middlewares/httpMiddleware.js +74 -0
- package/dist/middlewares/httpResponseMiddleware.d.ts +7 -0
- package/dist/middlewares/httpResponseMiddleware.js +128 -0
- package/dist/middlewares/index.d.ts +7 -0
- package/dist/middlewares/index.js +7 -0
- package/dist/middlewares/invokeCommandMiddleware.d.ts +12 -0
- package/dist/middlewares/invokeCommandMiddleware.js +70 -0
- package/dist/middlewares/sqsMiddleware.d.ts +10 -0
- package/dist/middlewares/sqsMiddleware.js +70 -0
- package/dist/middlewares/verifyBasicAuthMiddleware.d.ts +8 -0
- package/dist/middlewares/verifyBasicAuthMiddleware.js +59 -0
- package/dist/middlewares/verifyJwtMiddleware.d.ts +6 -0
- package/dist/middlewares/verifyJwtMiddleware.js +37 -0
- package/dist/services/DynamoDbService/deleteRecord.d.ts +8 -0
- package/dist/services/DynamoDbService/deleteRecord.js +69 -0
- package/dist/services/DynamoDbService/getClient.d.ts +7 -0
- package/dist/services/DynamoDbService/getClient.js +30 -0
- package/dist/services/DynamoDbService/getTableName.d.ts +2 -0
- package/dist/services/DynamoDbService/getTableName.js +15 -0
- package/dist/services/DynamoDbService/index.d.ts +6 -0
- package/dist/services/DynamoDbService/index.js +6 -0
- package/dist/services/DynamoDbService/putRecord.d.ts +8 -0
- package/dist/services/DynamoDbService/putRecord.js +64 -0
- package/dist/services/DynamoDbService/query.d.ts +7 -0
- package/dist/services/DynamoDbService/query.js +78 -0
- package/dist/services/DynamoDbService/scan.d.ts +7 -0
- package/dist/services/DynamoDbService/scan.js +60 -0
- package/dist/services/DynamoDbService/updateRecord.d.ts +9 -0
- package/dist/services/DynamoDbService/updateRecord.js +89 -0
- package/dist/services/ElastiCacheRedisService/deleteRedisCache.d.ts +3 -0
- package/dist/services/ElastiCacheRedisService/deleteRedisCache.js +62 -0
- package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.d.ts +11 -0
- package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.js +69 -0
- package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.d.ts +12 -0
- package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.js +114 -0
- package/dist/services/ElastiCacheRedisService/getRedisCache.d.ts +3 -0
- package/dist/services/ElastiCacheRedisService/getRedisCache.js +70 -0
- package/dist/services/ElastiCacheRedisService/index.d.ts +5 -0
- package/dist/services/ElastiCacheRedisService/index.js +5 -0
- package/dist/services/ElastiCacheRedisService/setRedisCache.d.ts +6 -0
- package/dist/services/ElastiCacheRedisService/setRedisCache.js +77 -0
- package/dist/services/JWTService/decodeJwt.d.ts +7 -0
- package/dist/services/JWTService/decodeJwt.js +9 -0
- package/dist/services/JWTService/getJwtSecret.d.ts +13 -0
- package/dist/services/JWTService/getJwtSecret.js +54 -0
- package/dist/services/JWTService/index.d.ts +2 -0
- package/dist/services/JWTService/index.js +2 -0
- package/dist/services/JWTService/sign.d.ts +3 -0
- package/dist/services/JWTService/sign.js +31 -0
- package/dist/services/JWTService/verify.d.ts +7 -0
- package/dist/services/JWTService/verify.js +61 -0
- package/dist/services/LoggerService.d.ts +46 -0
- package/{src → dist}/services/LoggerService.js +36 -60
- package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.d.ts +2 -0
- package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.js +60 -0
- package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.d.ts +8 -0
- package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.js +87 -0
- package/dist/services/RDSAuroraMySQLProxyService/index.d.ts +3 -0
- package/dist/services/RDSAuroraMySQLProxyService/index.js +3 -0
- package/dist/services/RDSAuroraMySQLProxyService/query.d.ts +4 -0
- package/dist/services/RDSAuroraMySQLProxyService/query.js +63 -0
- package/dist/services/S3Service/getClient.d.ts +4 -0
- package/dist/services/S3Service/getClient.js +28 -0
- package/dist/services/S3Service/getDownloadSignedUrl.d.ts +7 -0
- package/dist/services/S3Service/getDownloadSignedUrl.js +58 -0
- package/dist/services/S3Service/getHeadObject.d.ts +13 -0
- package/dist/services/S3Service/getHeadObject.js +83 -0
- package/dist/services/S3Service/getObject.d.ts +10 -0
- package/dist/services/S3Service/getObject.js +89 -0
- package/dist/services/S3Service/getUploadSignedUrl.d.ts +7 -0
- package/dist/services/S3Service/getUploadSignedUrl.js +61 -0
- package/dist/services/S3Service/index.d.ts +6 -0
- package/dist/services/S3Service/index.js +6 -0
- package/dist/services/S3Service/putObject.d.ts +9 -0
- package/dist/services/S3Service/putObject.js +77 -0
- package/dist/services/SQSService/deleteMessage.d.ts +9 -0
- package/dist/services/SQSService/deleteMessage.js +69 -0
- package/dist/services/SQSService/dispatch.d.ts +9 -0
- package/dist/services/SQSService/dispatch.js +71 -0
- package/dist/services/SQSService/getClient.d.ts +4 -0
- package/dist/services/SQSService/getClient.js +28 -0
- package/dist/services/SQSService/getQueueUrl.d.ts +7 -0
- package/dist/services/SQSService/getQueueUrl.js +25 -0
- package/dist/services/SQSService/index.d.ts +4 -0
- package/dist/services/SQSService/index.js +4 -0
- package/dist/services/SQSService/receiveMessages.d.ts +8 -0
- package/dist/services/SQSService/receiveMessages.js +65 -0
- package/dist/services/SecretsManagerService/getClient.d.ts +7 -0
- package/dist/services/SecretsManagerService/getClient.js +28 -0
- package/dist/services/SecretsManagerService/getSecretValue.d.ts +7 -0
- package/dist/services/SecretsManagerService/getSecretValue.js +65 -0
- package/dist/services/SecretsManagerService/index.d.ts +2 -0
- package/dist/services/SecretsManagerService/index.js +2 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.js +1 -0
- package/dist/types/aws.d.ts +8 -0
- package/dist/types/aws.js +1 -0
- package/dist/utils/cache/redis/deleteCache.d.ts +19 -0
- package/dist/utils/cache/redis/deleteCache.js +21 -0
- package/dist/utils/cache/redis/getCache.d.ts +22 -0
- package/dist/utils/cache/redis/getCache.js +24 -0
- package/dist/utils/cache/redis/getClient.d.ts +30 -0
- package/dist/utils/cache/redis/getClient.js +32 -0
- package/dist/utils/cache/redis/index.d.ts +4 -0
- package/dist/utils/cache/redis/index.js +4 -0
- package/dist/utils/cache/redis/setCache.d.ts +25 -0
- package/dist/utils/cache/redis/setCache.js +26 -0
- package/dist/utils/crypto/decrypt.d.ts +33 -0
- package/dist/utils/crypto/decrypt.js +59 -0
- package/dist/utils/crypto/encrypt.d.ts +31 -0
- package/dist/utils/crypto/encrypt.js +41 -0
- package/dist/utils/crypto/hash.d.ts +31 -0
- package/dist/utils/crypto/hash.js +56 -0
- package/dist/utils/crypto/index.d.ts +3 -0
- package/dist/utils/crypto/index.js +3 -0
- package/dist/utils/crypto/validateEncryptionFields.d.ts +19 -0
- package/dist/utils/crypto/validateEncryptionFields.js +71 -0
- package/dist/utils/db/mysql/proxy/disconnect.d.ts +2 -0
- package/dist/utils/db/mysql/proxy/disconnect.js +5 -0
- package/dist/utils/db/mysql/proxy/disconnectDb.d.ts +2 -0
- package/dist/utils/db/mysql/proxy/disconnectDb.js +5 -0
- package/dist/utils/db/mysql/proxy/getClient.d.ts +4 -0
- package/dist/utils/db/mysql/proxy/getClient.js +5 -0
- package/dist/utils/db/mysql/proxy/index.d.ts +3 -0
- package/dist/utils/db/mysql/proxy/index.js +3 -0
- package/dist/utils/db/mysql/proxy/query.d.ts +4 -0
- package/dist/utils/db/mysql/proxy/query.js +45 -0
- package/dist/utils/dynamodb/deleteRecord.d.ts +5 -0
- package/dist/utils/dynamodb/deleteRecord.js +39 -0
- package/dist/utils/dynamodb/getClient.d.ts +3 -0
- package/dist/utils/dynamodb/getClient.js +5 -0
- package/dist/utils/dynamodb/index.d.ts +6 -0
- package/dist/utils/dynamodb/index.js +6 -0
- package/dist/utils/dynamodb/putRecord.d.ts +4 -0
- package/dist/utils/dynamodb/putRecord.js +39 -0
- package/dist/utils/dynamodb/query.d.ts +5 -0
- package/dist/utils/dynamodb/query.js +52 -0
- package/dist/utils/dynamodb/scan.d.ts +4 -0
- package/dist/utils/dynamodb/scan.js +40 -0
- package/dist/utils/dynamodb/updateRecord.d.ts +5 -0
- package/dist/utils/dynamodb/updateRecord.js +53 -0
- package/dist/utils/formatUnixTimestamp.d.ts +8 -0
- package/dist/utils/formatUnixTimestamp.js +17 -0
- package/dist/utils/generateUid.d.ts +13 -0
- package/{src → dist}/utils/generateUid.js +9 -4
- package/dist/utils/getCurrentDatetime.d.ts +2 -0
- package/dist/utils/getCurrentDatetime.js +4 -0
- package/dist/utils/getCurrentTimestamp.d.ts +7 -0
- package/dist/utils/getCurrentTimestamp.js +9 -0
- package/dist/utils/getJwtSubFromAuthHeader.d.ts +9 -0
- package/dist/utils/getJwtSubFromAuthHeader.js +24 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/isDecimal.d.ts +8 -0
- package/dist/utils/isDecimal.js +9 -0
- package/dist/utils/isEmail.d.ts +9 -0
- package/{src → dist}/utils/isEmail.js +9 -4
- package/dist/utils/isEmpty.d.ts +8 -0
- package/dist/utils/isEmpty.js +19 -0
- package/dist/utils/jwt/index.d.ts +2 -0
- package/dist/utils/jwt/index.js +2 -0
- package/dist/utils/jwt/sign.d.ts +3 -0
- package/dist/utils/jwt/sign.js +5 -0
- package/dist/utils/jwt/verify.d.ts +3 -0
- package/dist/utils/jwt/verify.js +12 -0
- package/dist/utils/logger.d.ts +20 -0
- package/dist/utils/logger.js +38 -0
- package/dist/utils/s3/getClient.d.ts +3 -0
- package/dist/utils/s3/getClient.js +5 -0
- package/dist/utils/s3/getDownloadSignedUrl.d.ts +5 -0
- package/dist/utils/s3/getDownloadSignedUrl.js +39 -0
- package/dist/utils/s3/getHeadObject.d.ts +10 -0
- package/dist/utils/s3/getHeadObject.js +39 -0
- package/dist/utils/s3/getObject.d.ts +13 -0
- package/dist/utils/s3/getObject.js +51 -0
- package/dist/utils/s3/getUploadSignedUrl.d.ts +5 -0
- package/dist/utils/s3/getUploadSignedUrl.js +39 -0
- package/dist/utils/s3/index.d.ts +6 -0
- package/dist/utils/s3/index.js +6 -0
- package/dist/utils/s3/putObject.d.ts +5 -0
- package/dist/utils/s3/putObject.js +39 -0
- package/dist/utils/secretsmanager/getClient.d.ts +3 -0
- package/dist/utils/secretsmanager/getClient.js +5 -0
- package/dist/utils/secretsmanager/getSecretValue.d.ts +4 -0
- package/dist/utils/secretsmanager/getSecretValue.js +68 -0
- package/dist/utils/secretsmanager/index.d.ts +2 -0
- package/dist/utils/secretsmanager/index.js +2 -0
- package/dist/utils/sqs/deleteMessage.d.ts +5 -0
- package/dist/utils/sqs/deleteMessage.js +39 -0
- package/dist/utils/sqs/dispatch.d.ts +5 -0
- package/dist/utils/sqs/dispatch.js +39 -0
- package/dist/utils/sqs/getClient.d.ts +3 -0
- package/dist/utils/sqs/getClient.js +5 -0
- package/dist/utils/sqs/index.d.ts +4 -0
- package/dist/utils/sqs/index.js +4 -0
- package/dist/utils/sqs/receiveMessages.d.ts +5 -0
- package/dist/utils/sqs/receiveMessages.js +39 -0
- package/dist/utils/validateFields.d.ts +22 -0
- package/{src → dist}/utils/validateFields.js +13 -19
- package/package.json +145 -34
- package/CHANGELOG.md +0 -9
- package/src/exceptions/__tests__/LesgoException.spec.js +0 -24
- package/src/exceptions/index.js +0 -4
- package/src/index.js +0 -4
- package/src/middlewares/__mocks__/ValidationErrorException.js +0 -18
- package/src/middlewares/__tests__/basicAuthMiddleware.spec.js +0 -225
- package/src/middlewares/__tests__/clientAuthMiddleware.spec.js +0 -137
- package/src/middlewares/__tests__/errorHttpResponseMiddleware.spec.js +0 -190
- package/src/middlewares/__tests__/gzipHttpResponse.spec.js +0 -185
- package/src/middlewares/__tests__/httpNoOutputMiddleware.spec.js +0 -199
- package/src/middlewares/__tests__/normalizeHttpRequestMiddleware.spec.js +0 -181
- package/src/middlewares/__tests__/normalizeSQSMessageMiddleware.spec.js +0 -120
- package/src/middlewares/__tests__/serverAuthMiddleware.spec.js +0 -170
- package/src/middlewares/__tests__/successHttpResponseMiddleware.spec.js +0 -159
- package/src/middlewares/__tests__/verifyJwtMiddleware.spec.js +0 -222
- package/src/middlewares/basicAuthMiddleware.js +0 -145
- package/src/middlewares/clientAuthMiddleware.js +0 -82
- package/src/middlewares/errorHttpResponseMiddleware.js +0 -99
- package/src/middlewares/gzipHttpResponse.js +0 -98
- package/src/middlewares/httpMiddleware.js +0 -19
- package/src/middlewares/httpNoOutputMiddleware.js +0 -87
- package/src/middlewares/index.js +0 -15
- package/src/middlewares/normalizeHttpRequestMiddleware.js +0 -101
- package/src/middlewares/normalizeSQSMessageMiddleware.js +0 -67
- package/src/middlewares/serverAuthMiddleware.js +0 -29
- package/src/middlewares/successHttpResponseMiddleware.js +0 -83
- package/src/middlewares/verifyJwtMiddleware.js +0 -62
- package/src/services/AuroraDbRDSProxyService.js +0 -182
- package/src/services/AuroraDbService.js +0 -111
- package/src/services/DynamoDbService.js +0 -177
- package/src/services/ElastiCacheService.js +0 -17
- package/src/services/ElasticsearchService.js +0 -181
- package/src/services/FirebaseAdminService.js +0 -108
- package/src/services/JwtService.js +0 -52
- package/src/services/S3Service.js +0 -59
- package/src/services/SQSService.js +0 -65
- package/src/services/__tests__/AuroraDbRDSProxyService.spec.js +0 -278
- package/src/services/__tests__/AuroraDbService.spec.js +0 -211
- package/src/services/__tests__/AwsElasticsearchConnection.spec.js +0 -89
- package/src/services/__tests__/DynamoDbService.spec.js +0 -314
- package/src/services/__tests__/ElasticsearchService.spec.js +0 -201
- package/src/services/__tests__/FirebaseAdminService.spec.js +0 -356
- package/src/services/__tests__/JwtService.spec.js +0 -35
- package/src/services/__tests__/LengthAwarePaginator.spec.js +0 -223
- package/src/services/__tests__/LoggerService.spec.js +0 -252
- package/src/services/__tests__/Paginator.spec.js +0 -383
- package/src/services/__tests__/S3Service.spec.js +0 -55
- package/src/services/__tests__/SQSService.spec.js +0 -47
- package/src/services/__tests__/SignedRequest.spec.js +0 -103
- package/src/services/aws/AwsElasticsearchConnection.js +0 -59
- package/src/services/aws/SignedRequest.js +0 -158
- package/src/services/index.js +0 -19
- package/src/services/pagination/LengthAwarePaginator.js +0 -49
- package/src/services/pagination/Paginator.js +0 -260
- package/src/utils/__mocks__/db.js +0 -109
- package/src/utils/__tests__/cache.spec.js +0 -131
- package/src/utils/__tests__/crypto.spec.js +0 -122
- package/src/utils/__tests__/db.spec.js +0 -70
- package/src/utils/__tests__/dynamodb.spec.js +0 -27
- package/src/utils/__tests__/elasticsearch.spec.js +0 -43
- package/src/utils/__tests__/generateUid.spec.js +0 -36
- package/src/utils/__tests__/getJwtSubFromAuthHeader.spec.js +0 -20
- package/src/utils/__tests__/isDecimal.spec.js +0 -12
- package/src/utils/__tests__/isEmail.spec.js +0 -28
- package/src/utils/__tests__/isEmpty.spec.js +0 -31
- package/src/utils/__tests__/logger.spec.js +0 -11
- package/src/utils/__tests__/objectStore.spec.js +0 -67
- package/src/utils/__tests__/prepSQLInsertParams.spec.js +0 -46
- package/src/utils/__tests__/prepSQLUpdateParams.spec.js +0 -36
- package/src/utils/__tests__/queue.spec.js +0 -54
- package/src/utils/__tests__/validateFields.spec.js +0 -374
- package/src/utils/cache.js +0 -215
- package/src/utils/crypto.js +0 -77
- package/src/utils/db.js +0 -17
- package/src/utils/dynamodb.js +0 -6
- package/src/utils/elasticsearch.js +0 -20
- package/src/utils/getJwtSubFromAuthHeader.js +0 -18
- package/src/utils/index.js +0 -26
- package/src/utils/isDecimal.js +0 -2
- package/src/utils/isEmpty.js +0 -6
- package/src/utils/logger.js +0 -25
- package/src/utils/objectStore.js +0 -11
- package/src/utils/prepSQLInsertParams.js +0 -21
- package/src/utils/prepSQLUpdateParams.js +0 -25
- 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,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;
|