@peerbit/stream 4.4.1 → 4.4.2-5da22a7

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.
@@ -5,7 +5,7 @@ import { Cache } from "@peerbit/cache";
5
5
  import { PublicSignKey } from "@peerbit/crypto";
6
6
  import type { SignatureWithKey } from "@peerbit/crypto";
7
7
  import { ACK, AcknowledgeDelivery, AnyWhere, DataMessage, Goodbye, Message, MultiAddrinfo, SeekDelivery, SilentDelivery } from "@peerbit/stream-interface";
8
- import type { IdOptions, PriorityOptions, PublicKeyFromHashResolver, StreamEvents, WaitForPeer, WithExtraSigners, WithMode, WithTo } from "@peerbit/stream-interface";
8
+ import type { IdOptions, PeerRefs, PriorityOptions, PublicKeyFromHashResolver, StreamEvents, WaitForAnyOpts, WaitForPeer, WaitForPresentOpts, WithExtraSigners, WithMode, WithTo } from "@peerbit/stream-interface";
9
9
  import { pipe } from "it-pipe";
10
10
  import { type Pushable } from "it-pushable";
11
11
  import type { Components } from "libp2p/components";
@@ -28,8 +28,6 @@ export interface PeerStreamEvents {
28
28
  "stream:inbound": CustomEvent<never>;
29
29
  "stream:outbound": CustomEvent<never>;
30
30
  close: CustomEvent<never>;
31
- "peer:reachable": CustomEvent<PublicSignKey>;
32
- "peer:unreachable": CustomEvent<PublicSignKey>;
33
31
  }
34
32
  export interface InboundStreamRecord {
35
33
  raw: Stream;
@@ -284,11 +282,8 @@ export declare abstract class DirectStream<Events extends {
284
282
  private createDeliveryPromise;
285
283
  publishMessage(from: PublicSignKey, message: Message, to?: PeerStreams[] | Map<string, PeerStreams>, relayed?: boolean, signal?: AbortSignal): Promise<void>;
286
284
  maybeConnectDirectly(toHash: string, origin: MultiAddrinfo): Promise<void>;
287
- waitFor(peer: PeerId | PublicSignKey | string, options?: {
288
- timeout?: number;
289
- signal?: AbortSignal;
290
- neighbour?: boolean;
291
- }): Promise<void>;
285
+ waitFor(peers: PeerRefs, opts: WaitForPresentOpts): Promise<string[]>;
286
+ waitFor(peers: PeerRefs, opts?: WaitForAnyOpts): Promise<string[]>;
292
287
  getPublicKey(hash: string): PublicSignKey | undefined;
293
288
  get pending(): boolean;
294
289
  maybePruneConnections(): Promise<void>;
@@ -300,9 +295,9 @@ export declare const waitForReachable: (...libs: {
300
295
  peerId: PeerId;
301
296
  }[]) => Promise<void>;
302
297
  export declare const waitForNeighbour: (...libs: {
303
- waitFor: (peer: PeerId | PublicSignKey, options?: {
304
- neighbour?: boolean;
305
- }) => Promise<void>;
298
+ waitFor: (peer: PeerRefs, options?: {
299
+ target?: "neighbor";
300
+ }) => Promise<string[]>;
306
301
  peerId: PeerId;
307
302
  }[]) => Promise<void>;
308
303
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -3,7 +3,7 @@ import { multiaddr } from "@multiformats/multiaddr";
3
3
  import { Circuit } from "@multiformats/multiaddr-matcher";
4
4
  import { Cache } from "@peerbit/cache";
5
5
  import { PublicSignKey, getKeypairFromPrivateKey, getPublicKeyFromPeerId, ready, sha256Base64, toBase64, } from "@peerbit/crypto";
6
- import { ACK, AcknowledgeDelivery, AnyWhere, DataMessage, DeliveryError, Goodbye, InvalidMessageError, Message, MessageHeader, MultiAddrinfo, NotStartedError, SeekDelivery, SilentDelivery, TracedDelivery, deliveryModeHasReceiver, getMsgId, } from "@peerbit/stream-interface";
6
+ import { ACK, AcknowledgeDelivery, AnyWhere, DataMessage, DeliveryError, Goodbye, InvalidMessageError, Message, MessageHeader, MultiAddrinfo, NotStartedError, SeekDelivery, SilentDelivery, TracedDelivery, coercePeerRefsToHashes, deliveryModeHasReceiver, getMsgId, } from "@peerbit/stream-interface";
7
7
  import { AbortError, TimeoutError, delay } from "@peerbit/time";
8
8
  import { abortableSource } from "abortable-iterator";
9
9
  import { anySignal } from "any-signal";
@@ -1075,9 +1075,18 @@ export class DirectStream extends TypedEventEmitter {
1075
1075
  });
1076
1076
  this.peers.set(publicKeyHash, peerStreams);
1077
1077
  this.updateSession(publicKey, -1);
1078
+ // Propagate per-peer stream readiness events to the parent emitter
1079
+ const forwardOutbound = () => this.dispatchEvent(new CustomEvent("stream:outbound"));
1080
+ const forwardInbound = () => this.dispatchEvent(new CustomEvent("stream:inbound"));
1081
+ peerStreams.addEventListener("stream:outbound", forwardOutbound);
1082
+ peerStreams.addEventListener("stream:inbound", forwardInbound);
1078
1083
  peerStreams.addEventListener("close", () => this._removePeer(publicKey), {
1079
1084
  once: true,
1080
1085
  });
1086
+ peerStreams.addEventListener("close", () => {
1087
+ peerStreams.removeEventListener("stream:outbound", forwardOutbound);
1088
+ peerStreams.removeEventListener("stream:inbound", forwardInbound);
1089
+ }, { once: true });
1081
1090
  this.addRouteConnection(this.publicKeyHash, publicKey.hashcode(), publicKey, -1, +new Date(), -1);
1082
1091
  return peerStreams;
1083
1092
  }
