axiodb 2.31.104 → 3.31.104
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/Indexation.operation.d.ts +2 -1
- package/lib/Services/Indexation.operation.js +7 -2
- package/lib/Services/Indexation.operation.js.map +1 -1
- package/lib/config/Keys/Keys.d.ts +5 -4
- package/lib/config/Keys/Keys.js +5 -5
- package/lib/config/Keys/Keys.js.map +1 -1
- package/lib/engine/node/WorkerForDataLoad.engine.js +40 -45
- package/lib/engine/node/WorkerForDataLoad.engine.js.map +1 -1
- package/lib/engine/node/WorkerForSearch.engine.js +12 -18
- package/lib/engine/node/WorkerForSearch.engine.js.map +1 -1
- package/lib/utility/BufferLoaderWithWorker.utils.js +2 -1
- package/lib/utility/BufferLoaderWithWorker.utils.js.map +1 -1
- package/lib/utility/Searcher.utils.d.ts +4 -2
- package/lib/utility/Searcher.utils.js +24 -4
- package/lib/utility/Searcher.utils.js.map +1 -1
- package/lib/utility/SortData.utils.d.ts +1 -0
- package/lib/utility/SortData.utils.js +33 -8
- package/lib/utility/SortData.utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -14,7 +14,8 @@ export declare class AxioDB {
|
|
|
14
14
|
private ResponseHelper;
|
|
15
15
|
private static _instance;
|
|
16
16
|
private DatabaseMap;
|
|
17
|
-
|
|
17
|
+
private GUI;
|
|
18
|
+
constructor(GUI?: boolean, RootName?: string, CustomPath?: string);
|
|
18
19
|
/**
|
|
19
20
|
* Initializes the root directory for the AxioDB.
|
|
20
21
|
*
|
|
@@ -32,7 +32,8 @@ const server_1 = __importDefault(require("../server/config/server"));
|
|
|
32
32
|
* @returns {AxioDB} - Returns the instance of AxioDB.
|
|
33
33
|
*/
|
|
34
34
|
class AxioDB {
|
|
35
|
-
constructor(RootName, CustomPath) {
|
|
35
|
+
constructor(GUI, RootName, CustomPath) {
|
|
36
|
+
this.GUI = Keys_1.General.DBMS_GUI_Enable;
|
|
36
37
|
if (AxioDB._instance) {
|
|
37
38
|
throw new Error("Only one instance of AxioDB is allowed.");
|
|
38
39
|
}
|
|
@@ -45,6 +46,7 @@ class AxioDB {
|
|
|
45
46
|
this.ResponseHelper = new response_helper_1.default(); // Initialize the ResponseHelper class
|
|
46
47
|
this.initializeRoot(); // Ensure root initialization
|
|
47
48
|
this.DatabaseMap = new Map(); // Initialize the DatabaseMap
|
|
49
|
+
this.GUI = GUI !== undefined ? GUI : Keys_1.General.DBMS_GUI_Enable; // Set GUI option
|
|
48
50
|
}
|
|
49
51
|
/**
|
|
50
52
|
* Initializes the root directory for the AxioDB.
|
|
@@ -69,7 +71,10 @@ class AxioDB {
|
|
|
69
71
|
console.log(`AxioDB folder created at: ${this.currentPATH}`);
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
|
-
|
|
74
|
+
if (this.GUI) {
|
|
75
|
+
outers_1.Console.green("Starting AxioDB Control Server...");
|
|
76
|
+
(0, server_1.default)(this); // Start the web Control Server with the AxioDB instance
|
|
77
|
+
}
|
|
73
78
|
});
|
|
74
79
|
}
|
|
75
80
|
/**
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"Indexation.operation.js","sourceRoot":"","sources":["../../source/Services/Indexation.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
DBMS_Name
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export declare const General: {
|
|
2
|
+
DBMS_Name: string;
|
|
3
|
+
DBMS_GUI_Enable: boolean;
|
|
4
|
+
DBMS_File_EXT: string;
|
|
5
|
+
};
|
|
5
6
|
export declare enum WebServer {
|
|
6
7
|
StaticServerPORT = 2025,
|
|
7
8
|
ApiServerPORT = 2026,
|
package/lib/config/Keys/Keys.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WebServer = exports.General = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
4
|
+
exports.General = {
|
|
5
|
+
DBMS_Name: "AxioDB",
|
|
6
|
+
DBMS_GUI_Enable: false,
|
|
7
|
+
DBMS_File_EXT: ".axiodb",
|
|
8
|
+
};
|
|
9
9
|
// Web Server Configuration
|
|
10
10
|
var WebServer;
|
|
11
11
|
(function (WebServer) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Keys.js","sourceRoot":"","sources":["../../../source/config/Keys/Keys.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Keys.js","sourceRoot":"","sources":["../../../source/config/Keys/Keys.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG;IACrB,SAAS,EAAG,QAAQ;IACpB,eAAe,EAAG,KAAK;IACvB,aAAa,EAAG,SAAS;CAC1B,CAAA;AAED,2BAA2B;AAC3B,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,oEAAuB,CAAA;IACvB,8DAAoB,CAAA;IACpB,8DAAoB,CAAA;IACpB,0EAA0B,CAAA;IAC1B,sEAAwB,CAAA;AAC1B,CAAC,EANW,SAAS,yBAAT,SAAS,QAMpB"}
|
|
@@ -16,7 +16,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
16
16
|
const worker_threads_1 = require("worker_threads");
|
|
17
17
|
const FileManager_1 = __importDefault(require("../Filesystem/FileManager")); // Replace with real imports
|
|
18
18
|
const Converter_helper_1 = __importDefault(require("../../Helper/Converter.helper")); // Replace with your actual converter logic
|
|
19
|
-
const response_helper_1 = __importDefault(require("../../Helper/response.helper"));
|
|
20
19
|
const Crypto_helper_1 = require("../../Helper/Crypto.helper");
|
|
21
20
|
const { chunk, encryptionKey, path, isEncrypted, storeFileName } = worker_threads_1.workerData;
|
|
22
21
|
const result = [];
|
|
@@ -26,66 +25,62 @@ const cryptoInstance = encryptionKey
|
|
|
26
25
|
: undefined;
|
|
27
26
|
/*
|
|
28
27
|
* Worker for reading files in parallel.
|
|
29
|
-
* It processes files
|
|
28
|
+
* It processes all files concurrently using Promise.all for maximum performance.
|
|
30
29
|
* If cryptoInstance is provided, it decrypts the file content.
|
|
31
30
|
* The results are stored in the result array, either with or without file names based on storeFileName flag.
|
|
32
31
|
* If an error occurs, it sends an error message back to the parent thread.
|
|
33
32
|
*/
|
|
34
33
|
function processFiles() {
|
|
35
34
|
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
-
let left = 0;
|
|
37
|
-
let right = chunk.length - 1;
|
|
38
35
|
try {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (storeFileName == true) {
|
|
55
|
-
// Store Decrypted Data with File Name
|
|
56
|
-
result.push({
|
|
57
|
-
fileName: fileName,
|
|
58
|
-
data: new Converter_helper_1.default().ToObject(ContentResponse),
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
// Store all Decrypted Data in AllData
|
|
63
|
-
result.push(new Converter_helper_1.default().ToObject(ContentResponse));
|
|
64
|
-
}
|
|
36
|
+
// Process all files in parallel for maximum performance
|
|
37
|
+
const filePromises = chunk.map((fileName) => __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
try {
|
|
39
|
+
const ReadFileResponse = yield new FileManager_1.default().ReadFile(`${path}/${fileName}`);
|
|
40
|
+
// Check if the file is read successfully or not
|
|
41
|
+
if ("data" in ReadFileResponse) {
|
|
42
|
+
if (isEncrypted === true && cryptoInstance) {
|
|
43
|
+
// Decrypt the data if crypto is enabled
|
|
44
|
+
const ContentResponse = yield cryptoInstance.decrypt(new Converter_helper_1.default().ToObject(ReadFileResponse.data));
|
|
45
|
+
if (storeFileName == true) {
|
|
46
|
+
// Store Decrypted Data with File Name
|
|
47
|
+
return {
|
|
48
|
+
fileName: fileName,
|
|
49
|
+
data: new Converter_helper_1.default().ToObject(ContentResponse),
|
|
50
|
+
};
|
|
65
51
|
}
|
|
66
52
|
else {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
fileName: fileName,
|
|
70
|
-
data: new Converter_helper_1.default().ToObject(ReadFileResponse.data),
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
result.push(new Converter_helper_1.default().ToObject(ReadFileResponse.data));
|
|
75
|
-
}
|
|
53
|
+
// Store all Decrypted Data in AllData
|
|
54
|
+
return new Converter_helper_1.default().ToObject(ContentResponse);
|
|
76
55
|
}
|
|
77
56
|
}
|
|
78
57
|
else {
|
|
79
|
-
|
|
58
|
+
if (storeFileName == true) {
|
|
59
|
+
return {
|
|
60
|
+
fileName: fileName,
|
|
61
|
+
data: new Converter_helper_1.default().ToObject(ReadFileResponse.data),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
return new Converter_helper_1.default().ToObject(ReadFileResponse.data);
|
|
66
|
+
}
|
|
80
67
|
}
|
|
81
68
|
}
|
|
82
|
-
|
|
83
|
-
console.error(`
|
|
69
|
+
else {
|
|
70
|
+
console.error(`Failed to read file: ${fileName}`);
|
|
71
|
+
return null;
|
|
84
72
|
}
|
|
85
73
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.error(`Error processing file ${fileName}:`, error);
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}));
|
|
79
|
+
// Wait for all file operations to complete
|
|
80
|
+
const results = yield Promise.all(filePromises);
|
|
81
|
+
// Filter out null results (failed reads) and add to result array
|
|
82
|
+
const validResults = results.filter((r) => r !== null);
|
|
83
|
+
result.push(...validResults);
|
|
89
84
|
if (worker_threads_1.parentPort) {
|
|
90
85
|
worker_threads_1.parentPort.postMessage(result);
|
|
91
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerForDataLoad.engine.js","sourceRoot":"","sources":["../../../source/engine/node/WorkerForDataLoad.engine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,mDAAwD;AAExD,4EAAoD,CAAC,4BAA4B;AACjF,qFAAsD,CAAC,2CAA2C;AAElG,
|
|
1
|
+
{"version":3,"file":"WorkerForDataLoad.engine.js","sourceRoot":"","sources":["../../../source/engine/node/WorkerForDataLoad.engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,26 +7,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
const worker_threads_1 = require("worker_threads");
|
|
8
8
|
const Searcher_utils_1 = __importDefault(require("../../utility/Searcher.utils"));
|
|
9
9
|
const { chunk, query, isUpdated, aditionalFiled } = worker_threads_1.workerData;
|
|
10
|
+
// Optimized for maximum performance
|
|
10
11
|
const result = [];
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (item !== undefined &&
|
|
23
|
-
item !== null &&
|
|
24
|
-
Searcher_utils_1.default.matchesQuery(item, query, isUpdated)) {
|
|
25
|
-
result.push(rawItem);
|
|
26
|
-
}
|
|
12
|
+
const chunkLength = chunk.length;
|
|
13
|
+
// Simple linear loop is fastest for this use case
|
|
14
|
+
// Modern JS engines optimize simple loops very well
|
|
15
|
+
for (let i = 0; i < chunkLength; i++) {
|
|
16
|
+
const rawItem = chunk[i];
|
|
17
|
+
const item = aditionalFiled ? rawItem[aditionalFiled] : rawItem;
|
|
18
|
+
// Skip null/undefined checks with early continue
|
|
19
|
+
if (item === undefined || item === null)
|
|
20
|
+
continue;
|
|
21
|
+
if (Searcher_utils_1.default.matchesQuery(item, query, isUpdated)) {
|
|
22
|
+
result.push(rawItem);
|
|
27
23
|
}
|
|
28
|
-
left += 2;
|
|
29
|
-
right -= 2;
|
|
30
24
|
}
|
|
31
25
|
if (worker_threads_1.parentPort) {
|
|
32
26
|
worker_threads_1.parentPort.postMessage(result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerForSearch.engine.js","sourceRoot":"","sources":["../../../source/engine/node/WorkerForSearch.engine.ts"],"names":[],"mappings":";;;;;AAAA,uDAAuD;AACvD,mDAAwD;AACxD,kFAAoD;AAEpD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,2BAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkerForSearch.engine.js","sourceRoot":"","sources":["../../../source/engine/node/WorkerForSearch.engine.ts"],"names":[],"mappings":";;;;;AAAA,uDAAuD;AACvD,mDAAwD;AACxD,kFAAoD;AAEpD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,2BAAU,CAAC;AAE/D,oCAAoC;AACpC,MAAM,MAAM,GAAU,EAAE,CAAC;AACzB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;AAEjC,kDAAkD;AAClD,oDAAoD;AACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAEhE,iDAAiD;IACjD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,SAAS;IAElD,IAAI,wBAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,IAAI,2BAAU,EAAE,CAAC;IACf,2BAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -16,6 +16,7 @@ exports.default = ReaderWithWorker;
|
|
|
16
16
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
17
17
|
const worker_threads_1 = require("worker_threads");
|
|
18
18
|
const path_1 = __importDefault(require("path"));
|
|
19
|
+
const os_1 = __importDefault(require("os"));
|
|
19
20
|
/**
|
|
20
21
|
* Reads data files using worker threads to parallelize the loading process.
|
|
21
22
|
* Each worker processes a chunk of the data files list.
|
|
@@ -28,7 +29,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
28
29
|
*/
|
|
29
30
|
function ReaderWithWorker(DataFilesList_1, encryptionKey_1, path_2, isEncrypted_1) {
|
|
30
31
|
return __awaiter(this, arguments, void 0, function* (DataFilesList, encryptionKey, path, isEncrypted, storeFileName = false) {
|
|
31
|
-
const numWorkers =
|
|
32
|
+
const numWorkers = Math.min(os_1.default.cpus().length, DataFilesList.length); // Use all CPU cores or file count, whichever is smaller
|
|
32
33
|
const chunkSize = Math.ceil(DataFilesList.length / numWorkers);
|
|
33
34
|
const workerPath = path_1.default.resolve(__dirname, "../engine/node", "WorkerForDataLoad.engine.js");
|
|
34
35
|
const tasks = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BufferLoaderWithWorker.utils.js","sourceRoot":"","sources":["../../source/utility/BufferLoaderWithWorker.utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"BufferLoaderWithWorker.utils.js","sourceRoot":"","sources":["../../source/utility/BufferLoaderWithWorker.utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAeA,mCA4CC;AA3DD,uDAAuD;AACvD,mDAAwC;AACxC,gDAAyB;AACzB,4CAAoB;AAEpB;;;;;;;;;GASG;AACH,SAA8B,gBAAgB;yDAC5C,aAAuB,EACvB,aAAiC,EACjC,IAAY,EACZ,WAAoB,EACpB,aAAa,GAAG,KAAK;QAErB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,wDAAwD;QAC7H,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAW,cAAK,CAAC,OAAO,CACtC,SAAS,EACT,gBAAgB,EAChB,6BAA6B,CAC9B,CAAC;QACF,MAAM,KAAK,GAAqB,EAAE,CAAC;QAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;YAC9D,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAElD,KAAK,CAAC,IAAI,CACR,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,IAAI,uBAAM,CAAC,UAAU,EAAE;oBACpC,UAAU,EAAE;wBACV,KAAK,EAAE,SAAS;wBAChB,aAAa,EAAE,aAAa;wBAC5B,IAAI,EAAE,IAAI;wBACV,WAAW,EAAE,WAAW;wBACxB,aAAa,EAAE,aAAa;qBAC7B;iBACF,CAAC,CAAC;gBAEH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC9B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACzB,IAAI,IAAI,KAAK,CAAC;wBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxE,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;CAAA"}
|
|
@@ -4,15 +4,17 @@ export default class Searcher {
|
|
|
4
4
|
constructor(arr: any[], isUpdated?: boolean);
|
|
5
5
|
/**
|
|
6
6
|
* Finds items in the data array that match the given query.
|
|
7
|
-
* Uses
|
|
7
|
+
* Uses optimized search strategies based on data size.
|
|
8
|
+
* Note: InMemoryCache at the Reader layer already handles query result caching.
|
|
8
9
|
*
|
|
9
10
|
* @param query - The query object containing conditions to match against items.
|
|
10
11
|
* @param aditionalFiled - Optional field to extract from each item for matching.
|
|
12
|
+
* @param findOne - If true, stops after finding the first match (early exit)
|
|
11
13
|
* @returns {Promise<any[]>} - A promise that resolves to an array of matching items.
|
|
12
14
|
*/
|
|
13
15
|
find(query: {
|
|
14
16
|
[key: string]: any;
|
|
15
|
-
}, additionalFiled?: string | number | undefined): Promise<any[]>;
|
|
17
|
+
}, additionalFiled?: string | number | undefined, findOne?: boolean): Promise<any[]>;
|
|
16
18
|
/**
|
|
17
19
|
* Matches an item against a query object.
|
|
18
20
|
* Supports MongoDB-like operators and logical operators ($or, $and).
|
|
@@ -27,6 +27,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
27
27
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
28
28
|
const worker_threads_1 = require("worker_threads");
|
|
29
29
|
const path_1 = __importDefault(require("path"));
|
|
30
|
+
const os_1 = __importDefault(require("os"));
|
|
30
31
|
const workerPath = path_1.default.resolve(__dirname, "../engine/node", "WorkerForSearch.engine.js");
|
|
31
32
|
class Searcher {
|
|
32
33
|
constructor(arr, isUpdated = false) {
|
|
@@ -36,15 +37,34 @@ class Searcher {
|
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
38
39
|
* Finds items in the data array that match the given query.
|
|
39
|
-
* Uses
|
|
40
|
+
* Uses optimized search strategies based on data size.
|
|
41
|
+
* Note: InMemoryCache at the Reader layer already handles query result caching.
|
|
40
42
|
*
|
|
41
43
|
* @param query - The query object containing conditions to match against items.
|
|
42
44
|
* @param aditionalFiled - Optional field to extract from each item for matching.
|
|
45
|
+
* @param findOne - If true, stops after finding the first match (early exit)
|
|
43
46
|
* @returns {Promise<any[]>} - A promise that resolves to an array of matching items.
|
|
44
47
|
*/
|
|
45
|
-
find(
|
|
46
|
-
return __awaiter(this,
|
|
47
|
-
|
|
48
|
+
find(query_1, additionalFiled_1) {
|
|
49
|
+
return __awaiter(this, arguments, void 0, function* (query, additionalFiled, findOne = false) {
|
|
50
|
+
// For small datasets or findOne, linear search is faster (avoid worker overhead)
|
|
51
|
+
if (this.data.length < 1000 || findOne) {
|
|
52
|
+
const result = [];
|
|
53
|
+
for (let i = 0; i < this.data.length; i++) {
|
|
54
|
+
const rawItem = this.data[i];
|
|
55
|
+
const item = additionalFiled ? rawItem[additionalFiled] : rawItem;
|
|
56
|
+
if (item !== undefined &&
|
|
57
|
+
item !== null &&
|
|
58
|
+
Searcher.matchesQuery(item, query, this.isUpdated)) {
|
|
59
|
+
result.push(rawItem);
|
|
60
|
+
if (findOne)
|
|
61
|
+
return result; // Early exit for findOne
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
// Parallel search for large datasets with complex queries
|
|
67
|
+
const numWorkers = Math.min(os_1.default.cpus().length, Math.max(1, Math.ceil(this.data.length / 1000)));
|
|
48
68
|
const chunkSize = Math.ceil(this.data.length / numWorkers);
|
|
49
69
|
const tasks = [];
|
|
50
70
|
for (let i = 0; i < numWorkers; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Searcher.utils.js","sourceRoot":"","sources":["../../source/utility/Searcher.utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAsD;AACtD,uDAAuD;AACvD,mDAAwC;AACxC,gDAAwB;
|
|
1
|
+
{"version":3,"file":"Searcher.utils.js","sourceRoot":"","sources":["../../source/utility/Searcher.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ export default class Sorting {
|
|
|
14
14
|
} | ArrayLike<unknown>);
|
|
15
15
|
/**
|
|
16
16
|
* Sort the array based on the query.
|
|
17
|
+
* Optimized for performance using native comparison operators.
|
|
17
18
|
* @param arr - The array to be sorted.
|
|
18
19
|
* @param query - The query object containing the sorting key and order.
|
|
19
20
|
* @returns A promise that resolves to the sorted array.
|
|
@@ -25,6 +25,7 @@ class Sorting {
|
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Sort the array based on the query.
|
|
28
|
+
* Optimized for performance using native comparison operators.
|
|
28
29
|
* @param arr - The array to be sorted.
|
|
29
30
|
* @param query - The query object containing the sorting key and order.
|
|
30
31
|
* @returns A promise that resolves to the sorted array.
|
|
@@ -33,20 +34,44 @@ class Sorting {
|
|
|
33
34
|
return __awaiter(this, void 0, void 0, function* () {
|
|
34
35
|
const [key, order] = Object.entries(this.query)[0]; // Extract the field and order (1 for ascending, -1 for descending)
|
|
35
36
|
if (aditionalField) {
|
|
37
|
+
// Optimized sort with direct subtraction for numbers and localeCompare for strings
|
|
36
38
|
return [...this.arr].sort((a, b) => {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
const aVal = a[aditionalField][key];
|
|
40
|
+
const bVal = b[aditionalField][key];
|
|
41
|
+
// Fast path for numbers
|
|
42
|
+
if (typeof aVal === "number" && typeof bVal === "number") {
|
|
43
|
+
return (aVal - bVal) * -order;
|
|
44
|
+
}
|
|
45
|
+
// Fast path for strings
|
|
46
|
+
if (typeof aVal === "string" && typeof bVal === "string") {
|
|
47
|
+
return aVal.localeCompare(bVal) * -order;
|
|
48
|
+
}
|
|
49
|
+
// Fallback for other types
|
|
50
|
+
if (aVal < bVal)
|
|
51
|
+
return -order;
|
|
52
|
+
if (aVal > bVal)
|
|
53
|
+
return order;
|
|
41
54
|
return 0;
|
|
42
55
|
});
|
|
43
56
|
}
|
|
44
57
|
else {
|
|
58
|
+
// Optimized sort with direct subtraction for numbers and localeCompare for strings
|
|
45
59
|
return [...this.arr].sort((a, b) => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
60
|
+
const aVal = a[key];
|
|
61
|
+
const bVal = b[key];
|
|
62
|
+
// Fast path for numbers
|
|
63
|
+
if (typeof aVal === "number" && typeof bVal === "number") {
|
|
64
|
+
return (aVal - bVal) * -order;
|
|
65
|
+
}
|
|
66
|
+
// Fast path for strings
|
|
67
|
+
if (typeof aVal === "string" && typeof bVal === "string") {
|
|
68
|
+
return aVal.localeCompare(bVal) * -order;
|
|
69
|
+
}
|
|
70
|
+
// Fallback for other types
|
|
71
|
+
if (aVal < bVal)
|
|
72
|
+
return -order;
|
|
73
|
+
if (aVal > bVal)
|
|
74
|
+
return order;
|
|
50
75
|
return 0;
|
|
51
76
|
});
|
|
52
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortData.utils.js","sourceRoot":"","sources":["../../source/utility/SortData.utils.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,uDAAuD;AACvD;;GAEG;AACH,MAAqB,OAAO;IAK1B;;;;OAIG;IACH,YACE,GAAU,EACV,KAAoD;QAEpD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"SortData.utils.js","sourceRoot":"","sources":["../../source/utility/SortData.utils.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,uDAAuD;AACvD;;GAEG;AACH,MAAqB,OAAO;IAK1B;;;;OAIG;IACH,YACE,GAAU,EACV,KAAoD;QAEpD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACU,IAAI,CAAC,cAAuB;;YACvC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAqB,CAAC,CAAC,mEAAmE;YAE3I,IAAI,cAAc,EAAE,CAAC;gBACnB,mFAAmF;gBACnF,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACjC,MAAM,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;oBACpC,MAAM,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;oBAEpC,wBAAwB;oBACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACzD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;oBAChC,CAAC;oBAED,wBAAwB;oBACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACzD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;oBAC3C,CAAC;oBAED,2BAA2B;oBAC3B,IAAI,IAAI,GAAG,IAAI;wBAAE,OAAO,CAAC,KAAK,CAAC;oBAC/B,IAAI,IAAI,GAAG,IAAI;wBAAE,OAAO,KAAK,CAAC;oBAC9B,OAAO,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,mFAAmF;gBACnF,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACjC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACpB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBAEpB,wBAAwB;oBACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACzD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;oBAChC,CAAC;oBAED,wBAAwB;oBACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACzD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;oBAC3C,CAAC;oBAED,2BAA2B;oBAC3B,IAAI,IAAI,GAAG,IAAI;wBAAE,OAAO,CAAC,KAAK,CAAC;oBAC/B,IAAI,IAAI,GAAG,IAAI;wBAAE,OAAO,KAAK,CAAC;oBAC9B,OAAO,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KAAA;CACF;AAxED,0BAwEC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "axiodb",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.31.104",
|
|
4
4
|
"description": "A blazing-fast, lightweight, and scalable nodejs package based DBMS for modern application. Supports schemas, encryption, and advanced query capabilities.",
|
|
5
5
|
"main": "./lib/config/DB.js",
|
|
6
6
|
"types": "./lib/config/DB.d.ts",
|