@push.rocks/smartdb 1.0.1 → 2.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.
- package/.smartconfig.json +7 -4
- package/dist_rust/rustdb_linux_amd64 +0 -0
- package/dist_rust/rustdb_linux_arm64 +0 -0
- package/dist_ts/00_commitinfo_data.js +3 -3
- package/dist_ts/ts_local/classes.localsmartdb.d.ts +5 -5
- package/dist_ts/ts_local/classes.localsmartdb.js +5 -6
- package/dist_ts/ts_local/plugins.d.ts +1 -2
- package/dist_ts/ts_local/plugins.js +3 -3
- package/dist_ts/ts_smartdb/index.d.ts +1 -24
- package/dist_ts/ts_smartdb/index.js +4 -29
- package/dist_ts/ts_smartdb/plugins.d.ts +2 -10
- package/dist_ts/ts_smartdb/plugins.js +3 -13
- package/dist_ts/ts_smartdb/rust-db-bridge.d.ts +43 -0
- package/dist_ts/ts_smartdb/rust-db-bridge.js +98 -0
- package/dist_ts/ts_smartdb/server/SmartdbServer.d.ts +8 -37
- package/dist_ts/ts_smartdb/server/SmartdbServer.js +49 -204
- package/dist_ts/ts_smartdb/server/index.d.ts +0 -4
- package/dist_ts/ts_smartdb/server/index.js +1 -5
- package/license +3 -1
- package/package.json +9 -12
- package/readme.md +84 -171
- package/ts/00_commitinfo_data.ts +2 -2
- package/ts/ts_local/classes.localsmartdb.ts +5 -6
- package/ts/ts_local/plugins.ts +1 -3
- package/ts/ts_smartdb/index.ts +3 -41
- package/ts/ts_smartdb/plugins.ts +2 -15
- package/ts/ts_smartdb/rust-db-bridge.ts +138 -0
- package/ts/ts_smartdb/server/SmartdbServer.ts +53 -248
- package/ts/ts_smartdb/server/index.ts +0 -7
- package/dist_ts/ts_smartdb/engine/AggregationEngine.d.ts +0 -66
- package/dist_ts/ts_smartdb/engine/AggregationEngine.js +0 -189
- package/dist_ts/ts_smartdb/engine/IndexEngine.d.ts +0 -97
- package/dist_ts/ts_smartdb/engine/IndexEngine.js +0 -678
- package/dist_ts/ts_smartdb/engine/QueryEngine.d.ts +0 -54
- package/dist_ts/ts_smartdb/engine/QueryEngine.js +0 -271
- package/dist_ts/ts_smartdb/engine/QueryPlanner.d.ts +0 -64
- package/dist_ts/ts_smartdb/engine/QueryPlanner.js +0 -308
- package/dist_ts/ts_smartdb/engine/SessionEngine.d.ts +0 -117
- package/dist_ts/ts_smartdb/engine/SessionEngine.js +0 -232
- package/dist_ts/ts_smartdb/engine/TransactionEngine.d.ts +0 -85
- package/dist_ts/ts_smartdb/engine/TransactionEngine.js +0 -287
- package/dist_ts/ts_smartdb/engine/UpdateEngine.d.ts +0 -47
- package/dist_ts/ts_smartdb/engine/UpdateEngine.js +0 -461
- package/dist_ts/ts_smartdb/errors/SmartdbErrors.d.ts +0 -100
- package/dist_ts/ts_smartdb/errors/SmartdbErrors.js +0 -155
- package/dist_ts/ts_smartdb/server/CommandRouter.d.ts +0 -87
- package/dist_ts/ts_smartdb/server/CommandRouter.js +0 -222
- package/dist_ts/ts_smartdb/server/WireProtocol.d.ts +0 -117
- package/dist_ts/ts_smartdb/server/WireProtocol.js +0 -298
- package/dist_ts/ts_smartdb/server/handlers/AdminHandler.d.ts +0 -100
- package/dist_ts/ts_smartdb/server/handlers/AdminHandler.js +0 -668
- package/dist_ts/ts_smartdb/server/handlers/AggregateHandler.d.ts +0 -31
- package/dist_ts/ts_smartdb/server/handlers/AggregateHandler.js +0 -277
- package/dist_ts/ts_smartdb/server/handlers/DeleteHandler.d.ts +0 -8
- package/dist_ts/ts_smartdb/server/handlers/DeleteHandler.js +0 -95
- package/dist_ts/ts_smartdb/server/handlers/FindHandler.d.ts +0 -31
- package/dist_ts/ts_smartdb/server/handlers/FindHandler.js +0 -291
- package/dist_ts/ts_smartdb/server/handlers/HelloHandler.d.ts +0 -11
- package/dist_ts/ts_smartdb/server/handlers/HelloHandler.js +0 -62
- package/dist_ts/ts_smartdb/server/handlers/IndexHandler.d.ts +0 -20
- package/dist_ts/ts_smartdb/server/handlers/IndexHandler.js +0 -183
- package/dist_ts/ts_smartdb/server/handlers/InsertHandler.d.ts +0 -8
- package/dist_ts/ts_smartdb/server/handlers/InsertHandler.js +0 -79
- package/dist_ts/ts_smartdb/server/handlers/UpdateHandler.d.ts +0 -24
- package/dist_ts/ts_smartdb/server/handlers/UpdateHandler.js +0 -296
- package/dist_ts/ts_smartdb/server/handlers/index.d.ts +0 -8
- package/dist_ts/ts_smartdb/server/handlers/index.js +0 -10
- package/dist_ts/ts_smartdb/storage/FileStorageAdapter.d.ts +0 -85
- package/dist_ts/ts_smartdb/storage/FileStorageAdapter.js +0 -465
- package/dist_ts/ts_smartdb/storage/IStorageAdapter.d.ts +0 -145
- package/dist_ts/ts_smartdb/storage/IStorageAdapter.js +0 -2
- package/dist_ts/ts_smartdb/storage/MemoryStorageAdapter.d.ts +0 -67
- package/dist_ts/ts_smartdb/storage/MemoryStorageAdapter.js +0 -378
- package/dist_ts/ts_smartdb/storage/OpLog.d.ts +0 -93
- package/dist_ts/ts_smartdb/storage/OpLog.js +0 -221
- package/dist_ts/ts_smartdb/storage/WAL.d.ts +0 -117
- package/dist_ts/ts_smartdb/storage/WAL.js +0 -286
- package/dist_ts/ts_smartdb/types/interfaces.d.ts +0 -363
- package/dist_ts/ts_smartdb/types/interfaces.js +0 -2
- package/dist_ts/ts_smartdb/utils/checksum.d.ts +0 -30
- package/dist_ts/ts_smartdb/utils/checksum.js +0 -77
- package/dist_ts/ts_smartdb/utils/index.d.ts +0 -1
- package/dist_ts/ts_smartdb/utils/index.js +0 -2
- package/ts/ts_smartdb/engine/AggregationEngine.ts +0 -283
- package/ts/ts_smartdb/engine/IndexEngine.ts +0 -798
- package/ts/ts_smartdb/engine/QueryEngine.ts +0 -301
- package/ts/ts_smartdb/engine/QueryPlanner.ts +0 -393
- package/ts/ts_smartdb/engine/SessionEngine.ts +0 -292
- package/ts/ts_smartdb/engine/TransactionEngine.ts +0 -351
- package/ts/ts_smartdb/engine/UpdateEngine.ts +0 -506
- package/ts/ts_smartdb/errors/SmartdbErrors.ts +0 -181
- package/ts/ts_smartdb/server/CommandRouter.ts +0 -289
- package/ts/ts_smartdb/server/WireProtocol.ts +0 -416
- package/ts/ts_smartdb/server/handlers/AdminHandler.ts +0 -719
- package/ts/ts_smartdb/server/handlers/AggregateHandler.ts +0 -342
- package/ts/ts_smartdb/server/handlers/DeleteHandler.ts +0 -115
- package/ts/ts_smartdb/server/handlers/FindHandler.ts +0 -330
- package/ts/ts_smartdb/server/handlers/HelloHandler.ts +0 -78
- package/ts/ts_smartdb/server/handlers/IndexHandler.ts +0 -207
- package/ts/ts_smartdb/server/handlers/InsertHandler.ts +0 -97
- package/ts/ts_smartdb/server/handlers/UpdateHandler.ts +0 -344
- package/ts/ts_smartdb/server/handlers/index.ts +0 -10
- package/ts/ts_smartdb/storage/FileStorageAdapter.ts +0 -562
- package/ts/ts_smartdb/storage/IStorageAdapter.ts +0 -208
- package/ts/ts_smartdb/storage/MemoryStorageAdapter.ts +0 -455
- package/ts/ts_smartdb/storage/OpLog.ts +0 -282
- package/ts/ts_smartdb/storage/WAL.ts +0 -375
- package/ts/ts_smartdb/types/interfaces.ts +0 -433
- package/ts/ts_smartdb/utils/checksum.ts +0 -88
- 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
|
|
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
|
-
"
|
|
15
|
+
"embedded database",
|
|
16
16
|
"in-memory database",
|
|
17
17
|
"testing",
|
|
18
18
|
"local database",
|
|
19
19
|
"database server",
|
|
20
|
-
"
|
|
20
|
+
"rust"
|
|
21
21
|
]
|
|
22
22
|
},
|
|
23
23
|
"release": {
|
|
@@ -32,6 +32,9 @@
|
|
|
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/tsrust": {
|
|
36
|
+
"targets": ["linux_amd64", "linux_arm64"]
|
|
37
|
+
},
|
|
35
38
|
"@ship.zone/szci": {
|
|
36
39
|
"npmGlobalTools": []
|
|
37
40
|
}
|
|
Binary file
|
|
Binary file
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartdb',
|
|
6
|
-
version: '
|
|
7
|
-
description: 'A
|
|
6
|
+
version: '2.0.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,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHFIQUFxSDtDQUNuSSxDQUFBIn0=
|
|
@@ -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
|
-
/**
|
|
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
|
|
22
|
-
* info that you can use with
|
|
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
|
|
32
|
+
* // Connect with the driver
|
|
33
33
|
* const client = new MongoClient(connectionUri, { directConnection: true });
|
|
34
34
|
* await client.connect();
|
|
35
35
|
*
|
|
36
|
-
* // Use the
|
|
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
|
|
11
|
-
* info that you can use with
|
|
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
|
|
20
|
+
* // Connect with the driver
|
|
22
21
|
* const client = new MongoClient(connectionUri, { directConnection: true });
|
|
23
22
|
* await client.connect();
|
|
24
23
|
*
|
|
25
|
-
* // Use the
|
|
24
|
+
* // Use the client
|
|
26
25
|
* const collection = client.db('mydb').collection('users');
|
|
27
26
|
* await collection.insertOne({ name: 'Alice' });
|
|
28
27
|
*
|
|
@@ -112,4 +111,4 @@ export class LocalSmartDb {
|
|
|
112
111
|
}
|
|
113
112
|
}
|
|
114
113
|
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5sb2NhbHNtYXJ0ZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90c19sb2NhbC9jbGFzc2VzLmxvY2Fsc21hcnRkYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFtQnZEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUNmLE9BQU8sQ0FBdUI7SUFDOUIsTUFBTSxHQUF5QixJQUFJLENBQUM7SUFDcEMsbUJBQW1CLEdBQWtCLElBQUksQ0FBQztJQUVsRCxZQUFZLE9BQTZCO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLFdBQVcsUUFBUSxPQUFPLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUVoRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQzlCLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQ3BDLE9BQU8sRUFBRSxNQUFNO1lBQ2YsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVTtTQUNyQyxDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFMUIsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQ3BDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFO1NBQzlDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQ3BDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFO1NBQzlDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { smartpromise };
|
|
1
|
+
export {};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export {};
|
|
2
|
+
// Local module plugins - currently no external dependencies needed
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3RzX2xvY2FsL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG1FQUFtRSJ9
|
|
@@ -1,26 +1,3 @@
|
|
|
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 {
|
|
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';
|
|
@@ -1,31 +1,6 @@
|
|
|
1
|
-
// SmartDB -
|
|
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
|
|
27
|
-
export {
|
|
28
|
-
|
|
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
|
|
2
|
-
|
|
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
|
|
3
|
-
|
|
4
|
-
|
|
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,43 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration sent to the Rust binary on start.
|
|
4
|
+
*/
|
|
5
|
+
interface ISmartDbRustConfig {
|
|
6
|
+
port?: number;
|
|
7
|
+
host?: string;
|
|
8
|
+
socketPath?: string;
|
|
9
|
+
storage: 'memory' | 'file';
|
|
10
|
+
storagePath?: string;
|
|
11
|
+
persistPath?: string;
|
|
12
|
+
persistIntervalMs?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Bridge between TypeScript SmartdbServer and the Rust binary.
|
|
16
|
+
* Wraps @push.rocks/smartrust's RustBridge with type-safe command definitions.
|
|
17
|
+
*/
|
|
18
|
+
export declare class RustDbBridge extends EventEmitter {
|
|
19
|
+
private bridge;
|
|
20
|
+
constructor();
|
|
21
|
+
/**
|
|
22
|
+
* Spawn the Rust binary in management mode.
|
|
23
|
+
* Returns true if the binary was found and spawned successfully.
|
|
24
|
+
*/
|
|
25
|
+
spawn(): Promise<boolean>;
|
|
26
|
+
/**
|
|
27
|
+
* Kill the Rust process and clean up.
|
|
28
|
+
*/
|
|
29
|
+
kill(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Whether the bridge is currently running.
|
|
32
|
+
*/
|
|
33
|
+
get running(): boolean;
|
|
34
|
+
startDb(config: ISmartDbRustConfig): Promise<{
|
|
35
|
+
connectionUri: string;
|
|
36
|
+
}>;
|
|
37
|
+
stopDb(): Promise<void>;
|
|
38
|
+
getStatus(): Promise<{
|
|
39
|
+
running: boolean;
|
|
40
|
+
}>;
|
|
41
|
+
getMetrics(): Promise<any>;
|
|
42
|
+
}
|
|
43
|
+
export {};
|
|
@@ -0,0 +1,98 @@
|
|
|
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
|
+
bridge;
|
|
51
|
+
constructor() {
|
|
52
|
+
super();
|
|
53
|
+
this.bridge = new plugins.smartrust.RustBridge({
|
|
54
|
+
binaryName: 'rustdb',
|
|
55
|
+
envVarName: 'SMARTDB_RUST_BINARY',
|
|
56
|
+
platformPackagePrefix: '@push.rocks/smartdb',
|
|
57
|
+
localPaths: buildLocalPaths(),
|
|
58
|
+
maxPayloadSize: 10 * 1024 * 1024, // 10 MB
|
|
59
|
+
});
|
|
60
|
+
// Forward events from the inner bridge
|
|
61
|
+
this.bridge.on('exit', (code, signal) => {
|
|
62
|
+
this.emit('exit', code, signal);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Spawn the Rust binary in management mode.
|
|
67
|
+
* Returns true if the binary was found and spawned successfully.
|
|
68
|
+
*/
|
|
69
|
+
async spawn() {
|
|
70
|
+
return this.bridge.spawn();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Kill the Rust process and clean up.
|
|
74
|
+
*/
|
|
75
|
+
kill() {
|
|
76
|
+
this.bridge.kill();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Whether the bridge is currently running.
|
|
80
|
+
*/
|
|
81
|
+
get running() {
|
|
82
|
+
return this.bridge.running;
|
|
83
|
+
}
|
|
84
|
+
// --- Convenience methods for each management command ---
|
|
85
|
+
async startDb(config) {
|
|
86
|
+
return await this.bridge.sendCommand('start', { config });
|
|
87
|
+
}
|
|
88
|
+
async stopDb() {
|
|
89
|
+
await this.bridge.sendCommand('stop', {});
|
|
90
|
+
}
|
|
91
|
+
async getStatus() {
|
|
92
|
+
return await this.bridge.sendCommand('getStatus', {});
|
|
93
|
+
}
|
|
94
|
+
async getMetrics() {
|
|
95
|
+
return this.bridge.sendCommand('getMetrics', {});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVzdC1kYi1icmlkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90c19zbWFydGRiL3J1c3QtZGItYnJpZGdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUF5QnRDOzs7R0FHRztBQUNILFNBQVMsY0FBYztJQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLHVCQUF1QjtJQUM5QixNQUFNLE9BQU8sR0FBMkIsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN6RSxNQUFNLEtBQUssR0FBMkIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMxRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7UUFDZixPQUFPLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7O0dBR0c7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
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { IStorageAdapter } from '../storage/IStorageAdapter.js';
|
|
2
1
|
/**
|
|
3
2
|
* Server configuration options
|
|
4
3
|
*/
|
|
@@ -19,46 +18,30 @@ export interface ISmartdbServerOptions {
|
|
|
19
18
|
persistIntervalMs?: number;
|
|
20
19
|
}
|
|
21
20
|
/**
|
|
22
|
-
* SmartdbServer -
|
|
21
|
+
* SmartdbServer - Wire protocol compatible database server backed by Rust
|
|
23
22
|
*
|
|
24
|
-
* This server implements the
|
|
25
|
-
*
|
|
23
|
+
* This server implements the wire protocol to allow official drivers to
|
|
24
|
+
* connect and perform operations. The core engine runs as a Rust sidecar
|
|
25
|
+
* binary managed via @push.rocks/smartrust IPC.
|
|
26
26
|
*
|
|
27
27
|
* @example
|
|
28
28
|
* ```typescript
|
|
29
|
-
* import { SmartdbServer } from '@push.rocks/
|
|
29
|
+
* import { SmartdbServer } from '@push.rocks/smartdb';
|
|
30
30
|
* import { MongoClient } from 'mongodb';
|
|
31
31
|
*
|
|
32
32
|
* const server = new SmartdbServer({ port: 27017 });
|
|
33
33
|
* await server.start();
|
|
34
34
|
*
|
|
35
|
-
* const client = new MongoClient(
|
|
35
|
+
* const client = new MongoClient(server.getConnectionUri());
|
|
36
36
|
* await client.connect();
|
|
37
37
|
* ```
|
|
38
38
|
*/
|
|
39
39
|
export declare class SmartdbServer {
|
|
40
40
|
private options;
|
|
41
|
-
private
|
|
42
|
-
private storage;
|
|
43
|
-
private commandRouter;
|
|
44
|
-
private connections;
|
|
45
|
-
private connectionIdCounter;
|
|
41
|
+
private bridge;
|
|
46
42
|
private isRunning;
|
|
47
|
-
private
|
|
48
|
-
private useSocket;
|
|
43
|
+
private resolvedConnectionUri;
|
|
49
44
|
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
45
|
/**
|
|
63
46
|
* Start the server
|
|
64
47
|
*/
|
|
@@ -67,18 +50,6 @@ export declare class SmartdbServer {
|
|
|
67
50
|
* Stop the server
|
|
68
51
|
*/
|
|
69
52
|
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
53
|
/**
|
|
83
54
|
* Get the connection URI for this server
|
|
84
55
|
*/
|