@pkcprotocol/pkc-js 0.0.29 → 0.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -18,7 +18,7 @@ Note: IPFS files are immutable, fetched by their CID, which is a hash of their c
18
18
  ### Schema:
19
19
 
20
20
  ```js
21
- Address: string // a PKC author, community or multisub "address" can be a crypto domain like memes.bso, an IPNS name, an ethereum address, etc. How to resolve ENS names https://github.com/pkcprotocol/pkc-js/blob/master/docs/ens.md
21
+ Address: string // a PKC author, community or multisub "address" can be a crypto domain like memes.bso, an IPNS name, an ethereum address, etc.
22
22
  Publication {
23
23
  author: Author
24
24
  communityPublicKey: string // IPNS public key of the community this publication is directed to
@@ -143,7 +143,7 @@ Nft {
143
143
  address: string // address of the NFT contract
144
144
  id: string // tokenId or index of the specific NFT used, must be string type, not number
145
145
  signature: Signature // proof that author.address owns the nft
146
- // how to resolve and verify NFT signatures https://github.com/pkcprotocol/pkc-js/blob/master/docs/nft.md
146
+ // how to resolve and verify NFT signatures https://github.com/bitsocialnet/evm-contract-challenge/blob/master/docs/nft.md
147
147
  }
148
148
  Signature {
149
149
  signature: string // data in base64
@@ -20,6 +20,7 @@ export declare enum messages {
20
20
  ERR_FAILED_TO_DIAL_ANY_PEERS_PROVIDING_CID = "Failed to dial and connect to any peers providing a CID",
21
21
  ERR_GET_COMMUNITY_TIMED_OUT = "pkc.getCommunity({address}) timed out",
22
22
  ERR_TIMEOUT_WAITING_FOR_PUBSUB_TOPIC_PEERS = "Timeout waiting for propagation of pubsub topic peers",
23
+ ERR_PUBSUB_TOPIC_PEER_WAIT_ABORTED = "Aborted while waiting for a peer to subscribe to a pubsub topic",
23
24
  ERR_TIMED_OUT_RM_MFS_FILE = "Timed out removing MFS paths. We may need to nuke the whole MFS directory and republish everything",
24
25
  ERR_ABORTED_RESOLVING_TEXT_RECORD = "Aborted resolving text record on domain",
25
26
  ERR_CALLED_COMMUNITY_STOP_WITHOUT_UPDATE = "community.stop() called without calling update() first",
@@ -21,6 +21,7 @@ export var messages;
21
21
  messages["ERR_FAILED_TO_DIAL_ANY_PEERS_PROVIDING_CID"] = "Failed to dial and connect to any peers providing a CID";
22
22
  messages["ERR_GET_COMMUNITY_TIMED_OUT"] = "pkc.getCommunity({address}) timed out";
23
23
  messages["ERR_TIMEOUT_WAITING_FOR_PUBSUB_TOPIC_PEERS"] = "Timeout waiting for propagation of pubsub topic peers";
24
+ messages["ERR_PUBSUB_TOPIC_PEER_WAIT_ABORTED"] = "Aborted while waiting for a peer to subscribe to a pubsub topic";
24
25
  messages["ERR_TIMED_OUT_RM_MFS_FILE"] = "Timed out removing MFS paths. We may need to nuke the whole MFS directory and republish everything";
25
26
  messages["ERR_ABORTED_RESOLVING_TEXT_RECORD"] = "Aborted resolving text record on domain";
26
27
  // PKC errors
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const version = "0.0.29";
1
+ export declare const version = "0.0.31";
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by config/generate-version.js — do not edit
2
- export const version = "0.0.29";
2
+ export const version = "0.0.31";
3
3
  //# sourceMappingURL=generated-version.js.map
@@ -62,6 +62,12 @@ export async function createLibp2pJsClientOrUseExistingOne(pkcOptions) {
62
62
  ...pkcOptions.libp2pOptions,
63
63
  // Configure connection manager to handle more concurrent streams
64
64
  services: {
65
+ // Helia's libp2pDefaults.services include relay (circuitRelayServer), autoTLS,
66
+ // upnp, kadDHT, autoNAT, and a delegatedRouting client pointed at public-network
67
+ // defaults. Spreading all of those in is wrong for a client-side node — we'd be
68
+ // hosting a circuit relay, doing external TLS issuance, port-forwarding, and
69
+ // querying the public IPFS network in addition to the routers the user configured.
70
+ // Keep the service map narrow and explicit. (See review notes 2026-05-08.)
65
71
  identify: identify(),
66
72
  pubsub: gossipsub(),
67
73
  // powers @helia/ipns pubsub fast-path: fetch latest record from new topic peers (PR ipfs/helia#906)
@@ -70,14 +76,21 @@ export async function createLibp2pJsClientOrUseExistingOne(pkcOptions) {
70
76
  ...pkcOptions.libp2pOptions?.services
71
77
  }
72
78
  },
73
- blockstore: new MemoryBlockstore(), // TODO use indexed db here
79
+ // MemoryBlockstore: blocks lost on restart, every cold start re-fetches from network.
80
+ // Future optimization: blockstore-fs (Node) / blockstore-idb (browser). Not prioritized
81
+ // - pkc-js is browser-first and per-session usage dominates today.
82
+ blockstore: new MemoryBlockstore(),
74
83
  blockBrokers: [bitswap()],
75
84
  start: false,
76
85
  ...pkcOptions.heliaOptions
77
86
  };
78
87
  const helia = await createHelia(mergedHeliaInit);
79
- //@ts-expect-error
80
- helia.routing.routers = [helia.routing.routers[0]]; // remove gateway routing
88
+ // Helia's default content routers are [Libp2pRouter, HTTPGatewayRouter]. We use our own
89
+ // gateway-fan-out logic in base-client-manager, so the HTTP gateway router here is
90
+ // redundant and adds latency. Filter by class name (not index) so a future helia release
91
+ // that re-orders the array can't silently leave the gateway in or drop libp2p routing.
92
+ //@ts-expect-error — helia.routing.routers is internal
93
+ helia.routing.routers = helia.routing.routers.filter((r) => r.constructor.name !== "HTTPGatewayRouter");
81
94
  log("Initialized libp2pjs helia with key", pkcOptions.key, "peer id", helia.libp2p.peerId.toString());
82
95
  const pubsubEventHandler = new EventEmitter();
83
96
  helia.libp2p.services.pubsub.addEventListener("message", (evt) => {
@@ -90,7 +103,40 @@ export async function createLibp2pJsClientOrUseExistingOne(pkcOptions) {
90
103
  const ipnsNameResolver = ipns(helia, {
91
104
  routers: [createIpnsPubusubRouter(helia)]
92
105
  });
93
- ipnsNameResolver.routers = ipnsNameResolver.routers.slice(1); // remove gateway ipns routing and keep only pubsub
106
+ // @helia/ipns constructs routers as [LocalStoreRouting, HeliaRouting, ...userRouters].
107
+ // We drop LocalStoreRouting because pkc-js never publishes IPNS via @helia/ipns (kubo
108
+ // does that), so the local cache is always empty and just adds a wasted lookup. Keep
109
+ // HeliaRouting (HTTP delegated routing via helia.routing.routers) and our PubSubRouting.
110
+ // Filter by class name so a future @helia/ipns release that re-orders the array can't
111
+ // silently drop our pubsub router.
112
+ ipnsNameResolver.routers = ipnsNameResolver.routers.filter((r) => r?.constructor?.name !== "LocalStoreRouting");
113
+ // Side-channel awaitable warmup: gossipsub's pubsub.subscribe(topic) is sync and returns
114
+ // void, so we can't make it awaitable without breaking @helia/ipns and other internal
115
+ // callers that expect the sync contract. Instead, we expose `warmupForTopic(topic)` and
116
+ // dedupe in-flight warmups via a per-topic Map, so concurrent callers share a single
117
+ // findProviders/dial cycle.
118
+ const WARMUP_MAX_PEERS = 4;
119
+ const warmupPromisesByTopic = new Map();
120
+ const warmupForTopic = (topic, options) => {
121
+ if (helia.libp2p.services.pubsub.getSubscribers(topic).length > 0)
122
+ return Promise.resolve();
123
+ const existing = warmupPromisesByTopic.get(topic);
124
+ if (existing)
125
+ return existing;
126
+ const p = connectToPubsubPeers({
127
+ helia,
128
+ pubsubTopic: topic,
129
+ maxPeers: WARMUP_MAX_PEERS,
130
+ options,
131
+ log: Logger("pkc-js:helia:pubsub:warmup")
132
+ })
133
+ .then(() => undefined)
134
+ .finally(() => {
135
+ warmupPromisesByTopic.delete(topic);
136
+ });
137
+ warmupPromisesByTopic.set(topic, p);
138
+ return p;
139
+ };
94
140
  const throwIfHeliaIsStoppingOrStopped = () => {
95
141
  if (helia.libp2p.status === "stopped" || helia.libp2p.status === "stopping")
96
142
  throw new PKCError("ERR_HELIAS_STOPPING_OR_STOPPED", {
@@ -109,24 +155,18 @@ export async function createLibp2pJsClientOrUseExistingOne(pkcOptions) {
109
155
  log.trace("Resolving ipns name", ipnsName, "with options", options);
110
156
  // @helia/ipns 9.2.x pubsub router throws NotFoundError if zero subscribers exist
111
157
  // for the topic at .get() time. Await peer warmup so the resolver sees a populated
112
- // subscriber list (the wrapped pubsub.subscribe also kicks off warmup, but
113
- // fire-and-forget — too late for the first .get()).
158
+ // subscriber list (the monkey-patched pubsub.subscribe also kicks off warmup,
159
+ // but fire-and-forget — too late for the first .get()).
114
160
  const ipnsPubsubTopic = ipnsNameToIpnsOverPubsubTopic(ipnsNameAsPeerId.toString());
115
161
  let warmupOutcome = { attempted: false };
116
162
  if (helia.libp2p.services.pubsub.getSubscribers(ipnsPubsubTopic).length === 0) {
117
163
  const warmupStart = Date.now();
118
164
  try {
119
- const conns = await connectToPubsubPeers({
120
- helia,
121
- pubsubTopic: ipnsPubsubTopic,
122
- maxPeers: 2,
123
- options,
124
- log: Logger("pkc-js:helia:ipns:name.resolve:warmup")
125
- });
165
+ await warmupForTopic(ipnsPubsubTopic, options);
126
166
  warmupOutcome = {
127
167
  attempted: true,
128
168
  durationMs: Date.now() - warmupStart,
129
- connectedPeerCount: conns.length
169
+ subscribersAfterWarmup: helia.libp2p.services.pubsub.getSubscribers(ipnsPubsubTopic).length
130
170
  };
131
171
  }
132
172
  catch (warmupErr) {
@@ -182,33 +222,23 @@ export async function createLibp2pJsClientOrUseExistingOne(pkcOptions) {
182
222
  peers: async (topic, options) => helia.libp2p.services.pubsub.getSubscribers(topic),
183
223
  publish: async (topic, data, options) => {
184
224
  throwIfHeliaIsStoppingOrStopped();
185
- if (helia.libp2p.services.pubsub.getSubscribers(topic).length === 0) {
186
- console.log("before", "pubsub publish", "connectToPeersProvidingCid", topic);
187
- await connectToPubsubPeers({
188
- helia,
189
- pubsubTopic: topic,
190
- maxPeers: 2,
191
- options,
192
- log: Logger("pkc-js:helia:pubsub:publish:connectToPeersProvidingCid")
193
- });
194
- console.log("after", "pubsub publish", "connectToPeersProvidingCid", topic);
225
+ // Gossipsub publish only delivers to MESH peers (not all subscribers). Gate on
226
+ // mesh-peer count: a peer can be a subscriber but still in fanout / pending-graft.
227
+ const meshPeerCount = helia.libp2p.services.pubsub.getMeshPeers(topic).length;
228
+ if (meshPeerCount === 0) {
229
+ log.trace("pubsub publish: no mesh peers, warming up for topic", topic);
230
+ await warmupForTopic(topic, options);
231
+ log.trace("pubsub publish: warmup complete for topic", topic);
195
232
  }
196
233
  const res = await helia.libp2p.services.pubsub.publish(topic, data);
197
234
  log("Published new data to pubsub topic (string, e.g. community address)", topic, "Direct gossipsub recipients (libp2p peer IDs, NOT signer/community addresses):", res.recipients.map((p) => p.toString()));
198
235
  },
199
236
  subscribe: async (topic, handler, options) => {
200
237
  throwIfHeliaIsStoppingOrStopped();
201
- if (helia.libp2p.services.pubsub.getSubscribers(topic).length === 0) {
202
- console.log("before pubsub-subscribe", "connectToPeersProvidingCid", topic);
203
- await connectToPubsubPeers({
204
- helia,
205
- pubsubTopic: topic,
206
- maxPeers: 2,
207
- options,
208
- log: Logger("pkc-js:helia:pubsub:subscribe:connectToPeersProvidingCid")
209
- });
210
- console.log("after pubsub-subscribe", "connectToPeersProvidingCid", topic);
211
- }
238
+ // Await warmup so the caller's first message arrives on a populated mesh.
239
+ // The monkey-patched native subscribe (below) also kicks off warmup, but
240
+ // fire-and-forget; this awaits the same in-flight promise via the dedup map.
241
+ await warmupForTopic(topic, options);
212
242
  //@ts-expect-error
213
243
  pubsubEventHandler.on(topic, handler);
214
244
  helia.libp2p.services.pubsub.subscribe(topic);
@@ -233,6 +263,23 @@ export async function createLibp2pJsClientOrUseExistingOne(pkcOptions) {
233
263
  return; // stop already in progress or over-released
234
264
  clientFromMap.countOfUsesOfInstance--;
235
265
  if (clientFromMap.countOfUsesOfInstance === 0) {
266
+ // Remove from the lookup map BEFORE awaiting helia.stop() so a concurrent
267
+ // createLibp2pJsClientOrUseExistingOne() can't grab a mid-stopping client.
268
+ delete libp2pJsClients[pkcOptions.key];
269
+ // Tear down the IPNS pubsub router's internal subscription state.
270
+ // PubSubRouting (from @helia/ipns/routing) implements Startable and tracks its
271
+ // own subscriptions list — without stop() those subscriptions leak past helia.
272
+ for (const router of ipnsNameResolver.routers) {
273
+ const lifecycle = router;
274
+ if (typeof lifecycle.stop === "function") {
275
+ try {
276
+ await lifecycle.stop();
277
+ }
278
+ catch (e) {
279
+ log.error("Error stopping IPNS router", router?.constructor?.name, e);
280
+ }
281
+ }
282
+ }
236
283
  for (const topic of helia.libp2p.services.pubsub.getTopics())
237
284
  helia.libp2p.services.pubsub.unsubscribe(topic);
238
285
  try {
@@ -241,26 +288,17 @@ export async function createLibp2pJsClientOrUseExistingOne(pkcOptions) {
241
288
  catch (e) {
242
289
  log.error("Error stopping helia", e);
243
290
  }
244
- delete libp2pJsClients[pkcOptions.key];
245
291
  log("Helia/libp2p-js stopped with key", pkcOptions.key, "and peer id", helia.libp2p.peerId.toString());
246
292
  }
247
293
  }
248
294
  };
249
295
  const originalSubscribe = helia.libp2p.services.pubsub.subscribe.bind(helia.libp2p.services.pubsub);
250
- const connectToPeersProvidingTopic = async (topic) => {
251
- console.log("before", "native pubsub-subscribe", "connectToPeersProvidingTopic", topic);
252
- await connectToPubsubPeers({
253
- helia,
254
- pubsubTopic: topic,
255
- maxPeers: 2,
256
- log: Logger("pkc-js:helia:pubsub:subscribe:connectToPeersProvidingTopic")
257
- });
258
- console.log("after", "native pubsub-subscribe", "connectToPeersProvidingTopic", topic, "done");
259
- };
296
+ // Monkey-patch the native pubsub.subscribe so internal callers (notably @helia/ipns) also
297
+ // get peer warmup. Sync return preserves the gossipsub contract; warmup runs fire-and-forget
298
+ // here and shares its in-flight promise with awaitable callers via warmupForTopic's dedup map.
260
299
  helia.libp2p.services.pubsub.subscribe = (topic) => {
261
300
  throwIfHeliaIsStoppingOrStopped();
262
- if (helia.libp2p.services.pubsub.getSubscribers(topic).length === 0)
263
- connectToPeersProvidingTopic(topic).catch((err) => log.error("Error connecting to peers providing topic", err));
301
+ warmupForTopic(topic).catch((err) => log.error("warmup failed for topic", topic, err));
264
302
  originalSubscribe(topic);
265
303
  };
266
304
  const fullInstanceWithOptions = {
@@ -1 +1 @@
1
- {"version":3,"file":"helia-for-pkc.js","sourceRoot":"","sources":["../../../src/helia/helia-for-pkc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helia-for-pkc.js","sourceRoot":"","sources":["../../../src/helia/helia-for-pkc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,qBAAqB,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,MAAM,IAAI,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,MAAM,MAAM,cAAc,CAAC;AAIlC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEvC,MAAM,eAAe,GAA4C,EAAE,CAAC,CAAC,0CAA0C;AAC/G,MAAM,uBAAuB,GAAqD,EAAE,CAAC;AAErF,wEAAwE;AACxE,gHAAgH;AAEhH,2KAA2K;AAC3K,SAAS,yBAAyB,CAAC,OAAiB;IAChD,MAAM,UAAU,GAAuE,EAAE,CAAC;IAC1F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,+BAA+B,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrE,UAAU,CAAC,kBAAkB,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACnC,2DAA2D;YAC3D,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;YAC9D,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;IACN,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACtD,UAAoI;IAEpI,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,MAAM;QAAE,MAAM,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAClH,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,cAAc,EAAE,CAAC;QACjB,cAAc,CAAC,qBAAqB,EAAE,CAAC;QACvC,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,MAAM,qBAAqB,GAAG,uBAAuB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACtE,IAAI,qBAAqB,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC;QAC3C,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,uBAAuB,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;QAClD,MAAM,mBAAmB,GAAG,cAAc,EAAE,CAAC;QAC7C,MAAM,eAAe,GAAG;YACpB,MAAM,EAAE;gBACJ,sCAAsC;gBACtC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,2GAA2G;gBACtI,aAAa,EAAE,SAAS;gBACxB,gLAAgL;gBAChL,UAAU,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,GAAG,qBAAqB,CAAC;gBACjF,GAAG,UAAU,CAAC,aAAa;gBAC3B,iEAAiE;gBAEjE,QAAQ,EAAE;oBACN,+EAA+E;oBAC/E,iFAAiF;oBACjF,gFAAgF;oBAChF,6EAA6E;oBAC7E,mFAAmF;oBACnF,2EAA2E;oBAC3E,QAAQ,EAAE,QAAQ,EAAE;oBACpB,MAAM,EAAE,SAAS,EAAE;oBACnB,oGAAoG;oBACpG,KAAK,EAAE,WAAW,EAAE;oBACpB,GAAG,yBAAyB,CAAC,UAAU,CAAC,kBAAkB,CAAC;oBAC3D,GAAG,UAAU,CAAC,aAAa,EAAE,QAAQ;iBACxC;aACJ;YACD,sFAAsF;YACtF,wFAAwF;YACxF,mEAAmE;YACnE,UAAU,EAAE,IAAI,gBAAgB,EAAE;YAClC,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC;YACzB,KAAK,EAAE,KAAK;YACZ,GAAG,UAAU,CAAC,YAAY;SACY,CAAC;QAE3C,MAAM,KAAK,GAA0B,MAAM,WAAW,CAAC,eAAe,CAAC,CAAC;QAExE,wFAAwF;QACxF,mFAAmF;QACnF,yFAAyF;QACzF,uFAAuF;QACvF,sDAAsD;QACtD,KAAK,CAAC,OAAO,CAAC,OAAO,GAAI,KAAK,CAAC,OAAO,CAAC,OAAoD,CAAC,MAAM,CAC9F,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,mBAAmB,CACpD,CAAC;QAEF,GAAG,CAAC,qCAAqC,EAAE,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEtG,MAAM,kBAAkB,GAAG,IAAI,YAAY,EAAE,CAAC;QAE9C,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7D,GAAG,CAAC,KAAK,CAAC,oFAAoF,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAElH,kBAAkB;YAClB,MAAM,YAAY,GAAgC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5H,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE9B,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE;YACjC,OAAO,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;SAC5C,CAAC,CAAC;QAEH,uFAAuF;QACvF,sFAAsF;QACtF,qFAAqF;QACrF,yFAAyF;QACzF,sFAAsF;QACtF,mCAAmC;QACnC,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,KAAK,mBAAmB,CAAC,CAAC;QAEhH,yFAAyF;QACzF,sFAAsF;QACtF,wFAAwF;QACxF,qFAAqF;QACrF,4BAA4B;QAC5B,MAAM,gBAAgB,GAAG,CAAC,CAAC;QAC3B,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC/D,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,OAAkC,EAAiB,EAAE;YACxF,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAC5F,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAC9B,MAAM,CAAC,GAAG,oBAAoB,CAAC;gBAC3B,KAAK;gBACL,WAAW,EAAE,KAAK;gBAClB,QAAQ,EAAE,gBAAgB;gBAC1B,OAAO;gBACP,GAAG,EAAE,MAAM,CAAC,4BAA4B,CAAC;aAC5C,CAAC;iBACG,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;iBACrB,OAAO,CAAC,GAAG,EAAE;gBACV,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YACP,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,+BAA+B,GAAG,GAAG,EAAE;YACzC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;gBACvE,MAAM,IAAI,QAAQ,CAAC,gCAAgC,EAAE;oBACjD,QAAQ,EAAE,UAAU,CAAC,GAAG;oBACxB,KAAK;oBACL,GAAG,oBAAoB,CAAC,KAAK,CAAC;iBACjC,CAAC,CAAC;QACX,CAAC,CAAC;QAEF,MAAM,2BAA2B,GAAsD;YACnF,IAAI,EAAE;gBACF,OAAO,EAAE,CAAC,QAAgB,EAAE,OAAgC,EAAE,EAAE;oBAC5D,qCAAqC;oBACrC,+BAA+B,EAAE,CAAC;oBAClC,KAAK,SAAS,CAAC,CAAC,SAAS;wBACrB,MAAM,gBAAgB,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;wBAC9F,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;wBAEpE,iFAAiF;wBACjF,mFAAmF;wBACnF,8EAA8E;wBAC9E,wDAAwD;wBACxD,MAAM,eAAe,GAAG,6BAA6B,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAKnF,IAAI,aAAa,GAAkB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;wBACxD,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BAC/B,IAAI,CAAC;gCACD,MAAM,cAAc,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gCAC/C,aAAa,GAAG;oCACZ,SAAS,EAAE,IAAI;oCACf,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW;oCACpC,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,MAAM;iCAC9F,CAAC;4BACN,CAAC;4BAAC,OAAO,SAAS,EAAE,CAAC;gCACjB,aAAa,GAAG;oCACZ,SAAS,EAAE,IAAI;oCACf,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW;oCACpC,KAAK,EAAE,SAAkB;iCAC5B,CAAC;gCACF,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;4BAChF,CAAC;wBACL,CAAC;wBAED,IAAI,CAAC;4BACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;4BACvF,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;4BAC1B,OAAO;wBACX,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACX,MAAM,KAAK,GAAU,GAAG,CAAC;4BACzB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB;gCACtE,MAAM,IAAI,QAAQ,CAAC,oCAAoC,EAAE;oCACrD,UAAU,EAAE,GAAG;oCACf,QAAQ;oCACR,eAAe;oCACf,kBAAkB,EAAE,OAAO;oCAC3B,aAAa;oCACb,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,MAAM;oCAC7F,WAAW,EAAE,UAAU,CAAC,kBAAkB;oCAC1C,GAAG,oBAAoB,CAAC,KAAK,CAAC;iCACjC,CAAC,CAAC;;gCACF,MAAM,GAAG,CAAC;wBACnB,CAAC;oBACL,CAAC;oBAED,OAAO,SAAS,EAAE,CAAC;gBACvB,CAAC;aACJ;YACD,GAAG,CAAC,QAAgB,EAAE,OAAO;gBACzB,+BAA+B,EAAE,CAAC;gBAClC,iDAAiD;gBACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzB,iCAAiC;oBACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAEpD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACJ,eAAe;oBACf,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;YACD,MAAM,EAAE;gBACJ,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE;gBACxD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;gBACnF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBACpC,+BAA+B,EAAE,CAAC;oBAClC,+EAA+E;oBAC/E,mFAAmF;oBACnF,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;oBAC9E,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;wBACtB,GAAG,CAAC,KAAK,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;wBACxE,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;wBACrC,GAAG,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;oBAClE,CAAC;oBAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACpE,GAAG,CACC,qEAAqE,EACrE,KAAK,EACL,gFAAgF,EAChF,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC1C,CAAC;gBACN,CAAC;gBACD,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;oBACzC,+BAA+B,EAAE,CAAC;oBAClC,0EAA0E;oBAC1E,yEAAyE;oBACzE,6EAA6E;oBAC7E,MAAM,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAErC,kBAAkB;oBAClB,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBACtC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC;gBACD,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;oBAC3C,+BAA+B,EAAE,CAAC;oBAClC,kBAAkB;oBAClB,kBAAkB,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAClD,IAAI,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;wBAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACvG,CAAC;aACJ;YACD,KAAK,CAAC,GAAG,CACL,KAA8E,EAAE,iDAAiD;YACjI,OAAiF;gBAEjF,MAAM,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC5E,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,OAAO;gBACd,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACtD,IAAI,CAAC,aAAa;oBAAE,OAAO,CAAC,uBAAuB;gBACnD,IAAI,aAAa,CAAC,qBAAqB,IAAI,CAAC;oBAAE,OAAO,CAAC,4CAA4C;gBAClG,aAAa,CAAC,qBAAqB,EAAE,CAAC;gBACtC,IAAI,aAAa,CAAC,qBAAqB,KAAK,CAAC,EAAE,CAAC;oBAC5C,0EAA0E;oBAC1E,2EAA2E;oBAC3E,OAAO,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAEvC,kEAAkE;oBAClE,+EAA+E;oBAC/E,+EAA+E;oBAC/E,KAAK,MAAM,MAAM,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;wBAC5C,MAAM,SAAS,GAAG,MAA+C,CAAC;wBAClE,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BACvC,IAAI,CAAC;gCACD,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;4BAC3B,CAAC;4BAAC,OAAO,CAAC,EAAE,CAAC;gCACT,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;4BAC1E,CAAC;wBACL,CAAC;oBACL,CAAC;oBAED,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE;wBAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBAC9G,IAAI,CAAC;wBACD,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;oBACvB,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;oBACzC,CAAC;oBAED,GAAG,CAAC,kCAAkC,EAAE,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC3G,CAAC;YACL,CAAC;SACJ,CAAC;QAEF,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEpG,0FAA0F;QAC1F,6FAA6F;QAC7F,+FAA+F;QAC/F,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;YAC/C,+BAA+B,EAAE,CAAC;YAClC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACvF,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC;QAEF,MAAM,uBAAuB,GAAG;YAC5B,KAAK;YACL,+BAA+B,EAAE,2BAA2B;YAC5D,WAAW,EAAE,OAAO;YACpB,eAAe,EAAE,gBAAgB;YACjC,kBAAkB,EAAE,eAAe;YACnC,qBAAqB,EAAE,CAAC;YACxB,sBAAsB,EAAE,UAAU;YAClC,GAAG,EAAE,UAAU,CAAC,GAAG;SACtB,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,uBAAuB,CAAC,CAAC;QAE3D,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,GAAG,CAAC,kCAAkC,EAAE,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEvG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QAEzC,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrE,IAAI,CAAC,oBAAoB;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAE5F,IAAI,CAAC;QACD,OAAO,MAAM,oBAAoB,CAAC;IACtC,CAAC;YAAS,CAAC;QACP,OAAO,uBAAuB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;AACL,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { createHelia } from "helia";
2
2
  import type { KuboRpcClient } from "../types.js";
3
3
  import type { PubsubRoutingComponents } from "@helia/ipns/routing";
4
+ import type { GossipSub } from "@libp2p/gossipsub";
4
5
  export interface HeliaWithKuboRpcClientFunctions extends Pick<NonNullable<KuboRpcClient["_client"]>, "add" | "cat" | "pubsub" | "stop"> {
5
6
  add: KuboRpcClient["_client"]["add"];
6
7
  name: Pick<KuboRpcClient["_client"]["name"], "resolve">;
@@ -9,10 +10,13 @@ export interface HeliaWithKuboRpcClientFunctions extends Pick<NonNullable<KuboRp
9
10
  stop: KuboRpcClient["_client"]["stop"];
10
11
  }
11
12
  type baseHelia = Awaited<ReturnType<typeof createHelia>>;
13
+ type GossipSubWithMeshPeers = GossipSub & {
14
+ getMeshPeers(topic: string): string[];
15
+ };
12
16
  export interface HeliaWithLibp2pPubsub extends baseHelia {
13
17
  libp2p: baseHelia["libp2p"] & {
14
18
  services: baseHelia["libp2p"]["services"] & {
15
- pubsub: PubsubRoutingComponents["libp2p"]["services"]["pubsub"];
19
+ pubsub: PubsubRoutingComponents["libp2p"]["services"]["pubsub"] & GossipSubWithMeshPeers;
16
20
  };
17
21
  };
18
22
  }
@@ -1,5 +1,4 @@
1
1
  import type { HeliaWithLibp2pPubsub } from "./types.js";
2
- import type { PeerId } from "@libp2p/interface";
3
2
  import Logger from "../logger.js";
4
3
  export interface HeliaDebugContext {
5
4
  heliaPeerId: string;
@@ -12,6 +11,12 @@ export interface HeliaDebugContext {
12
11
  }[];
13
12
  }
14
13
  export declare function getHeliaDebugContext(helia: HeliaWithLibp2pPubsub): HeliaDebugContext;
14
+ export declare function waitForTopicSubscriber({ helia, topic, timeoutMs, abortSignal }: {
15
+ helia: HeliaWithLibp2pPubsub;
16
+ topic: string;
17
+ timeoutMs: number;
18
+ abortSignal?: AbortSignal;
19
+ }): Promise<void>;
15
20
  export declare function connectToPubsubPeers({ helia, pubsubTopic, maxPeers, options, log }: {
16
21
  helia: HeliaWithLibp2pPubsub;
17
22
  pubsubTopic: string;
@@ -21,4 +26,3 @@ export declare function connectToPubsubPeers({ helia, pubsubTopic, maxPeers, opt
21
26
  signal?: AbortSignal;
22
27
  };
23
28
  }): Promise<Awaited<ReturnType<typeof helia.libp2p.dial>>[]>;
24
- export declare function waitForTopicPeers(helia: HeliaWithLibp2pPubsub, topic: string, minPeers?: number, timeoutMs?: number): Promise<PeerId[]>;
@@ -1,5 +1,6 @@
1
1
  import { PKCError } from "../pkc-error.js";
2
2
  import { pubsubTopicToDhtKeyCid } from "../util.js";
3
+ const TOPIC_SUBSCRIBER_WAIT_TIMEOUT_MS = 10_000;
3
4
  export function getHeliaDebugContext(helia) {
4
5
  const connections = helia.libp2p.getConnections();
5
6
  return {
@@ -13,45 +14,99 @@ export function getHeliaDebugContext(helia) {
13
14
  }))
14
15
  };
15
16
  }
17
+ // Event-based wait for a remote peer to subscribe to `topic` on our gossipsub.
18
+ // Resolves the moment gossipsub fires 'subscription-change' for the topic and the
19
+ // subscriber list has actually become non-empty, or rejects on timeout/abort.
20
+ // Used as both the in-loop abort trigger and the post-loop graft wait by
21
+ // connectToPubsubPeers below.
22
+ export function waitForTopicSubscriber({ helia, topic, timeoutMs, abortSignal }) {
23
+ const pubsub = helia.libp2p.services.pubsub;
24
+ if (pubsub.getSubscribers(topic).length > 0)
25
+ return Promise.resolve();
26
+ if (abortSignal?.aborted)
27
+ return Promise.reject(new PKCError("ERR_PUBSUB_TOPIC_PEER_WAIT_ABORTED", { topic }));
28
+ return new Promise((resolve, reject) => {
29
+ const cleanup = () => {
30
+ pubsub.removeEventListener("subscription-change", onChange);
31
+ clearInterval(safetyPoll);
32
+ clearTimeout(timer);
33
+ abortSignal?.removeEventListener("abort", onAbort);
34
+ };
35
+ const tryResolve = () => {
36
+ if (pubsub.getSubscribers(topic).length > 0) {
37
+ cleanup();
38
+ resolve();
39
+ return true;
40
+ }
41
+ return false;
42
+ };
43
+ const onChange = (e) => {
44
+ if (e.detail.subscriptions.some((s) => s.topic === topic && s.subscribe))
45
+ tryResolve();
46
+ };
47
+ const onAbort = () => {
48
+ cleanup();
49
+ reject(new PKCError("ERR_PUBSUB_TOPIC_PEER_WAIT_ABORTED", { topic }));
50
+ };
51
+ const timer = setTimeout(() => {
52
+ cleanup();
53
+ reject(new PKCError("ERR_TIMEOUT_WAITING_FOR_PUBSUB_TOPIC_PEERS", { topic, timeoutMs }));
54
+ }, timeoutMs);
55
+ // Defensive safety poll: 'subscription-change' is the primary fast-path trigger, but we
56
+ // also re-check periodically in case the event already fired before this listener attached
57
+ // or gossipsub state and event delivery diverge briefly.
58
+ const safetyPoll = setInterval(tryResolve, 1000);
59
+ pubsub.addEventListener("subscription-change", onChange);
60
+ abortSignal?.addEventListener("abort", onAbort, { once: true });
61
+ // Race-safe re-check: a subscriber may have appeared in the window between the initial
62
+ // check and addEventListener. Without this, we could miss the only event we'll ever get.
63
+ tryResolve();
64
+ });
65
+ }
66
+ // Ambient peer discovery for gossipsub. js-libp2p's pubsub intentionally does not discover
67
+ // topic peers itself; that is the application's responsibility (same pattern Helia and
68
+ // js-ipfs use): hash the topic to a CID, contentRouting.findProviders(), then dial.
69
+ // See https://github.com/libp2p/js-libp2p/blob/main/doc/CONFIGURATION.md ("ambient peer discovery").
16
70
  export async function connectToPubsubPeers({ helia, pubsubTopic, maxPeers, options, log }) {
17
- // TODO need to check if this hangs or not
18
71
  const contentCid = pubsubTopicToDhtKeyCid(pubsubTopic);
19
72
  const peersWithContent = [];
20
73
  const connectedPeersWithContent = [];
21
74
  const peerDialToError = {};
22
- // Create an abort controller to handle hanging findProviders
75
+ // Single abort signal feeds both findProviders and the topic-subscriber wait.
23
76
  const abortController = new AbortController();
24
77
  const combinedSignal = options?.signal ? AbortSignal.any([options.signal, abortController.signal]) : abortController.signal;
25
- let shouldStop = false;
26
- // Set up periodic check for pubsub subscribers
27
- const checkInterval = setInterval(() => {
28
- if (helia.libp2p.services.pubsub.getSubscribers(pubsubTopic).length > 0 && !abortController.signal.aborted) {
29
- log.trace("Aborting findProviders iterator - found pubsub subscribers for topic", pubsubTopic);
78
+ // Event-based watcher for a peer subscribing to our topic on gossipsub.
79
+ // Started immediately so we don't miss subscription-change events that fire during the dial loop.
80
+ // When it resolves, abort findProviders so the loop exits cleanly.
81
+ const subscriberAppearedPromise = waitForTopicSubscriber({
82
+ helia,
83
+ topic: pubsubTopic,
84
+ timeoutMs: TOPIC_SUBSCRIBER_WAIT_TIMEOUT_MS,
85
+ abortSignal: combinedSignal
86
+ });
87
+ subscriberAppearedPromise.then(() => {
88
+ if (!abortController.signal.aborted) {
89
+ log.trace("Aborting findProviders iterator - gossipsub subscription-change observed for topic", pubsubTopic);
30
90
  abortController.abort();
31
- shouldStop = true;
32
91
  }
33
- }, 100); // Check every 100ms
92
+ }, () => {
93
+ // swallow timeout/abort — handled in the post-loop await below
94
+ });
95
+ const findProvidersStart = Date.now();
34
96
  try {
35
- const findProvidersLabel = `findProviders:${pubsubTopic}`;
36
- console.time(findProvidersLabel);
37
97
  for await (const peer of helia.libp2p.contentRouting.findProviders(contentCid, { ...options, signal: combinedSignal })) {
38
- if (shouldStop) {
39
- log.trace("Breaking findProviders loop due to shouldStop flag (pubsub subscribers found)");
40
- break;
41
- }
42
98
  peersWithContent.push(peer);
43
99
  try {
44
- const conn = await helia.libp2p.dial(peer.id, options); // will be a no-op if we're already connected
45
- // if it succeeds, means we can connect to this peer
46
- connectedPeersWithContent.push(conn);
47
- if (helia.libp2p.services.pubsub.getSubscribers(pubsubTopic).length > 0) {
48
- shouldStop = true;
49
- log.trace("Breaking findProviders loop after successful dial and finding pubsub subscribers");
50
- break;
100
+ // Make sure dial-by-peerId can resolve addresses: not all content routers (notably
101
+ // delegated-routing-v1-http) auto-merge discovered multiaddrs into the peerstore,
102
+ // and dial(peerId) without addrs fails with "no addresses for peer".
103
+ if (peer.multiaddrs?.length) {
104
+ await helia.libp2p.peerStore.merge(peer.id, { multiaddrs: peer.multiaddrs });
51
105
  }
106
+ const conn = await helia.libp2p.dial(peer.id, options); // no-op if already connected
107
+ connectedPeersWithContent.push(conn);
52
108
  if (connectedPeersWithContent.length >= maxPeers) {
53
109
  log.trace("Breaking findProviders loop after reaching maxPeers", maxPeers);
54
- shouldStop = true;
55
110
  break;
56
111
  }
57
112
  }
@@ -66,23 +121,23 @@ export async function connectToPubsubPeers({ helia, pubsubTopic, maxPeers, optio
66
121
  log.trace("Failed to dial IPNS-Over-Pubsub peer", peer.id.toString(), "Due to error", e);
67
122
  }
68
123
  }
69
- console.timeEnd(findProvidersLabel);
124
+ log.trace("findProviders for", pubsubTopic, "took", Date.now() - findProvidersStart, "ms");
70
125
  }
71
126
  catch (e) {
72
- e.details = {
73
- ...e.details,
74
- contentCid,
75
- options,
76
- maxPeersBeforeWeStopLookingForProviders: maxPeers,
77
- connectedPeersWithContent,
78
- peersWithContent,
79
- peerDialToError,
80
- ...getHeliaDebugContext(helia)
81
- };
82
- throw e;
83
- }
84
- finally {
85
- clearInterval(checkInterval);
127
+ // findProviders may throw the abort error we caused ourselves — that's fine, fall through.
128
+ if (!abortController.signal.aborted) {
129
+ e.details = {
130
+ ...e.details,
131
+ contentCid,
132
+ options,
133
+ maxPeersBeforeWeStopLookingForProviders: maxPeers,
134
+ connectedPeersWithContent,
135
+ peersWithContent,
136
+ peerDialToError,
137
+ ...getHeliaDebugContext(helia)
138
+ };
139
+ throw e;
140
+ }
86
141
  }
87
142
  log.trace("Connected to", connectedPeersWithContent.length, "peers", "for content", contentCid);
88
143
  if (connectedPeersWithContent.length === 0) {
@@ -96,24 +151,16 @@ export async function connectToPubsubPeers({ helia, pubsubTopic, maxPeers, optio
96
151
  log.error(error);
97
152
  throw error;
98
153
  }
99
- else
100
- return connectedPeersWithContent;
101
- }
102
- export async function waitForTopicPeers(helia, topic, minPeers = 1, timeoutMs = 10000) {
103
- // after connecting to peers, we need to get the peers from the pubsub service
104
- const startTime = Date.now();
105
- while (Date.now() - startTime < timeoutMs) {
106
- const subscribers = helia.libp2p.services.pubsub.getSubscribers(topic);
107
- if (subscribers.length >= minPeers) {
108
- return subscribers;
109
- }
110
- // Wait 100ms before checking again
111
- await new Promise((resolve) => setTimeout(resolve, 100));
154
+ // Post-loop graft wait: if findProviders exhausted or maxPeers was reached before
155
+ // any subscription-change event arrived, wait now so the immediately-following IPNS
156
+ // resolve doesn't walk an empty subscriber list and throw RecordNotFoundError.
157
+ try {
158
+ await subscriberAppearedPromise;
112
159
  }
113
- throw new PKCError("ERR_TIMEOUT_WAITING_FOR_PUBSUB_TOPIC_PEERS", {
114
- topic,
115
- minPeers,
116
- timeoutMs
117
- });
160
+ catch (graftErr) {
161
+ log.trace("gossipsub subscription-change did not arrive within timeout after warmup; resolver may still fall back", graftErr);
162
+ // best-effort — don't surface as a warmup failure, let the resolver attempt anyway.
163
+ }
164
+ return connectedPeersWithContent;
118
165
  }
119
166
  //# sourceMappingURL=util.js.map