@minip2p/react-native 0.5.1 → 0.5.3
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/android/src/main/jniLibs/arm64-v8a/libminip2p_ffi.so +0 -0
- package/android/src/main/jniLibs/x86_64/libminip2p_ffi.so +0 -0
- package/build/Minip2pFfi.xcframework/ios-arm64/libminip2p_ffi.a +0 -0
- package/build/Minip2pFfi.xcframework/ios-arm64-simulator/libminip2p_ffi.a +0 -0
- package/lib/module/adapter.js +61 -12
- package/lib/module/adapter.js.map +1 -1
- package/lib/typescript/tests/adapter-connection-ids.test.d.ts +2 -0
- package/lib/typescript/tests/adapter-connection-ids.test.d.ts.map +1 -0
- package/lib/typescript/tests/fake-native-endpoint.d.ts +79 -0
- package/lib/typescript/tests/fake-native-endpoint.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/adapter.ts +81 -18
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/lib/module/adapter.js
CHANGED
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
/* oxlint-disable class-methods-use-this, complexity, func-style, max-classes-per-file, no-use-before-define -- The adapter keeps its contract-complete native endpoint and public SDK subclass together, and uses hoisted conversion helpers. */
|
|
4
4
|
|
|
5
5
|
import { BackpressureError, MessageTooLargeError, Minip2pBase, NotPermittedError, PubsubRouter } from "@minip2p/core";
|
|
6
|
+
import { P2pEvent_Tags } from "@minip2p/core/backend";
|
|
6
7
|
import { EventDrain } from "./event-drain.js";
|
|
7
8
|
import { FfiError_Tags, P2pEndpoint, circuitAddress as nativeCircuitAddress, generateSecretKey as nativeGenerateSecretKey, peerIdFromSecretKey as nativePeerIdFromSecretKey } from "./native.js";
|
|
8
9
|
import nativeModule from "./NativeMinip2p.js";
|
|
9
10
|
class ReactNativeBackend {
|
|
10
11
|
#endpoint;
|
|
11
12
|
#mdnsEnabled;
|
|
13
|
+
#connectionIds = new ConnectionIdMap();
|
|
12
14
|
#doorbell;
|
|
13
15
|
#events;
|
|
14
16
|
constructor(config) {
|
|
@@ -26,7 +28,7 @@ class ReactNativeBackend {
|
|
|
26
28
|
}
|
|
27
29
|
}
|
|
28
30
|
start(listener) {
|
|
29
|
-
this.#events = new EventDrain(limit => this.#endpoint.drainEvents(limit), event => listener(normalizeEvent(event)));
|
|
31
|
+
this.#events = new EventDrain(limit => this.#endpoint.drainEvents(limit), event => listener(normalizeEvent(event, this.#connectionIds)));
|
|
30
32
|
this.#doorbell = {
|
|
31
33
|
onEventsReady: () => {
|
|
32
34
|
this.#events?.ring();
|
|
@@ -116,7 +118,7 @@ class ReactNativeBackend {
|
|
|
116
118
|
openStream(peerId, protocolId) {
|
|
117
119
|
const result = translateErrors(() => this.#endpoint.openStream(peerId, protocolId));
|
|
118
120
|
return {
|
|
119
|
-
connId:
|
|
121
|
+
connId: this.#connectionIds.toPublic(result.connId),
|
|
120
122
|
streamId: u64ToNumber(result.streamId, "streamId")
|
|
121
123
|
};
|
|
122
124
|
}
|
|
@@ -150,13 +152,13 @@ class ReactNativeBackend {
|
|
|
150
152
|
return u64ToNumber(translateErrors(() => this.#endpoint.connectAddr(address)), "connectId");
|
|
151
153
|
}
|
|
152
154
|
dial(address) {
|
|
153
|
-
return translateErrors(() => this.#endpoint.dial(address)).map(id =>
|
|
155
|
+
return translateErrors(() => this.#endpoint.dial(address)).map(id => this.#connectionIds.toPublic(id));
|
|
154
156
|
}
|
|
155
157
|
dialIp4(address) {
|
|
156
|
-
return
|
|
158
|
+
return this.#connectionIds.toPublic(translateErrors(() => this.#endpoint.dialIp4(address)));
|
|
157
159
|
}
|
|
158
160
|
dialIp6(address) {
|
|
159
|
-
return
|
|
161
|
+
return this.#connectionIds.toPublic(translateErrors(() => this.#endpoint.dialIp6(address)));
|
|
160
162
|
}
|
|
161
163
|
cancelConnect(id) {
|
|
162
164
|
translateErrors(() => {
|
|
@@ -254,11 +256,52 @@ function toNativeTransport(transport) {
|
|
|
254
256
|
function resolveMdnsAutoDial(mdns, discovery) {
|
|
255
257
|
return mdns.autoDial ?? discovery?.autoDial ?? true;
|
|
256
258
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Maps native `u64` connection identities to small public numbers.
|
|
262
|
+
*
|
|
263
|
+
* Native connection IDs span the full `u64` range, so they cannot round-trip
|
|
264
|
+
* through a JavaScript `number`. Each endpoint owns one map so a native ID
|
|
265
|
+
* resolves to the same public ID in events and synchronous results. An entry
|
|
266
|
+
* is released once its `ConnectionClosed` event is normalized, which bounds
|
|
267
|
+
* the map by live connections. Public numbers come from a counter that never
|
|
268
|
+
* repeats, so an event arriving after the release gets a fresh number instead
|
|
269
|
+
* of aliasing a live connection. Stream and connect-attempt IDs are not
|
|
270
|
+
* mapped because they round-trip into native calls, and native allocates
|
|
271
|
+
* them well inside the safe integer range.
|
|
272
|
+
*/
|
|
273
|
+
class ConnectionIdMap {
|
|
274
|
+
#publicByNative = new Map();
|
|
275
|
+
#nativeByPublic = new Map();
|
|
276
|
+
#next = 1;
|
|
277
|
+
toPublic(native) {
|
|
278
|
+
const existing = this.#publicByNative.get(native);
|
|
279
|
+
if (existing !== undefined) {
|
|
280
|
+
return existing;
|
|
281
|
+
}
|
|
282
|
+
const publicId = this.#next;
|
|
283
|
+
this.#next += 1;
|
|
284
|
+
this.#publicByNative.set(native, publicId);
|
|
285
|
+
this.#nativeByPublic.set(publicId, native);
|
|
286
|
+
return publicId;
|
|
287
|
+
}
|
|
288
|
+
release(publicId) {
|
|
289
|
+
const native = this.#nativeByPublic.get(publicId);
|
|
290
|
+
if (native !== undefined) {
|
|
291
|
+
this.#nativeByPublic.delete(publicId);
|
|
292
|
+
this.#publicByNative.delete(native);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
function normalizeEvent(event, connectionIds) {
|
|
297
|
+
const normalized = normalizeBigInts({
|
|
259
298
|
inner: event.inner,
|
|
260
299
|
tag: event.tag
|
|
261
|
-
});
|
|
300
|
+
}, connectionIds);
|
|
301
|
+
if (normalized.tag === P2pEvent_Tags.ConnectionClosed) {
|
|
302
|
+
connectionIds.release(normalized.inner.connId);
|
|
303
|
+
}
|
|
304
|
+
return normalized;
|
|
262
305
|
}
|
|
263
306
|
function normalizeKnownPeer(peer) {
|
|
264
307
|
return normalizeBigInts(peer);
|
|
@@ -269,18 +312,24 @@ function normalizeIdentifyInfo(info) {
|
|
|
269
312
|
function normalizeReservation(reservation) {
|
|
270
313
|
return normalizeBigInts(reservation);
|
|
271
314
|
}
|
|
272
|
-
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Converts native `bigint` fields to numbers. `connId` fields go through the
|
|
318
|
+
* endpoint's connection map when one is supplied; every other `u64` keeps the
|
|
319
|
+
* checked conversion.
|
|
320
|
+
*/
|
|
321
|
+
function normalizeBigInts(value, connectionIds, key) {
|
|
273
322
|
if (typeof value === "bigint") {
|
|
274
|
-
return u64ToNumber(value, "native u64");
|
|
323
|
+
return key === "connId" && connectionIds !== undefined ? connectionIds.toPublic(value) : u64ToNumber(value, "native u64");
|
|
275
324
|
}
|
|
276
325
|
if (value instanceof ArrayBuffer) {
|
|
277
326
|
return value;
|
|
278
327
|
}
|
|
279
328
|
if (Array.isArray(value)) {
|
|
280
|
-
return value.map(item => normalizeBigInts(item));
|
|
329
|
+
return value.map(item => normalizeBigInts(item, connectionIds));
|
|
281
330
|
}
|
|
282
331
|
if (value !== null && typeof value === "object") {
|
|
283
|
-
return Object.fromEntries(Object.entries(value).map(([
|
|
332
|
+
return Object.fromEntries(Object.entries(value).map(([itemKey, item]) => [itemKey, normalizeBigInts(item, connectionIds, itemKey)]));
|
|
284
333
|
}
|
|
285
334
|
return value;
|
|
286
335
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BackpressureError","MessageTooLargeError","Minip2pBase","NotPermittedError","PubsubRouter","EventDrain","FfiError_Tags","P2pEndpoint","circuitAddress","nativeCircuitAddress","generateSecretKey","nativeGenerateSecretKey","peerIdFromSecretKey","nativePeerIdFromSecretKey","nativeModule","ReactNativeBackend","endpoint","mdnsEnabled","doorbell","events","constructor","config","mdns","undefined","setMdnsEnabled","translateErrors","toArrayBuffer","secretKey","toNativeConfig","error","start","listener","limit","drainEvents","event","normalizeEvent","onEventsReady","ring","close","stop","uniffiDestroy","peerId","listenAddrs","connectedPeers","isPeerReady","peerInfo","info","normalizeIdentifyInfo","knownPeers","map","normalizeKnownPeer","discoveryNowMs","now","u64ToNumber","activeReservation","reservation","normalizeReservation","path","normalizeBigInts","relayAddress","reachability","isRunning","setActive","active","subscribe","topic","unsubscribe","publish","data","ping","addProtocol","protocolId","openStream","result","connId","streamId","sendStream","numberToU64","closeStreamWrite","resetStream","abandonStream","connect","connectWithAddrs","addresses","connectAddr","address","dial","id","dialIp4","dialIp6","cancelConnect","disconnect","backendFactory","create","Uint8Array","Minip2p","backend","relays","discovery","autoDial","beaconIntervalMs","peerTtlMs","mdnsOptions","resolveMdnsAutoDial","enableIpv6","interfaceRefreshMs","maxAnnouncedAddrs","numberToU32","maxPacketBytes","queryIntervalMs","socketPollIntervalMs","ttlMs","configuredTransports","transports","quic","tcp","agentVersion","allowUnsigned","autonatServers","forceRelay","protocols","pubsubRouter","Gossipsub","toNativeTransport","transport","listen","inner","tag","peer","value","ArrayBuffer","Array","isArray","item","Object","fromEntries","entries","key","from","buffer","name","assertSafeUnsignedInteger","BigInt","RangeError","number","Number","isSafeInteger","operation","getErrorTag","Backpressure","MessageTooLarge","NotPermitted","getErrorDetail","detail"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["BackpressureError","MessageTooLargeError","Minip2pBase","NotPermittedError","PubsubRouter","P2pEvent_Tags","EventDrain","FfiError_Tags","P2pEndpoint","circuitAddress","nativeCircuitAddress","generateSecretKey","nativeGenerateSecretKey","peerIdFromSecretKey","nativePeerIdFromSecretKey","nativeModule","ReactNativeBackend","endpoint","mdnsEnabled","connectionIds","ConnectionIdMap","doorbell","events","constructor","config","mdns","undefined","setMdnsEnabled","translateErrors","toArrayBuffer","secretKey","toNativeConfig","error","start","listener","limit","drainEvents","event","normalizeEvent","onEventsReady","ring","close","stop","uniffiDestroy","peerId","listenAddrs","connectedPeers","isPeerReady","peerInfo","info","normalizeIdentifyInfo","knownPeers","map","normalizeKnownPeer","discoveryNowMs","now","u64ToNumber","activeReservation","reservation","normalizeReservation","path","normalizeBigInts","relayAddress","reachability","isRunning","setActive","active","subscribe","topic","unsubscribe","publish","data","ping","addProtocol","protocolId","openStream","result","connId","toPublic","streamId","sendStream","numberToU64","closeStreamWrite","resetStream","abandonStream","connect","connectWithAddrs","addresses","connectAddr","address","dial","id","dialIp4","dialIp6","cancelConnect","disconnect","backendFactory","create","Uint8Array","Minip2p","backend","relays","discovery","autoDial","beaconIntervalMs","peerTtlMs","mdnsOptions","resolveMdnsAutoDial","enableIpv6","interfaceRefreshMs","maxAnnouncedAddrs","numberToU32","maxPacketBytes","queryIntervalMs","socketPollIntervalMs","ttlMs","configuredTransports","transports","quic","tcp","agentVersion","allowUnsigned","autonatServers","forceRelay","protocols","pubsubRouter","Gossipsub","toNativeTransport","transport","listen","publicByNative","Map","nativeByPublic","next","native","existing","get","publicId","set","release","delete","normalized","inner","tag","ConnectionClosed","peer","value","key","ArrayBuffer","Array","isArray","item","Object","fromEntries","entries","itemKey","from","buffer","name","assertSafeUnsignedInteger","BigInt","RangeError","number","Number","isSafeInteger","operation","getErrorTag","Backpressure","MessageTooLarge","NotPermitted","getErrorDetail","detail"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-connection-ids.test.d.ts","sourceRoot":"","sources":["../../../tests/adapter-connection-ids.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/** In-memory stand-in for the UniFFI `P2pEndpoint` used by adapter tests. */
|
|
2
|
+
import type { OpenStreamResult, P2pEndpointLike, P2pEvent, P2pEventDoorbell } from "../src/native.js";
|
|
3
|
+
/**
|
|
4
|
+
* Hand-written stand-in for a generated event class instance. The adapter
|
|
5
|
+
* only reads `tag` and `inner`, so tests enqueue plain literals.
|
|
6
|
+
*/
|
|
7
|
+
export interface FakeEvent {
|
|
8
|
+
readonly tag: string;
|
|
9
|
+
readonly inner: Readonly<Record<string, unknown>>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Implements the full generated endpoint surface so interface drift fails
|
|
13
|
+
* `typecheck`. Only the methods the adapter tests reach have behavior; the
|
|
14
|
+
* rest throw by name so an unexpected call is loud rather than "not a
|
|
15
|
+
* function".
|
|
16
|
+
*/
|
|
17
|
+
export declare class FakeNativeEndpoint implements P2pEndpointLike {
|
|
18
|
+
#private;
|
|
19
|
+
static latest: FakeNativeEndpoint | undefined;
|
|
20
|
+
readonly drainLimits: number[];
|
|
21
|
+
/** Native identities returned by the next `openStream` call. */
|
|
22
|
+
nextStream: {
|
|
23
|
+
connId: bigint;
|
|
24
|
+
streamId: bigint;
|
|
25
|
+
};
|
|
26
|
+
/** Native connection identities returned by the dial methods. */
|
|
27
|
+
dialResults: bigint[];
|
|
28
|
+
/** Native discovery clock returned by `discoveryNowMs`. */
|
|
29
|
+
discoveryNow: bigint | undefined;
|
|
30
|
+
constructor();
|
|
31
|
+
/** Returns the endpoint constructed by the most recent `Minip2p.create`. */
|
|
32
|
+
static current(): FakeNativeEndpoint;
|
|
33
|
+
enqueue(...batches: FakeEvent[][]): void;
|
|
34
|
+
ring(): void;
|
|
35
|
+
start(doorbell: P2pEventDoorbell): void;
|
|
36
|
+
drainEvents(limit: number): P2pEvent[];
|
|
37
|
+
openStream(): OpenStreamResult;
|
|
38
|
+
dial(): bigint[];
|
|
39
|
+
dialIp4(): bigint;
|
|
40
|
+
dialIp6(): bigint;
|
|
41
|
+
discoveryNowMs(): bigint | undefined;
|
|
42
|
+
stop(): void;
|
|
43
|
+
uniffiDestroy(): void;
|
|
44
|
+
abandonStream(): never;
|
|
45
|
+
activeReservation(): never;
|
|
46
|
+
addProtocol(): never;
|
|
47
|
+
cancelConnect(): never;
|
|
48
|
+
closeStreamWrite(): never;
|
|
49
|
+
connect(): never;
|
|
50
|
+
connectAddr(): never;
|
|
51
|
+
connectWithAddrs(): never;
|
|
52
|
+
connectedPeers(): never;
|
|
53
|
+
disconnect(): never;
|
|
54
|
+
isPeerReady(): never;
|
|
55
|
+
isRunning(): never;
|
|
56
|
+
knownPeers(): never;
|
|
57
|
+
listenAddrs(): never;
|
|
58
|
+
path(): never;
|
|
59
|
+
peerId(): never;
|
|
60
|
+
peerInfo(): never;
|
|
61
|
+
ping(): never;
|
|
62
|
+
publish(): never;
|
|
63
|
+
reachability(): never;
|
|
64
|
+
resetStream(): never;
|
|
65
|
+
sendStream(): never;
|
|
66
|
+
setActive(): never;
|
|
67
|
+
subscribe(): never;
|
|
68
|
+
unsubscribe(): never;
|
|
69
|
+
waitStopped(): never;
|
|
70
|
+
}
|
|
71
|
+
/** Factory for `vi.mock("../src/native", nativeModuleMock)`. */
|
|
72
|
+
export declare const nativeModuleMock: () => {
|
|
73
|
+
FfiError_Tags: {};
|
|
74
|
+
P2pEndpoint: typeof FakeNativeEndpoint;
|
|
75
|
+
circuitAddress: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
76
|
+
generateSecretKey: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
77
|
+
peerIdFromSecretKey: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=fake-native-endpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-native-endpoint.d.ts","sourceRoot":"","sources":["../../../tests/fake-native-endpoint.ts"],"names":[],"mappings":"AACA,6EAA6E;AAI7E,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,gBAAgB,EACjB,MAAM,kBAAe,CAAC;AAEvB;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD;AAMD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,eAAe;;IACxD,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAE9C,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAM;IACpC,gEAAgE;IAChE,UAAU;QAAK,MAAM;QAAM,QAAQ;MAAO;IAC1C,iEAAiE;IACjE,WAAW,EAAE,MAAM,EAAE,CAAQ;IAC7B,2DAA2D;IAC3D,YAAY,EAAE,MAAM,GAAG,SAAS,CAAa;IAI7C,cAEC;IAED,4EAA4E;IAC5E,MAAM,CAAC,OAAO,IAAI,kBAAkB,CAKnC;IAED,OAAO,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,CAEvC;IAED,IAAI,IAAI,IAAI,CAEX;IAED,KAAK,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAEtC;IAED,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAGrC;IAED,UAAU,IAAI,gBAAgB,CAE7B;IAED,IAAI,IAAI,MAAM,EAAE,CAEf;IAED,OAAO,IAAI,MAAM,CAEhB;IAED,OAAO,IAAI,MAAM,CAEhB;IAED,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED,IAAI,IAAI,IAAI,CAEX;IAED,aAAa,IAAI,IAAI,CAEpB;IAED,aAAa,IAAI,KAAK,CAErB;IAED,iBAAiB,IAAI,KAAK,CAEzB;IAED,WAAW,IAAI,KAAK,CAEnB;IAED,aAAa,IAAI,KAAK,CAErB;IAED,gBAAgB,IAAI,KAAK,CAExB;IAED,OAAO,IAAI,KAAK,CAEf;IAED,WAAW,IAAI,KAAK,CAEnB;IAED,gBAAgB,IAAI,KAAK,CAExB;IAED,cAAc,IAAI,KAAK,CAEtB;IAED,UAAU,IAAI,KAAK,CAElB;IAED,WAAW,IAAI,KAAK,CAEnB;IAED,SAAS,IAAI,KAAK,CAEjB;IAED,UAAU,IAAI,KAAK,CAElB;IAED,WAAW,IAAI,KAAK,CAEnB;IAED,IAAI,IAAI,KAAK,CAEZ;IAED,MAAM,IAAI,KAAK,CAEd;IAED,QAAQ,IAAI,KAAK,CAEhB;IAED,IAAI,IAAI,KAAK,CAEZ;IAED,OAAO,IAAI,KAAK,CAEf;IAED,YAAY,IAAI,KAAK,CAEpB;IAED,WAAW,IAAI,KAAK,CAEnB;IAED,UAAU,IAAI,KAAK,CAElB;IAED,SAAS,IAAI,KAAK,CAEjB;IAED,SAAS,IAAI,KAAK,CAEjB;IAED,WAAW,IAAI,KAAK,CAEnB;IAED,WAAW,IAAI,KAAK,CAEnB;CACF;AAED,gEAAgE;AAChE,eAAO,MAAM,gBAAgB;IAC3B,aAAa;IACb,WAAW;IACX,cAAc;IACd,iBAAiB;IACjB,mBAAmB;CACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@minip2p/react-native",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.3",
|
|
4
4
|
"description": "React Native bindings for minip2p",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"android",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"registry": "https://registry.npmjs.org/"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@minip2p/core": "0.5.
|
|
68
|
+
"@minip2p/core": "0.5.3",
|
|
69
69
|
"@ubjs/core": "0.31.0-5",
|
|
70
70
|
"uniffi-bindgen-react-native": "0.31.0-5"
|
|
71
71
|
},
|
package/src/adapter.ts
CHANGED
|
@@ -19,6 +19,7 @@ import type {
|
|
|
19
19
|
Reachability,
|
|
20
20
|
RelayReservationInfo,
|
|
21
21
|
} from "@minip2p/core";
|
|
22
|
+
import { P2pEvent_Tags } from "@minip2p/core/backend";
|
|
22
23
|
import type {
|
|
23
24
|
Minip2pBackend,
|
|
24
25
|
Minip2pBackendFactory,
|
|
@@ -51,6 +52,7 @@ import nativeModule from "./NativeMinip2p";
|
|
|
51
52
|
class ReactNativeBackend implements Minip2pBackend {
|
|
52
53
|
readonly #endpoint: P2pEndpoint;
|
|
53
54
|
readonly #mdnsEnabled: boolean;
|
|
55
|
+
readonly #connectionIds = new ConnectionIdMap();
|
|
54
56
|
#doorbell: P2pEventDoorbell | undefined;
|
|
55
57
|
#events: EventDrain<NativeP2pEvent> | undefined;
|
|
56
58
|
|
|
@@ -78,7 +80,7 @@ class ReactNativeBackend implements Minip2pBackend {
|
|
|
78
80
|
start(listener: (event: P2pEvent) => void): void {
|
|
79
81
|
this.#events = new EventDrain(
|
|
80
82
|
(limit) => this.#endpoint.drainEvents(limit),
|
|
81
|
-
(event) => listener(normalizeEvent(event))
|
|
83
|
+
(event) => listener(normalizeEvent(event, this.#connectionIds))
|
|
82
84
|
);
|
|
83
85
|
this.#doorbell = {
|
|
84
86
|
onEventsReady: () => {
|
|
@@ -199,7 +201,7 @@ class ReactNativeBackend implements Minip2pBackend {
|
|
|
199
201
|
this.#endpoint.openStream(peerId, protocolId)
|
|
200
202
|
);
|
|
201
203
|
return {
|
|
202
|
-
connId:
|
|
204
|
+
connId: this.#connectionIds.toPublic(result.connId),
|
|
203
205
|
streamId: u64ToNumber(result.streamId, "streamId"),
|
|
204
206
|
};
|
|
205
207
|
}
|
|
@@ -260,21 +262,19 @@ class ReactNativeBackend implements Minip2pBackend {
|
|
|
260
262
|
|
|
261
263
|
dial(address: string): number[] {
|
|
262
264
|
return translateErrors(() => this.#endpoint.dial(address)).map((id) =>
|
|
263
|
-
|
|
265
|
+
this.#connectionIds.toPublic(id)
|
|
264
266
|
);
|
|
265
267
|
}
|
|
266
268
|
|
|
267
269
|
dialIp4(address: string): number {
|
|
268
|
-
return
|
|
269
|
-
translateErrors(() => this.#endpoint.dialIp4(address))
|
|
270
|
-
"connectionId"
|
|
270
|
+
return this.#connectionIds.toPublic(
|
|
271
|
+
translateErrors(() => this.#endpoint.dialIp4(address))
|
|
271
272
|
);
|
|
272
273
|
}
|
|
273
274
|
|
|
274
275
|
dialIp6(address: string): number {
|
|
275
|
-
return
|
|
276
|
-
translateErrors(() => this.#endpoint.dialIp6(address))
|
|
277
|
-
"connectionId"
|
|
276
|
+
return this.#connectionIds.toPublic(
|
|
277
|
+
translateErrors(() => this.#endpoint.dialIp6(address))
|
|
278
278
|
);
|
|
279
279
|
}
|
|
280
280
|
|
|
@@ -417,11 +417,60 @@ function resolveMdnsAutoDial(
|
|
|
417
417
|
return mdns.autoDial ?? discovery?.autoDial ?? true;
|
|
418
418
|
}
|
|
419
419
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
420
|
+
/**
|
|
421
|
+
* Maps native `u64` connection identities to small public numbers.
|
|
422
|
+
*
|
|
423
|
+
* Native connection IDs span the full `u64` range, so they cannot round-trip
|
|
424
|
+
* through a JavaScript `number`. Each endpoint owns one map so a native ID
|
|
425
|
+
* resolves to the same public ID in events and synchronous results. An entry
|
|
426
|
+
* is released once its `ConnectionClosed` event is normalized, which bounds
|
|
427
|
+
* the map by live connections. Public numbers come from a counter that never
|
|
428
|
+
* repeats, so an event arriving after the release gets a fresh number instead
|
|
429
|
+
* of aliasing a live connection. Stream and connect-attempt IDs are not
|
|
430
|
+
* mapped because they round-trip into native calls, and native allocates
|
|
431
|
+
* them well inside the safe integer range.
|
|
432
|
+
*/
|
|
433
|
+
class ConnectionIdMap {
|
|
434
|
+
readonly #publicByNative = new Map<bigint, number>();
|
|
435
|
+
readonly #nativeByPublic = new Map<number, bigint>();
|
|
436
|
+
#next = 1;
|
|
437
|
+
|
|
438
|
+
toPublic(native: bigint): number {
|
|
439
|
+
const existing = this.#publicByNative.get(native);
|
|
440
|
+
if (existing !== undefined) {
|
|
441
|
+
return existing;
|
|
442
|
+
}
|
|
443
|
+
const publicId = this.#next;
|
|
444
|
+
this.#next += 1;
|
|
445
|
+
this.#publicByNative.set(native, publicId);
|
|
446
|
+
this.#nativeByPublic.set(publicId, native);
|
|
447
|
+
return publicId;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
release(publicId: number): void {
|
|
451
|
+
const native = this.#nativeByPublic.get(publicId);
|
|
452
|
+
if (native !== undefined) {
|
|
453
|
+
this.#nativeByPublic.delete(publicId);
|
|
454
|
+
this.#publicByNative.delete(native);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
function normalizeEvent(
|
|
460
|
+
event: NativeP2pEvent,
|
|
461
|
+
connectionIds: ConnectionIdMap
|
|
462
|
+
): P2pEvent {
|
|
463
|
+
const normalized = normalizeBigInts(
|
|
464
|
+
{
|
|
465
|
+
inner: event.inner,
|
|
466
|
+
tag: event.tag,
|
|
467
|
+
},
|
|
468
|
+
connectionIds
|
|
469
|
+
) as P2pEvent;
|
|
470
|
+
if (normalized.tag === P2pEvent_Tags.ConnectionClosed) {
|
|
471
|
+
connectionIds.release(normalized.inner.connId);
|
|
472
|
+
}
|
|
473
|
+
return normalized;
|
|
425
474
|
}
|
|
426
475
|
|
|
427
476
|
function normalizeKnownPeer(peer: NativeKnownPeerInfo): KnownPeerInfo {
|
|
@@ -438,19 +487,33 @@ function normalizeReservation(
|
|
|
438
487
|
return normalizeBigInts(reservation) as RelayReservationInfo;
|
|
439
488
|
}
|
|
440
489
|
|
|
441
|
-
|
|
490
|
+
/**
|
|
491
|
+
* Converts native `bigint` fields to numbers. `connId` fields go through the
|
|
492
|
+
* endpoint's connection map when one is supplied; every other `u64` keeps the
|
|
493
|
+
* checked conversion.
|
|
494
|
+
*/
|
|
495
|
+
function normalizeBigInts(
|
|
496
|
+
value: unknown,
|
|
497
|
+
connectionIds?: ConnectionIdMap,
|
|
498
|
+
key?: string
|
|
499
|
+
): unknown {
|
|
442
500
|
if (typeof value === "bigint") {
|
|
443
|
-
return
|
|
501
|
+
return key === "connId" && connectionIds !== undefined
|
|
502
|
+
? connectionIds.toPublic(value)
|
|
503
|
+
: u64ToNumber(value, "native u64");
|
|
444
504
|
}
|
|
445
505
|
if (value instanceof ArrayBuffer) {
|
|
446
506
|
return value;
|
|
447
507
|
}
|
|
448
508
|
if (Array.isArray(value)) {
|
|
449
|
-
return value.map((item) => normalizeBigInts(item));
|
|
509
|
+
return value.map((item) => normalizeBigInts(item, connectionIds));
|
|
450
510
|
}
|
|
451
511
|
if (value !== null && typeof value === "object") {
|
|
452
512
|
return Object.fromEntries(
|
|
453
|
-
Object.entries(value).map(([
|
|
513
|
+
Object.entries(value).map(([itemKey, item]) => [
|
|
514
|
+
itemKey,
|
|
515
|
+
normalizeBigInts(item, connectionIds, itemKey),
|
|
516
|
+
])
|
|
454
517
|
);
|
|
455
518
|
}
|
|
456
519
|
return value;
|