@ackplus/nest-file-storage 0.1.51 → 1.0.1

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.
Files changed (67) hide show
  1. package/LICENSE +21 -0
  2. package/{src → dist}/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +21 -0
  5. package/dist/index.js.map +1 -0
  6. package/{src → dist}/lib/constants.d.ts +1 -0
  7. package/dist/lib/constants.d.ts.map +1 -0
  8. package/dist/lib/constants.js.map +1 -0
  9. package/{src → dist}/lib/file-storage.service.d.ts +1 -0
  10. package/dist/lib/file-storage.service.d.ts.map +1 -0
  11. package/dist/lib/file-storage.service.js +30 -0
  12. package/dist/lib/file-storage.service.js.map +1 -0
  13. package/{src → dist}/lib/index.d.ts +1 -0
  14. package/dist/lib/index.d.ts.map +1 -0
  15. package/dist/lib/index.js +22 -0
  16. package/dist/lib/index.js.map +1 -0
  17. package/{src → dist}/lib/interceptor/file-storage.interceptor.d.ts +4 -0
  18. package/dist/lib/interceptor/file-storage.interceptor.d.ts.map +1 -0
  19. package/dist/lib/interceptor/file-storage.interceptor.js +141 -0
  20. package/dist/lib/interceptor/file-storage.interceptor.js.map +1 -0
  21. package/{src → dist}/lib/nest-file-storage.module.d.ts +1 -0
  22. package/dist/lib/nest-file-storage.module.d.ts.map +1 -0
  23. package/{src → dist}/lib/nest-file-storage.module.js +16 -11
  24. package/dist/lib/nest-file-storage.module.js.map +1 -0
  25. package/{src → dist}/lib/storage/azure.storage.d.ts +1 -0
  26. package/dist/lib/storage/azure.storage.d.ts.map +1 -0
  27. package/dist/lib/storage/azure.storage.js +189 -0
  28. package/dist/lib/storage/azure.storage.js.map +1 -0
  29. package/dist/lib/storage/local.storage.d.ts +35 -0
  30. package/dist/lib/storage/local.storage.d.ts.map +1 -0
  31. package/dist/lib/storage/local.storage.js +219 -0
  32. package/dist/lib/storage/local.storage.js.map +1 -0
  33. package/{src → dist}/lib/storage/s3.storage.d.ts +1 -0
  34. package/dist/lib/storage/s3.storage.d.ts.map +1 -0
  35. package/dist/lib/storage/s3.storage.js +231 -0
  36. package/dist/lib/storage/s3.storage.js.map +1 -0
  37. package/{src → dist}/lib/storage.factory.d.ts +1 -0
  38. package/dist/lib/storage.factory.d.ts.map +1 -0
  39. package/dist/lib/storage.factory.js +82 -0
  40. package/dist/lib/storage.factory.js.map +1 -0
  41. package/{src → dist}/lib/types.d.ts +14 -0
  42. package/dist/lib/types.d.ts.map +1 -0
  43. package/dist/lib/types.js.map +1 -0
  44. package/package.json +22 -7
  45. package/src/index.js +0 -8
  46. package/src/index.js.map +0 -1
  47. package/src/lib/constants.js.map +0 -1
  48. package/src/lib/file-storage.service.js +0 -31
  49. package/src/lib/file-storage.service.js.map +0 -1
  50. package/src/lib/index.js +0 -9
  51. package/src/lib/index.js.map +0 -1
  52. package/src/lib/interceptor/file-storage.interceptor.js +0 -122
  53. package/src/lib/interceptor/file-storage.interceptor.js.map +0 -1
  54. package/src/lib/nest-file-storage.module.js.map +0 -1
  55. package/src/lib/storage/azure.storage.js +0 -153
  56. package/src/lib/storage/azure.storage.js.map +0 -1
  57. package/src/lib/storage/local.storage.d.ts +0 -17
  58. package/src/lib/storage/local.storage.js +0 -133
  59. package/src/lib/storage/local.storage.js.map +0 -1
  60. package/src/lib/storage/s3.storage.js +0 -212
  61. package/src/lib/storage/s3.storage.js.map +0 -1
  62. package/src/lib/storage.factory.js +0 -49
  63. package/src/lib/storage.factory.js.map +0 -1
  64. package/src/lib/types.js.map +0 -1
  65. package/tsconfig.tsbuildinfo +0 -1
  66. /package/{src → dist}/lib/constants.js +0 -0
  67. /package/{src → dist}/lib/types.js +0 -0
