@nextage/nx-frame-be 1.0.29 → 1.0.33

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.
@@ -0,0 +1,19 @@
1
+ import { AWSBaseConfig, AWSS3Config } from './aws.interfaces';
2
+ export declare class AWSS3Manager {
3
+ private readonly config;
4
+ private readonly s3;
5
+ private readonly bucket;
6
+ private readonly baseUrl;
7
+ constructor({ bucket, baseUrl }: AWSS3Config | undefined, config: AWSBaseConfig);
8
+ /**
9
+ *
10
+ * @param contentType
11
+ * @param path
12
+ * @param filename
13
+ * @returns
14
+ */
15
+ getSignedUrl(contentType: string, path?: string, urlpath?: string, filename?: string): Promise<{
16
+ uploadUrl: string;
17
+ fileUrl: string;
18
+ }>;
19
+ }
@@ -0,0 +1,47 @@
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.AWSS3Manager = 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 common_1 = require("../common");
16
+ class AWSS3Manager {
17
+ constructor({ bucket, baseUrl } = { bucket: 'data' }, config) {
18
+ this.config = config || { region: 'eu-south-1' };
19
+ this.s3 = new client_s3_1.S3Client({ region: this.config.region, requestChecksumCalculation: 'WHEN_REQUIRED' });
20
+ this.bucket = bucket;
21
+ this.baseUrl = baseUrl !== null && baseUrl !== void 0 ? baseUrl : `https://${bucket}.s3.amazonaws.com`;
22
+ }
23
+ /**
24
+ *
25
+ * @param contentType
26
+ * @param path
27
+ * @param filename
28
+ * @returns
29
+ */
30
+ getSignedUrl(contentType_1) {
31
+ return __awaiter(this, arguments, void 0, function* (contentType, path = 'images', urlpath = '', filename) {
32
+ if (!filename)
33
+ filename = (0, common_1.uuid)();
34
+ const key = `${path}/${filename}`;
35
+ const command = new client_s3_1.PutObjectCommand({
36
+ Bucket: this.bucket,
37
+ Key: key,
38
+ ContentType: contentType,
39
+ });
40
+ // expires in 1 minute
41
+ const uploadUrl = yield (0, s3_request_presigner_1.getSignedUrl)(this.s3, command, { expiresIn: 60 });
42
+ const fileUrl = `${urlpath}/${filename}`;
43
+ return { uploadUrl, fileUrl };
44
+ });
45
+ }
46
+ }
47
+ exports.AWSS3Manager = AWSS3Manager;
@@ -1,5 +1,9 @@
1
1
  export interface AWSBaseConfig {
2
2
  region?: string;
3
+ credentials?: {
4
+ accessKeyId: string;
5
+ secretAccessKey: string;
6
+ };
3
7
  }
