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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nativeIrohStreamIO.js","sourceRoot":"","sources":["../../../src/node/server/nativeIrohStreamIO.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { StoreKind, type ContentAddressedStore } from "../../../core/types";
|
|
12
12
|
import { Logger } from "../../../core/logging";
|
|
13
13
|
import type { CryptoAdapter } from "../../../core/crypto/CryptoAdapter";
|
|
14
|
+
import type { IrohStreamIO } from "../../../core/appendonlystores/network/IrohStreamIO";
|
|
14
15
|
import type { TrustedServer } from "../types";
|
|
15
16
|
import type { SyncEventBus } from "../SyncEventBus";
|
|
16
17
|
import { PeerAuthService } from "./PeerAuthService";
|
|
@@ -43,6 +44,11 @@ export interface ClusterManagerDeps {
|
|
|
43
44
|
getLocalStore(tenantId: string, dbId: string, storeKind: StoreKind): Promise<ContentAddressedStore>;
|
|
44
45
|
/** This node's mesh role; `peer` unless config says hub or spoke. */
|
|
45
46
|
localRole?: PeerRole;
|
|
47
|
+
/**
|
|
48
|
+
* Bound Iroh endpoint for outbound peer dials. `null` until Iroh is online
|
|
49
|
+
* (or when `iroh.enabled` is off). Replicators treat that as a reconnect.
|
|
50
|
+
*/
|
|
51
|
+
getIrohStreamIO?: () => IrohStreamIO | null;
|
|
46
52
|
logger?: Logger;
|
|
47
53
|
}
|
|
48
54
|
export declare class ClusterManager {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterManager.d.ts","sourceRoot":"","sources":["../../../../src/node/server/peer/ClusterManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAoC,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAoC,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EAEnB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EACd,MAAM,SAAS,CAAC;AAEjB,iFAAiF;AACjF,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE,GACnC;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,gFAAgF;IAChF,kBAAkB,IAAI,aAAa,EAAE,CAAC;IACtC,kFAAkF;IAClF,eAAe,IAAI,MAAM,GAAG,IAAI,CAAC;IACjC,kEAAkE;IAClE,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAAC;IACvC,aAAa,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IAChD,gBAAgB,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;IACnD,WAAW,IAAI,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1C,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC,qEAAqE;IACrE,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,cAAc;IAoBb,OAAO,CAAC,QAAQ,CAAC,IAAI;IAnBjC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,IAAI,mBAA0B;IACvC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqC;IACjE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB;;;;;;;;;OASG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;gBAEvC,IAAI,EAAE,kBAAkB;IAQrD,OAAO,KAAK,SAAS,GAEpB;IAID;;;;;;OAMG;IACH,eAAe,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"ClusterManager.d.ts","sourceRoot":"","sources":["../../../../src/node/server/peer/ClusterManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,6 +78,7 @@ class ClusterManager {
|
|
|
78
78
|
listDatabases: (tenantId) => this.deps.listDatabases(tenantId),
|
|
79
79
|
getLocalStore: (tenantId, dbId, storeKind) => this.deps.getLocalStore(tenantId, dbId, storeKind),
|
|
80
80
|
eventBus: this.deps.eventBus,
|
|
81
|
+
getIrohStreamIO: this.deps.getIrohStreamIO,
|
|
81
82
|
logger: this.logger,
|
|
82
83
|
});
|
|
83
84
|
this.replicators.set(name, replicator);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterManager.js","sourceRoot":"","sources":["../../../../src/node/server/peer/ClusterManager.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAGH,mDAAiF;
|
|
1
|
+
{"version":3,"file":"ClusterManager.js","sourceRoot":"","sources":["../../../../src/node/server/peer/ClusterManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One QUIC connection to a trusted Iroh peer: control-plane RPCs and the
|
|
3
|
+
* change feed share the handshake; each in-flight call still owns its stream.
|
|
4
|
+
*/
|
|
5
|
+
import { type IrohByteStream, type IrohRpcContext, type IrohStreamIO } from "../../../core/appendonlystores/network/IrohStreamIO";
|
|
6
|
+
import type { SyncChangeEvent } from "../SyncEventBus";
|
|
7
|
+
export declare class IrohPeerLink {
|
|
8
|
+
private readonly io;
|
|
9
|
+
private readonly ticket;
|
|
10
|
+
private connection;
|
|
11
|
+
private nextId;
|
|
12
|
+
constructor(io: IrohStreamIO, ticket: string);
|
|
13
|
+
private ensureConnection;
|
|
14
|
+
rpc(method: string, args: unknown[], ctx?: IrohRpcContext): Promise<unknown>;
|
|
15
|
+
/**
|
|
16
|
+
* IO view that reuses this link's connection so
|
|
17
|
+
* {@link IrohNetworkTransport} does not open a second handshake.
|
|
18
|
+
*/
|
|
19
|
+
asStreamIO(): IrohStreamIO;
|
|
20
|
+
subscribeEvents(token: string, onEvent: (event: SyncChangeEvent) => void, signal: AbortSignal): Promise<void>;
|
|
21
|
+
close(): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
export type { IrohByteStream };
|
|
24
|
+
//# sourceMappingURL=IrohPeerLink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IrohPeerLink.d.ts","sourceRoot":"","sources":["../../../../src/node/server/peer/IrohPeerLink.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAIL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEnB,KAAK,YAAY,EAClB,MAAM,qDAAqD,CAAC;AAI7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,qBAAa,YAAY;IAKrB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,MAAM,CAAK;gBAGA,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM;YAGnB,gBAAgB;IAUxB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAUlF;;;OAGG;IACH,UAAU,IAAI,YAAY;IAWpB,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,EACzC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC;IA4CV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B;AAkBD,YAAY,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* One QUIC connection to a trusted Iroh peer: control-plane RPCs and the
|
|
4
|
+
* change feed share the handshake; each in-flight call still owns its stream.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.IrohPeerLink = void 0;
|
|
8
|
+
const IrohStreamIO_1 = require("../../../core/appendonlystores/network/IrohStreamIO");
|
|
9
|
+
const IrohNetworkTransport_1 = require("../../../core/appendonlystores/network/IrohNetworkTransport");
|
|
10
|
+
const types_1 = require("../../../core/appendonlystores/network/types");
|
|
11
|
+
const IrohServerRpc_1 = require("../IrohServerRpc");
|
|
12
|
+
class IrohPeerLink {
|
|
13
|
+
constructor(io, ticket) {
|
|
14
|
+
this.io = io;
|
|
15
|
+
this.ticket = ticket;
|
|
16
|
+
this.connection = null;
|
|
17
|
+
this.nextId = 1;
|
|
18
|
+
}
|
|
19
|
+
async ensureConnection() {
|
|
20
|
+
if (!this.io.openConnection) {
|
|
21
|
+
throw new Error("Iroh peer mesh requires IrohStreamIO.openConnection()");
|
|
22
|
+
}
|
|
23
|
+
if (!this.connection) {
|
|
24
|
+
this.connection = this.io.openConnection(this.ticket, IrohStreamIO_1.MINDOODB_IROH_ALPN);
|
|
25
|
+
}
|
|
26
|
+
return this.connection;
|
|
27
|
+
}
|
|
28
|
+
async rpc(method, args, ctx) {
|
|
29
|
+
const connection = await this.ensureConnection();
|
|
30
|
+
const stream = await connection.openStream();
|
|
31
|
+
try {
|
|
32
|
+
return await (0, IrohNetworkTransport_1.rpcCall)(stream, method, args, this.nextId++, ctx);
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
await stream.close();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* IO view that reuses this link's connection so
|
|
40
|
+
* {@link IrohNetworkTransport} does not open a second handshake.
|
|
41
|
+
*/
|
|
42
|
+
asStreamIO() {
|
|
43
|
+
return {
|
|
44
|
+
getLocalTicket: () => this.io.getLocalTicket(),
|
|
45
|
+
connect: async () => {
|
|
46
|
+
const connection = await this.ensureConnection();
|
|
47
|
+
return connection.openStream();
|
|
48
|
+
},
|
|
49
|
+
openConnection: () => this.ensureConnection(),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
async subscribeEvents(token, onEvent, signal) {
|
|
53
|
+
const connection = await this.ensureConnection();
|
|
54
|
+
const stream = await connection.openStream();
|
|
55
|
+
const onAbort = () => {
|
|
56
|
+
void stream.close();
|
|
57
|
+
};
|
|
58
|
+
if (signal.aborted) {
|
|
59
|
+
await stream.close();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
63
|
+
try {
|
|
64
|
+
await stream.send((0, IrohStreamIO_1.encodeIrohFrame)({
|
|
65
|
+
id: this.nextId++,
|
|
66
|
+
method: "peer.subscribeEvents",
|
|
67
|
+
args: [token],
|
|
68
|
+
}));
|
|
69
|
+
const ackBytes = await stream.recv();
|
|
70
|
+
if (!ackBytes) {
|
|
71
|
+
throw new types_1.NetworkError(types_1.NetworkErrorType.NETWORK_ERROR, "Iroh stream closed");
|
|
72
|
+
}
|
|
73
|
+
const ack = (0, IrohStreamIO_1.decodeIrohFrame)(ackBytes);
|
|
74
|
+
if (!ack.ok) {
|
|
75
|
+
throw new types_1.NetworkError(types_1.NetworkErrorType.NETWORK_ERROR, ack.error ?? "Iroh RPC failed");
|
|
76
|
+
}
|
|
77
|
+
while (!signal.aborted) {
|
|
78
|
+
const bytes = await stream.recv();
|
|
79
|
+
if (!bytes) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const frame = (0, IrohStreamIO_1.decodeIrohFrame)(bytes);
|
|
83
|
+
if (isHeartbeat(frame) || !isPeerChangeEvent(frame)) {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
onEvent(frame);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
signal.removeEventListener("abort", onAbort);
|
|
91
|
+
await stream.close();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async close() {
|
|
95
|
+
const pending = this.connection;
|
|
96
|
+
this.connection = null;
|
|
97
|
+
if (pending) {
|
|
98
|
+
await (await pending).close();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.IrohPeerLink = IrohPeerLink;
|
|
103
|
+
function isHeartbeat(value) {
|
|
104
|
+
return Boolean(value &&
|
|
105
|
+
typeof value === "object" &&
|
|
106
|
+
value.type === IrohServerRpc_1.IROH_CHANGE_FEED_HEARTBEAT.type);
|
|
107
|
+
}
|
|
108
|
+
function isPeerChangeEvent(value) {
|
|
109
|
+
if (!value || typeof value !== "object") {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
const event = value;
|
|
113
|
+
return typeof event.tenantId === "string" && typeof event.dbId === "string";
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=IrohPeerLink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IrohPeerLink.js","sourceRoot":"","sources":["../../../../src/node/server/peer/IrohPeerLink.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
* 3. **Receipts are preserved, not re-stamped.** Enforced on the receiving side
|
|
30
30
|
* in `ServerNetworkContentAddressedStore`; this side just transports.
|
|
31
31
|
*/
|
|
32
|
+
import type { IrohStreamIO } from "../../../core/appendonlystores/network/IrohStreamIO";
|
|
32
33
|
import { StoreKind, type ContentAddressedStore } from "../../../core/types";
|
|
33
34
|
import type { CryptoAdapter } from "../../../core/crypto/CryptoAdapter";
|
|
34
35
|
import { Logger } from "../../../core/logging";
|
|
@@ -55,6 +56,8 @@ export interface PeerReplicatorHost {
|
|
|
55
56
|
/** Local store for a (tenant, db, kind) triple, created on demand. */
|
|
56
57
|
getLocalStore(tenantId: string, dbId: string, storeKind: StoreKind): Promise<ContentAddressedStore>;
|
|
57
58
|
eventBus: SyncEventBus;
|
|
59
|
+
/** Bound Iroh endpoint for `iroh:` peer urls. Missing / null → reconnect. */
|
|
60
|
+
getIrohStreamIO?: () => IrohStreamIO | null;
|
|
58
61
|
logger?: Logger;
|
|
59
62
|
}
|
|
60
63
|
export interface PeerSyncScope {
|
|
@@ -98,6 +101,7 @@ export declare class PeerReplicator {
|
|
|
98
101
|
private reconnectTimer;
|
|
99
102
|
private reconnectAttempt;
|
|
100
103
|
private sseAbort;
|
|
104
|
+
private irohLink;
|
|
101
105
|
private unsubscribeBus;
|
|
102
106
|
private lastError;
|
|
103
107
|
private lastErrorClass;
|
|
@@ -127,7 +131,10 @@ export declare class PeerReplicator {
|
|
|
127
131
|
private scheduleReconnect;
|
|
128
132
|
private ensureToken;
|
|
129
133
|
private authenticate;
|
|
134
|
+
private isIrohPeer;
|
|
135
|
+
private getIrohLink;
|
|
130
136
|
private peerFetch;
|
|
137
|
+
private irohPeerFetch;
|
|
131
138
|
/**
|
|
132
139
|
* Recompute the set of tenants both servers host.
|
|
133
140
|
*
|
|
@@ -200,7 +207,9 @@ export declare class PeerReplicator {
|
|
|
200
207
|
private flushScopes;
|
|
201
208
|
private startEventStream;
|
|
202
209
|
private consumeEventStream;
|
|
210
|
+
private consumeIrohEventStream;
|
|
203
211
|
private handleEventFrame;
|
|
212
|
+
private handleChangeEvent;
|
|
204
213
|
private recordError;
|
|
205
214
|
/**
|
|
206
215
|
* Status snapshot for `GET /system/cluster/status`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PeerReplicator.d.ts","sourceRoot":"","sources":["../../../../src/node/server/peer/PeerReplicator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;
|
|
1
|
+
{"version":3,"file":"PeerReplicator.d.ts","sourceRoot":"","sources":["../../../../src/node/server/peer/PeerReplicator.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,8 +35,11 @@ exports.PeerReplicator = void 0;
|
|
|
35
35
|
exports.rollUpHealth = rollUpHealth;
|
|
36
36
|
const HttpTransport_1 = require("../../../appendonlystores/network/HttpTransport");
|
|
37
37
|
const ClientNetworkContentAddressedStore_1 = require("../../../appendonlystores/network/ClientNetworkContentAddressedStore");
|
|
38
|
+
const IrohNetworkTransport_1 = require("../../../core/appendonlystores/network/IrohNetworkTransport");
|
|
39
|
+
const irohLocator_1 = require("../../../core/appendonlystores/network/irohLocator");
|
|
38
40
|
const types_1 = require("../../../core/types");
|
|
39
41
|
const types_2 = require("../../../core/appendonlystores/network/types");
|
|
42
|
+
const IrohPeerLink_1 = require("./IrohPeerLink");
|
|
40
43
|
const logging_1 = require("../../../core/logging");
|
|
41
44
|
const bloom_1 = require("../../../core/appendonlystores/bloom");
|
|
42
45
|
const syncStores_1 = require("../../../core/appendonlystores/syncStores");
|
|
@@ -69,6 +72,7 @@ class PeerReplicator {
|
|
|
69
72
|
this.reconnectTimer = null;
|
|
70
73
|
this.reconnectAttempt = 0;
|
|
71
74
|
this.sseAbort = null;
|
|
75
|
+
this.irohLink = null;
|
|
72
76
|
this.unsubscribeBus = null;
|
|
73
77
|
this.lastError = null;
|
|
74
78
|
this.lastErrorClass = null;
|
|
@@ -109,6 +113,8 @@ class PeerReplicator {
|
|
|
109
113
|
// Identity or endpoint may have changed; force a fresh session.
|
|
110
114
|
this.token = null;
|
|
111
115
|
this.tokenIssuedAt = 0;
|
|
116
|
+
void this.irohLink?.close();
|
|
117
|
+
this.irohLink = null;
|
|
112
118
|
}
|
|
113
119
|
/** Roles and endpoint, for `GET /system/cluster/topology`. */
|
|
114
120
|
topologyEntry() {
|
|
@@ -167,6 +173,8 @@ class PeerReplicator {
|
|
|
167
173
|
this.sseAbort?.abort();
|
|
168
174
|
this.sseAbort = null;
|
|
169
175
|
this.eventsConnected = false;
|
|
176
|
+
void this.irohLink?.close();
|
|
177
|
+
this.irohLink = null;
|
|
170
178
|
this.sessionState = "disabled";
|
|
171
179
|
try {
|
|
172
180
|
await this.syncInFlight;
|
|
@@ -263,10 +271,31 @@ class PeerReplicator {
|
|
|
263
271
|
this.sessionState = "connected";
|
|
264
272
|
return this.token;
|
|
265
273
|
}
|
|
274
|
+
isIrohPeer() {
|
|
275
|
+
return typeof this.peer.url === "string" && (0, irohLocator_1.isIrohLocator)(this.peer.url);
|
|
276
|
+
}
|
|
277
|
+
async getIrohLink() {
|
|
278
|
+
if (this.irohLink) {
|
|
279
|
+
return this.irohLink;
|
|
280
|
+
}
|
|
281
|
+
const io = this.host.getIrohStreamIO?.() ?? null;
|
|
282
|
+
if (!io) {
|
|
283
|
+
throw new Error(`Iroh peer ${this.peer.name} requires iroh.enabled and a ready Iroh endpoint`);
|
|
284
|
+
}
|
|
285
|
+
const parsed = (0, irohLocator_1.parseIrohLocator)(this.peer.url);
|
|
286
|
+
if (!parsed.ticket) {
|
|
287
|
+
throw new Error(`Iroh peer ${this.peer.name} url is an endpoint id only; store a full ticket to dial`);
|
|
288
|
+
}
|
|
289
|
+
this.irohLink = new IrohPeerLink_1.IrohPeerLink(io, parsed.ticket);
|
|
290
|
+
return this.irohLink;
|
|
291
|
+
}
|
|
266
292
|
async peerFetch(path, init = {}) {
|
|
267
293
|
const base = this.peer.url;
|
|
268
294
|
if (!base)
|
|
269
295
|
throw new Error(`Peer ${this.peer.name} has no url`);
|
|
296
|
+
if (this.isIrohPeer()) {
|
|
297
|
+
return this.irohPeerFetch(path, init);
|
|
298
|
+
}
|
|
270
299
|
const headers = { "Content-Type": "application/json" };
|
|
271
300
|
if (init.authenticated !== false) {
|
|
272
301
|
headers.Authorization = `Bearer ${await this.ensureToken()}`;
|
|
@@ -288,6 +317,41 @@ class PeerReplicator {
|
|
|
288
317
|
}
|
|
289
318
|
return response.json();
|
|
290
319
|
}
|
|
320
|
+
async irohPeerFetch(path, init) {
|
|
321
|
+
const link = await this.getIrohLink();
|
|
322
|
+
const body = (init.body ?? {});
|
|
323
|
+
try {
|
|
324
|
+
if (path === "/system/peer/challenge") {
|
|
325
|
+
return await link.rpc("peer.challenge", [body.publicsignkey]);
|
|
326
|
+
}
|
|
327
|
+
if (path === "/system/peer/authenticate") {
|
|
328
|
+
const signature = body.signature;
|
|
329
|
+
const bytes = signature instanceof Uint8Array
|
|
330
|
+
? signature
|
|
331
|
+
: new Uint8Array(Buffer.from(String(signature ?? ""), "base64"));
|
|
332
|
+
return await link.rpc("peer.authenticate", [body.challenge, bytes]);
|
|
333
|
+
}
|
|
334
|
+
const token = init.authenticated !== false ? await this.ensureToken() : "";
|
|
335
|
+
if (path === "/system/peer/tenant-bloom") {
|
|
336
|
+
return await link.rpc("peer.tenantBloom", [token, body.bloom]);
|
|
337
|
+
}
|
|
338
|
+
if (path.startsWith("/system/peer/databases")) {
|
|
339
|
+
const tenantId = new URL(`http://peer${path}`).searchParams.get("tenantId") ?? "";
|
|
340
|
+
return await link.rpc("peer.listDatabases", [token, tenantId]);
|
|
341
|
+
}
|
|
342
|
+
if (path === "/system/peer/sync") {
|
|
343
|
+
return await link.rpc("peer.sync", [token, body]);
|
|
344
|
+
}
|
|
345
|
+
throw new Error(`No Iroh mapping for ${path}`);
|
|
346
|
+
}
|
|
347
|
+
catch (error) {
|
|
348
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
349
|
+
if (/Invalid or expired peer token|Unknown peer|Authentication failed/i.test(message)) {
|
|
350
|
+
this.token = null;
|
|
351
|
+
}
|
|
352
|
+
throw new Error(`Peer ${this.peer.name} ${path} failed: ${message}`);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
291
355
|
// ----------------------------------------------------------- intersection
|
|
292
356
|
/**
|
|
293
357
|
* Recompute the set of tenants both servers host.
|
|
@@ -583,12 +647,18 @@ class PeerReplicator {
|
|
|
583
647
|
// sync under `/:tenantId/sync/*`. Passing the bare server url — as the old
|
|
584
648
|
// per-tenant ServerSync did — makes every request land on `/sync/...`,
|
|
585
649
|
// where Express reads "sync" as the tenant id and answers 404.
|
|
586
|
-
const transport =
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
650
|
+
const transport = this.isIrohPeer()
|
|
651
|
+
? new IrohNetworkTransport_1.IrohNetworkTransport((await this.getIrohLink()).asStreamIO(), (0, irohLocator_1.parseIrohLocator)(this.peer.url).ticket, {
|
|
652
|
+
tenantId,
|
|
653
|
+
dbId,
|
|
654
|
+
storeKind,
|
|
655
|
+
})
|
|
656
|
+
: new HttpTransport_1.HttpTransport({
|
|
657
|
+
baseUrl: `${this.peer.url.replace(/\/$/, "")}/${encodeURIComponent(tenantId)}`,
|
|
658
|
+
tenantId,
|
|
659
|
+
dbId,
|
|
660
|
+
storeKind,
|
|
661
|
+
});
|
|
592
662
|
const store = new ClientNetworkContentAddressedStore_1.ClientNetworkContentAddressedStore(dbId, storeKind, transport, this.host.cryptoAdapter, this.host.localServerName, signingKey, encryptionKey, this.logger);
|
|
593
663
|
// The tenant handshake would fail: a peer holds no per-tenant grant. It
|
|
594
664
|
// carries the cluster-level peer token instead.
|
|
@@ -667,6 +737,10 @@ class PeerReplicator {
|
|
|
667
737
|
});
|
|
668
738
|
}
|
|
669
739
|
async consumeEventStream(controller) {
|
|
740
|
+
if (this.isIrohPeer()) {
|
|
741
|
+
await this.consumeIrohEventStream(controller);
|
|
742
|
+
return;
|
|
743
|
+
}
|
|
670
744
|
const base = this.peer.url;
|
|
671
745
|
const token = await this.ensureToken();
|
|
672
746
|
const response = await fetch(`${base.replace(/\/$/, "")}/system/peer/events`, {
|
|
@@ -706,6 +780,26 @@ class PeerReplicator {
|
|
|
706
780
|
}
|
|
707
781
|
}
|
|
708
782
|
}
|
|
783
|
+
async consumeIrohEventStream(controller) {
|
|
784
|
+
const link = await this.getIrohLink();
|
|
785
|
+
const token = await this.ensureToken();
|
|
786
|
+
this.sessionState = "connected";
|
|
787
|
+
this.eventsConnected = true;
|
|
788
|
+
this.reconnectAttempt = 0;
|
|
789
|
+
try {
|
|
790
|
+
await link.subscribeEvents(token, (event) => this.handleChangeEvent(event), controller.signal);
|
|
791
|
+
}
|
|
792
|
+
finally {
|
|
793
|
+
if (this.sseAbort === controller) {
|
|
794
|
+
this.sseAbort = null;
|
|
795
|
+
this.eventsConnected = false;
|
|
796
|
+
if (this.running && !this.paused && !controller.signal.aborted) {
|
|
797
|
+
void this.syncNow().catch(() => undefined);
|
|
798
|
+
this.scheduleReconnect();
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
}
|
|
709
803
|
handleEventFrame(frame) {
|
|
710
804
|
const dataLine = frame
|
|
711
805
|
.split("\n")
|
|
@@ -719,6 +813,9 @@ class PeerReplicator {
|
|
|
719
813
|
catch {
|
|
720
814
|
return;
|
|
721
815
|
}
|
|
816
|
+
this.handleChangeEvent(event);
|
|
817
|
+
}
|
|
818
|
+
handleChangeEvent(event) {
|
|
722
819
|
if (!event.tenantId || !event.dbId)
|
|
723
820
|
return;
|
|
724
821
|
if (!this.intersection.includes(event.tenantId))
|