@minip2p/react-native 0.5.2 → 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/Info.plist +4 -4
- 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
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<key>BinaryPath</key>
|
|
9
9
|
<string>libminip2p_ffi.a</string>
|
|
10
10
|
<key>LibraryIdentifier</key>
|
|
11
|
-
<string>ios-arm64
|
|
11
|
+
<string>ios-arm64</string>
|
|
12
12
|
<key>LibraryPath</key>
|
|
13
13
|
<string>libminip2p_ffi.a</string>
|
|
14
14
|
<key>SupportedArchitectures</key>
|
|
@@ -17,14 +17,12 @@
|
|
|
17
17
|
</array>
|
|
18
18
|
<key>SupportedPlatform</key>
|
|
19
19
|
<string>ios</string>
|
|
20
|
-
<key>SupportedPlatformVariant</key>
|
|
21
|
-
<string>simulator</string>
|
|
22
20
|
</dict>
|
|
23
21
|
<dict>
|
|
24
22
|
<key>BinaryPath</key>
|
|
25
23
|
<string>libminip2p_ffi.a</string>
|
|
26
24
|
<key>LibraryIdentifier</key>
|
|
27
|
-
<string>ios-arm64</string>
|
|
25
|
+
<string>ios-arm64-simulator</string>
|
|
28
26
|
<key>LibraryPath</key>
|
|
29
27
|
<string>libminip2p_ffi.a</string>
|
|
30
28
|
<key>SupportedArchitectures</key>
|
|
@@ -33,6 +31,8 @@
|
|
|
33
31
|
</array>
|
|
34
32
|
<key>SupportedPlatform</key>
|
|
35
33
|
<string>ios</string>
|
|
34
|
+
<key>SupportedPlatformVariant</key>
|
|
35
|
+
<string>simulator</string>
|
|
36
36
|
</dict>
|
|
37
37
|
</array>
|
|
38
38
|
<key>CFBundlePackageType</key>
|
|
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":";;AAAA;;AAEA,SACEA,iBAAiB,EACjBC,oBAAoB,EACpBC,WAAW,EACXC,iBAAiB,EACjBC,YAAY,QACP,eAAe;AAqBtB,SAASC,UAAU,QAAQ,kBAAe;AAC1C,SACEC,aAAa,EACbC,WAAW,EACXC,cAAc,IAAIC,oBAAoB,EACtCC,iBAAiB,IAAIC,uBAAuB,EAC5CC,mBAAmB,IAAIC,yBAAyB,QAC3C,aAAU;AAYjB,OAAOC,YAAY,MAAM,oBAAiB;AAE1C,MAAMC,kBAAkB,CAA2B;EACxC,CAACC,QAAQ;EACT,CAACC,WAAW;EACrB,CAACC,QAAQ;EACT,CAACC,MAAM;EAEPC,WAAWA,CAACC,MAAqB,EAAE;IACjC,IAAI,CAAC,CAACJ,WAAW,GAAGI,MAAM,CAACC,IAAI,KAAKC,SAAS,IAAIF,MAAM,CAACC,IAAI,KAAK,KAAK;IACtE,IAAI,IAAI,CAAC,CAACL,WAAW,EAAE;MACrBH,YAAY,CAACU,cAAc,CAAC,IAAI,CAAC;IACnC;IACA,IAAI;MACF,IAAI,CAAC,CAACR,QAAQ,GAAGS,eAAe,CAC9B,MACE,IAAIlB,WAAW,CACbmB,aAAa,CAACL,MAAM,CAACM,SAAS,CAAC,EAC/BC,cAAc,CAACP,MAAM,CACvB,CACJ,CAAC;IACH,CAAC,CAAC,OAAOQ,KAAK,EAAE;MACd,IAAI,IAAI,CAAC,CAACZ,WAAW,EAAE;QACrBH,YAAY,CAACU,cAAc,CAAC,KAAK,CAAC;MACpC;MACA,MAAMK,KAAK;IACb;EACF;EAEAC,KAAKA,CAACC,QAAmC,EAAQ;IAC/C,IAAI,CAAC,CAACZ,MAAM,GAAG,IAAId,UAAU,CAC1B2B,KAAK,IAAK,IAAI,CAAC,CAAChB,QAAQ,CAACiB,WAAW,CAACD,KAAK,CAAC,EAC3CE,KAAK,IAAKH,QAAQ,CAACI,cAAc,CAACD,KAAK,CAAC,CAC3C,CAAC;IACD,IAAI,CAAC,CAAChB,QAAQ,GAAG;MACfkB,aAAa,EAAEA,CAAA,KAAM;QACnB,IAAI,CAAC,CAACjB,MAAM,EAAEkB,IAAI,CAAC,CAAC;MACtB;IACF,CAAC;IACDZ,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACT,QAAQ,CAACc,KAAK,CAAC,IAAI,CAAC,CAACZ,QAA4B,CAAC;IAC1D,CAAC,CAAC;EACJ;EAEAoB,KAAKA,CAAA,EAAS;IACZ,IAAI;MACF,IAAI,CAAC,CAACtB,QAAQ,CAACuB,IAAI,CAAC,CAAC;MACrB,IAAI,CAAC,CAACpB,MAAM,EAAEoB,IAAI,CAAC,CAAC;MACpB,IAAI,CAAC,CAACvB,QAAQ,CAACwB,aAAa,CAAC,CAAC;MAC9B,IAAI,CAAC,CAACrB,MAAM,GAAGI,SAAS;MACxB,IAAI,CAAC,CAACL,QAAQ,GAAGK,SAAS;IAC5B,CAAC,SAAS;MACR,IAAI,IAAI,CAAC,CAACN,WAAW,EAAE;QACrBH,YAAY,CAACU,cAAc,CAAC,KAAK,CAAC;MACpC;IACF;EACF;EAEAiB,MAAMA,CAAA,EAAW;IACf,OAAO,IAAI,CAAC,CAACzB,QAAQ,CAACyB,MAAM,CAAC,CAAC;EAChC;EAEAC,WAAWA,CAAA,EAAa;IACtB,OAAO,IAAI,CAAC,CAAC1B,QAAQ,CAAC0B,WAAW,CAAC,CAAC;EACrC;EAEAC,cAAcA,CAAA,EAAa;IACzB,OAAOlB,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAAC2B,cAAc,CAAC,CAAC,CAAC;EAC/D;EAEAC,WAAWA,CAACH,MAAc,EAAW;IACnC,OAAOhB,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAAC4B,WAAW,CAACH,MAAM,CAAC,CAAC;EAClE;EAEAI,QAAQA,CAACJ,MAAc,EAA4B;IACjD,MAAMK,IAAI,GAAGrB,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAAC6B,QAAQ,CAACJ,MAAM,CAAC,CAAC;IACnE,OAAOK,IAAI,KAAKvB,SAAS,GAAGA,SAAS,GAAGwB,qBAAqB,CAACD,IAAI,CAAC;EACrE;EAEAE,UAAUA,CAAA,EAAoB;IAC5B,OAAOvB,eAAe,CAAC,MACrB,IAAI,CAAC,CAACT,QAAQ,CAACgC,UAAU,CAAC,CAAC,CAACC,GAAG,CAACC,kBAAkB,CACpD,CAAC;EACH;EAEAC,cAAcA,CAAA,EAAuB;IACnC,MAAMC,GAAG,GAAG3B,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAACmC,cAAc,CAAC,CAAC,CAAC;IAClE,OAAOC,GAAG,KAAK7B,SAAS,GAAGA,SAAS,GAAG8B,WAAW,CAACD,GAAG,EAAE,gBAAgB,CAAC;EAC3E;EAEAE,iBAAiBA,CAAA,EAAqC;IACpD,MAAMC,WAAW,GAAG9B,eAAe,CAAC,MAClC,IAAI,CAAC,CAACT,QAAQ,CAACsC,iBAAiB,CAAC,CACnC,CAAC;IACD,OAAOC,WAAW,KAAKhC,SAAS,GAC5BA,SAAS,GACTiC,oBAAoB,CAACD,WAAW,CAAC;EACvC;EAEAE,IAAIA,CAAChB,MAAc,EAAwB;IACzC,MAAMgB,IAAI,GAAGhC,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAACyC,IAAI,CAAChB,MAAM,CAAC,CAAC;IAC/D,OAAOgB,IAAI,KAAKlC,SAAS,GACrBA,SAAS,GACRmC,gBAAgB,CAACD,IAAI,CAAc;EAC1C;EAEAjD,cAAcA,CAACmD,YAAoB,EAAElB,MAAc,EAAU;IAC3D,OAAOhB,eAAe,CAAC,MAAMhB,oBAAoB,CAACkD,YAAY,EAAElB,MAAM,CAAC,CAAC;EAC1E;EAEAmB,YAAYA,CAAA,EAAiB;IAC3B,OAAOnC,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAAC4C,YAAY,CAAC,CAAC,CAAC;EAC7D;EAEAC,SAASA,CAAA,EAAY;IACnB,OAAO,IAAI,CAAC,CAAC7C,QAAQ,CAAC6C,SAAS,CAAC,CAAC;EACnC;EAEAC,SAASA,CAACC,MAAe,EAAQ;IAC/B,IAAI,CAAC,CAAC/C,QAAQ,CAAC8C,SAAS,CAACC,MAAM,CAAC;EAClC;EAEAC,SAASA,CAACC,KAAa,EAAW;IAChC,OAAOxC,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAACgD,SAAS,CAACC,KAAK,CAAC,CAAC;EAC/D;EAEAC,WAAWA,CAACD,KAAa,EAAW;IAClC,OAAOxC,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAACkD,WAAW,CAACD,KAAK,CAAC,CAAC;EACjE;EAEAE,OAAOA,CAACF,KAAa,EAAEG,IAAgB,EAAQ;IAC7C3C,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACT,QAAQ,CAACmD,OAAO,CAACF,KAAK,EAAEvC,aAAa,CAAC0C,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC;EACJ;EAEAC,IAAIA,CAAC5B,MAAc,EAAQ;IACzBhB,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACT,QAAQ,CAACqD,IAAI,CAAC5B,MAAM,CAAC;IAC7B,CAAC,CAAC;EACJ;EAEA6B,WAAWA,CAACC,UAAkB,EAAQ;IACpC9C,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACT,QAAQ,CAACsD,WAAW,CAACC,UAAU,CAAC;IACxC,CAAC,CAAC;EACJ;EAEAC,UAAUA,CAAC/B,MAAc,EAAE8B,UAAkB,EAAqB;IAChE,MAAME,MAAM,GAAGhD,eAAe,CAAC,MAC7B,IAAI,CAAC,CAACT,QAAQ,CAACwD,UAAU,CAAC/B,MAAM,EAAE8B,UAAU,CAC9C,CAAC;IACD,OAAO;MACLG,MAAM,EAAErB,WAAW,CAACoB,MAAM,CAACC,MAAM,EAAE,QAAQ,CAAC;MAC5CC,QAAQ,EAAEtB,WAAW,CAACoB,MAAM,CAACE,QAAQ,EAAE,UAAU;IACnD,CAAC;EACH;EAEAC,UAAUA,CAACnC,MAAc,EAAEkC,QAAgB,EAAEP,IAAgB,EAAQ;IACnE3C,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACT,QAAQ,CAAC4D,UAAU,CACvBnC,MAAM,EACNoC,WAAW,CAACF,QAAQ,EAAE,UAAU,CAAC,EACjCjD,aAAa,CAAC0C,IAAI,CACpB,CAAC;IACH,CAAC,CAAC;EACJ;EAEAU,gBAAgBA,CAACrC,MAAc,EAAEkC,QAAgB,EAAQ;IACvDlD,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACT,QAAQ,CAAC8D,gBAAgB,CAC7BrC,MAAM,EACNoC,WAAW,CAACF,QAAQ,EAAE,UAAU,CAClC,CAAC;IACH,CAAC,CAAC;EACJ;EAEAI,WAAWA,CAACtC,MAAc,EAAEkC,QAAgB,EAAQ;IAClDlD,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACT,QAAQ,CAAC+D,WAAW,CAACtC,MAAM,EAAEoC,WAAW,CAACF,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC,CAAC;EACJ;EAEAK,aAAaA,CAACvC,MAAc,EAAEkC,QAAgB,EAAQ;IACpDlD,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACT,QAAQ,CAACgE,aAAa,CAACvC,MAAM,EAAEoC,WAAW,CAACF,QAAQ,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC,CAAC;EACJ;EAEAM,OAAOA,CAACxC,MAAc,EAAU;IAC9B,OAAOY,WAAW,CAChB5B,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAACiE,OAAO,CAACxC,MAAM,CAAC,CAAC,EACrD,WACF,CAAC;EACH;EAEAyC,gBAAgBA,CAACzC,MAAc,EAAE0C,SAA4B,EAAU;IACrE,OAAO9B,WAAW,CAChB5B,eAAe,CAAC,MACd,IAAI,CAAC,CAACT,QAAQ,CAACkE,gBAAgB,CAACzC,MAAM,EAAE,CAAC,GAAG0C,SAAS,CAAC,CACxD,CAAC,EACD,WACF,CAAC;EACH;EAEAC,WAAWA,CAACC,OAAe,EAAU;IACnC,OAAOhC,WAAW,CAChB5B,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAACoE,WAAW,CAACC,OAAO,CAAC,CAAC,EAC1D,WACF,CAAC;EACH;EAEAC,IAAIA,CAACD,OAAe,EAAY;IAC9B,OAAO5D,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAACsE,IAAI,CAACD,OAAO,CAAC,CAAC,CAACpC,GAAG,CAAEsC,EAAE,IAChElC,WAAW,CAACkC,EAAE,EAAE,cAAc,CAChC,CAAC;EACH;EAEAC,OAAOA,CAACH,OAAe,EAAU;IAC/B,OAAOhC,WAAW,CAChB5B,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAACwE,OAAO,CAACH,OAAO,CAAC,CAAC,EACtD,cACF,CAAC;EACH;EAEAI,OAAOA,CAACJ,OAAe,EAAU;IAC/B,OAAOhC,WAAW,CAChB5B,eAAe,CAAC,MAAM,IAAI,CAAC,CAACT,QAAQ,CAACyE,OAAO,CAACJ,OAAO,CAAC,CAAC,EACtD,cACF,CAAC;EACH;EAEAK,aAAaA,CAACH,EAAU,EAAQ;IAC9B9D,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACT,QAAQ,CAAC0E,aAAa,CAACb,WAAW,CAACU,EAAE,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC,CAAC;EACJ;EAEAI,UAAUA,CAAClD,MAAc,EAAQ;IAC/BhB,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACT,QAAQ,CAAC2E,UAAU,CAAClD,MAAM,CAAC;IACnC,CAAC,CAAC;EACJ;AACF;AAEA,MAAMmD,cAAqC,GAAG;EAC5CpF,cAAc,EAAEA,CAACmD,YAAY,EAAElB,MAAM,KACnChB,eAAe,CAAC,MAAMhB,oBAAoB,CAACkD,YAAY,EAAElB,MAAM,CAAC,CAAC;EACnEoD,MAAM,EAAGxE,MAAM,IAAK,IAAIN,kBAAkB,CAACM,MAAM,CAAC;EAClDX,iBAAiB,EAAEA,CAAA,KAAM,IAAIoF,UAAU,CAACnF,uBAAuB,CAAC,CAAC,CAAC;EAClEC,mBAAmB,EAAGe,SAAS,IAC7BF,eAAe,CAAC,MAAMZ,yBAAyB,CAACa,aAAa,CAACC,SAAS,CAAC,CAAC;AAC7E,CAAC;;AAED;AACA,OAAO,MAAMoE,OAAO,SAAS7F,WAAW,CAAC;EAC/BkB,WAAWA,CAAC4E,OAAuB,EAAEC,MAAyB,EAAE;IACtE,KAAK,CAACD,OAAO,EAAEC,MAAM,CAAC;EACxB;;EAEA;EACA,OAAOJ,MAAMA,CAACxE,MAAqB,EAAW;IAC5C,OAAO,IAAI0E,OAAO,CAACH,cAAc,CAACC,MAAM,CAACxE,MAAM,CAAC,EAAEA,MAAM,CAAC4E,MAAM,IAAI,EAAE,CAAC;EACxE;AACF;;AAEA;AACA,OAAO,SAASvF,iBAAiBA,CAAA,EAAe;EAC9C,OAAOkF,cAAc,CAAClF,iBAAiB,CAAC,CAAC;AAC3C;;AAEA;AACA,OAAO,SAASE,mBAAmBA,CAACe,SAAgB,EAAU;EAC5D,OAAOiE,cAAc,CAAChF,mBAAmB,CAACe,SAAS,CAAC;AACtD;;AAEA;AACA,OAAO,SAASnB,cAAcA,CAACmD,YAAoB,EAAElB,MAAc,EAAU;EAC3E,OAAOmD,cAAc,CAACpF,cAAc,CAACmD,YAAY,EAAElB,MAAM,CAAC;AAC5D;AAEA,SAASb,cAAcA,CAACP,MAAqB,EAAwB;EACnE,MAAM6E,SAA6C,GACjD7E,MAAM,CAAC6E,SAAS,KAAK3E,SAAS,GAC1BA,SAAS,GACT;IACE4E,QAAQ,EAAE9E,MAAM,CAAC6E,SAAS,CAACC,QAAQ,IAAI,IAAI;IAC3CC,gBAAgB,EAAEvB,WAAW,CAC3BxD,MAAM,CAAC6E,SAAS,CAACE,gBAAgB,IAAI,MAAM,EAC3C,kBACF,CAAC;IACDC,SAAS,EAAExB,WAAW,CACpBxD,MAAM,CAAC6E,SAAS,CAACG,SAAS,IAAI,MAAM,EACpC,WACF,CAAC;IACDpC,KAAK,EAAE5C,MAAM,CAAC6E,SAAS,CAACjC;EAC1B,CAAC;EACP,MAAMqC,WAAW,GAAGjF,MAAM,CAACC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,GAAGD,MAAM,CAACC,IAAI;EAC3D,MAAMA,IAAmC,GACvCgF,WAAW,KAAK/E,SAAS,IAAI+E,WAAW,KAAK,KAAK,GAC9C/E,SAAS,GACT;IACE4E,QAAQ,EAAEI,mBAAmB,CAACD,WAAW,EAAEjF,MAAM,CAAC6E,SAAS,CAAC;IAC5DM,UAAU,EAAEF,WAAW,CAACE,UAAU,IAAI,KAAK;IAC3CC,kBAAkB,EAAE5B,WAAW,CAC7ByB,WAAW,CAACG,kBAAkB,IAAI,MAAM,EACxC,oBACF,CAAC;IACDC,iBAAiB,EAAEC,WAAW,CAC5BL,WAAW,CAACI,iBAAiB,IAAI,EAAE,EACnC,mBACF,CAAC;IACDE,cAAc,EAAED,WAAW,CACzBL,WAAW,CAACM,cAAc,IAAI,IAAI,EAClC,gBACF,CAAC;IACDC,eAAe,EAAEhC,WAAW,CAC1ByB,WAAW,CAACO,eAAe,IAAI,OAAO,EACtC,iBACF,CAAC;IACDC,oBAAoB,EAAEjC,WAAW,CAC/ByB,WAAW,CAACQ,oBAAoB,IAAI,GAAG,EACvC,sBACF,CAAC;IACDC,KAAK,EAAElC,WAAW,CAACyB,WAAW,CAACS,KAAK,IAAI,OAAO,EAAE,OAAO;EAC1D,CAAC;EACP,MAAMC,oBAAoB,GAAG3F,MAAM,CAAC4F,UAAU;EAC9C,MAAMA,UAA6B,GACjCD,oBAAoB,KAAKzF,SAAS,IACjCyF,oBAAoB,CAACE,IAAI,KAAK3F,SAAS,IACtCyF,oBAAoB,CAACG,GAAG,KAAK5F,SAAU,GACrC;IAAE2F,IAAI,EAAE;EAAK,CAAC,GACdF,oBAAoB;EAC1B,OAAO;IACLI,YAAY,EAAE/F,MAAM,CAAC+F,YAAY;IACjCC,aAAa,EAAEhG,MAAM,CAACgG,aAAa,IAAI,KAAK;IAC5CC,cAAc,EAAE,CAAC,IAAIjG,MAAM,CAACiG,cAAc,IAAI,EAAE,CAAC,CAAC;IAClDpB,SAAS;IACTqB,UAAU,EAAElG,MAAM,CAACkG,UAAU,IAAI,KAAK;IACtCjG,IAAI;IACJkG,SAAS,EAAE,CAAC,IAAInG,MAAM,CAACmG,SAAS,IAAI,EAAE,CAAC,CAAC;IACxCC,YAAY,EAAGpG,MAAM,CAACoG,YAAY,IAChCrH,YAAY,CAACsH,SAAkD;IACjER,IAAI,EAAES,iBAAiB,CAACV,UAAU,CAACC,IAAI,CAAC;IACxCjB,MAAM,EAAE,CAAC,IAAI5E,MAAM,CAAC4E,MAAM,IAAI,EAAE,CAAC,CAAC;IAClCkB,GAAG,EAAEQ,iBAAiB,CAACV,UAAU,CAACE,GAAG;EACvC,CAAC;AACH;AAEA,SAASQ,iBAAiBA,CACxBC,SAAqD,EACjB;EACpC,IAAIA,SAAS,KAAKrG,SAAS,EAAE;IAC3B,OAAOA,SAAS;EAClB;EACA,IAAIqG,SAAS,KAAK,IAAI,EAAE;IACtB,OAAO;MAAElF,WAAW,EAAEnB;IAAU,CAAC;EACnC;EACA,OAAO;IACLmB,WAAW,EACTkF,SAAS,CAACC,MAAM,KAAKtG,SAAS,GAAGA,SAAS,GAAG,CAAC,GAAGqG,SAAS,CAACC,MAAM;EACrE,CAAC;AACH;AAEA,SAAStB,mBAAmBA,CAC1BjF,IAAwB,EACxB4E,SAA8C,EACrC;EACT,OAAO5E,IAAI,CAAC6E,QAAQ,IAAID,SAAS,EAAEC,QAAQ,IAAI,IAAI;AACrD;AAEA,SAAShE,cAAcA,CAACD,KAAqB,EAAY;EACvD,OAAOwB,gBAAgB,CAAC;IACtBoE,KAAK,EAAE5F,KAAK,CAAC4F,KAAK;IAClBC,GAAG,EAAE7F,KAAK,CAAC6F;EACb,CAAC,CAAC;AACJ;AAEA,SAAS7E,kBAAkBA,CAAC8E,IAAyB,EAAiB;EACpE,OAAOtE,gBAAgB,CAACsE,IAAI,CAAC;AAC/B;AAEA,SAASjF,qBAAqBA,CAACD,IAAwB,EAAgB;EACrE,OAAOY,gBAAgB,CAACZ,IAAI,CAAC;AAC/B;AAEA,SAASU,oBAAoBA,CAC3BD,WAAuC,EACjB;EACtB,OAAOG,gBAAgB,CAACH,WAAW,CAAC;AACtC;AAEA,SAASG,gBAAgBA,CAACuE,KAAc,EAAW;EACjD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAO5E,WAAW,CAAC4E,KAAK,EAAE,YAAY,CAAC;EACzC;EACA,IAAIA,KAAK,YAAYC,WAAW,EAAE;IAChC,OAAOD,KAAK;EACd;EACA,IAAIE,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC,EAAE;IACxB,OAAOA,KAAK,CAAChF,GAAG,CAAEoF,IAAI,IAAK3E,gBAAgB,CAAC2E,IAAI,CAAC,CAAC;EACpD;EACA,IAAIJ,KAAK,KAAK,IAAI,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC/C,OAAOK,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACP,KAAK,CAAC,CAAChF,GAAG,CAAC,CAAC,CAACwF,GAAG,EAAEJ,IAAI,CAAC,KAAK,CAACI,GAAG,EAAE/E,gBAAgB,CAAC2E,IAAI,CAAC,CAAC,CAC1E,CAAC;EACH;EACA,OAAOJ,KAAK;AACd;AAEA,SAASvG,aAAaA,CAACuG,KAAY,EAAe;EAChD,IAAIA,KAAK,YAAYC,WAAW,EAAE;IAChC,OAAOD,KAAK;EACd;EACA,OAAOnC,UAAU,CAAC4C,IAAI,CAACT,KAAK,CAAC,CAACU,MAAM;AACtC;AAEA,SAAS9D,WAAWA,CAACoD,KAAa,EAAEW,IAAY,EAAU;EACxDC,yBAAyB,CAACZ,KAAK,EAAEW,IAAI,CAAC;EACtC,OAAOE,MAAM,CAACb,KAAK,CAAC;AACtB;AAEA,SAAStB,WAAWA,CAACsB,KAAa,EAAEW,IAAY,EAAU;EACxDC,yBAAyB,CAACZ,KAAK,EAAEW,IAAI,CAAC;EACtC,IAAIX,KAAK,GAAG,aAAa,EAAE;IACzB,MAAM,IAAIc,UAAU,CAAC,GAAGH,IAAI,oCAAoC,CAAC;EACnE;EACA,OAAOX,KAAK;AACd;AAEA,SAAS5E,WAAWA,CAAC4E,KAAa,EAAEW,IAAY,EAAU;EACxD,MAAMI,MAAM,GAAGC,MAAM,CAAChB,KAAK,CAAC;EAC5B,IAAI,CAACgB,MAAM,CAACC,aAAa,CAACF,MAAM,CAAC,IAAIA,MAAM,GAAG,CAAC,EAAE;IAC/C,MAAM,IAAID,UAAU,CAAC,GAAGH,IAAI,0CAA0C,CAAC;EACzE;EACA,OAAOI,MAAM;AACf;AAEA,SAASH,yBAAyBA,CAACZ,KAAa,EAAEW,IAAY,EAAQ;EACpE,IAAI,CAACK,MAAM,CAACC,aAAa,CAACjB,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;IAC7C,MAAM,IAAIc,UAAU,CAAC,GAAGH,IAAI,sCAAsC,CAAC;EACrE;AACF;AAEA,SAASnH,eAAeA,CAAI0H,SAAkB,EAAK;EACjD,IAAI;IACF,OAAOA,SAAS,CAAC,CAAC;EACpB,CAAC,CAAC,OAAOtH,KAAK,EAAE;IACd,MAAMkG,GAAG,GAAGqB,WAAW,CAACvH,KAAK,CAAC;IAC9B,QAAQkG,GAAG;MACT,KAAKzH,aAAa,CAAC+I,YAAY;QAAE;UAC/B,MAAM,IAAIrJ,iBAAiB,CAAC,CAAC;QAC/B;MACA,KAAKM,aAAa,CAACgJ,eAAe;QAAE;UAClC,MAAM,IAAIrJ,oBAAoB,CAAC,CAAC;QAClC;MACA,KAAKK,aAAa,CAACiJ,YAAY;QAAE;UAC/B,MAAM,IAAIpJ,iBAAiB,CAACqJ,cAAc,CAAC3H,KAAK,CAAC,CAAC;QACpD;MACA;QAAS;UACP,MAAMA,KAAK;QACb;IACF;EACF;AACF;AAEA,SAASuH,WAAWA,CAACvH,KAAc,EAA6B;EAC9D,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,IAAI,KAAK,IAAIA,KAAK,GAC/DA,KAAK,CAACkG,GAAG,GACVxG,SAAS;AACf;AAEA,SAASiI,cAAcA,CAAC3H,KAAc,EAAsB;EAC1D,IACE,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACd,OAAO,IAAIA,KAAK,IAChB,OAAOA,KAAK,CAACiG,KAAK,KAAK,QAAQ,IAC/BjG,KAAK,CAACiG,KAAK,KAAK,IAAI,IACpB,QAAQ,IAAIjG,KAAK,CAACiG,KAAK,IACvB,OAAOjG,KAAK,CAACiG,KAAK,CAAC2B,MAAM,KAAK,QAAQ,EACtC;IACA,OAAO5H,KAAK,CAACiG,KAAK,CAAC2B,MAAM;EAC3B;EACA,OAAOlI,SAAS;AAClB","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":";;AAAA;;AAEA,SACEA,iBAAiB,EACjBC,oBAAoB,EACpBC,WAAW,EACXC,iBAAiB,EACjBC,YAAY,QACP,eAAe;AAatB,SAASC,aAAa,QAAQ,uBAAuB;AASrD,SAASC,UAAU,QAAQ,kBAAe;AAC1C,SACEC,aAAa,EACbC,WAAW,EACXC,cAAc,IAAIC,oBAAoB,EACtCC,iBAAiB,IAAIC,uBAAuB,EAC5CC,mBAAmB,IAAIC,yBAAyB,QAC3C,aAAU;AAYjB,OAAOC,YAAY,MAAM,oBAAiB;AAE1C,MAAMC,kBAAkB,CAA2B;EACxC,CAACC,QAAQ;EACT,CAACC,WAAW;EACZ,CAACC,aAAa,GAAG,IAAIC,eAAe,CAAC,CAAC;EAC/C,CAACC,QAAQ;EACT,CAACC,MAAM;EAEPC,WAAWA,CAACC,MAAqB,EAAE;IACjC,IAAI,CAAC,CAACN,WAAW,GAAGM,MAAM,CAACC,IAAI,KAAKC,SAAS,IAAIF,MAAM,CAACC,IAAI,KAAK,KAAK;IACtE,IAAI,IAAI,CAAC,CAACP,WAAW,EAAE;MACrBH,YAAY,CAACY,cAAc,CAAC,IAAI,CAAC;IACnC;IACA,IAAI;MACF,IAAI,CAAC,CAACV,QAAQ,GAAGW,eAAe,CAC9B,MACE,IAAIpB,WAAW,CACbqB,aAAa,CAACL,MAAM,CAACM,SAAS,CAAC,EAC/BC,cAAc,CAACP,MAAM,CACvB,CACJ,CAAC;IACH,CAAC,CAAC,OAAOQ,KAAK,EAAE;MACd,IAAI,IAAI,CAAC,CAACd,WAAW,EAAE;QACrBH,YAAY,CAACY,cAAc,CAAC,KAAK,CAAC;MACpC;MACA,MAAMK,KAAK;IACb;EACF;EAEAC,KAAKA,CAACC,QAAmC,EAAQ;IAC/C,IAAI,CAAC,CAACZ,MAAM,GAAG,IAAIhB,UAAU,CAC1B6B,KAAK,IAAK,IAAI,CAAC,CAAClB,QAAQ,CAACmB,WAAW,CAACD,KAAK,CAAC,EAC3CE,KAAK,IAAKH,QAAQ,CAACI,cAAc,CAACD,KAAK,EAAE,IAAI,CAAC,CAAClB,aAAa,CAAC,CAChE,CAAC;IACD,IAAI,CAAC,CAACE,QAAQ,GAAG;MACfkB,aAAa,EAAEA,CAAA,KAAM;QACnB,IAAI,CAAC,CAACjB,MAAM,EAAEkB,IAAI,CAAC,CAAC;MACtB;IACF,CAAC;IACDZ,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACX,QAAQ,CAACgB,KAAK,CAAC,IAAI,CAAC,CAACZ,QAA4B,CAAC;IAC1D,CAAC,CAAC;EACJ;EAEAoB,KAAKA,CAAA,EAAS;IACZ,IAAI;MACF,IAAI,CAAC,CAACxB,QAAQ,CAACyB,IAAI,CAAC,CAAC;MACrB,IAAI,CAAC,CAACpB,MAAM,EAAEoB,IAAI,CAAC,CAAC;MACpB,IAAI,CAAC,CAACzB,QAAQ,CAAC0B,aAAa,CAAC,CAAC;MAC9B,IAAI,CAAC,CAACrB,MAAM,GAAGI,SAAS;MACxB,IAAI,CAAC,CAACL,QAAQ,GAAGK,SAAS;IAC5B,CAAC,SAAS;MACR,IAAI,IAAI,CAAC,CAACR,WAAW,EAAE;QACrBH,YAAY,CAACY,cAAc,CAAC,KAAK,CAAC;MACpC;IACF;EACF;EAEAiB,MAAMA,CAAA,EAAW;IACf,OAAO,IAAI,CAAC,CAAC3B,QAAQ,CAAC2B,MAAM,CAAC,CAAC;EAChC;EAEAC,WAAWA,CAAA,EAAa;IACtB,OAAO,IAAI,CAAC,CAAC5B,QAAQ,CAAC4B,WAAW,CAAC,CAAC;EACrC;EAEAC,cAAcA,CAAA,EAAa;IACzB,OAAOlB,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAAC6B,cAAc,CAAC,CAAC,CAAC;EAC/D;EAEAC,WAAWA,CAACH,MAAc,EAAW;IACnC,OAAOhB,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAAC8B,WAAW,CAACH,MAAM,CAAC,CAAC;EAClE;EAEAI,QAAQA,CAACJ,MAAc,EAA4B;IACjD,MAAMK,IAAI,GAAGrB,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAAC+B,QAAQ,CAACJ,MAAM,CAAC,CAAC;IACnE,OAAOK,IAAI,KAAKvB,SAAS,GAAGA,SAAS,GAAGwB,qBAAqB,CAACD,IAAI,CAAC;EACrE;EAEAE,UAAUA,CAAA,EAAoB;IAC5B,OAAOvB,eAAe,CAAC,MACrB,IAAI,CAAC,CAACX,QAAQ,CAACkC,UAAU,CAAC,CAAC,CAACC,GAAG,CAACC,kBAAkB,CACpD,CAAC;EACH;EAEAC,cAAcA,CAAA,EAAuB;IACnC,MAAMC,GAAG,GAAG3B,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAACqC,cAAc,CAAC,CAAC,CAAC;IAClE,OAAOC,GAAG,KAAK7B,SAAS,GAAGA,SAAS,GAAG8B,WAAW,CAACD,GAAG,EAAE,gBAAgB,CAAC;EAC3E;EAEAE,iBAAiBA,CAAA,EAAqC;IACpD,MAAMC,WAAW,GAAG9B,eAAe,CAAC,MAClC,IAAI,CAAC,CAACX,QAAQ,CAACwC,iBAAiB,CAAC,CACnC,CAAC;IACD,OAAOC,WAAW,KAAKhC,SAAS,GAC5BA,SAAS,GACTiC,oBAAoB,CAACD,WAAW,CAAC;EACvC;EAEAE,IAAIA,CAAChB,MAAc,EAAwB;IACzC,MAAMgB,IAAI,GAAGhC,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAAC2C,IAAI,CAAChB,MAAM,CAAC,CAAC;IAC/D,OAAOgB,IAAI,KAAKlC,SAAS,GACrBA,SAAS,GACRmC,gBAAgB,CAACD,IAAI,CAAc;EAC1C;EAEAnD,cAAcA,CAACqD,YAAoB,EAAElB,MAAc,EAAU;IAC3D,OAAOhB,eAAe,CAAC,MAAMlB,oBAAoB,CAACoD,YAAY,EAAElB,MAAM,CAAC,CAAC;EAC1E;EAEAmB,YAAYA,CAAA,EAAiB;IAC3B,OAAOnC,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAAC8C,YAAY,CAAC,CAAC,CAAC;EAC7D;EAEAC,SAASA,CAAA,EAAY;IACnB,OAAO,IAAI,CAAC,CAAC/C,QAAQ,CAAC+C,SAAS,CAAC,CAAC;EACnC;EAEAC,SAASA,CAACC,MAAe,EAAQ;IAC/B,IAAI,CAAC,CAACjD,QAAQ,CAACgD,SAAS,CAACC,MAAM,CAAC;EAClC;EAEAC,SAASA,CAACC,KAAa,EAAW;IAChC,OAAOxC,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAACkD,SAAS,CAACC,KAAK,CAAC,CAAC;EAC/D;EAEAC,WAAWA,CAACD,KAAa,EAAW;IAClC,OAAOxC,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAACoD,WAAW,CAACD,KAAK,CAAC,CAAC;EACjE;EAEAE,OAAOA,CAACF,KAAa,EAAEG,IAAgB,EAAQ;IAC7C3C,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACX,QAAQ,CAACqD,OAAO,CAACF,KAAK,EAAEvC,aAAa,CAAC0C,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC;EACJ;EAEAC,IAAIA,CAAC5B,MAAc,EAAQ;IACzBhB,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACX,QAAQ,CAACuD,IAAI,CAAC5B,MAAM,CAAC;IAC7B,CAAC,CAAC;EACJ;EAEA6B,WAAWA,CAACC,UAAkB,EAAQ;IACpC9C,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACX,QAAQ,CAACwD,WAAW,CAACC,UAAU,CAAC;IACxC,CAAC,CAAC;EACJ;EAEAC,UAAUA,CAAC/B,MAAc,EAAE8B,UAAkB,EAAqB;IAChE,MAAME,MAAM,GAAGhD,eAAe,CAAC,MAC7B,IAAI,CAAC,CAACX,QAAQ,CAAC0D,UAAU,CAAC/B,MAAM,EAAE8B,UAAU,CAC9C,CAAC;IACD,OAAO;MACLG,MAAM,EAAE,IAAI,CAAC,CAAC1D,aAAa,CAAC2D,QAAQ,CAACF,MAAM,CAACC,MAAM,CAAC;MACnDE,QAAQ,EAAEvB,WAAW,CAACoB,MAAM,CAACG,QAAQ,EAAE,UAAU;IACnD,CAAC;EACH;EAEAC,UAAUA,CAACpC,MAAc,EAAEmC,QAAgB,EAAER,IAAgB,EAAQ;IACnE3C,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACX,QAAQ,CAAC+D,UAAU,CACvBpC,MAAM,EACNqC,WAAW,CAACF,QAAQ,EAAE,UAAU,CAAC,EACjClD,aAAa,CAAC0C,IAAI,CACpB,CAAC;IACH,CAAC,CAAC;EACJ;EAEAW,gBAAgBA,CAACtC,MAAc,EAAEmC,QAAgB,EAAQ;IACvDnD,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACX,QAAQ,CAACiE,gBAAgB,CAC7BtC,MAAM,EACNqC,WAAW,CAACF,QAAQ,EAAE,UAAU,CAClC,CAAC;IACH,CAAC,CAAC;EACJ;EAEAI,WAAWA,CAACvC,MAAc,EAAEmC,QAAgB,EAAQ;IAClDnD,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACX,QAAQ,CAACkE,WAAW,CAACvC,MAAM,EAAEqC,WAAW,CAACF,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC,CAAC;EACJ;EAEAK,aAAaA,CAACxC,MAAc,EAAEmC,QAAgB,EAAQ;IACpDnD,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACX,QAAQ,CAACmE,aAAa,CAACxC,MAAM,EAAEqC,WAAW,CAACF,QAAQ,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC,CAAC;EACJ;EAEAM,OAAOA,CAACzC,MAAc,EAAU;IAC9B,OAAOY,WAAW,CAChB5B,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAACoE,OAAO,CAACzC,MAAM,CAAC,CAAC,EACrD,WACF,CAAC;EACH;EAEA0C,gBAAgBA,CAAC1C,MAAc,EAAE2C,SAA4B,EAAU;IACrE,OAAO/B,WAAW,CAChB5B,eAAe,CAAC,MACd,IAAI,CAAC,CAACX,QAAQ,CAACqE,gBAAgB,CAAC1C,MAAM,EAAE,CAAC,GAAG2C,SAAS,CAAC,CACxD,CAAC,EACD,WACF,CAAC;EACH;EAEAC,WAAWA,CAACC,OAAe,EAAU;IACnC,OAAOjC,WAAW,CAChB5B,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAACuE,WAAW,CAACC,OAAO,CAAC,CAAC,EAC1D,WACF,CAAC;EACH;EAEAC,IAAIA,CAACD,OAAe,EAAY;IAC9B,OAAO7D,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAACyE,IAAI,CAACD,OAAO,CAAC,CAAC,CAACrC,GAAG,CAAEuC,EAAE,IAChE,IAAI,CAAC,CAACxE,aAAa,CAAC2D,QAAQ,CAACa,EAAE,CACjC,CAAC;EACH;EAEAC,OAAOA,CAACH,OAAe,EAAU;IAC/B,OAAO,IAAI,CAAC,CAACtE,aAAa,CAAC2D,QAAQ,CACjClD,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAAC2E,OAAO,CAACH,OAAO,CAAC,CACvD,CAAC;EACH;EAEAI,OAAOA,CAACJ,OAAe,EAAU;IAC/B,OAAO,IAAI,CAAC,CAACtE,aAAa,CAAC2D,QAAQ,CACjClD,eAAe,CAAC,MAAM,IAAI,CAAC,CAACX,QAAQ,CAAC4E,OAAO,CAACJ,OAAO,CAAC,CACvD,CAAC;EACH;EAEAK,aAAaA,CAACH,EAAU,EAAQ;IAC9B/D,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACX,QAAQ,CAAC6E,aAAa,CAACb,WAAW,CAACU,EAAE,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC,CAAC;EACJ;EAEAI,UAAUA,CAACnD,MAAc,EAAQ;IAC/BhB,eAAe,CAAC,MAAM;MACpB,IAAI,CAAC,CAACX,QAAQ,CAAC8E,UAAU,CAACnD,MAAM,CAAC;IACnC,CAAC,CAAC;EACJ;AACF;AAEA,MAAMoD,cAAqC,GAAG;EAC5CvF,cAAc,EAAEA,CAACqD,YAAY,EAAElB,MAAM,KACnChB,eAAe,CAAC,MAAMlB,oBAAoB,CAACoD,YAAY,EAAElB,MAAM,CAAC,CAAC;EACnEqD,MAAM,EAAGzE,MAAM,IAAK,IAAIR,kBAAkB,CAACQ,MAAM,CAAC;EAClDb,iBAAiB,EAAEA,CAAA,KAAM,IAAIuF,UAAU,CAACtF,uBAAuB,CAAC,CAAC,CAAC;EAClEC,mBAAmB,EAAGiB,SAAS,IAC7BF,eAAe,CAAC,MAAMd,yBAAyB,CAACe,aAAa,CAACC,SAAS,CAAC,CAAC;AAC7E,CAAC;;AAED;AACA,OAAO,MAAMqE,OAAO,SAASjG,WAAW,CAAC;EAC/BqB,WAAWA,CAAC6E,OAAuB,EAAEC,MAAyB,EAAE;IACtE,KAAK,CAACD,OAAO,EAAEC,MAAM,CAAC;EACxB;;EAEA;EACA,OAAOJ,MAAMA,CAACzE,MAAqB,EAAW;IAC5C,OAAO,IAAI2E,OAAO,CAACH,cAAc,CAACC,MAAM,CAACzE,MAAM,CAAC,EAAEA,MAAM,CAAC6E,MAAM,IAAI,EAAE,CAAC;EACxE;AACF;;AAEA;AACA,OAAO,SAAS1F,iBAAiBA,CAAA,EAAe;EAC9C,OAAOqF,cAAc,CAACrF,iBAAiB,CAAC,CAAC;AAC3C;;AAEA;AACA,OAAO,SAASE,mBAAmBA,CAACiB,SAAgB,EAAU;EAC5D,OAAOkE,cAAc,CAACnF,mBAAmB,CAACiB,SAAS,CAAC;AACtD;;AAEA;AACA,OAAO,SAASrB,cAAcA,CAACqD,YAAoB,EAAElB,MAAc,EAAU;EAC3E,OAAOoD,cAAc,CAACvF,cAAc,CAACqD,YAAY,EAAElB,MAAM,CAAC;AAC5D;AAEA,SAASb,cAAcA,CAACP,MAAqB,EAAwB;EACnE,MAAM8E,SAA6C,GACjD9E,MAAM,CAAC8E,SAAS,KAAK5E,SAAS,GAC1BA,SAAS,GACT;IACE6E,QAAQ,EAAE/E,MAAM,CAAC8E,SAAS,CAACC,QAAQ,IAAI,IAAI;IAC3CC,gBAAgB,EAAEvB,WAAW,CAC3BzD,MAAM,CAAC8E,SAAS,CAACE,gBAAgB,IAAI,MAAM,EAC3C,kBACF,CAAC;IACDC,SAAS,EAAExB,WAAW,CACpBzD,MAAM,CAAC8E,SAAS,CAACG,SAAS,IAAI,MAAM,EACpC,WACF,CAAC;IACDrC,KAAK,EAAE5C,MAAM,CAAC8E,SAAS,CAAClC;EAC1B,CAAC;EACP,MAAMsC,WAAW,GAAGlF,MAAM,CAACC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,GAAGD,MAAM,CAACC,IAAI;EAC3D,MAAMA,IAAmC,GACvCiF,WAAW,KAAKhF,SAAS,IAAIgF,WAAW,KAAK,KAAK,GAC9ChF,SAAS,GACT;IACE6E,QAAQ,EAAEI,mBAAmB,CAACD,WAAW,EAAElF,MAAM,CAAC8E,SAAS,CAAC;IAC5DM,UAAU,EAAEF,WAAW,CAACE,UAAU,IAAI,KAAK;IAC3CC,kBAAkB,EAAE5B,WAAW,CAC7ByB,WAAW,CAACG,kBAAkB,IAAI,MAAM,EACxC,oBACF,CAAC;IACDC,iBAAiB,EAAEC,WAAW,CAC5BL,WAAW,CAACI,iBAAiB,IAAI,EAAE,EACnC,mBACF,CAAC;IACDE,cAAc,EAAED,WAAW,CACzBL,WAAW,CAACM,cAAc,IAAI,IAAI,EAClC,gBACF,CAAC;IACDC,eAAe,EAAEhC,WAAW,CAC1ByB,WAAW,CAACO,eAAe,IAAI,OAAO,EACtC,iBACF,CAAC;IACDC,oBAAoB,EAAEjC,WAAW,CAC/ByB,WAAW,CAACQ,oBAAoB,IAAI,GAAG,EACvC,sBACF,CAAC;IACDC,KAAK,EAAElC,WAAW,CAACyB,WAAW,CAACS,KAAK,IAAI,OAAO,EAAE,OAAO;EAC1D,CAAC;EACP,MAAMC,oBAAoB,GAAG5F,MAAM,CAAC6F,UAAU;EAC9C,MAAMA,UAA6B,GACjCD,oBAAoB,KAAK1F,SAAS,IACjC0F,oBAAoB,CAACE,IAAI,KAAK5F,SAAS,IACtC0F,oBAAoB,CAACG,GAAG,KAAK7F,SAAU,GACrC;IAAE4F,IAAI,EAAE;EAAK,CAAC,GACdF,oBAAoB;EAC1B,OAAO;IACLI,YAAY,EAAEhG,MAAM,CAACgG,YAAY;IACjCC,aAAa,EAAEjG,MAAM,CAACiG,aAAa,IAAI,KAAK;IAC5CC,cAAc,EAAE,CAAC,IAAIlG,MAAM,CAACkG,cAAc,IAAI,EAAE,CAAC,CAAC;IAClDpB,SAAS;IACTqB,UAAU,EAAEnG,MAAM,CAACmG,UAAU,IAAI,KAAK;IACtClG,IAAI;IACJmG,SAAS,EAAE,CAAC,IAAIpG,MAAM,CAACoG,SAAS,IAAI,EAAE,CAAC,CAAC;IACxCC,YAAY,EAAGrG,MAAM,CAACqG,YAAY,IAChCzH,YAAY,CAAC0H,SAAkD;IACjER,IAAI,EAAES,iBAAiB,CAACV,UAAU,CAACC,IAAI,CAAC;IACxCjB,MAAM,EAAE,CAAC,IAAI7E,MAAM,CAAC6E,MAAM,IAAI,EAAE,CAAC,CAAC;IAClCkB,GAAG,EAAEQ,iBAAiB,CAACV,UAAU,CAACE,GAAG;EACvC,CAAC;AACH;AAEA,SAASQ,iBAAiBA,CACxBC,SAAqD,EACjB;EACpC,IAAIA,SAAS,KAAKtG,SAAS,EAAE;IAC3B,OAAOA,SAAS;EAClB;EACA,IAAIsG,SAAS,KAAK,IAAI,EAAE;IACtB,OAAO;MAAEnF,WAAW,EAAEnB;IAAU,CAAC;EACnC;EACA,OAAO;IACLmB,WAAW,EACTmF,SAAS,CAACC,MAAM,KAAKvG,SAAS,GAAGA,SAAS,GAAG,CAAC,GAAGsG,SAAS,CAACC,MAAM;EACrE,CAAC;AACH;AAEA,SAAStB,mBAAmBA,CAC1BlF,IAAwB,EACxB6E,SAA8C,EACrC;EACT,OAAO7E,IAAI,CAAC8E,QAAQ,IAAID,SAAS,EAAEC,QAAQ,IAAI,IAAI;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMnF,eAAe,CAAC;EACX,CAAC8G,cAAc,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAC3C,CAACC,cAAc,GAAG,IAAID,GAAG,CAAiB,CAAC;EACpD,CAACE,IAAI,GAAG,CAAC;EAETvD,QAAQA,CAACwD,MAAc,EAAU;IAC/B,MAAMC,QAAQ,GAAG,IAAI,CAAC,CAACL,cAAc,CAACM,GAAG,CAACF,MAAM,CAAC;IACjD,IAAIC,QAAQ,KAAK7G,SAAS,EAAE;MAC1B,OAAO6G,QAAQ;IACjB;IACA,MAAME,QAAQ,GAAG,IAAI,CAAC,CAACJ,IAAI;IAC3B,IAAI,CAAC,CAACA,IAAI,IAAI,CAAC;IACf,IAAI,CAAC,CAACH,cAAc,CAACQ,GAAG,CAACJ,MAAM,EAAEG,QAAQ,CAAC;IAC1C,IAAI,CAAC,CAACL,cAAc,CAACM,GAAG,CAACD,QAAQ,EAAEH,MAAM,CAAC;IAC1C,OAAOG,QAAQ;EACjB;EAEAE,OAAOA,CAACF,QAAgB,EAAQ;IAC9B,MAAMH,MAAM,GAAG,IAAI,CAAC,CAACF,cAAc,CAACI,GAAG,CAACC,QAAQ,CAAC;IACjD,IAAIH,MAAM,KAAK5G,SAAS,EAAE;MACxB,IAAI,CAAC,CAAC0G,cAAc,CAACQ,MAAM,CAACH,QAAQ,CAAC;MACrC,IAAI,CAAC,CAACP,cAAc,CAACU,MAAM,CAACN,MAAM,CAAC;IACrC;EACF;AACF;AAEA,SAAShG,cAAcA,CACrBD,KAAqB,EACrBlB,aAA8B,EACpB;EACV,MAAM0H,UAAU,GAAGhF,gBAAgB,CACjC;IACEiF,KAAK,EAAEzG,KAAK,CAACyG,KAAK;IAClBC,GAAG,EAAE1G,KAAK,CAAC0G;EACb,CAAC,EACD5H,aACF,CAAa;EACb,IAAI0H,UAAU,CAACE,GAAG,KAAK1I,aAAa,CAAC2I,gBAAgB,EAAE;IACrD7H,aAAa,CAACwH,OAAO,CAACE,UAAU,CAACC,KAAK,CAACjE,MAAM,CAAC;EAChD;EACA,OAAOgE,UAAU;AACnB;AAEA,SAASxF,kBAAkBA,CAAC4F,IAAyB,EAAiB;EACpE,OAAOpF,gBAAgB,CAACoF,IAAI,CAAC;AAC/B;AAEA,SAAS/F,qBAAqBA,CAACD,IAAwB,EAAgB;EACrE,OAAOY,gBAAgB,CAACZ,IAAI,CAAC;AAC/B;AAEA,SAASU,oBAAoBA,CAC3BD,WAAuC,EACjB;EACtB,OAAOG,gBAAgB,CAACH,WAAW,CAAC;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASG,gBAAgBA,CACvBqF,KAAc,EACd/H,aAA+B,EAC/BgI,GAAY,EACH;EACT,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAOC,GAAG,KAAK,QAAQ,IAAIhI,aAAa,KAAKO,SAAS,GAClDP,aAAa,CAAC2D,QAAQ,CAACoE,KAAK,CAAC,GAC7B1F,WAAW,CAAC0F,KAAK,EAAE,YAAY,CAAC;EACtC;EACA,IAAIA,KAAK,YAAYE,WAAW,EAAE;IAChC,OAAOF,KAAK;EACd;EACA,IAAIG,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;IACxB,OAAOA,KAAK,CAAC9F,GAAG,CAAEmG,IAAI,IAAK1F,gBAAgB,CAAC0F,IAAI,EAAEpI,aAAa,CAAC,CAAC;EACnE;EACA,IAAI+H,KAAK,KAAK,IAAI,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC/C,OAAOM,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACR,KAAK,CAAC,CAAC9F,GAAG,CAAC,CAAC,CAACuG,OAAO,EAAEJ,IAAI,CAAC,KAAK,CAC7CI,OAAO,EACP9F,gBAAgB,CAAC0F,IAAI,EAAEpI,aAAa,EAAEwI,OAAO,CAAC,CAC/C,CACH,CAAC;EACH;EACA,OAAOT,KAAK;AACd;AAEA,SAASrH,aAAaA,CAACqH,KAAY,EAAe;EAChD,IAAIA,KAAK,YAAYE,WAAW,EAAE;IAChC,OAAOF,KAAK;EACd;EACA,OAAOhD,UAAU,CAAC0D,IAAI,CAACV,KAAK,CAAC,CAACW,MAAM;AACtC;AAEA,SAAS5E,WAAWA,CAACiE,KAAa,EAAEY,IAAY,EAAU;EACxDC,yBAAyB,CAACb,KAAK,EAAEY,IAAI,CAAC;EACtC,OAAOE,MAAM,CAACd,KAAK,CAAC;AACtB;AAEA,SAASnC,WAAWA,CAACmC,KAAa,EAAEY,IAAY,EAAU;EACxDC,yBAAyB,CAACb,KAAK,EAAEY,IAAI,CAAC;EACtC,IAAIZ,KAAK,GAAG,aAAa,EAAE;IACzB,MAAM,IAAIe,UAAU,CAAC,GAAGH,IAAI,oCAAoC,CAAC;EACnE;EACA,OAAOZ,KAAK;AACd;AAEA,SAAS1F,WAAWA,CAAC0F,KAAa,EAAEY,IAAY,EAAU;EACxD,MAAMI,MAAM,GAAGC,MAAM,CAACjB,KAAK,CAAC;EAC5B,IAAI,CAACiB,MAAM,CAACC,aAAa,CAACF,MAAM,CAAC,IAAIA,MAAM,GAAG,CAAC,EAAE;IAC/C,MAAM,IAAID,UAAU,CAAC,GAAGH,IAAI,0CAA0C,CAAC;EACzE;EACA,OAAOI,MAAM;AACf;AAEA,SAASH,yBAAyBA,CAACb,KAAa,EAAEY,IAAY,EAAQ;EACpE,IAAI,CAACK,MAAM,CAACC,aAAa,CAAClB,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;IAC7C,MAAM,IAAIe,UAAU,CAAC,GAAGH,IAAI,sCAAsC,CAAC;EACrE;AACF;AAEA,SAASlI,eAAeA,CAAIyI,SAAkB,EAAK;EACjD,IAAI;IACF,OAAOA,SAAS,CAAC,CAAC;EACpB,CAAC,CAAC,OAAOrI,KAAK,EAAE;IACd,MAAM+G,GAAG,GAAGuB,WAAW,CAACtI,KAAK,CAAC;IAC9B,QAAQ+G,GAAG;MACT,KAAKxI,aAAa,CAACgK,YAAY;QAAE;UAC/B,MAAM,IAAIvK,iBAAiB,CAAC,CAAC;QAC/B;MACA,KAAKO,aAAa,CAACiK,eAAe;QAAE;UAClC,MAAM,IAAIvK,oBAAoB,CAAC,CAAC;QAClC;MACA,KAAKM,aAAa,CAACkK,YAAY;QAAE;UAC/B,MAAM,IAAItK,iBAAiB,CAACuK,cAAc,CAAC1I,KAAK,CAAC,CAAC;QACpD;MACA;QAAS;UACP,MAAMA,KAAK;QACb;IACF;EACF;AACF;AAEA,SAASsI,WAAWA,CAACtI,KAAc,EAA6B;EAC9D,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,IAAI,KAAK,IAAIA,KAAK,GAC/DA,KAAK,CAAC+G,GAAG,GACVrH,SAAS;AACf;AAEA,SAASgJ,cAAcA,CAAC1I,KAAc,EAAsB;EAC1D,IACE,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACd,OAAO,IAAIA,KAAK,IAChB,OAAOA,KAAK,CAAC8G,KAAK,KAAK,QAAQ,IAC/B9G,KAAK,CAAC8G,KAAK,KAAK,IAAI,IACpB,QAAQ,IAAI9G,KAAK,CAAC8G,KAAK,IACvB,OAAO9G,KAAK,CAAC8G,KAAK,CAAC6B,MAAM,KAAK,QAAQ,EACtC;IACA,OAAO3I,KAAK,CAAC8G,KAAK,CAAC6B,MAAM;EAC3B;EACA,OAAOjJ,SAAS;AAClB","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;
|