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.
Files changed (66) hide show
  1. package/README-server.md +13 -3
  2. package/README.md +1 -0
  3. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
  4. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +41 -5
  5. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
  6. package/dist/core/BaseMindooTenant.d.ts +9 -2
  7. package/dist/core/BaseMindooTenant.d.ts.map +1 -1
  8. package/dist/core/BaseMindooTenant.js +102 -11
  9. package/dist/core/BaseMindooTenant.js.map +1 -1
  10. package/dist/core/appendonlystores/network/IrohNetworkTransport.d.ts +29 -0
  11. package/dist/core/appendonlystores/network/IrohNetworkTransport.d.ts.map +1 -1
  12. package/dist/core/appendonlystores/network/IrohNetworkTransport.js +204 -25
  13. package/dist/core/appendonlystores/network/IrohNetworkTransport.js.map +1 -1
  14. package/dist/core/appendonlystores/network/IrohStreamIO.d.ts +30 -1
  15. package/dist/core/appendonlystores/network/IrohStreamIO.d.ts.map +1 -1
  16. package/dist/core/appendonlystores/network/IrohStreamIO.js +43 -11
  17. package/dist/core/appendonlystores/network/IrohStreamIO.js.map +1 -1
  18. package/dist/core/appendonlystores/syncStores.d.ts.map +1 -1
  19. package/dist/core/appendonlystores/syncStores.js +20 -3
  20. package/dist/core/appendonlystores/syncStores.js.map +1 -1
  21. package/dist/core/types.d.ts +21 -1
  22. package/dist/core/types.d.ts.map +1 -1
  23. package/dist/core/types.js.map +1 -1
  24. package/dist/iroh/index.d.ts +5 -1
  25. package/dist/iroh/index.d.ts.map +1 -1
  26. package/dist/iroh/index.js +4 -0
  27. package/dist/iroh/index.js.map +1 -1
  28. package/dist/iroh/node.d.ts +26 -0
  29. package/dist/iroh/node.d.ts.map +1 -0
  30. package/dist/iroh/node.js +27 -0
  31. package/dist/iroh/node.js.map +1 -0
  32. package/dist/node/server/IrohServerEndpoint.d.ts +5 -0
  33. package/dist/node/server/IrohServerEndpoint.d.ts.map +1 -1
  34. package/dist/node/server/IrohServerEndpoint.js +14 -104
  35. package/dist/node/server/IrohServerEndpoint.js.map +1 -1
  36. package/dist/node/server/IrohServerRpc.d.ts +57 -0
  37. package/dist/node/server/IrohServerRpc.d.ts.map +1 -1
  38. package/dist/node/server/IrohServerRpc.js +422 -5
  39. package/dist/node/server/IrohServerRpc.js.map +1 -1
  40. package/dist/node/server/MindooDBServer.d.ts +3 -0
  41. package/dist/node/server/MindooDBServer.d.ts.map +1 -1
  42. package/dist/node/server/MindooDBServer.js +36 -0
  43. package/dist/node/server/MindooDBServer.js.map +1 -1
  44. package/dist/node/server/nativeIrohStreamIO.d.ts +13 -0
  45. package/dist/node/server/nativeIrohStreamIO.d.ts.map +1 -0
  46. package/dist/node/server/nativeIrohStreamIO.js +259 -0
  47. package/dist/node/server/nativeIrohStreamIO.js.map +1 -0
  48. package/dist/node/server/peer/ClusterManager.d.ts +6 -0
  49. package/dist/node/server/peer/ClusterManager.d.ts.map +1 -1
  50. package/dist/node/server/peer/ClusterManager.js +1 -0
  51. package/dist/node/server/peer/ClusterManager.js.map +1 -1
  52. package/dist/node/server/peer/IrohPeerLink.d.ts +24 -0
  53. package/dist/node/server/peer/IrohPeerLink.d.ts.map +1 -0
  54. package/dist/node/server/peer/IrohPeerLink.js +115 -0
  55. package/dist/node/server/peer/IrohPeerLink.js.map +1 -0
  56. package/dist/node/server/peer/PeerReplicator.d.ts +9 -0
  57. package/dist/node/server/peer/PeerReplicator.d.ts.map +1 -1
  58. package/dist/node/server/peer/PeerReplicator.js +103 -6
  59. package/dist/node/server/peer/PeerReplicator.js.map +1 -1
  60. package/dist/node/server/types.d.ts +5 -3
  61. package/dist/node/server/types.d.ts.map +1 -1
  62. package/dist/node/server/types.js.map +1 -1
  63. package/package.json +7 -1
  64. package/scripts/iroh-live-test-server.mjs +30 -0
  65. package/scripts/iroh-live-test-server.ts +61 -0
  66. 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
- return store.handleGetCapabilities(token);
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
- return store.handlePutEntries(token, args[1] ?? []);
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
- throw new Error("subscribeToChanges is not implemented on the Iroh server path yet");
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":"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"}
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
  }