@push.rocks/smartdb 1.0.1 → 2.1.1

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 (126) hide show
  1. package/.smartconfig.json +18 -4
  2. package/dist_rust/rustdb_linux_amd64 +0 -0
  3. package/dist_rust/rustdb_linux_arm64 +0 -0
  4. package/dist_ts/00_commitinfo_data.js +3 -3
  5. package/dist_ts/index.d.ts +1 -0
  6. package/dist_ts/ts_local/classes.localsmartdb.d.ts +5 -5
  7. package/dist_ts/ts_local/classes.localsmartdb.js +7 -9
  8. package/dist_ts/ts_local/plugins.d.ts +1 -2
  9. package/dist_ts/ts_local/plugins.js +3 -3
  10. package/dist_ts/ts_smartdb/index.d.ts +2 -24
  11. package/dist_ts/ts_smartdb/index.js +4 -29
  12. package/dist_ts/ts_smartdb/plugins.d.ts +2 -10
  13. package/dist_ts/ts_smartdb/plugins.js +3 -13
  14. package/dist_ts/ts_smartdb/rust-db-bridge.d.ts +122 -0
  15. package/dist_ts/ts_smartdb/rust-db-bridge.js +113 -0
  16. package/dist_ts/ts_smartdb/server/SmartdbServer.d.ts +39 -37
  17. package/dist_ts/ts_smartdb/server/SmartdbServer.js +87 -206
  18. package/dist_ts/ts_smartdb/server/index.d.ts +0 -4
  19. package/dist_ts/ts_smartdb/server/index.js +1 -5
  20. package/dist_ts_debugserver/bundled.d.ts +4 -0
  21. package/dist_ts_debugserver/bundled.js +12 -0
  22. package/dist_ts_debugserver/classes.debugserver.d.ts +36 -0
  23. package/dist_ts_debugserver/classes.debugserver.js +95 -0
  24. package/dist_ts_debugserver/index.d.ts +2 -0
  25. package/dist_ts_debugserver/index.js +2 -0
  26. package/dist_ts_debugserver/plugins.d.ts +2 -0
  27. package/dist_ts_debugserver/plugins.js +3 -0
  28. package/dist_ts_debugui/index.d.ts +2 -0
  29. package/dist_ts_debugui/index.js +2 -0
  30. package/dist_ts_debugui/plugins.d.ts +1 -0
  31. package/dist_ts_debugui/plugins.js +2 -0
  32. package/dist_ts_debugui/smartdb-debugui.d.ts +62 -0
  33. package/dist_ts_debugui/smartdb-debugui.js +1132 -0
  34. package/license +3 -1
  35. package/package.json +14 -13
  36. package/readme.md +209 -177
  37. package/ts/00_commitinfo_data.ts +2 -2
  38. package/ts/index.ts +11 -0
  39. package/ts/ts_local/classes.localsmartdb.ts +5 -6
  40. package/ts/ts_local/plugins.ts +1 -3
  41. package/ts/ts_smartdb/index.ts +14 -41
  42. package/ts/ts_smartdb/plugins.ts +2 -15
  43. package/ts/ts_smartdb/rust-db-bridge.ts +262 -0
  44. package/ts/ts_smartdb/server/SmartdbServer.ts +115 -246
  45. package/ts/ts_smartdb/server/index.ts +0 -7
  46. package/dist_ts/ts_smartdb/engine/AggregationEngine.d.ts +0 -66
  47. package/dist_ts/ts_smartdb/engine/AggregationEngine.js +0 -189
  48. package/dist_ts/ts_smartdb/engine/IndexEngine.d.ts +0 -97
  49. package/dist_ts/ts_smartdb/engine/IndexEngine.js +0 -678
  50. package/dist_ts/ts_smartdb/engine/QueryEngine.d.ts +0 -54
  51. package/dist_ts/ts_smartdb/engine/QueryEngine.js +0 -271
  52. package/dist_ts/ts_smartdb/engine/QueryPlanner.d.ts +0 -64
  53. package/dist_ts/ts_smartdb/engine/QueryPlanner.js +0 -308
  54. package/dist_ts/ts_smartdb/engine/SessionEngine.d.ts +0 -117
  55. package/dist_ts/ts_smartdb/engine/SessionEngine.js +0 -232
  56. package/dist_ts/ts_smartdb/engine/TransactionEngine.d.ts +0 -85
  57. package/dist_ts/ts_smartdb/engine/TransactionEngine.js +0 -287
  58. package/dist_ts/ts_smartdb/engine/UpdateEngine.d.ts +0 -47
  59. package/dist_ts/ts_smartdb/engine/UpdateEngine.js +0 -461
  60. package/dist_ts/ts_smartdb/errors/SmartdbErrors.d.ts +0 -100
  61. package/dist_ts/ts_smartdb/errors/SmartdbErrors.js +0 -155
  62. package/dist_ts/ts_smartdb/server/CommandRouter.d.ts +0 -87
  63. package/dist_ts/ts_smartdb/server/CommandRouter.js +0 -222
  64. package/dist_ts/ts_smartdb/server/WireProtocol.d.ts +0 -117
  65. package/dist_ts/ts_smartdb/server/WireProtocol.js +0 -298
  66. package/dist_ts/ts_smartdb/server/handlers/AdminHandler.d.ts +0 -100
  67. package/dist_ts/ts_smartdb/server/handlers/AdminHandler.js +0 -668
  68. package/dist_ts/ts_smartdb/server/handlers/AggregateHandler.d.ts +0 -31
  69. package/dist_ts/ts_smartdb/server/handlers/AggregateHandler.js +0 -277
  70. package/dist_ts/ts_smartdb/server/handlers/DeleteHandler.d.ts +0 -8
  71. package/dist_ts/ts_smartdb/server/handlers/DeleteHandler.js +0 -95
  72. package/dist_ts/ts_smartdb/server/handlers/FindHandler.d.ts +0 -31
  73. package/dist_ts/ts_smartdb/server/handlers/FindHandler.js +0 -291
  74. package/dist_ts/ts_smartdb/server/handlers/HelloHandler.d.ts +0 -11
  75. package/dist_ts/ts_smartdb/server/handlers/HelloHandler.js +0 -62
  76. package/dist_ts/ts_smartdb/server/handlers/IndexHandler.d.ts +0 -20
  77. package/dist_ts/ts_smartdb/server/handlers/IndexHandler.js +0 -183
  78. package/dist_ts/ts_smartdb/server/handlers/InsertHandler.d.ts +0 -8
  79. package/dist_ts/ts_smartdb/server/handlers/InsertHandler.js +0 -79
  80. package/dist_ts/ts_smartdb/server/handlers/UpdateHandler.d.ts +0 -24
  81. package/dist_ts/ts_smartdb/server/handlers/UpdateHandler.js +0 -296
  82. package/dist_ts/ts_smartdb/server/handlers/index.d.ts +0 -8
  83. package/dist_ts/ts_smartdb/server/handlers/index.js +0 -10
  84. package/dist_ts/ts_smartdb/storage/FileStorageAdapter.d.ts +0 -85
  85. package/dist_ts/ts_smartdb/storage/FileStorageAdapter.js +0 -465
  86. package/dist_ts/ts_smartdb/storage/IStorageAdapter.d.ts +0 -145
  87. package/dist_ts/ts_smartdb/storage/IStorageAdapter.js +0 -2
  88. package/dist_ts/ts_smartdb/storage/MemoryStorageAdapter.d.ts +0 -67
  89. package/dist_ts/ts_smartdb/storage/MemoryStorageAdapter.js +0 -378
  90. package/dist_ts/ts_smartdb/storage/OpLog.d.ts +0 -93
  91. package/dist_ts/ts_smartdb/storage/OpLog.js +0 -221
  92. package/dist_ts/ts_smartdb/storage/WAL.d.ts +0 -117
  93. package/dist_ts/ts_smartdb/storage/WAL.js +0 -286
  94. package/dist_ts/ts_smartdb/types/interfaces.d.ts +0 -363
  95. package/dist_ts/ts_smartdb/types/interfaces.js +0 -2
  96. package/dist_ts/ts_smartdb/utils/checksum.d.ts +0 -30
  97. package/dist_ts/ts_smartdb/utils/checksum.js +0 -77
  98. package/dist_ts/ts_smartdb/utils/index.d.ts +0 -1
  99. package/dist_ts/ts_smartdb/utils/index.js +0 -2
  100. package/ts/ts_smartdb/engine/AggregationEngine.ts +0 -283
  101. package/ts/ts_smartdb/engine/IndexEngine.ts +0 -798
  102. package/ts/ts_smartdb/engine/QueryEngine.ts +0 -301
  103. package/ts/ts_smartdb/engine/QueryPlanner.ts +0 -393
  104. package/ts/ts_smartdb/engine/SessionEngine.ts +0 -292
  105. package/ts/ts_smartdb/engine/TransactionEngine.ts +0 -351
  106. package/ts/ts_smartdb/engine/UpdateEngine.ts +0 -506
  107. package/ts/ts_smartdb/errors/SmartdbErrors.ts +0 -181
  108. package/ts/ts_smartdb/server/CommandRouter.ts +0 -289
  109. package/ts/ts_smartdb/server/WireProtocol.ts +0 -416
  110. package/ts/ts_smartdb/server/handlers/AdminHandler.ts +0 -719
  111. package/ts/ts_smartdb/server/handlers/AggregateHandler.ts +0 -342
  112. package/ts/ts_smartdb/server/handlers/DeleteHandler.ts +0 -115
  113. package/ts/ts_smartdb/server/handlers/FindHandler.ts +0 -330
  114. package/ts/ts_smartdb/server/handlers/HelloHandler.ts +0 -78
  115. package/ts/ts_smartdb/server/handlers/IndexHandler.ts +0 -207
  116. package/ts/ts_smartdb/server/handlers/InsertHandler.ts +0 -97
  117. package/ts/ts_smartdb/server/handlers/UpdateHandler.ts +0 -344
  118. package/ts/ts_smartdb/server/handlers/index.ts +0 -10
  119. package/ts/ts_smartdb/storage/FileStorageAdapter.ts +0 -562
  120. package/ts/ts_smartdb/storage/IStorageAdapter.ts +0 -208
  121. package/ts/ts_smartdb/storage/MemoryStorageAdapter.ts +0 -455
  122. package/ts/ts_smartdb/storage/OpLog.ts +0 -282
  123. package/ts/ts_smartdb/storage/WAL.ts +0 -375
  124. package/ts/ts_smartdb/types/interfaces.ts +0 -433
  125. package/ts/ts_smartdb/utils/checksum.ts +0 -88
  126. package/ts/ts_smartdb/utils/index.ts +0 -1