@@ -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"}
package/package.json CHANGED
@@ -1,9 +1,12 @@
1
1
  {
2
2
  "name": "@ackplus/nest-file-storage",
3
- "version": "0.1.51",
3
+ "version": "1.0.1",
4
4
  "type": "commonjs",
5
- "main": "./src/index.js",
6
- "types": "./src/index.d.ts",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
7
10
  "license": "MIT",
8
11
  "repository": {
9
12
  "type": "git",
@@ -16,7 +19,8 @@
16
19
  "peerDependencies": {
17
20
  "typeorm": "^0.3.23",
18
21
  "@nestjs/typeorm": "^11.0.0",
19
- "@nestjs/common": "^10.4.5",
22
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
23
+ "@nestjs/core": "^10.0.0 || ^11.0.0",
20
24
  "@azure/storage-blob": "^12.0.0",
21
25
  "@aws-sdk/client-s3": "^3.0.0",
22
26
  "@aws-sdk/s3-request-presigner": "^3.0.0"
@@ -35,8 +39,12 @@
35
39
  "devDependencies": {
36
40
  "typeorm": "^0.3.23",
37
41
  "@nestjs/typeorm": "^11.0.0",
38
- "@nestjs/common": "^10.4.5",
39
- "@types/multer": "^2.0.0"
42
+ "@nestjs/common": "^11.1.3",
43
+ "@nestjs/core": "^11.1.3",
44
+ "@types/multer": "^2.0.0",
45
+ "@types/node": "^20.0.0",
46
+ "@types/uuid": "^9.0.0",
47
+ "@types/concat-stream": "^2.0.0"
40
48
  },
41
49
  "dependencies": {
42
50
  "tslib": "^2.3.0",
@@ -47,6 +55,13 @@
47
55
  "lodash": "^4.17.21",
48
56
  "rxjs": "^7.8.0",
49
57
  "multer": "^2.0.1",
50
- "moment": "^2.30.1"
58
+ "moment": "^2.30.1",
59
+ "uuid": "^9.0.0",
60
+ "concat-stream": "^2.0.0"
61
+ },
62
+ "scripts": {
63
+ "build": "pnpm run clean && tsc -p tsconfig.lib.json",
64
+ "clean": "rimraf dist",
65
+ "dev": "tsc -p tsconfig.lib.json --watch --preserveWatchOutput"
51
66
  }
52
67
  }
package/src/index.js DELETED
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./lib/nest-file-storage.module"), exports);
5
- tslib_1.__exportStar(require("./lib/file-storage.service"), exports);
6
- tslib_1.__exportStar(require("./lib/interceptor/file-storage.interceptor"), exports);
7
- tslib_1.__exportStar(require("./lib/types"), exports);
8
- //# sourceMappingURL=index.js.map
package/src/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/nest-file-storage/src/index.ts"],"names":[],"mappings":";;;AAAA,yEAA+C;AAC/C,qEAA2C;AAC3C,qFAA2D;AAC3D,sDAA4B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../packages/nest-file-storage/src/lib/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,oBAAoB,CAAC"}
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FileStorageService = void 0;
4
- const tslib_1 = require("tslib");
5
- const storage_factory_1 = require("./storage.factory");
6
- class FileStorageService {
7
- static setOptions(options) {
8
- FileStorageService.options = options;
9
- }
10
- static getOptions() {
11
- return FileStorageService.options;
12
- }
13
- static getStorage(storageType) {
14
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
15
- const options = this.getOptions();
16
- if ('storageFactory' in options) {
17
- const classOptions = options;
18
- const StorageClass = yield classOptions.storageFactory();
19
- return new StorageClass(classOptions.options);
20
- }
21
- const configOptions = options;
22
- if (!storageType) {
23
- storageType = configOptions.storage;
24
- }
25
- const config = configOptions[`${storageType}Config`];
26
- return yield storage_factory_1.StorageFactory.createStorage(storageType, config);
27
- });
28
- }
29
- }
30
- exports.FileStorageService = FileStorageService;
31
- //# sourceMappingURL=file-storage.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-storage.service.js","sourceRoot":"","sources":["../../../../../packages/nest-file-storage/src/lib/file-storage.service.ts"],"names":[],"mappings":";;;;AAAA,uDAAmD;AAInD,MAAa,kBAAkB;IAI3B,MAAM,CAAC,UAAU,CAAC,OAAiC;QAC/C,kBAAkB,CAAC,OAAO,GAAG,OAAO,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,UAAU;QACb,OAAO,kBAAkB,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,MAAM,CAAO,UAAU,CAAC,WAA6B;;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAGlC,IAAI,gBAAgB,IAAI,OAAO,EAAE,CAAC;gBAC9B,MAAM,YAAY,GAAG,OAAkC,CAAC;gBACxD,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;gBACzD,OAAO,IAAI,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAClD,CAAC;YAGD,MAAM,aAAa,GAAG,OAAmC,CAAC;YAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;YACxC,CAAC;YACD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,WAAW,QAAQ,CAAC,CAAC;YACrD,OAAO,MAAM,gCAAc,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACnE,CAAC;KAAA;CAEJ;AA/BD,gDA+BC"}
package/src/lib/index.js DELETED
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./nest-file-storage.module"), exports);
5
- tslib_1.__exportStar(require("./types"), exports);
6
- tslib_1.__exportStar(require("./storage.factory"), exports);
7
- tslib_1.__exportStar(require("./interceptor/file-storage.interceptor"), exports);
8
- tslib_1.__exportStar(require("./file-storage.service"), exports);
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/nest-file-storage/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,qEAA2C;AAC3C,kDAAwB;AACxB,4DAAkC;AAClC,iFAAuD;AACvD,iEAAuC"}
@@ -1,122 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FileStorageInterceptor = FileStorageInterceptor;
4
- const tslib_1 = require("tslib");
5
- const multer_1 = tslib_1.__importDefault(require("multer"));
6
- const file_storage_service_1 = require("../file-storage.service");
7
- const storage_factory_1 = require("../storage.factory");
8
- const types_1 = require("../types");
9
- function mapFileObject(file) {
10
- return {
11
- fieldName: file.fieldname,
12
- originalName: file.originalname,
13
- fileName: file.filename,
14
- mimetype: file.mimetype,
15
- size: file.size,
16
- key: file.key,
17
- path: file.path,
18
- url: file.url,
19
- encoding: file.encoding,
20
- fullPath: file.fullPath
21
- };
22
- }
23
- function applyFileKeyMapping(request, fileConfig, interceptorOptions) {
24
- const mapCallback = (interceptorOptions === null || interceptorOptions === void 0 ? void 0 : interceptorOptions.mapToRequestBody) || ((file) => {
25
- if (Array.isArray(file)) {
26
- return file.map(f => f.key);
27
- }
28
- return file.key;
29
- });
30
- if (fileConfig.type === 'single') {
31
- const file = request.file;
32
- if (file) {
33
- const fieldName = fileConfig.fieldName || 'file';
34
- const mappedFile = mapFileObject(file);
35
- request.body[fieldName] = mapCallback(mappedFile, fieldName, request);
36
- }
37
- }
38
- else if (fileConfig.type === 'array') {
39
- const files = request.files;
40
- if (files && files.length > 0) {
41
- const fieldName = fileConfig.fieldName || 'files';
42
- const mappedFiles = files.map(file => mapFileObject(file));
43
- request.body[fieldName] = mapCallback(mappedFiles, fieldName, request);
44
- }
45
- }
46
- else if (fileConfig.type === 'fields') {
47
- const files = request.files;
48
- if (files) {
49
- Object.keys(files).forEach(fieldName => {
50
- const mappedFiles = files[fieldName].map(file => mapFileObject(file));
51
- request.body[fieldName] = mapCallback(mappedFiles, fieldName, request);
52
- });
53
- }
54
- }
55
- }
56
- function FileStorageInterceptor(fileConfig, interceptorOptions) {
57
- if (typeof fileConfig === 'string') {
58
- fileConfig = {
59
- type: 'single',
60
- fieldName: fileConfig,
61
- };
62
- }
63
- return {
64
- intercept(context, next) {
65
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
66
- var _a, _b;
67
- const options = file_storage_service_1.FileStorageService.getOptions();
68
- const request = context.switchToHttp().getRequest();
69
- const response = context.switchToHttp().getResponse();
70
- let storageType;
71
- let storageConfig;
72
- if ('storage' in options) {
73
- const configOptions = options;
74
- storageType = (_a = interceptorOptions === null || interceptorOptions === void 0 ? void 0 : interceptorOptions.storageType) !== null && _a !== void 0 ? _a : configOptions.storage;
75
- storageConfig = configOptions[`${storageType}Config`];
76
- }
77
- else {
78
- storageType = (_b = interceptorOptions === null || interceptorOptions === void 0 ? void 0 : interceptorOptions.storageType) !== null && _b !== void 0 ? _b : types_1.FileStorageEnum.LOCAL;
79
- storageConfig = {};
80
- }
81
- const storageOptions = Object.assign(Object.assign(Object.assign({}, storageConfig), ((interceptorOptions === null || interceptorOptions === void 0 ? void 0 : interceptorOptions.storageOptions) || {})), { fileName: (interceptorOptions === null || interceptorOptions === void 0 ? void 0 : interceptorOptions.fileName) || (storageConfig === null || storageConfig === void 0 ? void 0 : storageConfig.fileName), fileDist: (file, req) => {
82
- var _a;
83
- if (interceptorOptions === null || interceptorOptions === void 0 ? void 0 : interceptorOptions.fileDist) {
84
- return interceptorOptions.fileDist(file, req);
85
- }
86
- return (_a = storageConfig === null || storageConfig === void 0 ? void 0 : storageConfig.fileDist) === null || _a === void 0 ? void 0 : _a.call(storageConfig, file, req);
87
- }, prefix: (interceptorOptions === null || interceptorOptions === void 0 ? void 0 : interceptorOptions.prefix) || (storageConfig === null || storageConfig === void 0 ? void 0 : storageConfig.prefix) });
88
- const storage = yield storage_factory_1.StorageFactory.createStorage(storageType, storageOptions);
89
- const multerInstance = (0, multer_1.default)({ storage });
90
- let multerMiddleware;
91
- switch (fileConfig.type) {
92
- case 'single':
93
- if (!fileConfig.fieldName) {
94
- throw new Error('fieldName is required for single file upload.');
95
- }
96
- multerMiddleware = multerInstance.single(fileConfig.fieldName);
97
- break;
98
- case 'array':
99
- if (!fileConfig.fieldName) {
100
- throw new Error('fieldName is required for multiple file upload.');
101
- }
102
- multerMiddleware = multerInstance.array(fileConfig.fieldName, fileConfig.maxCount);
103
- break;
104
- case 'fields':
105
- if (!fileConfig.fields || !Array.isArray(fileConfig.fields)) {
106
- throw new Error('fields array is required for multiple fields file upload.');
107
- }
108
- multerMiddleware = multerInstance.fields(fileConfig.fields);
109
- break;
110
- default:
111
- throw new Error('Invalid file upload type. Use "single", "array", or "fields".');
112
- }
113
- yield new Promise((resolve, reject) => {
114
- multerMiddleware(request, response, (err) => (err ? reject(err) : resolve(true)));
115
- });
116
- applyFileKeyMapping(request, fileConfig, interceptorOptions);
117
- return next.handle();
118
- });
119
- }
120
- };
121
- }
122
- //# sourceMappingURL=file-storage.interceptor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-storage.interceptor.js","sourceRoot":"","sources":["../../../../../../packages/nest-file-storage/src/lib/interceptor/file-storage.interceptor.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"nest-file-storage.module.js","sourceRoot":"","sources":["../../../../../packages/nest-file-storage/src/lib/nest-file-storage.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAAiE;AAEjE,2CAAmD;AACnD,iEAA4D;AAKrD,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAE9B,MAAM,CAAC,OAAO,CAAC,OAAiC;QAC5C,OAAO;YACH,MAAM,EAAE,uBAAqB;YAC7B,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,gCAAoB;oBAC7B,UAAU,EAAE,GAAS,EAAE;wBACnB,yCAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;wBACvC,OAAO,OAAO,CAAC;oBACnB,CAAC,CAAA;oBACD,MAAM,EAAE,EAAE;iBACb;gBACD,yCAAkB;aACrB;YACD,OAAO,EAAE,EAAE;SACd,CAAC;IACN,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAgC;QAChD,MAAM,cAAc,GAAe,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEtE,OAAO;YACH,MAAM,EAAE,uBAAqB;YAC7B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE,CAAC,GAAG,cAAc,EAAE,yCAAkB,CAAC;YAClD,OAAO,EAAE,EAAE;SACd,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,OAAgC;QAChE,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO;YACH,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;YACxC;gBACI,OAAO,EAAE,OAAO,CAAC,QAAS;gBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAS;aAC9B;SACJ,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,0BAA0B,CAAC,OAAgC;QACtE,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO;gBACH,OAAO,EAAE,gCAAoB;gBAC7B,UAAU,EAAE,CAAO,GAAG,IAAW,EAAE,EAAE;oBACjC,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,UAAW,CAAC,GAAG,IAAI,CAAC,CAAC;oBAC9D,yCAAkB,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;oBAClD,OAAO,kBAAkB,CAAC;gBAC9B,CAAC,CAAA;gBACD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;aAC/B,CAAC;QACN,CAAC;QAED,OAAO;YACH,OAAO,EAAE,gCAAoB;YAC7B,UAAU,EAAE,CAAO,cAAyC,EAAE,EAAE;gBAC5D,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC,wBAAwB,EAAE,CAAC;gBAC3E,yCAAkB,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;gBAClD,OAAO,kBAAkB,CAAC;YAC9B,CAAC,CAAA;YACD,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,QAAS,CAAC;SACrD,CAAC;IACN,CAAC;CAEJ,CAAA;AArEY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,qBAAqB,CAqEjC"}
@@ -1,153 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AzureStorage = void 0;
4
- const tslib_1 = require("tslib");
5
- const storage_blob_1 = require("@azure/storage-blob");
6
- const concat_stream_1 = tslib_1.__importDefault(require("concat-stream"));
7
- const moment_1 = tslib_1.__importDefault(require("moment"));
8
- const path_1 = tslib_1.__importStar(require("path"));
9
- const uuid_1 = require("uuid");
10
- class AzureStorage {
11
- constructor(options) {
12
- this.options = options;
13
- this.fileNameFunction = options.fileName || ((file, _req) => {
14
- return `${(0, uuid_1.v4)()}-${file.originalname}`;
15
- });
16
- this.fileDistFunction = options.fileDist || ((_file, _req) => {
17
- return path_1.default.join('uploads', (0, moment_1.default)().format('YYYY'), (0, moment_1.default)().format('MM'), (0, moment_1.default)().format('DD'));
18
- });
19
- const sharedKeyCredential = new storage_blob_1.StorageSharedKeyCredential(options.account, options.accountKey);
20
- this.blobServiceClient = new storage_blob_1.BlobServiceClient(`https://${options.account}.blob.core.windows.net`, sharedKeyCredential);
21
- }
22
- _handleFile(req, file, cb) {
23
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
24
- try {
25
- const dist = yield this.fileDistFunction(file, req);
26
- const key = yield this.fileNameFunction(file, req);
27
- const filePath = (0, path_1.join)(dist, key);
28
- file.stream.pipe((0, concat_stream_1.default)({ encoding: 'buffer' }, (buffer) => tslib_1.__awaiter(this, void 0, void 0, function* () {
29
- var _a;
30
- const uploadedFile = yield this.putFile(buffer, filePath);
31
- const fileInfo = Object.assign(Object.assign({}, uploadedFile), { fieldName: file.fieldname, originalName: file.originalname, mimetype: file.mimetype });
32
- let transformData = fileInfo;
33
- if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.transformUploadedFileObject) {
34
- transformData = yield this.options.transformUploadedFileObject(fileInfo);
35
- }
36
- cb(null, transformData);
37
- })));
38
- }
39
- catch (error) {
40
- cb(error);
41
- }
42
- file.stream.on('error', (err) => cb(err));
43
- });
44
- }
45
- _removeFile(_req, file, cb) {
46
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
47
- try {
48
- const blobClient = this.blobServiceClient
49
- .getContainerClient(this.options.container)
50
- .getBlobClient(file.key);
51
- yield blobClient.delete();
52
- cb(null);
53
- }
54
- catch (error) {
55
- cb(error);
56
- }
57
- });
58
- }
59
- getUrl(key) {
60
- return `https://${this.options.account}.blob.core.windows.net/${this.options.container}/${key}`;
61
- }
62
- getSignedUrl(key, signatureValues = {}) {
63
- if (!key)
64
- return null;
65
- const cloudFrontDomain = process.env.AZURE_CDN_DOMAIN_NAME;
66
- if (cloudFrontDomain) {
67
- return `${cloudFrontDomain}/${key}`;
68
- }
69
- const containerClient = this.blobServiceClient.getContainerClient(this.options.container);
70
- const blobClient = containerClient.getBlobClient(key);
71
- const sharedKeyCredential = new storage_blob_1.StorageSharedKeyCredential(this.options.account, this.options.accountKey);
72
- const expiresOn = new Date();
73
- expiresOn.setHours(expiresOn.getHours() + 1);
74
- const sasToken = (0, storage_blob_1.generateBlobSASQueryParameters)(Object.assign({ containerName: this.options.container, blobName: key, permissions: storage_blob_1.BlobSASPermissions.parse('r'), protocol: storage_blob_1.SASProtocol.Https, startsOn: new Date(), expiresOn }, signatureValues), sharedKeyCredential).toString();
75
- return `${blobClient.url}?${sasToken}`;
76
- }
77
- getFile(key) {
78
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
79
- const containerClient = this.blobServiceClient.getContainerClient(this.options.container);
80
- const blobClient = containerClient.getBlobClient(key);
81
- const downloadResponse = yield blobClient.download();
82
- const stream = downloadResponse.readableStreamBody;
83
- return new Promise((resolve, reject) => {
84
- const chunks = [];
85
- stream === null || stream === void 0 ? void 0 : stream.on('data', (chunk) => chunks.push(chunk));
86
- stream === null || stream === void 0 ? void 0 : stream.on('end', () => resolve(Buffer.concat(chunks)));
87
- stream === null || stream === void 0 ? void 0 : stream.on('error', reject);
88
- });
89
- });
90
- }
91
- putFile(buffer, key) {
92
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
93
- try {
94
- const containerClient = this.blobServiceClient.getContainerClient(this.options.container);
95
- const blockBlobClient = containerClient.getBlockBlobClient(key);
96
- yield blockBlobClient.uploadData(buffer);
97
- const fileInfo = {
98
- originalName: (0, path_1.basename)(key),
99
- fileName: (0, path_1.basename)(key),
100
- size: buffer.length,
101
- buffer,
102
- key,
103
- fullPath: key,
104
- url: this.getUrl(key),
105
- };
106
- return fileInfo;
107
- }
108
- catch (error) {
109
- console.error(`Error uploading file "${key}":`, error);
110
- throw error;
111
- }
112
- });
113
- }
114
- deleteFile(key) {
115
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
116
- try {
117
- const blobClient = this.blobServiceClient
118
- .getContainerClient(this.options.container)
119
- .getBlobClient(key);
120
- yield blobClient.delete();
121
- }
122
- catch (error) {
123
- console.error(`Error deleting blob "${key}":`, error);
124
- }
125
- });
126
- }
127
- copyFile(oldKey, newKey) {
128
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
129
- try {
130
- const containerClient = this.blobServiceClient.getContainerClient(this.options.container);
131
- const sourceBlobClient = containerClient.getBlobClient(oldKey);
132
- const destinationBlobClient = containerClient.getBlobClient(newKey);
133
- const copyPoller = yield destinationBlobClient.beginCopyFromURL(sourceBlobClient.url);
134
- yield copyPoller.pollUntilDone();
135
- const properties = yield destinationBlobClient.getProperties();
136
- return {
137
- originalName: (0, path_1.basename)(newKey),
138
- size: properties.contentLength || 0,
139
- fileName: (0, path_1.basename)(newKey),
140
- key: newKey,
141
- fullPath: newKey,
142
- url: this.getUrl(newKey),
143
- };
144
- }
145
- catch (error) {
146
- console.error('Error copying file in Azure Blob Storage:', error);
147
- throw error;
148
- }
149
- });
150
- }
151
- }
152
- exports.AzureStorage = AzureStorage;
153
- //# sourceMappingURL=azure.storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"azure.storage.js","sourceRoot":"","sources":["../../../../../../packages/nest-file-storage/src/lib/storage/azure.storage.ts"],"names":[],"mappings":";;;;AAAA,sDAO6B;AAC7B,0EAAmC;AACnC,4DAA4B;AAE5B,qDAA4C;AAC5C,+BAAoC;AAKpC,MAAa,YAAY;IAQrB,YAAoB,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;QAC5C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YACxD,OAAO,GAAG,IAAA,SAAM,GAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACzD,OAAO,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAA,gBAAM,GAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAA,gBAAM,GAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAA,gBAAM,GAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACvG,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,IAAI,yCAA0B,CACtD,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,UAAU,CACrB,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG,IAAI,gCAAiB,CAC1C,WAAW,OAAO,CAAC,OAAO,wBAAwB,EAClD,mBAAmB,CACtB,CAAC;IACN,CAAC;IAEK,WAAW,CACb,GAAQ,EACR,IAAS,EACT,EAAqC;;YAErC,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACnD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAEjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAA,uBAAM,EAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAO,MAAM,EAAE,EAAE;;oBAC7D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAE1D,MAAM,QAAQ,mCACP,YAAY,KACf,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAC1B,CAAC;oBACF,IAAI,aAAa,GAAG,QAAQ,CAAC;oBAE7B,IAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,2BAA2B,EAAE,CAAC;wBAC5C,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;oBAC7E,CAAC;oBACD,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBAC5B,CAAC,CAAA,CAAC,CAAC,CAAC;YACR,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,EAAE,CAAC,KAAK,CAAC,CAAC;YACd,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;KAAA;IAEK,WAAW,CACb,IAAS,EACT,IAAI,EACJ,EAAiC;;YAEjC,IAAI,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB;qBACpC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;qBAC1C,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAE7B,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC1B,EAAE,CAAC,IAAI,CAAC,CAAC;YACb,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,EAAE,CAAC,KAAK,CAAC,CAAC;YACd,CAAC;QACL,CAAC;KAAA;IAED,MAAM,CAAC,GAAW;QACd,OAAO,WAAW,IAAI,CAAC,OAAO,CAAC,OAAO,0BAA0B,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;IACpG,CAAC;IAGD,YAAY,CAAC,GAAW,EAAE,kBAA0E,EAAE;QAClG,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAE3D,IAAI,gBAAgB,EAAE,CAAC;YACnB,OAAO,GAAG,gBAAgB,IAAI,GAAG,EAAE,CAAC;QACxC,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1F,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAEtD,MAAM,mBAAmB,GAAG,IAAI,yCAA0B,CACtD,IAAI,CAAC,OAAO,CAAC,OAAO,EACpB,IAAI,CAAC,OAAO,CAAC,UAAU,CAC1B,CAAC;QAGF,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAE7C,MAAM,QAAQ,GAAG,IAAA,6CAA8B,kBAEvC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EACrC,QAAQ,EAAE,GAAG,EACb,WAAW,EAAE,iCAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,EAC1C,QAAQ,EAAE,0BAAW,CAAC,KAAK,EAC3B,QAAQ,EAAE,IAAI,IAAI,EAAE,EACpB,SAAS,IACN,eAAe,GAEtB,mBAAmB,CACtB,CAAC,QAAQ,EAAE,CAAC;QAEb,OAAO,GAAG,UAAU,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAEK,OAAO,CAAC,GAAW;;YACrB,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1F,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACtD,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;YAEnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACnC,MAAM,MAAM,GAAG,EAAE,CAAC;gBAClB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAEK,OAAO,CAAC,MAAc,EAAE,GAAW;;YACrC,IAAI,CAAC;gBACD,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC1F,MAAM,eAAe,GAAG,eAAe,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBAEhE,MAAM,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAEzC,MAAM,QAAQ,GAAiB;oBAC3B,YAAY,EAAE,IAAA,eAAQ,EAAC,GAAG,CAAC;oBAC3B,QAAQ,EAAE,IAAA,eAAQ,EAAC,GAAG,CAAC;oBACvB,IAAI,EAAE,MAAM,CAAC,MAAM;oBACnB,MAAM;oBACN,GAAG;oBACH,QAAQ,EAAE,GAAG;oBACb,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxB,CAAC;gBAEF,OAAO,QAAQ,CAAC;YACpB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvD,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;KAAA;IAEK,UAAU,CAAC,GAAW;;YACxB,IAAI,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB;qBACpC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;qBAC1C,aAAa,CAAC,GAAG,CAAC,CAAC;gBAExB,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC;KAAA;IAEK,QAAQ,CAAC,MAAc,EAAE,MAAc;;YACzC,IAAI,CAAC;gBACD,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC1F,MAAM,gBAAgB,GAAG,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC/D,MAAM,qBAAqB,GAAG,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAEpE,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACtF,MAAM,UAAU,CAAC,aAAa,EAAE,CAAC;gBAEjC,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,CAAC;gBAE/D,OAAO;oBACH,YAAY,EAAE,IAAA,eAAQ,EAAC,MAAM,CAAC;oBAC9B,IAAI,EAAE,UAAU,CAAC,aAAa,IAAI,CAAC;oBACnC,QAAQ,EAAE,IAAA,eAAQ,EAAC,MAAM,CAAC;oBAC1B,GAAG,EAAE,MAAM;oBACX,QAAQ,EAAE,MAAM;oBAChB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;iBAC3B,CAAC;YACN,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;gBAClE,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;KAAA;CAGJ;AApMD,oCAoMC"}
@@ -1,17 +0,0 @@
1
- import { StorageEngine } from 'multer';
2
- import { LocalStorageOptions, Storage, UploadedFile } from '../types';
3
- export declare class LocalStorage implements StorageEngine, Storage {
4
- private options;
5
- private rootPath;
6
- private fileNameFunction;
7
- private fileDistFunction;
8
- constructor(options: LocalStorageOptions);
9
- _handleFile(req: any, file: Express.Multer.File, cb: (error?: any, info?: any) => void): Promise<void>;
10
- _removeFile(_req: any, file: any, cb: (error: Error | null) => void): void;
11
- getUrl(filePath: string): string;
12
- getFile(file: string): Promise<Buffer>;
13
- deleteFile(file: string): Promise<void>;
14
- putFile(fileContent: Buffer, key: string): Promise<UploadedFile>;
15
- path(filePath: string): string;
16
- copyFile(oldKey: string, newKey: string): Promise<UploadedFile>;
17
- }
@@ -1,133 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LocalStorage = void 0;
4
- const tslib_1 = require("tslib");
5
- const concat_stream_1 = tslib_1.__importDefault(require("concat-stream"));
6
- const fs = tslib_1.__importStar(require("fs"));
7
- const moment_1 = tslib_1.__importDefault(require("moment"));
8
- const path = tslib_1.__importStar(require("path"));
9
- const path_1 = require("path");
10
- const uuid_1 = require("uuid");
11
- class LocalStorage {
12
- constructor(options) {
13
- this.options = options;
14
- this.rootPath = options.rootPath || path.join(process.cwd(), 'public');
15
- this.fileNameFunction = options.fileName || ((file, _req) => {
16
- return `${(0, uuid_1.v4)()}-${file.originalname}`;
17
- });
18
- this.fileDistFunction = options.fileDist || ((_file, _req) => {
19
- return path.join(this.rootPath, (0, moment_1.default)().format('YYYY'), (0, moment_1.default)().format('MM'), (0, moment_1.default)().format('DD'));
20
- });
21
- if (!fs.existsSync(this.rootPath)) {
22
- fs.mkdirSync(this.rootPath, { recursive: true });
23
- }
24
- }
25
- _handleFile(req, file, cb) {
26
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
27
- try {
28
- const dist = yield this.fileDistFunction(file, req);
29
- const key = yield this.fileNameFunction(file, req);
30
- const filePath = (0, path_1.join)(dist, key);
31
- file.stream.pipe((0, concat_stream_1.default)({ encoding: 'buffer' }, (buffer) => tslib_1.__awaiter(this, void 0, void 0, function* () {
32
- var _a;
33
- const uploadedFile = yield this.putFile(buffer, filePath);
34
- const fileInfo = Object.assign(Object.assign({}, uploadedFile), { fieldName: file.fieldname, originalName: file.originalname, mimetype: file.mimetype });
35
- let transformData = fileInfo;
36
- if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.transformUploadedFileObject) {
37
- transformData = yield this.options.transformUploadedFileObject(fileInfo);
38
- }
39
- cb(null, transformData);
40
- })));
41
- }
42
- catch (error) {
43
- console.error('error', error);
44
- cb(error);
45
- }
46
- });
47
- }
48
- _removeFile(_req, file, cb) {
49
- const filePath = file.path;
50
- fs.unlink(filePath, (err) => {
51
- if (err) {
52
- cb(err);
53
- }
54
- else {
55
- cb(null);
56
- }
57
- });
58
- }
59
- getUrl(filePath) {
60
- if (filePath && filePath.startsWith('http')) {
61
- return filePath;
62
- }
63
- return filePath ? `${this.options.baseUrl}/${filePath}` : null;
64
- }
65
- getFile(file) {
66
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
67
- return fs.promises.readFile(this.path(file));
68
- });
69
- }
70
- deleteFile(file) {
71
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
72
- return fs.promises.unlink(this.path(file));
73
- });
74
- }
75
- putFile(fileContent, key) {
76
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
77
- return new Promise((putFileResolve, reject) => {
78
- const path = (0, path_1.join)(this.options.rootPath, key);
79
- const directoryPath = (0, path_1.dirname)(path);
80
- fs.mkdirSync(directoryPath, { recursive: true });
81
- fs.writeFile(path, fileContent, (err) => {
82
- if (err) {
83
- reject(err);
84
- return;
85
- }
86
- const stats = fs.statSync(path);
87
- const baseName = (0, path_1.basename)(key);
88
- const fileInfo = {
89
- originalName: baseName,
90
- size: stats.size,
91
- fileName: baseName,
92
- key,
93
- url: this.getUrl(key),
94
- fullPath: path,
95
- };
96
- putFileResolve(fileInfo);
97
- });
98
- });
99
- });
100
- }
101
- path(filePath) {
102
- return filePath ? `${this.options.rootPath}/${filePath}` : null;
103
- }
104
- copyFile(oldKey, newKey) {
105
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
106
- return new Promise((resolve, reject) => {
107
- const oldPath = (0, path_1.join)(this.options.rootPath, oldKey);
108
- const newPath = (0, path_1.join)(this.options.rootPath, newKey);
109
- const directoryPath = (0, path_1.dirname)(newPath);
110
- fs.mkdirSync(directoryPath, { recursive: true });
111
- fs.copyFile(oldPath, newPath, (err) => {
112
- if (err) {
113
- reject(err);
114
- return;
115
- }
116
- const stats = fs.statSync(newPath);
117
- const baseName = (0, path_1.basename)(newKey);
118
- const fileInfo = {
119
- originalName: baseName,
120
- size: stats.size,
121
- fileName: baseName,
122
- key: newKey,
123
- fullPath: newPath,
124
- url: this.getUrl(newKey),
125
- };
126
- resolve(fileInfo);
127
- });
128
- });
129
- });
130
- }
131
- }
132
- exports.LocalStorage = LocalStorage;
133
- //# sourceMappingURL=local.storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local.storage.js","sourceRoot":"","sources":["../../../../../../packages/nest-file-storage/src/lib/storage/local.storage.ts"],"names":[],"mappings":"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"}