ceph-link 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/app.controller.d.ts +7 -0
  2. package/dist/app.controller.d.ts.map +1 -0
  3. package/dist/app.controller.js +34 -0
  4. package/dist/app.controller.js.map +1 -0
  5. package/dist/app.module.d.ts +3 -0
  6. package/dist/app.module.d.ts.map +1 -0
  7. package/dist/app.module.js +29 -0
  8. package/dist/app.module.js.map +1 -0
  9. package/dist/app.service.d.ts +4 -0
  10. package/dist/app.service.d.ts.map +1 -0
  11. package/dist/app.service.js +20 -0
  12. package/dist/app.service.js.map +1 -0
  13. package/dist/ceph-s3-sdk.d.ts +15 -0
  14. package/dist/ceph-s3-sdk.d.ts.map +1 -0
  15. package/dist/ceph-s3-sdk.js +27 -0
  16. package/dist/ceph-s3-sdk.js.map +1 -0
  17. package/dist/ceph-s3-sdk.module.d.ts +10 -0
  18. package/dist/ceph-s3-sdk.module.d.ts.map +1 -0
  19. package/dist/ceph-s3-sdk.module.js +72 -0
  20. package/dist/ceph-s3-sdk.module.js.map +1 -0
  21. package/dist/cephcore-sdk.d.ts +44 -0
  22. package/dist/cephcore-sdk.d.ts.map +1 -0
  23. package/dist/cephcore-sdk.js +98 -0
  24. package/dist/cephcore-sdk.js.map +1 -0
  25. package/dist/config/ceph-s3-config.service.d.ts +7 -0
  26. package/dist/config/ceph-s3-config.service.d.ts.map +1 -0
  27. package/dist/config/ceph-s3-config.service.js +41 -0
  28. package/dist/config/ceph-s3-config.service.js.map +1 -0
  29. package/dist/core/types.d.ts +22 -0
  30. package/dist/core/types.d.ts.map +1 -0
  31. package/dist/core/types.js +3 -0
  32. package/dist/core/types.js.map +1 -0
  33. package/dist/dto/bucket.dto.d.ts +9 -0
  34. package/dist/dto/bucket.dto.d.ts.map +1 -0
  35. package/dist/dto/bucket.dto.js +40 -0
  36. package/dist/dto/bucket.dto.js.map +1 -0
  37. package/dist/dto/object.dto.d.ts +14 -0
  38. package/dist/dto/object.dto.d.ts.map +1 -0
  39. package/dist/dto/object.dto.js +65 -0
  40. package/dist/dto/object.dto.js.map +1 -0
  41. package/dist/exceptions/ceph-exceptions.d.ts +28 -0
  42. package/dist/exceptions/ceph-exceptions.d.ts.map +1 -0
  43. package/dist/exceptions/ceph-exceptions.js +56 -0
  44. package/dist/exceptions/ceph-exceptions.js.map +1 -0
  45. package/dist/helpers/download-helper.d.ts +32 -0
  46. package/dist/helpers/download-helper.d.ts.map +1 -0
  47. package/dist/helpers/download-helper.js +218 -0
  48. package/dist/helpers/download-helper.js.map +1 -0
  49. package/dist/helpers/search-helper.d.ts +57 -0
  50. package/dist/helpers/search-helper.d.ts.map +1 -0
  51. package/dist/helpers/search-helper.js +279 -0
  52. package/dist/helpers/search-helper.js.map +1 -0
  53. package/dist/helpers/upload-helper.d.ts +37 -0
  54. package/dist/helpers/upload-helper.d.ts.map +1 -0
  55. package/dist/helpers/upload-helper.js +204 -0
  56. package/dist/helpers/upload-helper.js.map +1 -0
  57. package/dist/index.d.ts +26 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +65 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/interfaces/bucket.interface.d.ts +26 -0
  62. package/dist/interfaces/bucket.interface.d.ts.map +1 -0
  63. package/dist/interfaces/bucket.interface.js +3 -0
  64. package/dist/interfaces/bucket.interface.js.map +1 -0
  65. package/dist/interfaces/ceph-s3-options.interface.d.ts +38 -0
  66. package/dist/interfaces/ceph-s3-options.interface.d.ts.map +1 -0
  67. package/dist/interfaces/ceph-s3-options.interface.js +3 -0
  68. package/dist/interfaces/ceph-s3-options.interface.js.map +1 -0
  69. package/dist/interfaces/config.interface.d.ts +23 -0
  70. package/dist/interfaces/config.interface.d.ts.map +1 -0
  71. package/dist/interfaces/config.interface.js +3 -0
  72. package/dist/interfaces/config.interface.js.map +1 -0
  73. package/dist/interfaces/file.interface.d.ts +54 -0
  74. package/dist/interfaces/file.interface.d.ts.map +1 -0
  75. package/dist/interfaces/file.interface.js +3 -0
  76. package/dist/interfaces/file.interface.js.map +1 -0
  77. package/dist/interfaces/folder.interface.d.ts +31 -0
  78. package/dist/interfaces/folder.interface.d.ts.map +1 -0
  79. package/dist/interfaces/folder.interface.js +3 -0
  80. package/dist/interfaces/folder.interface.js.map +1 -0
  81. package/dist/main.d.ts +2 -0
  82. package/dist/main.d.ts.map +1 -0
  83. package/dist/main.js +10 -0
  84. package/dist/main.js.map +1 -0
  85. package/dist/managers/bucket-manager.d.ts +36 -0
  86. package/dist/managers/bucket-manager.d.ts.map +1 -0
  87. package/dist/managers/bucket-manager.js +195 -0
  88. package/dist/managers/bucket-manager.js.map +1 -0
  89. package/dist/managers/file-manager.d.ts +35 -0
  90. package/dist/managers/file-manager.d.ts.map +1 -0
  91. package/dist/managers/file-manager.js +238 -0
  92. package/dist/managers/file-manager.js.map +1 -0
  93. package/dist/managers/folder-manager.d.ts +31 -0
  94. package/dist/managers/folder-manager.d.ts.map +1 -0
  95. package/dist/managers/folder-manager.js +231 -0
  96. package/dist/managers/folder-manager.js.map +1 -0
  97. package/dist/services/bucket.service.d.ts +16 -0
  98. package/dist/services/bucket.service.d.ts.map +1 -0
  99. package/dist/services/bucket.service.js +176 -0
  100. package/dist/services/bucket.service.js.map +1 -0
  101. package/dist/services/ceph-s3.service.d.ts +14 -0
  102. package/dist/services/ceph-s3.service.d.ts.map +1 -0
  103. package/dist/services/ceph-s3.service.js +59 -0
  104. package/dist/services/ceph-s3.service.js.map +1 -0
  105. package/dist/services/file.service.d.ts +19 -0
  106. package/dist/services/file.service.d.ts.map +1 -0
  107. package/dist/services/file.service.js +85 -0
  108. package/dist/services/file.service.js.map +1 -0
  109. package/dist/services/folder.service.d.ts +21 -0
  110. package/dist/services/folder.service.d.ts.map +1 -0
  111. package/dist/services/folder.service.js +181 -0
  112. package/dist/services/folder.service.js.map +1 -0
  113. package/dist/services/object.service.d.ts +24 -0
  114. package/dist/services/object.service.d.ts.map +1 -0
  115. package/dist/services/object.service.js +231 -0
  116. package/dist/services/object.service.js.map +1 -0
  117. package/dist/services/storage.service.d.ts +36 -0
  118. package/dist/services/storage.service.d.ts.map +1 -0
  119. package/dist/services/storage.service.js +165 -0
  120. package/dist/services/storage.service.js.map +1 -0
  121. package/dist/utils/error.utils.d.ts +41 -0
  122. package/dist/utils/error.utils.d.ts.map +1 -0
  123. package/dist/utils/error.utils.js +111 -0
  124. package/dist/utils/error.utils.js.map +1 -0
  125. package/dist/utils/mime-helper.d.ts +10 -0
  126. package/dist/utils/mime-helper.d.ts.map +1 -0
  127. package/dist/utils/mime-helper.js +87 -0
  128. package/dist/utils/mime-helper.js.map +1 -0
  129. package/dist/utils/path-helper.d.ts +12 -0
  130. package/dist/utils/path-helper.d.ts.map +1 -0
  131. package/dist/utils/path-helper.js +46 -0
  132. package/dist/utils/path-helper.js.map +1 -0
  133. package/dist/utils/validators.d.ts +37 -0
  134. package/dist/utils/validators.d.ts.map +1 -0
  135. package/dist/utils/validators.js +218 -0
  136. package/dist/utils/validators.js.map +1 -0
  137. package/package.json +3 -5
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.FileManager = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const object_service_1 = require("../services/object.service");
15
+ const path_helper_1 = require("../utils/path-helper");
16
+ const mime_helper_1 = require("../utils/mime-helper");
17
+ const ceph_exceptions_1 = require("../exceptions/ceph-exceptions");
18
+ let FileManager = class FileManager {
19
+ constructor(objectService) {
20
+ this.objectService = objectService;
21
+ }
22
+ // ================== UPLOAD OPERATIONS ==================
23
+ async uploadFile(bucket, filePath, content, options) {
24
+ const normalizedPath = path_helper_1.PathHelper.normalizePath(filePath);
25
+ if (!path_helper_1.PathHelper.isValidPath(normalizedPath)) {
26
+ throw new ceph_exceptions_1.InvalidFileError('Invalid file path');
27
+ }
28
+ const fileName = path_helper_1.PathHelper.getFileName(normalizedPath);
29
+ const contentType = options?.contentType || mime_helper_1.MimeHelper.getMimeType(fileName);
30
+ const etag = await this.objectService.uploadObject(bucket, normalizedPath, content, {
31
+ contentType,
32
+ metadata: options?.metadata,
33
+ acl: options?.acl,
34
+ serverSideEncryption: options?.serverSideEncryption,
35
+ });
36
+ return this.getFileInfo(bucket, normalizedPath);
37
+ }
38
+ async uploadFileFromPath(bucket, localFilePath, remoteFilePath, options) {
39
+ const fs = require('fs');
40
+ const path = require('path');
41
+ if (!fs.existsSync(localFilePath)) {
42
+ throw new ceph_exceptions_1.InvalidFileError(`Local file does not exist: ${localFilePath}`);
43
+ }
44
+ const fileName = path.basename(localFilePath);
45
+ const targetPath = remoteFilePath || fileName;
46
+ const fileContent = fs.readFileSync(localFilePath);
47
+ return this.uploadFile(bucket, targetPath, fileContent, {
48
+ ...options,
49
+ contentType: options?.contentType || mime_helper_1.MimeHelper.getMimeType(fileName),
50
+ });
51
+ }
52
+ async uploadMultipleFiles(bucket, files, onProgress) {
53
+ const results = [];
54
+ for (let i = 0; i < files.length; i++) {
55
+ const file = files[i];
56
+ const uploadedFile = await this.uploadFile(bucket, file.path, file.content, file.options);
57
+ results.push(uploadedFile);
58
+ if (onProgress) {
59
+ onProgress(i + 1, files.length);
60
+ }
61
+ }
62
+ return results;
63
+ }
64
+ // ================== DOWNLOAD OPERATIONS ==================
65
+ async downloadFile(bucket, filePath, options) {
66
+ const normalizedPath = path_helper_1.PathHelper.normalizePath(filePath);
67
+ const exists = await this.fileExists(bucket, normalizedPath);
68
+ if (!exists) {
69
+ throw new ceph_exceptions_1.FileNotFoundError(normalizedPath);
70
+ }
71
+ return this.objectService.downloadObject(bucket, normalizedPath);
72
+ }
73
+ async downloadFileAsText(bucket, filePath, encoding = 'utf8') {
74
+ const buffer = await this.downloadFile(bucket, filePath);
75
+ return buffer.toString(encoding);
76
+ }
77
+ async downloadFileAsJson(bucket, filePath) {
78
+ const text = await this.downloadFileAsText(bucket, filePath);
79
+ try {
80
+ return JSON.parse(text);
81
+ }
82
+ catch (error) {
83
+ throw new ceph_exceptions_1.InvalidFileError('File is not valid JSON');
84
+ }
85
+ }
86
+ async downloadFileToPath(bucket, remoteFilePath, localFilePath, options) {
87
+ const fs = require('fs');
88
+ const path = require('path');
89
+ const buffer = await this.downloadFile(bucket, remoteFilePath, options);
90
+ // Ensure directory exists
91
+ const directory = path.dirname(localFilePath);
92
+ if (!fs.existsSync(directory)) {
93
+ fs.mkdirSync(directory, { recursive: true });
94
+ }
95
+ fs.writeFileSync(localFilePath, buffer);
96
+ }
97
+ // ================== FILE INFORMATION ==================
98
+ async getFileInfo(bucket, filePath) {
99
+ const normalizedPath = path_helper_1.PathHelper.normalizePath(filePath);
100
+ try {
101
+ const metadata = await this.objectService.getObjectMetadata(bucket, normalizedPath);
102
+ const fileName = path_helper_1.PathHelper.getFileName(normalizedPath);
103
+ return {
104
+ key: normalizedPath,
105
+ name: fileName,
106
+ size: metadata.contentLength,
107
+ lastModified: new Date(metadata.lastModified),
108
+ etag: metadata.etag,
109
+ contentType: metadata.contentType,
110
+ isFolder: false,
111
+ metadata: metadata.metadata,
112
+ };
113
+ }
114
+ catch (error) {
115
+ throw new ceph_exceptions_1.FileNotFoundError(normalizedPath);
116
+ }
117
+ }
118
+ async fileExists(bucket, filePath) {
119
+ const normalizedPath = path_helper_1.PathHelper.normalizePath(filePath);
120
+ return this.objectService.objectExists(bucket, normalizedPath);
121
+ }
122
+ async getFileSize(bucket, filePath) {
123
+ const fileInfo = await this.getFileInfo(bucket, filePath);
124
+ return fileInfo.size;
125
+ }
126
+ async getFileUrl(bucket, filePath, expiresIn = 3600) {
127
+ const normalizedPath = path_helper_1.PathHelper.normalizePath(filePath);
128
+ return this.objectService.generatePresignedUrl(bucket, normalizedPath, 'getObject', { expiresIn });
129
+ }
130
+ // ================== FILE OPERATIONS ==================
131
+ async copyFile(sourceBucket, sourceFile, destBucket, destFile, options) {
132
+ const normalizedSource = path_helper_1.PathHelper.normalizePath(sourceFile);
133
+ const normalizedDest = path_helper_1.PathHelper.normalizePath(destFile);
134
+ await this.objectService.copyObject(sourceBucket, normalizedSource, destBucket, normalizedDest);
135
+ if (options?.newMetadata || options?.newContentType) {
136
+ // Update metadata if provided
137
+ const currentFile = await this.downloadFile(destBucket, normalizedDest);
138
+ await this.uploadFile(destBucket, normalizedDest, currentFile, {
139
+ contentType: options.newContentType,
140
+ metadata: options.newMetadata,
141
+ overwrite: true,
142
+ });
143
+ }
144
+ return this.getFileInfo(destBucket, normalizedDest);
145
+ }
146
+ async moveFile(sourceBucket, sourceFile, destBucket, destFile, options) {
147
+ const result = await this.copyFile(sourceBucket, sourceFile, destBucket, destFile, options);
148
+ await this.deleteFile(sourceBucket, sourceFile);
149
+ return result;
150
+ }
151
+ async renameFile(bucket, oldPath, newPath) {
152
+ return this.moveFile(bucket, oldPath, bucket, newPath);
153
+ }
154
+ async deleteFile(bucket, filePath) {
155
+ const normalizedPath = path_helper_1.PathHelper.normalizePath(filePath);
156
+ const exists = await this.fileExists(bucket, normalizedPath);
157
+ if (!exists) {
158
+ throw new ceph_exceptions_1.FileNotFoundError(normalizedPath);
159
+ }
160
+ await this.objectService.deleteObject(bucket, normalizedPath);
161
+ }
162
+ async deleteMultipleFiles(bucket, filePaths) {
163
+ const normalizedPaths = filePaths.map(path => path_helper_1.PathHelper.normalizePath(path));
164
+ await this.objectService.deleteObjects(bucket, normalizedPaths);
165
+ }
166
+ // ================== SEARCH & FILTER ==================
167
+ async searchFiles(bucket, options = {}) {
168
+ const listResult = await this.objectService.listObjects(bucket, {
169
+ prefix: options.prefix,
170
+ });
171
+ let files = listResult.objects.map(obj => ({
172
+ key: obj.key,
173
+ name: path_helper_1.PathHelper.getFileName(obj.key),
174
+ size: obj.size,
175
+ lastModified: obj.lastModified,
176
+ etag: obj.etag,
177
+ contentType: '',
178
+ isFolder: obj.key.endsWith('/'),
179
+ storageClass: obj.storageClass,
180
+ }));
181
+ // Apply filters
182
+ if (options.extension) {
183
+ const ext = options.extension.toLowerCase().replace('.', '');
184
+ files = files.filter(file => path_helper_1.PathHelper.getFileExtension(file.name) === ext);
185
+ }
186
+ if (options.minSize !== undefined) {
187
+ files = files.filter(file => file.size >= options.minSize);
188
+ }
189
+ if (options.maxSize !== undefined) {
190
+ files = files.filter(file => file.size <= options.maxSize);
191
+ }
192
+ if (options.modifiedAfter) {
193
+ files = files.filter(file => file.lastModified >= options.modifiedAfter);
194
+ }
195
+ if (options.modifiedBefore) {
196
+ files = files.filter(file => file.lastModified <= options.modifiedBefore);
197
+ }
198
+ return files;
199
+ }
200
+ async getFilesByExtension(bucket, extension, folderPath) {
201
+ return this.searchFiles(bucket, {
202
+ extension,
203
+ prefix: folderPath,
204
+ });
205
+ }
206
+ async getImageFiles(bucket, folderPath) {
207
+ const allFiles = await this.searchFiles(bucket, { prefix: folderPath });
208
+ return allFiles.filter(file => mime_helper_1.MimeHelper.isImage(file.name));
209
+ }
210
+ async getDocumentFiles(bucket, folderPath) {
211
+ const allFiles = await this.searchFiles(bucket, { prefix: folderPath });
212
+ return allFiles.filter(file => mime_helper_1.MimeHelper.isDocument(file.name));
213
+ }
214
+ async getVideoFiles(bucket, folderPath) {
215
+ const allFiles = await this.searchFiles(bucket, { prefix: folderPath });
216
+ return allFiles.filter(file => mime_helper_1.MimeHelper.isVideo(file.name));
217
+ }
218
+ async getRecentFiles(bucket, days = 7, folderPath) {
219
+ const cutoffDate = new Date();
220
+ cutoffDate.setDate(cutoffDate.getDate() - days);
221
+ return this.searchFiles(bucket, {
222
+ prefix: folderPath,
223
+ modifiedAfter: cutoffDate,
224
+ });
225
+ }
226
+ async getLargeFiles(bucket, minSizeMB = 10, folderPath) {
227
+ return this.searchFiles(bucket, {
228
+ prefix: folderPath,
229
+ minSize: minSizeMB * 1024 * 1024,
230
+ });
231
+ }
232
+ };
233
+ exports.FileManager = FileManager;
234
+ exports.FileManager = FileManager = __decorate([
235
+ (0, common_1.Injectable)(),
236
+ __metadata("design:paramtypes", [object_service_1.ObjectService])
237
+ ], FileManager);
238
+ //# sourceMappingURL=file-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-manager.js","sourceRoot":"","sources":["../../src/managers/file-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { FolderService } from '../services/folder.service';
2
+ import { FileManager } from './file-manager';
3
+ import { CephFolder, FolderContents, FolderCreateOptions, FolderListOptions } from '../interfaces/folder.interface';
4
+ import { CephFile } from '../interfaces/file.interface';
5
+ import { BucketName, FolderPath, FileSize } from '../core/types';
6
+ export declare class FolderManager {
7
+ private readonly folderService;
8
+ private readonly fileManager;
9
+ constructor(folderService: FolderService, fileManager: FileManager);
10
+ createFolder(bucket: BucketName, folderPath: FolderPath, options?: FolderCreateOptions): Promise<CephFolder>;
11
+ private createFolderRecursive;
12
+ getFolderInfo(bucket: BucketName, folderPath: FolderPath): Promise<CephFolder>;
13
+ private getSubfolderDetails;
14
+ getFolderContents(bucket: BucketName, folderPath?: FolderPath, options?: FolderListOptions): Promise<FolderContents>;
15
+ private sortFiles;
16
+ folderExists(bucket: BucketName, folderPath: FolderPath): Promise<boolean>;
17
+ getFolderSize(bucket: BucketName, folderPath: FolderPath): Promise<{
18
+ totalSize: FileSize;
19
+ fileCount: number;
20
+ }>;
21
+ copyFolder(sourceBucket: BucketName, sourceFolderPath: FolderPath, destBucket: BucketName, destFolderPath: FolderPath, onProgress?: (completed: number, total: number) => void): Promise<CephFolder>;
22
+ moveFolder(sourceBucket: BucketName, sourceFolderPath: FolderPath, destBucket: BucketName, destFolderPath: FolderPath): Promise<CephFolder>;
23
+ renameFolder(bucket: BucketName, oldPath: FolderPath, newPath: FolderPath): Promise<CephFolder>;
24
+ deleteFolder(bucket: BucketName, folderPath: FolderPath): Promise<void>;
25
+ getAllFolders(bucket: BucketName, rootPath?: FolderPath): Promise<string[]>;
26
+ getAllFiles(bucket: BucketName, folderPath?: FolderPath): Promise<CephFile[]>;
27
+ getFolderTree(bucket: BucketName, rootPath?: FolderPath): Promise<CephFolder>;
28
+ getEmptyFolders(bucket: BucketName, rootPath?: FolderPath): Promise<string[]>;
29
+ cleanupEmptyFolders(bucket: BucketName, rootPath?: FolderPath): Promise<string[]>;
30
+ }
31
+ //# sourceMappingURL=folder-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder-manager.d.ts","sourceRoot":"","sources":["../../src/managers/folder-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACpH,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEjE,qBACa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW;IAKrC,YAAY,CAChB,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,UAAU,CAAC;YAYR,qBAAqB;IAmB7B,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YAiBtE,mBAAmB;IAoB3B,iBAAiB,CACrB,MAAM,EAAE,UAAU,EAClB,UAAU,CAAC,EAAE,UAAU,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,cAAc,CAAC;IAsC1B,OAAO,CAAC,SAAS;IAwBX,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAK1E,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC;QACvE,SAAS,EAAE,QAAQ,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAOI,UAAU,CACd,YAAY,EAAE,UAAU,EACxB,gBAAgB,EAAE,UAAU,EAC5B,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,UAAU,EAC1B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACtD,OAAO,CAAC,UAAU,CAAC;IAShB,UAAU,CACd,YAAY,EAAE,UAAU,EACxB,gBAAgB,EAAE,UAAU,EAC5B,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,UAAU,GACzB,OAAO,CAAC,UAAU,CAAC;IAMhB,YAAY,CAChB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,UAAU,CAAC;IAIhB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAazE,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA+BzE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAiB7E,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAK7E,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAc7E,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAaxF"}
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.FolderManager = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const folder_service_1 = require("../services/folder.service");
15
+ const file_manager_1 = require("./file-manager");
16
+ const path_helper_1 = require("../utils/path-helper");
17
+ const ceph_exceptions_1 = require("../exceptions/ceph-exceptions");
18
+ let FolderManager = class FolderManager {
19
+ constructor(folderService, fileManager) {
20
+ this.folderService = folderService;
21
+ this.fileManager = fileManager;
22
+ }
23
+ // ================== FOLDER CREATION ==================
24
+ async createFolder(bucket, folderPath, options) {
25
+ const normalizedPath = path_helper_1.PathHelper.ensureTrailingSlash(path_helper_1.PathHelper.normalizePath(folderPath));
26
+ if (options?.recursive) {
27
+ await this.createFolderRecursive(bucket, normalizedPath, options);
28
+ }
29
+ else {
30
+ await this.folderService.createFolder(bucket, normalizedPath);
31
+ }
32
+ return this.getFolderInfo(bucket, normalizedPath);
33
+ }
34
+ async createFolderRecursive(bucket, folderPath, options) {
35
+ const parts = folderPath.split('/').filter(part => part.length > 0);
36
+ let currentPath = '';
37
+ for (const part of parts) {
38
+ currentPath += part + '/';
39
+ const exists = await this.folderExists(bucket, currentPath);
40
+ if (!exists) {
41
+ await this.folderService.createFolder(bucket, currentPath);
42
+ }
43
+ }
44
+ }
45
+ // ================== FOLDER INFORMATION ==================
46
+ async getFolderInfo(bucket, folderPath) {
47
+ const normalizedPath = path_helper_1.PathHelper.ensureTrailingSlash(path_helper_1.PathHelper.normalizePath(folderPath));
48
+ const contents = await this.getFolderContents(bucket, normalizedPath);
49
+ const name = path_helper_1.PathHelper.removeTrailingSlash(path_helper_1.PathHelper.getFileName(normalizedPath));
50
+ return {
51
+ path: normalizedPath,
52
+ name: name || 'root',
53
+ files: contents.files,
54
+ subfolders: await this.getSubfolderDetails(bucket, normalizedPath, contents.folders),
55
+ totalFiles: contents.totalFiles,
56
+ totalSize: contents.totalSize,
57
+ isEmpty: contents.totalFiles === 0 && contents.totalFolders === 0,
58
+ };
59
+ }
60
+ async getSubfolderDetails(bucket, basePath, folderNames) {
61
+ const subfolders = [];
62
+ for (const folderName of folderNames) {
63
+ const fullPath = path_helper_1.PathHelper.joinPaths(basePath, folderName) + '/';
64
+ try {
65
+ const folderInfo = await this.getFolderInfo(bucket, fullPath);
66
+ subfolders.push(folderInfo);
67
+ }
68
+ catch (error) {
69
+ // Skip folders that can't be accessed
70
+ }
71
+ }
72
+ return subfolders;
73
+ }
74
+ async getFolderContents(bucket, folderPath, options) {
75
+ const normalizedPath = folderPath ? path_helper_1.PathHelper.ensureTrailingSlash(path_helper_1.PathHelper.normalizePath(folderPath)) : '';
76
+ const contents = await this.folderService.listFolderContents(bucket, normalizedPath);
77
+ // Convert S3Object[] to CephFile[]
78
+ let files = contents.files.map(obj => ({
79
+ key: obj.key,
80
+ name: path_helper_1.PathHelper.getFileName(obj.key),
81
+ size: obj.size,
82
+ lastModified: obj.lastModified,
83
+ etag: obj.etag,
84
+ contentType: '', // Will be determined later if needed
85
+ isFolder: obj.key.endsWith('/'),
86
+ storageClass: obj.storageClass,
87
+ }));
88
+ // Apply sorting if specified
89
+ if (options?.sortBy) {
90
+ files = this.sortFiles(files, options.sortBy, options.sortOrder || 'asc');
91
+ }
92
+ // Apply limit if specified
93
+ if (options?.maxItems && options.maxItems > 0) {
94
+ files = files.slice(0, options.maxItems);
95
+ }
96
+ const totalSize = files.reduce((sum, file) => sum + file.size, 0);
97
+ return {
98
+ files,
99
+ folders: contents.folders,
100
+ totalFiles: files.length,
101
+ totalFolders: contents.folders.length,
102
+ totalSize,
103
+ };
104
+ }
105
+ sortFiles(files, sortBy, sortOrder) {
106
+ const sorted = [...files].sort((a, b) => {
107
+ let comparison = 0;
108
+ switch (sortBy) {
109
+ case 'name':
110
+ comparison = a.name.localeCompare(b.name);
111
+ break;
112
+ case 'size':
113
+ comparison = a.size - b.size;
114
+ break;
115
+ case 'modified':
116
+ comparison = a.lastModified.getTime() - b.lastModified.getTime();
117
+ break;
118
+ default:
119
+ comparison = 0;
120
+ }
121
+ return sortOrder === 'desc' ? -comparison : comparison;
122
+ });
123
+ return sorted;
124
+ }
125
+ async folderExists(bucket, folderPath) {
126
+ const normalizedPath = path_helper_1.PathHelper.ensureTrailingSlash(path_helper_1.PathHelper.normalizePath(folderPath));
127
+ return this.folderService.folderExists(bucket, normalizedPath);
128
+ }
129
+ async getFolderSize(bucket, folderPath) {
130
+ const normalizedPath = path_helper_1.PathHelper.ensureTrailingSlash(path_helper_1.PathHelper.normalizePath(folderPath));
131
+ return this.folderService.getFolderSize(bucket, normalizedPath);
132
+ }
133
+ // ================== FOLDER OPERATIONS ==================
134
+ async copyFolder(sourceBucket, sourceFolderPath, destBucket, destFolderPath, onProgress) {
135
+ const normalizedSource = path_helper_1.PathHelper.ensureTrailingSlash(path_helper_1.PathHelper.normalizePath(sourceFolderPath));
136
+ const normalizedDest = path_helper_1.PathHelper.ensureTrailingSlash(path_helper_1.PathHelper.normalizePath(destFolderPath));
137
+ await this.folderService.copyFolder(sourceBucket, normalizedSource, destBucket, normalizedDest);
138
+ return this.getFolderInfo(destBucket, normalizedDest);
139
+ }
140
+ async moveFolder(sourceBucket, sourceFolderPath, destBucket, destFolderPath) {
141
+ const result = await this.copyFolder(sourceBucket, sourceFolderPath, destBucket, destFolderPath);
142
+ await this.deleteFolder(sourceBucket, sourceFolderPath);
143
+ return result;
144
+ }
145
+ async renameFolder(bucket, oldPath, newPath) {
146
+ return this.moveFolder(bucket, oldPath, bucket, newPath);
147
+ }
148
+ async deleteFolder(bucket, folderPath) {
149
+ const normalizedPath = path_helper_1.PathHelper.ensureTrailingSlash(path_helper_1.PathHelper.normalizePath(folderPath));
150
+ const exists = await this.folderExists(bucket, normalizedPath);
151
+ if (!exists) {
152
+ throw new ceph_exceptions_1.FolderNotFoundError(normalizedPath);
153
+ }
154
+ await this.folderService.deleteFolder(bucket, normalizedPath);
155
+ }
156
+ // ================== ADVANCED FOLDER OPERATIONS ==================
157
+ async getAllFolders(bucket, rootPath) {
158
+ const normalizedRoot = rootPath ? path_helper_1.PathHelper.ensureTrailingSlash(path_helper_1.PathHelper.normalizePath(rootPath)) : '';
159
+ const allFolders = [];
160
+ const processed = new Set();
161
+ const processFolder = async (currentPath) => {
162
+ if (processed.has(currentPath))
163
+ return;
164
+ processed.add(currentPath);
165
+ try {
166
+ const contents = await this.getFolderContents(bucket, currentPath);
167
+ // Add current level folders
168
+ for (const folder of contents.folders) {
169
+ const fullPath = path_helper_1.PathHelper.joinPaths(currentPath, folder);
170
+ if (!allFolders.includes(fullPath)) {
171
+ allFolders.push(fullPath);
172
+ }
173
+ // Recursively process subfolders
174
+ await processFolder(fullPath + '/');
175
+ }
176
+ }
177
+ catch (error) {
178
+ // Skip folders that can't be accessed
179
+ }
180
+ };
181
+ await processFolder(normalizedRoot);
182
+ return allFolders.sort();
183
+ }
184
+ async getAllFiles(bucket, folderPath) {
185
+ const normalizedPath = folderPath ? path_helper_1.PathHelper.ensureTrailingSlash(path_helper_1.PathHelper.normalizePath(folderPath)) : '';
186
+ const allFiles = [];
187
+ const contents = await this.getFolderContents(bucket, normalizedPath);
188
+ allFiles.push(...contents.files);
189
+ // Recursively get files from subfolders
190
+ for (const folder of contents.folders) {
191
+ const fullPath = path_helper_1.PathHelper.joinPaths(normalizedPath, folder);
192
+ const subfolderFiles = await this.getAllFiles(bucket, fullPath);
193
+ allFiles.push(...subfolderFiles);
194
+ }
195
+ return allFiles;
196
+ }
197
+ async getFolderTree(bucket, rootPath) {
198
+ const normalizedRoot = rootPath ? path_helper_1.PathHelper.ensureTrailingSlash(path_helper_1.PathHelper.normalizePath(rootPath)) : '';
199
+ return this.getFolderInfo(bucket, normalizedRoot);
200
+ }
201
+ async getEmptyFolders(bucket, rootPath) {
202
+ const allFolders = await this.getAllFolders(bucket, rootPath);
203
+ const emptyFolders = [];
204
+ for (const folder of allFolders) {
205
+ const contents = await this.getFolderContents(bucket, folder);
206
+ if (contents.totalFiles === 0 && contents.totalFolders === 0) {
207
+ emptyFolders.push(folder);
208
+ }
209
+ }
210
+ return emptyFolders;
211
+ }
212
+ async cleanupEmptyFolders(bucket, rootPath) {
213
+ const emptyFolders = await this.getEmptyFolders(bucket, rootPath);
214
+ for (const folder of emptyFolders) {
215
+ try {
216
+ await this.deleteFolder(bucket, folder);
217
+ }
218
+ catch (error) {
219
+ // Continue with other folders if one fails
220
+ }
221
+ }
222
+ return emptyFolders;
223
+ }
224
+ };
225
+ exports.FolderManager = FolderManager;
226
+ exports.FolderManager = FolderManager = __decorate([
227
+ (0, common_1.Injectable)(),
228
+ __metadata("design:paramtypes", [folder_service_1.FolderService,
229
+ file_manager_1.FileManager])
230
+ ], FolderManager);
231
+ //# sourceMappingURL=folder-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder-manager.js","sourceRoot":"","sources":["../../src/managers/folder-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { CephS3Service } from './ceph-s3.service';
2
+ import { S3Bucket } from '../interfaces/ceph-s3-options.interface';
3
+ export declare class BucketService {
4
+ private readonly cephS3Service;
5
+ private readonly logger;
6
+ constructor(cephS3Service: CephS3Service);
7
+ createBucket(bucketName: string, region?: string): Promise<void>;
8
+ deleteBucket(bucketName: string, force?: boolean): Promise<void>;
9
+ listBuckets(): Promise<S3Bucket[]>;
10
+ bucketExists(bucketName: string): Promise<boolean>;
11
+ getBucketLocation(bucketName: string): Promise<string>;
12
+ setBucketPolicy(bucketName: string, policy: string): Promise<void>;
13
+ getBucketPolicy(bucketName: string): Promise<string>;
14
+ private emptyBucket;
15
+ }
16
+ //# sourceMappingURL=bucket.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bucket.service.d.ts","sourceRoot":"","sources":["../../src/services/bucket.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAGnE,qBACa,aAAa;IAGZ,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;gBAE5B,aAAa,EAAE,aAAa;IAEnD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ChE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBvE,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgBlC,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAclD,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAetD,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAelE,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAe5C,WAAW;CAuB1B"}