mindoodb 0.0.60 → 0.0.62

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 (53) hide show
  1. package/README-server.md +13 -3
  2. package/README.md +1 -0
  3. package/dist/core/appendonlystores/network/IrohNetworkTransport.d.ts +10 -0
  4. package/dist/core/appendonlystores/network/IrohNetworkTransport.d.ts.map +1 -1
  5. package/dist/core/appendonlystores/network/IrohNetworkTransport.js +186 -25
  6. package/dist/core/appendonlystores/network/IrohNetworkTransport.js.map +1 -1
  7. package/dist/core/appendonlystores/network/IrohStreamIO.d.ts +30 -1
  8. package/dist/core/appendonlystores/network/IrohStreamIO.d.ts.map +1 -1
  9. package/dist/core/appendonlystores/network/IrohStreamIO.js +43 -11
  10. package/dist/core/appendonlystores/network/IrohStreamIO.js.map +1 -1
  11. package/dist/iroh/index.d.ts +5 -1
  12. package/dist/iroh/index.d.ts.map +1 -1
  13. package/dist/iroh/index.js +4 -0
  14. package/dist/iroh/index.js.map +1 -1
  15. package/dist/iroh/node.d.ts +26 -0
  16. package/dist/iroh/node.d.ts.map +1 -0
  17. package/dist/iroh/node.js +27 -0
  18. package/dist/iroh/node.js.map +1 -0
  19. package/dist/node/server/IrohServerEndpoint.d.ts +5 -0
  20. package/dist/node/server/IrohServerEndpoint.d.ts.map +1 -1
  21. package/dist/node/server/IrohServerEndpoint.js +14 -104
  22. package/dist/node/server/IrohServerEndpoint.js.map +1 -1
  23. package/dist/node/server/IrohServerRpc.d.ts +38 -0
  24. package/dist/node/server/IrohServerRpc.d.ts.map +1 -1
  25. package/dist/node/server/IrohServerRpc.js +266 -5
  26. package/dist/node/server/IrohServerRpc.js.map +1 -1
  27. package/dist/node/server/MindooDBServer.d.ts +3 -0
  28. package/dist/node/server/MindooDBServer.d.ts.map +1 -1
  29. package/dist/node/server/MindooDBServer.js +29 -0
  30. package/dist/node/server/MindooDBServer.js.map +1 -1
  31. package/dist/node/server/nativeIrohStreamIO.d.ts +13 -0
  32. package/dist/node/server/nativeIrohStreamIO.d.ts.map +1 -0
  33. package/dist/node/server/nativeIrohStreamIO.js +259 -0
  34. package/dist/node/server/nativeIrohStreamIO.js.map +1 -0
  35. package/dist/node/server/peer/ClusterManager.d.ts +6 -0
  36. package/dist/node/server/peer/ClusterManager.d.ts.map +1 -1
  37. package/dist/node/server/peer/ClusterManager.js +1 -0
  38. package/dist/node/server/peer/ClusterManager.js.map +1 -1
  39. package/dist/node/server/peer/IrohPeerLink.d.ts +24 -0
  40. package/dist/node/server/peer/IrohPeerLink.d.ts.map +1 -0
  41. package/dist/node/server/peer/IrohPeerLink.js +115 -0
  42. package/dist/node/server/peer/IrohPeerLink.js.map +1 -0
  43. package/dist/node/server/peer/PeerReplicator.d.ts +9 -0
  44. package/dist/node/server/peer/PeerReplicator.d.ts.map +1 -1
  45. package/dist/node/server/peer/PeerReplicator.js +103 -6
  46. package/dist/node/server/peer/PeerReplicator.js.map +1 -1
  47. package/dist/node/server/types.d.ts +5 -3
  48. package/dist/node/server/types.d.ts.map +1 -1
  49. package/dist/node/server/types.js.map +1 -1
  50. package/package.json +7 -1
  51. package/scripts/iroh-live-test-server.mjs +30 -0
  52. package/scripts/iroh-live-test-server.ts +61 -0
  53. package/scripts/iroh-multistream-spike.mjs +113 -0
