@push.rocks/smartdb 2.5.1 → 2.5.5
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/dist_rust/rustdb_linux_amd64 +0 -0
- package/dist_rust/rustdb_linux_arm64 +0 -0
- package/package.json +2 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/dist_ts/00_commitinfo_data.d.ts +0 -8
- package/dist_ts/00_commitinfo_data.js +0 -9
- package/dist_ts/index.d.ts +0 -7
- package/dist_ts/index.js +0 -10
- package/dist_ts/ts_local/classes.localsmartdb.d.ts +0 -87
- package/dist_ts/ts_local/classes.localsmartdb.js +0 -169
- package/dist_ts/ts_local/index.d.ts +0 -2
- package/dist_ts/ts_local/index.js +0 -2
- package/dist_ts/ts_local/plugins.d.ts +0 -1
- package/dist_ts/ts_local/plugins.js +0 -3
- package/dist_ts/ts_migration/classes.storagemigrator.d.ts +0 -24
- package/dist_ts/ts_migration/classes.storagemigrator.js +0 -75
- package/dist_ts/ts_migration/index.d.ts +0 -1
- package/dist_ts/ts_migration/index.js +0 -2
- package/dist_ts/ts_migration/migrators/v0_to_v1.d.ts +0 -9
- package/dist_ts/ts_migration/migrators/v0_to_v1.js +0 -225
- package/dist_ts/ts_smartdb/index.d.ts +0 -4
- package/dist_ts/ts_smartdb/index.js +0 -6
- package/dist_ts/ts_smartdb/plugins.d.ts +0 -2
- package/dist_ts/ts_smartdb/plugins.js +0 -4
- package/dist_ts/ts_smartdb/rust-db-bridge.d.ts +0 -122
- package/dist_ts/ts_smartdb/rust-db-bridge.js +0 -113
- package/dist_ts/ts_smartdb/server/SmartdbServer.d.ts +0 -104
- package/dist_ts/ts_smartdb/server/SmartdbServer.js +0 -166
- package/dist_ts/ts_smartdb/server/index.d.ts +0 -2
- package/dist_ts/ts_smartdb/server/index.js +0 -3
- package/dist_ts_debugserver/bundled.d.ts +0 -4
- package/dist_ts_debugserver/bundled.js +0 -12
- package/dist_ts_debugserver/classes.debugserver.d.ts +0 -36
- package/dist_ts_debugserver/classes.debugserver.js +0 -95
- package/dist_ts_debugserver/index.d.ts +0 -2
- package/dist_ts_debugserver/index.js +0 -2
- package/dist_ts_debugserver/plugins.d.ts +0 -2
- package/dist_ts_debugserver/plugins.js +0 -3
- package/dist_ts_debugui/index.d.ts +0 -2
- package/dist_ts_debugui/index.js +0 -2
- package/dist_ts_debugui/plugins.d.ts +0 -1
- package/dist_ts_debugui/plugins.js +0 -2
- package/dist_ts_debugui/smartdb-debugui.d.ts +0 -62
- package/dist_ts_debugui/smartdb-debugui.js +0 -1132
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import { RustDbBridge } from '../rust-db-bridge.js';
|
|
2
|
-
import { StorageMigrator } from '../../ts_migration/index.js';
|
|
3
|
-
/**
|
|
4
|
-
* SmartdbServer - Wire protocol compatible database server backed by Rust
|
|
5
|
-
*
|
|
6
|
-
* This server implements the wire protocol to allow official drivers to
|
|
7
|
-
* connect and perform operations. The core engine runs as a Rust sidecar
|
|
8
|
-
* binary managed via @push.rocks/smartrust IPC.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```typescript
|
|
12
|
-
* import { SmartdbServer } from '@push.rocks/smartdb';
|
|
13
|
-
* import { MongoClient } from 'mongodb';
|
|
14
|
-
*
|
|
15
|
-
* const server = new SmartdbServer({ port: 27017 });
|
|
16
|
-
* await server.start();
|
|
17
|
-
*
|
|
18
|
-
* const client = new MongoClient(server.getConnectionUri());
|
|
19
|
-
* await client.connect();
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
export class SmartdbServer {
|
|
23
|
-
constructor(options = {}) {
|
|
24
|
-
this.isRunning = false;
|
|
25
|
-
this.resolvedConnectionUri = '';
|
|
26
|
-
this.options = {
|
|
27
|
-
port: options.port ?? 27017,
|
|
28
|
-
host: options.host ?? '127.0.0.1',
|
|
29
|
-
socketPath: options.socketPath,
|
|
30
|
-
storage: options.storage ?? 'memory',
|
|
31
|
-
storagePath: options.storagePath ?? './data',
|
|
32
|
-
persistPath: options.persistPath,
|
|
33
|
-
persistIntervalMs: options.persistIntervalMs ?? 60000,
|
|
34
|
-
};
|
|
35
|
-
this.bridge = new RustDbBridge();
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Start the server
|
|
39
|
-
*/
|
|
40
|
-
async start() {
|
|
41
|
-
if (this.isRunning) {
|
|
42
|
-
throw new Error('Server is already running');
|
|
43
|
-
}
|
|
44
|
-
// Run storage migration for file-based storage before starting Rust engine
|
|
45
|
-
if (this.options.storage === 'file' && this.options.storagePath) {
|
|
46
|
-
const migrator = new StorageMigrator(this.options.storagePath);
|
|
47
|
-
await migrator.run();
|
|
48
|
-
}
|
|
49
|
-
const spawned = await this.bridge.spawn();
|
|
50
|
-
if (!spawned) {
|
|
51
|
-
throw new Error('smartdb Rust binary not found. Set SMARTDB_RUST_BINARY env var, ' +
|
|
52
|
-
'install the platform package, or build locally with `tsrust`.');
|
|
53
|
-
}
|
|
54
|
-
// Forward unexpected exit
|
|
55
|
-
this.bridge.on('exit', (code, signal) => {
|
|
56
|
-
if (this.isRunning) {
|
|
57
|
-
console.error(`smartdb Rust process exited unexpectedly (code=${code}, signal=${signal})`);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
// Send config, get back connectionUri
|
|
61
|
-
const result = await this.bridge.startDb({
|
|
62
|
-
port: this.options.port,
|
|
63
|
-
host: this.options.host,
|
|
64
|
-
socketPath: this.options.socketPath,
|
|
65
|
-
storage: this.options.storage ?? 'memory',
|
|
66
|
-
storagePath: this.options.storagePath,
|
|
67
|
-
persistPath: this.options.persistPath,
|
|
68
|
-
persistIntervalMs: this.options.persistIntervalMs,
|
|
69
|
-
});
|
|
70
|
-
this.resolvedConnectionUri = result.connectionUri;
|
|
71
|
-
this.isRunning = true;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Stop the server
|
|
75
|
-
*/
|
|
76
|
-
async stop() {
|
|
77
|
-
if (!this.isRunning) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
try {
|
|
81
|
-
await this.bridge.stopDb();
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
// Bridge may already be dead
|
|
85
|
-
}
|
|
86
|
-
this.bridge.kill();
|
|
87
|
-
this.isRunning = false;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Get the connection URI for this server
|
|
91
|
-
*/
|
|
92
|
-
getConnectionUri() {
|
|
93
|
-
if (this.resolvedConnectionUri) {
|
|
94
|
-
return this.resolvedConnectionUri;
|
|
95
|
-
}
|
|
96
|
-
// Fallback: compute from options
|
|
97
|
-
if (this.options.socketPath) {
|
|
98
|
-
const encodedPath = encodeURIComponent(this.options.socketPath);
|
|
99
|
-
return `mongodb://${encodedPath}`;
|
|
100
|
-
}
|
|
101
|
-
return `mongodb://${this.options.host ?? '127.0.0.1'}:${this.options.port ?? 27017}`;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Get the socket path (if using Unix socket mode)
|
|
105
|
-
*/
|
|
106
|
-
get socketPath() {
|
|
107
|
-
return this.options.socketPath;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Check if the server is running
|
|
111
|
-
*/
|
|
112
|
-
get running() {
|
|
113
|
-
return this.isRunning;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Get the port the server is listening on
|
|
117
|
-
*/
|
|
118
|
-
get port() {
|
|
119
|
-
return this.options.port ?? 27017;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Get the host the server is bound to
|
|
123
|
-
*/
|
|
124
|
-
get host() {
|
|
125
|
-
return this.options.host ?? '127.0.0.1';
|
|
126
|
-
}
|
|
127
|
-
// --- OpLog / Debug API ---
|
|
128
|
-
/**
|
|
129
|
-
* Get oplog entries, optionally filtered.
|
|
130
|
-
*/
|
|
131
|
-
async getOpLog(params = {}) {
|
|
132
|
-
return this.bridge.getOpLog(params);
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Get aggregate oplog statistics.
|
|
136
|
-
*/
|
|
137
|
-
async getOpLogStats() {
|
|
138
|
-
return this.bridge.getOpLogStats();
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Revert database state to a specific oplog sequence number.
|
|
142
|
-
* Use dryRun=true to preview which entries would be reverted.
|
|
143
|
-
*/
|
|
144
|
-
async revertToSeq(seq, dryRun = false) {
|
|
145
|
-
return this.bridge.revertToSeq(seq, dryRun);
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* List all collections across all databases, with document counts.
|
|
149
|
-
*/
|
|
150
|
-
async getCollections(db) {
|
|
151
|
-
return this.bridge.getCollections(db);
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Get documents from a collection with pagination.
|
|
155
|
-
*/
|
|
156
|
-
async getDocuments(db, collection, limit = 50, skip = 0) {
|
|
157
|
-
return this.bridge.getDocuments(db, collection, limit, skip);
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Get server metrics including database/collection counts and oplog info.
|
|
161
|
-
*/
|
|
162
|
-
async getMetrics() {
|
|
163
|
-
return this.bridge.getMetrics();
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU21hcnRkYlNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL3RzX3NtYXJ0ZGIvc2VydmVyL1NtYXJ0ZGJTZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQStCOUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBTXhCLFlBQVksVUFBaUMsRUFBRTtRQUh2QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLDBCQUFxQixHQUFHLEVBQUUsQ0FBQztRQUdqQyxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksS0FBSztZQUMzQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxXQUFXO1lBQ2pDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtZQUM5QixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxRQUFRO1lBQ3BDLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxJQUFJLFFBQVE7WUFDNUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxLQUFLO1NBQ3RELENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELDJFQUEyRTtRQUMzRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxLQUFLLE1BQU0sSUFBSSxJQUFJ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
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// Server module exports
|
|
2
|
-
export { SmartdbServer } from './SmartdbServer.js';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy90c19zbWFydGRiL3NlcnZlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3QkFBd0I7QUFDeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDIn0=
|