@pkcprotocol/pkc-js 0.0.98 → 0.0.100

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.
Files changed (82) hide show
  1. package/README.md +1 -1
  2. package/dist/browser/clients/base-client-manager.js +26 -4
  3. package/dist/browser/clients/base-client-manager.js.map +1 -1
  4. package/dist/browser/community/community-client-manager.d.ts +5 -0
  5. package/dist/browser/community/community-client-manager.js +134 -23
  6. package/dist/browser/community/community-client-manager.js.map +1 -1
  7. package/dist/browser/errors.d.ts +2 -0
  8. package/dist/browser/errors.js +2 -0
  9. package/dist/browser/errors.js.map +1 -1
  10. package/dist/browser/generated-version.d.ts +1 -1
  11. package/dist/browser/generated-version.js +1 -1
  12. package/dist/browser/generated-version.js.map +1 -1
  13. package/dist/browser/helia/helia-for-pkc.js +47 -1
  14. package/dist/browser/helia/helia-for-pkc.js.map +1 -1
  15. package/dist/browser/helia/util.js +4 -3
  16. package/dist/browser/helia/util.js.map +1 -1
  17. package/dist/browser/pkc-error.d.ts +1 -1
  18. package/dist/browser/publications/publication.d.ts +1 -0
  19. package/dist/browser/publications/publication.js +76 -19
  20. package/dist/browser/publications/publication.js.map +1 -1
  21. package/dist/browser/runtime/node/community/local-community/challenges.js +131 -17
  22. package/dist/browser/runtime/node/community/local-community/challenges.js.map +1 -1
  23. package/dist/browser/runtime/node/community/local-community/defaults.d.ts +1 -0
  24. package/dist/browser/runtime/node/community/local-community/defaults.js +5 -0
  25. package/dist/browser/runtime/node/community/local-community/defaults.js.map +1 -1
  26. package/dist/browser/runtime/node/community/local-community/ipns-publishing.js +7 -1
  27. package/dist/browser/runtime/node/community/local-community/ipns-publishing.js.map +1 -1
  28. package/dist/browser/runtime/node/community/local-community/lifecycle.js +5 -4
  29. package/dist/browser/runtime/node/community/local-community/lifecycle.js.map +1 -1
  30. package/dist/browser/runtime/node/community/local-community.d.ts +2 -0
  31. package/dist/browser/runtime/node/community/local-community.js +8 -1
  32. package/dist/browser/runtime/node/community/local-community.js.map +1 -1
  33. package/dist/browser/test/mock-ipfs-client.js +6 -0
  34. package/dist/browser/test/mock-ipfs-client.js.map +1 -1
  35. package/dist/browser/test/test-util.js +1 -1
  36. package/dist/browser/test/test-util.js.map +1 -1
  37. package/dist/bundled/bundle-manifest.json +25 -25
  38. package/dist/bundled/chunks/{helia-for-pkc-CHv28C49.js → helia-for-pkc-Cq6VWePV.js} +28 -2
  39. package/dist/bundled/chunks/{local-community-Dslc-qve.js → local-community-CcHbWkoT.js} +1 -1
  40. package/dist/bundled/chunks/{local-community-QnF2Xg4Q.js → local-community-ph-pl_pg.js} +92 -20
  41. package/dist/bundled/chunks/{node-B1frjYEE.js → node-2PkhAerB.js} +56 -27
  42. package/dist/bundled/chunks/{rpc-local-community-BUicljzl.js → rpc-local-community-BK1FjUk2.js} +68 -20
  43. package/dist/bundled/chunks/{schema-KFikvQok.js → schema-CYR820MD.js} +3 -1
  44. package/dist/bundled/chunks/{util-b2CRgd4P.js → util-gAVw5PrE.js} +2 -2
  45. package/dist/bundled/index.js +1 -1
  46. package/dist/bundled/rpc/src/index.js +4 -4
  47. package/dist/node/clients/base-client-manager.js +26 -4
  48. package/dist/node/clients/base-client-manager.js.map +1 -1
  49. package/dist/node/community/community-client-manager.d.ts +5 -0
  50. package/dist/node/community/community-client-manager.js +134 -23
  51. package/dist/node/community/community-client-manager.js.map +1 -1
  52. package/dist/node/errors.d.ts +2 -0
  53. package/dist/node/errors.js +2 -0
  54. package/dist/node/errors.js.map +1 -1
  55. package/dist/node/generated-version.d.ts +1 -1
  56. package/dist/node/generated-version.js +1 -1
  57. package/dist/node/generated-version.js.map +1 -1
  58. package/dist/node/helia/helia-for-pkc.js +47 -1
  59. package/dist/node/helia/helia-for-pkc.js.map +1 -1
  60. package/dist/node/helia/util.js +4 -3
  61. package/dist/node/helia/util.js.map +1 -1
  62. package/dist/node/pkc-error.d.ts +1 -1
  63. package/dist/node/publications/publication.d.ts +1 -0
  64. package/dist/node/publications/publication.js +76 -19
  65. package/dist/node/publications/publication.js.map +1 -1
  66. package/dist/node/runtime/node/community/local-community/challenges.js +131 -17
  67. package/dist/node/runtime/node/community/local-community/challenges.js.map +1 -1
  68. package/dist/node/runtime/node/community/local-community/defaults.d.ts +1 -0
  69. package/dist/node/runtime/node/community/local-community/defaults.js +5 -0
  70. package/dist/node/runtime/node/community/local-community/defaults.js.map +1 -1
  71. package/dist/node/runtime/node/community/local-community/ipns-publishing.js +7 -1
  72. package/dist/node/runtime/node/community/local-community/ipns-publishing.js.map +1 -1
  73. package/dist/node/runtime/node/community/local-community/lifecycle.js +5 -4
  74. package/dist/node/runtime/node/community/local-community/lifecycle.js.map +1 -1
  75. package/dist/node/runtime/node/community/local-community.d.ts +2 -0
  76. package/dist/node/runtime/node/community/local-community.js +8 -1
  77. package/dist/node/runtime/node/community/local-community.js.map +1 -1
  78. package/dist/node/test/mock-ipfs-client.js +6 -0
  79. package/dist/node/test/mock-ipfs-client.js.map +1 -1
  80. package/dist/node/test/test-util.js +1 -1
  81. package/dist/node/test/test-util.js.map +1 -1
  82. package/package.json +1 -1
