@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
package/.smartconfig.json CHANGED
@@ -5,19 +5,19 @@
5
5
  "githost": "code.foss.global",
6
6
  "gitscope": "push.rocks",
7
7
  "gitrepo": "smartdb",
8
- "description": "A pure TypeScript MongoDB wire-protocol-compatible database server with pluggable storage, indexing, transactions, and zero external binary dependencies.",
8
+ "description": "A MongoDB-compatible embedded database server with wire protocol support, backed by a high-performance Rust engine.",
9
9
  "npmPackagename": "@push.rocks/smartdb",
10
10
  "license": "MIT",
11
11
  "projectDomain": "push.rocks",
12
12
  "keywords": [
13
- "mongodb",
13
+ "mongodb-compatible",
14
14
  "wire protocol",
15
- "typescript database",
15
+ "embedded database",
16
16
  "in-memory database",
17
17
  "testing",
18
18
  "local database",
19
19
  "database server",
20
- "typescript"
20
+ "rust"
21
21
  ]
22
22
  },
23
23
  "release": {
@@ -32,6 +32,20 @@
32
32
  "@git.zone/tsdoc": {
33
33
  "legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
34
34
  },
35
+ "@git.zone/tsbundle": {
36
+ "bundles": [
37
+ {
38
+ "from": "./ts_debugui/index.ts",
39
+ "to": "./ts_debugserver/bundled.ts",
40
+ "outputMode": "base64ts",
41
+ "bundler": "esbuild",
42
+ "includeFiles": ["./html/index.html"]
43
+ }
44
+ ]
45
+ },
46
+ "@git.zone/tsrust": {
47
+ "targets": ["linux_amd64", "linux_arm64"]
48
+ },
35
49
  "@ship.zone/szci": {
36
50
  "npmGlobalTools": []
37
51
  }
Binary file
Binary file
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartdb',
6
- version: '1.0.1',
7
- description: 'A pure TypeScript MongoDB wire-protocol-compatible database server with pluggable storage, indexing, transactions, and zero external binary dependencies.'
6
+ version: '2.1.0',
7
+ description: 'A MongoDB-compatible embedded database server with wire protocol support, backed by a high-performance Rust engine.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLDJKQUEySjtDQUN6SyxDQUFBIn0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHFIQUFxSDtDQUNuSSxDQUFBIn0=
@@ -3,3 +3,4 @@ export * from './ts_smartdb/index.js';
3
3
  export { LocalSmartDb } from './ts_local/index.js';
4
4
  export type { ILocalSmartDbOptions, ILocalSmartDbConnectionInfo } from './ts_local/index.js';
5
5
  export { commitinfo };
6
+ export type { IOpLogEntry, IOpLogResult, IOpLogStats, IRevertResult, ICollectionInfo, IDocumentsResult, ISmartDbMetrics, } from './ts_smartdb/index.js';
@@ -5,7 +5,7 @@ import { SmartdbServer } from '../ts_smartdb/index.js';
5
5
  export interface ILocalSmartDbConnectionInfo {
6
6
  /** The Unix socket file path */
7
7
  socketPath: string;
8
- /** MongoDB connection URI ready for MongoClient */
8
+ /** Connection URI (mongodb:// scheme) ready for MongoClient */
9
9
  connectionUri: string;
10
10
  }
11
11
  export interface ILocalSmartDbOptions {
@@ -18,8 +18,8 @@ export interface ILocalSmartDbOptions {
18
18
  * LocalSmartDb - Lightweight local MongoDB-compatible database using Unix sockets
19
19
  *
20
20
  * This class wraps SmartdbServer and provides a simple interface for
21
- * starting a local file-based MongoDB-compatible server. Returns connection
22
- * info that you can use with your own MongoDB driver instance.
21
+ * starting a local file-based database server. Returns connection
22
+ * info that you can use with any compatible driver instance.
23
23
  *
24
24
  * @example
25
25
  * ```typescript
@@ -29,11 +29,11 @@ export interface ILocalSmartDbOptions {
29
29
  * const db = new LocalSmartDb({ folderPath: './data' });
30
30
  * const { connectionUri } = await db.start();
31
31
  *
32
- * // Connect with your own MongoDB client
32
+ * // Connect with the driver
33
33
  * const client = new MongoClient(connectionUri, { directConnection: true });
34
34
  * await client.connect();
35
35
  *
36
- * // Use the MongoDB client
36
+ * // Use the client
37
37
  * const collection = client.db('mydb').collection('users');
38
38
  * await collection.insertOne({ name: 'Alice' });
39
39
  *
@@ -1,4 +1,3 @@
1
- import * as plugins from './plugins.js';
2
1
  import * as crypto from 'crypto';
3
2
  import * as path from 'path';
4
3
  import * as os from 'os';
@@ -7,8 +6,8 @@ import { SmartdbServer } from '../ts_smartdb/index.js';
7
6
  * LocalSmartDb - Lightweight local MongoDB-compatible database using Unix sockets
8
7
  *
9
8
  * This class wraps SmartdbServer and provides a simple interface for
10
- * starting a local file-based MongoDB-compatible server. Returns connection
11
- * info that you can use with your own MongoDB driver instance.
9
+ * starting a local file-based database server. Returns connection
10
+ * info that you can use with any compatible driver instance.
12
11
  *
13
12
  * @example
14
13
  * ```typescript
@@ -18,11 +17,11 @@ import { SmartdbServer } from '../ts_smartdb/index.js';
18
17
  * const db = new LocalSmartDb({ folderPath: './data' });
19
18
  * const { connectionUri } = await db.start();
20
19
  *
21
- * // Connect with your own MongoDB client
20
+ * // Connect with the driver
22
21
  * const client = new MongoClient(connectionUri, { directConnection: true });
23
22
  * await client.connect();
24
23
  *
25
- * // Use the MongoDB client
24
+ * // Use the client
26
25
  * const collection = client.db('mydb').collection('users');
27
26
  * await collection.insertOne({ name: 'Alice' });
28
27
  *
@@ -32,10 +31,9 @@ import { SmartdbServer } from '../ts_smartdb/index.js';
32
31
  * ```
33
32
  */
34
33
  export class LocalSmartDb {
35
- options;
36
- server = null;
37
- generatedSocketPath = null;
38
34
  constructor(options) {
35
+ this.server = null;
36
+ this.generatedSocketPath = null;
39
37
  this.options = options;
40
38
  }
41
39
  /**
@@ -112,4 +110,4 @@ export class LocalSmartDb {
112
110
  }
113
111
  }
114
112
  }
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5sb2NhbHNtYXJ0ZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90c19sb2NhbC9jbGFzc2VzLmxvY2Fsc21hcnRkYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFtQnZEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUNmLE9BQU8sQ0FBdUI7SUFDOUIsTUFBTSxHQUF5QixJQUFJLENBQUM7SUFDcEMsbUJBQW1CLEdBQWtCLElBQUksQ0FBQztJQUVsRCxZQUFZLE9BQTZCO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLFdBQVcsUUFBUSxPQUFPLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUVoRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQzlCLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQ3BDLE9BQU8sRUFBRSxNQUFNO1lBQ2YsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVTtTQUNyQyxDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFMUIsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQ3BDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFO1NBQzlDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQ3BDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFO1NBQzlDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5sb2NhbHNtYXJ0ZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90c19sb2NhbC9jbGFzc2VzLmxvY2Fsc21hcnRkYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFtQnZEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUt2QixZQUFZLE9BQTZCO1FBSGpDLFdBQU0sR0FBeUIsSUFBSSxDQUFDO1FBQ3BDLHdCQUFtQixHQUFrQixJQUFJLENBQUM7UUFHaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsV0FBVyxRQUFRLE9BQU8sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRWhGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDOUIsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7WUFDcEMsT0FBTyxFQUFFLE1BQU07WUFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVO1NBQ3JDLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxQixPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7WUFDcEMsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7U0FDOUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7WUFDcEMsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7U0FDOUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVM7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQjtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
@@ -1,2 +1 @@
1
- import * as smartpromise from '@push.rocks/smartpromise';
2
- export { smartpromise };
1
+ export {};
@@ -1,3 +1,3 @@
1
- import * as smartpromise from '@push.rocks/smartpromise';
2
- export { smartpromise };
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3RzX2xvY2FsL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUMifQ==
1
+ export {};
2
+ // Local module plugins - currently no external dependencies needed
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3RzX2xvY2FsL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1FQUFtRSJ9
@@ -1,26 +1,4 @@
1
- import * as plugins from './plugins.js';
2
- export { plugins };
3
- export { ObjectId, Binary, Timestamp, Long, Decimal128, UUID } from 'bson';
4
- export * from './types/interfaces.js';
5
- export * from './errors/SmartdbErrors.js';
6
- export type { IStorageAdapter } from './storage/IStorageAdapter.js';
7
- export { MemoryStorageAdapter } from './storage/MemoryStorageAdapter.js';
8
- export { FileStorageAdapter } from './storage/FileStorageAdapter.js';
9
- export { OpLog } from './storage/OpLog.js';
10
- export { WAL } from './storage/WAL.js';
11
- export type { IWalEntry, TWalOperation } from './storage/WAL.js';
12
- export { QueryEngine } from './engine/QueryEngine.js';
13
- export { UpdateEngine } from './engine/UpdateEngine.js';
14
- export { AggregationEngine } from './engine/AggregationEngine.js';
15
- export { IndexEngine } from './engine/IndexEngine.js';
16
- export { TransactionEngine } from './engine/TransactionEngine.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
1
  export { SmartdbServer } from './server/SmartdbServer.js';
22
2
  export type { ISmartdbServerOptions } from './server/SmartdbServer.js';
23
- export { WireProtocol } from './server/WireProtocol.js';
24
- export { CommandRouter } from './server/CommandRouter.js';
25
- export type { ICommandHandler, IHandlerContext, ICursorState } from './server/CommandRouter.js';
26
- export * from './utils/checksum.js';
3
+ export { RustDbBridge } from './rust-db-bridge.js';
4
+ export type { IOpLogEntry, IOpLogResult, IOpLogStats, IRevertResult, ICollectionInfo, IDocumentsResult, ISmartDbMetrics, } from './rust-db-bridge.js';
@@ -1,31 +1,6 @@
1
- // SmartDB - MongoDB Wire Protocol compatible in-memory database server
2
- // Use the official MongoDB driver to connect to SmartdbServer
3
- // Re-export plugins for external use
4
- import * as plugins from './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/SmartdbErrors.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';
1
+ // SmartDB - Wire protocol compatible embedded database server
24
2
  // Export server (the main entry point for using SmartDB)
25
3
  export { SmartdbServer } from './server/SmartdbServer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90c19zbWFydGRiL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVFQUF1RTtBQUN2RSw4REFBOEQ7QUFFOUQscUNBQXFDO0FBQ3JDLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUVuQixvQ0FBb0M7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNFLG1CQUFtQjtBQUNuQixjQUFjLHVCQUF1QixDQUFDO0FBRXRDLGdCQUFnQjtBQUNoQixjQUFjLDJCQUEyQixDQUFDO0FBSTFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHdkMsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHMUQseURBQXlEO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUcxRCxzREFBc0Q7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUcxRCxtQkFBbUI7QUFDbkIsY0FBYyxxQkFBcUIsQ0FBQyJ9
4
+ // Export bridge for advanced usage
5
+ export { RustDbBridge } from './rust-db-bridge.js';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90c19zbWFydGRiL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhEQUE4RDtBQUU5RCx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzFELG1DQUFtQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUMifQ==
@@ -1,10 +1,2 @@
1
- import * as smartfs from '@push.rocks/smartfs';
2
- import * as smartpath from '@push.rocks/smartpath';
3
- import * as smartpromise from '@push.rocks/smartpromise';
4
- import * as smartrx from '@push.rocks/smartrx';
5
- export { smartfs, smartpath, smartpromise, smartrx };
6
- import * as bson from 'bson';
7
- import * as mingo from 'mingo';
8
- export { bson, mingo };
9
- export { Query } from 'mingo';
10
- export { Aggregator } from 'mingo';
1
+ import * as smartrust from '@push.rocks/smartrust';
2
+ export { smartrust };
@@ -1,14 +1,4 @@
1
1
  // @push.rocks scope
2
- import * as smartfs from '@push.rocks/smartfs';
3
- import * as smartpath from '@push.rocks/smartpath';
4
- import * as smartpromise from '@push.rocks/smartpromise';
5
- import * as smartrx from '@push.rocks/smartrx';
6
- export { smartfs, smartpath, smartpromise, smartrx };
7
- // thirdparty
8
- import * as bson from 'bson';
9
- import * as mingo from 'mingo';
10
- export { bson, mingo };
11
- // Re-export commonly used mingo classes
12
- export { Query } from 'mingo';
13
- export { Aggregator } from 'mingo';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3RzX3NtYXJ0ZGIvcGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFFckQsYUFBYTtBQUNiLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRS9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFFdkIsd0NBQXdDO0FBQ3hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQyJ9
2
+ import * as smartrust from '@push.rocks/smartrust';
3
+ export { smartrust };
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3RzX3NtYXJ0ZGIvcGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLFNBQVMsTUFBTSx1QkFBdUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMifQ==
@@ -0,0 +1,122 @@
1
+ import { EventEmitter } from 'events';
2
+ /**
3
+ * A single oplog entry returned from the Rust engine.
4
+ */
5
+ export interface IOpLogEntry {
6
+ seq: number;
7
+ timestampMs: number;
8
+ op: 'insert' | 'update' | 'delete';
9
+ db: string;
10
+ collection: string;
11
+ documentId: string;
12
+ document: Record<string, any> | null;
13
+ previousDocument: Record<string, any> | null;
14
+ }
15
+ /**
16
+ * Aggregate oplog statistics.
17
+ */
18
+ export interface IOpLogStats {
19
+ currentSeq: number;
20
+ totalEntries: number;
21
+ oldestSeq: number;
22
+ entriesByOp: {
23
+ insert: number;
24
+ update: number;
25
+ delete: number;
26
+ };
27
+ }
28
+ /**
29
+ * Result of a getOpLog query.
30
+ */
31
+ export interface IOpLogResult {
32
+ entries: IOpLogEntry[];
33
+ currentSeq: number;
34
+ totalEntries: number;
35
+ }
36
+ /**
37
+ * Result of a revertToSeq command.
38
+ */
39
+ export interface IRevertResult {
40
+ dryRun: boolean;
41
+ reverted: number;
42
+ targetSeq?: number;
43
+ entries?: IOpLogEntry[];
44
+ errors?: string[];
45
+ }
46
+ /**
47
+ * A collection info entry.
48
+ */
49
+ export interface ICollectionInfo {
50
+ db: string;
51
+ name: string;
52
+ count: number;
53
+ }
54
+ /**
55
+ * Result of a getDocuments query.
56
+ */
57
+ export interface IDocumentsResult {
58
+ documents: Record<string, any>[];
59
+ total: number;
60
+ }
61
+ /**
62
+ * Server metrics.
63
+ */
64
+ export interface ISmartDbMetrics {
65
+ databases: number;
66
+ collections: number;
67
+ oplogEntries: number;
68
+ oplogCurrentSeq: number;
69
+ uptimeSeconds: number;
70
+ }
71
+ /**
72
+ * Configuration sent to the Rust binary on start.
73
+ */
74
+ interface ISmartDbRustConfig {
75
+ port?: number;
76
+ host?: string;
77
+ socketPath?: string;
78
+ storage: 'memory' | 'file';
79
+ storagePath?: string;
80
+ persistPath?: string;
81
+ persistIntervalMs?: number;
82
+ }
83
+ /**
84
+ * Bridge between TypeScript SmartdbServer and the Rust binary.
85
+ * Wraps @push.rocks/smartrust's RustBridge with type-safe command definitions.
86
+ */
87
+ export declare class RustDbBridge extends EventEmitter {
88
+ private bridge;
89
+ constructor();
90
+ /**
91
+ * Spawn the Rust binary in management mode.
92
+ * Returns true if the binary was found and spawned successfully.
93
+ */
94
+ spawn(): Promise<boolean>;
95
+ /**
96
+ * Kill the Rust process and clean up.
97
+ */
98
+ kill(): void;
99
+ /**
100
+ * Whether the bridge is currently running.
101
+ */
102
+ get running(): boolean;
103
+ startDb(config: ISmartDbRustConfig): Promise<{
104
+ connectionUri: string;
105
+ }>;
106
+ stopDb(): Promise<void>;
107
+ getStatus(): Promise<{
108
+ running: boolean;
109
+ }>;
110
+ getMetrics(): Promise<ISmartDbMetrics>;
111
+ getOpLog(params?: {
112
+ sinceSeq?: number;
113
+ limit?: number;
114
+ db?: string;
115
+ collection?: string;
116
+ }): Promise<IOpLogResult>;
117
+ getOpLogStats(): Promise<IOpLogStats>;
118
+ revertToSeq(seq: number, dryRun?: boolean): Promise<IRevertResult>;
119
+ getCollections(db?: string): Promise<ICollectionInfo[]>;
120
+ getDocuments(db: string, collection: string, limit?: number, skip?: number): Promise<IDocumentsResult>;
121
+ }
122
+ export {};
@@ -0,0 +1,113 @@
1
+ import * as plugins from './plugins.js';
2
+ import * as path from 'path';
3
+ import * as url from 'url';
4
+ import { EventEmitter } from 'events';
5
+ /**
6
+ * Get the package root directory using import.meta.url.
7
+ * This file is at ts/ts_smartdb/, so package root is 2 levels up.
8
+ */
9
+ function getPackageRoot() {
10
+ const thisDir = path.dirname(url.fileURLToPath(import.meta.url));
11
+ return path.resolve(thisDir, '..', '..');
12
+ }
13
+ /**
14
+ * Map Node.js process.platform/process.arch to tsrust's friendly name suffix.
15
+ * tsrust names cross-compiled binaries as: rustdb_linux_amd64, rustdb_linux_arm64, etc.
16
+ */
17
+ function getTsrustPlatformSuffix() {
18
+ const archMap = { x64: 'amd64', arm64: 'arm64' };
19
+ const osMap = { linux: 'linux', darwin: 'macos' };
20
+ const os = osMap[process.platform];
21
+ const arch = archMap[process.arch];
22
+ if (os && arch) {
23
+ return `${os}_${arch}`;
24
+ }
25
+ return null;
26
+ }
27
+ /**
28
+ * Build local search paths for the Rust binary, including dist_rust/ candidates
29
+ * (built by tsrust) and local development build paths.
30
+ */
31
+ function buildLocalPaths() {
32
+ const packageRoot = getPackageRoot();
33
+ const suffix = getTsrustPlatformSuffix();
34
+ const paths = [];
35
+ // dist_rust/ candidates (tsrust cross-compiled output)
36
+ if (suffix) {
37
+ paths.push(path.join(packageRoot, 'dist_rust', `rustdb_${suffix}`));
38
+ }
39
+ paths.push(path.join(packageRoot, 'dist_rust', 'rustdb'));
40
+ // Local dev build paths
41
+ paths.push(path.resolve(process.cwd(), 'rust', 'target', 'release', 'rustdb'));
42
+ paths.push(path.resolve(process.cwd(), 'rust', 'target', 'debug', 'rustdb'));
43
+ return paths;
44
+ }
45
+ /**
46
+ * Bridge between TypeScript SmartdbServer and the Rust binary.
47
+ * Wraps @push.rocks/smartrust's RustBridge with type-safe command definitions.
48
+ */
49
+ export class RustDbBridge extends EventEmitter {
50
+ constructor() {
51
+ super();
52
+ this.bridge = new plugins.smartrust.RustBridge({
53
+ binaryName: 'rustdb',
54
+ envVarName: 'SMARTDB_RUST_BINARY',
55
+ platformPackagePrefix: '@push.rocks/smartdb',
56
+ localPaths: buildLocalPaths(),
57
+ maxPayloadSize: 10 * 1024 * 1024, // 10 MB
58
+ });
59
+ // Forward events from the inner bridge
60
+ this.bridge.on('exit', (code, signal) => {
61
+ this.emit('exit', code, signal);
62
+ });
63
+ }
64
+ /**
65
+ * Spawn the Rust binary in management mode.
66
+ * Returns true if the binary was found and spawned successfully.
67
+ */
68
+ async spawn() {
69
+ return this.bridge.spawn();
70
+ }
71
+ /**
72
+ * Kill the Rust process and clean up.
73
+ */
74
+ kill() {
75
+ this.bridge.kill();
76
+ }
77
+ /**
78
+ * Whether the bridge is currently running.
79
+ */
80
+ get running() {
81
+ return this.bridge.running;
82
+ }
83
+ // --- Convenience methods for each management command ---
84
+ async startDb(config) {
85
+ return await this.bridge.sendCommand('start', { config });
86
+ }
87
+ async stopDb() {
88
+ await this.bridge.sendCommand('stop', {});
89
+ }
90
+ async getStatus() {
91
+ return await this.bridge.sendCommand('getStatus', {});
92
+ }
93
+ async getMetrics() {
94
+ return this.bridge.sendCommand('getMetrics', {});
95
+ }
96
+ async getOpLog(params = {}) {
97
+ return this.bridge.sendCommand('getOpLog', params);
98
+ }
99
+ async getOpLogStats() {
100
+ return this.bridge.sendCommand('getOpLogStats', {});
101
+ }
102
+ async revertToSeq(seq, dryRun = false) {
103
+ return this.bridge.sendCommand('revertToSeq', { seq, dryRun });
104
+ }
105
+ async getCollections(db) {
106
+ const result = await this.bridge.sendCommand('getCollections', db ? { db } : {});
107
+ return result.collections;
108
+ }
109
+ async getDocuments(db, collection, limit = 50, skip = 0) {
110
+ return this.bridge.sendCommand('getDocuments', { db, collection, limit, skip });
111
+ }
112
+ }
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVzdC1kYi1icmlkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90c19zbWFydGRiL3J1c3QtZGItYnJpZGdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFzSHRDOzs7R0FHRztBQUNILFNBQVMsY0FBYztJQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLHVCQUF1QjtJQUM5QixNQUFNLE9BQU8sR0FBMkIsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN6RSxNQUFNLEtBQUssR0FBMkIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMxRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7UUFDZixPQUFPLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7O0dBR0c7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
@@ -1,4 +1,4 @@
1
- import type { IStorageAdapter } from '../storage/IStorageAdapter.js';
1
+ import type { IOpLogResult, IOpLogStats, IRevertResult, ICollectionInfo, IDocumentsResult, ISmartDbMetrics } from '../rust-db-bridge.js';
2
2
  /**
3
3
  * Server configuration options
4
4
  */
@@ -19,46 +19,30 @@ export interface ISmartdbServerOptions {
19
19
  persistIntervalMs?: number;
20
20
  }
21
21
  /**
22
- * SmartdbServer - MongoDB Wire Protocol compatible server
22
+ * SmartdbServer - Wire protocol compatible database server backed by Rust
23
23
  *
24
- * This server implements the MongoDB wire protocol (OP_MSG) to allow
25
- * official MongoDB drivers to connect and perform operations.
24
+ * This server implements the wire protocol to allow official drivers to
25
+ * connect and perform operations. The core engine runs as a Rust sidecar
26
+ * binary managed via @push.rocks/smartrust IPC.
26
27
  *
27
28
  * @example
28
29
  * ```typescript
29
- * import { SmartdbServer } from '@push.rocks/smartmongo/smartdb';
30
+ * import { SmartdbServer } from '@push.rocks/smartdb';
30
31
  * import { MongoClient } from 'mongodb';
31
32
  *
32
33
  * const server = new SmartdbServer({ port: 27017 });
33
34
  * await server.start();
34
35
  *
35
- * const client = new MongoClient('mongodb://127.0.0.1:27017');
36
+ * const client = new MongoClient(server.getConnectionUri());
36
37
  * await client.connect();
37
38
  * ```
38
39
  */
39
40
  export declare class SmartdbServer {
40
41
  private options;
41
- private server;
42
- private storage;
43
- private commandRouter;
44
- private connections;
45
- private connectionIdCounter;
42
+ private bridge;
46
43
  private isRunning;
47
- private startTime;
48
- private useSocket;
44
+ private resolvedConnectionUri;
49
45
  constructor(options?: ISmartdbServerOptions);
50
- /**
51
- * Get the storage adapter (for testing/debugging)
52
- */
53
- getStorage(): IStorageAdapter;
54
- /**
55
- * Get server uptime in seconds
56
- */
57
- getUptime(): number;
58
- /**
59
- * Get current connection count
60
- */
61
- getConnectionCount(): number;
62
46
  /**
63
47
  * Start the server
64
48
  */
@@ -67,18 +51,6 @@ export declare class SmartdbServer {
67
51
  * Stop the server
68
52
  */
69
53
  stop(): Promise<void>;
70
- /**
71
- * Handle a new client connection
72
- */
73
- private handleConnection;
74
- /**
75
- * Handle incoming data from a client
76
- */
77
- private handleData;
78
- /**
79
- * Process complete messages from the buffer
80
- */
81
- private processMessages;
82
54
  /**
83
55
  * Get the connection URI for this server
84
56
  */
@@ -99,4 +71,34 @@ export declare class SmartdbServer {
99
71
  * Get the host the server is bound to
100
72
  */
101
73
  get host(): string;
74
+ /**
75
+ * Get oplog entries, optionally filtered.
76
+ */
77
+ getOpLog(params?: {
78
+ sinceSeq?: number;
79
+ limit?: number;
80
+ db?: string;
81
+ collection?: string;
82
+ }): Promise<IOpLogResult>;
83
+ /**
84
+ * Get aggregate oplog statistics.
85
+ */
86
+ getOpLogStats(): Promise<IOpLogStats>;
87
+ /**
88
+ * Revert database state to a specific oplog sequence number.
89
+ * Use dryRun=true to preview which entries would be reverted.
90
+ */
91
+ revertToSeq(seq: number, dryRun?: boolean): Promise<IRevertResult>;
92
+ /**
93
+ * List all collections across all databases, with document counts.
94
+ */
95
+ getCollections(db?: string): Promise<ICollectionInfo[]>;
96
+ /**
97
+ * Get documents from a collection with pagination.
98
+ */
99
+ getDocuments(db: string, collection: string, limit?: number, skip?: number): Promise<IDocumentsResult>;
100
+ /**
101
+ * Get server metrics including database/collection counts and oplog info.
102
+ */
103
+ getMetrics(): Promise<ISmartDbMetrics>;
102
104
  }