package/README-server.md CHANGED
@@ -479,11 +479,13 @@ curl -X POST http://server1:1661/system/trusted-servers \
479
479
  }'
480
480
  ```
481
481
 
482
+ When both servers have `iroh.enabled`, `url` may be `iroh:<ticket>` instead of an HTTPS origin. Admin APIs stay on HTTP; only the replicator session uses QUIC. See [docs/iroh.md](docs/iroh.md).
483
+
482
484
  Only `name` and the two public keys are required. The rest describe the replication session and all have defaults:
483
485
 
484
486
  | Field | Values | Default | Meaning |
485
487
  | --- | --- | --- | --- |
486
- | `url` | base url | *(none)* | Where to reach the peer. **Without it the server is trusted but never dialled** — it can push to us, we never pull from it. |
488
+ | `url` | HTTPS origin or `iroh:<ticket>` | *(none)* | Where to reach the peer. **Without it the server is trusted but never dialled** — it can push to us, we never pull from it. |
487
489
  | `direction` | `bidirectional`, `push`, `pull`, `disabled` | `bidirectional` | Which legs are allowed. `pull` makes a read-only mirror; `disabled` keeps the trust but stops replicating. |
488
490
  | `role` | `peer`, `hub`, `spoke` | `peer` | Mesh shape. Two `spoke`s do not open a session with each other — they exchange data through their hub. |
489
491
  | `attachments` | `eager`, `lazy`, `never` | `eager` | `eager` completes each database before the next. `lazy` replicates every document store first and attachments afterwards, so an interrupted or slow run has spent its bandwidth on the text. `never` mirrors metadata only. |
@@ -625,9 +627,15 @@ below with `"enabled": false` in `config.json`. `--update` never rewrites an
625
627
  existing `config.json` — add or flip the block yourself, then restart.
626
628
 
627
629
  When `"enabled": true` the process joins the Iroh network with ALPN
628
- `mindoodb/sync-v5` and logs a ticket. The secret key is created at
630
+ `mindoodb/sync-v5`, waits until the endpoint is online (home relay), and
631
+ logs a ticket. The secret key is created at
629
632
  `iroh-secret.key` in the data directory on first start. Haven pastes
630
- `iroh:<ticket>` into the server URL field.
633
+ `iroh:<ticket>` into the server URL field. A Node CLI uses the same ticket
634
+ via `createNodeIrohStreamIO` from `mindoodb/iroh/node` — see
635
+ [docs/iroh.md](docs/iroh.md).
636
+
637
+ Live tests (real relays): `MINDOODB_IROH_LIVE=1 pnpm test:iroh` in this
638
+ repo, and `pnpm test:e2e:iroh` in Haven.
631
639
 
632
640
  ```json
633
641
  {
@@ -685,6 +693,8 @@ Generated by `pnpm server:init`. Contains a `PrivateUserId` with encrypted priva
685
693
  ]
