@meshwhisper/sdk 0.1.0
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.md +138 -0
- package/dist/browser/index.d.ts +4 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +19 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/chaff/index.d.ts +91 -0
- package/dist/chaff/index.d.ts.map +1 -0
- package/dist/chaff/index.js +268 -0
- package/dist/chaff/index.js.map +1 -0
- package/dist/cluster/index.d.ts +159 -0
- package/dist/cluster/index.d.ts.map +1 -0
- package/dist/cluster/index.js +393 -0
- package/dist/cluster/index.js.map +1 -0
- package/dist/compliance/index.d.ts +129 -0
- package/dist/compliance/index.d.ts.map +1 -0
- package/dist/compliance/index.js +315 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/crypto/index.d.ts +65 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +146 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/group/index.d.ts +155 -0
- package/dist/group/index.d.ts.map +1 -0
- package/dist/group/index.js +560 -0
- package/dist/group/index.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/namespace/index.d.ts +155 -0
- package/dist/namespace/index.d.ts.map +1 -0
- package/dist/namespace/index.js +278 -0
- package/dist/namespace/index.js.map +1 -0
- package/dist/node/index.d.ts +4 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +19 -0
- package/dist/node/index.js.map +1 -0
- package/dist/packet/index.d.ts +63 -0
- package/dist/packet/index.d.ts.map +1 -0
- package/dist/packet/index.js +244 -0
- package/dist/packet/index.js.map +1 -0
- package/dist/permissions/index.d.ts +107 -0
- package/dist/permissions/index.d.ts.map +1 -0
- package/dist/permissions/index.js +282 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/persistence/idb-storage.d.ts +27 -0
- package/dist/persistence/idb-storage.d.ts.map +1 -0
- package/dist/persistence/idb-storage.js +75 -0
- package/dist/persistence/idb-storage.js.map +1 -0
- package/dist/persistence/index.d.ts +4 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +3 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/node-storage.d.ts +33 -0
- package/dist/persistence/node-storage.d.ts.map +1 -0
- package/dist/persistence/node-storage.js +90 -0
- package/dist/persistence/node-storage.js.map +1 -0
- package/dist/persistence/serialization.d.ts +4 -0
- package/dist/persistence/serialization.d.ts.map +1 -0
- package/dist/persistence/serialization.js +49 -0
- package/dist/persistence/serialization.js.map +1 -0
- package/dist/persistence/types.d.ts +29 -0
- package/dist/persistence/types.d.ts.map +1 -0
- package/dist/persistence/types.js +5 -0
- package/dist/persistence/types.js.map +1 -0
- package/dist/ratchet/index.d.ts +80 -0
- package/dist/ratchet/index.d.ts.map +1 -0
- package/dist/ratchet/index.js +259 -0
- package/dist/ratchet/index.js.map +1 -0
- package/dist/reciprocity/index.d.ts +109 -0
- package/dist/reciprocity/index.d.ts.map +1 -0
- package/dist/reciprocity/index.js +311 -0
- package/dist/reciprocity/index.js.map +1 -0
- package/dist/relay/index.d.ts +87 -0
- package/dist/relay/index.d.ts.map +1 -0
- package/dist/relay/index.js +286 -0
- package/dist/relay/index.js.map +1 -0
- package/dist/routing/index.d.ts +136 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +478 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/sdk/index.d.ts +322 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +1530 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sybil/index.d.ts +123 -0
- package/dist/sybil/index.d.ts.map +1 -0
- package/dist/sybil/index.js +491 -0
- package/dist/sybil/index.js.map +1 -0
- package/dist/transport/browser/index.d.ts +34 -0
- package/dist/transport/browser/index.d.ts.map +1 -0
- package/dist/transport/browser/index.js +176 -0
- package/dist/transport/browser/index.js.map +1 -0
- package/dist/transport/local/index.d.ts +57 -0
- package/dist/transport/local/index.d.ts.map +1 -0
- package/dist/transport/local/index.js +442 -0
- package/dist/transport/local/index.js.map +1 -0
- package/dist/transport/negotiator/index.d.ts +79 -0
- package/dist/transport/negotiator/index.d.ts.map +1 -0
- package/dist/transport/negotiator/index.js +289 -0
- package/dist/transport/negotiator/index.js.map +1 -0
- package/dist/transport/node/index.d.ts +56 -0
- package/dist/transport/node/index.d.ts.map +1 -0
- package/dist/transport/node/index.js +209 -0
- package/dist/transport/node/index.js.map +1 -0
- package/dist/transport/noop/index.d.ts +11 -0
- package/dist/transport/noop/index.d.ts.map +1 -0
- package/dist/transport/noop/index.js +20 -0
- package/dist/transport/noop/index.js.map +1 -0
- package/dist/transport/p2p/index.d.ts +109 -0
- package/dist/transport/p2p/index.d.ts.map +1 -0
- package/dist/transport/p2p/index.js +237 -0
- package/dist/transport/p2p/index.js.map +1 -0
- package/dist/transport/websocket/index.d.ts +89 -0
- package/dist/transport/websocket/index.d.ts.map +1 -0
- package/dist/transport/websocket/index.js +498 -0
- package/dist/transport/websocket/index.js.map +1 -0
- package/dist/transport/websocket/serialize.d.ts +5 -0
- package/dist/transport/websocket/serialize.d.ts.map +1 -0
- package/dist/transport/websocket/serialize.js +55 -0
- package/dist/transport/websocket/serialize.js.map +1 -0
- package/dist/types.d.ts +215 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +15 -0
- package/dist/types.js.map +1 -0
- package/dist/x3dh/index.d.ts +120 -0
- package/dist/x3dh/index.d.ts.map +1 -0
- package/dist/x3dh/index.js +290 -0
- package/dist/x3dh/index.js.map +1 -0
- package/package.json +59 -0
- package/src/browser/index.ts +19 -0
- package/src/chaff/index.ts +340 -0
- package/src/cluster/index.ts +482 -0
- package/src/compliance/index.ts +407 -0
- package/src/crypto/index.ts +193 -0
- package/src/group/index.ts +719 -0
- package/src/index.ts +87 -0
- package/src/lz4js.d.ts +58 -0
- package/src/namespace/index.ts +336 -0
- package/src/node/index.ts +19 -0
- package/src/packet/index.ts +326 -0
- package/src/permissions/index.ts +405 -0
- package/src/persistence/idb-storage.ts +83 -0
- package/src/persistence/index.ts +3 -0
- package/src/persistence/node-storage.ts +96 -0
- package/src/persistence/serialization.ts +75 -0
- package/src/persistence/types.ts +33 -0
- package/src/ratchet/index.ts +363 -0
- package/src/reciprocity/index.ts +371 -0
- package/src/relay/index.ts +382 -0
- package/src/routing/index.ts +577 -0
- package/src/sdk/index.ts +1994 -0
- package/src/sybil/index.ts +661 -0
- package/src/transport/browser/index.ts +201 -0
- package/src/transport/local/index.ts +540 -0
- package/src/transport/negotiator/index.ts +397 -0
- package/src/transport/node/index.ts +234 -0
- package/src/transport/noop/index.ts +22 -0
- package/src/transport/p2p/index.ts +345 -0
- package/src/transport/websocket/index.ts +660 -0
- package/src/transport/websocket/serialize.ts +68 -0
- package/src/types.ts +275 -0
- package/src/x3dh/index.ts +388 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transport/local/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { Transport, Packet, DeviceCapability, BearerType, BatteryState, RelayWillingness } from '../../types.js';
|
|
2
|
+
declare const MAX_PAYLOAD_SIZE = 65535;
|
|
3
|
+
declare const FRAGMENT_HEADER_SIZE = 8;
|
|
4
|
+
declare const MAX_FRAGMENT_PAYLOAD: number;
|
|
5
|
+
/** Priority map — lower number = higher priority. */
|
|
6
|
+
declare const BEARER_PRIORITY: Record<BearerType, number>;
|
|
7
|
+
export interface FragmentHeader {
|
|
8
|
+
fragmentId: number;
|
|
9
|
+
fragmentIndex: number;
|
|
10
|
+
totalFragments: number;
|
|
11
|
+
}
|
|
12
|
+
declare function encodeFragmentHeader(header: FragmentHeader): Uint8Array;
|
|
13
|
+
declare function decodeFragmentHeader(data: Uint8Array): FragmentHeader;
|
|
14
|
+
export type NegotiatorReceiveCallback = (packet: Packet, source: string, bearer: BearerType) => void;
|
|
15
|
+
export declare class BearerNegotiator {
|
|
16
|
+
private readonly transports;
|
|
17
|
+
private receiveCallback;
|
|
18
|
+
private fragmentIdCounter;
|
|
19
|
+
constructor(transports?: Transport[]);
|
|
20
|
+
/**
|
|
21
|
+
* Register a transport and wire its onReceive into the aggregated handler.
|
|
22
|
+
* If a transport with the same bearer type was already registered it is replaced.
|
|
23
|
+
*/
|
|
24
|
+
registerTransport(transport: Transport): void;
|
|
25
|
+
/**
|
|
26
|
+
* Probe every registered transport for availability and build a capability
|
|
27
|
+
* advertisement that can be shared with peers.
|
|
28
|
+
*/
|
|
29
|
+
probeAvailability(): Promise<DeviceCapability>;
|
|
30
|
+
/**
|
|
31
|
+
* Return all registered transports sorted by priority (highest first).
|
|
32
|
+
* Only includes transports whose isAvailable() resolved to true.
|
|
33
|
+
*/
|
|
34
|
+
getAvailableTransports(): Transport[];
|
|
35
|
+
/**
|
|
36
|
+
* Select the highest-priority transport that is currently available and can
|
|
37
|
+
* reach `destination`. Falls back through all registered transports.
|
|
38
|
+
*/
|
|
39
|
+
selectTransport(destination: string): Promise<Transport | null>;
|
|
40
|
+
/**
|
|
41
|
+
* Send a packet via the best available transport for the given destination.
|
|
42
|
+
* Throws if no transport is available.
|
|
43
|
+
*/
|
|
44
|
+
send(packet: Packet, destination: string): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Broadcast a packet across **all** available transports concurrently.
|
|
47
|
+
* Errors on individual transports are suppressed so a single failure
|
|
48
|
+
* does not prevent delivery on other bearers.
|
|
49
|
+
*/
|
|
50
|
+
broadcast(packet: Packet): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Fragment a large payload across available bearers. Each fragment is
|
|
53
|
+
* wrapped in its own Packet with a fragment header prepended to the
|
|
54
|
+
* encrypted payload field.
|
|
55
|
+
*/
|
|
56
|
+
sendLargePayload(destHash: Uint8Array, senderEphId: Uint8Array, payload: Uint8Array, destination: string): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Reassemble fragments into the original payload.
|
|
59
|
+
* Returns `null` if any fragment is missing.
|
|
60
|
+
*/
|
|
61
|
+
reassembleFragments(fragments: Map<number, Uint8Array>, totalFragments: number): Uint8Array | null;
|
|
62
|
+
/**
|
|
63
|
+
* Compute how willing this device should be to act as a relay node based
|
|
64
|
+
* on battery state, current bearer, and reciprocity with the requesting peer.
|
|
65
|
+
*/
|
|
66
|
+
computeRelayWillingness(batteryState: BatteryState, currentBearer: BearerType, reciprocityScore: number): RelayWillingness;
|
|
67
|
+
/**
|
|
68
|
+
* Register a single callback that receives packets from **all** registered
|
|
69
|
+
* transports, tagged with the bearer type they arrived on.
|
|
70
|
+
*
|
|
71
|
+
* Only one callback is active at a time — calling this again replaces the
|
|
72
|
+
* previous handler.
|
|
73
|
+
*/
|
|
74
|
+
onReceive(callback: NegotiatorReceiveCallback): void;
|
|
75
|
+
private nextFragmentId;
|
|
76
|
+
}
|
|
77
|
+
export { MAX_PAYLOAD_SIZE, MAX_FRAGMENT_PAYLOAD, FRAGMENT_HEADER_SIZE, BEARER_PRIORITY, encodeFragmentHeader, decodeFragmentHeader, };
|
|
78
|
+
export type { FragmentHeader as FragmentHeaderType };
|
|
79
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transport/negotiator/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAKxB,QAAA,MAAM,gBAAgB,QAAQ,CAAC;AAC/B,QAAA,MAAM,oBAAoB,IAAI,CAAC;AAC/B,QAAA,MAAM,oBAAoB,QAA0C,CAAC;AAErE,qDAAqD;AACrD,QAAA,MAAM,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAI/C,CAAC;AAIF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAOhE;AAED,iBAAS,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAU9D;AAID,MAAM,MAAM,yBAAyB,GAAG,CACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,KACf,IAAI,CAAC;AAIV,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyC;IACpE,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,iBAAiB,CAAK;gBAElB,UAAU,GAAE,SAAS,EAAO;IAQxC;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAU7C;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAgCpD;;;OAGG;IACH,sBAAsB,IAAI,SAAS,EAAE;IAQrC;;;OAGG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAmBrE;;;OAGG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9D;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9C;;;;OAIG;IACG,gBAAgB,CACpB,QAAQ,EAAE,UAAU,EACpB,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IA4DhB;;;OAGG;IACH,mBAAmB,CACjB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAClC,cAAc,EAAE,MAAM,GACrB,UAAU,GAAG,IAAI;IAgCpB;;;OAGG;IACH,uBAAuB,CACrB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,UAAU,EACzB,gBAAgB,EAAE,MAAM,GACvB,gBAAgB;IAwCnB;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAMpD,OAAO,CAAC,cAAc;CAKvB;AAID,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,GACrB,CAAC;AAEF,YAAY,EAAE,cAAc,IAAI,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// MeshWhisper SDK — Bearer Negotiator
|
|
3
|
+
// Bearer-agnostic transport layer that selects the best
|
|
4
|
+
// available channel automatically with hybrid fragmentation.
|
|
5
|
+
// ============================================================
|
|
6
|
+
import { PacketFlags } from '../../types.js';
|
|
7
|
+
// --- Constants ---
|
|
8
|
+
const MAX_PAYLOAD_SIZE = 65535;
|
|
9
|
+
const FRAGMENT_HEADER_SIZE = 8; // fragmentId(4) + fragmentIndex(2) + totalFragments(2)
|
|
10
|
+
const MAX_FRAGMENT_PAYLOAD = MAX_PAYLOAD_SIZE - FRAGMENT_HEADER_SIZE;
|
|
11
|
+
/** Priority map — lower number = higher priority. */
|
|
12
|
+
const BEARER_PRIORITY = {
|
|
13
|
+
platform_p2p: 0,
|
|
14
|
+
local_net: 1,
|
|
15
|
+
internet: 2,
|
|
16
|
+
};
|
|
17
|
+
function encodeFragmentHeader(header) {
|
|
18
|
+
const buf = new Uint8Array(FRAGMENT_HEADER_SIZE);
|
|
19
|
+
const view = new DataView(buf.buffer);
|
|
20
|
+
view.setUint32(0, header.fragmentId, false);
|
|
21
|
+
view.setUint16(4, header.fragmentIndex, false);
|
|
22
|
+
view.setUint16(6, header.totalFragments, false);
|
|
23
|
+
return buf;
|
|
24
|
+
}
|
|
25
|
+
function decodeFragmentHeader(data) {
|
|
26
|
+
if (data.byteLength < FRAGMENT_HEADER_SIZE) {
|
|
27
|
+
throw new Error('Fragment header too short');
|
|
28
|
+
}
|
|
29
|
+
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
30
|
+
return {
|
|
31
|
+
fragmentId: view.getUint32(0, false),
|
|
32
|
+
fragmentIndex: view.getUint16(4, false),
|
|
33
|
+
totalFragments: view.getUint16(6, false),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// --- BearerNegotiator ---
|
|
37
|
+
export class BearerNegotiator {
|
|
38
|
+
transports = new Map();
|
|
39
|
+
receiveCallback = null;
|
|
40
|
+
fragmentIdCounter = 0;
|
|
41
|
+
constructor(transports = []) {
|
|
42
|
+
for (const t of transports) {
|
|
43
|
+
this.registerTransport(t);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// ---- Transport registration & probing ----
|
|
47
|
+
/**
|
|
48
|
+
* Register a transport and wire its onReceive into the aggregated handler.
|
|
49
|
+
* If a transport with the same bearer type was already registered it is replaced.
|
|
50
|
+
*/
|
|
51
|
+
registerTransport(transport) {
|
|
52
|
+
this.transports.set(transport.type, transport);
|
|
53
|
+
// Wire up receive aggregation — capture the bearer type at registration time.
|
|
54
|
+
const bearerType = transport.type;
|
|
55
|
+
transport.onReceive((packet, source) => {
|
|
56
|
+
this.receiveCallback?.(packet, source, bearerType);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Probe every registered transport for availability and build a capability
|
|
61
|
+
* advertisement that can be shared with peers.
|
|
62
|
+
*/
|
|
63
|
+
async probeAvailability() {
|
|
64
|
+
const results = await Promise.allSettled(Array.from(this.transports.entries()).map(async ([type, transport]) => ({
|
|
65
|
+
type,
|
|
66
|
+
available: await transport.isAvailable(),
|
|
67
|
+
})));
|
|
68
|
+
const availability = {
|
|
69
|
+
platform_p2p: false,
|
|
70
|
+
local_net: false,
|
|
71
|
+
internet: false,
|
|
72
|
+
};
|
|
73
|
+
for (const result of results) {
|
|
74
|
+
if (result.status === 'fulfilled') {
|
|
75
|
+
availability[result.value.type] = result.value.available;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Battery state and relay willingness are computed externally — defaults
|
|
79
|
+
// here represent a reasonable "unknown" baseline.
|
|
80
|
+
return {
|
|
81
|
+
bearerPlatformP2P: availability.platform_p2p,
|
|
82
|
+
bearerLocalNet: availability.local_net,
|
|
83
|
+
bearerInternet: availability.internet,
|
|
84
|
+
inboundConnectable: availability.internet || availability.local_net,
|
|
85
|
+
batteryState: 'high',
|
|
86
|
+
relayWillingness: 'willing',
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Return all registered transports sorted by priority (highest first).
|
|
91
|
+
* Only includes transports whose isAvailable() resolved to true.
|
|
92
|
+
*/
|
|
93
|
+
getAvailableTransports() {
|
|
94
|
+
return Array.from(this.transports.values()).sort((a, b) => BEARER_PRIORITY[a.type] - BEARER_PRIORITY[b.type]);
|
|
95
|
+
}
|
|
96
|
+
// ---- Best-path selection ----
|
|
97
|
+
/**
|
|
98
|
+
* Select the highest-priority transport that is currently available and can
|
|
99
|
+
* reach `destination`. Falls back through all registered transports.
|
|
100
|
+
*/
|
|
101
|
+
async selectTransport(destination) {
|
|
102
|
+
const sorted = this.getAvailableTransports();
|
|
103
|
+
for (const transport of sorted) {
|
|
104
|
+
try {
|
|
105
|
+
const available = await transport.isAvailable();
|
|
106
|
+
if (available) {
|
|
107
|
+
return transport;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// Transport probe failed — skip to next.
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
// ---- Smart sending ----
|
|
117
|
+
/**
|
|
118
|
+
* Send a packet via the best available transport for the given destination.
|
|
119
|
+
* Throws if no transport is available.
|
|
120
|
+
*/
|
|
121
|
+
async send(packet, destination) {
|
|
122
|
+
const transport = await this.selectTransport(destination);
|
|
123
|
+
if (!transport) {
|
|
124
|
+
throw new Error(`No available transport for destination: ${destination}`);
|
|
125
|
+
}
|
|
126
|
+
await transport.send(packet, destination);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Broadcast a packet across **all** available transports concurrently.
|
|
130
|
+
* Errors on individual transports are suppressed so a single failure
|
|
131
|
+
* does not prevent delivery on other bearers.
|
|
132
|
+
*/
|
|
133
|
+
async broadcast(packet) {
|
|
134
|
+
const transports = this.getAvailableTransports();
|
|
135
|
+
const results = await Promise.allSettled(transports.map(async (t) => {
|
|
136
|
+
const available = await t.isAvailable();
|
|
137
|
+
if (available) {
|
|
138
|
+
// Broadcast destination is empty string — the transport layer
|
|
139
|
+
// is expected to fan out to all known peers.
|
|
140
|
+
await t.send(packet, '');
|
|
141
|
+
}
|
|
142
|
+
}));
|
|
143
|
+
// If every transport failed, surface an error.
|
|
144
|
+
const allFailed = results.every((r) => r.status === 'rejected');
|
|
145
|
+
if (allFailed && results.length > 0) {
|
|
146
|
+
throw new Error('Broadcast failed on all available transports');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// ---- Hybrid fragmentation ----
|
|
150
|
+
/**
|
|
151
|
+
* Fragment a large payload across available bearers. Each fragment is
|
|
152
|
+
* wrapped in its own Packet with a fragment header prepended to the
|
|
153
|
+
* encrypted payload field.
|
|
154
|
+
*/
|
|
155
|
+
async sendLargePayload(destHash, senderEphId, payload, destination) {
|
|
156
|
+
const totalFragments = Math.ceil(payload.byteLength / MAX_FRAGMENT_PAYLOAD);
|
|
157
|
+
if (totalFragments > 0xffff) {
|
|
158
|
+
throw new Error('Payload too large: exceeds maximum fragment count');
|
|
159
|
+
}
|
|
160
|
+
const fragmentId = this.nextFragmentId();
|
|
161
|
+
const transports = this.getAvailableTransports();
|
|
162
|
+
const availableTransports = [];
|
|
163
|
+
for (const t of transports) {
|
|
164
|
+
try {
|
|
165
|
+
if (await t.isAvailable()) {
|
|
166
|
+
availableTransports.push(t);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
// skip
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (availableTransports.length === 0) {
|
|
174
|
+
throw new Error('No available transport for large payload delivery');
|
|
175
|
+
}
|
|
176
|
+
const sendPromises = [];
|
|
177
|
+
for (let i = 0; i < totalFragments; i++) {
|
|
178
|
+
const start = i * MAX_FRAGMENT_PAYLOAD;
|
|
179
|
+
const end = Math.min(start + MAX_FRAGMENT_PAYLOAD, payload.byteLength);
|
|
180
|
+
const chunk = payload.slice(start, end);
|
|
181
|
+
const header = encodeFragmentHeader({
|
|
182
|
+
fragmentId,
|
|
183
|
+
fragmentIndex: i,
|
|
184
|
+
totalFragments,
|
|
185
|
+
});
|
|
186
|
+
// Prepend fragment header to payload chunk.
|
|
187
|
+
const fragmentPayload = new Uint8Array(header.byteLength + chunk.byteLength);
|
|
188
|
+
fragmentPayload.set(header, 0);
|
|
189
|
+
fragmentPayload.set(chunk, header.byteLength);
|
|
190
|
+
const packet = {
|
|
191
|
+
version: 1,
|
|
192
|
+
flags: PacketFlags.DATA,
|
|
193
|
+
destHash,
|
|
194
|
+
senderEphemeralId: senderEphId,
|
|
195
|
+
ttl: 7,
|
|
196
|
+
payloadLength: fragmentPayload.byteLength,
|
|
197
|
+
encryptedPayload: fragmentPayload,
|
|
198
|
+
};
|
|
199
|
+
// Round-robin fragments across available bearers for hybrid delivery.
|
|
200
|
+
const transport = availableTransports[i % availableTransports.length];
|
|
201
|
+
sendPromises.push(transport.send(packet, destination));
|
|
202
|
+
}
|
|
203
|
+
await Promise.all(sendPromises);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Reassemble fragments into the original payload.
|
|
207
|
+
* Returns `null` if any fragment is missing.
|
|
208
|
+
*/
|
|
209
|
+
reassembleFragments(fragments, totalFragments) {
|
|
210
|
+
if (fragments.size !== totalFragments) {
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
// Validate all indices are present.
|
|
214
|
+
for (let i = 0; i < totalFragments; i++) {
|
|
215
|
+
if (!fragments.has(i)) {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Compute total length.
|
|
220
|
+
let totalLength = 0;
|
|
221
|
+
for (let i = 0; i < totalFragments; i++) {
|
|
222
|
+
totalLength += fragments.get(i).byteLength;
|
|
223
|
+
}
|
|
224
|
+
// Concatenate in order.
|
|
225
|
+
const result = new Uint8Array(totalLength);
|
|
226
|
+
let offset = 0;
|
|
227
|
+
for (let i = 0; i < totalFragments; i++) {
|
|
228
|
+
const chunk = fragments.get(i);
|
|
229
|
+
result.set(chunk, offset);
|
|
230
|
+
offset += chunk.byteLength;
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
// ---- Relay willingness computation ----
|
|
235
|
+
/**
|
|
236
|
+
* Compute how willing this device should be to act as a relay node based
|
|
237
|
+
* on battery state, current bearer, and reciprocity with the requesting peer.
|
|
238
|
+
*/
|
|
239
|
+
computeRelayWillingness(batteryState, currentBearer, reciprocityScore) {
|
|
240
|
+
// Reciprocity gate: if the peer is a free-rider, refuse regardless.
|
|
241
|
+
if (reciprocityScore < 0.1) {
|
|
242
|
+
return 'unavailable';
|
|
243
|
+
}
|
|
244
|
+
// Battery critically low — never relay.
|
|
245
|
+
if (batteryState === 'low' || batteryState === 'critical') {
|
|
246
|
+
return 'unavailable';
|
|
247
|
+
}
|
|
248
|
+
const onWifi = currentBearer === 'local_net' || currentBearer === 'platform_p2p';
|
|
249
|
+
// Charging + wifi-class bearer → eager.
|
|
250
|
+
if (batteryState === 'charging' && onWifi) {
|
|
251
|
+
return 'eager';
|
|
252
|
+
}
|
|
253
|
+
// High battery + wifi-class bearer → willing.
|
|
254
|
+
if (batteryState === 'high' && onWifi) {
|
|
255
|
+
return 'willing';
|
|
256
|
+
}
|
|
257
|
+
// Medium battery OR cellular bearer → reluctant.
|
|
258
|
+
if (batteryState === 'medium' || currentBearer === 'internet') {
|
|
259
|
+
return 'reluctant';
|
|
260
|
+
}
|
|
261
|
+
// Charging but on cellular.
|
|
262
|
+
if (batteryState === 'charging') {
|
|
263
|
+
return 'reluctant';
|
|
264
|
+
}
|
|
265
|
+
// Fallback: willing (high battery, non-wifi, non-internet — shouldn't
|
|
266
|
+
// normally occur but safe default).
|
|
267
|
+
return 'willing';
|
|
268
|
+
}
|
|
269
|
+
// ---- Event aggregation ----
|
|
270
|
+
/**
|
|
271
|
+
* Register a single callback that receives packets from **all** registered
|
|
272
|
+
* transports, tagged with the bearer type they arrived on.
|
|
273
|
+
*
|
|
274
|
+
* Only one callback is active at a time — calling this again replaces the
|
|
275
|
+
* previous handler.
|
|
276
|
+
*/
|
|
277
|
+
onReceive(callback) {
|
|
278
|
+
this.receiveCallback = callback;
|
|
279
|
+
}
|
|
280
|
+
// ---- Internal helpers ----
|
|
281
|
+
nextFragmentId() {
|
|
282
|
+
// Wrap at 32-bit unsigned max to stay within the 4-byte header field.
|
|
283
|
+
this.fragmentIdCounter = (this.fragmentIdCounter + 1) & 0xffffffff;
|
|
284
|
+
return this.fragmentIdCounter;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
// --- Re-exports for consumer convenience ---
|
|
288
|
+
export { MAX_PAYLOAD_SIZE, MAX_FRAGMENT_PAYLOAD, FRAGMENT_HEADER_SIZE, BEARER_PRIORITY, encodeFragmentHeader, decodeFragmentHeader, };
|
|
289
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transport/negotiator/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Transport, Packet, PushConfig } from '../../types.js';
|
|
2
|
+
/** Foundation-hosted relay nodes. Used when node config is "mesh". */
|
|
3
|
+
export declare const FOUNDATION_RELAY_NODES: string[];
|
|
4
|
+
/**
|
|
5
|
+
* Transport that connects to a MeshWhisper Node for relay and
|
|
6
|
+
* store-and-forward delivery.
|
|
7
|
+
*
|
|
8
|
+
* Sends a `hello` control message on connect to register the device's
|
|
9
|
+
* current destination hashes. The Node then routes incoming packets
|
|
10
|
+
* to the registered hashes and delivers any queued blobs.
|
|
11
|
+
*
|
|
12
|
+
* All outbound packets are forwarded to the Node regardless of the
|
|
13
|
+
* `destination` argument — the packet's destHash header field is what
|
|
14
|
+
* the Node uses for routing.
|
|
15
|
+
*/
|
|
16
|
+
export declare class NodeTransport implements Transport {
|
|
17
|
+
private readonly nodeUrl;
|
|
18
|
+
private readonly getDestHashes;
|
|
19
|
+
private pushConfig?;
|
|
20
|
+
readonly type: "internet";
|
|
21
|
+
private ws;
|
|
22
|
+
private receiveCallbacks;
|
|
23
|
+
private running;
|
|
24
|
+
private reconnectAttempt;
|
|
25
|
+
private reconnectTimer;
|
|
26
|
+
/**
|
|
27
|
+
* @param nodeUrl - The WebSocket URL of the Node, or "mesh" for Foundation nodes.
|
|
28
|
+
* @param getDestHashes - Callback returning the device's current dest hashes
|
|
29
|
+
* as hex strings. Called on every (re)connect so the Node always has
|
|
30
|
+
* up-to-date hashes.
|
|
31
|
+
* @param pushConfig - Optional push token to register with the Node so it can
|
|
32
|
+
* wake the device via APNs/FCM when a message arrives while offline.
|
|
33
|
+
*/
|
|
34
|
+
constructor(nodeUrl: string, getDestHashes: () => string[], pushConfig?: PushConfig | undefined);
|
|
35
|
+
start(): Promise<void>;
|
|
36
|
+
stop(): Promise<void>;
|
|
37
|
+
isAvailable(): Promise<boolean>;
|
|
38
|
+
send(packet: Packet, _destination: string): Promise<void>;
|
|
39
|
+
onReceive(callback: (packet: Packet, source: string) => void): void;
|
|
40
|
+
private resolveUrl;
|
|
41
|
+
private connect;
|
|
42
|
+
private scheduleReconnect;
|
|
43
|
+
private handleMessage;
|
|
44
|
+
/**
|
|
45
|
+
* Re-registers the device's destination hashes with the Node.
|
|
46
|
+
* Call this when the epoch hour rolls over and hashes rotate.
|
|
47
|
+
*/
|
|
48
|
+
refreshDestHashes(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Update the push token (e.g. after APNs/FCM issues a new token).
|
|
51
|
+
* Re-registers with the Node immediately if connected.
|
|
52
|
+
*/
|
|
53
|
+
setPushConfig(pushConfig: PushConfig | undefined): void;
|
|
54
|
+
private buildHello;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transport/node/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AASpE,sEAAsE;AACtE,eAAO,MAAM,sBAAsB,UAElC,CAAC;AAOF;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,YAAW,SAAS;IAkB3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,UAAU,CAAC;IAnBrB,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IAEpC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,gBAAgB,CAAuD;IAC/E,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,cAAc,CAA8C;IAEpE;;;;;;;OAOG;gBAEgB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,MAAM,EAAE,EACtC,UAAU,CAAC,EAAE,UAAU,YAAA;IAK3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/D,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAMnE,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,OAAO;IAsCf,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,aAAa;IA0BrB;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAKzB;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI;IAOvD,OAAO,CAAC,UAAU;CAkBnB"}
|