@sandumo/nestjs-storage-module 1.0.2 → 1.0.4
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/dist/storage.options.d.ts +9 -0
- package/dist/storage.options.d.ts.map +1 -1
- package/dist/storage.options.js.map +1 -1
- package/dist/storage.service.d.ts +3 -0
- package/dist/storage.service.d.ts.map +1 -1
- package/dist/storage.service.js +25 -6
- package/dist/storage.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -18,6 +18,15 @@ export interface StorageModuleOptions {
|
|
|
18
18
|
* @default '/'
|
|
19
19
|
*/
|
|
20
20
|
rootPath?: string;
|
|
21
|
+
/**
|
|
22
|
+
* All unnamed files will be stored in a subfolder named 'unnamed' and will be given a random name.
|
|
23
|
+
* @default '/unnamed'
|
|
24
|
+
*/
|
|
25
|
+
unnamedRootPath?: string;
|
|
26
|
+
/**
|
|
27
|
+
* @default null
|
|
28
|
+
*/
|
|
29
|
+
getPublicUrl?: (path: string) => string;
|
|
21
30
|
}
|
|
22
31
|
export declare const STORAGE_MODULE_OPTIONS: unique symbol;
|
|
23
32
|
//# sourceMappingURL=storage.options.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.options.d.ts","sourceRoot":"","sources":["../src/storage.options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"storage.options.d.ts","sourceRoot":"","sources":["../src/storage.options.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC;AAED,eAAO,MAAM,sBAAsB,eAAmC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.options.js","sourceRoot":"","sources":["../src/storage.options.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"storage.options.js","sourceRoot":"","sources":["../src/storage.options.ts"],"names":[],"mappings":";;;AAqCa,QAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC"}
|
|
@@ -11,6 +11,7 @@ export declare class StorageService {
|
|
|
11
11
|
private s3Client;
|
|
12
12
|
private BUCKET;
|
|
13
13
|
private ROOT_PATH;
|
|
14
|
+
private UNNAMED_ROOT_PATH;
|
|
14
15
|
private _isUp;
|
|
15
16
|
constructor(options: StorageModuleOptions);
|
|
16
17
|
private isUp;
|
|
@@ -23,5 +24,7 @@ export declare class StorageService {
|
|
|
23
24
|
getRandomKey(): string;
|
|
24
25
|
uploadFiles(files: Express.Multer.File[], getFilepath?: (file: Express.Multer.File) => string): Promise<any[]>;
|
|
25
26
|
uploadFile(file: Express.Multer.File, filepath?: string): Promise<any>;
|
|
27
|
+
path(filepath: string): string;
|
|
28
|
+
getPublicUrl(filepath: string): string;
|
|
26
29
|
}
|
|
27
30
|
//# sourceMappingURL=storage.service.d.ts.map
|
|
@@ -1 +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;
|
|
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;IAOmB,OAAO,CAAC,OAAO;IAN3D,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,KAAK,CAAU;gBAE6B,OAAO,EAAE,oBAAoB;IAqBjF,OAAO,CAAC,IAAI;IAIN,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAUzC,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;IAKvC,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;IAmBxG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAmB5E,IAAI,CAAC,QAAQ,EAAE,MAAM;IAQrB,YAAY,CAAC,QAAQ,EAAE,MAAM;CAO9B"}
|
package/dist/storage.service.js
CHANGED
|
@@ -47,6 +47,7 @@ let StorageService = class StorageService {
|
|
|
47
47
|
this.ROOT_PATH = this.options.rootPath ? this.options.rootPath + (this.options.rootPath.endsWith('/') ? '' : '/') : '';
|
|
48
48
|
this.createBucket();
|
|
49
49
|
this._isUp = true;
|
|
50
|
+
this.UNNAMED_ROOT_PATH = this.options.unnamedRootPath ? this.ROOT_PATH + this.options.unnamedRootPath + (this.options.unnamedRootPath.endsWith('/') ? '' : '/') : this.ROOT_PATH + 'unnamed/';
|
|
50
51
|
}
|
|
51
52
|
catch (error) {
|
|
52
53
|
console.error(error);
|
|
@@ -129,12 +130,12 @@ let StorageService = class StorageService {
|
|
|
129
130
|
return __awaiter(this, void 0, void 0, function* () {
|
|
130
131
|
yield this.s3Client.send(new client_s3_1.CopyObjectCommand({
|
|
131
132
|
Bucket: this.BUCKET,
|
|
132
|
-
CopySource: `${this.BUCKET}/${this.
|
|
133
|
-
Key:
|
|
133
|
+
CopySource: `${this.BUCKET}/${this.path(oldPath)}`,
|
|
134
|
+
Key: this.path(newPath),
|
|
134
135
|
}));
|
|
135
136
|
yield this.s3Client.send(new client_s3_1.DeleteObjectCommand({
|
|
136
137
|
Bucket: this.BUCKET,
|
|
137
|
-
Key:
|
|
138
|
+
Key: this.path(oldPath),
|
|
138
139
|
}));
|
|
139
140
|
});
|
|
140
141
|
}
|
|
@@ -143,7 +144,10 @@ let StorageService = class StorageService {
|
|
|
143
144
|
}
|
|
144
145
|
uploadFiles(files, getFilepath) {
|
|
145
146
|
return Promise.all(files.map((file) => __awaiter(this, void 0, void 0, function* () {
|
|
146
|
-
|
|
147
|
+
if (file.mimetype === 'application/file-reference') {
|
|
148
|
+
return JSON.parse(file.buffer.toString());
|
|
149
|
+
}
|
|
150
|
+
const filepath = `${this.ROOT_PATH}${getFilepath ? getFilepath(file) : `${this.UNNAMED_ROOT_PATH}${this.getRandomKey()}.${file.originalname.split('.').pop()}`}`;
|
|
147
151
|
yield this.putObject(filepath, file.buffer);
|
|
148
152
|
return {
|
|
149
153
|
name: file.originalname,
|
|
@@ -155,9 +159,12 @@ let StorageService = class StorageService {
|
|
|
155
159
|
}
|
|
156
160
|
uploadFile(file, filepath) {
|
|
157
161
|
return __awaiter(this, void 0, void 0, function* () {
|
|
162
|
+
if (file.mimetype === 'application/file-reference') {
|
|
163
|
+
return JSON.parse(file.buffer.toString());
|
|
164
|
+
}
|
|
158
165
|
filepath = filepath
|
|
159
|
-
? `${this.ROOT_PATH}${filepath}`
|
|
160
|
-
: `${this.
|
|
166
|
+
? (filepath.startsWith(this.ROOT_PATH) ? filepath : `${this.ROOT_PATH}${filepath}`)
|
|
167
|
+
: `${this.UNNAMED_ROOT_PATH}${this.getRandomKey()}.${file.originalname.split('.').pop()}`;
|
|
161
168
|
yield this.putObject(filepath, file.buffer);
|
|
162
169
|
return {
|
|
163
170
|
name: file.originalname,
|
|
@@ -167,6 +174,18 @@ let StorageService = class StorageService {
|
|
|
167
174
|
};
|
|
168
175
|
});
|
|
169
176
|
}
|
|
177
|
+
path(filepath) {
|
|
178
|
+
if (filepath.startsWith(this.ROOT_PATH)) {
|
|
179
|
+
return filepath;
|
|
180
|
+
}
|
|
181
|
+
return `${this.ROOT_PATH}${filepath}`;
|
|
182
|
+
}
|
|
183
|
+
getPublicUrl(filepath) {
|
|
184
|
+
if (this.options.getPublicUrl) {
|
|
185
|
+
return this.options.getPublicUrl(filepath);
|
|
186
|
+
}
|
|
187
|
+
return `${this.options.endpoint}/${this.path(filepath)}`;
|
|
188
|
+
}
|
|
170
189
|
};
|
|
171
190
|
StorageService = __decorate([
|
|
172
191
|
(0, common_1.Injectable)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../src/storage.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAmK;AACnK,2CAAoD;AAEpD,uDAAiF;AAEjF,mCAAqC;AAG9B,IAAM,cAAc,GAApB,MAAM,cAAc;
|
|
1
|
+
{"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../src/storage.service.ts"],"names":[],"mappings":"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"}
|