686
694
  ```
687
695
 
696
+ `url` is either an HTTPS origin (`https://server2.example.com`) or an Iroh locator (`iroh:<ticket>` / raw `endpoint…` ticket). Cluster admin stays on HTTP; only the replicator session uses Iroh. Store a full ticket to pair — `iroh:<64-hex>` is a stable Node-ID label but cannot be dialled. A frozen ticket can go stale after an IP or relay change; paste a fresh one from the peer's Iroh log. See [docs/iroh.md](docs/iroh.md).
697
+
688
698
  This file is the whole replication topology. An entry with a `url` becomes one replication session covering every tenant both servers host; an entry without one is trusted (it may push to us) but never dialled. See [Server-to-Server Sync](#server-to-server-sync) for the field meanings.
689
699
 
690
700
  ### `<tenantId>/config.json`
package/README.md CHANGED
@@ -351,6 +351,7 @@ See: [Use Cases Documentation](./docs/usecases/README.md)
351
351
  - [Document Copy & Sharding](./docs/document-copy.md) — Copying documents between databases with or without history, verifiable provenance, and splitting a growing database into shards as a keyless operation
352
352
  - [Access Control & Governance](./docs/accesscontrol.md) — Encryption-key read access, admin-signed write policies, the two-tier model, witness receipts and trusted-time enforcement
353
353
  - [P2P Sync](./docs/p2psync.md) — Peer-to-peer synchronization
354
+ - [Iroh transport](./docs/iroh.md) — QUIC sync without a public HTTPS URL (server, Node CLI, Haven, React Native)
354
355
  - [Attachments](./docs/attachments.md) — File storage and streaming
355
356
  - [Data Import Example](https://github.com/klehmann/mindoodb-data-import) — CLI tool that imports external data into MindooDB with historical `createdAt` timestamps for Time Travel
356
357
 
@@ -4,6 +4,8 @@ import type { NetworkTransport, NetworkTransportConfig } from "./NetworkTranspor
4
4
  import type { AuthResult, NetworkEncryptedEntry, NetworkSyncCapabilities, SessionEncryptedEntriesBatch, StoreChangeEvent } from "./types";
5
5
  import { type IrohByteStream, type IrohStreamIO, type IrohRpcContext } from "./IrohStreamIO";
6
6
  export type { IrohRpcContext };
7
+ /** One request / one response on a single stream. Exported so tests can force an id mismatch. */
8
+ export declare function rpcCall(stream: IrohByteStream, method: string, args: unknown[], id: number, ctx?: IrohRpcContext): Promise<unknown>;
7
9
  /**
8
10
  * NetworkTransport over Iroh QUIC streams (ALPN {@link MINDOODB_IROH_ALPN}).
9
11
  * Each method is one framed request/response. Pairing uses Iroh tickets.
@@ -14,10 +16,14 @@ export declare class IrohNetworkTransport implements NetworkTransport {
14
16
  private readonly config;
15
17
  private nextId;
16
18
  private stream;
19
+ private connection;
20
+ private sessionTail;
17
21
  constructor(io: IrohStreamIO, peerTicket: string, config: NetworkTransportConfig);
18
22
  getIdentity(): string;
19
23
  private rpcContext;
24
+ private sharedConnection;
20
25
  private session;
26
+ private enqueueSession;
21
27
  private call;
22
28
  getServerInfo(): Promise<unknown>;
23
29
  getTenantPublicInfosFingerprints(tenantId: string): Promise<{
@@ -61,11 +67,15 @@ export declare class IrohPeerStore implements ContentAddressedStore {
61
67
  private readonly storeKind;
62
68
  private nextId;
63
69
  private stream;
70
+ private connection;
71
+ private sessionTail;
64
72
  constructor(io: IrohStreamIO, peerTicket: string, dbId: string, storeKind: ReturnType<ContentAddressedStore["getStoreKind"]>);
65
73
  getId(): string;
66
74
  getStoreKind(): import("../types").StoreKind;
67
75
  getCacheIdentity(): string;
76
+ private sharedConnection;
68
77
  private session;
78
+ private enqueueSession;
69
79
  private call;
70
80
  putEntries(entries: StoreEntry[]): Promise<void>;
71
81
  applyWitnessReceipts(receipts: StoreEntryMetadata[]): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"IrohNetworkTransport.d.ts","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/IrohNetworkTransport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrohNetworkTransport.d.ts","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/IrohNetworkTransport.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IrohPeerStore = exports.IrohNetworkTransport = void 0;
4
+ exports.rpcCall = rpcCall;
4
5
  exports.createStoreIrohHandler = createStoreIrohHandler;
5
6
  exports.serveIrohRpc = serveIrohRpc;
6
7
  exports.listenForIrohPeers = listenForIrohPeers;
7
8
  const types_1 = require("./types");
8
9
  const IrohStreamIO_1 = require("./IrohStreamIO");
10
+ /** One request / one response on a single stream. Exported so tests can force an id mismatch. */
9
11
  async function rpcCall(stream, method, args, id, ctx) {
10
12
  const request = { id, method, args, ctx };
11
13
  await stream.send((0, IrohStreamIO_1.encodeIrohFrame)(request));
@@ -14,6 +16,9 @@ async function rpcCall(stream, method, args, id, ctx) {
14
16
  throw new types_1.NetworkError(types_1.NetworkErrorType.NETWORK_ERROR, "Iroh stream closed");
15
17
  }
16
18
  const response = (0, IrohStreamIO_1.decodeIrohFrame)(bytes);
19
+ if (response.id !== id) {
20
+ throw new types_1.NetworkError(types_1.NetworkErrorType.NETWORK_ERROR, `Iroh response id mismatch: expected ${id}, got ${response.id}`);
21
+ }
17
22
  if (!response.ok) {
18
23
  throw new types_1.NetworkError(types_1.NetworkErrorType.NETWORK_ERROR, response.error ?? "Iroh RPC failed");
19
24
  }
@@ -30,6 +35,8 @@ class IrohNetworkTransport {
30
35
  this.config = config;
31
36
  this.nextId = 1;
32
37
  this.stream = null;
38
+ this.connection = null;
39
+ this.sessionTail = Promise.resolve();
33
40
  }
34
41
  getIdentity() {
35
42
  return `iroh:${this.peerTicket}`;
@@ -41,14 +48,38 @@ class IrohNetworkTransport {
41
48
  storeKind: this.config.storeKind,
42
49
  };
43
50
  }
51
+ async sharedConnection() {
52
+ if (!this.io.openConnection) {
53
+ return null;
54
+ }
55
+ if (!this.connection) {
56
+ this.connection = this.io.openConnection(this.peerTicket, IrohStreamIO_1.MINDOODB_IROH_ALPN);
57
+ }
58
+ return this.connection;
59
+ }
44
60
  async session() {
45
61
  if (!this.stream) {
46
62
  this.stream = await this.io.connect(this.peerTicket, IrohStreamIO_1.MINDOODB_IROH_ALPN);
47
63
  }
48
64
  return this.stream;
49
65
  }
66
+ enqueueSession(work) {
67
+ const run = this.sessionTail.then(work, work);
68
+ this.sessionTail = run.then(() => undefined, () => undefined);
69
+ return run;
70
+ }
50
71
  async call(method, args) {
51
- return rpcCall(await this.session(), method, args, this.nextId++, this.rpcContext());
72
+ const connection = await this.sharedConnection();
73
+ if (connection) {
74
+ const stream = await connection.openStream();
75
+ try {
76
+ return await rpcCall(stream, method, args, this.nextId++, this.rpcContext());
77
+ }
78
+ finally {
79
+ await stream.close();
80
+ }
81
+ }
82
+ return this.enqueueSession(async () => rpcCall(await this.session(), method, args, this.nextId++, this.rpcContext()));
52
83
  }
53
84
  getServerInfo() {
54
85
  return this.call("getServerInfo", []);
@@ -117,18 +148,53 @@ class IrohNetworkTransport {
117
148
  return this.call("resolveDependencies", [token, startId, options]);
118
149
  }
119
150
  async subscribeToChanges(token, onEvent, options) {
120
- const stream = await this.session();
121
- await stream.send((0, IrohStreamIO_1.encodeIrohFrame)({ id: this.nextId++, method: "subscribeToChanges", args: [token] }));
122
- while (!options?.signal?.aborted) {
123
- const bytes = await stream.recv();
124
- if (!bytes) {
151
+ // Dedicated stream so the RPC session stays usable. When openConnection
152
+ // exists this is a second bi-stream on the shared QUIC connection;
153
+ // otherwise it is a second connect() (WASM / RN adapters).
154
+ const connection = await this.sharedConnection();
155
+ const stream = connection
156
+ ? await connection.openStream()
157
+ : await this.io.connect(this.peerTicket, IrohStreamIO_1.MINDOODB_IROH_ALPN);
158
+ const onAbort = () => {
159
+ void stream.close();
160
+ };
161
+ if (options?.signal) {
162
+ if (options.signal.aborted) {
163
+ await stream.close();
125
164
  return;
126
165
  }
127
- const frame = (0, IrohStreamIO_1.decodeIrohFrame)(bytes);
128
- if ("dbId" in frame && "storeKind" in frame) {
129
- onEvent(frame);
166
+ options.signal.addEventListener("abort", onAbort, { once: true });
167
+ }
168
+ try {
169
+ await stream.send((0, IrohStreamIO_1.encodeIrohFrame)({
170
+ id: this.nextId++,
171
+ method: "subscribeToChanges",
172
+ args: [token],
173
+ ctx: this.rpcContext(),
174
+ }));
175
+ const ackBytes = await stream.recv();
176
+ if (!ackBytes) {
177
+ throw new types_1.NetworkError(types_1.NetworkErrorType.NETWORK_ERROR, "Iroh stream closed");
178
+ }
179
+ const ack = (0, IrohStreamIO_1.decodeIrohFrame)(ackBytes);
180
+ if (!ack.ok) {
181
+ throw new types_1.NetworkError(types_1.NetworkErrorType.NETWORK_ERROR, ack.error ?? "Iroh RPC failed");
182
+ }
183
+ while (!options?.signal?.aborted) {
184
+ const bytes = await stream.recv();
185
+ if (!bytes) {
186
+ return;
187
+ }
188
+ const frame = (0, IrohStreamIO_1.decodeIrohFrame)(bytes);
189
+ if (isStoreChangeEvent(frame)) {
190
+ onEvent(frame);
191
+ }
130
192
  }
131
193
  }
194
+ finally {
195
+ options?.signal?.removeEventListener("abort", onAbort);
196
+ await stream.close();
197
+ }
132
198
  }
133
199
  }
134
200
  exports.IrohNetworkTransport = IrohNetworkTransport;
@@ -144,6 +210,8 @@ class IrohPeerStore {
144
210
  this.storeKind = storeKind;
145
211
  this.nextId = 1;
146
212
  this.stream = null;
213
+ this.connection = null;
214
+ this.sessionTail = Promise.resolve();
147
215
  }
148
216
  getId() {
149
217
  return this.dbId;
@@ -154,14 +222,38 @@ class IrohPeerStore {
154
222
  getCacheIdentity() {
155
223
  return `iroh:${this.peerTicket}:${this.dbId}:${this.storeKind}`;
156
224
  }
225
+ async sharedConnection() {
226
+ if (!this.io.openConnection) {
227
+ return null;
228
+ }
229
+ if (!this.connection) {
230
+ this.connection = this.io.openConnection(this.peerTicket, IrohStreamIO_1.MINDOODB_IROH_ALPN);
231
+ }
232
+ return this.connection;
233
+ }
157
234
  async session() {
158
235
  if (!this.stream) {
159
236
  this.stream = await this.io.connect(this.peerTicket, IrohStreamIO_1.MINDOODB_IROH_ALPN);
160
237
  }
161
238
  return this.stream;
162
239
  }
240
+ enqueueSession(work) {
241
+ const run = this.sessionTail.then(work, work);
242
+ this.sessionTail = run.then(() => undefined, () => undefined);
243
+ return run;
244
+ }
163
245
  async call(method, args) {
164
- return rpcCall(await this.session(), method, args, this.nextId++);
246
+ const connection = await this.sharedConnection();
247
+ if (connection) {
248
+ const stream = await connection.openStream();
249
+ try {
250
+ return await rpcCall(stream, method, args, this.nextId++);
251
+ }
252
+ finally {
253
+ await stream.close();
254
+ }
255
+ }
256
+ return this.enqueueSession(async () => rpcCall(await this.session(), method, args, this.nextId++));
165
257
  }
166
258
  putEntries(entries) {
167
259
  return this.call("store.putEntries", [entries]);
@@ -223,27 +315,92 @@ function createStoreIrohHandler(store) {
223
315
  return fn.apply(store, args);
224
316
  };
225
317
  }
318
+ function isAsyncIterable(value) {
319
+ return Boolean(value && typeof value === "object" && Symbol.asyncIterator in value);
320
+ }
321
+ function isStoreChangeEvent(value) {
322
+ if (!value || typeof value !== "object") {
323
+ return false;
324
+ }
325
+ const event = value;
326
+ return typeof event.dbId === "string" && typeof event.storeKind === "string";
327
+ }
226
328
  async function serveIrohRpc(stream, handler) {
227
- while (true) {
228
- const bytes = await stream.recv();
229
- if (!bytes) {
329
+ try {
330
+ while (true) {
331
+ const bytes = await stream.recv();
332
+ if (!bytes) {
333
+ return;
334
+ }
335
+ const request = (0, IrohStreamIO_1.decodeIrohFrame)(bytes);
336
+ try {
337
+ const result = await handler(request.method, request.args, request.ctx);
338
+ if (isAsyncIterable(result)) {
339
+ await streamHandlerIterable(stream, request, result);
340
+ return;
341
+ }
342
+ const response = { id: request.id, ok: true, result };
343
+ await stream.send((0, IrohStreamIO_1.encodeIrohFrame)(response));
344
+ }
345
+ catch (error) {
346
+ const response = {
347
+ id: request.id,
348
+ ok: false,
349
+ error: error instanceof Error ? error.message : String(error),
350
+ };
351
+ await stream.send((0, IrohStreamIO_1.encodeIrohFrame)(response));
352
+ }
353
+ }
354
+ }
355
+ catch (error) {
356
+ if ((0, IrohStreamIO_1.isBenignIrohClose)(error)) {
230
357
  return;
231
358
  }
232
- const request = (0, IrohStreamIO_1.decodeIrohFrame)(bytes);
359
+ throw error;
360
+ }
361
+ }
362
+ async function streamHandlerIterable(stream, request, result) {
363
+ await stream.send((0, IrohStreamIO_1.encodeIrohFrame)({ id: request.id, ok: true, result: { subscribed: true } }));
364
+ const iterator = result[Symbol.asyncIterator]();
365
+ let stopped = false;
366
+ const stop = async () => {
367
+ if (stopped) {
368
+ return;
369
+ }
370
+ stopped = true;
371
+ await iterator.return?.();
372
+ };
373
+ const watchClose = (async () => {
233
374
  try {
234
- const result = await handler(request.method, request.args, request.ctx);
235
- const response = { id: request.id, ok: true, result };
236
- await stream.send((0, IrohStreamIO_1.encodeIrohFrame)(response));
375
+ while (true) {
376
+ const next = await stream.recv();
377
+ if (!next) {
378
+ break;
379
+ }
380
+ }
237
381
  }
238
- catch (error) {
239
- const response = {
240
- id: request.id,
241
- ok: false,
242
- error: error instanceof Error ? error.message : String(error),
243
- };
244
- await stream.send((0, IrohStreamIO_1.encodeIrohFrame)(response));
382
+ finally {
383
+ await stop();
384
+ }
385
+ })();
386
+ try {
387
+ while (!stopped) {
388
+ const next = await iterator.next();
389
+ if (next.done) {
390
+ break;
391
+ }
392
+ await stream.send((0, IrohStreamIO_1.encodeIrohFrame)(next.value));
393
+ }
394
+ }
395
+ catch (error) {
396
+ if (!(0, IrohStreamIO_1.isBenignIrohClose)(error)) {
397
+ throw error;
245
398
  }
246
399
  }
400
+ finally {
401
+ await stop();
402
+ await watchClose.catch(() => undefined);
403
+ }
247
404
  }
248
405
  async function listenForIrohPeers(io, handler, options) {
249
406
  if (!io.listen) {
@@ -254,7 +411,11 @@ async function listenForIrohPeers(io, handler, options) {
254
411
  await stream.close();
255
412
  return;
256
413
  }
257
- void serveIrohRpc(stream, handler);
414
+ void serveIrohRpc(stream, handler).catch((error) => {
415
+ if (!(0, IrohStreamIO_1.isBenignIrohClose)(error)) {
416
+ console.error("[Iroh] RPC session failed:", error);
417
+ }
418
+ });
258
419
  }
259
420
  }
260
421
  //# sourceMappingURL=IrohNetworkTransport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IrohNetworkTransport.js","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/IrohNetworkTransport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrohNetworkTransport.js","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/IrohNetworkTransport.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,17 @@ export interface IrohByteStream {
28
28
  /** Finish the send side and release the stream. */
29
29
  close(): Promise<void>;
30
30
  }
31
+ /**
32
+ * One QUIC connection that can open many bidirectional streams.
33
+ * Native adapters implement this; WASM / React Native may omit it and keep
34
+ * using {@link IrohStreamIO.connect} (one stream per handshake).
35
+ */
36
+ export interface IrohConnectionHandle {
37
+ /** Open another bi-stream on this connection. */
38
+ openStream(): Promise<IrohByteStream>;
39
+ /** Close the connection and every stream on it. */
40
+ close(): Promise<void>;
41
+ }
31
42
  /**
32
43
  * Local Iroh endpoint: publish a ticket, dial a peer, and optionally accept
33
44
  * inbound streams on {@link MINDOODB_IROH_ALPN}.
@@ -42,13 +53,29 @@ export interface IrohStreamIO {
42
53
  /**
43
54
  * Open an outbound stream to `peerTicket`.
44
55
  *
56
+ * Convenience for one stream. Adapters that implement
57
+ * {@link IrohStreamIO.openConnection} should treat this as
58
+ * `openConnection().openStream()` and close the connection when the
59
+ * stream closes. WASM / RN adapters that omit `openConnection` open a
60
+ * new QUIC connection per call.
61
+ *
45
62
  * @param peerTicket Remote Iroh ticket or loopback id
46
63
  * @param alpn Protocol, defaults to {@link MINDOODB_IROH_ALPN}
47
64
  */
48
65
  connect(peerTicket: string, alpn?: string): Promise<IrohByteStream>;
66
+ /**
67
+ * Open a QUIC connection that can carry many bi-streams (RPC + change
68
+ * feed, or several in-flight RPCs). Optional — {@link IrohNetworkTransport}
69
+ * falls back to {@link IrohStreamIO.connect} when this is missing.
70
+ *
71
+ * @param peerTicket Remote Iroh ticket or loopback id
72
+ * @param alpn Protocol, defaults to {@link MINDOODB_IROH_ALPN}
73
+ */
74
+ openConnection?(peerTicket: string, alpn?: string): Promise<IrohConnectionHandle>;
49
75
  /**
50
76
  * Yield inbound streams. Required on the server / listener side; a
51
- * client-only IO may omit it.
77
+ * client-only IO may omit it. Native adapters yield every `acceptBi()`
78
+ * on each incoming connection (one connection, many streams).
52
79
  *
53
80
  * @param alpn Protocol, defaults to {@link MINDOODB_IROH_ALPN}
54
81
  */
@@ -85,6 +112,8 @@ export interface IrohRpcResponse {
85
112
  * @param payload {@link IrohRpcRequest} or {@link IrohRpcResponse}
86
113
  */
87
114
  export declare function encodeIrohFrame(payload: unknown): Uint8Array;
115
+ /** Peer closed the QUIC stream or endpoint. Not an application error. */
116
+ export declare function isBenignIrohClose(error: unknown): boolean;
88
117
  /**
89
118
  * Length-prefix a message-oriented {@link IrohByteStream} on top of a raw
90
119
  * QUIC/byte stream. Each `send` writes a big-endian uint32 length plus the
@@ -1 +1 @@
1
- {"version":3,"file":"IrohStreamIO.d.ts","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/IrohStreamIO.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACnC,mDAAmD;IACnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC;;;;;OAKG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACpE;;;;;OAKG;IACH,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;CACvD;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,cAAc,CAAC;CACtB;AAED,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAE5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE;IAChD,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,GAAG,cAAc,CAyCjB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAE1D;AAoFD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI;IAAE,CAAC,EAAE,YAAY,CAAC;IAAC,CAAC,EAAE,YAAY,CAAA;CAAE,CAmD7E"}
1
+ {"version":3,"file":"IrohStreamIO.d.ts","sourceRoot":"","sources":["../../../../src/core/appendonlystores/network/IrohStreamIO.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACnC,mDAAmD;IACnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IACtC,mDAAmD;IACnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACpE;;;;;;;OAOG;IACH,cAAc,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClF;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;CACvD;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,cAAc,CAAC;CACtB;AAED,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAE5D;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE;IAChD,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,GAAG,cAAc,CAyCjB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAE1D;AA2FD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,IAAI;IAAE,CAAC,EAAE,YAAY,CAAC;IAAC,CAAC,EAAE,YAAY,CAAA;CAAE,CAsE7E"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MINDOODB_IROH_ALPN = void 0;
4
4
  exports.encodeIrohFrame = encodeIrohFrame;
5
+ exports.isBenignIrohClose = isBenignIrohClose;
5
6
  exports.wrapLengthPrefixedByteStream = wrapLengthPrefixedByteStream;
6
7
  exports.decodeIrohFrame = decodeIrohFrame;
7
8
  exports.createLoopbackIrohPair = createLoopbackIrohPair;
@@ -24,6 +25,11 @@ const textDecoder = new TextDecoder();
24
25
  function encodeIrohFrame(payload) {
25
26
  return textEncoder.encode(JSON.stringify(payload, replacer));
26
27
  }
28
+ /** Peer closed the QUIC stream or endpoint. Not an application error. */
29
+ function isBenignIrohClose(error) {
30
+ const message = error instanceof Error ? error.message : String(error);
31
+ return /ApplicationClosed|ConnectionLost|ConnectionReset/.test(message);
32
+ }
27
33
  /**
28
34
  * Length-prefix a message-oriented {@link IrohByteStream} on top of a raw
29
35
  * QUIC/byte stream. Each `send` writes a big-endian uint32 length plus the
@@ -123,8 +129,8 @@ class LoopbackStream {
123
129
  this.peer = null;
124
130
  }
125
131
  async send(bytes) {
126
- if (!this.peer) {
127
- throw new Error("Loopback stream has no peer");
132
+ if (!this.peer || this.peer.closed) {
133
+ throw new Error('ConnectionLost(ApplicationClosed)');
128
134
  }
129
135
  this.peer.push(bytes);
130
136
  }
@@ -149,12 +155,19 @@ class LoopbackStream {
149
155
  });
150
156
  }
151
157
  async close() {
158
+ if (this.closed) {
159
+ return;
160
+ }
152
161
  this.closed = true;
153
162
  if (this.waiter) {
154
163
  const resolve = this.waiter;
155
164
  this.waiter = null;
156
165
  resolve(null);
157
166
  }
167
+ const peer = this.peer;
168
+ if (peer && !peer.closed) {
169
+ await peer.close();
170
+ }
158
171
  }
159
172
  }
160
173
  /**
@@ -172,18 +185,37 @@ function createLoopbackIrohPair() {
172
185
  async getLocalTicket() {
173
186
  return ticket;
174
187
  },
175
- async connect(target) {
188
+ async openConnection(target) {
176
189
  if (target !== peerTicket) {
177
190
  throw new Error(`Unknown loopback peer ${target}`);
178
191
  }
179
- const local = new LoopbackStream();
180
- const remote = new LoopbackStream();
181
- local.peer = remote;
182
- remote.peer = local;
183
- for (const listener of remoteListeners) {
184
- listener(remote);
185
- }
186
- return local;
192
+ return {
193
+ async openStream() {
194
+ const local = new LoopbackStream();
195
+ const remote = new LoopbackStream();
196
+ local.peer = remote;
197
+ remote.peer = local;
198
+ for (const listener of remoteListeners) {
199
+ listener(remote);
200
+ }
201
+ return local;
202
+ },
203
+ async close() {
204
+ // Streams close independently; loopback has no shared socket.
205
+ },
206
+ };
207
+ },
208
+ async connect(target) {
209
+ const connection = await this.openConnection(target);
210
+ const stream = await connection.openStream();
211
+ return {
212
+ send: (bytes) => stream.send(bytes),
213
+ recv: () => stream.recv(),
214
+ close: async () => {
215
+ await stream.close();
216
+ await connection.close();
217
+ },
218
+ };
187
219
  },
188
220
  async *listen() {
189
221
  const pending = [];