quidproquo-actionprocessor-awslambda 0.0.169 → 0.0.171
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/lib/commonjs/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.d.ts +6 -0
- package/lib/commonjs/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.js +30 -0
- package/lib/commonjs/getActionProcessor/core/file/index.d.ts +1 -0
- package/lib/commonjs/getActionProcessor/core/file/index.js +2 -1
- package/lib/commonjs/logic/createAwsClient.js +1 -2
- package/lib/commonjs/logic/dynamo/putItem.d.ts +1 -1
- package/lib/commonjs/logic/dynamo/qpqDynamoOrm/getDynamoTableIndexByConfigAndQuery.d.ts +1 -1
- package/lib/commonjs/logic/s3/generatePresignedUrl.d.ts +1 -0
- package/lib/commonjs/logic/s3/generatePresignedUrl.js +32 -0
- package/package.json +6 -5
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { QPQConfig } from 'quidproquo-core';
|
|
2
|
+
import { FileGenerateTemporarySecureUrlActionProcessor } from 'quidproquo-core';
|
|
3
|
+
declare const _default: (qpqConfig: QPQConfig) => {
|
|
4
|
+
"@quidproquo-core/File/GenerateTemporarySecureUrl": FileGenerateTemporarySecureUrlActionProcessor;
|
|
5
|
+
};
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const quidproquo_core_1 = require("quidproquo-core");
|
|
13
|
+
const quidproquo_core_2 = require("quidproquo-core");
|
|
14
|
+
const generatePresignedUrl_1 = require("../../../logic/s3/generatePresignedUrl");
|
|
15
|
+
const utils_1 = require("./utils");
|
|
16
|
+
const getProcessFileGenerateTemporarySecureUrl = (qpqConfig) => {
|
|
17
|
+
return ({ drive, filepath, expirationMs }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
try {
|
|
19
|
+
const s3BucketName = (0, utils_1.resolveStorageDriveBucketName)(drive, qpqConfig);
|
|
20
|
+
const url = yield (0, generatePresignedUrl_1.generatePresignedUrl)(s3BucketName, filepath, quidproquo_core_1.qpqCoreUtils.getApplicationModuleDeployRegion(qpqConfig), expirationMs);
|
|
21
|
+
return (0, quidproquo_core_2.actionResult)(url);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.ErrorTypeEnum.GenericError, 'Unable to generate temporary secure URL', error);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
exports.default = (qpqConfig) => ({
|
|
29
|
+
[quidproquo_core_2.FileActionType.GenerateTemporarySecureUrl]: getProcessFileGenerateTemporarySecureUrl(qpqConfig),
|
|
30
|
+
});
|
|
@@ -5,6 +5,7 @@ declare const _default: (qpqConfig: QPQConfig) => {
|
|
|
5
5
|
"@quidproquo-core/File/WriteTextContents": import("quidproquo-core").FileWriteTextContentsActionProcessor;
|
|
6
6
|
"@quidproquo-core/File/ReadTextContents": import("quidproquo-core").FileReadTextContentsActionProcessor;
|
|
7
7
|
"@quidproquo-core/File/ListDirectory": import("quidproquo-core").FileListDirectoryActionProcessor;
|
|
8
|
+
"@quidproquo-core/File/GenerateTemporarySecureUrl": import("quidproquo-core").FileGenerateTemporarySecureUrlActionProcessor;
|
|
8
9
|
"@quidproquo-core/File/Exists": import("quidproquo-core").FileExistsActionProcessor;
|
|
9
10
|
"@quidproquo-core/File/Delete": import("quidproquo-core").FileDeleteActionProcessor;
|
|
10
11
|
};
|
|
@@ -5,9 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const getFileDeleteActionProcessor_1 = __importDefault(require("./getFileDeleteActionProcessor"));
|
|
7
7
|
const getFileExistsActionProcessor_1 = __importDefault(require("./getFileExistsActionProcessor"));
|
|
8
|
+
const getFileGenerateTemporarySecureUrlActionProcessor_1 = __importDefault(require("./getFileGenerateTemporarySecureUrlActionProcessor"));
|
|
8
9
|
const getFileListDirectoryActionProcessor_1 = __importDefault(require("./getFileListDirectoryActionProcessor"));
|
|
9
10
|
const getFileReadTextContentsActionProcessor_1 = __importDefault(require("./getFileReadTextContentsActionProcessor"));
|
|
10
11
|
const getFileWriteTextContentsActionProcessor_1 = __importDefault(require("./getFileWriteTextContentsActionProcessor"));
|
|
11
12
|
const getFileReadBinaryContentsActionProcessor_1 = __importDefault(require("./getFileReadBinaryContentsActionProcessor"));
|
|
12
13
|
const getFileWriteBinaryContentsActionProcessor_1 = __importDefault(require("./getFileWriteBinaryContentsActionProcessor"));
|
|
13
|
-
exports.default = (qpqConfig) => (Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (0, getFileDeleteActionProcessor_1.default)(qpqConfig)), (0, getFileExistsActionProcessor_1.default)(qpqConfig)), (0, getFileListDirectoryActionProcessor_1.default)(qpqConfig)), (0, getFileReadTextContentsActionProcessor_1.default)(qpqConfig)), (0, getFileWriteTextContentsActionProcessor_1.default)(qpqConfig)), (0, getFileReadBinaryContentsActionProcessor_1.default)(qpqConfig)), (0, getFileWriteBinaryContentsActionProcessor_1.default)(qpqConfig)));
|
|
14
|
+
exports.default = (qpqConfig) => (Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (0, getFileDeleteActionProcessor_1.default)(qpqConfig)), (0, getFileExistsActionProcessor_1.default)(qpqConfig)), (0, getFileGenerateTemporarySecureUrlActionProcessor_1.default)(qpqConfig)), (0, getFileListDirectoryActionProcessor_1.default)(qpqConfig)), (0, getFileReadTextContentsActionProcessor_1.default)(qpqConfig)), (0, getFileWriteTextContentsActionProcessor_1.default)(qpqConfig)), (0, getFileReadBinaryContentsActionProcessor_1.default)(qpqConfig)), (0, getFileWriteBinaryContentsActionProcessor_1.default)(qpqConfig)));
|
|
@@ -28,12 +28,11 @@ function createAwsClient(ClientClass, args) {
|
|
|
28
28
|
const originalSend = newClient.send;
|
|
29
29
|
newClient.send = function (...sendArgs) {
|
|
30
30
|
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
-
const paramsText = JSON.stringify(sendArgs);
|
|
32
31
|
try {
|
|
33
32
|
return yield originalSend.apply(this, sendArgs);
|
|
34
33
|
}
|
|
35
34
|
catch (error) {
|
|
36
|
-
|
|
35
|
+
console.log(ClientClass.name || 'aws client', args, 'send args', sendArgs, 'error', error.message);
|
|
37
36
|
throw error;
|
|
38
37
|
}
|
|
39
38
|
});
|
|
@@ -2,4 +2,4 @@ import { KvsKey } from 'quidproquo-core';
|
|
|
2
2
|
export interface PutItemOptions {
|
|
3
3
|
expires?: number;
|
|
4
4
|
}
|
|
5
|
-
export declare function putItem<Item>(tableName: string, item: Item, attributes: KvsKey[], options: PutItemOptions, region: string): Promise<void>;
|
|
5
|
+
export declare function putItem<Item, T extends object = any>(tableName: string, item: Item, attributes: KvsKey[], options: PutItemOptions, region: string): Promise<void>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { KeyValueStoreQPQConfigSetting, KvsQueryOperation } from 'quidproquo-core';
|
|
2
|
-
export declare const getDynamoTableIndexByConfigAndQuery: (setting: KeyValueStoreQPQConfigSetting, query: KvsQueryOperation) => string | undefined;
|
|
2
|
+
export declare const getDynamoTableIndexByConfigAndQuery: <T extends object = any>(setting: KeyValueStoreQPQConfigSetting, query: KvsQueryOperation) => string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const generatePresignedUrl: (bucketName: string, objectKey: string, region: string, expirationMs: number) => Promise<string>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.generatePresignedUrl = void 0;
|
|
13
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
14
|
+
const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
|
|
15
|
+
const createAwsClient_1 = require("../createAwsClient");
|
|
16
|
+
const generatePresignedUrl = (bucketName, objectKey, region, expirationMs) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
+
const s3Client = (0, createAwsClient_1.createAwsClient)(client_s3_1.S3Client, { region });
|
|
18
|
+
// Define the command for getting an object, which will be presigned
|
|
19
|
+
const getObjectCommand = new client_s3_1.GetObjectCommand({
|
|
20
|
+
Bucket: bucketName,
|
|
21
|
+
Key: objectKey,
|
|
22
|
+
});
|
|
23
|
+
try {
|
|
24
|
+
const url = yield (0, s3_request_presigner_1.getSignedUrl)(s3Client, getObjectCommand, { expiresIn: expirationMs / 1000 });
|
|
25
|
+
return url;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
console.error('Error generating presigned URL', error);
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
exports.generatePresignedUrl = generatePresignedUrl;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quidproquo-actionprocessor-awslambda",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.171",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./lib/commonjs/index.js",
|
|
6
6
|
"types": "./lib/commonjs/index.d.ts",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"@aws-sdk/client-sns": "^3.379.1",
|
|
39
39
|
"@aws-sdk/client-sqs": "^3.379.1",
|
|
40
40
|
"@aws-sdk/client-ssm": "^3.379.1",
|
|
41
|
+
"@aws-sdk/s3-request-presigner": "^3.379.1",
|
|
41
42
|
"aws-jwt-verify": "^3.4.0",
|
|
42
43
|
"aws-sdk": "^2.1322.0",
|
|
43
44
|
"busboy": "^1.6.0",
|
|
@@ -46,9 +47,9 @@
|
|
|
46
47
|
"lodash": "^4.17.21",
|
|
47
48
|
"node-cache": "^5.1.2",
|
|
48
49
|
"node-match-path": "^0.6.3",
|
|
49
|
-
"quidproquo-config-aws": "0.0.
|
|
50
|
-
"quidproquo-core": "0.0.
|
|
51
|
-
"quidproquo-webserver": "0.0.
|
|
50
|
+
"quidproquo-config-aws": "0.0.171",
|
|
51
|
+
"quidproquo-core": "0.0.171",
|
|
52
|
+
"quidproquo-webserver": "0.0.171"
|
|
52
53
|
},
|
|
53
54
|
"devDependencies": {
|
|
54
55
|
"@types/aws-lambda": "^8.10.109",
|
|
@@ -56,7 +57,7 @@
|
|
|
56
57
|
"@types/jsonwebtoken": "^9.0.2",
|
|
57
58
|
"@types/lodash": "^4.14.194",
|
|
58
59
|
"@types/node": "^18.11.9",
|
|
59
|
-
"quidproquo-tsconfig": "0.0.
|
|
60
|
+
"quidproquo-tsconfig": "0.0.171",
|
|
60
61
|
"typescript": "^4.9.3"
|
|
61
62
|
}
|
|
62
63
|
}
|