4
8
  export interface AWSClusterConfig {
5
9
  cluster: string;
@@ -37,3 +41,7 @@ export interface AWSQueueConfig {
37
41
  visibilityTimeout?: number;
38
42
  heartbeatInterval?: number;
39
43
  }
44
+ export interface AWSS3Config {
45
+ bucket: string;
46
+ baseUrl?: string;
47
+ }
@@ -1,4 +1,5 @@
1
1
  export * from './aws.interfaces';
2
2
  export * from './aws-cluster-manager';
3
3
  export * from './aws-email-manager';
4
+ export * from './aws-s3-manager';
4
5
  export * from './aws-queue-manager';
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./aws.interfaces"), exports);
18
18
  __exportStar(require("./aws-cluster-manager"), exports);
19
19
  __exportStar(require("./aws-email-manager"), exports);
20
+ __exportStar(require("./aws-s3-manager"), exports);
20
21
  __exportStar(require("./aws-queue-manager"), exports);
@@ -361,6 +361,13 @@ export declare function setAttr(object: any, path: string, value: any): any;
361
361
  * @param path
362
362
  */
363
363
  export declare function hasAttr(object: any, path: string): boolean;
364
+ /**
365
+ *
366
+ * @param obj
367
+ * @param prop
368
+ * @returns
369
+ */
370
+ export declare function hasDefinedAttr<T extends object>(obj: T, prop: string): boolean;
364
371
  /**
365
372
  *
366
373
  * @param value1
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.readFileSync = exports.sortBy = exports.deleteKey = exports.flattenArray = exports.getCtxUser = exports.forceGC = exports.logMemory = exports.logClassCtx = exports.uuid = exports.getDatePeriod = exports.getTimeValues = exports.getDateValues = exports.getDateDiff = exports.dateFormat = exports.toMoment = exports.toDate = exports.isValidDateStr = exports.toFilterDatePeriod = exports.parseTypedString = exports.capitalize = exports.jsonToStr = exports.strToJson = exports.dotObj = exports.dottedKeys = exports.percentDiff = exports.findDeep = exports.mergeArraysByKey = exports.hasKeys = exports.isEmpty = exports.containsArrayValue = exports.contains = exports.isEmail = exports.isBase64 = exports.isDefined = exports.isUndefined = exports.isNil = exports.isNotNull = exports.isNumber = exports.isString = exports.isBoolean = exports.isDate = exports.isFunction = exports.isObject = exports.baseComparatorReverse = exports.baseComparator = exports.randomString = exports.validateJwt = exports.generateJwt = exports.prodMode = exports.devMode = void 0;
16
- exports.validDataUrl = exports.getLastChildren = exports.getLastChild = exports.intersectArraysBy = exports.intersectArrays = exports.arrayToggle = exports.arrayPushUniq = exports.arrayPushRef = exports.addDirectoryToZip = exports.zipFolderStream = exports.zipFolder = exports.checkCommonPassword = exports.checkPasswordComplexity = exports.scheduleJobs = exports.scheduleJob = exports.parseUserAgent = exports.filterObject = exports.generateRandomBuffer = exports.generateRandomHex = exports.resizeBuffer = exports.initObjectWithProperty = exports.initObjectFromDotNotation = exports.chunkString = exports.encodeString = exports.isEqual = exports.hasAttr = exports.setAttr = exports.getAttr = exports.clone = exports.merge = exports.uniqBy = exports.union = void 0;
16
+ exports.validDataUrl = exports.getLastChildren = exports.getLastChild = exports.intersectArraysBy = exports.intersectArrays = exports.arrayToggle = exports.arrayPushUniq = exports.arrayPushRef = exports.addDirectoryToZip = exports.zipFolderStream = exports.zipFolder = exports.checkCommonPassword = exports.checkPasswordComplexity = exports.scheduleJobs = exports.scheduleJob = exports.parseUserAgent = exports.filterObject = exports.generateRandomBuffer = exports.generateRandomHex = exports.resizeBuffer = exports.initObjectWithProperty = exports.initObjectFromDotNotation = exports.chunkString = exports.encodeString = exports.isEqual = exports.hasDefinedAttr = exports.hasAttr = exports.setAttr = exports.getAttr = exports.clone = exports.merge = exports.uniqBy = exports.union = void 0;
17
17
  const lodash_1 = __importDefault(require("lodash"));
18
18
  const moment_1 = __importDefault(require("moment"));
19
19
  const fs_1 = __importDefault(require("fs"));
@@ -753,6 +753,16 @@ function hasAttr(object, path) {
753
753
  return lodash_1.default.has(object, path);
754
754
  }
755
755
  exports.hasAttr = hasAttr;
756
+ /**
757
+ *
758
+ * @param obj
759
+ * @param prop
760
+ * @returns
761
+ */
762
+ function hasDefinedAttr(obj, prop) {
763
+ return prop in obj && obj[prop] !== undefined;
764
+ }
765
+ exports.hasDefinedAttr = hasDefinedAttr;
756
766
  /**
757
767
  *
758
768
  * @param value1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextage/nx-frame-be",
3
- "version": "1.0.29",
3
+ "version": "1.0.33",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",
@@ -28,8 +28,10 @@
28
28
  "@apollo/server-plugin-landing-page-graphql-playground": "^4.0.1",
29
29
  "@apollo/subgraph": "^2.11.2",
30
30
  "@aws-sdk/client-ecs": "^3.592.0",
31
+ "@aws-sdk/client-s3": "^3.1017.0",
31
32
  "@aws-sdk/client-ses": "^3.592.0",
32
33
  "@aws-sdk/client-sqs": "^3.592.0",
34
+ "@aws-sdk/s3-request-presigner": "^3.1017.0",
33
35
  "@types/async": "^3.2.24",
34
36
  "@types/cookie-session": "^2.0.49",
35
37
  "@types/crypto-js": "^4.2.2",