@ackplus/nest-file-storage 1.1.10 → 1.1.12

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 (62) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +658 -6
  3. package/{src → dist}/index.d.ts +0 -1
  4. package/dist/index.js +21 -0
  5. package/dist/index.js.map +1 -0
  6. package/{src → dist}/lib/constants.d.ts +0 -1
  7. package/{src → dist}/lib/constants.js +1 -0
  8. package/dist/lib/constants.js.map +1 -0
  9. package/{src → dist}/lib/file-storage.service.d.ts +0 -1
  10. package/{src → dist}/lib/file-storage.service.js +2 -2
  11. package/dist/lib/file-storage.service.js.map +1 -0
  12. package/{src → dist}/lib/index.d.ts +0 -1
  13. package/dist/lib/index.js +22 -0
  14. package/dist/lib/index.js.map +1 -0
  15. package/{src → dist}/lib/interceptor/file-storage.interceptor.d.ts +0 -4
  16. package/{src → dist}/lib/interceptor/file-storage.interceptor.js +5 -17
  17. package/dist/lib/interceptor/file-storage.interceptor.js.map +1 -0
  18. package/{src → dist}/lib/nest-file-storage.module.d.ts +0 -1
  19. package/{src → dist}/lib/nest-file-storage.module.js +9 -3
  20. package/dist/lib/nest-file-storage.module.js.map +1 -0
  21. package/{src → dist}/lib/storage/azure.storage.d.ts +0 -1
  22. package/{src → dist}/lib/storage/azure.storage.js +49 -10
  23. package/dist/lib/storage/azure.storage.js.map +1 -0
  24. package/{src → dist}/lib/storage/local.storage.d.ts +0 -15
  25. package/{src → dist}/lib/storage/local.storage.js +44 -32
  26. package/dist/lib/storage/local.storage.js.map +1 -0
  27. package/{src → dist}/lib/storage/s3.storage.d.ts +0 -1
  28. package/{src → dist}/lib/storage/s3.storage.js +43 -8
  29. package/dist/lib/storage/s3.storage.js.map +1 -0
  30. package/{src → dist}/lib/storage.factory.d.ts +0 -1
  31. package/dist/lib/storage.factory.js +46 -0
  32. package/dist/lib/storage.factory.js.map +1 -0
  33. package/{src → dist}/lib/types.d.ts +0 -14
  34. package/{src → dist}/lib/types.js +1 -0
  35. package/dist/lib/types.js.map +1 -0
  36. package/dist/tsconfig.build.tsbuildinfo +1 -0
  37. package/examples/1-basic-local-storage.example.ts +22 -0
  38. package/examples/10-testing.example.ts +233 -0
  39. package/examples/2-s3-storage.example.ts +40 -0
  40. package/examples/3-azure-storage.example.ts +35 -0
  41. package/examples/4-upload-controller.example.ts +117 -0
  42. package/examples/5-custom-configuration.example.ts +75 -0
  43. package/examples/6-file-service.example.ts +124 -0
  44. package/examples/7-user-avatar.example.ts +139 -0
  45. package/examples/8-document-management.example.ts +265 -0
  46. package/examples/9-dynamic-storage.example.ts +175 -0
  47. package/examples/README.md +122 -0
  48. package/package.json +86 -6
  49. package/src/index.d.ts.map +0 -1
  50. package/src/index.js +0 -7
  51. package/src/lib/constants.d.ts.map +0 -1
  52. package/src/lib/file-storage.service.d.ts.map +0 -1
  53. package/src/lib/index.d.ts.map +0 -1
  54. package/src/lib/index.js +0 -8
  55. package/src/lib/interceptor/file-storage.interceptor.d.ts.map +0 -1
  56. package/src/lib/nest-file-storage.module.d.ts.map +0 -1
  57. package/src/lib/storage/azure.storage.d.ts.map +0 -1
  58. package/src/lib/storage/local.storage.d.ts.map +0 -1
  59. package/src/lib/storage/s3.storage.d.ts.map +0 -1
  60. package/src/lib/storage.factory.d.ts.map +0 -1
  61. package/src/lib/storage.factory.js +0 -81
  62. package/src/lib/types.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,6DAA2C;AAC3C,6EAA2D;AAC3D,8CAA4B"}
