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.
- package/README-server.md +13 -3
- package/README.md +1 -0
- package/dist/core/appendonlystores/network/IrohNetworkTransport.d.ts +10 -0
- package/dist/core/appendonlystores/network/IrohNetworkTransport.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/IrohNetworkTransport.js +186 -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/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 +38 -0
- package/dist/node/server/IrohServerRpc.d.ts.map +1 -1
- package/dist/node/server/IrohServerRpc.js +266 -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 +29 -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
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` |
|
|
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
|
|
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":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,EACrB,gCAAgC,EAChC,2BAA2B,EAC3B,0BAA0B,EAC1B,aAAa,EACb,SAAS,EACV,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,
|
|
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
|
-
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
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
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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
|
-
|
|
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
|
-
|
|
235
|
-
|
|
236
|
-
|
|
375
|
+
while (true) {
|
|
376
|
+
const next = await stream.recv();
|
|
377
|
+
if (!next) {
|
|
378
|
+
break;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
237
381
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
await
|
|
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
|
|
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(
|
|
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
|
|
188
|
+
async openConnection(target) {
|
|
176
189
|
if (target !== peerTicket) {
|
|
177
190
|
throw new Error(`Unknown loopback peer ${target}`);
|
|
178
191
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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 = [];
|