@@ -1,155 +0,0 @@
1
- /**
2
- * Base error class for all SmartDB errors
3
- * Mirrors MongoDB driver error hierarchy
4
- */
5
- export class SmartdbError extends Error {
6
- code;
7
- codeName;
8
- constructor(message, code, codeName) {
9
- super(message);
10
- this.name = 'SmartdbError';
11
- this.code = code;
12
- this.codeName = codeName;
13
- Object.setPrototypeOf(this, new.target.prototype);
14
- }
15
- }
16
- /**
17
- * Error thrown during connection issues
18
- */
19
- export class SmartdbConnectionError extends SmartdbError {
20
- constructor(message) {
21
- super(message);
22
- this.name = 'SmartdbConnectionError';
23
- }
24
- }
25
- /**
26
- * Error thrown when an operation times out
27
- */
28
- export class SmartdbTimeoutError extends SmartdbError {
29
- constructor(message) {
30
- super(message, 50, 'MaxTimeMSExpired');
31
- this.name = 'SmartdbTimeoutError';
32
- }
33
- }
34
- /**
35
- * Error thrown during write operations
36
- */
37
- export class SmartdbWriteError extends SmartdbError {
38
- writeErrors;
39
- result;
40
- constructor(message, code, writeErrors) {
41
- super(message, code);
42
- this.name = 'SmartdbWriteError';
43
- this.writeErrors = writeErrors;
44
- }
45
- }
46
- /**
47
- * Error thrown for duplicate key violations
48
- */
49
- export class SmartdbDuplicateKeyError extends SmartdbWriteError {
50
- keyPattern;
51
- keyValue;
52
- constructor(message, keyPattern, keyValue) {
53
- super(message, 11000);
54
- this.name = 'SmartdbDuplicateKeyError';
55
- this.codeName = 'DuplicateKey';
56
- this.keyPattern = keyPattern;
57
- this.keyValue = keyValue;
58
- }
59
- }
60
- /**
61
- * Error thrown for bulk write failures
62
- */
63
- export class SmartdbBulkWriteError extends SmartdbError {
64
- writeErrors;
65
- result;
66
- constructor(message, writeErrors, result) {
67
- super(message, 65);
68
- this.name = 'SmartdbBulkWriteError';
69
- this.writeErrors = writeErrors;
70
- this.result = result;
71
- }
72
- }
73
- /**
74
- * Error thrown during transaction operations
75
- */
76
- export class SmartdbTransactionError extends SmartdbError {
77
- constructor(message, code) {
78
- super(message, code);
79
- this.name = 'SmartdbTransactionError';
80
- }
81
- }
82
- /**
83
- * Error thrown when a transaction is aborted due to conflict
84
- */
85
- export class SmartdbWriteConflictError extends SmartdbTransactionError {
86
- constructor(message = 'Write conflict during transaction') {
87
- super(message, 112);
88
- this.name = 'SmartdbWriteConflictError';
89
- this.codeName = 'WriteConflict';
90
- }
91
- }
92
- /**
93
- * Error thrown for invalid arguments
94
- */
95
- export class SmartdbArgumentError extends SmartdbError {
96
- constructor(message) {
97
- super(message);
98
- this.name = 'SmartdbArgumentError';
99
- }
100
- }
101
- /**
102
- * Error thrown when an operation is not supported
103
- */
104
- export class SmartdbNotSupportedError extends SmartdbError {
105
- constructor(message) {
106
- super(message, 115);
107
- this.name = 'SmartdbNotSupportedError';
108
- this.codeName = 'CommandNotSupported';
109
- }
110
- }
111
- /**
112
- * Error thrown when cursor is exhausted or closed
113
- */
114
- export class SmartdbCursorError extends SmartdbError {
115
- constructor(message) {
116
- super(message);
117
- this.name = 'SmartdbCursorError';
118
- }
119
- }
120
- /**
121
- * Error thrown when a namespace (database.collection) is invalid
122
- */
123
- export class SmartdbNamespaceError extends SmartdbError {
124
- constructor(message) {
125
- super(message, 73);
126
- this.name = 'SmartdbNamespaceError';
127
- this.codeName = 'InvalidNamespace';
128
- }
129
- }
130
- /**
131
- * Error thrown when an index operation fails
132
- */
133
- export class SmartdbIndexError extends SmartdbError {
134
- constructor(message, code) {
135
- super(message, code || 86);
136
- this.name = 'SmartdbIndexError';
137
- }
138
- }
139
- /**
140
- * Convert any error to a SmartdbError
141
- */
142
- export function toSmartdbError(error) {
143
- if (error instanceof SmartdbError) {
144
- return error;
145
- }
146
- const smartdbError = new SmartdbError(error.message || String(error));
147
- if (error.code) {
148
- smartdbError.code = error.code;
149
- }
150
- if (error.codeName) {
151
- smartdbError.codeName = error.codeName;
152
- }
153
- return smartdbError;
154
- }
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU21hcnRkYkVycm9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL3RzX3NtYXJ0ZGIvZXJyb3JzL1NtYXJ0ZGJFcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxLQUFLO0lBQzlCLElBQUksQ0FBVTtJQUNkLFFBQVEsQ0FBVTtJQUV6QixZQUFZLE9BQWUsRUFBRSxJQUFhLEVBQUUsUUFBaUI7UUFDM0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxjQUFjLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxZQUFZO0lBQ3RELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLHdCQUF3QixDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFlBQVk7SUFDbkQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBQzFDLFdBQVcsQ0FBaUI7SUFDNUIsTUFBTSxDQUFPO0lBRXBCLFlBQVksT0FBZSxFQUFFLElBQWEsRUFBRSxXQUEyQjtRQUNy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
@@ -1,87 +0,0 @@
1
- import * as plugins from '../plugins.js';
2
- import type { IStorageAdapter } from '../storage/IStorageAdapter.js';
3
- import type { IParsedCommand } from './WireProtocol.js';
4
- import type { SmartdbServer } from './SmartdbServer.js';
5
- import { IndexEngine } from '../engine/IndexEngine.js';
6
- import { TransactionEngine } from '../engine/TransactionEngine.js';
7
- import { SessionEngine } from '../engine/SessionEngine.js';
8
- /**
9
- * Handler context passed to command handlers
10
- */
11
- export interface IHandlerContext {
12
- storage: IStorageAdapter;
13
- server: SmartdbServer;
14
- database: string;
15
- command: plugins.bson.Document;
16
- documentSequences?: Map<string, plugins.bson.Document[]>;
17
- /** Get or create an IndexEngine for a collection */
18
- getIndexEngine: (collName: string) => IndexEngine;
19
- /** Transaction engine instance */
20
- transactionEngine: TransactionEngine;
21
- /** Current transaction ID (if in a transaction) */
22
- txnId?: string;
23
- /** Session ID (from lsid) */
24
- sessionId?: string;
25
- /** Session engine instance */
26
- sessionEngine: SessionEngine;
27
- }
28
- /**
29
- * Command handler interface
30
- */
31
- export interface ICommandHandler {
32
- handle(context: IHandlerContext): Promise<plugins.bson.Document>;
33
- }
34
- /**
35
- * CommandRouter - Routes incoming commands to appropriate handlers
36
- */
37
- export declare class CommandRouter {
38
- private storage;
39
- private server;
40
- private handlers;
41
- private cursors;
42
- private cursorIdCounter;
43
- private indexEngines;
44
- private transactionEngine;
45
- private sessionEngine;
46
- constructor(storage: IStorageAdapter, server: SmartdbServer);
47
- /**
48
- * Get or create an IndexEngine for a database.collection
49
- */
50
- getIndexEngine(dbName: string, collName: string): IndexEngine;
51
- /**
52
- * Clear index engine cache for a collection (used when collection is dropped)
53
- */
54
- clearIndexEngineCache(dbName: string, collName?: string): void;
55
- /**
56
- * Register all command handlers
57
- */
58
- private registerHandlers;
59
- /**
60
- * Route a command to its handler
61
- */
62
- route(parsedCommand: IParsedCommand): Promise<plugins.bson.Document>;
63
- /**
64
- * Close the command router and cleanup resources
65
- */
66
- close(): void;
67
- /**
68
- * Get session engine (for administrative purposes)
69
- */
70
- getSessionEngine(): SessionEngine;
71
- /**
72
- * Get transaction engine (for administrative purposes)
73
- */
74
- getTransactionEngine(): TransactionEngine;
75
- }
76
- /**
77
- * Cursor state for multi-batch queries
78
- */
79
- export interface ICursorState {
80
- id: bigint;
81
- database: string;
82
- collection: string;
83
- documents: plugins.bson.Document[];
84
- position: number;
85
- batchSize: number;
86
- createdAt: Date;
87
- }
@@ -1,222 +0,0 @@
1
- import * as plugins from '../plugins.js';
2
- import { IndexEngine } from '../engine/IndexEngine.js';
3
- import { TransactionEngine } from '../engine/TransactionEngine.js';
4
- import { SessionEngine } from '../engine/SessionEngine.js';
5
- // Import handlers
6
- import { HelloHandler } from './handlers/HelloHandler.js';
7
- import { InsertHandler } from './handlers/InsertHandler.js';
8
- import { FindHandler } from './handlers/FindHandler.js';
9
- import { UpdateHandler } from './handlers/UpdateHandler.js';
10
- import { DeleteHandler } from './handlers/DeleteHandler.js';
11
- import { AggregateHandler } from './handlers/AggregateHandler.js';
12
- import { IndexHandler } from './handlers/IndexHandler.js';
13
- import { AdminHandler } from './handlers/AdminHandler.js';
14
- /**
15
- * CommandRouter - Routes incoming commands to appropriate handlers
16
- */
17
- export class CommandRouter {
18
- storage;
19
- server;
20
- handlers = new Map();
21
- // Cursor state for getMore operations
22
- cursors = new Map();
23
- cursorIdCounter = BigInt(1);
24
- // Index engine cache: db.collection -> IndexEngine
25
- indexEngines = new Map();
26
- // Transaction engine (shared across all handlers)
27
- transactionEngine;
28
- // Session engine (shared across all handlers)
29
- sessionEngine;
30
- constructor(storage, server) {
31
- this.storage = storage;
32
- this.server = server;
33
- this.transactionEngine = new TransactionEngine(storage);
34
- this.sessionEngine = new SessionEngine();
35
- // Link session engine to transaction engine for auto-abort on session expiry
36
- this.sessionEngine.setTransactionEngine(this.transactionEngine);
37
- this.registerHandlers();
38
- }
39
- /**
40
- * Get or create an IndexEngine for a database.collection
41
- */
42
- getIndexEngine(dbName, collName) {
43
- const key = `${dbName}.${collName}`;
44
- let engine = this.indexEngines.get(key);
45
- if (!engine) {
46
- engine = new IndexEngine(dbName, collName, this.storage);
47
- this.indexEngines.set(key, engine);
48
- }
49
- return engine;
50
- }
51
- /**
52
- * Clear index engine cache for a collection (used when collection is dropped)
53
- */
54
- clearIndexEngineCache(dbName, collName) {
55
- if (collName) {
56
- this.indexEngines.delete(`${dbName}.${collName}`);
57
- }
58
- else {
59
- // Clear all engines for the database
60
- for (const key of this.indexEngines.keys()) {
61
- if (key.startsWith(`${dbName}.`)) {
62
- this.indexEngines.delete(key);
63
- }
64
- }
65
- }
66
- }
67
- /**
68
- * Register all command handlers
69
- */
70
- registerHandlers() {
71
- // Create handler instances with shared state
72
- const helloHandler = new HelloHandler();
73
- const findHandler = new FindHandler(this.cursors, () => this.cursorIdCounter++);
74
- const insertHandler = new InsertHandler();
75
- const updateHandler = new UpdateHandler();
76
- const deleteHandler = new DeleteHandler();
77
- const aggregateHandler = new AggregateHandler(this.cursors, () => this.cursorIdCounter++);
78
- const indexHandler = new IndexHandler();
79
- const adminHandler = new AdminHandler();
80
- // Handshake commands
81
- this.handlers.set('hello', helloHandler);
82
- this.handlers.set('ismaster', helloHandler);
83
- this.handlers.set('isMaster', helloHandler);
84
- // CRUD commands
85
- this.handlers.set('find', findHandler);
86
- this.handlers.set('insert', insertHandler);
87
- this.handlers.set('update', updateHandler);
88
- this.handlers.set('delete', deleteHandler);
89
- this.handlers.set('findAndModify', updateHandler);
90
- this.handlers.set('getMore', findHandler);
91
- this.handlers.set('killCursors', findHandler);
92
- // Aggregation
93
- this.handlers.set('aggregate', aggregateHandler);
94
- this.handlers.set('count', findHandler);
95
- this.handlers.set('distinct', findHandler);
96
- // Index operations
97
- this.handlers.set('createIndexes', indexHandler);
98
- this.handlers.set('dropIndexes', indexHandler);
99
- this.handlers.set('listIndexes', indexHandler);
100
- // Admin/Database operations
101
- this.handlers.set('ping', adminHandler);
102
- this.handlers.set('listDatabases', adminHandler);
103
- this.handlers.set('listCollections', adminHandler);
104
- this.handlers.set('drop', adminHandler);
105
- this.handlers.set('dropDatabase', adminHandler);
106
- this.handlers.set('create', adminHandler);
107
- this.handlers.set('serverStatus', adminHandler);
108
- this.handlers.set('buildInfo', adminHandler);
109
- this.handlers.set('whatsmyuri', adminHandler);
110
- this.handlers.set('getLog', adminHandler);
111
- this.handlers.set('hostInfo', adminHandler);
112
- this.handlers.set('replSetGetStatus', adminHandler);
113
- this.handlers.set('isMaster', helloHandler);
114
- this.handlers.set('saslStart', adminHandler);
115
- this.handlers.set('saslContinue', adminHandler);
116
- this.handlers.set('endSessions', adminHandler);
117
- this.handlers.set('abortTransaction', adminHandler);
118
- this.handlers.set('commitTransaction', adminHandler);
119
- this.handlers.set('collStats', adminHandler);
120
- this.handlers.set('dbStats', adminHandler);
121
- this.handlers.set('connectionStatus', adminHandler);
122
- this.handlers.set('currentOp', adminHandler);
123
- this.handlers.set('collMod', adminHandler);
124
- this.handlers.set('renameCollection', adminHandler);
125
- }
126
- /**
127
- * Route a command to its handler
128
- */
129
- async route(parsedCommand) {
130
- const { commandName, command, database, documentSequences } = parsedCommand;
131
- // Extract session ID from lsid using SessionEngine helper
132
- let sessionId = SessionEngine.extractSessionId(command.lsid);
133
- let txnId;
134
- // If we have a session ID, register/touch the session
135
- if (sessionId) {
136
- this.sessionEngine.getOrCreateSession(sessionId);
137
- }
138
- // Check if this starts a new transaction
139
- if (command.startTransaction && sessionId) {
140
- txnId = this.transactionEngine.startTransaction(sessionId);
141
- this.sessionEngine.startTransaction(sessionId, txnId, command.txnNumber);
142
- }
143
- else if (sessionId && this.sessionEngine.isInTransaction(sessionId)) {
144
- // Continue existing transaction
145
- txnId = this.sessionEngine.getTransactionId(sessionId);
146
- // Verify transaction is still active
147
- if (txnId && !this.transactionEngine.isActive(txnId)) {
148
- this.sessionEngine.endTransaction(sessionId);
149
- txnId = undefined;
150
- }
151
- }
152
- // Create handler context
153
- const context = {
154
- storage: this.storage,
155
- server: this.server,
156
- database,
157
- command,
158
- documentSequences,
159
- getIndexEngine: (collName) => this.getIndexEngine(database, collName),
160
- transactionEngine: this.transactionEngine,
161
- sessionEngine: this.sessionEngine,
162
- txnId,
163
- sessionId,
164
- };
165
- // Find handler
166
- const handler = this.handlers.get(commandName);
167
- if (!handler) {
168
- // Unknown command
169
- return {
170
- ok: 0,
171
- errmsg: `no such command: '${commandName}'`,
172
- code: 59,
173
- codeName: 'CommandNotFound',
174
- };
175
- }
176
- try {
177
- return await handler.handle(context);
178
- }
179
- catch (error) {
180
- // Handle known error types
181
- if (error.code) {
182
- return {
183
- ok: 0,
184
- errmsg: error.message,
185
- code: error.code,
186
- codeName: error.codeName || 'UnknownError',
187
- };
188
- }
189
- // Generic error
190
- return {
191
- ok: 0,
192
- errmsg: error.message || 'Internal error',
193
- code: 1,
194
- codeName: 'InternalError',
195
- };
196
- }
197
- }
198
- /**
199
- * Close the command router and cleanup resources
200
- */
201
- close() {
202
- // Close session engine (stops cleanup interval, clears sessions)
203
- this.sessionEngine.close();
204
- // Clear cursors
205
- this.cursors.clear();
206
- // Clear index engine cache
207
- this.indexEngines.clear();
208
- }
209
- /**
210
- * Get session engine (for administrative purposes)
211
- */
212
- getSessionEngine() {
213
- return this.sessionEngine;
214
- }
215
- /**
216
- * Get transaction engine (for administrative purposes)
217
- */
218
- getTransactionEngine() {
219
- return this.transactionEngine;
220
- }
221
- }
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZFJvdXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL3RzX3NtYXJ0ZGIvc2VydmVyL0NvbW1hbmRSb3V0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFJekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxrQkFBa0I7QUFDbEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBOEIxRDs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBQ2hCLE9BQU8sQ0FBa0I7SUFDekIsTUFBTSxDQUFnQjtJQUN0QixRQUFRLEdBQWlDLElBQUksR0FBRyxFQUFFLENBQUM7SUFFM0Qsc0NBQXNDO0lBQzlCLE9BQU8sR0FBOEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMvQyxlQUFlLEdBQVcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTVDLG1EQUFtRDtJQUMzQyxZQUFZLEdBQTZCLElBQUksR0FBRyxF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
@@ -1,117 +0,0 @@
1
- import * as plugins from '../plugins.js';
2
- /**
3
- * MongoDB Wire Protocol Implementation
4
- * Handles parsing and encoding of MongoDB wire protocol messages (OP_MSG primarily)
5
- *
6
- * Wire Protocol Message Format:
7
- * - Header (16 bytes): messageLength (4), requestID (4), responseTo (4), opCode (4)
8
- * - OP_MSG: flagBits (4), sections[], optional checksum (4)
9
- *
10
- * References:
11
- * - https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/
12
- */
13
- export declare const OP_REPLY = 1;
14
- export declare const OP_UPDATE = 2001;
15
- export declare const OP_INSERT = 2002;
16
- export declare const OP_QUERY = 2004;
17
- export declare const OP_GET_MORE = 2005;
18
- export declare const OP_DELETE = 2006;
19
- export declare const OP_KILL_CURSORS = 2007;
20
- export declare const OP_COMPRESSED = 2012;
21
- export declare const OP_MSG = 2013;
22
- export declare const SECTION_BODY = 0;
23
- export declare const SECTION_DOCUMENT_SEQUENCE = 1;
24
- export declare const MSG_FLAG_CHECKSUM_PRESENT: number;
25
- export declare const MSG_FLAG_MORE_TO_COME: number;
26
- export declare const MSG_FLAG_EXHAUST_ALLOWED: number;
27
- /**
28
- * Parsed message header
29
- */
30
- export interface IMessageHeader {
31
- messageLength: number;
32
- requestID: number;
33
- responseTo: number;
34
- opCode: number;
35
- }
36
- /**
37
- * Parsed OP_MSG message
38
- */
39
- export interface IOpMsgMessage {
40
- header: IMessageHeader;
41
- flagBits: number;
42
- sections: IOpMsgSection[];
43
- checksum?: number;
44
- }
45
- /**
46
- * OP_MSG section (either body or document sequence)
47
- */
48
- export interface IOpMsgSection {
49
- type: number;
50
- payload: plugins.bson.Document;
51
- sequenceIdentifier?: string;
52
- documents?: plugins.bson.Document[];
53
- }
54
- /**
55
- * Parsed OP_QUERY message (legacy, but used for initial handshake)
56
- */
57
- export interface IOpQueryMessage {
58
- header: IMessageHeader;
59
- flags: number;
60
- fullCollectionName: string;
61
- numberToSkip: number;
62
- numberToReturn: number;
63
- query: plugins.bson.Document;
64
- returnFieldsSelector?: plugins.bson.Document;
65
- }
66
- /**
67
- * Parsed command from any message type
68
- */
69
- export interface IParsedCommand {
70
- commandName: string;
71
- command: plugins.bson.Document;
72
- database: string;
73
- requestID: number;
74
- opCode: number;
75
- documentSequences?: Map<string, plugins.bson.Document[]>;
76
- }
77
- /**
78
- * Wire Protocol parser and encoder
79
- */
80
- export declare class WireProtocol {
81
- /**
82
- * Parse a complete message from a buffer
83
- * Returns the parsed command and the number of bytes consumed
84
- */
85
- static parseMessage(buffer: Buffer): {
86
- command: IParsedCommand;
87
- bytesConsumed: number;
88
- } | null;
89
- /**
90
- * Parse message header (16 bytes)
91
- */
92
- private static parseHeader;
93
- /**
94
- * Parse OP_MSG message
95
- */
96
- private static parseOpMsg;
97
- /**
98
- * Parse OP_QUERY message (legacy, used for initial handshake)
99
- */
100
- private static parseOpQuery;
101
- /**
102
- * Encode a response as OP_MSG
103
- */
104
- static encodeOpMsgResponse(responseTo: number, response: plugins.bson.Document, requestID?: number): Buffer;
105
- /**
106
- * Encode a response as OP_REPLY (legacy, for OP_QUERY responses)
107
- */
108
- static encodeOpReplyResponse(responseTo: number, documents: plugins.bson.Document[], requestID?: number, cursorId?: bigint): Buffer;
109
- /**
110
- * Encode an error response
111
- */
112
- static encodeErrorResponse(responseTo: number, errorCode: number, errorMessage: string, commandName?: string): Buffer;
113
- /**
114
- * Get error code name from error code
115
- */
116
- private static getErrorCodeName;
117
- }