@sandumo/nestjs-storage-module 1.0.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 ADDED
@@ -0,0 +1,24 @@
1
+ # @sandumo/nestjs-storage-module
2
+
3
+ This package provides a NestJS module for interacting with storage.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @sandumo/nestjs-storage-module
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```typescript
14
+ import { StorageModule } from '@sandumo/nestjs-storage-module';
15
+
16
+ @Module({
17
+ imports: [StorageModule.forRootAsync({
18
+ s3AccessKeyId: 'your-api-key',
19
+ s3SecretAccessKey: 'your-api-key',
20
+ s3Endpoint: 'your-api-key',
21
+ s3Bucket: 'your-api-key',
22
+ })]
23
+ })
24
+ ```
@@ -0,0 +1,4 @@
1
+ import { StorageModule } from './storage.module';
2
+ import { StorageService } from './storage.service';
3
+ export { StorageModule, StorageService };
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StorageService = exports.StorageModule = void 0;
4
+ const storage_module_1 = require("./storage.module");
5
+ Object.defineProperty(exports, "StorageModule", { enumerable: true, get: function () { return storage_module_1.StorageModule; } });
6
+ const storage_service_1 = require("./storage.service");
7
+ Object.defineProperty(exports, "StorageService", { enumerable: true, get: function () { return storage_service_1.StorageService; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AAGxC,8FAHA,8BAAa,OAGA;AAFtB,uDAAmD;AAE3B,+FAFf,gCAAc,OAEe"}
@@ -0,0 +1,10 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { StorageModuleOptions } from './storage.options';
3
+ export declare class StorageModule {
4
+ static forRootAsync(options: {
5
+ useFactory: (...args: any[]) => Promise<StorageModuleOptions> | StorageModuleOptions;
6
+ inject?: any[];
7
+ imports?: any[];
8
+ }): DynamicModule;
9
+ }
10
+ //# sourceMappingURL=storage.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.module.d.ts","sourceRoot":"","sources":["../src/storage.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAE/D,OAAO,EAA0B,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEjF,qBAKa,aAAa;IACxB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;QAC3B,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,oBAAoB,CAAC,GAAG,oBAAoB,CAAC;QACrF,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QACf,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;KACjB,GAAG,aAAa;CAgBlB"}
@@ -0,0 +1,39 @@
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 StorageModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.StorageModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const storage_service_1 = require("./storage.service");
13
+ const storage_options_1 = require("./storage.options");
14
+ let StorageModule = StorageModule_1 = class StorageModule {
15
+ static forRootAsync(options) {
16
+ const providers = [
17
+ {
18
+ provide: storage_options_1.STORAGE_MODULE_OPTIONS,
19
+ useFactory: options.useFactory,
20
+ inject: options.inject || [],
21
+ imports: options.imports || [],
22
+ },
23
+ ];
24
+ return {
25
+ providers: providers,
26
+ exports: providers,
27
+ module: StorageModule_1,
28
+ };
29
+ }
30
+ };
31
+ StorageModule = StorageModule_1 = __decorate([
32
+ (0, common_1.Global)(),
33
+ (0, common_1.Module)({
34
+ providers: [storage_service_1.StorageService],
35
+ exports: [storage_service_1.StorageService],
36
+ })
37
+ ], StorageModule);
38
+ exports.StorageModule = StorageModule;
39
+ //# sourceMappingURL=storage.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.module.js","sourceRoot":"","sources":["../src/storage.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+D;AAC/D,uDAAmD;AACnD,uDAAiF;AAO1E,IAAM,aAAa,qBAAnB,MAAM,aAAa;IACxB,MAAM,CAAC,YAAY,CAAC,OAInB;QACC,MAAM,SAAS,GAAG;YAChB;gBACE,OAAO,EAAE,wCAAsB;gBAC/B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;gBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;aAC/B;SACF,CAAC;QAEF,OAAO;YACL,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,eAAa;SACtB,CAAC;IACJ,CAAC;CACF,CAAA;AArBY,aAAa;IALzB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,gCAAc,CAAC;QAC3B,OAAO,EAAE,CAAC,gCAAc,CAAC;KAC1B,CAAC;GACW,aAAa,CAqBzB;AArBY,sCAAa"}
@@ -0,0 +1,10 @@
1
+ export interface StorageModuleOptions {
2
+ s3AccessKeyId: string;
3
+ s3SecretAccessKey: string;
4
+ s3Bucket: string;
5
+ s3Endpoint: string;
6
+ region?: string;
7
+ rootPath?: string;
8
+ }
9
+ export declare const STORAGE_MODULE_OPTIONS: unique symbol;
10
+ //# sourceMappingURL=storage.options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.options.d.ts","sourceRoot":"","sources":["../src/storage.options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,sBAAsB,eAAmC,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STORAGE_MODULE_OPTIONS = void 0;
4
+ exports.STORAGE_MODULE_OPTIONS = Symbol('STORAGE_MODULE_OPTIONS');
5
+ //# sourceMappingURL=storage.options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.options.js","sourceRoot":"","sources":["../src/storage.options.ts"],"names":[],"mappings":";;;AASa,QAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
4
+ /// <reference types="multer" />
5
+ import { ReadStream } from 'fs';
6
+ import { Stream } from 'stream';
7
+ import { StorageModuleOptions } from './storage.options';
8
+ import { Readable } from 'stream';
9
+ export declare class StorageService {
10
+ private options;
11
+ private s3Client;
12
+ private BUCKET;
13
+ private ROOT_PATH;
14
+ private _isUp;
15
+ constructor(options: StorageModuleOptions);
16
+ private isUp;
17
+ getObject(key: string): Promise<Readable>;
18
+ putObject(blobName: string, blob: Buffer): Promise<any>;
19
+ getStream(key: string): Promise<Stream>;
20
+ putStream(key: string, stream: ReadStream): Promise<any>;
21
+ private createBucket;
22
+ renameFile(oldPath: string, newPath: string): Promise<void>;
23
+ getRandomKey(): string;
24
+ uploadFiles(files: Express.Multer.File[], getFilepath?: (file: Express.Multer.File) => string): Promise<any[]>;
25
+ uploadFile(file: Express.Multer.File, filepath?: string): Promise<any>;
26
+ }
27
+ //# sourceMappingURL=storage.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.service.d.ts","sourceRoot":"","sources":["../src/storage.service.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAGhC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAA0B,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,qBACa,cAAc;IAMmB,OAAO,CAAC,OAAO;IAL3D,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAU;gBAE6B,OAAO,EAAE,oBAAoB;IAsBjF,OAAO,CAAC,IAAI;IAIN,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAWzC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAcvD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMvC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;YAchD,YAAY;IAgBpB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjE,YAAY,IAAI,MAAM;IAItB,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAexG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAY7E"}
@@ -0,0 +1,179 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
9
+ return function (target, key) { decorator(target, key, paramIndex); }
10
+ };
11
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
+ return new (P || (P = Promise))(function (resolve, reject) {
14
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
18
+ });
19
+ };
20
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
21
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
22
+ var m = o[Symbol.asyncIterator], i;
23
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
24
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
25
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.StorageService = void 0;
29
+ const client_s3_1 = require("@aws-sdk/client-s3");
30
+ const common_1 = require("@nestjs/common");
31
+ const storage_options_1 = require("./storage.options");
32
+ const crypto_1 = require("crypto");
33
+ let StorageService = class StorageService {
34
+ constructor(options) {
35
+ this.options = options;
36
+ console.log('[x] epta here nah');
37
+ try {
38
+ this.s3Client = new client_s3_1.S3Client({
39
+ credentials: {
40
+ accessKeyId: this.options.s3AccessKeyId,
41
+ secretAccessKey: this.options.s3SecretAccessKey,
42
+ },
43
+ endpoint: this.options.s3Endpoint,
44
+ region: this.options.region || 'us-east-1',
45
+ forcePathStyle: true,
46
+ });
47
+ this.BUCKET = this.options.s3Bucket || 'default';
48
+ this.ROOT_PATH = this.options.rootPath ? this.options.rootPath + (this.options.rootPath.endsWith('/') ? '' : '/') : '';
49
+ this.createBucket();
50
+ this._isUp = true;
51
+ }
52
+ catch (error) {
53
+ console.error(error);
54
+ }
55
+ }
56
+ isUp() {
57
+ return this._isUp;
58
+ }
59
+ getObject(key) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ if (!this.isUp()) {
62
+ return null;
63
+ }
64
+ console.log('[x] getObject', key);
65
+ const command = new client_s3_1.GetObjectCommand({ Bucket: this.BUCKET, Key: key });
66
+ const response = yield this.s3Client.send(command);
67
+ return response.Body;
68
+ });
69
+ }
70
+ putObject(blobName, blob) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ if (!this.isUp()) {
73
+ return null;
74
+ }
75
+ const command = new client_s3_1.PutObjectCommand({
76
+ Bucket: this.BUCKET,
77
+ Key: blobName,
78
+ Body: blob,
79
+ });
80
+ return this.s3Client.send(command);
81
+ });
82
+ }
83
+ getStream(key) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ console.log('[x] getStream', key);
86
+ const response = yield this.getObject(key);
87
+ return response;
88
+ });
89
+ }
90
+ putStream(key, stream) {
91
+ var stream_1, stream_1_1;
92
+ var e_1, _a;
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ if (!this.isUp()) {
95
+ return null;
96
+ }
97
+ const chunks = [];
98
+ try {
99
+ for (stream_1 = __asyncValues(stream); stream_1_1 = yield stream_1.next(), !stream_1_1.done;) {
100
+ const chunk = stream_1_1.value;
101
+ chunks.push(chunk);
102
+ }
103
+ }
104
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
105
+ finally {
106
+ try {
107
+ if (stream_1_1 && !stream_1_1.done && (_a = stream_1.return)) yield _a.call(stream_1);
108
+ }
109
+ finally { if (e_1) throw e_1.error; }
110
+ }
111
+ const fileBuffer = Buffer.concat(chunks);
112
+ return this.putObject(key, fileBuffer);
113
+ });
114
+ }
115
+ createBucket() {
116
+ var _a;
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ if (!this.isUp()) {
119
+ return null;
120
+ }
121
+ const command = new client_s3_1.ListBucketsCommand({});
122
+ const response = yield this.s3Client.send(command);
123
+ const bucketExists = (_a = response.Buckets) === null || _a === void 0 ? void 0 : _a.some((b) => b.Name === this.BUCKET);
124
+ if (!bucketExists) {
125
+ console.log(`Creating bucket ${this.BUCKET}`);
126
+ const createBucketCommand = new client_s3_1.CreateBucketCommand({ Bucket: this.BUCKET });
127
+ return this.s3Client.send(createBucketCommand);
128
+ }
129
+ });
130
+ }
131
+ renameFile(oldPath, newPath) {
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ yield this.s3Client.send(new client_s3_1.CopyObjectCommand({
134
+ Bucket: this.BUCKET,
135
+ CopySource: `${this.BUCKET}/${this.ROOT_PATH}${oldPath}`,
136
+ Key: `${this.ROOT_PATH}${newPath}`,
137
+ }));
138
+ yield this.s3Client.send(new client_s3_1.DeleteObjectCommand({
139
+ Bucket: this.BUCKET,
140
+ Key: `${this.ROOT_PATH}${oldPath}`,
141
+ }));
142
+ });
143
+ }
144
+ getRandomKey() {
145
+ return (0, crypto_1.randomBytes)(32).toString('hex');
146
+ }
147
+ uploadFiles(files, getFilepath) {
148
+ return Promise.all(files.map((file) => __awaiter(this, void 0, void 0, function* () {
149
+ const filepath = `${this.ROOT_PATH}${getFilepath ? getFilepath(file) : `unnamed/${this.getRandomKey()}.${file.originalname.split('.').pop()}`}`;
150
+ yield this.putObject(filepath, file.buffer);
151
+ return {
152
+ name: file.originalname,
153
+ path: filepath,
154
+ type: file.mimetype,
155
+ size: file.size,
156
+ };
157
+ })));
158
+ }
159
+ uploadFile(file, filepath) {
160
+ return __awaiter(this, void 0, void 0, function* () {
161
+ filepath = filepath
162
+ ? `${this.ROOT_PATH}${filepath}`
163
+ : `${this.ROOT_PATH}unnamed/${this.getRandomKey()}.${file.originalname.split('.').pop()}`;
164
+ yield this.putObject(filepath, file.buffer);
165
+ return {
166
+ name: file.originalname,
167
+ path: filepath,
168
+ type: file.mimetype,
169
+ size: file.size,
170
+ };
171
+ });
172
+ }
173
+ };
174
+ StorageService = __decorate([
175
+ (0, common_1.Injectable)(),
176
+ __param(0, (0, common_1.Inject)(storage_options_1.STORAGE_MODULE_OPTIONS))
177
+ ], StorageService);
178
+ exports.StorageService = StorageService;
179
+ //# sourceMappingURL=storage.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../src/storage.service.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@sandumo/nestjs-storage-module",
3
+ "version": "1.0.0",
4
+ "main": "./dist/index.js",
5
+ "types": "./dist/index.d.ts",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "tsc --watch",
12
+ "lint": "eslint ./src/**/*.{ts,tsx}"
13
+ },
14
+ "devDependencies": {
15
+ "@types/multer": "^1.4.7",
16
+ "eslint": "^7.32.0",
17
+ "eslint-config-custom": "workspace:*",
18
+ "tsconfig": "workspace:*",
19
+ "typescript": "^4.5.2"
20
+ },
21
+ "dependencies": {
22
+ "@aws-sdk/client-s3": "^3.717.0",
23
+ "@nestjs/common": "^9.0.0",
24
+ "aws-sdk": "^2.1692.0"
25
+ },
26
+ "description": "This package provides a NestJS module for storage.",
27
+ "keywords": [
28
+ "storage",
29
+ "nestjs",
30
+ "module"
31
+ ],
32
+ "homepage": "https://github.com/sandumo/packages/blob/main/packages/nestjs-storage-module/README.md",
33
+ "author": {
34
+ "name": "Sandu Morari",
35
+ "email": "sandu.m.md@gmail.com",
36
+ "url": "https://github.com/sandumorari"
37
+ },
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "https://github.com/sandumo/packages.git"
41
+ }
42
+ }