axiodb 7.33.235 → 8.33.236

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 (34) hide show
  1. package/.dockerignore +73 -0
  2. package/README.md +9 -1
  3. package/lib/Services/CRUD Operation/Delete.operation.d.ts +10 -5
  4. package/lib/Services/CRUD Operation/Delete.operation.js +93 -60
  5. package/lib/Services/CRUD Operation/Delete.operation.js.map +1 -1
  6. package/lib/Services/CRUD Operation/Update.operation.d.ts +14 -10
  7. package/lib/Services/CRUD Operation/Update.operation.js +143 -115
  8. package/lib/Services/CRUD Operation/Update.operation.js.map +1 -1
  9. package/package.json +1 -1
  10. package/.agents/skills/axiodb-development/SKILL.md +0 -284
  11. package/.claude/SETTINGS.md +0 -161
  12. package/.claude/commands/build-check.md +0 -18
  13. package/.claude/commands/collection-op.md +0 -53
  14. package/.claude/commands/docs.md +0 -49
  15. package/.claude/commands/feature.md +0 -38
  16. package/.claude/commands/fix-build.md +0 -46
  17. package/.claude/commands/helper.md +0 -67
  18. package/.claude/commands/index-op.md +0 -50
  19. package/.claude/commands/perf-check.md +0 -75
  20. package/.claude/commands/review.md +0 -12
  21. package/.claude/commands/tcp-command.md +0 -58
  22. package/.claude/commands/test.md +0 -30
  23. package/.claude/commands/transaction-op.md +0 -72
  24. package/.claude/rules/architecture.md +0 -98
  25. package/.claude/rules/code-standards.md +0 -282
  26. package/.claude/rules/commands.md +0 -40
  27. package/.claude/rules/documentation.md +0 -183
  28. package/.claude/rules/workflow.md +0 -160
  29. package/.codex/config.toml +0 -149
  30. package/.cursor/rules/axiodb-core.mdc +0 -391
  31. package/.gemini/settings.json +0 -53
  32. package/AGENTS.md +0 -371
  33. package/CLAUDE.md +0 -92
  34. package/GEMINI.md +0 -117
package/.dockerignore ADDED
@@ -0,0 +1,73 @@
1
+ # Git
2
+ .git/
3
+ .gitignore
4
+ .gitattributes
5
+ .github/
6
+
7
+ # Node modules (will be installed in container)
8
+ node_modules/
9
+ npm-debug.log
10
+ yarn-error.log
11
+ package-lock.json
12
+
13
+ # AI Assistant configurations (not needed in Docker)
14
+ .agents/
15
+ .claude/
16
+ .codex/
17
+ .cursor/
18
+ .devin/
19
+ .gemini/
20
+ AGENTS.md
21
+ CLAUDE.md
22
+ GEMINI.md
23
+
24
+ # IDE configurations
25
+ .vscode/
26
+ .idea/
27
+ .devcontainer/
28
+
29
+ # Documentation (not needed in runtime)
30
+ Document/
31
+ LEARN.md
32
+ CODE_OF_CONDUCT.md
33
+ CONTRIBUTING.md
34
+ SECURITY.md
35
+
36
+ # Development files
37
+ .gitpod.yml
38
+ .deepsource.toml
39
+ docker-compose.yml
40
+ eslint.config.mjs
41
+ tsconfig.json
42
+
43
+ # Source TypeScript files (only compiled lib/ needed)
44
+ source/
45
+ Test/
46
+ test/
47
+ *.test.js
48
+ *.spec.js
49
+
50
+ # Build artifacts
51
+ dist/
52
+ library/
53
+ Cache/
54
+ AxioDB/
55
+
56
+ # GUI (built separately if needed)
57
+ GUI/
58
+
59
+ # Scripts (development only)
60
+ Scripts/
61
+
62
+ # OS files
63
+ .DS_Store
64
+ Thumbs.db
65
+ *.swp
66
+ *.swo
67
+ *~
68
+
69
+ # Temporary files
70
+ *.log
71
+ *.tmp
72
+ tmp/
73
+ temp/
package/README.md CHANGED
@@ -1,9 +1,17 @@
1
1
  # AxioDB: The Pure JavaScript Alternative to SQLite