@@ -1,2 +1 @@
1
1
  export declare const FILE_STORAGE_OPTIONS = "FileStorageOptions";
2
- //# sourceMappingURL=constants.d.ts.map
@@ -2,3 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FILE_STORAGE_OPTIONS = void 0;
4
4
  exports.FILE_STORAGE_OPTIONS = 'FileStorageOptions';
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,oBAAoB,CAAC"}
@@ -5,4 +5,3 @@ export declare class FileStorageService {
5
5
  static getOptions(): FileStorageModuleOptions;
6
6
  static getStorage(storageType?: FileStorageEnum): Promise<import("./types").Storage>;
7
7
  }
8
- //# sourceMappingURL=file-storage.service.d.ts.map
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FileStorageService = void 0;
4
4
  const storage_factory_1 = require("./storage.factory");
5
5
  class FileStorageService {
6
+ static options;
6
7
  static setOptions(options) {
7
8
  FileStorageService.options = options;
8
9
  }
@@ -11,13 +12,11 @@ class FileStorageService {
11
12
  }
12
13
  static async getStorage(storageType) {
13
14
  const options = this.getOptions();
14
- // Check if it's a class factory approach
15
15
  if ('storageFactory' in options) {
16
16
  const classOptions = options;
17
17
  const StorageClass = await classOptions.storageFactory();
18
18
  return new StorageClass(classOptions.options);
19
19
  }
20
- // Configuration-based approach
21
20
  const configOptions = options;
22
21
  if (!storageType) {
23
22
  storageType = configOptions.storage;
@@ -27,3 +26,4 @@ class FileStorageService {
27
26
  }
28
27
  }
29
28
  exports.FileStorageService = FileStorageService;
29
+ //# sourceMappingURL=file-storage.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-storage.service.js","sourceRoot":"","sources":["../../src/lib/file-storage.service.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AAInD,MAAa,kBAAkB;IAEnB,MAAM,CAAC,OAAO,CAA2B;IAEjD,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,CAAC,KAAK,CAAC,UAAU,CAAC,WAA6B;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAGlC,IAAI,gBAAgB,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,YAAY,GAAG,OAAkC,CAAC;YACxD,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;YACzD,OAAO,IAAI,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;QAGD,MAAM,aAAa,GAAG,OAAmC,CAAC;QAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;QACxC,CAAC;QACD,MAAM,MAAM,GAAI,aAAqB,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,MAAM,gCAAc,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;CAEJ;AA/BD,gDA+BC"}
@@ -3,4 +3,3 @@ export * from './types';
3
3
  export * from './storage.factory';
4
4
  export * from './interceptor/file-storage.interceptor';
5
5
  export * from './file-storage.service';
6
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,22 @@
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("./nest-file-storage.module"), exports);
18
+ __exportStar(require("./types"), exports);
19
+ __exportStar(require("./storage.factory"), exports);
20
+ __exportStar(require("./interceptor/file-storage.interceptor"), exports);
21
+ __exportStar(require("./file-storage.service"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,0CAAwB;AACxB,oDAAkC;AAClC,yEAAuD;AACvD,yDAAuC"}
@@ -18,8 +18,4 @@ export type FileStorageInterceptorOptions = {
18
18
  storageOptions?: StorageOptions;
19
19
  mapToRequestBody?: (file: any, fieldName: string, req?: Request) => any;
20
20
  };
21
- /**
22
- * Function-based interceptor that accepts storage options dynamically.
23
- */
24
21
  export declare function FileStorageInterceptor(fileConfig: FileUploadConfig | string, interceptorOptions?: FileStorageInterceptorOptions): NestInterceptor;
25
- //# sourceMappingURL=file-storage.interceptor.d.ts.map
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.FileStorageInterceptor = FileStorageInterceptor;
4
- const tslib_1 = require("tslib");
5
- const multer_1 = tslib_1.__importDefault(require("multer"));
7
+ const multer_1 = __importDefault(require("multer"));
6
8
  const file_storage_service_1 = require("../file-storage.service");
7
9
  const storage_factory_1 = require("../storage.factory");
8
10
  const types_1 = require("../types");
9
- // Helper function to map file object
10
11
  function mapFileObject(file) {
11
12
  return {
12
13
  fieldName: file.fieldname,
@@ -21,15 +22,11 @@ function mapFileObject(file) {
21
22
  fullPath: file.fullPath
22
23
  };
23
24
  }
24
- // Helper function to apply file mapping with callback
25
25
  function applyFileKeyMapping(request, fileConfig, interceptorOptions) {
26
- // Default callback returns the file key
27
26
  const mapCallback = interceptorOptions?.mapToRequestBody || ((file) => {
28
- // For arrays, return array of keys
29
27
  if (Array.isArray(file)) {
30
28
  return file.map(f => f.key);
31
29
  }
32
- // For single file, return the key
33
30
  return file.key;
34
31
  });
35
32
  if (fileConfig.type === 'single') {
@@ -58,9 +55,6 @@ function applyFileKeyMapping(request, fileConfig, interceptorOptions) {
58
55
  }
59
56
  }
60
57
  }
61
- /**
62
- * Function-based interceptor that accepts storage options dynamically.
63
- */
64
58
  function FileStorageInterceptor(fileConfig, interceptorOptions) {
65
59
  if (typeof fileConfig === 'string') {
66
60
  fileConfig = {
@@ -73,17 +67,14 @@ function FileStorageInterceptor(fileConfig, interceptorOptions) {
73
67
  const options = file_storage_service_1.FileStorageService.getOptions();
74
68
  const request = context.switchToHttp().getRequest();
75
69
  const response = context.switchToHttp().getResponse();
76
- // Determine storage type - handle both config approaches
77
70
  let storageType;
78
71
  let storageConfig;
79
72
  if ('storage' in options) {
80
- // Configuration-based approach
81
73
  const configOptions = options;
82
74
  storageType = interceptorOptions?.storageType ?? configOptions.storage;
83
75
  storageConfig = configOptions[`${storageType}Config`];
84
76
  }
85
77
  else {
86
- // Class factory approach - default to LOCAL
87
78
  storageType = interceptorOptions?.storageType ?? types_1.FileStorageEnum.LOCAL;
88
79
  storageConfig = {};
89
80
  }
@@ -99,10 +90,8 @@ function FileStorageInterceptor(fileConfig, interceptorOptions) {
99
90
  },
100
91
  prefix: interceptorOptions?.prefix || storageConfig?.prefix,
101
92
  };
102
- // Create storage instance dynamically
103
93
  const storage = await storage_factory_1.StorageFactory.createStorage(storageType, storageOptions);
104
94
  const multerInstance = (0, multer_1.default)({ storage });
105
- // Multer setup based on fileConfig
106
95
  let multerMiddleware;
107
96
  switch (fileConfig.type) {
108
97
  case 'single':
@@ -126,13 +115,12 @@ function FileStorageInterceptor(fileConfig, interceptorOptions) {
126
115
  default:
127
116
  throw new Error('Invalid file upload type. Use "single", "array", or "fields".');
128
117
  }
129
- // Execute Multer middleware
130
118
  await new Promise((resolve, reject) => {
131
119
  multerMiddleware(request, response, (err) => (err ? reject(err) : resolve(true)));
132
120
  });
133
- // Apply file key mapping after multer processing
134
121
  applyFileKeyMapping(request, fileConfig, interceptorOptions);
135
122
  return next.handle();
136
123
  }
137
124
  };
138
125
  }
126
+ //# sourceMappingURL=file-storage.interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-storage.interceptor.js","sourceRoot":"","sources":["../../../src/lib/interceptor/file-storage.interceptor.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,3 @@ export declare class NestFileStorageModule {
6
6
  private static createAsyncProviders;
7
7
  private static createAsyncOptionsProvider;
8
8
  }
9
- //# sourceMappingURL=nest-file-storage.module.d.ts.map
@@ -1,8 +1,13 @@
1
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
+ };
2
8
  var NestFileStorageModule_1;
3
9
  Object.defineProperty(exports, "__esModule", { value: true });
4
10
  exports.NestFileStorageModule = void 0;
5
- const tslib_1 = require("tslib");
6
11
  const common_1 = require("@nestjs/common");
7
12
  const constants_1 = require("./constants");
8
13
  const file_storage_service_1 = require("./file-storage.service");
@@ -14,7 +19,7 @@ let NestFileStorageModule = NestFileStorageModule_1 = class NestFileStorageModul
14
19
  {
15
20
  provide: constants_1.FILE_STORAGE_OPTIONS,
16
21
  useFactory: async () => {
17
- file_storage_service_1.FileStorageService.setOptions(options); // ✅ Store globally
22
+ file_storage_service_1.FileStorageService.setOptions(options);
18
23
  return options;
19
24
  },
20
25
  inject: [],
@@ -69,6 +74,7 @@ let NestFileStorageModule = NestFileStorageModule_1 = class NestFileStorageModul
69
74
  }
70
75
  };
71
76
  exports.NestFileStorageModule = NestFileStorageModule;
72
- exports.NestFileStorageModule = NestFileStorageModule = NestFileStorageModule_1 = tslib_1.__decorate([
77
+ exports.NestFileStorageModule = NestFileStorageModule = NestFileStorageModule_1 = __decorate([
73
78
  (0, common_1.Module)({})
74
79
  ], NestFileStorageModule);
80
+ //# sourceMappingURL=nest-file-storage.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest-file-storage.module.js","sourceRoot":"","sources":["../../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,KAAK,IAAI,EAAE;wBACnB,yCAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;wBACvC,OAAO,OAAO,CAAC;oBACnB,CAAC;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,KAAK,EAAE,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;gBACD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;aAC/B,CAAC;QACN,CAAC;QAED,OAAO;YACH,OAAO,EAAE,gCAAoB;YAC7B,UAAU,EAAE,KAAK,EAAE,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;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"}
@@ -16,4 +16,3 @@ export declare class AzureStorage implements StorageEngine, Storage {
16
16
  deleteFile(key: string): Promise<void>;
17
17
  copyFile(oldKey: string, newKey: string): Promise<UploadedFile>;
18
18
  }
19
- //# sourceMappingURL=azure.storage.d.ts.map
@@ -1,13 +1,52 @@
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.AzureStorage = void 0;
4
- const tslib_1 = require("tslib");
5
40
  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"));
41
+ const concat_stream_1 = __importDefault(require("concat-stream"));
42
+ const moment_1 = __importDefault(require("moment"));
43
+ const path_1 = __importStar(require("path"));
9
44
  const uuid_1 = require("uuid");
10
45
  class AzureStorage {
46
+ options;
47
+ blobServiceClient;
48
+ fileNameFunction;
49
+ fileDistFunction;
11
50
  constructor(options) {
12
51
  this.options = options;
13
52
  this.fileNameFunction = options.fileName || ((file, _req) => {
@@ -69,16 +108,15 @@ class AzureStorage {
69
108
  const containerClient = this.blobServiceClient.getContainerClient(this.options.container);
70
109
  const blobClient = containerClient.getBlobClient(key);
71
110
  const sharedKeyCredential = new storage_blob_1.StorageSharedKeyCredential(this.options.account, this.options.accountKey);
72
- // Set the SAS token options
73
111
  const expiresOn = new Date();
74
- expiresOn.setHours(expiresOn.getHours() + 1); // Set expiration time to 1 hour from now
112
+ expiresOn.setHours(expiresOn.getHours() + 1);
75
113
  const sasToken = (0, storage_blob_1.generateBlobSASQueryParameters)({
76
114
  containerName: this.options.container,
77
115
  blobName: key,
78
- permissions: storage_blob_1.BlobSASPermissions.parse('r'), // Read permissions
79
- protocol: storage_blob_1.SASProtocol.Https, // HTTPS only
80
- startsOn: new Date(), // Start time (now)
81
- expiresOn, // Expiration time
116
+ permissions: storage_blob_1.BlobSASPermissions.parse('r'),
117
+ protocol: storage_blob_1.SASProtocol.Https,
118
+ startsOn: new Date(),
119
+ expiresOn,
82
120
  ...signatureValues,
83
121
  }, sharedKeyCredential).toString();
84
122
  return `${blobClient.url}?${sasToken}`;
@@ -151,3 +189,4 @@ class AzureStorage {
151
189
  }
152
190
  }
153
191
  exports.AzureStorage = AzureStorage;
192
+ //# sourceMappingURL=azure.storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure.storage.js","sourceRoot":"","sources":["../../../src/lib/storage/azure.storage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAO6B;AAC7B,kEAAmC;AACnC,oDAA4B;AAE5B,6CAA4C;AAC5C,+BAAoC;AAKpC,MAAa,YAAY;IAQD;IANZ,iBAAiB,CAAoB;IAErC,gBAAgB,CAAqE;IACrF,gBAAgB,CAAqE;IAG7F,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;IAED,KAAK,CAAC,WAAW,CACb,GAAQ,EACR,IAAS,EACT,EAAqC;QAErC,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAEjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAA,uBAAM,EAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC7D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAE1D,MAAM,QAAQ,GAAiB;oBAC3B,GAAG,YAAY;oBACf,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBAC1B,CAAC;gBACF,IAAI,aAAa,GAAG,QAAQ,CAAC;gBAE7B,IAAI,IAAI,CAAC,OAAO,EAAE,2BAA2B,EAAE,CAAC;oBAC5C,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;gBAC7E,CAAC;gBACD,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,EAAE,CAAC,KAAK,CAAC,CAAC;QACd,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,WAAW,CACb,IAAS,EACT,IAAS,EACT,EAAiC;QAEjC,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB;iBACpC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;iBAC1C,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE7B,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;YAC1B,EAAE,CAAC,IAAI,CAAC,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,EAAE,CAAC,KAAK,CAAC,CAAC;QACd,CAAC;IACL,CAAC;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,EAAE,CAAC;QAEpB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAE9D,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,EAC3C;YACI,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACrC,QAAQ,EAAE,GAAG;YACb,WAAW,EAAE,iCAAkB,CAAC,KAAK,CAAC,GAAG,CAAC;YAC1C,QAAQ,EAAE,0BAAW,CAAC,KAAK;YAC3B,QAAQ,EAAE,IAAI,IAAI,EAAE;YACpB,SAAS;YACT,GAAG,eAAe;SACrB,EACD,mBAAmB,CACtB,CAAC,QAAQ,EAAE,CAAC;QAEb,OAAO,GAAG,UAAU,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACrB,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;QACtD,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;QAEnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAClD,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,GAAW;QACrC,IAAI,CAAC;YACD,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1F,MAAM,eAAe,GAAG,eAAe,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAEhE,MAAM,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEzC,MAAM,QAAQ,GAAiB;gBAC3B,YAAY,EAAE,IAAA,eAAQ,EAAC,GAAG,CAAC;gBAC3B,QAAQ,EAAE,IAAA,eAAQ,EAAC,GAAG,CAAC;gBACvB,IAAI,EAAE,MAAM,CAAC,MAAM;gBACnB,MAAM;gBACN,GAAG;gBACH,QAAQ,EAAE,GAAG;gBACb,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;aACxB,CAAC;YAEF,OAAO,QAAQ,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;YACvD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QACxB,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB;iBACpC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;iBAC1C,aAAa,CAAC,GAAG,CAAC,CAAC;YAExB,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,MAAc;QACzC,IAAI,CAAC;YACD,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1F,MAAM,gBAAgB,GAAG,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,qBAAqB,GAAG,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAEpE,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACtF,MAAM,UAAU,CAAC,aAAa,EAAE,CAAC;YAEjC,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,CAAC;YAE/D,OAAO;gBACH,YAAY,EAAE,IAAA,eAAQ,EAAC,MAAM,CAAC;gBAC9B,IAAI,EAAE,UAAU,CAAC,aAAa,IAAI,CAAC;gBACnC,QAAQ,EAAE,IAAA,eAAQ,EAAC,MAAM,CAAC;gBAC1B,GAAG,EAAE,MAAM;gBACX,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;aAC3B,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;CAGJ;AApMD,oCAoMC"}
@@ -5,22 +5,8 @@ export declare class LocalStorage implements StorageEngine, Storage {
5
5
  private rootPath;
6
6
  private fileNameFunction;
7
7
  private fileDistFunction;
8
- /**
9
- * Convert OS-specific file path to URL-friendly key
10
- * This ensures keys are consistent across all platforms
11
- * Windows: C:\uploads\2024\01\file.jpg -> 2024/01/file.jpg
12
- * Unix: /uploads/2024/01/file.jpg -> 2024/01/file.jpg
13
- */
14
8
  private pathToUrl;
15
- /**
16
- * Convert URL-friendly key to OS-specific file path
17
- * This converts stored keys back to valid file system paths
18
- * 2024/01/file.jpg -> Windows: 2024\01\file.jpg, Unix: 2024/01/file.jpg
19
- */
20
9
  private urlToPath;
21
- /**
22
- * Get full file system path from URL-friendly key
23
- */
24
10
  private getFullPath;
25
11
  constructor(options: LocalStorageOptions);
26
12
  _handleFile(req: any, file: Express.Multer.File, cb: (error?: any, info?: any) => void): Promise<void>;
@@ -32,4 +18,3 @@ export declare class LocalStorage implements StorageEngine, Storage {
32
18
  path(urlKey: string): string;
33
19
  copyFile(oldUrlKey: string, newUrlKey: string): Promise<UploadedFile>;
34
20
  }
35
- //# sourceMappingURL=local.storage.d.ts.map
@@ -1,52 +1,73 @@
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.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"));
40
+ const concat_stream_1 = __importDefault(require("concat-stream"));
41
+ const fs = __importStar(require("fs"));
42
+ const moment_1 = __importDefault(require("moment"));
8
43
  const path_1 = require("path");
9
44
  const uuid_1 = require("uuid");
10
45
  class LocalStorage {
11
- /**
12
- * Convert OS-specific file path to URL-friendly key
13
- * This ensures keys are consistent across all platforms
14
- * Windows: C:\uploads\2024\01\file.jpg -> 2024/01/file.jpg
15
- * Unix: /uploads/2024/01/file.jpg -> 2024/01/file.jpg
16
- */
46
+ options;
47
+ rootPath;
48
+ fileNameFunction;
49
+ fileDistFunction;
17
50
  pathToUrl(filePath) {
18
51
  if (!filePath)
19
52
  return '';
20
- // Remove rootPath if present
21
53
  let relativePath = filePath;
22
54
  if (filePath.startsWith(this.rootPath)) {
23
55
  relativePath = filePath.substring(this.rootPath.length);
24
56
  }
25
- // Convert backslashes to forward slashes and remove leading slash
26
57
  return relativePath.replace(/\\/g, '/').replace(/^\/+/, '');
27
58
  }
28
- /**
29
- * Convert URL-friendly key to OS-specific file path
30
- * This converts stored keys back to valid file system paths
31
- * 2024/01/file.jpg -> Windows: 2024\01\file.jpg, Unix: 2024/01/file.jpg
32
- */
33
59
  urlToPath(urlKey) {
34
60
  if (!urlKey)
35
61
  return '';
36
- // Split by forward slashes and rejoin with OS-specific separator
37
62
  const parts = urlKey.split('/').filter(part => part.length > 0);
38
63
  return parts.join(path_1.sep);
39
64
  }
40
- /**
41
- * Get full file system path from URL-friendly key
42
- */
43
65
  getFullPath(urlKey) {
44
66
  const osPath = this.urlToPath(urlKey);
45
67
  return (0, path_1.join)(this.rootPath, osPath);
46
68
  }
47
69
  constructor(options) {
48
70
  this.options = options;
49
- // Normalize path for the current OS
50
71
  this.rootPath = (0, path_1.normalize)(options.rootPath || (0, path_1.join)(process.cwd(), 'public'));
51
72
  this.fileNameFunction = options.fileName || ((file, _req) => {
52
73
  return `${(0, uuid_1.v4)()}-${file.originalname}`;
@@ -54,7 +75,6 @@ class LocalStorage {
54
75
  this.fileDistFunction = options.fileDist || ((_file, _req) => {
55
76
  return (0, path_1.join)(this.rootPath, (0, moment_1.default)().format('YYYY'), (0, moment_1.default)().format('MM'), (0, moment_1.default)().format('DD'));
56
77
  });
57
- // Ensure the rootPath directory exists
58
78
  if (!fs.existsSync(this.rootPath)) {
59
79
  fs.mkdirSync(this.rootPath, { recursive: true });
60
80
  }
@@ -64,7 +84,6 @@ class LocalStorage {
64
84
  const dist = await this.fileDistFunction(file, req);
65
85
  const fileName = await this.fileNameFunction(file, req);
66
86
  const filePath = (0, path_1.join)(dist, fileName);
67
- // Convert to URL-friendly key for storage
68
87
  const urlKey = this.pathToUrl(filePath);
69
88
  file.stream.pipe((0, concat_stream_1.default)({ encoding: 'buffer' }, async (buffer) => {
70
89
  const uploadedFile = await this.putFile(buffer, urlKey);
@@ -104,28 +123,22 @@ class LocalStorage {
104
123
  if (!urlKey) {
105
124
  return '';
106
125
  }
107
- // Key is already in URL format (forward slashes)
108
- // Ensure baseUrl doesn't end with slash and key doesn't start with slash
109
126
  const baseUrl = this.options.baseUrl.replace(/\/$/, '');
110
127
  const cleanKey = urlKey.replace(/^\//, '');
111
128
  return `${baseUrl}/${cleanKey}`;
112
129
  }
113
130
  async getFile(urlKey) {
114
- // Convert URL key to OS-specific path
115
131
  const fullPath = this.getFullPath(urlKey);
116
132
  return fs.promises.readFile(fullPath);
117
133
  }
118
134
  async deleteFile(urlKey) {
119
- // Convert URL key to OS-specific path
120
135
  const fullPath = this.getFullPath(urlKey);
121
136
  return fs.promises.unlink(fullPath);
122
137
  }
123
138
  async putFile(fileContent, urlKey) {
124
139
  return new Promise((putFileResolve, reject) => {
125
- // Convert URL key to OS-specific path
126
140
  const filePath = this.getFullPath(urlKey);
127
141
  const directoryPath = (0, path_1.dirname)(filePath);
128
- // Create the directory if it doesn't exist
129
142
  fs.mkdirSync(directoryPath, { recursive: true });
130
143
  fs.writeFile(filePath, fileContent, (err) => {
131
144
  if (err) {
@@ -150,12 +163,10 @@ class LocalStorage {
150
163
  if (!urlKey) {
151
164
  return '';
152
165
  }
153
- // Convert URL key to full OS-specific path
154
166
  return this.getFullPath(urlKey);
155
167
  }
156
168
  async copyFile(oldUrlKey, newUrlKey) {
157
169
  return new Promise((resolve, reject) => {
158
- // Convert URL keys to OS-specific paths
159
170
  const oldPath = this.getFullPath(oldUrlKey);
160
171
  const newPath = this.getFullPath(newUrlKey);
161
172
  const directoryPath = (0, path_1.dirname)(newPath);
@@ -181,3 +192,4 @@ class LocalStorage {
181
192
  }
182
193
  }
183
194
  exports.LocalStorage = LocalStorage;
195
+ //# sourceMappingURL=local.storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.storage.js","sourceRoot":"","sources":["../../../src/lib/storage/local.storage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAAmC;AACnC,uCAAyB;AACzB,oDAA4B;AAG5B,+BAA+D;AAE/D,+BAAoC;AAKpC,MAAa,YAAY;IA8CD;IA5CZ,QAAQ,CAAS;IACjB,gBAAgB,CAAqE;IACrF,gBAAgB,CAAqE;IAQrF,SAAS,CAAC,QAAgB;QAC9B,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAGzB,IAAI,YAAY,GAAG,QAAQ,CAAC;QAC5B,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC;QAGD,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;IAOO,SAAS,CAAC,MAAc;QAC5B,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAGvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC,IAAI,CAAC,UAAG,CAAC,CAAC;IAC3B,CAAC;IAKO,WAAW,CAAC,MAAc;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,YAAoB,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;QAE5C,IAAI,CAAC,QAAQ,GAAG,IAAA,gBAAS,EAAC,OAAO,CAAC,QAAQ,IAAI,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QAE7E,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,IAAA,WAAI,EAAC,IAAI,CAAC,QAAQ,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;QACtG,CAAC,CAAC,CAAC;QAIH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CACb,GAAQ,EACR,IAAyB,EACzB,EAAqC;QAErC,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAExD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAExC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAA,uBAAM,EAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC7D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAExD,MAAM,QAAQ,GAAiB;oBAC3B,GAAG,YAAY;oBACf,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBAC1B,CAAC;gBACF,IAAI,aAAa,GAAG,QAAQ,CAAC;gBAE7B,IAAI,IAAI,CAAC,OAAO,EAAE,2BAA2B,EAAE,CAAC;oBAC5C,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;gBAC7E,CAAC;gBACD,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC9B,EAAE,CAAC,KAAK,CAAC,CAAC;QACd,CAAC;IACL,CAAC;IAED,WAAW,CACP,IAAS,EACT,IAAS,EACT,EAAiC;QAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAE3B,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,IAAI,GAAG,EAAE,CAAC;gBACN,EAAE,CAAC,GAAG,CAAC,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACJ,EAAE,CAAC,IAAI,CAAC,CAAC;YACb,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,MAAc;QACjB,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC;QAID,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE3C,OAAO,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,OAAO,CACT,WAAmB,EACnB,MAAc;QAEd,OAAO,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE;YAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE1C,MAAM,aAAa,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;YAGxC,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxC,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;oBACZ,OAAO;gBACX,CAAC;gBAED,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC;gBAEnD,MAAM,QAAQ,GAAiB;oBAC3B,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,QAAQ,EAAE,QAAQ;oBAClB,GAAG,EAAE,MAAM;oBACX,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;oBACxB,QAAQ,EAAE,QAAQ;iBACrB,CAAC;gBACF,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,IAAI,CAAC,MAAc;QACf,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,SAAiB;QAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAE5C,MAAM,aAAa,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,CAAC;YACvC,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjD,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAClC,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;oBACZ,OAAO;gBACX,CAAC;gBAED,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACnC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;gBAEzD,MAAM,QAAQ,GAAiB;oBAC3B,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,QAAQ,EAAE,QAAQ;oBAClB,GAAG,EAAE,SAAS;oBACd,QAAQ,EAAE,OAAO;oBACjB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;iBAC9B,CAAC;gBACF,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CAGJ;AA5ND,oCA4NC"}
@@ -17,4 +17,3 @@ export declare class S3Storage implements StorageEngine, Storage {
17
17
  private streamToBuffer;
18
18
  copyFile(oldKey: string, newKey: string): Promise<UploadedFile>;
19
19
  }
20
- //# sourceMappingURL=s3.storage.d.ts.map