package/README.md CHANGED
@@ -536,7 +536,7 @@ An object which may have the following keys:
536
536
 
537
537
  | Name | Type | Default | Description |
538
538
  | ---- | ---- | ------- | ----------- |
539
- | ipfsGatewayUrls | `string[]` or `undefined` | `['https://ipfsgateway.xyz', 'https://gateway.plebpubsub.xyz', 'https://gateway.forumindex.com']` | Optional URLs of IPFS gateways |
539
+ | ipfsGatewayUrls | `string[]` or `undefined` | `['https://ipfsgateway.xyz', 'https://gateway.plebpubsub.xyz', 'https://gateway.forumindex.com']` | Optional URLs of IPFS gateways. Gateway readers have no push channel: a new community record only becomes visible when the gateway's IPNS cache for that name expires (the record's ttl, `publishInterval` = 20s by default, or the operator's `Ipns.MaxCacheTTL` if lower) and pkc-js re-polls at that moment, so expect up to one ttl of update latency (about 10s on average) against sub-second delivery over `kuboRpcClientsOptions` or `libp2pJsClientsOptions`, which receive records over IPNS-over-pubsub. Prefer those transports when the environment allows it and use gateways as a fallback. |
540
540
  | kuboRpcClientsOptions | `(string \| KuboRpcClientOptions)[]` or `undefined` | `undefined` | Optional URLs of Kubo IPFS APIs or [KuboRpcClientOptions](https://www.npmjs.com/package/kubo-rpc-client#options). Use `'http://localhost:5001/api/v0'` to point at a local Kubo node. Cannot be combined with `libp2pJsClientsOptions`. |
541
541
  | pubsubKuboRpcClientsOptions | `(string \| KuboRpcClientOptions)[]` or `undefined` | `[{url: 'https://pubsubprovider.xyz/api/v0'}, {url: 'https://plebpubsub.xyz/api/v0'}]` | Optional URLs or [KuboRpcClientOptions](https://www.npmjs.com/package/kubo-rpc-client#options) used for pubsub publishing when `kuboRpcClientsOptions` isn't available, like in the browser |
542
542
  | pkcRpcClientsOptions | `string[]` or `undefined` | `undefined` | Optional websocket URLs of PKC RPC servers, required to run a community from a browser/electron/webview |
@@ -268,6 +268,10 @@ export class BaseClientsManager {
268
268
  url,
269
269
  status: res?.status,
270
270
  statusText: res?.statusText,
271
+ // A 304 carries the matched entity-tag and the cache countdown; the community
272
+ // update loop uses both for conditional-request memory and poll pacing (#328)
273
+ responseEtag: res?.headers?.get("etag"),
274
+ responseCacheControl: res?.headers?.get("cache-control"),
271
275
  fetchError: String(e),
272
276
  fetchErrorCode: nodeError?.code,
273
277
  fetchErrorErrno: nodeError?.errno,
@@ -389,9 +393,18 @@ export class BaseClientsManager {
389
393
  //@ts-expect-error
390
394
  e.details = { ...e.details, url, loadOpts, wasRequestAborted: loadOpts.abortController.signal.aborted };
391
395
  this.postFetchGatewayFailure(gateway, loadOpts, e);
392
- this._pkc._stats
393
- .recordGatewayFailure(gateway, loadOpts.recordIpfsType)
394
- .catch((err) => log.error("failed to report gateway error", err));
396
+ // A 304 or an "already loaded this record" abort is the gateway HEALTHILY confirming
397
+ // the record we hold — recording it as a failure made every idle poll poison the
398
+ // gateway's score in the sorting stats (issue #328). Everything else stays a failure.
399
+ const gatewayConfirmedCurrentRecord = e.details?.status === 304 || String(e.code).startsWith("ERR_GATEWAY_ABORTING_LOADING");
400
+ if (gatewayConfirmedCurrentRecord)
401
+ this._pkc._stats
402
+ .recordGatewaySuccess(gateway, loadOpts.recordIpfsType, Date.now() - timeBefore)
403
+ .catch((err) => log.error("Failed to report gateway success", err));
404
+ else
405
+ this._pkc._stats
406
+ .recordGatewayFailure(gateway, loadOpts.recordIpfsType)
407
+ .catch((err) => log.error("failed to report gateway error", err));
395
408
  return { error: e };
396
409
  }
397
410
  }
@@ -605,7 +618,16 @@ export class BaseClientsManager {
605
618
  const seedScopeOptions = "_helia" in kuboRpcOrHelia && loadOpts.bitswapSessionSeedScopeIpnsPubsubTopic
606
619
  ? { bitswapSessionSeedScopeIpnsPubsubTopic: loadOpts.bitswapSessionSeedScopeIpnsPubsubTopic }
607
620
  : undefined;
608
- const rawData = await all(ipfsClient.cat(cidV0, { length: loadOpts.maxFileSizeBytes, timeout: `${loadOpts.timeoutMs}ms`, ...seedScopeOptions }));
621
+ // The caller's signal goes to cat() as well as to the pTimeout below: pTimeout only
622
+ // abandons the promise on abort, and a helia cat left running would keep opening bitswap
623
+ // sessions and retrying "no providers" until its own timeout fired, long after the
624
+ // comment/community/pkc that asked for it was stopped (issue #345).
625
+ const rawData = await all(ipfsClient.cat(cidV0, {
626
+ length: loadOpts.maxFileSizeBytes,
627
+ timeout: `${loadOpts.timeoutMs}ms`,
628
+ signal: loadOpts.abortSignal,
629
+ ...seedScopeOptions
630
+ }));
609
631
  const data = uint8ArrayConcat(rawData);
610
632
  const fileContent = uint8ArrayToString(data);
611
633
  if (typeof fileContent !== "string") {
@@ -1 +1 @@
1
- {"version":3,"file":"base-client-manager.js","sourceRoot":"","sources":["../../../src/clients/base-client-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-client-manager.js","sourceRoot":"","sources":["../../../src/clients/base-client-manager.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,8 @@ export declare class CommunityClientsManager extends PKCClientsManager {
30
30
  private _suppressUpdatingStateForNameResolution;
31
31
  _ipnsLoadingOperation?: RetryOperation;
32
32
  _updateCidsAlreadyLoaded: LimitedSet<string>;
33
+ private _gatewayEtagsOfLoadedRecords;
34
+ private _gatewayMaxAgeSecondsFromLastPoll?;
33
35
  private _subscribedIpnsArrivalTopics;
34
36
  private _ipnsArrivalListener?;
35
37
  private _ipnsArrivalClient?;
@@ -59,6 +61,9 @@ export declare class CommunityClientsManager extends PKCClientsManager {
59
61
  updateOnce(): Promise<void>;
60
62
  startUpdatingLoop(): Promise<void>;
61
63
  stopUpdatingLoop(): Promise<void>;
64
+ private _computeGatewayPollMs;
65
+ private _parseMaxAgeSeconds;
66
+ private _normalizedEtagOfResponse;
62
67
  private _onIpnsRecordArrival;
63
68
  private _consumePendingIpnsArrivals;
64
69
  private _syncIpnsArrivalSubscriptions;
@@ -26,12 +26,28 @@ export const MAX_FILE_SIZE_BYTES_FOR_COMMUNITY_IPFS = 1024 * 1024; // 1mb
26
26
  // missed push at an aggressive interval is therefore ~30s, still 10x under riding out kubo
27
27
  // 0.43's default 300s record ttl the way the pre-#311 cache-gated poll did.
28
28
  const FORCED_IPNS_NETWORK_REVALIDATION_MIN_INTERVAL_MS = 30_000;
29
+ // Gateway poll pacing (issue #328). When the last poll carried no usable max-age countdown
30
+ // (gateway sent no Cache-Control, or every request failed outright), poll at a flat 10s instead
31
+ // of pkc.updateInterval: a no-change poll is a single conditional GET answered with a bodyless
32
+ // 304, so the old 60s default poll was pure self-inflicted staleness, not thrift. The floor
33
+ // guards against a gateway advertising max-age=0 (an uncached or non-caching gateway) turning
34
+ // the loop into a busy poll; both are ceilinged by pkc.updateInterval so a sub-10s test
35
+ // updateInterval keeps its faster cadence.
36
+ const GATEWAY_FALLBACK_POLL_MS = 10_000;
37
+ const GATEWAY_POLL_FLOOR_MS = 1_000;
29
38
  export class CommunityClientsManager extends PKCClientsManager {
30
39
  constructor(community) {
31
40
  super(community._pkc);
32
41
  this._suppressUpdatingStateForNameResolution = 0;
33
42
  this._ipnsLoadingOperation = undefined;
34
43
  this._updateCidsAlreadyLoaded = new LimitedSet(30); // we will keep track of the last 50 community update cids that we loaded
44
+ // Gateway freshness plumbing (issue #328). Entity-tags (quotes preserved, W/ stripped) of
45
+ // gateway responses whose record we already consumed. Etags are opaque per RFC 9110 —
46
+ // kubo happens to serve the resolved CID in whatever version it was added as, but a
47
+ // conformant gateway may suffix or reformat them — so responses are remembered verbatim and
48
+ // echoed back verbatim, never reconstructed from CIDs alone. Small on purpose: only the
49
+ // current record's etag can ever produce a 304, older ones just pad the header.
50
+ this._gatewayEtagsOfLoadedRecords = new LimitedSet(5);
35
51
  // Event-driven update loop plumbing (issue #308), used only when the default record resolver
36
52
  // is a libp2p-js client. Pending arrivals survive an arrival that lands while updateOnce is
37
53
  // mid-flight, so the loop re-runs immediately instead of parking for a full safety-net
@@ -273,8 +289,11 @@ export class CommunityClientsManager extends PKCClientsManager {
273
289
  // signal, and the loop only needs a slow jittered safety-net poll for pushes it missed
274
290
  // (mesh partition, record published while we had no subscribers). The kubo-RPC resolver
275
291
  // keeps the 1s poll: kubo's namesys cache is not observable from here, so pkc has no
276
- // push signal for it yet (issue #308 tracks giving it the same treatment); gateways
277
- // already poll at pkc.updateInterval.
292
+ // push signal for it yet (issue #308 tracks giving it the same treatment). Gateways
293
+ // poll on the max-age countdown their responses advertise (issue #328, see
294
+ // _computeGatewayPollMs) — polling faster than that countdown cannot return a newer
295
+ // record, and polling slower (the old flat pkc.updateInterval, 60s in production) was
296
+ // the dominant term in gateway readers' staleness.
278
297
  const defaultLibp2pJsClient = defaultIpfsClient && "_helia" in defaultIpfsClient ? defaultIpfsClient : undefined;
279
298
  // Arm the arrival subscription BEFORE the first updateOnce: the first cycle spans the
280
299
  // resolve, the community IPFS fetch, parsing and signature verification — seconds on a
@@ -318,7 +337,9 @@ export class CommunityClientsManager extends PKCClientsManager {
318
337
  await this._sleepUntilIpnsArrivalOrTimeoutOrAbort({ ms: safetyNetMs, signal: this._community._getStopAbortSignal() });
319
338
  }
320
339
  else {
321
- const updateInterval = areWeConnectedToKuboOrHelia ? 1000 : this._pkc.updateInterval; // if we're on kubo we should resolve IPNS every second
340
+ // kubo-RPC resolves IPNS every second (no observable push signal, issue #308);
341
+ // gateways pace on the advertised max-age countdown (issue #328).
342
+ const updateInterval = areWeConnectedToKuboOrHelia ? 1000 : this._computeGatewayPollMs();
322
343
  await sleepUntilTimeoutOrAbort(updateInterval, this._community._getStopAbortSignal());
323
344
  }
324
345
  }
@@ -330,8 +351,46 @@ export class CommunityClientsManager extends PKCClientsManager {
330
351
  async stopUpdatingLoop() {
331
352
  this._ipnsLoadingOperation?.stop();
332
353
  this._updateCidsAlreadyLoaded.clear();
354
+ this._gatewayEtagsOfLoadedRecords.clear();
355
+ this._gatewayMaxAgeSecondsFromLastPoll = undefined;
333
356
  this._clearIpnsArrivalSubscriptions();
334
357
  }
358
+ // How long the gateway-backed update loop sleeps before its next poll (issue #328). The
359
+ // gateways' Cache-Control max-age is the remaining ttl of the record in their cache (see
360
+ // the path-gateway spec linked in docs/protocol/README.md), verified to be an exact
361
+ // countdown on kubo: a re-poll before it expires returns the same cached record, a re-poll
362
+ // just after it gets the freshly re-resolved one. So sleep just past the smallest countdown
363
+ // any gateway reported, jittered so a directory of communities started together does not
364
+ // poll in lockstep (issue #307), flat 10s when no countdown is known, and always inside
365
+ // [floor, pkc.updateInterval] so tests running sub-second updateIntervals keep their
366
+ // cadence and no configuration polls slower than it did before this pacing existed.
367
+ _computeGatewayPollMs() {
368
+ const maxAgeSeconds = this._gatewayMaxAgeSecondsFromLastPoll;
369
+ const baseMs = typeof maxAgeSeconds === "number"
370
+ ? maxAgeSeconds * 1000 + 250 + Math.random() * 750
371
+ : GATEWAY_FALLBACK_POLL_MS * (0.75 + Math.random() * 0.5);
372
+ const ceilingMs = this._pkc.updateInterval;
373
+ const floorMs = Math.min(GATEWAY_POLL_FLOOR_MS, ceilingMs);
374
+ return Math.max(Math.min(baseMs, ceilingMs), floorMs);
375
+ }
376
+ // Remaining ttl in seconds from a gateway response's Cache-Control header, undefined when
377
+ // the gateway sent none (the spec says it SHOULD be omitted when the ttl is unknown).
378
+ _parseMaxAgeSeconds(cacheControl) {
379
+ const maxAgeMatch = cacheControl?.match(/max-age=(\d+)/i);
380
+ if (!maxAgeMatch?.[1])
381
+ return undefined;
382
+ const maxAgeSeconds = parseInt(maxAgeMatch[1]);
383
+ return Number.isFinite(maxAgeSeconds) ? maxAgeSeconds : undefined;
384
+ }
385
+ // Normalized entity-tag (W/ stripped, quotes preserved) of a gateway response, for the
386
+ // verbatim etag memory behind If-None-Match. If-None-Match uses weak comparison, so
387
+ // dropping W/ loses nothing and lets a weak and strong form of the same tag dedupe.
388
+ _normalizedEtagOfResponse(res) {
389
+ const etag = res?.headers?.get("etag");
390
+ if (!etag)
391
+ return undefined;
392
+ return etag.replace(/^W\//, "");
393
+ }
335
394
  // Wake the update loop when a record NEWER than anything already consumed lands in the
336
395
  // routing-layer cache (gossip push, direct-fetch cache write, or fallback fetch — all
337
396
  // newer-only writers). A record whose value was already consumed is not news: communities
@@ -983,23 +1042,37 @@ export class CommunityClientsManager extends PKCClientsManager {
983
1042
  else {
984
1043
  gatewayFetches[gatewayUrl].communityRecord = communityIpfs;
985
1044
  gatewayFetches[gatewayUrl].cid = calculatedCommunityCidFromBody;
986
- // Log the TTL from max-age header after successfully setting the community record
987
- const cacheControl = gatewayRes?.res?.headers?.get("cache-control");
988
- if (cacheControl) {
989
- const maxAgeMatch = cacheControl.match(/max-age=(\d+)/);
990
- if (maxAgeMatch && maxAgeMatch[1]) {
991
- const ttl = parseInt(maxAgeMatch[1]);
992
- gatewayFetches[gatewayUrl].ttl = ttl;
993
- }
994
- }
1045
+ // Remaining record ttl in this gateway's cache; feeds next-poll pacing (#328)
1046
+ gatewayFetches[gatewayUrl].ttl = this._parseMaxAgeSeconds(gatewayRes?.res?.headers?.get("cache-control"));
1047
+ // Remember the served record's entity-tag verbatim so the next poll's
1048
+ // If-None-Match can be answered with a bodyless 304 (#328)
1049
+ const etag = this._normalizedEtagOfResponse(gatewayRes?.res);
1050
+ if (etag)
1051
+ this._gatewayEtagsOfLoadedRecords.add(etag);
995
1052
  }
996
1053
  };
997
1054
  const checkResponseHeadersIfOldCid = async (gatewayRes) => {
1055
+ // Even a to-be-aborted response carries the cache countdown that paces the next poll (#328)
1056
+ gatewayFetches[gatewayUrl].ttl = this._parseMaxAgeSeconds(gatewayRes?.headers?.get("cache-control"));
998
1057
  const cidOfIpnsFromEtagHeader = gatewayRes?.headers?.get("etag")?.toString();
999
1058
  // If etag is missing, skip early-abort optimization and let the body be fetched
1000
1059
  if (!cidOfIpnsFromEtagHeader) {
1001
1060
  return; // Continue to fetch and validate the body normally
1002
1061
  }
1062
+ const abortBecauseRecordAlreadyLoaded = () => {
1063
+ abortController.abort("Aborting community IPNS request because we already loaded this record");
1064
+ return new PKCError("ERR_GATEWAY_ABORTING_LOADING_COMMUNITY_BECAUSE_WE_ALREADY_LOADED_THIS_RECORD", {
1065
+ cidOfIpnsFromEtagHeader,
1066
+ ipnsName,
1067
+ gatewayRes,
1068
+ gatewayUrl
1069
+ });
1070
+ };
1071
+ // Opaque comparison first: a verbatim match needs no CID parsing and covers
1072
+ // etag shapes CID.parse cannot (spec-legal format suffixes and the like).
1073
+ const normalizedEtag = this._normalizedEtagOfResponse(gatewayRes);
1074
+ if (normalizedEtag && this._gatewayEtagsOfLoadedRecords.has(normalizedEtag))
1075
+ return abortBecauseRecordAlreadyLoaded();
1003
1076
  let parsedCid;
1004
1077
  try {
1005
1078
  // clean up W/ prefix and quotes from the etag header
@@ -1009,19 +1082,30 @@ export class CommunityClientsManager extends PKCClientsManager {
1009
1082
  // Malformed etag header - skip optimization and let body be fetched
1010
1083
  return; // Continue to fetch and validate the body normally
1011
1084
  }
1012
- if (this._updateCidsAlreadyLoaded.has(parsedCid)) {
1013
- abortController.abort("Aborting community IPNS request because we already loaded this record");
1014
- return new PKCError("ERR_GATEWAY_ABORTING_LOADING_COMMUNITY_BECAUSE_WE_ALREADY_LOADED_THIS_RECORD", {
1015
- cidOfIpnsFromEtagHeader,
1016
- ipnsName,
1017
- gatewayRes,
1018
- gatewayUrl
1019
- });
1085
+ if (this._updateCidsAlreadyLoaded.has(parsedCid) || this._community.updateCid === parsedCid) {
1086
+ // This etag names a record we consumed but had never seen the etag of (e.g.
1087
+ // the record arrived over another transport): remember it verbatim so the
1088
+ // NEXT poll's If-None-Match can 304 instead of replaying this dance (#328)
1089
+ if (normalizedEtag)
1090
+ this._gatewayEtagsOfLoadedRecords.add(normalizedEtag);
1091
+ return abortBecauseRecordAlreadyLoaded();
1020
1092
  }
1021
1093
  };
1022
- const requestHeaders = this._updateCidsAlreadyLoaded.size > 0
1023
- ? { "If-None-Match": '"' + Array.from(this._updateCidsAlreadyLoaded.values()).join(",") + '"' } // tell the gateway we already loaded these records
1024
- : undefined;
1094
+ // Tell the gateway which records we already consumed so an unchanged tick is a
1095
+ // bodyless 304. RFC 9110 syntax: a comma-separated list of individually quoted
1096
+ // entity-tags — the old single-quoted comma-joined blob could never match once the
1097
+ // set held more than one CID, so production polls re-sent 200s forever (#328).
1098
+ // Verbatim remembered etags first (opaque, always correct); quoted CID forms as a
1099
+ // fallback for records consumed via another transport whose etag we never saw (kubo
1100
+ // serves the resolved CID as the etag in the version the content was added as, v0
1101
+ // for community records). Only the current record's tag can ever 304, so the list
1102
+ // stays short: the etag memory plus the most recent consumed CIDs.
1103
+ const etagsForConditionalRequest = new Set(this._gatewayEtagsOfLoadedRecords);
1104
+ if (this._community.updateCid)
1105
+ etagsForConditionalRequest.add(`"${this._community.updateCid}"`);
1106
+ for (const cid of Array.from(this._updateCidsAlreadyLoaded.values()).slice(-5))
1107
+ etagsForConditionalRequest.add(`"${cid}"`);
1108
+ const requestHeaders = etagsForConditionalRequest.size > 0 ? { "If-None-Match": Array.from(etagsForConditionalRequest).join(", ") } : undefined;
1025
1109
  gatewayFetches[gatewayUrl] = {
1026
1110
  abortController,
1027
1111
  promise: queueLimit(() => this._fetchWithGateway(gatewayUrl, {
@@ -1072,6 +1156,22 @@ export class CommunityClientsManager extends PKCClientsManager {
1072
1156
  return { community: winner.community, cid: winner.cid };
1073
1157
  };
1074
1158
  const promisesToIterate = Object.values(gatewayFetches).map((gatewayFetch) => gatewayFetch.promise);
1159
+ // Collect the smallest remaining cache countdown any gateway reported this poll — from
1160
+ // a served body, an etag-aborted 200 (both stored on gatewayFetches[].ttl) or a 304's
1161
+ // own Cache-Control — for the update loop's next-poll pacing (#328). Called on every
1162
+ // exit; a poll where no gateway reported one leaves it undefined and the loop falls
1163
+ // back to its flat interval.
1164
+ const recordGatewayMaxAgeForPacing = () => {
1165
+ const maxAges = [];
1166
+ for (const gatewayFetch of Object.values(gatewayFetches)) {
1167
+ if (typeof gatewayFetch.ttl === "number")
1168
+ maxAges.push(gatewayFetch.ttl);
1169
+ const maxAgeFrom304 = this._parseMaxAgeSeconds(gatewayFetch.error?.details?.responseCacheControl);
1170
+ if (typeof maxAgeFrom304 === "number")
1171
+ maxAges.push(maxAgeFrom304);
1172
+ }
1173
+ this._gatewayMaxAgeSecondsFromLastPoll = maxAges.length > 0 ? Math.min(...maxAges) : undefined;
1174
+ };
1075
1175
  let suitableCommunity;
1076
1176
  try {
1077
1177
  suitableCommunity = await new Promise((resolve, reject) => promisesToIterate.map((gatewayPromise, i) => gatewayPromise
@@ -1093,11 +1193,21 @@ export class CommunityClientsManager extends PKCClientsManager {
1093
1193
  catch {
1094
1194
  cleanUp();
1095
1195
  throwIfAbortSignalAborted(stopSignal);
1196
+ recordGatewayMaxAgeForPacing();
1096
1197
  const gatewayToError = mapValues(gatewayFetches, (gatewayFetch) => gatewayFetch.error);
1097
1198
  const hasGatewayConfirmingCurrentRecord = Object.keys(gatewayFetches)
1098
1199
  .map((gatewayUrl) => gatewayFetches[gatewayUrl].error)
1099
1200
  .some((err) => err.details?.status === 304 ||
1100
1201
  err.code === "ERR_GATEWAY_ABORTING_LOADING_COMMUNITY_BECAUSE_WE_ALREADY_LOADED_THIS_RECORD");
1202
+ // A 304 echoes the entity-tag the gateway matched: keep it in the verbatim etag
1203
+ // memory so later polls keep 304ing even after the CID scrolls out of the header (#328)
1204
+ for (const gatewayFetch of Object.values(gatewayFetches)) {
1205
+ if (gatewayFetch.error?.details?.status !== 304)
1206
+ continue;
1207
+ const etagFrom304 = gatewayFetch.error.details?.responseEtag;
1208
+ if (etagFrom304)
1209
+ this._gatewayEtagsOfLoadedRecords.add(etagFrom304.replace(/^W\//, ""));
1210
+ }
1101
1211
  if (hasGatewayConfirmingCurrentRecord) {
1102
1212
  // Any gateway confirmed we already have the latest consumed record. The conditional
1103
1213
  // request (If-None-Match -> 304) aborts before the delegated chain walk, so a
@@ -1148,6 +1258,7 @@ export class CommunityClientsManager extends PKCClientsManager {
1148
1258
  delete combinedError.stack;
1149
1259
  throw combinedError;
1150
1260
  }
1261
+ recordGatewayMaxAgeForPacing();
1151
1262
  // TODO add punishment for gateway that returns old ipns record
1152
1263
  // TODO add punishment for gateway that returns invalid community
1153
1264
  return suitableCommunity;