2
2
 
3
3
  [![npm version](https://badge.fury.io/js/axiodb.svg)](https://badge.fury.io/js/axiodb)
4
+ [![npm downloads](https://img.shields.io/npm/dm/axiodb.svg)](https://www.npmjs.com/package/axiodb)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+
7
+ [![Push to Registry](https://github.com/nexoral/AxioDB/actions/workflows/Push.yml/badge.svg?branch=main)](https://github.com/nexoral/AxioDB/actions/workflows/Push.yml)
4
8
  [![CodeQL](https://github.com/nexoral/AxioDB/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main)](https://github.com/nexoral/AxioDB/actions/workflows/github-code-scanning/codeql)
5
9
  [![Socket Security](https://socket.dev/api/badge/npm/package/axiodb)](https://socket.dev/npm/package/axiodb)
6
- [![Push to Registry](https://github.com/nexoral/AxioDB/actions/workflows/Push.yml/badge.svg?branch=main)](https://github.com/nexoral/AxioDB/actions/workflows/Push.yml)
10
+
11
+ [![Node.js Version](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen)](https://nodejs.org)
12
+ [![Tested on Node.js](https://img.shields.io/badge/tested%20on-20%20%7C%2021%20%7C%2022%20%7C%2023%20%7C%2024%20(all%20LTS)-blue)](https://github.com/nexoral/AxioDB/actions/workflows/Push.yml)
13
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.6-blue)](https://www.typescriptlang.org/)
14
+ [![Zero Dependencies](https://img.shields.io/badge/dependencies-0%20native-success)](https://www.npmjs.com/package/axiodb)
7
15
 
8
16
  > **AxioDB** is an embedded NoSQL database for Node.js with MongoDB-style queries. Zero native dependencies, no compilation, no platform issues. Pure JavaScript from npm install to production. Think SQLite, but NoSQL with JavaScript queries—perfect for desktop apps, CLI tools, and embedded systems.
9
17
 
@@ -19,11 +19,13 @@ export default class DeleteOperation {
19
19
  /**
20
20
  * Deletes a single document that matches the base query.
21
21
  *
22
- * This method:
22
+ * This method with ACID compliance:
23
23
  * 1. Loads all raw data from buffers
24
24
  * 2. Searches for documents matching the base query
25
25
  * 3. Selects the first matching document (applying sort if provided)
26
- * 4. Deletes the file associated with the selected document
26
+ * 4. Acquires lock on the document
27
+ * 5. Deletes the file associated with the selected document
28
+ * 6. Releases lock
27
29
  *
28
30
  * @returns {Promise<object>} A response object containing either:
29
31
  * - Success: { message: "Data deleted successfully", deleteData: object }
@@ -35,15 +37,18 @@ export default class DeleteOperation {
35
37
  /**
36
38
  * Deletes multiple documents that match the base query.
37
39
  *
38
- * This method:
40
+ * This method with ACID compliance:
39
41
  * 1. Searches for documents matching the base query
40
- * 2. Deletes each matching file
41
- * 3. Returns success with the deleted data or an error
42
+ * 2. Acquires locks on ALL matching documents (ensures atomicity)
43
+ * 3. Deletes each matching file
44
+ * 4. Releases all locks
45
+ * 5. Returns success with the deleted data or an error
42
46
  *
43
47
  * @returns {Promise<SuccessInterface | ErrorInterface>} A promise that resolves to either:
44
48
  * - Success with a success message and the deleted data
45
49
  * - Error if:
46
50
  * - No matching data is found
51
+ * - Lock acquisition fails
47
52
  * - Any file deletion operation fails
48
53
  * - The initial buffer data loading fails
49
54
  */
@@ -18,6 +18,7 @@ const Crypto_helper_1 = require("../../Helper/Crypto.helper");
18
18
  const response_helper_1 = __importDefault(require("../../Helper/response.helper"));
19
19
  const DocumentLoader_helper_1 = __importDefault(require("../../Helper/DocumentLoader.helper"));
20
20
  const FileManager_1 = __importDefault(require("../../engine/Filesystem/FileManager"));
21
+ const crypto_1 = require("crypto");
21
22
  // Import All Utility
22
23
  const Searcher_utils_1 = __importDefault(require("../../utility/Searcher.utils"));
23
24
  const SortData_utils_1 = __importDefault(require("../../utility/SortData.utils"));
@@ -25,6 +26,7 @@ const memory_operation_1 = __importDefault(require("../../Memory/memory.operatio
25
26
  const Keys_1 = require("../../config/Keys/Keys");
26
27
  const ReadIndex_service_1 = require("../Index/ReadIndex.service");
27
28
  const DeleteIndex_service_1 = __importDefault(require("../Index/DeleteIndex.service"));
29
+ const LockManager_service_1 = __importDefault(require("../Transaction/LockManager.service"));
28
30
  /**
29
31
  * The DeleteOperation class is used to delete a document from a collection.
30
32
  * This class provides methods to delete a single document that matches the base query.
@@ -53,11 +55,13 @@ class DeleteOperation {
53
55
  /**
54
56
  * Deletes a single document that matches the base query.
55
57
  *
56
- * This method:
58
+ * This method with ACID compliance:
57
59
  * 1. Loads all raw data from buffers
58
60
  * 2. Searches for documents matching the base query
59
61
  * 3. Selects the first matching document (applying sort if provided)
60
- * 4. Deletes the file associated with the selected document
62
+ * 4. Acquires lock on the document
63
+ * 5. Deletes the file associated with the selected document
64
+ * 6. Releases lock
61
65
  *
62
66
  * @returns {Promise<object>} A response object containing either:
63
67
  * - Success: { message: "Data deleted successfully", deleteData: object }
@@ -68,25 +72,32 @@ class DeleteOperation {
68
72
  deleteOne() {
69
73
  return __awaiter(this, void 0, void 0, function* () {
70
74
  var _a;
71
- // if documentId is provided in the baseQuery then read the file with the documentId
72
- let ReadResponse; // Read Response Holder
73
- if (((_a = this.baseQuery) === null || _a === void 0 ? void 0 : _a.documentId) !== undefined) {
74
- const FilePath = [
75
- `${this.baseQuery.documentId}${Keys_1.General.DBMS_File_EXT}`,
76
- ];
77
- ReadResponse = yield this.LoadAllBufferRawData(FilePath);
78
- }
79
- else {
80
- const fileNames = yield new ReadIndex_service_1.ReadIndex(this.path).getFileFromIndex(this.baseQuery);
81
- if (fileNames.length > 0) {
82
- // Load File Names from Index
83
- ReadResponse = yield this.LoadAllBufferRawData(fileNames);
75
+ const lockManager = new LockManager_service_1.default(this.path);
76
+ const operationId = (0, crypto_1.randomUUID)();
77
+ const timestamp = Date.now();
78
+ let documentId = null;
79
+ try {
80
+ // STEP 1: Find the document first
81
+ let ReadResponse; // Read Response Holder
82
+ if (((_a = this.baseQuery) === null || _a === void 0 ? void 0 : _a.documentId) !== undefined) {
83
+ const FilePath = [
84
+ `${this.baseQuery.documentId}${Keys_1.General.DBMS_File_EXT}`,
85
+ ];
86
+ ReadResponse = yield this.LoadAllBufferRawData(FilePath);
84
87
  }
85
88
  else {
86
- ReadResponse = yield this.LoadAllBufferRawData();
89
+ const fileNames = yield new ReadIndex_service_1.ReadIndex(this.path).getFileFromIndex(this.baseQuery);
90
+ if (fileNames.length > 0) {
91
+ // Load File Names from Index
92
+ ReadResponse = yield this.LoadAllBufferRawData(fileNames);
93
+ }
94
+ else {
95
+ ReadResponse = yield this.LoadAllBufferRawData();
96
+ }
97
+ }
98
+ if (!("data" in ReadResponse)) {
99
+ return this.ResponseHelper.Error(ReadResponse);
87
100
  }
88
- }
89
- if ("data" in ReadResponse) {
90
101
  const SearchedData = yield new Searcher_utils_1.default(ReadResponse.data, true).find(this.baseQuery, "data");
91
102
  if (SearchedData.length === 0) {
92
103
  return this.ResponseHelper.Error("No data found with the specified query");
@@ -94,91 +105,113 @@ class DeleteOperation {
94
105
  let selectedFirstData = SearchedData[0]; // Select the first data
95
106
  let fileName = selectedFirstData === null || selectedFirstData === void 0 ? void 0 : selectedFirstData.fileName; // Get the file name
96
107
  // Sort the data if sort is provided then select the first data for deletion
97
- if (Object.keys(this.sort).length === 0) {
98
- selectedFirstData = SearchedData[0]; // Select the first data
99
- fileName = selectedFirstData === null || selectedFirstData === void 0 ? void 0 : selectedFirstData.fileName; // Get the file name
100
- }
101
- else {
108
+ if (Object.keys(this.sort).length !== 0) {
102
109
  const Sorter = new SortData_utils_1.default(SearchedData, this.sort);
103
110
  const SortedData = yield Sorter.sort("data"); // Sort the data
104
111
  selectedFirstData = SortedData[0]; // Select the first data
105
112
  fileName = selectedFirstData === null || selectedFirstData === void 0 ? void 0 : selectedFirstData.fileName; // Get the file name
106
113
  }
107
- // Delete the file
108
- const deleteResponse = yield this.deleteFile(fileName);
109
- if ("data" in deleteResponse) {
110
- // Fire-and-forget: Remove from indexes and invalidate cache asynchronously for faster response
111
- const documentId = fileName.split('.')[0];
112
- new DeleteIndex_service_1.default(this.path).RemoveFromIndex(documentId, selectedFirstData === null || selectedFirstData === void 0 ? void 0 : selectedFirstData.data).catch(() => { });
113
- memory_operation_1.default.invalidateByDocument(this.path, documentId).catch(() => { });
114
- return this.ResponseHelper.Success({
115
- message: "Data deleted successfully",
116
- deleteData: selectedFirstData === null || selectedFirstData === void 0 ? void 0 : selectedFirstData.data,
117
- });
114
+ documentId = fileName.split('.')[0];
115
+ // STEP 2: Acquire lock on the document (ACID: Isolation)
116
+ const lockResult = yield lockManager.acquireLock(documentId, operationId, timestamp);
117
+ if (!("data" in lockResult)) {
118
+ return this.ResponseHelper.Error("Lock acquisition failed");
118
119
  }
119
- else {
120
+ // STEP 3: Delete the file (now safe - locked)
121
+ const deleteResponse = yield this.deleteFile(fileName);
122
+ if (!("data" in deleteResponse)) {
120
123
  return this.ResponseHelper.Error("Failed to delete data");
121
124
  }
125
+ // Fire-and-forget: Remove from indexes and invalidate cache asynchronously for faster response
126
+ new DeleteIndex_service_1.default(this.path).RemoveFromIndex(documentId, selectedFirstData === null || selectedFirstData === void 0 ? void 0 : selectedFirstData.data).catch(() => { });
127
+ memory_operation_1.default.invalidateByDocument(this.path, documentId).catch(() => { });
128
+ return this.ResponseHelper.Success({
129
+ message: "Data deleted successfully",
130
+ deleteData: selectedFirstData === null || selectedFirstData === void 0 ? void 0 : selectedFirstData.data,
131
+ });
122
132
  }
123
- else {
124
- return this.ResponseHelper.Error(ReadResponse);
133
+ finally {
134
+ // STEP 4: Always release lock (ACID: ensures no deadlock)
135
+ if (documentId) {
136
+ yield lockManager.releaseLock(documentId).catch(() => { });
137
+ }
125
138
  }
126
139
  });
127
140
  }
128
141
  /**
129
142
  * Deletes multiple documents that match the base query.
130
143
  *
131
- * This method:
144
+ * This method with ACID compliance:
132
145
  * 1. Searches for documents matching the base query
133
- * 2. Deletes each matching file
134
- * 3. Returns success with the deleted data or an error
146
+ * 2. Acquires locks on ALL matching documents (ensures atomicity)
147
+ * 3. Deletes each matching file
148
+ * 4. Releases all locks
149
+ * 5. Returns success with the deleted data or an error
135
150
  *
136
151
  * @returns {Promise<SuccessInterface | ErrorInterface>} A promise that resolves to either:
137
152
  * - Success with a success message and the deleted data
138
153
  * - Error if:
139
154
  * - No matching data is found
155
+ * - Lock acquisition fails
140
156
  * - Any file deletion operation fails
141
157
  * - The initial buffer data loading fails
142
158
  */
143
159
  deleteMany() {
144
160
  return __awaiter(this, void 0, void 0, function* () {
145
- let response;
146
- const fileNames = yield new ReadIndex_service_1.ReadIndex(this.path).getFileFromIndex(this.baseQuery);
147
- if (fileNames.length > 0) {
148
- // Load File Names from Index
149
- response = yield this.LoadAllBufferRawData(fileNames);
150
- }
151
- else {
152
- response = yield this.LoadAllBufferRawData();
153
- }
154
- if ("data" in response) {
161
+ const lockManager = new LockManager_service_1.default(this.path);
162
+ const operationId = (0, crypto_1.randomUUID)();
163
+ const timestamp = Date.now();
164
+ const acquiredLocks = [];
165
+ try {
166
+ // STEP 1: Find all matching documents
167
+ let response;
168
+ const fileNames = yield new ReadIndex_service_1.ReadIndex(this.path).getFileFromIndex(this.baseQuery);
169
+ if (fileNames.length > 0) {
170
+ // Load File Names from Index
171
+ response = yield this.LoadAllBufferRawData(fileNames);
172
+ }
173
+ else {
174
+ response = yield this.LoadAllBufferRawData();
175
+ }
176
+ if (!("data" in response)) {
177
+ return this.ResponseHelper.Error(response);
178
+ }
155
179
  const SearchedData = yield new Searcher_utils_1.default(response.data, true).find(this.baseQuery, "data");
156
180
  if (SearchedData.length === 0) {
157
181
  return this.ResponseHelper.Error("No data found with the specified query");
158
182
  }
159
- // Delete all files - fire index removal async for speed
183
+ // STEP 2: Extract all document IDs and acquire locks on ALL documents
184
+ const documentIds = SearchedData.map((data) => data.fileName.split('.')[0]);
185
+ for (const docId of documentIds) {
186
+ const lockResult = yield lockManager.acquireLock(docId, operationId, timestamp);
187
+ if (!("data" in lockResult)) {
188
+ // Lock acquisition failed - rollback
189
+ return this.ResponseHelper.Error(`Lock acquisition failed for document ${docId}`);
190
+ }
191
+ acquiredLocks.push(docId);
192
+ }
193
+ // STEP 3: All locks acquired - now perform deletions safely
160
194
  const deleteIndexService = new DeleteIndex_service_1.default(this.path);
161
195
  for (let i = 0; i < SearchedData.length; i++) {
162
196
  const deleteResponse = yield this.deleteFile(SearchedData[i].fileName);
163
- if ("data" in deleteResponse) {
164
- // Fire-and-forget: Remove from indexes asynchronously
165
- deleteIndexService.RemoveFromIndex(SearchedData[i].fileName.split('.')[0], SearchedData[i].data).catch(() => { });
166
- continue;
167
- }
168
- else {
197
+ if (!("data" in deleteResponse)) {
169
198
  return this.ResponseHelper.Error("Failed to delete data");
170
199
  }
200
+ // Fire-and-forget: Remove from indexes asynchronously
201
+ deleteIndexService.RemoveFromIndex(SearchedData[i].fileName.split('.')[0], SearchedData[i].data).catch(() => { });
171
202
  }
172
203
  // Fire-and-forget: Invalidate cache asynchronously
173
- const documentIds = SearchedData.map((data) => data.fileName.split('.')[0]);
174
204
  memory_operation_1.default.invalidateByDocuments(this.path, documentIds).catch(() => { });
175
205
  return this.ResponseHelper.Success({
176
206
  message: "Data deleted successfully",
177
207
  deleteData: SearchedData.map((data) => data.data),
178
208
  });
179
209
  }
180
- else {
181
- return this.ResponseHelper.Error(response);
210
+ finally {
211
+ // STEP 4: Always release ALL acquired locks (ACID: ensures no deadlock)
212
+ if (acquiredLocks.length > 0) {
213
+ yield lockManager.releaseAllLocks(acquiredLocks).catch(() => { });
214
+ }
182
215
  }
183
216
  });
184
217
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Delete.operation.js","sourceRoot":"","sources":["../../../source/Services/CRUD Operation/Delete.operation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Delete.operation.js","sourceRoot":"","sources":["../../../source/Services/CRUD Operation/Delete.operation.ts"],"names":[],"mappings":"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"}
@@ -17,31 +17,35 @@ export default class UpdateOperation {
17
17
  /**
18
18
  * Updates a single document that matches the base query.
19
19
  *
20
- * This method performs the following operations:
21
- * 1. Searches for documents matching the base query
22
- * 2. If documents are found, selects the first document (or first after sorting if sort criteria are provided)
23
- * 3. Deletes the existing document file
24
- * 4. Inserts a new file with updated data using the same document ID
20
+ * This method performs the following operations with ACID compliance:
21
+ * 1. Acquires lock on document to ensure atomicity and isolation
22
+ * 2. Searches for documents matching the base query
23
+ * 3. If documents are found, selects the first document (or first after sorting if sort criteria are provided)
24
+ * 4. Deletes the existing document file
25
+ * 5. Inserts a new file with updated data using the same document ID
26
+ * 6. Releases lock
25
27
  *
26
28
  * @param newData - The new data to replace the existing document
27
29
  * @returns A Promise resolving to:
28
30
  * - Success with updated data and previous data if successful
29
- * - Error if any step fails
31
+ * - Error if any step fails (lock acquisition, read, update)
30
32
  * @throws May throw errors during file operations or data processing
31
33
  */
32
34
  UpdateOne(newData: object | any): Promise<SuccessInterface | ErrorInterface>;
33
35
  /**
34
36
  * Updates multiple documents that match the base query.
35
37
  *
36
- * This method performs the following operations:
38
+ * This method performs the following operations with ACID compliance:
37
39
  * 1. Searches for documents matching the base query
38
- * 2. Deletes the existing documents
39
- * 3. Inserts new files with updated data for each document
40
+ * 2. Acquires locks on ALL matching documents (ensures atomicity across all updates)
41
+ * 3. Deletes the existing documents
42
+ * 4. Inserts new files with updated data for each document
43
+ * 5. Releases all locks
40
44
  *
41
45
  * @param newData - The new data to replace the existing documents
42
46
  * @returns A Promise resolving to:
43
47
  * - Success with updated data and previous data if successful
44
- * - Error if any step fails
48
+ * - Error if any step fails (rollback by releasing all acquired locks)
45
49
  * @throws May throw errors during file operations or data processing
46
50
  */
47
51
  UpdateMany(newData: object | any): Promise<SuccessInterface | ErrorInterface>;