@slickteam/nestjs-cellar 2.2.4 → 2.2.6

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,12 @@
1
+ export interface CellarBucketObjectListContentItem {
2
+ name: string;
3
+ lastModified: Date | undefined;
4
+ eTag: string;
5
+ size: number;
6
+ storageClass: string;
7
+ }
8
+ export interface CellarUploadFile {
9
+ buffer: Buffer;
10
+ mimetype: string;
11
+ originalname: string;
12
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=cellar.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cellar.interface.js","sourceRoot":"","sources":["../../src/cellar.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { DeleteObjectCommandOutput, GetObjectCommandOutput, ObjectCannedACL, PutObjectCommandOutput, S3Client } from '@aws-sdk/client-s3';
2
+ import { ConfigService } from '@nestjs/config';
3
+ import { CellarBucketObjectListContentItem, CellarUploadFile } from './cellar.interface';
4
+ export declare class CellarService {
5
+ private configService;
6
+ readonly timeoutSignedUrl: number;
7
+ readonly s3EndPoint: string;
8
+ readonly s3Client: S3Client;
9
+ constructor(configService: ConfigService);
10
+ listObjectsByBucketName(bucketName: string): Promise<CellarBucketObjectListContentItem[]>;
11
+ uploadFile(bucketName: string, file: CellarUploadFile, acl?: ObjectCannedACL): Promise<PutObjectCommandOutput>;
12
+ getFile(bucketName: string, fileName: string): Promise<GetObjectCommandOutput>;
13
+ deleteFile(bucketName: string, fileName: string): Promise<DeleteObjectCommandOutput>;
14
+ fileExists(bucketName: string, fileName: string): Promise<boolean>;
15
+ getSignedUrl(bucketName: string, fileName: string): Promise<string>;
16
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CellarService = 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("@nestjs/common");
16
+ const config_1 = require("@nestjs/config");
17
+ let CellarService = class CellarService {
18
+ configService;
19
+ timeoutSignedUrl;
20
+ s3EndPoint;
21
+ s3Client;
22
+ constructor(configService) {
23
+ this.configService = configService;
24
+ this.s3EndPoint = `https://${this.configService.getOrThrow('CELLAR_HOST')}`;
25
+ this.timeoutSignedUrl = this.configService.get('CELLAR_TIMEOUT_SIGNED_URL') ?? 3600;
26
+ this.s3Client = new client_s3_1.S3Client({
27
+ endpoint: this.s3EndPoint,
28
+ region: this.configService.get('CELLAR_REGION') ?? 'fr',
29
+ credentials: {
30
+ accessKeyId: this.configService.getOrThrow('CELLAR_KEY_ID'),
31
+ secretAccessKey: this.configService.getOrThrow('CELLAR_KEY_SECRET'),
32
+ },
33
+ });
34
+ }
35
+ async listObjectsByBucketName(bucketName) {
36
+ const result = await this.s3Client.send(new client_s3_1.ListObjectsV2Command({ Bucket: bucketName }));
37
+ return (result.Contents?.map((object) => ({
38
+ name: object.Key ?? '',
39
+ lastModified: object.LastModified,
40
+ eTag: object.ETag ?? '',
41
+ size: object.Size ?? 0,
42
+ storageClass: object.StorageClass ?? '',
43
+ })) ?? []);
44
+ }
45
+ async uploadFile(bucketName, file, acl = 'bucket-owner-full-control') {
46
+ return this.s3Client.send(new client_s3_1.PutObjectCommand({
47
+ Bucket: bucketName,
48
+ Key: file.originalname,
49
+ Body: file.buffer,
50
+ ACL: acl,
51
+ ContentType: file.mimetype,
52
+ }));
53
+ }
54
+ async getFile(bucketName, fileName) {
55
+ return this.s3Client.send(new client_s3_1.GetObjectCommand({ Bucket: bucketName, Key: fileName }));
56
+ }
57
+ async deleteFile(bucketName, fileName) {
58
+ return this.s3Client.send(new client_s3_1.DeleteObjectCommand({ Bucket: bucketName, Key: fileName }));
59
+ }
60
+ async fileExists(bucketName, fileName) {
61
+ const result = await this.s3Client.send(new client_s3_1.HeadObjectCommand({ Bucket: bucketName, Key: fileName }));
62
+ const statusCode = result.$metadata.httpStatusCode ?? 500;
63
+ return statusCode >= 200 && statusCode < 400;
64
+ }
65
+ async getSignedUrl(bucketName, fileName) {
66
+ const command = new client_s3_1.GetObjectCommand({ Bucket: bucketName, Key: fileName });
67
+ return (0, s3_request_presigner_1.getSignedUrl)(this.s3Client, command, { expiresIn: this.timeoutSignedUrl });
68
+ }
69
+ };
70
+ exports.CellarService = CellarService;
71
+ exports.CellarService = CellarService = __decorate([
72
+ (0, common_1.Injectable)(),
73
+ __metadata("design:paramtypes", [config_1.ConfigService])
74
+ ], CellarService);
75
+ //# sourceMappingURL=cellar.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cellar.service.js","sourceRoot":"","sources":["../../src/cellar.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { CellarBucketObjectListContentItem, CellarUploadFile } from './cellar.interface';
2
+ import { CellarService } from './cellar.service';
3
+ declare class CellarModule {
4
+ }
5
+ export { CellarModule, CellarService, CellarBucketObjectListContentItem, CellarUploadFile };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CellarService = exports.CellarModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const cellar_service_1 = require("./cellar.service");
12
+ Object.defineProperty(exports, "CellarService", { enumerable: true, get: function () { return cellar_service_1.CellarService; } });
13
+ let CellarModule = class CellarModule {
14
+ };
15
+ exports.CellarModule = CellarModule;
16
+ exports.CellarModule = CellarModule = __decorate([
17
+ (0, common_1.Module)({
18
+ providers: [cellar_service_1.CellarService],
19
+ exports: [cellar_service_1.CellarService],
20
+ })
21
+ ], CellarModule);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AAGxC,qDAAiD;AAQ1B,8FARd,8BAAa,OAQc;AAFpC,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAEZ,oCAAY;uBAFf,YAAY;IAJjB,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,8BAAa,CAAC;QAC1B,OAAO,EAAE,CAAC,8BAAa,CAAC;KACzB,CAAC;GACI,YAAY,CAAG"}