@@ -1810,67 +1819,184 @@ export class DirectStream extends TypedEventEmitter {
1810
1819
  }
1811
1820
  }
1812
1821
  }
1813
- async waitFor(peer, options) {
1814
- const hash = typeof peer === "string"
1815
- ? peer
1816
- : (peer instanceof PublicSignKey
1822
+ async waitFor(peerOrPeers, opts = {}) {
1823
+ const { settle = "all", timeout, signal, allowSelf = false, } = opts;
1824
+ const seek = opts.seek === "present" ? "present" : "any";
1825
+ const target = seek === "present"
1826
+ ? "neighbor"
1827
+ : (opts.target ?? "reachable");
1828
+ const isInDialQueue = (h) => this.components.connectionManager
1829
+ .getDialQueue()
1830
+ .some((x) => x.peerId && getPublicKeyFromPeerId(x.peerId).hashcode() === h);
1831
+ const hasConnection = (h) => this.components.connectionManager
1832
+ .getConnections()
1833
+ .some((x) => getPublicKeyFromPeerId(x.remotePeer).hashcode() === h);
1834
+ const isPresent = (h) => isInDialQueue(h) || hasConnection(h);
1835
+ const isReachable = (h) => this.routes.isReachable(this.publicKeyHash, h, 0);
1836
+ const isNeighbor = (h) => {
1837
+ const s = this.peers.get(h);
1838
+ return !!s && s.isReadable && s.isWritable;
1839
+ };
1840
+ const eventsFor = (t) => t === "neighbor"
1841
+ ? ["peer:reachable", "stream:outbound", "stream:inbound"]
1842
+ : ["peer:reachable"];
1843
+ const reached = (h, t) => t === "neighbor" ? isNeighbor(h) : isReachable(h);
1844
+ let hashes = coercePeerRefsToHashes(peerOrPeers);
1845
+ if (!allowSelf) {
1846
+ // filter out self
1847
+ hashes = hashes.filter((h) => h !== this.publicKeyHash);
1848
+ }
1849
+ else {
1850
+ throw new Error("Unallowed to wait for self");
1851
+ }
1852
+ // Admission snapshot
1853
+ const admitted = seek === "present" ? hashes.filter(isPresent) : hashes.slice();
1854
+ if (admitted.length === 0)
1855
+ return [];
1856
+ // Seed successes
1857
+ const wins = new Set();
1858
+ for (const h of admitted)
1859
+ if (reached(h, target))
1860
+ wins.add(h);
1861
+ if (settle === "any" && wins.size > 0)
1862
+ return [...wins];
1863
+ if (settle === "all" && wins.size === admitted.length)
1864
+ return [...wins];
1865
+ // Abort/timeout
1866
+ const abortSignals = [this.closeController.signal];
1867
+ if (signal) {
1868
+ abortSignals.push(signal);
1869
+ }
1870
+ const check = (defer) => {
1871
+ for (const h of admitted)
1872
+ if (!wins.has(h) && reached(h, target))
1873
+ wins.add(h);
1874
+ if (settle === "any" && wins.size > 0)
1875
+ return defer.resolve();
1876
+ if (settle === "all" && wins.size === admitted.length)
1877
+ return defer.resolve();
1878
+ };
1879
+ try {
1880
+ await waitForEvent(this, eventsFor(target), check, {
1881
+ signals: abortSignals,
1882
+ timeout,
1883
+ });
1884
+ return [...wins];
1885
+ }
1886
+ catch (e) {
1887
+ const abortSignal = abortSignals.find((s) => s.aborted);
1888
+ if (abortSignal) {
1889
+ if (abortSignal.reason instanceof Error) {
1890
+ throw abortSignal.reason;
1891
+ }
1892
+ throw new AbortError("Aborted waiting for peers: " + abortSignal.reason);
1893
+ }
1894
+ if (e instanceof Error) {
1895
+ throw e;
1896
+ }
1897
+ if (settle === "all")
1898
+ throw new TimeoutError("Timeout waiting for peers");
1899
+ return [...wins]; // settle:any: return whatever successes we got
1900
+ }
1901
+ }
1902
+ /* async waitFor(
1903
+ peer: PeerId | PublicSignKey | string,
1904
+ options?: {
1905
+ timeout?: number;
1906
+ signal?: AbortSignal;
1907
+ neighbour?: boolean;
1908
+ inflight?: boolean;
1909
+ },
1910
+ ) {
1911
+ const hash =
1912
+ typeof peer === "string"
1817
1913
  ? peer
1818
- : getPublicKeyFromPeerId(peer)).hashcode();
1914
+ : (peer instanceof PublicSignKey
1915
+ ? peer
1916
+ : getPublicKeyFromPeerId(peer)
1917
+ ).hashcode();
1819
1918
  if (hash === this.publicKeyHash) {
1820
1919
  return; // TODO throw error instead?
1821
1920
  }
1822
- const checkIsReachable = (deferred) => {
1921
+
1922
+ if (options?.inflight) {
1923
+ // if peer is not in active connections or dialQueue, return silenty
1924
+ if (
1925
+ !this.peers.has(hash) &&
1926
+ !this.components.connectionManager
1927
+ .getDialQueue()
1928
+ .some((x) => getPublicKeyFromPeerId(x.peerId).hashcode() === hash) &&
1929
+ !this.components.connectionManager
1930
+ .getConnections()
1931
+ .some((x) => getPublicKeyFromPeerId(x.remotePeer).hashcode() === hash)
1932
+ ) {
1933
+ return;
1934
+ }
1935
+ }
1936
+
1937
+ const checkIsReachable = (deferred: DeferredPromise<void>) => {
1823
1938
  if (options?.neighbour && !this.peers.has(hash)) {
1824
1939
  return;
1825
1940
  }
1941
+
1826
1942
  if (!this.routes.isReachable(this.publicKeyHash, hash, 0)) {
1827
1943
  return;
1828
1944
  }
1945
+
1829
1946
  deferred.resolve();
1830
1947
  };
1831
1948
  const abortSignals = [this.closeController.signal];
1832
1949
  if (options?.signal) {
1833
1950
  abortSignals.push(options.signal);
1834
1951
  }
1952
+
1835
1953
  try {
1836
1954
  await waitForEvent(this, ["peer:reachable"], checkIsReachable, {
1837
1955
  signals: abortSignals,
1838
1956
  timeout: options?.timeout,
1839
1957
  });
1840
- }
1841
- catch (error) {
1842
- throw new Error("Stream to " +
1958
+ } catch (error) {
1959
+ throw new Error(
1960
+ "Stream to " +
1843
1961
  hash +
1844
1962
  " from " +
1845
1963
  this.publicKeyHash +
1846
1964
  " does not exist. Connection exist: " +
1847
1965
  this.peers.has(hash) +
1848
1966
  ". Route exist: " +
1849
- this.routes.isReachable(this.publicKeyHash, hash, 0));
1967
+ this.routes.isReachable(this.publicKeyHash, hash, 0),
1968
+ );
1850
1969
  }
1970
+
1851
1971
  if (options?.neighbour) {
1852
- const stream = this.peers.get(hash);
1972
+ const stream = this.peers.get(hash)!;
1853
1973
  try {
1854
- let checkIsWritable = (pDefer) => {
1974
+ let checkIsWritable = (pDefer: DeferredPromise<void>) => {
1855
1975
  if (stream.isReadable && stream.isWritable) {
1856
1976
  pDefer.resolve();
1857
1977
  }
1858
1978
  };
1859
- await waitForEvent(stream, ["stream:outbound", "stream:inbound"], checkIsWritable, {
1860
- signals: abortSignals,
1861
- timeout: options?.timeout,
1862
- });
1863
- }
1864
- catch (error) {
1865
- throw new Error("Stream to " +
1979
+ await waitForEvent(
1980
+ stream,
1981
+ ["stream:outbound", "stream:inbound"],
1982
+ checkIsWritable,
1983
+ {
1984
+ signals: abortSignals,
1985
+ timeout: options?.timeout,
1986
+ },
1987
+ );
1988
+ } catch (error) {
1989
+ throw new Error(
1990
+ "Stream to " +
1866
1991
  stream.publicKey.hashcode() +
1867
1992
  " not ready. Readable: " +
1868
1993
  stream.isReadable +
1869
1994
  ". Writable " +
1870
- stream.isWritable);
1995
+ stream.isWritable,
1996
+ );
1871
1997
  }
1872
1998
  }
1873
- }
1999
+ } */
1874
2000
  getPublicKey(hash) {
1875
2001
  return this.peerKeyHashToPublicKey.get(hash);
1876
2002
  }
@@ -1946,8 +2072,8 @@ export const waitForNeighbour = async (...libs) => {
1946
2072
  if (libs[i].peerId.equals(libs[j].peerId)) {
1947
2073
  throw new Error("Unexpected waiting for self");
1948
2074
  }
1949
- await libs[i].waitFor(libs[j].peerId, { neighbour: true });
1950
- await libs[j].waitFor(libs[i].peerId, { neighbour: true });
2075
+ await libs[i].waitFor(libs[j].peerId, { target: "neighbor" });
2076
+ await libs[j].waitFor(libs[i].peerId, { target: "neighbor" });
1951
2077
  }
1952
2078
  }
1953
2079
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-event.d.ts","sourceRoot":"","sources":["../../src/wait-for-event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAe,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAEvD,wBAAgB,YAAY,CAC3B,OAAO,SAAS,iBAAiB,CAAC,MAAM,CAAC,EACzC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,SAAS,iBAAiB,CACrE,MAAM,CAAC,CACP,GACE,CAAC,GACD,KAAK,EACR,KAAK,SAAS,MAAM,MAAM,GAAG,MAAM,MAAM,EAEzC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,KAAK,EAAE,EACf,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACnE,OAAO,CAAC,EAAE;IACT,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,GACC,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
1
+ {"version":3,"file":"wait-for-event.d.ts","sourceRoot":"","sources":["../../src/wait-for-event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAe,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAEvD,wBAAgB,YAAY,CAC3B,OAAO,SAAS,iBAAiB,CAAC,MAAM,CAAC,EACzC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,SAAS,iBAAiB,CACrE,MAAM,CAAC,CACP,GACE,CAAC,GACD,KAAK,EACR,KAAK,SAAS,MAAM,MAAM,GAAG,MAAM,MAAM,EAEzC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,KAAK,EAAE,EACf,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACnE,OAAO,CAAC,EAAE;IACT,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,GACC,OAAO,CAAC,IAAI,CAAC,CAqCf"}
@@ -1,8 +1,10 @@
1
+ import { AbortError, TimeoutError } from "@peerbit/time";
1
2
  import pDefer, {} from "p-defer";
2
3
  export function waitForEvent(emitter, events, resolver, options) {
3
4
  const deferred = pDefer();
4
- const abortFn = () => deferred.reject(new Error("Aborted waiting for event: " +
5
- String(events.length > 1 ? events.join(", ") : events[0])));
5
+ const abortFn = (e) => deferred.reject(e ??
6
+ new AbortError("Aborted waiting for event: " +
7
+ String(events.length > 1 ? events.join(", ") : events[0])));
6
8
  const checkIsReady = (...args) => resolver(deferred);
7
9
  deferred.promise.finally(() => {
8
10
  for (const event of events) {
@@ -12,9 +14,11 @@ export function waitForEvent(emitter, events, resolver, options) {
12
14
  options?.signals?.forEach((signal) => signal.removeEventListener("abort", abortFn));
13
15
  });
14
16
  for (const event of events) {
15
- emitter.addEventListener(event, checkIsReady);
17
+ emitter.addEventListener(event, (evt) => {
18
+ checkIsReady(event);
19
+ });
16
20
  }
17
- let timeout = setTimeout(abortFn, options?.timeout ?? 10 * 1000);
21
+ let timeout = setTimeout(() => abortFn(new TimeoutError("Timeout waiting for event")), options?.timeout ?? 10 * 1000);
18
22
  options?.signals?.forEach((signal) => signal.addEventListener("abort", abortFn));
19
23
  resolver(deferred);
20
24
  return deferred.promise;
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-event.js","sourceRoot":"","sources":["../../src/wait-for-event.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,EAAE,EAAwB,MAAM,SAAS,CAAC;AAEvD,MAAM,UAAU,YAAY,CAS3B,OAAgB,EAChB,MAAe,EACf,QAAmE,EACnE,OAGC;IAED,MAAM,QAAQ,GAAG,MAAM,EAAQ,CAAC;IAChC,MAAM,OAAO,GAAG,GAAG,EAAE,CACpB,QAAQ,CAAC,MAAM,CACd,IAAI,KAAK,CACR,6BAA6B;QAC5B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC1D,CACD,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE5D,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;QAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,mBAAmB,CAAC,KAAY,EAAE,YAAY,CAAC,CAAC;QACzD,CAAC;QACD,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAC5C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,gBAAgB,CAAC,KAAY,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IACjE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CACzC,CAAC;IACD,QAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,QAAQ,CAAC,OAAO,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"wait-for-event.js","sourceRoot":"","sources":["../../src/wait-for-event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,MAAM,EAAE,EAAwB,MAAM,SAAS,CAAC;AAEvD,MAAM,UAAU,YAAY,CAS3B,OAAgB,EAChB,MAAe,EACf,QAAmE,EACnE,OAGC;IAED,MAAM,QAAQ,GAAG,MAAM,EAAQ,CAAC;IAChC,MAAM,OAAO,GAAG,CAAC,CAAM,EAAE,EAAE,CAC1B,QAAQ,CAAC,MAAM,CACd,CAAC;QACA,IAAI,UAAU,CACb,6BAA6B;YAC5B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC1D,CACF,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE5D,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;QAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,mBAAmB,CAAC,KAAY,EAAE,YAAY,CAAC,CAAC;QACzD,CAAC;QACD,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAC5C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,gBAAgB,CAAC,KAAY,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9C,YAAY,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,GAAG,UAAU,CACvB,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,2BAA2B,CAAC,CAAC,EAC5D,OAAO,EAAE,OAAO,IAAI,EAAE,GAAG,IAAI,CAC7B,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CACzC,CAAC;IACD,QAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,QAAQ,CAAC,OAAO,CAAC;AACzB,CAAC"}
package/package.json CHANGED
@@ -1,96 +1,96 @@
1
1
  {
2
- "name": "@peerbit/stream",
3
- "version": "4.4.1",
4
- "description": "A building block for direct streaming protocols",
5
- "sideEffects": false,
6
- "type": "module",
7
- "types": "./dist/src/index.d.ts",
8
- "typesVersions": {
9
- "*": {
10
- "*": [
11
- "*",
12
- "dist/*",
13
- "dist/src/*",
14
- "dist/src/*/index"
15
- ],
16
- "src/*": [
17
- "*",
18
- "dist/*",
19
- "dist/src/*",
20
- "dist/src/*/index"
21
- ]
22
- }
23
- },
24
- "files": [
25
- "src",
26
- "dist",
27
- "!dist/e2e",
28
- "!dist/test",
29
- "!**/*.tsbuildinfo"
30
- ],
31
- "exports": {
32
- ".": {
33
- "types": "./dist/src/index.d.ts",
34
- "import": "./dist/src/index.js"
35
- }
36
- },
37
- "eslintConfig": {
38
- "extends": "peerbit",
39
- "parserOptions": {
40
- "project": true,
41
- "sourceType": "module"
42
- },
43
- "ignorePatterns": [
44
- "!.aegir.js",
45
- "test/ts-use",
46
- "*.d.ts"
47
- ]
48
- },
49
- "publishConfig": {
50
- "access": "public"
51
- },
52
- "scripts": {
53
- "bench": "node --loader ts-node/esm ./benchmark/index.ts",
54
- "clean": "aegir clean",
55
- "build": "aegir build --no-bundle",
56
- "test": "aegir test --target node",
57
- "lint": "aegir lint"
58
- },
59
- "engines": {
60
- "node": ">=16.15.1"
61
- },
62
- "repository": {
63
- "type": "git",
64
- "url": "git+https://github.com/dao-xyz/peerbit.git"
65
- },
66
- "keywords": [
67
- "peerbit"
68
- ],
69
- "author": "dao.xyz",
70
- "license": "MIT",
71
- "bugs": {
72
- "url": "https://github.com/dao-xyz/peerbit/issues"
73
- },
74
- "homepage": "https://github.com/dao-xyz/peerbit#readme",
75
- "localMaintainers": [
76
- "dao.xyz"
77
- ],
78
- "devDependencies": {
79
- "@peerbit/libp2p-test-utils": "2.1.20",
80
- "@types/yallist": "^4.0.4",
81
- "@types/fast-fifo": "^1.0.2"
82
- },
83
- "dependencies": {
84
- "p-queue": "^8.0.1",
85
- "fast-fifo": "^1.3.2",
86
- "@dao-xyz/borsh": "^5.2.3",
87
- "@peerbit/cache": "2.1.4",
88
- "@peerbit/crypto": "2.3.11",
89
- "@peerbit/stream-interface": "^5.2.5",
90
- "@peerbit/time": "^2.2.0",
91
- "@peerbit/logger": "^1.0.4",
92
- "libp2p": "^2.10.0",
93
- "yallist": "^4.0.0",
94
- "abortable-iterator": "^5.0.1"
95
- }
2
+ "name": "@peerbit/stream",
3
+ "version": "4.4.2-5da22a7",
4
+ "description": "A building block for direct streaming protocols",
5
+ "sideEffects": false,
6
+ "type": "module",
7
+ "types": "./dist/src/index.d.ts",
8
+ "typesVersions": {
9
+ "*": {
10
+ "*": [
11
+ "*",
12
+ "dist/*",
13
+ "dist/src/*",
14
+ "dist/src/*/index"
15
+ ],
16
+ "src/*": [
17
+ "*",
18
+ "dist/*",
19
+ "dist/src/*",
20
+ "dist/src/*/index"
21
+ ]
22
+ }
23
+ },
24
+ "files": [
25
+ "src",
26
+ "dist",
27
+ "!dist/e2e",
28
+ "!dist/test",
29
+ "!**/*.tsbuildinfo"
30
+ ],
31
+ "exports": {
32
+ ".": {
33
+ "types": "./dist/src/index.d.ts",
34
+ "import": "./dist/src/index.js"
35
+ }
36
+ },
37
+ "eslintConfig": {
38
+ "extends": "peerbit",
39
+ "parserOptions": {
40
+ "project": true,
41
+ "sourceType": "module"
42
+ },
43
+ "ignorePatterns": [
44
+ "!.aegir.js",
45
+ "test/ts-use",
46
+ "*.d.ts"
47
+ ]
48
+ },
49
+ "publishConfig": {
50
+ "access": "public"
51
+ },
52
+ "scripts": {
53
+ "bench": "node --loader ts-node/esm ./benchmark/index.ts",
54
+ "clean": "aegir clean",
55
+ "build": "aegir build --no-bundle",
56
+ "test": "aegir test --target node",
57
+ "lint": "aegir lint"
58
+ },
59
+ "engines": {
60
+ "node": ">=16.15.1"
61
+ },
62
+ "repository": {
63
+ "type": "git",
64
+ "url": "git+https://github.com/dao-xyz/peerbit.git"
65
+ },
66
+ "keywords": [
67
+ "peerbit"
68
+ ],
69
+ "author": "dao.xyz",
70
+ "license": "MIT",
71
+ "bugs": {
72
+ "url": "https://github.com/dao-xyz/peerbit/issues"
73
+ },
74
+ "homepage": "https://github.com/dao-xyz/peerbit#readme",
75
+ "localMaintainers": [
76
+ "dao.xyz"
77
+ ],
78
+ "devDependencies": {
79
+ "@peerbit/libp2p-test-utils": "2.1.20-5da22a7",
80
+ "@types/yallist": "^4.0.4",
81
+ "@types/fast-fifo": "^1.0.2"
82
+ },
83
+ "dependencies": {
84
+ "p-queue": "^8.0.1",
85
+ "fast-fifo": "^1.3.2",
86
+ "@dao-xyz/borsh": "^5.2.3",
87
+ "@peerbit/cache": "2.1.4-5da22a7",
88
+ "@peerbit/crypto": "2.3.11-5da22a7",
89
+ "@peerbit/stream-interface": "5.2.6-5da22a7",
90
+ "@peerbit/time": "2.2.0-5da22a7",
91
+ "@peerbit/logger": "1.0.4-5da22a7",
92
+ "libp2p": "^2.10.0",
93
+ "yallist": "^4.0.0",
94
+ "abortable-iterator": "^5.0.1"
95
+ }
96
96
  }
package/src/index.ts CHANGED
@@ -45,15 +45,20 @@ import {
45
45
  SeekDelivery,
46
46
  SilentDelivery,
47
47
  TracedDelivery,
48
+ coercePeerRefsToHashes,
48
49
  deliveryModeHasReceiver,
49
50
  getMsgId,
50
51
  } from "@peerbit/stream-interface";
51
52
  import type {
52
53
  IdOptions,
54
+ PeerRefs,
53
55
  PriorityOptions,
54
56
  PublicKeyFromHashResolver,
55
57
  StreamEvents,
58
+ WaitForAnyOpts,
59
+ WaitForBaseOpts,
56
60
  WaitForPeer,
61
+ WaitForPresentOpts,
57
62
  WithExtraSigners,
58
63
  WithMode,
59
64
  WithTo,
@@ -112,8 +117,6 @@ export interface PeerStreamEvents {
112
117
  "stream:inbound": CustomEvent<never>;
113
118
  "stream:outbound": CustomEvent<never>;
114
119
  close: CustomEvent<never>;
115
- "peer:reachable": CustomEvent<PublicSignKey>;
116
- "peer:unreachable": CustomEvent<PublicSignKey>;
117
120
  }
118
121
 
119
122
  const SEEK_DELIVERY_TIMEOUT = 10e3;
@@ -1483,9 +1486,25 @@ export abstract class DirectStream<
1483
1486
  this.peers.set(publicKeyHash, peerStreams);
1484
1487
  this.updateSession(publicKey, -1);
1485
1488
 
1489
+ // Propagate per-peer stream readiness events to the parent emitter
1490
+ const forwardOutbound = () =>
1491
+ this.dispatchEvent(new CustomEvent("stream:outbound"));
1492
+ const forwardInbound = () =>
1493
+ this.dispatchEvent(new CustomEvent("stream:inbound"));
1494
+ peerStreams.addEventListener("stream:outbound", forwardOutbound);
1495
+ peerStreams.addEventListener("stream:inbound", forwardInbound);
1496
+
1486
1497
  peerStreams.addEventListener("close", () => this._removePeer(publicKey), {
1487
1498
  once: true,
1488
1499
  });
1500
+ peerStreams.addEventListener(
1501
+ "close",
1502
+ () => {
1503
+ peerStreams.removeEventListener("stream:outbound", forwardOutbound);
1504
+ peerStreams.removeEventListener("stream:inbound", forwardInbound);
1505
+ },
1506
+ { once: true },
1507
+ );
1489
1508
 
1490
1509
  this.addRouteConnection(
1491
1510
  this.publicKeyHash,
@@ -2523,21 +2542,158 @@ export abstract class DirectStream<
2523
2542
  }
2524
2543
  }
2525
2544
 
2526
- async waitFor(
2545
+ public async waitFor(
2546
+ peers: PeerRefs,
2547
+ opts: WaitForPresentOpts,
2548
+ ): Promise<string[]>;
2549
+ public async waitFor(
2550
+ peers: PeerRefs,
2551
+ opts?: WaitForAnyOpts,
2552
+ ): Promise<string[]>;
2553
+ public async waitFor(
2554
+ peerOrPeers: PeerRefs,
2555
+ opts: WaitForPresentOpts | WaitForAnyOpts = {},
2556
+ ): Promise<string[]> {
2557
+ const {
2558
+ settle = "all",
2559
+ timeout,
2560
+ signal,
2561
+ allowSelf = false,
2562
+ } = opts as WaitForBaseOpts;
2563
+
2564
+ const seek: "present" | "any" =
2565
+ (opts as WaitForPresentOpts).seek === "present" ? "present" : "any";
2566
+ type Target = "neighbor" | "reachable";
2567
+ const target =
2568
+ seek === "present"
2569
+ ? "neighbor"
2570
+ : ((opts as WaitForAnyOpts).target ?? "reachable");
2571
+
2572
+ const isInDialQueue = (h: string) =>
2573
+ this.components.connectionManager
2574
+ .getDialQueue()
2575
+ .some(
2576
+ (x) => x.peerId && getPublicKeyFromPeerId(x.peerId).hashcode() === h,
2577
+ );
2578
+
2579
+ const hasConnection = (h: string) =>
2580
+ this.components.connectionManager
2581
+ .getConnections()
2582
+ .some((x) => getPublicKeyFromPeerId(x.remotePeer).hashcode() === h);
2583
+
2584
+ const isPresent = (h: string) => isInDialQueue(h) || hasConnection(h);
2585
+
2586
+ const isReachable = (h: string) =>
2587
+ this.routes.isReachable(this.publicKeyHash, h, 0);
2588
+
2589
+ const isNeighbor = (h: string) => {
2590
+ const s = this.peers.get(h);
2591
+ return !!s && s.isReadable && s.isWritable;
2592
+ };
2593
+
2594
+ const eventsFor = (t: Target) =>
2595
+ t === "neighbor"
2596
+ ? ["peer:reachable", "stream:outbound", "stream:inbound"]
2597
+ : ["peer:reachable"];
2598
+
2599
+ const reached = (h: string, t: Target) =>
2600
+ t === "neighbor" ? isNeighbor(h) : isReachable(h);
2601
+
2602
+ let hashes = coercePeerRefsToHashes(peerOrPeers);
2603
+
2604
+ if (!allowSelf) {
2605
+ // filter out self
2606
+ hashes = hashes.filter((h) => h !== this.publicKeyHash);
2607
+ } else {
2608
+ throw new Error("Unallowed to wait for self");
2609
+ }
2610
+
2611
+ // Admission snapshot
2612
+ const admitted: string[] =
2613
+ seek === "present" ? hashes.filter(isPresent) : hashes.slice();
2614
+
2615
+ if (admitted.length === 0) return [];
2616
+
2617
+ // Seed successes
2618
+ const wins = new Set<string>();
2619
+ for (const h of admitted) if (reached(h, target)) wins.add(h);
2620
+
2621
+ if (settle === "any" && wins.size > 0) return [...wins];
2622
+ if (settle === "all" && wins.size === admitted.length) return [...wins];
2623
+
2624
+ // Abort/timeout
2625
+ const abortSignals = [this.closeController.signal];
2626
+ if (signal) {
2627
+ abortSignals.push(signal);
2628
+ }
2629
+
2630
+ const check = (defer: DeferredPromise<void>) => {
2631
+ for (const h of admitted)
2632
+ if (!wins.has(h) && reached(h, target)) wins.add(h);
2633
+ if (settle === "any" && wins.size > 0) return defer.resolve();
2634
+ if (settle === "all" && wins.size === admitted.length)
2635
+ return defer.resolve();
2636
+ };
2637
+
2638
+ try {
2639
+ await waitForEvent(this, eventsFor(target), check, {
2640
+ signals: abortSignals,
2641
+ timeout,
2642
+ });
2643
+ return [...wins];
2644
+ } catch (e) {
2645
+ const abortSignal = abortSignals.find((s) => s.aborted);
2646
+ if (abortSignal) {
2647
+ if (abortSignal.reason instanceof Error) {
2648
+ throw abortSignal.reason;
2649
+ }
2650
+ throw new AbortError(
2651
+ "Aborted waiting for peers: " + abortSignal.reason,
2652
+ );
2653
+ }
2654
+ if (e instanceof Error) {
2655
+ throw e;
2656
+ }
2657
+ if (settle === "all") throw new TimeoutError("Timeout waiting for peers");
2658
+ return [...wins]; // settle:any: return whatever successes we got
2659
+ }
2660
+ }
2661
+
2662
+ /* async waitFor(
2527
2663
  peer: PeerId | PublicSignKey | string,
2528
- options?: { timeout?: number; signal?: AbortSignal; neighbour?: boolean },
2664
+ options?: {
2665
+ timeout?: number;
2666
+ signal?: AbortSignal;
2667
+ neighbour?: boolean;
2668
+ inflight?: boolean;
2669
+ },
2529
2670
  ) {
2530
2671
  const hash =
2531
2672
  typeof peer === "string"
2532
2673
  ? peer
2533
2674
  : (peer instanceof PublicSignKey
2534
- ? peer
2535
- : getPublicKeyFromPeerId(peer)
2536
- ).hashcode();
2675
+ ? peer
2676
+ : getPublicKeyFromPeerId(peer)
2677
+ ).hashcode();
2537
2678
  if (hash === this.publicKeyHash) {
2538
2679
  return; // TODO throw error instead?
2539
2680
  }
2540
2681
 
2682
+ if (options?.inflight) {
2683
+ // if peer is not in active connections or dialQueue, return silenty
2684
+ if (
2685
+ !this.peers.has(hash) &&
2686
+ !this.components.connectionManager
2687
+ .getDialQueue()
2688
+ .some((x) => getPublicKeyFromPeerId(x.peerId).hashcode() === hash) &&
2689
+ !this.components.connectionManager
2690
+ .getConnections()
2691
+ .some((x) => getPublicKeyFromPeerId(x.remotePeer).hashcode() === hash)
2692
+ ) {
2693
+ return;
2694
+ }
2695
+ }
2696
+
2541
2697
  const checkIsReachable = (deferred: DeferredPromise<void>) => {
2542
2698
  if (options?.neighbour && !this.peers.has(hash)) {
2543
2699
  return;
@@ -2562,13 +2718,13 @@ export abstract class DirectStream<
2562
2718
  } catch (error) {
2563
2719
  throw new Error(
2564
2720
  "Stream to " +
2565
- hash +
2566
- " from " +
2567
- this.publicKeyHash +
2568
- " does not exist. Connection exist: " +
2569
- this.peers.has(hash) +
2570
- ". Route exist: " +
2571
- this.routes.isReachable(this.publicKeyHash, hash, 0),
2721
+ hash +
2722
+ " from " +
2723
+ this.publicKeyHash +
2724
+ " does not exist. Connection exist: " +
2725
+ this.peers.has(hash) +
2726
+ ". Route exist: " +
2727
+ this.routes.isReachable(this.publicKeyHash, hash, 0),
2572
2728
  );
2573
2729
  }
2574
2730
 
@@ -2592,15 +2748,15 @@ export abstract class DirectStream<
2592
2748
  } catch (error) {
2593
2749
  throw new Error(
2594
2750
  "Stream to " +
2595
- stream.publicKey.hashcode() +
2596
- " not ready. Readable: " +
2597
- stream.isReadable +
2598
- ". Writable " +
2599
- stream.isWritable,
2751
+ stream.publicKey.hashcode() +
2752
+ " not ready. Readable: " +
2753
+ stream.isReadable +
2754
+ ". Writable " +
2755
+ stream.isWritable,
2600
2756
  );
2601
2757
  }
2602
2758
  }
2603
- }
2759
+ } */
2604
2760
 
2605
2761
  getPublicKey(hash: string): PublicSignKey | undefined {
2606
2762
  return this.peerKeyHashToPublicKey.get(hash);
@@ -2686,9 +2842,9 @@ export const waitForReachable = async (
2686
2842
  export const waitForNeighbour = async (
2687
2843
  ...libs: {
2688
2844
  waitFor: (
2689
- peer: PeerId | PublicSignKey,
2690
- options?: { neighbour?: boolean },
2691
- ) => Promise<void>;
2845
+ peer: PeerRefs,
2846
+ options?: { target?: "neighbor" },
2847
+ ) => Promise<string[]>;
2692
2848
  peerId: PeerId;
2693
2849
  }[]
2694
2850
  ) => {
@@ -2700,8 +2856,8 @@ export const waitForNeighbour = async (
2700
2856
  if (libs[i].peerId.equals(libs[j].peerId)) {
2701
2857
  throw new Error("Unexpected waiting for self");
2702
2858
  }
2703
- await libs[i].waitFor(libs[j].peerId, { neighbour: true });
2704
- await libs[j].waitFor(libs[i].peerId, { neighbour: true });
2859
+ await libs[i].waitFor(libs[j].peerId, { target: "neighbor" });
2860
+ await libs[j].waitFor(libs[i].peerId, { target: "neighbor" });
2705
2861
  }
2706
2862
  }
2707
2863
  };
@@ -1,4 +1,5 @@
1
1
  import type { TypedEventEmitter } from "@libp2p/interface";
2
+ import { AbortError, TimeoutError } from "@peerbit/time";
2
3
  import pDefer, { type DeferredPromise } from "p-defer";
3
4
 
4
5
  export function waitForEvent<
@@ -19,12 +20,13 @@ export function waitForEvent<
19
20
  },
20
21
  ): Promise<void> {
21
22
  const deferred = pDefer<void>();
22
- const abortFn = () =>
23
+ const abortFn = (e: any) =>
23
24
  deferred.reject(
24
- new Error(
25
- "Aborted waiting for event: " +
26
- String(events.length > 1 ? events.join(", ") : events[0]),
27
- ),
25
+ e ??
26
+ new AbortError(
27
+ "Aborted waiting for event: " +
28
+ String(events.length > 1 ? events.join(", ") : events[0]),
29
+ ),
28
30
  );
29
31
 
30
32
  const checkIsReady = (...args: any[]) => resolver(deferred);
@@ -40,9 +42,14 @@ export function waitForEvent<
40
42
  });
41
43
 
42
44
  for (const event of events) {
43
- emitter.addEventListener(event as any, checkIsReady);
45
+ emitter.addEventListener(event as any, (evt) => {
46
+ checkIsReady(event);
47
+ });
44
48
  }
45
- let timeout = setTimeout(abortFn, options?.timeout ?? 10 * 1000);
49
+ let timeout = setTimeout(
50
+ () => abortFn(new TimeoutError("Timeout waiting for event")),
51
+ options?.timeout ?? 10 * 1000,
52
+ );
46
53
  options?.signals?.forEach((signal) =>
47
54
  signal.addEventListener("abort", abortFn),
48
55
  );