@zola_do/seaweed 0.1.9

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,17 @@
1
+ import { NotFoundException } from '@nestjs/common';
2
+ export declare class FileNotFoundException extends NotFoundException {
3
+ message: string;
4
+ constructor(message: string);
5
+ }
6
+ export declare class FileUploadException {
7
+ message: string;
8
+ constructor(message: string);
9
+ }
10
+ export declare class FileDownloadException {
11
+ message: string;
12
+ constructor(message: string);
13
+ }
14
+ export declare class FileDeleteException {
15
+ message: string;
16
+ constructor(message: string);
17
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileDeleteException = exports.FileDownloadException = exports.FileUploadException = exports.FileNotFoundException = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ class FileNotFoundException extends common_1.NotFoundException {
6
+ constructor(message) {
7
+ super(`File ${message} not found`);
8
+ this.message = message;
9
+ }
10
+ }
11
+ exports.FileNotFoundException = FileNotFoundException;
12
+ class FileUploadException {
13
+ constructor(message) {
14
+ this.message = message;
15
+ }
16
+ }
17
+ exports.FileUploadException = FileUploadException;
18
+ class FileDownloadException {
19
+ constructor(message) {
20
+ this.message = message;
21
+ }
22
+ }
23
+ exports.FileDownloadException = FileDownloadException;
24
+ class FileDeleteException {
25
+ constructor(message) {
26
+ this.message = message;
27
+ }
28
+ }
29
+ exports.FileDeleteException = FileDeleteException;
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exceptions/index.ts"],"names":[],"mappings":";;;AAAA,2CAAmD;AAEnD,MAAa,qBAAsB,SAAQ,0BAAiB;IAC1D,YAAmB,OAAe;QAChC,KAAK,CAAC,QAAQ,OAAO,YAAY,CAAC,CAAC;QADlB,YAAO,GAAP,OAAO,CAAQ;IAElC,CAAC;CACF;AAJD,sDAIC;AAED,MAAa,mBAAmB;IAC9B,YAAmB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;CACvC;AAFD,kDAEC;AAED,MAAa,qBAAqB;IAChC,YAAmB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;CACvC;AAFD,sDAEC;AAED,MAAa,mBAAmB;IAC9B,YAAmB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;CACvC;AAFD,kDAEC"}
@@ -0,0 +1,4 @@
1
+ export * from './storage.module';
2
+ export * from './types';
3
+ export * from './services/storage.service';
4
+ export * from './exceptions';
package/dist/index.js ADDED
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./storage.module"), exports);
18
+ __exportStar(require("./types"), exports);
19
+ __exportStar(require("./services/storage.service"), exports);
20
+ __exportStar(require("./exceptions"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,0CAAwB;AACxB,6DAA2C;AAC3C,+CAA6B"}
@@ -0,0 +1,11 @@
1
+ import { S3Client } from '@aws-sdk/client-s3';
2
+ import { S3 } from '../types';
3
+ export declare class AwsS3 extends S3 {
4
+ private readonly s3;
5
+ constructor(s3: S3Client);
6
+ presignedPutObject(bucketName: string, objectName: string, contentType: string, duration: number): Promise<string>;
7
+ presignedGetObject(bucketName: string, objectName: string, contentType: string, duration: number): Promise<string>;
8
+ deleteObject(bucketName: string, objectName: string): Promise<void>;
9
+ getObject(bucketName: string, objectName: string): Promise<any>;
10
+ putObject(bucketName: string, objectName: string, data: Buffer): Promise<void>;
11
+ }
@@ -0,0 +1,84 @@
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.AwsS3 = 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 types_1 = require("../types");
17
+ const exceptions_1 = require("../exceptions");
18
+ let AwsS3 = class AwsS3 extends types_1.S3 {
19
+ constructor(s3) {
20
+ super();
21
+ this.s3 = s3;
22
+ }
23
+ async presignedPutObject(bucketName, objectName, contentType, duration) {
24
+ const command = new client_s3_1.PutObjectCommand({
25
+ Bucket: bucketName ? bucketName : '',
26
+ Key: objectName,
27
+ ContentType: contentType,
28
+ });
29
+ return await (0, s3_request_presigner_1.getSignedUrl)(this.s3, command, {
30
+ expiresIn: duration,
31
+ signingDate: new Date(),
32
+ });
33
+ }
34
+ async presignedGetObject(bucketName, objectName, contentType, duration) {
35
+ const command = new client_s3_1.GetObjectCommand({
36
+ Bucket: bucketName ? bucketName : '',
37
+ Key: objectName,
38
+ });
39
+ try {
40
+ return await (0, s3_request_presigner_1.getSignedUrl)(this.s3, command, { expiresIn: duration });
41
+ }
42
+ catch (e) {
43
+ if (e instanceof client_s3_1.NoSuchKey) {
44
+ throw new exceptions_1.FileNotFoundException(objectName);
45
+ }
46
+ }
47
+ }
48
+ async deleteObject(bucketName, objectName) {
49
+ const command = new client_s3_1.DeleteObjectCommand({
50
+ Bucket: bucketName ? bucketName : '',
51
+ Key: objectName,
52
+ });
53
+ await this.s3.send(command);
54
+ }
55
+ async getObject(bucketName, objectName) {
56
+ const command = new client_s3_1.GetObjectCommand({
57
+ Bucket: bucketName ? bucketName : '',
58
+ Key: objectName,
59
+ });
60
+ const result = await this.s3.send(command);
61
+ try {
62
+ return Buffer.from(await result.Body.transformToByteArray());
63
+ }
64
+ catch (e) {
65
+ if (e instanceof client_s3_1.NoSuchKey) {
66
+ throw new exceptions_1.FileNotFoundException(objectName);
67
+ }
68
+ }
69
+ }
70
+ async putObject(bucketName, objectName, data) {
71
+ const command = new client_s3_1.PutObjectCommand({
72
+ Bucket: bucketName ? bucketName : '',
73
+ Key: objectName,
74
+ Body: data,
75
+ });
76
+ await this.s3.send(command);
77
+ }
78
+ };
79
+ exports.AwsS3 = AwsS3;
80
+ exports.AwsS3 = AwsS3 = __decorate([
81
+ (0, common_1.Injectable)(),
82
+ __metadata("design:paramtypes", [client_s3_1.S3Client])
83
+ ], AwsS3);
84
+ //# sourceMappingURL=aws-s3.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-s3.service.js","sourceRoot":"","sources":["../../src/services/aws-s3.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Response } from 'express';
2
+ import { FileInfo, S3 } from '../types';
3
+ export declare class StorageService {
4
+ private readonly s3;
5
+ constructor(s3: S3);
6
+ upload(file: Express.Multer.File, bucketName: string): Promise<FileInfo>;
7
+ download(fileInfo: FileInfo, response: Response): Promise<any>;
8
+ generatePresignedDownloadUrl(fileInfo: FileInfo): Promise<string>;
9
+ generatePresignedUploadUrl(fileInfo: FileInfo): Promise<string>;
10
+ }
@@ -0,0 +1,53 @@
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.StorageService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const types_1 = require("../types");
15
+ const crypto_1 = require("crypto");
16
+ const path_1 = require("path");
17
+ let StorageService = class StorageService {
18
+ constructor(s3) {
19
+ this.s3 = s3;
20
+ }
21
+ async upload(file, bucketName) {
22
+ const ext = (0, path_1.extname)(file.originalname);
23
+ const normalizedFileName = `${(0, crypto_1.randomUUID)()}${ext}`;
24
+ await this.s3.putObject(bucketName, normalizedFileName, file.buffer);
25
+ return {
26
+ filepath: normalizedFileName,
27
+ bucketName,
28
+ contentType: file.mimetype,
29
+ originalname: file.originalname,
30
+ };
31
+ }
32
+ async download(fileInfo, response) {
33
+ var _a;
34
+ const result = await this.s3.getObject(fileInfo.bucketName, fileInfo.filepath);
35
+ response.setHeader('Content-Type', fileInfo.contentType);
36
+ response.setHeader('Content-Disposition', `attachment; filename=${(_a = fileInfo.originalname) !== null && _a !== void 0 ? _a : fileInfo.filepath}`);
37
+ return response.send(result);
38
+ }
39
+ async generatePresignedDownloadUrl(fileInfo) {
40
+ return await this.s3.presignedGetObject(fileInfo.bucketName, fileInfo.filepath, fileInfo.contentType, +process.env.PRESIGNED_URL_EXPIRATION);
41
+ }
42
+ async generatePresignedUploadUrl(fileInfo) {
43
+ const ext = (0, path_1.extname)(fileInfo.originalname);
44
+ const normalizedFileName = `${(0, crypto_1.randomUUID)()}${ext}`;
45
+ return await this.s3.presignedPutObject(fileInfo.bucketName, normalizedFileName, fileInfo.contentType, +process.env.PRESIGNED_URL_EXPIRATION);
46
+ }
47
+ };
48
+ exports.StorageService = StorageService;
49
+ exports.StorageService = StorageService = __decorate([
50
+ (0, common_1.Injectable)(),
51
+ __metadata("design:paramtypes", [types_1.S3])
52
+ ], StorageService);
53
+ //# sourceMappingURL=storage.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../../src/services/storage.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAE5C,oCAAwC;AACxC,mCAAoC;AACpC,+BAA+B;AAGxB,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAA6B,EAAM;QAAN,OAAE,GAAF,EAAE,CAAI;IAAG,CAAC;IAEvC,KAAK,CAAC,MAAM,CACV,IAAyB,EACzB,UAAkB;QAElB,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvC,MAAM,kBAAkB,GAAG,GAAG,IAAA,mBAAU,GAAE,GAAG,GAAG,EAAE,CAAC;QAEnD,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAErE,OAAO;YACL,QAAQ,EAAE,kBAAkB;YAC5B,UAAU;YACV,WAAW,EAAE,IAAI,CAAC,QAAQ;YAC1B,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAkB,EAAE,QAAkB;;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CACpC,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,QAAQ,CAClB,CAAC;QAEF,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;QACzD,QAAQ,CAAC,SAAS,CAChB,qBAAqB,EACrB,wBAAwB,MAAA,QAAQ,CAAC,YAAY,mCAAI,QAAQ,CAAC,QAAQ,EAAE,CACrE,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,QAAkB;QACnD,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,CACrC,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,WAAW,EACpB,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CACtC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,QAAkB;QACjD,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE3C,MAAM,kBAAkB,GAAG,GAAG,IAAA,mBAAU,GAAE,GAAG,GAAG,EAAE,CAAC;QAEnD,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,kBAAkB,CACrC,QAAQ,CAAC,UAAU,EACnB,kBAAkB,EAClB,QAAQ,CAAC,WAAW,EACpB,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CACtC,CAAC;IACJ,CAAC;CACF,CAAA;AAzDY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;qCAEsB,UAAE;GADxB,cAAc,CAyD1B"}
@@ -0,0 +1,2 @@
1
+ export declare class StorageModule {
2
+ }
@@ -0,0 +1,44 @@
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.StorageModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const client_s3_1 = require("@aws-sdk/client-s3");
12
+ const storage_service_1 = require("./services/storage.service");
13
+ const aws_s3_service_1 = require("./services/aws-s3.service");
14
+ const types_1 = require("./types");
15
+ let StorageModule = class StorageModule {
16
+ };
17
+ exports.StorageModule = StorageModule;
18
+ exports.StorageModule = StorageModule = __decorate([
19
+ (0, common_1.Module)({
20
+ providers: [
21
+ {
22
+ provide: client_s3_1.S3Client,
23
+ useFactory: () => {
24
+ return new client_s3_1.S3Client({
25
+ credentials: {
26
+ accessKeyId: process.env.AWS_ACCESS_KEY_ID,
27
+ secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
28
+ },
29
+ endpoint: process.env.AWS_ENDPOINT,
30
+ forcePathStyle: true,
31
+ });
32
+ },
33
+ },
34
+ {
35
+ provide: types_1.S3,
36
+ useClass: aws_s3_service_1.AwsS3,
37
+ },
38
+ storage_service_1.StorageService,
39
+ ],
40
+ controllers: [],
41
+ exports: [storage_service_1.StorageService],
42
+ })
43
+ ], StorageModule);
44
+ //# sourceMappingURL=storage.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.module.js","sourceRoot":"","sources":["../src/storage.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,kDAA8C;AAC9C,gEAA4D;AAC5D,8DAAkD;AAClD,mCAA6B;AA2BtB,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IAzBzB,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,oBAAQ;gBACjB,UAAU,EAAE,GAAG,EAAE;oBACf,OAAO,IAAI,oBAAQ,CAAC;wBAClB,WAAW,EAAE;4BACX,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;4BAC1C,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;yBACnD;wBACD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;wBAClC,cAAc,EAAE,IAAI;qBACrB,CAAC,CAAC;gBACL,CAAC;aACF;YACD;gBACE,OAAO,EAAE,UAAE;gBACX,QAAQ,EAAE,sBAAK;aAChB;YAED,gCAAc;SACf;QACD,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,CAAC,gCAAc,CAAC;KAC1B,CAAC;GACW,aAAa,CAAG"}
@@ -0,0 +1,13 @@
1
+ export type FileInfo = {
2
+ bucketName: string;
3
+ filepath?: string;
4
+ contentType: string;
5
+ originalname: string;
6
+ };
7
+ export declare abstract class S3 {
8
+ abstract presignedPutObject(bucketName: string, objectName: string, contentType: string, duration: number): Promise<string>;
9
+ abstract presignedGetObject(bucketName: string, objectName: string, contentType: string, duration: number): Promise<string>;
10
+ abstract deleteObject(bucketName: string, objectName: string): Promise<void>;
11
+ abstract getObject(bucketName: string, objectName: string): Promise<Buffer>;
12
+ abstract putObject(bucketName: string, objectName: string, data: any): Promise<void>;
13
+ }
package/dist/types.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.S3 = void 0;
4
+ class S3 {
5
+ }
6
+ exports.S3 = S3;
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAOA,MAAsB,EAAE;CAwBvB;AAxBD,gBAwBC"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@zola_do/seaweed",
3
+ "version": "0.1.9",
4
+ "description": "AWS S3-compatible storage for NestJS",
5
+ "author": "zolaDO",
6
+ "license": "ISC",
7
+ "publishConfig": {
8
+ "access": "public"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "default": "./dist/index.js"
16
+ }
17
+ },
18
+ "files": ["dist", "README.md"],
19
+ "scripts": {
20
+ "build": "rimraf dist && tsc",
21
+ "prepublishOnly": "npm run build"
22
+ },
23
+ "peerDependencies": {
24
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
25
+ "reflect-metadata": "^0.1.0 || ^0.2.0",
26
+ "rxjs": "^7.0.0 || ^8.0.0"
27
+ },
28
+ "dependencies": {
29
+ "@aws-sdk/client-s3": "^3.932.0",
30
+ "@aws-sdk/s3-request-presigner": "^3.932.0"
31
+ },
32
+ "devDependencies": {
33
+ "rimraf": "^6.1.0",
34
+ "typescript": "^5.9.3"
35
+ }
36
+ }