@push.rocks/smartmongo 2.2.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/index.d.ts +1 -1
  3. package/dist_ts/index.js +3 -3
  4. package/dist_ts/tsmdb/engine/AggregationEngine.js +189 -0
  5. package/dist_ts/{congodb → tsmdb}/engine/IndexEngine.d.ts +23 -3
  6. package/dist_ts/tsmdb/engine/IndexEngine.js +678 -0
  7. package/dist_ts/tsmdb/engine/QueryEngine.js +271 -0
  8. package/dist_ts/tsmdb/engine/QueryPlanner.d.ts +64 -0
  9. package/dist_ts/tsmdb/engine/QueryPlanner.js +308 -0
  10. package/dist_ts/tsmdb/engine/SessionEngine.d.ts +117 -0
  11. package/dist_ts/tsmdb/engine/SessionEngine.js +232 -0
  12. package/dist_ts/{congodb → tsmdb}/engine/TransactionEngine.d.ts +1 -1
  13. package/dist_ts/tsmdb/engine/TransactionEngine.js +287 -0
  14. package/dist_ts/tsmdb/engine/UpdateEngine.js +461 -0
  15. package/dist_ts/{congodb/errors/CongoErrors.d.ts → tsmdb/errors/TsmdbErrors.d.ts} +16 -16
  16. package/dist_ts/tsmdb/errors/TsmdbErrors.js +155 -0
  17. package/dist_ts/{congodb → tsmdb}/index.d.ts +11 -4
  18. package/dist_ts/tsmdb/index.js +31 -0
  19. package/dist_ts/tsmdb/server/CommandRouter.d.ts +87 -0
  20. package/dist_ts/tsmdb/server/CommandRouter.js +222 -0
  21. package/dist_ts/{congodb/server/CongoServer.d.ts → tsmdb/server/TsmdbServer.d.ts} +6 -6
  22. package/dist_ts/tsmdb/server/TsmdbServer.js +229 -0
  23. package/dist_ts/{congodb → tsmdb}/server/WireProtocol.d.ts +1 -1
  24. package/dist_ts/tsmdb/server/WireProtocol.js +298 -0
  25. package/dist_ts/{congodb → tsmdb}/server/handlers/AdminHandler.d.ts +1 -1
  26. package/dist_ts/tsmdb/server/handlers/AdminHandler.js +668 -0
  27. package/dist_ts/{congodb → tsmdb}/server/handlers/AggregateHandler.d.ts +1 -1
  28. package/dist_ts/tsmdb/server/handlers/AggregateHandler.js +277 -0
  29. package/dist_ts/{congodb → tsmdb}/server/handlers/DeleteHandler.d.ts +1 -1
  30. package/dist_ts/tsmdb/server/handlers/DeleteHandler.js +95 -0
  31. package/dist_ts/{congodb → tsmdb}/server/handlers/FindHandler.d.ts +1 -1
  32. package/dist_ts/tsmdb/server/handlers/FindHandler.js +291 -0
  33. package/dist_ts/{congodb → tsmdb}/server/handlers/HelloHandler.d.ts +1 -1
  34. package/dist_ts/{congodb → tsmdb}/server/handlers/HelloHandler.js +2 -2
  35. package/dist_ts/{congodb → tsmdb}/server/handlers/IndexHandler.d.ts +1 -1
  36. package/dist_ts/tsmdb/server/handlers/IndexHandler.js +183 -0
  37. package/dist_ts/{congodb → tsmdb}/server/handlers/InsertHandler.d.ts +1 -1
  38. package/dist_ts/tsmdb/server/handlers/InsertHandler.js +79 -0
  39. package/dist_ts/{congodb → tsmdb}/server/handlers/UpdateHandler.d.ts +1 -1
  40. package/dist_ts/tsmdb/server/handlers/UpdateHandler.js +296 -0
  41. package/dist_ts/tsmdb/server/handlers/index.js +10 -0
  42. package/dist_ts/{congodb → tsmdb}/server/index.d.ts +2 -2
  43. package/dist_ts/tsmdb/server/index.js +7 -0
  44. package/dist_ts/{congodb → tsmdb}/storage/FileStorageAdapter.d.ts +27 -3
  45. package/dist_ts/tsmdb/storage/FileStorageAdapter.js +465 -0
  46. package/dist_ts/{congodb → tsmdb}/storage/IStorageAdapter.d.ts +7 -2
  47. package/dist_ts/{congodb → tsmdb}/storage/IStorageAdapter.js +1 -1
  48. package/dist_ts/{congodb → tsmdb}/storage/MemoryStorageAdapter.d.ts +3 -2
  49. package/dist_ts/tsmdb/storage/MemoryStorageAdapter.js +378 -0
  50. package/dist_ts/{congodb → tsmdb}/storage/OpLog.d.ts +1 -1
  51. package/dist_ts/tsmdb/storage/OpLog.js +221 -0
  52. package/dist_ts/tsmdb/storage/WAL.d.ts +117 -0
  53. package/dist_ts/tsmdb/storage/WAL.js +286 -0
  54. package/dist_ts/tsmdb/tsmdb.plugins.js +14 -0
  55. package/dist_ts/{congodb → tsmdb}/types/interfaces.d.ts +3 -3
  56. package/dist_ts/{congodb → tsmdb}/types/interfaces.js +1 -1
  57. package/dist_ts/tsmdb/utils/checksum.d.ts +30 -0
  58. package/dist_ts/tsmdb/utils/checksum.js +77 -0
  59. package/dist_ts/tsmdb/utils/index.d.ts +1 -0
  60. package/dist_ts/tsmdb/utils/index.js +2 -0
  61. package/package.json +1 -1
  62. package/readme.hints.md +7 -12
  63. package/readme.md +25 -25
  64. package/ts/00_commitinfo_data.ts +1 -1
  65. package/ts/index.ts +2 -2
  66. package/ts/{congodb → tsmdb}/engine/AggregationEngine.ts +1 -1
  67. package/ts/tsmdb/engine/IndexEngine.ts +798 -0
  68. package/ts/{congodb → tsmdb}/engine/QueryEngine.ts +1 -1
  69. package/ts/tsmdb/engine/QueryPlanner.ts +393 -0
  70. package/ts/tsmdb/engine/SessionEngine.ts +292 -0
  71. package/ts/{congodb → tsmdb}/engine/TransactionEngine.ts +12 -12
  72. package/ts/{congodb → tsmdb}/engine/UpdateEngine.ts +1 -1
  73. package/ts/{congodb/errors/CongoErrors.ts → tsmdb/errors/TsmdbErrors.ts} +34 -34
  74. package/ts/{congodb → tsmdb}/index.ts +16 -7
  75. package/ts/{congodb → tsmdb}/server/CommandRouter.ts +114 -5
  76. package/ts/{congodb/server/CongoServer.ts → tsmdb/server/TsmdbServer.ts} +11 -8
  77. package/ts/{congodb → tsmdb}/server/WireProtocol.ts +1 -1
  78. package/ts/{congodb → tsmdb}/server/handlers/AdminHandler.ts +116 -11
  79. package/ts/{congodb → tsmdb}/server/handlers/AggregateHandler.ts +1 -1
  80. package/ts/{congodb → tsmdb}/server/handlers/DeleteHandler.ts +18 -3
  81. package/ts/{congodb → tsmdb}/server/handlers/FindHandler.ts +43 -14
  82. package/ts/{congodb → tsmdb}/server/handlers/HelloHandler.ts +1 -1
  83. package/ts/{congodb → tsmdb}/server/handlers/IndexHandler.ts +1 -1
  84. package/ts/{congodb → tsmdb}/server/handlers/InsertHandler.ts +7 -1
  85. package/ts/{congodb → tsmdb}/server/handlers/UpdateHandler.ts +34 -5
  86. package/ts/{congodb → tsmdb}/server/index.ts +2 -2
  87. package/ts/{congodb → tsmdb}/storage/FileStorageAdapter.ts +90 -7
  88. package/ts/{congodb → tsmdb}/storage/IStorageAdapter.ts +8 -2
  89. package/ts/{congodb → tsmdb}/storage/MemoryStorageAdapter.ts +14 -2
  90. package/ts/{congodb → tsmdb}/storage/OpLog.ts +1 -1
  91. package/ts/tsmdb/storage/WAL.ts +375 -0
  92. package/ts/{congodb → tsmdb}/types/interfaces.ts +3 -3
  93. package/ts/tsmdb/utils/checksum.ts +88 -0
  94. package/ts/tsmdb/utils/index.ts +1 -0
  95. package/dist_ts/congodb/congodb.plugins.js +0 -14
  96. package/dist_ts/congodb/engine/AggregationEngine.js +0 -189
  97. package/dist_ts/congodb/engine/IndexEngine.js +0 -376
  98. package/dist_ts/congodb/engine/QueryEngine.js +0 -271
  99. package/dist_ts/congodb/engine/TransactionEngine.js +0 -287
  100. package/dist_ts/congodb/engine/UpdateEngine.js +0 -461
  101. package/dist_ts/congodb/errors/CongoErrors.js +0 -155
  102. package/dist_ts/congodb/index.js +0 -26
  103. package/dist_ts/congodb/server/CommandRouter.d.ts +0 -51
  104. package/dist_ts/congodb/server/CommandRouter.js +0 -132
  105. package/dist_ts/congodb/server/CongoServer.js +0 -227
  106. package/dist_ts/congodb/server/WireProtocol.js +0 -298
  107. package/dist_ts/congodb/server/handlers/AdminHandler.js +0 -568
  108. package/dist_ts/congodb/server/handlers/AggregateHandler.js +0 -277
  109. package/dist_ts/congodb/server/handlers/DeleteHandler.js +0 -83
  110. package/dist_ts/congodb/server/handlers/FindHandler.js +0 -261
  111. package/dist_ts/congodb/server/handlers/IndexHandler.js +0 -183
  112. package/dist_ts/congodb/server/handlers/InsertHandler.js +0 -76
  113. package/dist_ts/congodb/server/handlers/UpdateHandler.js +0 -270
  114. package/dist_ts/congodb/server/handlers/index.js +0 -10
  115. package/dist_ts/congodb/server/index.js +0 -7
  116. package/dist_ts/congodb/storage/FileStorageAdapter.js +0 -396
  117. package/dist_ts/congodb/storage/MemoryStorageAdapter.js +0 -367
  118. package/dist_ts/congodb/storage/OpLog.js +0 -221
  119. package/ts/congodb/engine/IndexEngine.ts +0 -479
  120. /package/dist_ts/{congodb → tsmdb}/engine/AggregationEngine.d.ts +0 -0
  121. /package/dist_ts/{congodb → tsmdb}/engine/QueryEngine.d.ts +0 -0
  122. /package/dist_ts/{congodb → tsmdb}/engine/UpdateEngine.d.ts +0 -0
  123. /package/dist_ts/{congodb → tsmdb}/server/handlers/index.d.ts +0 -0
  124. /package/dist_ts/{congodb/congodb.plugins.d.ts → tsmdb/tsmdb.plugins.d.ts} +0 -0
  125. /package/ts/{congodb → tsmdb}/server/handlers/index.ts +0 -0
  126. /package/ts/{congodb/congodb.plugins.ts → tsmdb/tsmdb.plugins.ts} +0 -0
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Base error class for all TsmDB errors
3
+ * Mirrors MongoDB driver error hierarchy
4
+ */
5
+ export class TsmdbError extends Error {
6
+ code;
7
+ codeName;
8
+ constructor(message, code, codeName) {
9
+ super(message);
10
+ this.name = 'TsmdbError';
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 TsmdbConnectionError extends TsmdbError {
20
+ constructor(message) {
21
+ super(message);
22
+ this.name = 'TsmdbConnectionError';
23
+ }
24
+ }
25
+ /**
26
+ * Error thrown when an operation times out
27
+ */
28
+ export class TsmdbTimeoutError extends TsmdbError {
29
+ constructor(message) {
30
+ super(message, 50, 'MaxTimeMSExpired');
31
+ this.name = 'TsmdbTimeoutError';
32
+ }
33
+ }
34
+ /**
35
+ * Error thrown during write operations
36
+ */
37
+ export class TsmdbWriteError extends TsmdbError {
38
+ writeErrors;
39
+ result;
40
+ constructor(message, code, writeErrors) {
41
+ super(message, code);
42
+ this.name = 'TsmdbWriteError';
43
+ this.writeErrors = writeErrors;
44
+ }
45
+ }
46
+ /**
47
+ * Error thrown for duplicate key violations
48
+ */
49
+ export class TsmdbDuplicateKeyError extends TsmdbWriteError {
50
+ keyPattern;
51
+ keyValue;
52
+ constructor(message, keyPattern, keyValue) {
53
+ super(message, 11000);
54
+ this.name = 'TsmdbDuplicateKeyError';
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 TsmdbBulkWriteError extends TsmdbError {
64
+ writeErrors;
65
+ result;
66
+ constructor(message, writeErrors, result) {
67
+ super(message, 65);
68
+ this.name = 'TsmdbBulkWriteError';
69
+ this.writeErrors = writeErrors;
70
+ this.result = result;
71
+ }
72
+ }
73
+ /**
74
+ * Error thrown during transaction operations
75
+ */
76
+ export class TsmdbTransactionError extends TsmdbError {
77
+ constructor(message, code) {
78
+ super(message, code);
79
+ this.name = 'TsmdbTransactionError';
80
+ }
81
+ }
82
+ /**
83
+ * Error thrown when a transaction is aborted due to conflict
84
+ */
85
+ export class TsmdbWriteConflictError extends TsmdbTransactionError {
86
+ constructor(message = 'Write conflict during transaction') {
87
+ super(message, 112);
88
+ this.name = 'TsmdbWriteConflictError';
89
+ this.codeName = 'WriteConflict';
90
+ }
91
+ }
92
+ /**
93
+ * Error thrown for invalid arguments
94
+ */
95
+ export class TsmdbArgumentError extends TsmdbError {
96
+ constructor(message) {
97
+ super(message);
98
+ this.name = 'TsmdbArgumentError';
99
+ }
100
+ }
101
+ /**
102
+ * Error thrown when an operation is not supported
103
+ */
104
+ export class TsmdbNotSupportedError extends TsmdbError {
105
+ constructor(message) {
106
+ super(message, 115);
107
+ this.name = 'TsmdbNotSupportedError';
108
+ this.codeName = 'CommandNotSupported';
109
+ }
110
+ }
111
+ /**
112
+ * Error thrown when cursor is exhausted or closed
113
+ */
114
+ export class TsmdbCursorError extends TsmdbError {
115
+ constructor(message) {
116
+ super(message);
117
+ this.name = 'TsmdbCursorError';
118
+ }
119
+ }
120
+ /**
121
+ * Error thrown when a namespace (database.collection) is invalid
122
+ */
123
+ export class TsmdbNamespaceError extends TsmdbError {
124
+ constructor(message) {
125
+ super(message, 73);
126
+ this.name = 'TsmdbNamespaceError';
127
+ this.codeName = 'InvalidNamespace';
128
+ }
129
+ }
130
+ /**
131
+ * Error thrown when an index operation fails
132
+ */
133
+ export class TsmdbIndexError extends TsmdbError {
134
+ constructor(message, code) {
135
+ super(message, code || 86);
136
+ this.name = 'TsmdbIndexError';
137
+ }
138
+ }
139
+ /**
140
+ * Convert any error to a TsmdbError
141
+ */
142
+ export function toTsmdbError(error) {
143
+ if (error instanceof TsmdbError) {
144
+ return error;
145
+ }
146
+ const tsmdbError = new TsmdbError(error.message || String(error));
147
+ if (error.code) {
148
+ tsmdbError.code = error.code;
149
+ }
150
+ if (error.codeName) {
151
+ tsmdbError.codeName = error.codeName;
152
+ }
153
+ return tsmdbError;
154
+ }
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHNtZGJFcnJvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy90c21kYi9lcnJvcnMvVHNtZGJFcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFVBQVcsU0FBUSxLQUFLO0lBQzVCLElBQUksQ0FBVTtJQUNkLFFBQVEsQ0FBVTtJQUV6QixZQUFZLE9BQWUsRUFBRSxJQUFhLEVBQUUsUUFBaUI7UUFDM0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUFVO0lBQ2xELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFVBQVU7SUFDL0MsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLFVBQVU7SUFDdEMsV0FBVyxDQUFpQjtJQUM1QixNQUFNLENBQU87SUFFcEIsWUFBWSxPQUFlLEVBQUUsSUFBYSxFQUFFLFdBQTJCO1FBQ3JFLEtBQUssQ0FB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
@@ -1,19 +1,26 @@
1
- import * as plugins from './congodb.plugins.js';
1
+ import * as plugins from './tsmdb.plugins.js';
2
2
  export { plugins };
3
3
  export { ObjectId, Binary, Timestamp, Long, Decimal128, UUID } from 'bson';
4
4
  export * from './types/interfaces.js';
5
- export * from './errors/CongoErrors.js';
5
+ export * from './errors/TsmdbErrors.js';
6
6
  export type { IStorageAdapter } from './storage/IStorageAdapter.js';
7
7
  export { MemoryStorageAdapter } from './storage/MemoryStorageAdapter.js';
8
8
  export { FileStorageAdapter } from './storage/FileStorageAdapter.js';
9
9
  export { OpLog } from './storage/OpLog.js';
10
+ export { WAL } from './storage/WAL.js';
11
+ export type { IWalEntry, TWalOperation } from './storage/WAL.js';
10
12
  export { QueryEngine } from './engine/QueryEngine.js';
11
13
  export { UpdateEngine } from './engine/UpdateEngine.js';
12
14
  export { AggregationEngine } from './engine/AggregationEngine.js';
13
15
  export { IndexEngine } from './engine/IndexEngine.js';
14
16
  export { TransactionEngine } from './engine/TransactionEngine.js';
15
- export { CongoServer } from './server/CongoServer.js';
16
- export type { ICongoServerOptions } from './server/CongoServer.js';
17
+ export { QueryPlanner } from './engine/QueryPlanner.js';
18
+ export type { IQueryPlan, TQueryPlanType } from './engine/QueryPlanner.js';
19
+ export { SessionEngine } from './engine/SessionEngine.js';
20
+ export type { ISession, ISessionEngineOptions } from './engine/SessionEngine.js';
21
+ export { TsmdbServer } from './server/TsmdbServer.js';
22
+ export type { ITsmdbServerOptions } from './server/TsmdbServer.js';
17
23
  export { WireProtocol } from './server/WireProtocol.js';
18
24
  export { CommandRouter } from './server/CommandRouter.js';
19
25
  export type { ICommandHandler, IHandlerContext, ICursorState } from './server/CommandRouter.js';
26
+ export * from './utils/checksum.js';
@@ -0,0 +1,31 @@
1
+ // TsmDB - MongoDB Wire Protocol compatible in-memory database server
2
+ // Use the official MongoDB driver to connect to TsmdbServer
3
+ // Re-export plugins for external use
4
+ import * as plugins from './tsmdb.plugins.js';
5
+ export { plugins };
6
+ // Export BSON types for convenience
7
+ export { ObjectId, Binary, Timestamp, Long, Decimal128, UUID } from 'bson';
8
+ // Export all types
9
+ export * from './types/interfaces.js';
10
+ // Export errors
11
+ export * from './errors/TsmdbErrors.js';
12
+ export { MemoryStorageAdapter } from './storage/MemoryStorageAdapter.js';
13
+ export { FileStorageAdapter } from './storage/FileStorageAdapter.js';
14
+ export { OpLog } from './storage/OpLog.js';
15
+ export { WAL } from './storage/WAL.js';
16
+ // Export engines
17
+ export { QueryEngine } from './engine/QueryEngine.js';
18
+ export { UpdateEngine } from './engine/UpdateEngine.js';
19
+ export { AggregationEngine } from './engine/AggregationEngine.js';
20
+ export { IndexEngine } from './engine/IndexEngine.js';
21
+ export { TransactionEngine } from './engine/TransactionEngine.js';
22
+ export { QueryPlanner } from './engine/QueryPlanner.js';
23
+ export { SessionEngine } from './engine/SessionEngine.js';
24
+ // Export server (the main entry point for using TsmDB)
25
+ export { TsmdbServer } from './server/TsmdbServer.js';
26
+ // Export wire protocol utilities (for advanced usage)
27
+ export { WireProtocol } from './server/WireProtocol.js';
28
+ export { CommandRouter } from './server/CommandRouter.js';
29
+ // Export utilities
30
+ export * from './utils/checksum.js';
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90c21kYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxRUFBcUU7QUFDckUsNERBQTREO0FBRTVELHFDQUFxQztBQUNyQyxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUVuQixvQ0FBb0M7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNFLG1CQUFtQjtBQUNuQixjQUFjLHVCQUF1QixDQUFDO0FBRXRDLGdCQUFnQjtBQUNoQixjQUFjLHlCQUF5QixDQUFDO0FBSXhDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHdkMsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHMUQsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd0RCxzREFBc0Q7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUcxRCxtQkFBbUI7QUFDbkIsY0FBYyxxQkFBcUIsQ0FBQyJ9
@@ -0,0 +1,87 @@
1
+ import * as plugins from '../tsmdb.plugins.js';
2
+ import type { IStorageAdapter } from '../storage/IStorageAdapter.js';
3
+ import type { IParsedCommand } from './WireProtocol.js';
4
+ import type { TsmdbServer } from './TsmdbServer.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: TsmdbServer;
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: TsmdbServer);
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
+ }
@@ -0,0 +1,222 @@
1
+ import * as plugins from '../tsmdb.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZFJvdXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL3RzbWRiL3NlcnZlci9Db21tYW5kUm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFJL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxrQkFBa0I7QUFDbEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBOEIxRDs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBQ2hCLE9BQU8sQ0FBa0I7SUFDekIsTUFBTSxDQUFjO0lBQ3BCLFFBQVEsR0FBaUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUUzRCxzQ0FBc0M7SUFDOUIsT0FBTyxHQUE4QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQy9DLGVBQWUsR0FBVyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUMsbURBQW1EO0lBQzNDLFlBQVksR0FBNkIsSUFBSSxHQUFHLEVBQUUs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
@@ -2,7 +2,7 @@ import type { IStorageAdapter } from '../storage/IStorageAdapter.js';
2
2
  /**
3
3
  * Server configuration options
4
4
  */
5
- export interface ICongoServerOptions {
5
+ export interface ITsmdbServerOptions {
6
6
  /** Port to listen on (default: 27017) */
7
7
  port?: number;
8
8
  /** Host to bind to (default: 127.0.0.1) */
@@ -17,24 +17,24 @@ export interface ICongoServerOptions {
17
17
  persistIntervalMs?: number;
18
18
  }
19
19
  /**
20
- * CongoServer - MongoDB Wire Protocol compatible server
20
+ * TsmdbServer - MongoDB Wire Protocol compatible server
21
21
  *
22
22
  * This server implements the MongoDB wire protocol (OP_MSG) to allow
23
23
  * official MongoDB drivers to connect and perform operations.
24
24
  *
25
25
  * @example
26
26
  * ```typescript
27
- * import { CongoServer } from '@push.rocks/smartmongo/congodb';
27
+ * import { TsmdbServer } from '@push.rocks/smartmongo/tsmdb';
28
28
  * import { MongoClient } from 'mongodb';
29
29
  *
30
- * const server = new CongoServer({ port: 27017 });
30
+ * const server = new TsmdbServer({ port: 27017 });
31
31
  * await server.start();
32
32
  *
33
33
  * const client = new MongoClient('mongodb://127.0.0.1:27017');
34
34
  * await client.connect();
35
35
  * ```
36
36
  */
37
- export declare class CongoServer {
37
+ export declare class TsmdbServer {
38
38
  private options;
39
39
  private server;
40
40
  private storage;
@@ -43,7 +43,7 @@ export declare class CongoServer {
43
43
  private connectionIdCounter;
44
44
  private isRunning;
45
45
  private startTime;
46
- constructor(options?: ICongoServerOptions);
46
+ constructor(options?: ITsmdbServerOptions);
47
47
  /**
48
48
  * Get the storage adapter (for testing/debugging)
49
49
  */