mindoodb 0.0.60 → 0.0.63
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/README-server.md +13 -3
- package/README.md +1 -0
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +41 -5
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
- package/dist/core/BaseMindooTenant.d.ts +9 -2
- package/dist/core/BaseMindooTenant.d.ts.map +1 -1
- package/dist/core/BaseMindooTenant.js +102 -11
- package/dist/core/BaseMindooTenant.js.map +1 -1
- package/dist/core/appendonlystores/network/IrohNetworkTransport.d.ts +29 -0
- package/dist/core/appendonlystores/network/IrohNetworkTransport.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/IrohNetworkTransport.js +204 -25
- package/dist/core/appendonlystores/network/IrohNetworkTransport.js.map +1 -1
- package/dist/core/appendonlystores/network/IrohStreamIO.d.ts +30 -1
- package/dist/core/appendonlystores/network/IrohStreamIO.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/IrohStreamIO.js +43 -11
- package/dist/core/appendonlystores/network/IrohStreamIO.js.map +1 -1
- package/dist/core/appendonlystores/syncStores.d.ts.map +1 -1
- package/dist/core/appendonlystores/syncStores.js +20 -3
- package/dist/core/appendonlystores/syncStores.js.map +1 -1
- package/dist/core/types.d.ts +21 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/iroh/index.d.ts +5 -1
- package/dist/iroh/index.d.ts.map +1 -1
- package/dist/iroh/index.js +4 -0
- package/dist/iroh/index.js.map +1 -1
- package/dist/iroh/node.d.ts +26 -0
- package/dist/iroh/node.d.ts.map +1 -0
- package/dist/iroh/node.js +27 -0
- package/dist/iroh/node.js.map +1 -0
- package/dist/node/server/IrohServerEndpoint.d.ts +5 -0
- package/dist/node/server/IrohServerEndpoint.d.ts.map +1 -1
- package/dist/node/server/IrohServerEndpoint.js +14 -104
- package/dist/node/server/IrohServerEndpoint.js.map +1 -1
- package/dist/node/server/IrohServerRpc.d.ts +57 -0
- package/dist/node/server/IrohServerRpc.d.ts.map +1 -1
- package/dist/node/server/IrohServerRpc.js +422 -5
- package/dist/node/server/IrohServerRpc.js.map +1 -1
- package/dist/node/server/MindooDBServer.d.ts +3 -0
- package/dist/node/server/MindooDBServer.d.ts.map +1 -1
- package/dist/node/server/MindooDBServer.js +36 -0
- package/dist/node/server/MindooDBServer.js.map +1 -1
- package/dist/node/server/nativeIrohStreamIO.d.ts +13 -0
- package/dist/node/server/nativeIrohStreamIO.d.ts.map +1 -0
- package/dist/node/server/nativeIrohStreamIO.js +259 -0
- package/dist/node/server/nativeIrohStreamIO.js.map +1 -0
- package/dist/node/server/peer/ClusterManager.d.ts +6 -0
- package/dist/node/server/peer/ClusterManager.d.ts.map +1 -1
- package/dist/node/server/peer/ClusterManager.js +1 -0
- package/dist/node/server/peer/ClusterManager.js.map +1 -1
- package/dist/node/server/peer/IrohPeerLink.d.ts +24 -0
- package/dist/node/server/peer/IrohPeerLink.d.ts.map +1 -0
- package/dist/node/server/peer/IrohPeerLink.js +115 -0
- package/dist/node/server/peer/IrohPeerLink.js.map +1 -0
- package/dist/node/server/peer/PeerReplicator.d.ts +9 -0
- package/dist/node/server/peer/PeerReplicator.d.ts.map +1 -1
- package/dist/node/server/peer/PeerReplicator.js +103 -6
- package/dist/node/server/peer/PeerReplicator.js.map +1 -1
- package/dist/node/server/types.d.ts +5 -3
- package/dist/node/server/types.d.ts.map +1 -1
- package/dist/node/server/types.js.map +1 -1
- package/package.json +7 -1
- package/scripts/iroh-live-test-server.mjs +30 -0
- package/scripts/iroh-live-test-server.ts +61 -0
- package/scripts/iroh-multistream-spike.mjs +113 -0
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IROH_PEER_UNAUTH_MAX = exports.IROH_PEER_UNAUTH_WINDOW_MS = exports.IROH_CHANGE_FEED_HEARTBEAT = exports.IROH_CHANGE_FEED_HEARTBEAT_MS = void 0;
|
|
3
4
|
exports.createMindooDBServerIrohHandler = createMindooDBServerIrohHandler;
|
|
5
|
+
exports.resetIrohPeerUnauthLimiter = resetIrohPeerUnauthLimiter;
|
|
4
6
|
exports.isIrohValidationError = isIrohValidationError;
|
|
5
7
|
const types_1 = require("../../core/appendonlystores/types");
|
|
8
|
+
const bloom_1 = require("../../core/appendonlystores/bloom");
|
|
6
9
|
const validation_1 = require("./validation");
|
|
10
|
+
/** QUIC idle timeout is ~30s; keep the feed alive below that. */
|
|
11
|
+
exports.IROH_CHANGE_FEED_HEARTBEAT_MS = 20000;
|
|
12
|
+
exports.IROH_CHANGE_FEED_HEARTBEAT = { type: "heartbeat" };
|
|
13
|
+
/** Unauthenticated `peer.challenge` / `peer.authenticate` window. */
|
|
14
|
+
exports.IROH_PEER_UNAUTH_WINDOW_MS = 60000;
|
|
15
|
+
exports.IROH_PEER_UNAUTH_MAX = 30;
|
|
16
|
+
const MAX_BLOOM_BITS = 1 << 22;
|
|
7
17
|
function requireTenant(ctx) {
|
|
8
18
|
const tenantId = ctx?.tenantId?.trim().toLowerCase();
|
|
9
19
|
if (!tenantId) {
|
|
@@ -39,6 +49,7 @@ function createMindooDBServerIrohHandler(host) {
|
|
|
39
49
|
clusterRole: host.getClusterRole?.() ?? "peer",
|
|
40
50
|
maxJsonRequestBodyLimit: limit?.limit,
|
|
41
51
|
maxJsonRequestBodyBytes: limit?.bytes ?? undefined,
|
|
52
|
+
supportsSystemAdmin: Boolean(host.systemAdmin),
|
|
42
53
|
};
|
|
43
54
|
}
|
|
44
55
|
case "getTenantPublicInfosFingerprints": {
|
|
@@ -62,18 +73,290 @@ function createMindooDBServerIrohHandler(host) {
|
|
|
62
73
|
const signature = args[1];
|
|
63
74
|
return auth.authenticate(challenge, signature);
|
|
64
75
|
}
|
|
76
|
+
case "peer.challenge":
|
|
77
|
+
case "peer.authenticate":
|
|
78
|
+
case "peer.tenantBloom":
|
|
79
|
+
case "peer.listDatabases":
|
|
80
|
+
case "peer.subscribeEvents":
|
|
81
|
+
case "peer.sync":
|
|
82
|
+
return dispatchPeerMethod(host, method, args);
|
|
83
|
+
case "system.requestChallenge":
|
|
84
|
+
case "system.authenticate":
|
|
85
|
+
case "system.registerTenant":
|
|
86
|
+
return dispatchSystemMethod(host, method, args);
|
|
65
87
|
default:
|
|
66
88
|
return dispatchStoreMethod(host, method, args, ctx);
|
|
67
89
|
}
|
|
68
90
|
};
|
|
69
91
|
}
|
|
92
|
+
const unauthPeerHits = new Map();
|
|
93
|
+
function allowUnauthPeerCall(key, limit) {
|
|
94
|
+
const now = Date.now();
|
|
95
|
+
const recent = (unauthPeerHits.get(key) ?? []).filter((at) => now - at < limit.windowMs);
|
|
96
|
+
if (recent.length >= limit.max) {
|
|
97
|
+
unauthPeerHits.set(key, recent);
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
recent.push(now);
|
|
101
|
+
unauthPeerHits.set(key, recent);
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
/** Test hook: drop recorded unauthenticated peer hits. */
|
|
105
|
+
function resetIrohPeerUnauthLimiter() {
|
|
106
|
+
unauthPeerHits.clear();
|
|
107
|
+
}
|
|
108
|
+
async function requirePeerPayload(host, token) {
|
|
109
|
+
if (!host.peerAuth) {
|
|
110
|
+
throw new Error("Iroh peer mesh is not configured");
|
|
111
|
+
}
|
|
112
|
+
const payload = await host.peerAuth.validateToken(token);
|
|
113
|
+
if (!payload) {
|
|
114
|
+
throw new Error("Invalid or expired peer token");
|
|
115
|
+
}
|
|
116
|
+
return payload;
|
|
117
|
+
}
|
|
118
|
+
async function dispatchPeerMethod(host, method, args) {
|
|
119
|
+
if (!host.peerAuth || !host.peerCluster) {
|
|
120
|
+
throw new Error("Iroh peer mesh is not configured");
|
|
121
|
+
}
|
|
122
|
+
if (method === "peer.challenge" || method === "peer.authenticate") {
|
|
123
|
+
const limit = host.getPeerUnauthRateLimit?.() ?? {
|
|
124
|
+
windowMs: exports.IROH_PEER_UNAUTH_WINDOW_MS,
|
|
125
|
+
max: exports.IROH_PEER_UNAUTH_MAX,
|
|
126
|
+
};
|
|
127
|
+
const key = method === "peer.challenge" ? `challenge:${String(args[0] ?? "")}` : `auth:${String(args[0] ?? "")}`;
|
|
128
|
+
if (!allowUnauthPeerCall(key, limit)) {
|
|
129
|
+
throw new Error("Too many peer requests, please try again later");
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
switch (method) {
|
|
133
|
+
case "peer.challenge": {
|
|
134
|
+
const publicsignkey = String(args[0] ?? "");
|
|
135
|
+
if (!publicsignkey) {
|
|
136
|
+
throw new Error("publicsignkey is required");
|
|
137
|
+
}
|
|
138
|
+
try {
|
|
139
|
+
return { challenge: await host.peerAuth.generateChallenge(publicsignkey) };
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
throw new Error("Unknown peer");
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
case "peer.authenticate": {
|
|
146
|
+
const challenge = String(args[0] ?? "");
|
|
147
|
+
const signature = args[1];
|
|
148
|
+
if (!challenge || !(signature instanceof Uint8Array)) {
|
|
149
|
+
throw new Error("challenge and signature (Uint8Array) are required");
|
|
150
|
+
}
|
|
151
|
+
const result = await host.peerAuth.authenticate(challenge, signature);
|
|
152
|
+
if (!result.success || !result.token) {
|
|
153
|
+
throw new Error(result.error ?? "Authentication failed");
|
|
154
|
+
}
|
|
155
|
+
return { success: true, token: result.token };
|
|
156
|
+
}
|
|
157
|
+
case "peer.tenantBloom": {
|
|
158
|
+
const payload = await requirePeerPayload(host, String(args[0] ?? ""));
|
|
159
|
+
const bloom = args[1];
|
|
160
|
+
if (!bloom || typeof bloom !== "object") {
|
|
161
|
+
throw new Error("bloom summary is required");
|
|
162
|
+
}
|
|
163
|
+
if (typeof bloom.bitCount !== "number" || bloom.bitCount <= 0 || bloom.bitCount > MAX_BLOOM_BITS) {
|
|
164
|
+
throw new Error("Invalid bloom summary");
|
|
165
|
+
}
|
|
166
|
+
const candidates = host.peerCluster
|
|
167
|
+
.listTenants()
|
|
168
|
+
.filter((tenantId) => (0, bloom_1.bloomMightContainId)(bloom, tenantId));
|
|
169
|
+
host.peerCluster.recordPeerIntersection(payload.sub, candidates);
|
|
170
|
+
return { tenantIds: candidates };
|
|
171
|
+
}
|
|
172
|
+
case "peer.listDatabases": {
|
|
173
|
+
const payload = await requirePeerPayload(host, String(args[0] ?? ""));
|
|
174
|
+
const tenantId = String(args[1] ?? "").trim().toLowerCase();
|
|
175
|
+
if (!tenantId) {
|
|
176
|
+
throw new Error("tenantId is required");
|
|
177
|
+
}
|
|
178
|
+
if (!host.peerCluster.peerMaySeeTenant(payload.sub, tenantId)) {
|
|
179
|
+
throw new Error("Tenant not found");
|
|
180
|
+
}
|
|
181
|
+
return { databases: host.peerCluster.listDatabases(tenantId) };
|
|
182
|
+
}
|
|
183
|
+
case "peer.subscribeEvents": {
|
|
184
|
+
const payload = await requirePeerPayload(host, String(args[0] ?? ""));
|
|
185
|
+
if (!host.syncEventBus) {
|
|
186
|
+
throw new Error("Iroh peer event feed is not configured");
|
|
187
|
+
}
|
|
188
|
+
return createIrohPeerEventFeed(host.syncEventBus, host.peerCluster, payload.sub);
|
|
189
|
+
}
|
|
190
|
+
case "peer.sync": {
|
|
191
|
+
const payload = await requirePeerPayload(host, String(args[0] ?? ""));
|
|
192
|
+
const scope = (args[1] ?? {});
|
|
193
|
+
host.peerCluster.requestSync(payload.sub, scope);
|
|
194
|
+
return { accepted: true };
|
|
195
|
+
}
|
|
196
|
+
default:
|
|
197
|
+
throw new Error(`Unknown Iroh RPC method ${method}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
function asUint8Array(value) {
|
|
201
|
+
if (value instanceof Uint8Array) {
|
|
202
|
+
return value;
|
|
203
|
+
}
|
|
204
|
+
if (value instanceof ArrayBuffer) {
|
|
205
|
+
return new Uint8Array(value);
|
|
206
|
+
}
|
|
207
|
+
if (ArrayBuffer.isView(value)) {
|
|
208
|
+
return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
|
|
209
|
+
}
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
async function requireSystemAdminPayload(host, token) {
|
|
213
|
+
if (!host.systemAdmin) {
|
|
214
|
+
throw new Error("Iroh system admin is not configured");
|
|
215
|
+
}
|
|
216
|
+
const payload = await host.systemAdmin.validateToken(token);
|
|
217
|
+
if (!payload) {
|
|
218
|
+
throw new Error("Invalid or expired system admin token");
|
|
219
|
+
}
|
|
220
|
+
return payload;
|
|
221
|
+
}
|
|
222
|
+
async function dispatchSystemMethod(host, method, args) {
|
|
223
|
+
if (!host.systemAdmin) {
|
|
224
|
+
throw new Error("Iroh system admin is not configured");
|
|
225
|
+
}
|
|
226
|
+
if (method === "system.requestChallenge" || method === "system.authenticate") {
|
|
227
|
+
const limit = host.getPeerUnauthRateLimit?.() ?? {
|
|
228
|
+
windowMs: exports.IROH_PEER_UNAUTH_WINDOW_MS,
|
|
229
|
+
max: exports.IROH_PEER_UNAUTH_MAX,
|
|
230
|
+
};
|
|
231
|
+
const key = method === "system.requestChallenge"
|
|
232
|
+
? `system-challenge:${String(args[0] ?? "")}`
|
|
233
|
+
: `system-auth:${String(args[0] ?? "")}`;
|
|
234
|
+
if (!allowUnauthPeerCall(key, limit)) {
|
|
235
|
+
throw new Error("Too many system admin requests, please try again later");
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
switch (method) {
|
|
239
|
+
case "system.requestChallenge": {
|
|
240
|
+
const username = String(args[0] ?? "");
|
|
241
|
+
const publicsignkey = String(args[1] ?? "");
|
|
242
|
+
if (!username) {
|
|
243
|
+
throw new Error("username is required");
|
|
244
|
+
}
|
|
245
|
+
if (!publicsignkey) {
|
|
246
|
+
throw new Error("publicsignkey is required");
|
|
247
|
+
}
|
|
248
|
+
(0, validation_1.validateUsername)(username);
|
|
249
|
+
(0, validation_1.validateStringLength)(publicsignkey, validation_1.MAX_PEM_KEY_LENGTH, "publicsignkey");
|
|
250
|
+
try {
|
|
251
|
+
return { challenge: await host.systemAdmin.generateChallenge(username, publicsignkey) };
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
if (error instanceof Error && error.message === "Unknown system admin principal") {
|
|
255
|
+
throw new Error("System admin principal not found");
|
|
256
|
+
}
|
|
257
|
+
throw error;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
case "system.authenticate": {
|
|
261
|
+
const challenge = String(args[0] ?? "");
|
|
262
|
+
const signature = asUint8Array(args[1]);
|
|
263
|
+
if (!challenge || !signature) {
|
|
264
|
+
throw new Error("challenge and signature (Uint8Array) are required");
|
|
265
|
+
}
|
|
266
|
+
(0, validation_1.validateStringLength)(challenge, validation_1.MAX_CHALLENGE_LENGTH, "challenge");
|
|
267
|
+
const result = await host.systemAdmin.authenticate(challenge, signature);
|
|
268
|
+
if (!result.success || !result.token) {
|
|
269
|
+
throw new Error(result.error ?? "Authentication failed");
|
|
270
|
+
}
|
|
271
|
+
return { success: true, token: result.token };
|
|
272
|
+
}
|
|
273
|
+
case "system.registerTenant": {
|
|
274
|
+
const payload = await requireSystemAdminPayload(host, String(args[0] ?? ""));
|
|
275
|
+
const tenantId = String(args[1] ?? "").trim().toLowerCase();
|
|
276
|
+
(0, validation_1.validateTenantId)(tenantId);
|
|
277
|
+
const path = `/system/tenants/${tenantId}`;
|
|
278
|
+
if (!host.systemAdmin.isAuthorized("POST", path, payload.sub, payload.publicsignkey)) {
|
|
279
|
+
throw new Error("Forbidden: insufficient capabilities");
|
|
280
|
+
}
|
|
281
|
+
const body = (args[2] ?? {});
|
|
282
|
+
const adminSigningPublicKey = String(body.adminSigningPublicKey ?? "");
|
|
283
|
+
const adminEncryptionPublicKey = String(body.adminEncryptionPublicKey ?? "");
|
|
284
|
+
if (!adminSigningPublicKey) {
|
|
285
|
+
throw new Error("adminSigningPublicKey is required");
|
|
286
|
+
}
|
|
287
|
+
if (!adminEncryptionPublicKey) {
|
|
288
|
+
throw new Error("adminEncryptionPublicKey is required");
|
|
289
|
+
}
|
|
290
|
+
if (body.adminUsername !== undefined) {
|
|
291
|
+
(0, validation_1.validateUsername)(body.adminUsername);
|
|
292
|
+
}
|
|
293
|
+
(0, validation_1.validateStringLength)(adminSigningPublicKey, validation_1.MAX_PEM_KEY_LENGTH, "adminSigningPublicKey");
|
|
294
|
+
(0, validation_1.validateStringLength)(adminEncryptionPublicKey, validation_1.MAX_PEM_KEY_LENGTH, "adminEncryptionPublicKey");
|
|
295
|
+
if (!body.encryptedPublicInfosKey && !body.publicInfosKey) {
|
|
296
|
+
throw new Error("encryptedPublicInfosKey or publicInfosKey is required");
|
|
297
|
+
}
|
|
298
|
+
if (body.publicInfosKey !== undefined) {
|
|
299
|
+
(0, validation_1.validateStringLength)(body.publicInfosKey, validation_1.MAX_PEM_KEY_LENGTH, "publicInfosKey");
|
|
300
|
+
}
|
|
301
|
+
if (body.encryptedPublicInfosKey !== undefined) {
|
|
302
|
+
(0, validation_1.validateStringLength)(body.encryptedPublicInfosKey, validation_1.MAX_PEM_KEY_LENGTH, "encryptedPublicInfosKey");
|
|
303
|
+
}
|
|
304
|
+
const request = {
|
|
305
|
+
tenantId,
|
|
306
|
+
adminSigningPublicKey,
|
|
307
|
+
adminEncryptionPublicKey,
|
|
308
|
+
adminUsername: typeof body.adminUsername === "string" ? body.adminUsername : undefined,
|
|
309
|
+
publicInfosKey: typeof body.publicInfosKey === "string" ? body.publicInfosKey : undefined,
|
|
310
|
+
encryptedPublicInfosKey: typeof body.encryptedPublicInfosKey === "string" ? body.encryptedPublicInfosKey : undefined,
|
|
311
|
+
users: Array.isArray(body.users) ? body.users : undefined,
|
|
312
|
+
};
|
|
313
|
+
const result = await host.systemAdmin.registerTenant(request);
|
|
314
|
+
return {
|
|
315
|
+
success: true,
|
|
316
|
+
tenantId: result.context.tenantId,
|
|
317
|
+
created: result.created,
|
|
318
|
+
message: result.created
|
|
319
|
+
? `Tenant ${result.context.tenantId} registered successfully`
|
|
320
|
+
: `Tenant ${result.context.tenantId} already exists with matching $publicinfos key`,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
default:
|
|
324
|
+
throw new Error(`Unknown Iroh RPC method ${method}`);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
const IROH_STORE_METHODS = new Set([
|
|
328
|
+
"getCapabilities",
|
|
329
|
+
"findNewEntries",
|
|
330
|
+
"findNewEntriesForDoc",
|
|
331
|
+
"findEntries",
|
|
332
|
+
"scanEntriesSince",
|
|
333
|
+
"getIdBloomSummary",
|
|
334
|
+
"getStoreHead",
|
|
335
|
+
"getCompactionStatus",
|
|
336
|
+
"planDocumentMaterialization",
|
|
337
|
+
"planDocumentMaterializationBatch",
|
|
338
|
+
"planAttachmentReadByWalkingMetadata",
|
|
339
|
+
"getEntries",
|
|
340
|
+
"getEntriesSessionWrapped",
|
|
341
|
+
"getEntryMetadata",
|
|
342
|
+
"putEntries",
|
|
343
|
+
"hasEntries",
|
|
344
|
+
"getAllIds",
|
|
345
|
+
"resolveDependencies",
|
|
346
|
+
"subscribeToChanges",
|
|
347
|
+
]);
|
|
70
348
|
async function dispatchStoreMethod(host, method, args, ctx) {
|
|
349
|
+
if (!IROH_STORE_METHODS.has(method)) {
|
|
350
|
+
throw new Error(`Unknown Iroh RPC method ${method}`);
|
|
351
|
+
}
|
|
71
352
|
const scope = requireStoreScope(ctx);
|
|
72
353
|
const store = await host.getServerStore(scope.tenantId, scope.dbId, scope.storeKind);
|
|
73
354
|
const token = String(args[0] ?? "");
|
|
74
355
|
switch (method) {
|
|
75
|
-
case "getCapabilities":
|
|
76
|
-
|
|
356
|
+
case "getCapabilities": {
|
|
357
|
+
const capabilities = (await store.handleGetCapabilities(token));
|
|
358
|
+
return { ...capabilities, supportsChangeEvents: true };
|
|
359
|
+
}
|
|
77
360
|
case "findNewEntries":
|
|
78
361
|
return store.handleFindNewEntries(token, args[1] ?? []);
|
|
79
362
|
case "findNewEntriesForDoc":
|
|
@@ -100,8 +383,24 @@ async function dispatchStoreMethod(host, method, args, ctx) {
|
|
|
100
383
|
return store.handleGetEntriesSessionWrapped(token, args[1] ?? []);
|
|
101
384
|
case "getEntryMetadata":
|
|
102
385
|
return store.handleGetEntryMetadata(token, String(args[1] ?? ""));
|
|
103
|
-
case "putEntries":
|
|
104
|
-
|
|
386
|
+
case "putEntries": {
|
|
387
|
+
const ack = (await store.handlePutEntries(token, args[1] ?? []));
|
|
388
|
+
if ((ack.receipts?.length ?? 0) > 0 && host.syncEventBus) {
|
|
389
|
+
const head = (await store.handleGetStoreHead(token).catch(() => null));
|
|
390
|
+
const peerName = host.peerAuth
|
|
391
|
+
? ((await host.peerAuth.validateToken(token).catch(() => null))?.sub ?? undefined)
|
|
392
|
+
: undefined;
|
|
393
|
+
host.syncEventBus.publish({
|
|
394
|
+
tenantId: scope.tenantId,
|
|
395
|
+
dbId: scope.dbId,
|
|
396
|
+
storeKind: scope.storeKind,
|
|
397
|
+
epoch: head?.epoch,
|
|
398
|
+
maxReceiptOrder: head?.maxReceiptOrder,
|
|
399
|
+
originPeer: peerName,
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
return ack;
|
|
403
|
+
}
|
|
105
404
|
case "hasEntries":
|
|
106
405
|
return store.handleHasEntries(token, args[1] ?? []);
|
|
107
406
|
case "getAllIds":
|
|
@@ -109,7 +408,11 @@ async function dispatchStoreMethod(host, method, args, ctx) {
|
|
|
109
408
|
case "resolveDependencies":
|
|
110
409
|
return store.handleResolveDependencies(token, String(args[1] ?? ""), args[2]);
|
|
111
410
|
case "subscribeToChanges":
|
|
112
|
-
|
|
411
|
+
await store.handleGetCapabilities(token);
|
|
412
|
+
if (!host.syncEventBus) {
|
|
413
|
+
throw new Error("Iroh change feed is not configured");
|
|
414
|
+
}
|
|
415
|
+
return createIrohChangeFeed(host.syncEventBus, scope);
|
|
113
416
|
default:
|
|
114
417
|
throw new Error(`Unknown Iroh RPC method ${method}`);
|
|
115
418
|
}
|
|
@@ -117,4 +420,118 @@ async function dispatchStoreMethod(host, method, args, ctx) {
|
|
|
117
420
|
function isIrohValidationError(error) {
|
|
118
421
|
return error instanceof validation_1.ValidationError;
|
|
119
422
|
}
|
|
423
|
+
function createIrohChangeFeed(bus, scope) {
|
|
424
|
+
return {
|
|
425
|
+
[Symbol.asyncIterator]() {
|
|
426
|
+
const queue = [];
|
|
427
|
+
let notify = null;
|
|
428
|
+
let closed = false;
|
|
429
|
+
const unsubscribe = bus.subscribe((event) => {
|
|
430
|
+
if (event.tenantId !== scope.tenantId || event.storeKind !== scope.storeKind) {
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
queue.push({
|
|
434
|
+
dbId: event.dbId,
|
|
435
|
+
storeKind: event.storeKind,
|
|
436
|
+
epoch: event.epoch,
|
|
437
|
+
maxReceiptOrder: event.maxReceiptOrder,
|
|
438
|
+
});
|
|
439
|
+
notify?.();
|
|
440
|
+
});
|
|
441
|
+
const heartbeat = setInterval(() => {
|
|
442
|
+
if (closed) {
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
queue.push(exports.IROH_CHANGE_FEED_HEARTBEAT);
|
|
446
|
+
notify?.();
|
|
447
|
+
}, exports.IROH_CHANGE_FEED_HEARTBEAT_MS);
|
|
448
|
+
heartbeat.unref?.();
|
|
449
|
+
const close = () => {
|
|
450
|
+
if (closed) {
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
closed = true;
|
|
454
|
+
clearInterval(heartbeat);
|
|
455
|
+
unsubscribe();
|
|
456
|
+
notify?.();
|
|
457
|
+
};
|
|
458
|
+
return {
|
|
459
|
+
async next() {
|
|
460
|
+
while (queue.length === 0 && !closed) {
|
|
461
|
+
await new Promise((resolve) => {
|
|
462
|
+
notify = resolve;
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
if (queue.length === 0) {
|
|
466
|
+
return { done: true, value: undefined };
|
|
467
|
+
}
|
|
468
|
+
return { done: false, value: queue.shift() };
|
|
469
|
+
},
|
|
470
|
+
async return() {
|
|
471
|
+
close();
|
|
472
|
+
return { done: true, value: undefined };
|
|
473
|
+
},
|
|
474
|
+
};
|
|
475
|
+
},
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
function createIrohPeerEventFeed(bus, cluster, peerName) {
|
|
479
|
+
return {
|
|
480
|
+
[Symbol.asyncIterator]() {
|
|
481
|
+
const queue = [];
|
|
482
|
+
let notify = null;
|
|
483
|
+
let closed = false;
|
|
484
|
+
const unsubscribe = bus.subscribe((event) => {
|
|
485
|
+
if (event.originPeer === peerName) {
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
if (!cluster.peerMaySeeTenant(peerName, event.tenantId)) {
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
queue.push({
|
|
492
|
+
tenantId: event.tenantId,
|
|
493
|
+
dbId: event.dbId,
|
|
494
|
+
storeKind: event.storeKind,
|
|
495
|
+
epoch: event.epoch,
|
|
496
|
+
maxReceiptOrder: event.maxReceiptOrder,
|
|
497
|
+
});
|
|
498
|
+
notify?.();
|
|
499
|
+
});
|
|
500
|
+
const heartbeat = setInterval(() => {
|
|
501
|
+
if (closed) {
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
504
|
+
queue.push(exports.IROH_CHANGE_FEED_HEARTBEAT);
|
|
505
|
+
notify?.();
|
|
506
|
+
}, exports.IROH_CHANGE_FEED_HEARTBEAT_MS);
|
|
507
|
+
heartbeat.unref?.();
|
|
508
|
+
const close = () => {
|
|
509
|
+
if (closed) {
|
|
510
|
+
return;
|
|
511
|
+
}
|
|
512
|
+
closed = true;
|
|
513
|
+
clearInterval(heartbeat);
|
|
514
|
+
unsubscribe();
|
|
515
|
+
notify?.();
|
|
516
|
+
};
|
|
517
|
+
return {
|
|
518
|
+
async next() {
|
|
519
|
+
while (queue.length === 0 && !closed) {
|
|
520
|
+
await new Promise((resolve) => {
|
|
521
|
+
notify = resolve;
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
if (queue.length === 0) {
|
|
525
|
+
return { done: true, value: undefined };
|
|
526
|
+
}
|
|
527
|
+
return { done: false, value: queue.shift() };
|
|
528
|
+
},
|
|
529
|
+
async return() {
|
|
530
|
+
close();
|
|
531
|
+
return { done: true, value: undefined };
|
|
532
|
+
},
|
|
533
|
+
};
|
|
534
|
+
},
|
|
535
|
+
};
|
|
536
|
+
}
|
|
120
537
|
//# sourceMappingURL=IrohServerRpc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrohServerRpc.js","sourceRoot":"","sources":["../../../src/node/server/IrohServerRpc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrohServerRpc.js","sourceRoot":"","sources":["../../../src/node/server/IrohServerRpc.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,6 +101,9 @@ export declare class MindooDBServer {
|
|
|
101
101
|
*/
|
|
102
102
|
listenTls(port: number, certPath: string, keyPath: string): void;
|
|
103
103
|
getIrohStatus(): import("./IrohServerEndpoint").IrohServerEndpointStatus;
|
|
104
|
+
getIrohStreamIO(): import("./nativeIrohStreamIO").NativeIrohStreamIO | null;
|
|
105
|
+
stopIroh(): Promise<void>;
|
|
106
|
+
getSyncEventListenerCount(): number;
|
|
104
107
|
startIrohIfEnabled(): Promise<void>;
|
|
105
108
|
/**
|
|
106
109
|
* Global middleware stack applied to every request, in order:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MindooDBServer.d.ts","sourceRoot":"","sources":["../../../src/node/server/MindooDBServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,OAAoD,MAAM,SAAS,CAAC;AAuB3E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAwBvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAkB3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAuC5C;;;;;GAKG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,OAAO,CAAC;QAChB,UAAU,OAAO;YACf,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,WAAW,CAAC,EAAE;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,aAAa,EAAE,MAAM,CAAA;aAAE,CAAC;YAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,yFAAyF;YACzF,kBAAkB,CAAC,EAAE,MAAM,CAAC;YAC5B,yFAAyF;YACzF,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB;KACF;CACF;AAiFD,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAsB;IACjC,0EAA0E;IAC1E,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,eAAe,CAAyB;IAChD,kEAAkE;IAClE,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgB;IACnD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IAEzD;;;;;;;;OAQG;gBAED,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,YAAY,EACrB,UAAU,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"MindooDBServer.d.ts","sourceRoot":"","sources":["../../../src/node/server/MindooDBServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -201,6 +201,7 @@ class MindooDBServer {
|
|
|
201
201
|
listDatabases: (tenantId) => this.tenantManager.listDatabases(tenantId),
|
|
202
202
|
getLocalStore: (tenantId, dbId, storeKind) => this.tenantManager.getStore(tenantId, dbId, storeKind),
|
|
203
203
|
localRole: this.serverConfig.cluster?.role,
|
|
204
|
+
getIrohStreamIO: () => this.irohEndpoint.getStreamIO(),
|
|
204
205
|
});
|
|
205
206
|
// Peer tokens are accepted by the tenant sync routes so a peer can mirror
|
|
206
207
|
// the encrypted stores through the ordinary protocol; the store bypasses
|
|
@@ -304,6 +305,15 @@ class MindooDBServer {
|
|
|
304
305
|
getIrohStatus() {
|
|
305
306
|
return this.irohEndpoint.getStatus();
|
|
306
307
|
}
|
|
308
|
+
getIrohStreamIO() {
|
|
309
|
+
return this.irohEndpoint.getStreamIO();
|
|
310
|
+
}
|
|
311
|
+
async stopIroh() {
|
|
312
|
+
await this.irohEndpoint.stopListening();
|
|
313
|
+
}
|
|
314
|
+
getSyncEventListenerCount() {
|
|
315
|
+
return this.syncEventBus.listenerCount;
|
|
316
|
+
}
|
|
307
317
|
async startIrohIfEnabled() {
|
|
308
318
|
const irohConfig = this.serverConfig.iroh;
|
|
309
319
|
if (!irohConfig?.enabled) {
|
|
@@ -323,6 +333,32 @@ class MindooDBServer {
|
|
|
323
333
|
listTenantPublicInfosFingerprints: (tenantId) => this.tenantManager.listTenantPublicInfosFingerprints(tenantId),
|
|
324
334
|
getAuthService: (tenantId) => this.tenantManager.getAuthService(tenantId),
|
|
325
335
|
getServerStore: (tenantId, dbId, storeKind) => this.tenantManager.getServerStore(tenantId, dbId, storeKind),
|
|
336
|
+
systemAdmin: {
|
|
337
|
+
generateChallenge: (username, publicsignkey) => this.systemAdminAuth.generateChallenge(username, publicsignkey),
|
|
338
|
+
authenticate: (challenge, signature) => this.systemAdminAuth.authenticate(challenge, signature),
|
|
339
|
+
validateToken: (token) => this.systemAdminAuth.validateToken(token),
|
|
340
|
+
isAuthorized: (method, path, username, publicsignkey) => this.capabilityMatcher.isAuthorized(method, path, username, publicsignkey),
|
|
341
|
+
registerTenant: (request) => this.tenantManager.registerTenant(request),
|
|
342
|
+
},
|
|
343
|
+
syncEventBus: this.syncEventBus,
|
|
344
|
+
peerAuth: {
|
|
345
|
+
generateChallenge: (publicsignkey) => this.cluster.auth.generateChallenge(publicsignkey),
|
|
346
|
+
authenticate: (challenge, signature) => this.cluster.auth.authenticate(challenge, signature),
|
|
347
|
+
validateToken: (token) => this.cluster.auth.validateToken(token),
|
|
348
|
+
},
|
|
349
|
+
peerCluster: {
|
|
350
|
+
recordPeerIntersection: (peerName, tenantIds) => this.cluster.recordPeerIntersection(peerName, tenantIds),
|
|
351
|
+
peerMaySeeTenant: (peerName, tenantId) => this.cluster.peerMaySeeTenant(peerName, tenantId),
|
|
352
|
+
listTenants: () => this.tenantManager.listTenants(),
|
|
353
|
+
listDatabases: (tenantId) => this.tenantManager.listDatabases(tenantId),
|
|
354
|
+
requestSync: (peerName, scope) => {
|
|
355
|
+
const replicator = this.cluster.getReplicator(peerName);
|
|
356
|
+
if (!replicator) {
|
|
357
|
+
throw new Error(`No outbound session configured for peer ${peerName} (missing url in trusted-servers.json)`);
|
|
358
|
+
}
|
|
359
|
+
void replicator.syncNow(scope).catch(() => undefined);
|
|
360
|
+
},
|
|
361
|
+
},
|
|
326
362
|
}),
|
|
327
363
|
});
|
|
328
364
|
}
|