axiodb 2.21.71 → 2.24.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Services/Database/database.operation.d.ts +38 -3
- package/lib/Services/Database/database.operation.js +101 -3
- package/lib/Services/Database/database.operation.js.map +1 -1
- package/lib/Services/Indexation.operation.d.ts +1 -0
- package/lib/Services/Indexation.operation.js +8 -1
- package/lib/Services/Indexation.operation.js.map +1 -1
- package/lib/config/Interfaces/Operation/Indexation.operation.interface.d.ts +2 -0
- package/lib/config/Interfaces/Operation/database.operation.interface.d.ts +12 -0
- package/lib/config/Interfaces/Operation/database.operation.interface.js +1 -0
- package/lib/config/Interfaces/Operation/database.operation.interface.js.map +1 -1
- package/lib/engine/Filesystem/FileManager.js +62 -9
- package/lib/engine/Filesystem/FileManager.js.map +1 -1
- package/lib/engine/Filesystem/FolderManager.d.ts +15 -0
- package/lib/engine/Filesystem/FolderManager.js +151 -5
- package/lib/engine/Filesystem/FolderManager.js.map +1 -1
- package/lib/server/config/keys.d.ts +9 -9
- package/lib/server/config/keys.js +79 -33
- package/lib/server/config/keys.js.map +1 -1
- package/lib/server/controller/Collections/Collection.controller.d.ts +58 -0
- package/lib/server/controller/Collections/Collection.controller.js +156 -0
- package/lib/server/controller/Collections/Collection.controller.js.map +1 -0
- package/lib/server/helper/filesCounterInFolder.helper.d.ts +16 -0
- package/lib/server/helper/filesCounterInFolder.helper.js +49 -0
- package/lib/server/helper/filesCounterInFolder.helper.js.map +1 -0
- package/lib/server/public/AxioControl/.vite/manifest.json +2 -2
- package/lib/server/public/AxioControl/.vite/ssr-manifest.json +2 -0
- package/lib/server/public/AxioControl/assets/index--rWHSvem.css +1 -0
- package/lib/server/public/AxioControl/assets/index-1QePTOyA.js +56 -0
- package/lib/server/public/AxioControl/index.html +2 -2
- package/lib/server/public/AxioControl/sw.js +1 -1
- package/lib/server/router/Router.js +6 -0
- package/lib/server/router/Router.js.map +1 -1
- package/lib/server/router/Routers/Collection.routes.d.ts +7 -0
- package/lib/server/router/Routers/Collection.routes.js +29 -0
- package/lib/server/router/Routers/Collection.routes.js.map +1 -0
- package/package.json +1 -1
- package/lib/server/public/AxioControl/assets/index-BHqXlmHD.css +0 -1
- package/lib/server/public/AxioControl/assets/index-BrzSFweB.js +0 -56
|
@@ -13,13 +13,19 @@ export default class Database {
|
|
|
13
13
|
/**
|
|
14
14
|
* Creates a new collection inside the specified database.
|
|
15
15
|
* @param {string} collectionName - Name of the collection.
|
|
16
|
-
* @param {boolean} isSchemaNeeded - Whether the collection requires a schema.
|
|
17
|
-
* @param {object} schema - Schema of the collection.
|
|
18
16
|
* @param {boolean} crypto - Enable crypto for the collection.
|
|
19
17
|
* @param {string} key - Key for crypto.
|
|
18
|
+
* @param {boolean} isSchemaNeeded - Whether the collection requires a schema.
|
|
19
|
+
* @param {object} schema - Schema of the collection.
|
|
20
20
|
* @returns {Promise<AxioDB>} - Returns the instance of AxioDB.
|
|
21
21
|
*/
|
|
22
|
-
createCollection(collectionName: string,
|
|
22
|
+
createCollection(collectionName: string, crypto?: boolean, key?: string | undefined, isSchemaNeeded?: boolean, schema?: object | any): Promise<Collection>;
|
|
23
|
+
/**
|
|
24
|
+
* Checks if a collection exists in the database.
|
|
25
|
+
* @param {string} collectionName - Name of the collection to check.
|
|
26
|
+
* @returns {Promise<boolean>} - Returns true if the collection exists, false otherwise.
|
|
27
|
+
**/
|
|
28
|
+
isCollectionExists(collectionName: string): Promise<boolean>;
|
|
23
29
|
/**
|
|
24
30
|
* Deletes a collection from the database.
|
|
25
31
|
* @param {string} collectionName - Name of the collection to delete.
|
|
@@ -33,4 +39,33 @@ export default class Database {
|
|
|
33
39
|
* @throws {Error} - Throws an error if the database does not exist.
|
|
34
40
|
*/
|
|
35
41
|
getCollectionInfo(): Promise<SuccessInterface | undefined>;
|
|
42
|
+
/**
|
|
43
|
+
* Adds metadata for a collection to the collection metadata file.
|
|
44
|
+
*
|
|
45
|
+
* @param collectionData - The metadata of the collection to add
|
|
46
|
+
* @returns A Promise that resolves when the operation is complete, or rejects with an error if the collection metadata format is invalid
|
|
47
|
+
* @private
|
|
48
|
+
*
|
|
49
|
+
* This method performs the following operations:
|
|
50
|
+
* 1. Checks if the collection metadata file exists
|
|
51
|
+
* 2. If the file doesn't exist, creates it with the provided collection metadata
|
|
52
|
+
* 3. If the file exists, reads the existing metadata, adds the new collection metadata (if not already present), and writes back to the file
|
|
53
|
+
*
|
|
54
|
+
* @throws {Error} If the collection metadata format is invalid
|
|
55
|
+
*/
|
|
56
|
+
private AddCollectionMetadata;
|
|
57
|
+
/**
|
|
58
|
+
* Retrieves metadata details for a specific collection.
|
|
59
|
+
*
|
|
60
|
+
* @param collectionName - The name of the collection to retrieve metadata for
|
|
61
|
+
* @returns A Promise that resolves to the collection's metadata if found, or undefined if not found
|
|
62
|
+
* @private
|
|
63
|
+
*
|
|
64
|
+
* This method:
|
|
65
|
+
* 1. Checks if the collection.meta file exists
|
|
66
|
+
* 2. Reads and parses the metadata file if it exists
|
|
67
|
+
* 3. Validates that the data is an array
|
|
68
|
+
* 4. Finds and returns the metadata for the specified collection
|
|
69
|
+
*/
|
|
70
|
+
private getCollectionMetaDetails;
|
|
36
71
|
}
|
|
@@ -35,14 +35,14 @@ class Database {
|
|
|
35
35
|
/**
|
|
36
36
|
* Creates a new collection inside the specified database.
|
|
37
37
|
* @param {string} collectionName - Name of the collection.
|
|
38
|
-
* @param {boolean} isSchemaNeeded - Whether the collection requires a schema.
|
|
39
|
-
* @param {object} schema - Schema of the collection.
|
|
40
38
|
* @param {boolean} crypto - Enable crypto for the collection.
|
|
41
39
|
* @param {string} key - Key for crypto.
|
|
40
|
+
* @param {boolean} isSchemaNeeded - Whether the collection requires a schema.
|
|
41
|
+
* @param {object} schema - Schema of the collection.
|
|
42
42
|
* @returns {Promise<AxioDB>} - Returns the instance of AxioDB.
|
|
43
43
|
*/
|
|
44
44
|
createCollection(collectionName_1) {
|
|
45
|
-
return __awaiter(this, arguments, void 0, function* (collectionName,
|
|
45
|
+
return __awaiter(this, arguments, void 0, function* (collectionName, crypto = false, key, isSchemaNeeded = false, schema) {
|
|
46
46
|
// Check if the collection already exists
|
|
47
47
|
const collectionExists = yield this.folderManager.DirectoryExists(path_1.default.join(this.path, collectionName));
|
|
48
48
|
const collectionPath = path_1.default.join(this.path, collectionName);
|
|
@@ -55,14 +55,44 @@ class Database {
|
|
|
55
55
|
if (crypto === true) {
|
|
56
56
|
const newCryptoInstance = new Crypto_helper_1.CryptoHelper(key);
|
|
57
57
|
const collection = new collection_operation_1.default(collectionName, collectionPath, isSchemaNeeded, schema, crypto, newCryptoInstance, key);
|
|
58
|
+
// Store collection metadata in the collectionMap
|
|
59
|
+
yield this.AddCollectionMetadata({
|
|
60
|
+
name: collectionName,
|
|
61
|
+
path: collectionPath,
|
|
62
|
+
isSchemaNeeded: isSchemaNeeded === undefined ? false : isSchemaNeeded,
|
|
63
|
+
schema: schema === undefined ? {} : schema,
|
|
64
|
+
encryptionKey: key === undefined ? "" : key,
|
|
65
|
+
isEncrypted: crypto === undefined ? false : crypto,
|
|
66
|
+
});
|
|
58
67
|
return collection;
|
|
59
68
|
}
|
|
60
69
|
else {
|
|
61
70
|
const collection = new collection_operation_1.default(collectionName, collectionPath, isSchemaNeeded, schema);
|
|
71
|
+
// Store collection metadata in the collectionMap
|
|
72
|
+
yield this.AddCollectionMetadata({
|
|
73
|
+
name: collectionName,
|
|
74
|
+
path: collectionPath,
|
|
75
|
+
isSchemaNeeded: isSchemaNeeded === undefined ? false : isSchemaNeeded,
|
|
76
|
+
schema: schema === undefined ? {} : schema,
|
|
77
|
+
encryptionKey: key === undefined ? "" : key,
|
|
78
|
+
isEncrypted: crypto === undefined ? false : crypto,
|
|
79
|
+
});
|
|
62
80
|
return collection;
|
|
63
81
|
}
|
|
64
82
|
});
|
|
65
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Checks if a collection exists in the database.
|
|
86
|
+
* @param {string} collectionName - Name of the collection to check.
|
|
87
|
+
* @returns {Promise<boolean>} - Returns true if the collection exists, false otherwise.
|
|
88
|
+
**/
|
|
89
|
+
isCollectionExists(collectionName) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
const collectionPath = path_1.default.join(this.path, collectionName);
|
|
92
|
+
const exists = yield this.folderManager.DirectoryExists(collectionPath);
|
|
93
|
+
return exists.statusCode === outers_1.StatusCodes.OK;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
66
96
|
/**
|
|
67
97
|
* Deletes a collection from the database.
|
|
68
98
|
* @param {string} collectionName - Name of the collection to delete.
|
|
@@ -90,7 +120,11 @@ class Database {
|
|
|
90
120
|
getCollectionInfo() {
|
|
91
121
|
return __awaiter(this, void 0, void 0, function* () {
|
|
92
122
|
const collections = yield this.folderManager.ListDirectory(this.path);
|
|
123
|
+
// Remove All .meta related things
|
|
124
|
+
collections.data = collections.data.filter((collection) => !collection.endsWith(".meta"));
|
|
93
125
|
const totalSize = yield this.folderManager.GetDirectorySize(path_1.default.resolve(this.path));
|
|
126
|
+
// Get collection Status
|
|
127
|
+
const CollectionStatus = yield Promise.all(collections.data.map((collection) => this.getCollectionMetaDetails(collection)));
|
|
94
128
|
if ("data" in collections && "data" in totalSize) {
|
|
95
129
|
const FinalCollections = {
|
|
96
130
|
CurrentPath: this.path,
|
|
@@ -99,12 +133,76 @@ class Database {
|
|
|
99
133
|
TotalCollections: `${collections.data.length} Collections`,
|
|
100
134
|
TotalSize: parseInt((totalSize.data / 1024 / 1024).toFixed(4)),
|
|
101
135
|
ListOfCollections: collections.data,
|
|
136
|
+
collectionMetaStatus: CollectionStatus,
|
|
102
137
|
AllCollectionsPaths: collections.data.map((collection) => path_1.default.join(this.path, collection)),
|
|
103
138
|
};
|
|
104
139
|
return this.ResponseHelper.Success(FinalCollections);
|
|
105
140
|
}
|
|
106
141
|
});
|
|
107
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Adds metadata for a collection to the collection metadata file.
|
|
145
|
+
*
|
|
146
|
+
* @param collectionData - The metadata of the collection to add
|
|
147
|
+
* @returns A Promise that resolves when the operation is complete, or rejects with an error if the collection metadata format is invalid
|
|
148
|
+
* @private
|
|
149
|
+
*
|
|
150
|
+
* This method performs the following operations:
|
|
151
|
+
* 1. Checks if the collection metadata file exists
|
|
152
|
+
* 2. If the file doesn't exist, creates it with the provided collection metadata
|
|
153
|
+
* 3. If the file exists, reads the existing metadata, adds the new collection metadata (if not already present), and writes back to the file
|
|
154
|
+
*
|
|
155
|
+
* @throws {Error} If the collection metadata format is invalid
|
|
156
|
+
*/
|
|
157
|
+
AddCollectionMetadata(collectionData) {
|
|
158
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
159
|
+
const FileManagement = new FileManager_1.default();
|
|
160
|
+
const isFileExist = yield FileManagement.FileExists(`${this.path}/collection.meta`);
|
|
161
|
+
if (isFileExist.status == false) {
|
|
162
|
+
yield FileManagement.WriteFile(`${this.path}/collection.meta`, JSON.stringify([collectionData]));
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
const FullData = JSON.parse((yield FileManagement.ReadFile(`${this.path}/collection.meta`)).data);
|
|
166
|
+
if (!Array.isArray(FullData)) {
|
|
167
|
+
return new response_helper_1.default().Error("Invalid collection metadata format");
|
|
168
|
+
}
|
|
169
|
+
const isSameExist = FullData.filter((data) => data.name === collectionData.name);
|
|
170
|
+
if (isSameExist.length == 0) {
|
|
171
|
+
FullData.push(collectionData);
|
|
172
|
+
yield FileManagement.WriteFile(`${this.path}/collection.meta`, JSON.stringify(FullData));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Retrieves metadata details for a specific collection.
|
|
179
|
+
*
|
|
180
|
+
* @param collectionName - The name of the collection to retrieve metadata for
|
|
181
|
+
* @returns A Promise that resolves to the collection's metadata if found, or undefined if not found
|
|
182
|
+
* @private
|
|
183
|
+
*
|
|
184
|
+
* This method:
|
|
185
|
+
* 1. Checks if the collection.meta file exists
|
|
186
|
+
* 2. Reads and parses the metadata file if it exists
|
|
187
|
+
* 3. Validates that the data is an array
|
|
188
|
+
* 4. Finds and returns the metadata for the specified collection
|
|
189
|
+
*/
|
|
190
|
+
getCollectionMetaDetails(collectionName) {
|
|
191
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
192
|
+
const FileManagement = new FileManager_1.default();
|
|
193
|
+
const isFileExist = yield FileManagement.FileExists(`${this.path}/collection.meta`);
|
|
194
|
+
if (isFileExist.status == false) {
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
const FullData = JSON.parse((yield FileManagement.ReadFile(`${this.path}/collection.meta`)).data);
|
|
198
|
+
if (!Array.isArray(FullData)) {
|
|
199
|
+
return undefined;
|
|
200
|
+
}
|
|
201
|
+
const collectionMeta = FullData.find((data) => data.name === collectionName);
|
|
202
|
+
console.log("Collection metadata:", collectionMeta);
|
|
203
|
+
return collectionMeta;
|
|
204
|
+
});
|
|
205
|
+
}
|
|
108
206
|
}
|
|
109
207
|
exports.default = Database;
|
|
110
208
|
//# sourceMappingURL=database.operation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.operation.js","sourceRoot":"","sources":["../../../source/Services/Database/database.operation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,8FAA4D;AAC5D,sFAA8D;AAC9D,0FAAkE;AAClE,gDAAwB;AAExB,qBAAqB;AACrB,8DAA0D;AAC1D,mFAA0D;AAC1D,mCAAqC;
|
|
1
|
+
{"version":3,"file":"database.operation.js","sourceRoot":"","sources":["../../../source/Services/Database/database.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,7 @@ class AxioDB {
|
|
|
44
44
|
this.Converter = new Converter_helper_1.default(); // Initialize the Converter class
|
|
45
45
|
this.ResponseHelper = new response_helper_1.default(); // Initialize the ResponseHelper class
|
|
46
46
|
this.initializeRoot(); // Ensure root initialization
|
|
47
|
+
this.DatabaseMap = new Map(); // Initialize the DatabaseMap
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
49
50
|
* Initializes the root directory for the AxioDB.
|
|
@@ -86,6 +87,9 @@ class AxioDB {
|
|
|
86
87
|
console.log(`Database Created: ${dbPath}`);
|
|
87
88
|
}
|
|
88
89
|
const newDB = new database_operation_1.default(DBName, dbPath);
|
|
90
|
+
// Store database metadata in the DatabaseMap
|
|
91
|
+
// Note: The DatabaseMap is now storing an object instead of a Database instance
|
|
92
|
+
this.DatabaseMap.set(DBName, { DatabaseName: DBName, path: dbPath });
|
|
89
93
|
return newDB;
|
|
90
94
|
});
|
|
91
95
|
}
|
|
@@ -106,6 +110,7 @@ class AxioDB {
|
|
|
106
110
|
getInstanceInfo() {
|
|
107
111
|
return __awaiter(this, void 0, void 0, function* () {
|
|
108
112
|
const totalDatabases = yield this.folderManager.ListDirectory(path_1.default.resolve(this.currentPATH));
|
|
113
|
+
// First
|
|
109
114
|
const totalSize = yield this.folderManager.GetDirectorySize(path_1.default.resolve(this.currentPATH));
|
|
110
115
|
// check if all data is returned
|
|
111
116
|
if ("data" in totalDatabases && "data" in totalSize) {
|
|
@@ -113,9 +118,10 @@ class AxioDB {
|
|
|
113
118
|
CurrentPath: this.currentPATH,
|
|
114
119
|
RootName: this.RootName,
|
|
115
120
|
MatrixUnits: "MB",
|
|
116
|
-
TotalSize:
|
|
121
|
+
TotalSize: parseFloat((totalSize.data / 1024 / 1024).toFixed(6)),
|
|
117
122
|
TotalDatabases: `${totalDatabases.data.length} Databases`,
|
|
118
123
|
ListOfDatabases: totalDatabases.data,
|
|
124
|
+
DatabaseMap: this.DatabaseMap,
|
|
119
125
|
AllDatabasesPaths: totalDatabases.data.map((db) => path_1.default.join(this.currentPATH, db)),
|
|
120
126
|
};
|
|
121
127
|
return this.ResponseHelper.Success(FinalDatabaseInfo);
|
|
@@ -164,6 +170,7 @@ class AxioDB {
|
|
|
164
170
|
const exists = yield this.folderManager.DirectoryExists(dbPath);
|
|
165
171
|
if (exists.statusCode === outers_1.StatusCodes.OK) {
|
|
166
172
|
yield this.folderManager.DeleteDirectory(dbPath);
|
|
173
|
+
this.DatabaseMap.delete(DBName); // Remove from DatabaseMap
|
|
167
174
|
return this.ResponseHelper.Success(`Database: ${DBName} deleted successfully`);
|
|
168
175
|
}
|
|
169
176
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Indexation.operation.js","sourceRoot":"","sources":["../../source/Services/Indexation.operation.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;;;;;;;;;;;;;AAEvD,mBAAmB;AACnB,mFAA2D;AAC3D,uFAA+D;AAC/D,8CAA8C;AAC9C,gDAAwB;AACxB,uFAAqD;AACrD,kDAAkD;AAElD,iBAAiB;AACjB,kFAAmD;AACnD,mCAAqC;AACrC,gFAAuD;AAQvD,qEAAgE;
|
|
1
|
+
{"version":3,"file":"Indexation.operation.js","sourceRoot":"","sources":["../../source/Services/Indexation.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DatabaseMap } from "./database.operation.interface";
|
|
1
2
|
export interface FinalDatabaseInfo {
|
|
2
3
|
CurrentPath: string;
|
|
3
4
|
RootName: string;
|
|
@@ -5,5 +6,6 @@ export interface FinalDatabaseInfo {
|
|
|
5
6
|
TotalSize: number;
|
|
6
7
|
TotalDatabases: string;
|
|
7
8
|
ListOfDatabases: string[];
|
|
9
|
+
DatabaseMap: Map<string, DatabaseMap>;
|
|
8
10
|
AllDatabasesPaths: string[];
|
|
9
11
|
}
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
export interface CollectionMap {
|
|
2
|
+
isCryptoEnabled: boolean;
|
|
3
|
+
cryptoKey?: string;
|
|
4
|
+
path: string;
|
|
5
|
+
schema?: any;
|
|
6
|
+
isSchema: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface DatabaseMap {
|
|
9
|
+
DatabaseName: string;
|
|
10
|
+
path: string;
|
|
11
|
+
}
|
|
1
12
|
export interface FinalCollectionsInfo {
|
|
2
13
|
CurrentPath: string;
|
|
3
14
|
RootName: string;
|
|
@@ -5,5 +16,6 @@ export interface FinalCollectionsInfo {
|
|
|
5
16
|
TotalSize: number;
|
|
6
17
|
TotalCollections: number | string;
|
|
7
18
|
ListOfCollections: string[];
|
|
19
|
+
collectionMetaStatus: any[];
|
|
8
20
|
AllCollectionsPaths: string[];
|
|
9
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.operation.interface.js","sourceRoot":"","sources":["../../../../source/config/Interfaces/Operation/database.operation.interface.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"database.operation.interface.js","sourceRoot":"","sources":["../../../../source/config/Interfaces/Operation/database.operation.interface.ts"],"names":[],"mappings":";AAAA,uDAAuD"}
|
|
@@ -12,6 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
15
16
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
16
17
|
const response_helper_1 = __importDefault(require("../../Helper/response.helper"));
|
|
17
18
|
const worker_process_1 = __importDefault(require("../cli/worker_process"));
|
|
@@ -187,18 +188,70 @@ class FileManager {
|
|
|
187
188
|
GetFileSize(path) {
|
|
188
189
|
return __awaiter(this, void 0, void 0, function* () {
|
|
189
190
|
try {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
191
|
+
// Try using native Node.js first (most reliable)
|
|
192
|
+
try {
|
|
193
|
+
// Check file permissions before reading
|
|
194
|
+
let originalMode = null;
|
|
195
|
+
try {
|
|
196
|
+
const stats = yield promises_1.default.stat(path);
|
|
197
|
+
originalMode = stats.mode;
|
|
198
|
+
// If file isn't readable, temporarily make it readable
|
|
199
|
+
if ((stats.mode & 0o444) !== 0o444) {
|
|
200
|
+
yield promises_1.default.chmod(path, 0o644);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
catch (permError) {
|
|
204
|
+
// Continue with attempt to read the file even if we couldn't modify permissions
|
|
205
|
+
}
|
|
206
|
+
try {
|
|
207
|
+
const stats = yield promises_1.default.stat(path);
|
|
208
|
+
// Restore original permissions if they were modified
|
|
209
|
+
if (originalMode !== null && (originalMode & 0o444) !== 0o444) {
|
|
210
|
+
yield promises_1.default.chmod(path, originalMode);
|
|
211
|
+
}
|
|
212
|
+
return this.responseHelper.Success(stats.size);
|
|
213
|
+
}
|
|
214
|
+
catch (statError) {
|
|
215
|
+
// Fall back to system commands if native method fails
|
|
216
|
+
const osType = worker_process_1.default.getOS();
|
|
217
|
+
if (osType === "windows") {
|
|
218
|
+
const stdout = yield this.WorkerProcess.execCommand(`powershell -command "(Get-Item '${path}').length"`);
|
|
219
|
+
const size = parseInt(stdout, 10) || 0;
|
|
220
|
+
// Restore original permissions if they were modified
|
|
221
|
+
if (originalMode !== null && (originalMode & 0o444) !== 0o444) {
|
|
222
|
+
yield promises_1.default.chmod(path, originalMode);
|
|
223
|
+
}
|
|
224
|
+
return this.responseHelper.Success(size);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
// For Unix-like systems
|
|
228
|
+
const stdout = yield this.WorkerProcess.execCommand(`wc -c < "${path}" 2>/dev/null || echo 0`);
|
|
229
|
+
const size = parseInt(stdout, 10) || 0;
|
|
230
|
+
// Restore original permissions if they were modified
|
|
231
|
+
if (originalMode !== null && (originalMode & 0o444) !== 0o444) {
|
|
232
|
+
yield promises_1.default.chmod(path, originalMode);
|
|
233
|
+
}
|
|
234
|
+
return this.responseHelper.Success(size);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch (err) {
|
|
239
|
+
// Try to restore original permissions if they were saved, even if an error occurred
|
|
240
|
+
try {
|
|
241
|
+
const stats = yield promises_1.default.stat(path);
|
|
242
|
+
const originalMode = stats.mode;
|
|
243
|
+
if ((originalMode & 0o444) !== 0o444) {
|
|
244
|
+
yield promises_1.default.chmod(path, originalMode);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
catch (_a) {
|
|
248
|
+
// Ignore errors in the final cleanup attempt
|
|
249
|
+
}
|
|
250
|
+
return this.responseHelper.Error(`Failed to get file size: ${err}`);
|
|
195
251
|
}
|
|
196
|
-
const stdout = yield this.WorkerProcess.execCommand(`du -sb ${path}`);
|
|
197
|
-
const size = parseInt(stdout.split("\t")[0], 10);
|
|
198
|
-
return this.responseHelper.Success(size);
|
|
199
252
|
}
|
|
200
253
|
catch (err) {
|
|
201
|
-
return this.responseHelper.Error(`Failed to get
|
|
254
|
+
return this.responseHelper.Error(`Failed to get file size: ${err}`);
|
|
202
255
|
}
|
|
203
256
|
});
|
|
204
257
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileManager.js","sourceRoot":"","sources":["../../../source/engine/Filesystem/FileManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FileManager.js","sourceRoot":"","sources":["../../../source/engine/Filesystem/FileManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,21 @@ export default class FolderManager {
|
|
|
39
39
|
IsDirectoryLocked(path: string): Promise<SuccessInterface | ErrorInterface>;
|
|
40
40
|
/**
|
|
41
41
|
* get the size of a directory at the specified path.
|
|
42
|
+
* Handles permission issues by temporarily modifying permissions if needed.
|
|
42
43
|
*/
|
|
43
44
|
GetDirectorySize(path: string): Promise<SuccessInterface | ErrorInterface>;
|
|
45
|
+
/**
|
|
46
|
+
* Recursively prepares a directory and its contents for size calculation
|
|
47
|
+
* by temporarily modifying permissions if needed.
|
|
48
|
+
*/
|
|
49
|
+
private prepareDirectoryForSizeCalculation;
|
|
50
|
+
/**
|
|
51
|
+
* Restores original permissions for all modified files and directories
|
|
52
|
+
*/
|
|
53
|
+
private restoreDirectoryPermissions;
|
|
54
|
+
/**
|
|
55
|
+
* Calculates directory size recursively using Node.js native functions.
|
|
56
|
+
* This is a fallback method for when command-line tools fail.
|
|
57
|
+
*/
|
|
58
|
+
private calculateDirectorySizeRecursively;
|
|
44
59
|
}
|