@ackplus/nest-file-storage 1.1.11 → 1.1.13
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/LICENSE +22 -0
- package/README.md +658 -6
- package/{src → dist}/index.d.ts +0 -1
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/{src → dist}/lib/constants.d.ts +0 -1
- package/{src → dist}/lib/constants.js +1 -0
- package/dist/lib/constants.js.map +1 -0
- package/{src → dist}/lib/file-storage.service.d.ts +0 -1
- package/{src → dist}/lib/file-storage.service.js +3 -3
- package/dist/lib/file-storage.service.js.map +1 -0
- package/{src → dist}/lib/index.d.ts +0 -1
- package/dist/lib/index.js +22 -0
- package/dist/lib/index.js.map +1 -0
- package/{src → dist}/lib/interceptor/file-storage.interceptor.d.ts +0 -4
- package/{src → dist}/lib/interceptor/file-storage.interceptor.js +5 -17
- package/dist/lib/interceptor/file-storage.interceptor.js.map +1 -0
- package/{src → dist}/lib/nest-file-storage.module.d.ts +0 -1
- package/{src → dist}/lib/nest-file-storage.module.js +9 -3
- package/dist/lib/nest-file-storage.module.js.map +1 -0
- package/{src → dist}/lib/storage/azure.storage.d.ts +0 -1
- package/{src → dist}/lib/storage/azure.storage.js +49 -10
- package/dist/lib/storage/azure.storage.js.map +1 -0
- package/{src → dist}/lib/storage/local.storage.d.ts +0 -15
- package/{src → dist}/lib/storage/local.storage.js +44 -32
- package/dist/lib/storage/local.storage.js.map +1 -0
- package/{src → dist}/lib/storage/s3.storage.d.ts +0 -1
- package/{src → dist}/lib/storage/s3.storage.js +43 -8
- package/dist/lib/storage/s3.storage.js.map +1 -0
- package/{src → dist}/lib/storage.factory.d.ts +0 -1
- package/dist/lib/storage.factory.js +46 -0
- package/dist/lib/storage.factory.js.map +1 -0
- package/{src → dist}/lib/types.d.ts +0 -14
- package/{src → dist}/lib/types.js +1 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/examples/1-basic-local-storage.example.ts +22 -0
- package/examples/10-testing.example.ts +233 -0
- package/examples/2-s3-storage.example.ts +40 -0
- package/examples/3-azure-storage.example.ts +35 -0
- package/examples/4-upload-controller.example.ts +117 -0
- package/examples/5-custom-configuration.example.ts +75 -0
- package/examples/6-file-service.example.ts +124 -0
- package/examples/7-user-avatar.example.ts +139 -0
- package/examples/8-document-management.example.ts +265 -0
- package/examples/9-dynamic-storage.example.ts +175 -0
- package/examples/README.md +122 -0
- package/package.json +86 -6
- package/src/index.d.ts.map +0 -1
- package/src/index.js +0 -7
- package/src/lib/constants.d.ts.map +0 -1
- package/src/lib/file-storage.service.d.ts.map +0 -1
- package/src/lib/index.d.ts.map +0 -1
- package/src/lib/index.js +0 -8
- package/src/lib/interceptor/file-storage.interceptor.d.ts.map +0 -1
- package/src/lib/nest-file-storage.module.d.ts.map +0 -1
- package/src/lib/storage/azure.storage.d.ts.map +0 -1
- package/src/lib/storage/local.storage.d.ts.map +0 -1
- package/src/lib/storage/s3.storage.d.ts.map +0 -1
- package/src/lib/storage.factory.d.ts.map +0 -1
- package/src/lib/storage.factory.js +0 -81
- package/src/lib/types.d.ts.map +0 -1
|
@@ -1,15 +1,54 @@
|
|
|
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
2
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
39
|
exports.S3Storage = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
40
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
6
41
|
const client_s3_2 = require("@aws-sdk/client-s3");
|
|
7
42
|
const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
|
|
8
|
-
const moment_1 =
|
|
9
|
-
const path_1 =
|
|
43
|
+
const moment_1 = __importDefault(require("moment"));
|
|
44
|
+
const path_1 = __importStar(require("path"));
|
|
10
45
|
const stream_1 = require("stream");
|
|
11
46
|
const uuid_1 = require("uuid");
|
|
12
47
|
class S3Storage {
|
|
48
|
+
options;
|
|
49
|
+
s3;
|
|
50
|
+
fileNameFunction;
|
|
51
|
+
fileDistFunction;
|
|
13
52
|
constructor(options) {
|
|
14
53
|
this.options = options;
|
|
15
54
|
this.fileNameFunction = options.fileName || ((file, _req) => {
|
|
@@ -28,7 +67,6 @@ class S3Storage {
|
|
|
28
67
|
});
|
|
29
68
|
}
|
|
30
69
|
async _handleFile(req, file, cb) {
|
|
31
|
-
// Collect file chunks to determine size
|
|
32
70
|
const chunks = [];
|
|
33
71
|
file.stream.on('data', (chunk) => chunks.push(chunk));
|
|
34
72
|
file.stream.on('end', async () => {
|
|
@@ -96,7 +134,6 @@ class S3Storage {
|
|
|
96
134
|
if (!data.Body) {
|
|
97
135
|
throw new Error('Empty response received from S3.');
|
|
98
136
|
}
|
|
99
|
-
// Handle both Buffer and Readable Stream responses
|
|
100
137
|
if (data.Body instanceof stream_1.Readable) {
|
|
101
138
|
return await this.streamToBuffer(data.Body);
|
|
102
139
|
}
|
|
@@ -111,7 +148,6 @@ class S3Storage {
|
|
|
111
148
|
try {
|
|
112
149
|
const fileName = (0, path_1.basename)(key);
|
|
113
150
|
const fileKey = key || (Math.random() + 1).toString(36).substring(12);
|
|
114
|
-
// Upload the file
|
|
115
151
|
const putParams = {
|
|
116
152
|
Bucket: this.options.bucket,
|
|
117
153
|
Key: fileKey,
|
|
@@ -119,14 +155,12 @@ class S3Storage {
|
|
|
119
155
|
ContentDisposition: `inline; ${fileName}`,
|
|
120
156
|
};
|
|
121
157
|
await this.s3.send(new client_s3_2.PutObjectCommand(putParams));
|
|
122
|
-
// Fetch file metadata to get size
|
|
123
158
|
const headParams = {
|
|
124
159
|
Bucket: this.options.bucket,
|
|
125
160
|
Key: fileKey,
|
|
126
161
|
};
|
|
127
162
|
const headObject = await this.s3.send(new client_s3_2.HeadObjectCommand(headParams));
|
|
128
163
|
const fileSize = headObject.ContentLength || 0;
|
|
129
|
-
// Construct response object
|
|
130
164
|
const fileData = {
|
|
131
165
|
originalName: fileName,
|
|
132
166
|
fileName: fileName,
|
|
@@ -193,3 +227,4 @@ class S3Storage {
|
|
|
193
227
|
}
|
|
194
228
|
}
|
|
195
229
|
exports.S3Storage = S3Storage;
|
|
230
|
+
//# sourceMappingURL=s3.storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3.storage.js","sourceRoot":"","sources":["../../../src/lib/storage/s3.storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StorageFactory = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
class StorageFactory {
|
|
6
|
+
static storageInstances = new Map();
|
|
7
|
+
static async createStorage(storageType, options) {
|
|
8
|
+
const cacheKey = `${storageType}-${JSON.stringify(options)}`;
|
|
9
|
+
let storageInstance;
|
|
10
|
+
switch (storageType) {
|
|
11
|
+
case types_1.FileStorageEnum.LOCAL:
|
|
12
|
+
const { LocalStorage } = await import('./storage/local.storage.js');
|
|
13
|
+
storageInstance = new LocalStorage(options);
|
|
14
|
+
break;
|
|
15
|
+
case types_1.FileStorageEnum.AZURE:
|
|
16
|
+
try {
|
|
17
|
+
const { AzureStorage } = await import('./storage/azure.storage.js');
|
|
18
|
+
storageInstance = new AzureStorage(options);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
throw new Error('Azure Storage SDK (@azure/storage-blob) is required when using AzureStorage. ' +
|
|
22
|
+
'Please install it: npm install @azure/storage-blob');
|
|
23
|
+
}
|
|
24
|
+
break;
|
|
25
|
+
case types_1.FileStorageEnum.S3:
|
|
26
|
+
try {
|
|
27
|
+
const { S3Storage } = await import('./storage/s3.storage.js');
|
|
28
|
+
storageInstance = new S3Storage(options);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
throw new Error('AWS SDK (@aws-sdk/client-s3 and @aws-sdk/s3-request-presigner) is required when using S3Storage. ' +
|
|
32
|
+
'Please install them: npm install @aws-sdk/client-s3 @aws-sdk/s3-request-presigner');
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
default:
|
|
36
|
+
throw new Error(`Unsupported storage type: ${storageType}`);
|
|
37
|
+
}
|
|
38
|
+
this.storageInstances.set(cacheKey, storageInstance);
|
|
39
|
+
return storageInstance;
|
|
40
|
+
}
|
|
41
|
+
static clearCache() {
|
|
42
|
+
this.storageInstances.clear();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.StorageFactory = StorageFactory;
|
|
46
|
+
//# sourceMappingURL=storage.factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.factory.js","sourceRoot":"","sources":["../../src/lib/storage.factory.ts"],"names":[],"mappings":";;;AAAA,mCAAsH;AAItH,MAAa,cAAc;IACf,MAAM,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAmC,CAAC;IAE7E,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,WAA4B,EAAE,OAAuB;QAC5E,MAAM,QAAQ,GAAG,GAAG,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAM7D,IAAI,eAAwC,CAAC;QAE7C,QAAQ,WAAW,EAAE,CAAC;YAClB,KAAK,uBAAe,CAAC,KAAK;gBACtB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;gBACpE,eAAe,GAAG,IAAI,YAAY,CAAC,OAA8B,CAAC,CAAC;gBACnE,MAAM;YAEV,KAAK,uBAAe,CAAC,KAAK;gBACtB,IAAI,CAAC;oBACD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;oBACpE,eAAe,GAAG,IAAI,YAAY,CAAC,OAA8B,CAAC,CAAC;gBACvE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CACX,+EAA+E;wBAC/E,oDAAoD,CACvD,CAAC;gBACN,CAAC;gBACD,MAAM;YAEV,KAAK,uBAAe,CAAC,EAAE;gBACnB,IAAI,CAAC;oBACD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;oBAC9D,eAAe,GAAG,IAAI,SAAS,CAAC,OAA2B,CAAC,CAAC;gBACjE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CACX,mGAAmG;wBACnG,mFAAmF,CACtF,CAAC;gBACN,CAAC;gBACD,MAAM;YAEV;gBACI,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACrD,OAAO,eAAe,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,UAAU;QACb,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;;AApDL,wCAqDC"}
|
|
@@ -45,22 +45,9 @@ export interface FileStorageClassOptions {
|
|
|
45
45
|
}
|
|
46
46
|
export type FileStorageModuleOptions = FileStorageConfigOptions | FileStorageClassOptions;
|
|
47
47
|
export interface FileStorageAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
48
|
-
/**
|
|
49
|
-
* The `useExisting` syntax allows you to create aliases for existing providers.
|
|
50
|
-
*/
|
|
51
48
|
useExisting?: Type<FileStorageOptionsFactory>;
|
|
52
|
-
/**
|
|
53
|
-
* The `useClass` syntax allows you to dynamically determine a class
|
|
54
|
-
* that a token should resolve to.
|
|
55
|
-
*/
|
|
56
49
|
useClass?: Type<FileStorageOptionsFactory>;
|
|
57
|
-
/**
|
|
58
|
-
* The `useFactory` syntax allows for creating providers dynamically.
|
|
59
|
-
*/
|
|
60
50
|
useFactory?: (...args: any[]) => Promise<FileStorageModuleOptions> | FileStorageModuleOptions;
|
|
61
|
-
/**
|
|
62
|
-
* Optional list of providers to be injected into the context of the Factory function.
|
|
63
|
-
*/
|
|
64
51
|
inject?: any[];
|
|
65
52
|
}
|
|
66
53
|
export interface FileStorageOptionsFactory {
|
|
@@ -88,4 +75,3 @@ export interface Storage {
|
|
|
88
75
|
getSignedUrl?(key: string, options: any): Promise<string> | string;
|
|
89
76
|
copyFile(oldKey: string, newKey: string): Promise<UploadedFile>;
|
|
90
77
|
}
|
|
91
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":";;;AAIA,IAAY,eAIX;AAJD,WAAY,eAAe;IACvB,kCAAe,CAAA;IACf,4BAAS,CAAA;IACT,kCAAe,CAAA;AACnB,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B"}
|