@pkcprotocol/pkc-js 0.0.40 → 0.0.42

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 (151) hide show
  1. package/dist/browser/clients/base-client-manager.d.ts +5 -1
  2. package/dist/browser/clients/base-client-manager.js +87 -12
  3. package/dist/browser/clients/base-client-manager.js.map +1 -1
  4. package/dist/browser/clients/rpc-client/pkc-rpc-client.d.ts +5 -1
  5. package/dist/browser/clients/rpc-client/pkc-rpc-client.js +23 -1
  6. package/dist/browser/clients/rpc-client/pkc-rpc-client.js.map +1 -1
  7. package/dist/browser/clients/rpc-client/rpc-schema-util.d.ts +31 -0
  8. package/dist/browser/clients/rpc-client/rpc-schema-util.js +6 -1
  9. package/dist/browser/clients/rpc-client/rpc-schema-util.js.map +1 -1
  10. package/dist/browser/clients/rpc-client/schema.d.ts +27 -0
  11. package/dist/browser/clients/rpc-client/schema.js +12 -1
  12. package/dist/browser/clients/rpc-client/schema.js.map +1 -1
  13. package/dist/browser/clients/rpc-client/types.d.ts +5 -1
  14. package/dist/browser/community/community-client-manager.d.ts +1 -0
  15. package/dist/browser/community/community-client-manager.js +176 -37
  16. package/dist/browser/community/community-client-manager.js.map +1 -1
  17. package/dist/browser/community/community-gateway-selection.d.ts +32 -0
  18. package/dist/browser/community/community-gateway-selection.js +28 -0
  19. package/dist/browser/community/community-gateway-selection.js.map +1 -0
  20. package/dist/browser/community/remote-community.d.ts +13 -1
  21. package/dist/browser/community/remote-community.js +75 -5
  22. package/dist/browser/community/remote-community.js.map +1 -1
  23. package/dist/browser/community/rpc-local-community.d.ts +10 -1
  24. package/dist/browser/community/rpc-local-community.js +102 -0
  25. package/dist/browser/community/rpc-local-community.js.map +1 -1
  26. package/dist/browser/community/rpc-remote-community.js +19 -4
  27. package/dist/browser/community/rpc-remote-community.js.map +1 -1
  28. package/dist/browser/community/schema.d.ts +38 -0
  29. package/dist/browser/community/schema.js +50 -2
  30. package/dist/browser/community/schema.js.map +1 -1
  31. package/dist/browser/community/types.d.ts +4 -1
  32. package/dist/browser/constants.d.ts +2 -1
  33. package/dist/browser/constants.js +2 -1
  34. package/dist/browser/constants.js.map +1 -1
  35. package/dist/browser/errors.d.ts +11 -0
  36. package/dist/browser/errors.js +12 -0
  37. package/dist/browser/errors.js.map +1 -1
  38. package/dist/browser/generated-version.d.ts +1 -1
  39. package/dist/browser/generated-version.js +1 -1
  40. package/dist/browser/helia/helia-for-pkc.js +71 -22
  41. package/dist/browser/helia/helia-for-pkc.js.map +1 -1
  42. package/dist/browser/pkc/pkc-with-rpc-client.js +3 -0
  43. package/dist/browser/pkc/pkc-with-rpc-client.js.map +1 -1
  44. package/dist/browser/pkc/pkc.js +24 -3
  45. package/dist/browser/pkc/pkc.js.map +1 -1
  46. package/dist/browser/pkc-error.d.ts +1 -1
  47. package/dist/browser/rpc/src/index.d.ts +16 -2
  48. package/dist/browser/rpc/src/index.js +276 -6
  49. package/dist/browser/rpc/src/index.js.map +1 -1
  50. package/dist/browser/rpc/src/schema.d.ts +2 -0
  51. package/dist/browser/rpc/src/schema.js +10 -1
  52. package/dist/browser/rpc/src/schema.js.map +1 -1
  53. package/dist/browser/runtime/node/community/db-handler.js.map +1 -1
  54. package/dist/browser/runtime/node/community/local-community/db-state.js +8 -0
  55. package/dist/browser/runtime/node/community/local-community/db-state.js.map +1 -1
  56. package/dist/browser/runtime/node/community/local-community/export.d.ts +15 -0
  57. package/dist/browser/runtime/node/community/local-community/export.js +237 -0
  58. package/dist/browser/runtime/node/community/local-community/export.js.map +1 -0
  59. package/dist/browser/runtime/node/community/local-community/ipns-publishing.js +1 -1
  60. package/dist/browser/runtime/node/community/local-community/ipns-publishing.js.map +1 -1
  61. package/dist/browser/runtime/node/community/local-community/lifecycle.js +1 -0
  62. package/dist/browser/runtime/node/community/local-community/lifecycle.js.map +1 -1
  63. package/dist/browser/runtime/node/community/local-community.d.ts +12 -0
  64. package/dist/browser/runtime/node/community/local-community.js +22 -0
  65. package/dist/browser/runtime/node/community/local-community.js.map +1 -1
  66. package/dist/browser/runtime/node/util.d.ts +15 -0
  67. package/dist/browser/runtime/node/util.js +111 -1
  68. package/dist/browser/runtime/node/util.js.map +1 -1
  69. package/dist/browser/schema/schema-util.d.ts +1 -0
  70. package/dist/browser/test/test-util.d.ts +335 -1
  71. package/dist/browser/test/test-util.js +86 -5
  72. package/dist/browser/test/test-util.js.map +1 -1
  73. package/dist/browser/util.d.ts +8 -1
  74. package/dist/browser/util.js +175 -2
  75. package/dist/browser/util.js.map +1 -1
  76. package/dist/node/clients/base-client-manager.d.ts +5 -1
  77. package/dist/node/clients/base-client-manager.js +87 -12
  78. package/dist/node/clients/base-client-manager.js.map +1 -1
  79. package/dist/node/clients/rpc-client/pkc-rpc-client.d.ts +5 -1
  80. package/dist/node/clients/rpc-client/pkc-rpc-client.js +23 -1
  81. package/dist/node/clients/rpc-client/pkc-rpc-client.js.map +1 -1
  82. package/dist/node/clients/rpc-client/rpc-schema-util.d.ts +31 -0
  83. package/dist/node/clients/rpc-client/rpc-schema-util.js +6 -1
  84. package/dist/node/clients/rpc-client/rpc-schema-util.js.map +1 -1
  85. package/dist/node/clients/rpc-client/schema.d.ts +27 -0
  86. package/dist/node/clients/rpc-client/schema.js +12 -1
  87. package/dist/node/clients/rpc-client/schema.js.map +1 -1
  88. package/dist/node/clients/rpc-client/types.d.ts +5 -1
  89. package/dist/node/community/community-client-manager.d.ts +1 -0
  90. package/dist/node/community/community-client-manager.js +176 -37
  91. package/dist/node/community/community-client-manager.js.map +1 -1
  92. package/dist/node/community/community-gateway-selection.d.ts +32 -0
  93. package/dist/node/community/community-gateway-selection.js +28 -0
  94. package/dist/node/community/community-gateway-selection.js.map +1 -0
  95. package/dist/node/community/remote-community.d.ts +13 -1
  96. package/dist/node/community/remote-community.js +75 -5
  97. package/dist/node/community/remote-community.js.map +1 -1
  98. package/dist/node/community/rpc-local-community.d.ts +10 -1
  99. package/dist/node/community/rpc-local-community.js +102 -0
  100. package/dist/node/community/rpc-local-community.js.map +1 -1
  101. package/dist/node/community/rpc-remote-community.js +19 -4
  102. package/dist/node/community/rpc-remote-community.js.map +1 -1
  103. package/dist/node/community/schema.d.ts +38 -0
  104. package/dist/node/community/schema.js +50 -2
  105. package/dist/node/community/schema.js.map +1 -1
  106. package/dist/node/community/types.d.ts +4 -1
  107. package/dist/node/constants.d.ts +2 -1
  108. package/dist/node/constants.js +2 -1
  109. package/dist/node/constants.js.map +1 -1
  110. package/dist/node/errors.d.ts +11 -0
  111. package/dist/node/errors.js +12 -0
  112. package/dist/node/errors.js.map +1 -1
  113. package/dist/node/generated-version.d.ts +1 -1
  114. package/dist/node/generated-version.js +1 -1
  115. package/dist/node/helia/helia-for-pkc.js +71 -22
  116. package/dist/node/helia/helia-for-pkc.js.map +1 -1
  117. package/dist/node/pkc/pkc-with-rpc-client.js +3 -0
  118. package/dist/node/pkc/pkc-with-rpc-client.js.map +1 -1
  119. package/dist/node/pkc/pkc.js +24 -3
  120. package/dist/node/pkc/pkc.js.map +1 -1
  121. package/dist/node/pkc-error.d.ts +1 -1
  122. package/dist/node/rpc/src/index.d.ts +16 -2
  123. package/dist/node/rpc/src/index.js +276 -6
  124. package/dist/node/rpc/src/index.js.map +1 -1
  125. package/dist/node/rpc/src/schema.d.ts +2 -0
  126. package/dist/node/rpc/src/schema.js +10 -1
  127. package/dist/node/rpc/src/schema.js.map +1 -1
  128. package/dist/node/runtime/node/community/db-handler.js.map +1 -1
  129. package/dist/node/runtime/node/community/local-community/db-state.js +8 -0
  130. package/dist/node/runtime/node/community/local-community/db-state.js.map +1 -1
  131. package/dist/node/runtime/node/community/local-community/export.d.ts +15 -0
  132. package/dist/node/runtime/node/community/local-community/export.js +237 -0
  133. package/dist/node/runtime/node/community/local-community/export.js.map +1 -0
  134. package/dist/node/runtime/node/community/local-community/ipns-publishing.js +1 -1
  135. package/dist/node/runtime/node/community/local-community/ipns-publishing.js.map +1 -1
  136. package/dist/node/runtime/node/community/local-community/lifecycle.js +1 -0
  137. package/dist/node/runtime/node/community/local-community/lifecycle.js.map +1 -1
  138. package/dist/node/runtime/node/community/local-community.d.ts +12 -0
  139. package/dist/node/runtime/node/community/local-community.js +22 -0
  140. package/dist/node/runtime/node/community/local-community.js.map +1 -1
  141. package/dist/node/runtime/node/util.d.ts +15 -0
  142. package/dist/node/runtime/node/util.js +111 -1
  143. package/dist/node/runtime/node/util.js.map +1 -1
  144. package/dist/node/schema/schema-util.d.ts +1 -0
  145. package/dist/node/test/test-util.d.ts +335 -1
  146. package/dist/node/test/test-util.js +86 -5
  147. package/dist/node/test/test-util.js.map +1 -1
  148. package/dist/node/util.d.ts +8 -1
  149. package/dist/node/util.js +175 -2
  150. package/dist/node/util.js.map +1 -1
  151. package/package.json +1 -1
@@ -16,7 +16,8 @@ import { base32 } from "multiformats/bases/base32";
16
16
  import Logger from "./logger.js";
17
17
  import retry from "retry";
18
18
  import { peerIdFromString } from "@libp2p/peer-id";
19
- import { unmarshalIPNSRecord } from "ipns";
19
+ import { unmarshalIPNSRecord, multihashToIPNSRoutingKey } from "ipns";
20
+ import { ipnsValidator } from "ipns/validator";
20
21
  import { importFile } from "ipfs-unixfs-importer";
21
22
  import { MemoryBlockstore } from "blockstore-core";
22
23
  import { findUpdatingCommunity } from "./pkc/tracked-instance-registry-util.js";
@@ -398,6 +399,12 @@ export function isIpfsCid(x) {
398
399
  export function isIpfsPath(x) {
399
400
  return x.startsWith("/ipfs/");
400
401
  }
402
+ export function isIpnsPath(x) {
403
+ // Require a non-empty name segment after the prefix so a malformed bare "/ipns/" is rejected
404
+ // (it would otherwise flow into split("/")[2] next-hop parsing as an empty name).
405
+ const parts = x.split("/");
406
+ return parts.length >= 3 && parts[1] === "ipns" && parts[2].length > 0;
407
+ }
401
408
  function isMultiaddrLike(value) {
402
409
  if (typeof value !== "object" || value === null)
403
410
  return false;
@@ -805,6 +812,78 @@ export async function removeMfsFilesSafely({ kuboRpcClient, paths, log, inputNum
805
812
  });
806
813
  });
807
814
  }
815
+ // IPNS records MUST NOT exceed 10 KiB per the IPNS spec (https://specs.ipfs.tech/ipns/ipns-record);
816
+ // the `ipns` package's validator enforces the same limit as its own MAX_RECORD_SIZE. We cap the read
817
+ // BEFORE buffering the body so an untrusted gateway cannot exhaust memory by streaming a huge response
818
+ // that the validator would only reject after the fact (the validator's check runs on the already-buffered
819
+ // bytes). See docs/protocol/delegated-ipns.md.
820
+ export const MAX_IPNS_RECORD_SIZE = 10 * 1024;
821
+ // Joins streamed body chunks into a single Uint8Array. `total` MUST equal the summed chunk lengths.
822
+ function concatBodyChunks(chunks, total) {
823
+ if (chunks.length === 1)
824
+ return chunks[0];
825
+ const out = new Uint8Array(total);
826
+ let offset = 0;
827
+ for (const chunk of chunks) {
828
+ out.set(chunk, offset);
829
+ offset += chunk.length;
830
+ }
831
+ return out;
832
+ }
833
+ // Reads a fetch Response body into a Uint8Array, refusing to buffer more than MAX_IPNS_RECORD_SIZE. Checks
834
+ // Content-Length up front, then streams the body — WHATWG `getReader` (browser / undici) or the node-fetch
835
+ // async-iterable Node stream — enforcing the hard ceiling per chunk, so a missing or dishonest Content-Length
836
+ // still cannot make us buffer an oversized record. Only an exotic body that is neither stream type falls back
837
+ // to buffer-then-check. The caller supplies onOverSizeLimit so the error carries its own domain code/context
838
+ // (gateway chain vs local kubo node).
839
+ async function readRawIpnsRecordBody(res, onOverSizeLimit) {
840
+ const maxBytes = MAX_IPNS_RECORD_SIZE;
841
+ const sizeHeader = res.headers?.get("Content-Length");
842
+ if (sizeHeader && Number(sizeHeader) > maxBytes)
843
+ throw onOverSizeLimit({ maxBytes, observedBytes: Number(sizeHeader), viaContentLength: true });
844
+ // Native fetch / undici (browser and Node >= 18) expose a WHATWG ReadableStream.
845
+ if (res.body?.getReader !== undefined) {
846
+ const reader = res.body.getReader();
847
+ const chunks = [];
848
+ let total = 0;
849
+ while (true) {
850
+ const { done, value } = await reader.read();
851
+ if (value) {
852
+ total += value.length;
853
+ if (total > maxBytes) {
854
+ await reader.cancel().catch(() => { });
855
+ throw onOverSizeLimit({ maxBytes, observedBytes: total, viaContentLength: false });
856
+ }
857
+ chunks.push(value);
858
+ }
859
+ if (done)
860
+ break;
861
+ }
862
+ return concatBodyChunks(chunks, total);
863
+ }
864
+ // node-fetch path (no getReader): its Response body is a Node Readable, which is async-iterable. Stream it
865
+ // the same way so the ceiling holds without buffering the whole body first — the up-front Content-Length
866
+ // check alone can't stop a dishonest/missing header. (`as unknown as` because the WHATWG Response type
867
+ // doesn't model the Node stream's async iterator; this branch only runs when the body really is one.)
868
+ const iterableBody = res.body;
869
+ if (iterableBody?.[Symbol.asyncIterator] !== undefined) {
870
+ const chunks = [];
871
+ let total = 0;
872
+ for await (const chunk of iterableBody) {
873
+ total += chunk.length;
874
+ if (total > maxBytes)
875
+ throw onOverSizeLimit({ maxBytes, observedBytes: total, viaContentLength: false });
876
+ chunks.push(chunk);
877
+ }
878
+ return concatBodyChunks(chunks, total);
879
+ }
880
+ // Last resort: a body that is neither a WHATWG stream nor async-iterable. Buffer fully, then reject if the
881
+ // Content-Length omitted or under-reported the real size.
882
+ const buf = new Uint8Array(await res.arrayBuffer());
883
+ if (buf.byteLength > maxBytes)
884
+ throw onOverSizeLimit({ maxBytes, observedBytes: buf.byteLength, viaContentLength: false });
885
+ return buf;
886
+ }
808
887
  export async function getIpnsRecordInLocalKuboNode(kuboRpcClient, ipnsName) {
809
888
  const gatewayMultiaddr = await kuboRpcClient._client.config.get("Addresses.Gateway"); // need to be fetched from config Addresses.Gateway
810
889
  const parts = gatewayMultiaddr.split("/").filter(Boolean);
@@ -818,7 +897,14 @@ export async function getIpnsRecordInLocalKuboNode(kuboRpcClient, ipnsName) {
818
897
  status: res.status,
819
898
  statusText: res.statusText
820
899
  });
821
- const ipnsRecordRaw = new Uint8Array(await res.arrayBuffer());
900
+ const ipnsRecordRaw = await readRawIpnsRecordBody(res, ({ maxBytes, observedBytes, viaContentLength }) => new PKCError("ERR_FAILED_TO_LOAD_LOCAL_RAW_IPNS_RECORD", {
901
+ ipnsFetchUrl,
902
+ ipnsName,
903
+ reason: "Local IPNS record exceeds the maximum allowed size",
904
+ maxBytes,
905
+ observedBytes,
906
+ viaContentLength
907
+ }));
822
908
  try {
823
909
  return unmarshalIPNSRecord(ipnsRecordRaw);
824
910
  }
@@ -826,6 +912,93 @@ export async function getIpnsRecordInLocalKuboNode(kuboRpcClient, ipnsName) {
826
912
  throw new PKCError("ERR_FAILED_TO_PARSE_LOCAL_RAW_IPNS_RECORD", { ipnsName, ipnsFetchUrl, parseError: e });
827
913
  }
828
914
  }
915
+ // Fetches a raw IPNS record from an (untrusted) gateway via the ?format=ipns-record path
916
+ // param, validates its signature against the IPNS name's routing key, and returns the
917
+ // unmarshalled record. Used to verify a delegated IPNS chain (anchor -> ... -> terminal)
918
+ // independently of the gateway's own recursion, which cannot be trusted.
919
+ // See docs/protocol/delegated-ipns.md.
920
+ export async function fetchAndValidateIpnsRecordFromGateway(gatewayUrl, ipnsName,
921
+ // recordContext is merged into every error this raises so the caller's domain knowledge (e.g.
922
+ // which hop of a delegated chain this name is — anchor vs minter) survives into error.details.
923
+ opts) {
924
+ const ipnsFetchUrl = `${gatewayUrl.replace(/\/$/, "")}/ipns/${ipnsName}?format=ipns-record`;
925
+ const recordContext = opts?.recordContext;
926
+ let ipnsRecordRaw;
927
+ try {
928
+ const res = await fetch(ipnsFetchUrl, {
929
+ headers: { Accept: "application/vnd.ipfs.ipns-record" },
930
+ signal: opts?.abortSignal
931
+ });
932
+ if (res.status !== 200)
933
+ throw new PKCError("ERR_GATEWAY_IPNS_RECORD_CHAIN_INVALID", {
934
+ reason: "Gateway did not return the raw IPNS record",
935
+ ...recordContext,
936
+ ipnsFetchUrl,
937
+ ipnsName,
938
+ status: res.status,
939
+ statusText: res.statusText
940
+ });
941
+ ipnsRecordRaw = await readRawIpnsRecordBody(res, ({ maxBytes, observedBytes, viaContentLength }) => new PKCError("ERR_GATEWAY_IPNS_RECORD_CHAIN_INVALID", {
942
+ reason: "IPNS record served by the gateway exceeds the maximum allowed size",
943
+ ...recordContext,
944
+ ipnsFetchUrl,
945
+ ipnsName,
946
+ maxBytes,
947
+ observedBytes,
948
+ viaContentLength
949
+ }));
950
+ }
951
+ catch (e) {
952
+ // Don't remap aborts: a cancelled fetch is not a chain-validation failure, and remapping it
953
+ // would misclassify parent-driven aborts and break their abort logic.
954
+ if (isAbortError(e))
955
+ throw e;
956
+ if (e instanceof PKCError)
957
+ throw e;
958
+ throw new PKCError("ERR_GATEWAY_IPNS_RECORD_CHAIN_INVALID", {
959
+ reason: "Failed to fetch the raw IPNS record from the gateway",
960
+ ...recordContext,
961
+ ipnsFetchUrl,
962
+ ipnsName,
963
+ fetchError: e
964
+ });
965
+ }
966
+ // Validate the record's signature AND validity (EOL) against the routing key derived from the
967
+ // IPNS name. This is what makes following the chain through an untrusted gateway safe.
968
+ try {
969
+ const routingKey = multihashToIPNSRoutingKey(peerIdFromString(ipnsName).toMultihash());
970
+ await ipnsValidator(routingKey, ipnsRecordRaw);
971
+ }
972
+ catch (e) {
973
+ // ipnsValidator rejects for several distinct reasons; surface an accurate one. An expired
974
+ // record (validity EOL passed) is NOT a forgery — for a delegated anchor record this is the
975
+ // liveness cliff described in docs/protocol/delegated-ipns.md (the offline owner must
976
+ // re-publish before EOL). Everything else means the gateway served a record not signed by the
977
+ // key the IPNS name commits to (forged or tampered).
978
+ const reason = e?.name === "RecordExpiredError"
979
+ ? "IPNS record has expired: its validity (EOL) is in the past"
980
+ : "IPNS record signature is invalid: the record served by the gateway is not signed by the IPNS name's key (forged or tampered record)";
981
+ throw new PKCError("ERR_GATEWAY_IPNS_RECORD_CHAIN_INVALID", {
982
+ reason,
983
+ ...recordContext,
984
+ ipnsFetchUrl,
985
+ ipnsName,
986
+ validationError: e
987
+ });
988
+ }
989
+ try {
990
+ return unmarshalIPNSRecord(ipnsRecordRaw);
991
+ }
992
+ catch (e) {
993
+ throw new PKCError("ERR_GATEWAY_IPNS_RECORD_CHAIN_INVALID", {
994
+ reason: "Failed to parse the IPNS record",
995
+ ...recordContext,
996
+ ipnsFetchUrl,
997
+ ipnsName,
998
+ parseError: e
999
+ });
1000
+ }
1001
+ }
829
1002
  const textEncoder = new TextEncoder();
830
1003
  export async function calculateStringSizeSameAsIpfsAddCidV0(content) {
831
1004
  const blockstore = new MemoryBlockstore();
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
@@ -91,10 +91,14 @@ export declare class BaseClientsManager {
91
91
  resText: string;
92
92
  res: Response;
93
93
  }>;
94
+ static readonly MAX_IPNS_HOPS = 1;
94
95
  resolveIpnsToCidP2P(ipnsName: string, loadOpts: {
95
96
  timeoutMs: number;
96
97
  abortSignal?: AbortSignal;
97
- }): Promise<string>;
98
+ }): Promise<{
99
+ cid: string;
100
+ ipnsHops: string[];
101
+ }>;
98
102
  _fetchCidP2P(cidV0: string, loadOpts: {
99
103
  maxFileSizeBytes: number;
100
104
  timeoutMs: number;
@@ -1,5 +1,5 @@
1
1
  import assert from "assert";
2
- import { calculateIpfsCidV0, createAbortError, extractNetworkErrorDetails, hideClassPrivateProps, isAbortError, isIpns, isStringDomain, throwIfAbortSignalAborted } from "../util.js";
2
+ import { calculateIpfsCidV0, createAbortError, extractNetworkErrorDetails, hideClassPrivateProps, isAbortError, isIpns, isIpfsPath, isIpnsPath, isStringDomain, throwIfAbortSignalAborted } from "../util.js";
3
3
  import { sha256 } from "js-sha256";
4
4
  import { getPKCAddressFromPublicKey } from "../signer/util.js";
5
5
  import { nativeFunctions } from "../runtime/node/util.js";
@@ -8,7 +8,6 @@ import pRetry, { AbortError as PRetryAbortError } from "p-retry";
8
8
  import { FailedToFetchCommentIpfsFromGatewaysError, FailedToFetchCommentUpdateFromGatewaysError, FailedToFetchGenericIpfsFromGatewaysError, FailedToFetchPageIpfsFromGatewaysError, FailedToFetchCommunityFromGatewaysError, PKCError } from "../pkc-error.js";
9
9
  import Logger from "../logger.js";
10
10
  import * as cborg from "cborg";
11
- import last from "it-last";
12
11
  import { concat as uint8ArrayConcat } from "uint8arrays/concat";
13
12
  import { toString as uint8ArrayToString } from "uint8arrays/to-string";
14
13
  import all from "it-all";
@@ -440,21 +439,79 @@ export class BaseClientsManager {
440
439
  return res.res;
441
440
  }
442
441
  }
443
- // IPFS P2P methods
442
+ // Resolves an IPNS name to its terminal /ipfs/ CID, following any /ipns/ -> /ipns/
443
+ // delegation hops along the way. Returns the resolved CID together with the ordered
444
+ // chain of IPNS names traversed: ipnsHops[0] is the anchor (the name we were asked to
445
+ // resolve) and ipnsHops.at(-1) is the terminal name (the name whose record points
446
+ // directly at the /ipfs/ CID, i.e. the key that signs the content).
444
447
  async resolveIpnsToCidP2P(ipnsName, loadOpts) {
445
448
  const log = Logger("pkc-js:clients-manager:resolveIpnsToCidP2P");
446
449
  throwIfAbortSignalAborted(loadOpts.abortSignal);
447
- const ipnsResolveOpts = { nocache: true, recursive: true, ...loadOpts };
450
+ // recursive: false so the resolver returns the IMMEDIATE value of each record (so we can
451
+ // walk /ipns/ -> /ipns/ hops ourselves); see performIpnsResolve below.
452
+ const ipnsResolveOpts = { nocache: true, recursive: false, ...loadOpts };
448
453
  const ipfsClient = this.getIpfsClientWithKuboRpcClientFunctions();
449
454
  const performIpnsResolve = async () => {
450
- const resolvedCidOfIpns = await last(ipfsClient.name.resolve(ipnsName, ipnsResolveOpts));
451
- if (!resolvedCidOfIpns)
452
- throw new PKCError("ERR_RESOLVED_IPNS_P2P_TO_UNDEFINED", {
453
- resolvedCidOfIpns,
455
+ // We resolve ONE hop at a time (recursive: false) rather than letting the resolver
456
+ // collapse the whole chain to its final /ipfs/ CID. Kubo's recursive resolve only
457
+ // yields the final value and hides intermediate names, so resolving hop-by-hop is the
458
+ // only way to learn the terminal name (the key that signs the content) and to keep
459
+ // per-record signature verification at each hop. A normal (non-delegated) community
460
+ // resolves in a single hop, so this costs exactly one lookup in the common case.
461
+ const ipnsHops = [ipnsName];
462
+ let currentName = ipnsName;
463
+ // Follow at most MAX_IPNS_HOPS delegation hops. The loop exits only via a return (we hit
464
+ // a terminal /ipfs/ value) or a throw (undefined/unsupported value, or too many hops).
465
+ while (true) {
466
+ // Label the record we're about to resolve so any failure names WHICH record was at
467
+ // fault. hop 0 is the anchor; with MAX_IPNS_HOPS === 1 the only other hop fetched is
468
+ // the minter (the cap below throws before a 3rd hop is fetched), so the role is
469
+ // unambiguous — "anchor" or "minter". Mirrors the gateway chain walker's labelling so
470
+ // both resolution paths report failures identically. See docs/protocol/delegated-ipns.md.
471
+ const hopIndex = ipnsHops.length - 1;
472
+ const hopRole = hopIndex === 0 ? "anchor" : "minter";
473
+ const yieldedValues = await all(ipfsClient.name.resolve(currentName, ipnsResolveOpts));
474
+ // The single-hop value (kubo may yield it more than once; helia yields it once).
475
+ const value = yieldedValues[yieldedValues.length - 1];
476
+ if (!value)
477
+ throw new PKCError("ERR_RESOLVED_IPNS_P2P_TO_UNDEFINED", {
478
+ hopRole,
479
+ hopIndex,
480
+ resolvedValue: value,
481
+ yieldedValues,
482
+ currentName,
483
+ ipnsName,
484
+ ipnsHops,
485
+ ipnsResolveOpts
486
+ });
487
+ if (isIpfsPath(value))
488
+ return { cid: CidPathSchema.parse(value), ipnsHops };
489
+ if (isIpnsPath(value)) {
490
+ currentName = value.split("/")[2];
491
+ ipnsHops.push(currentName);
492
+ // ipnsHops.length - 1 is the number of /ipns/ -> /ipns/ hops followed so far.
493
+ if (ipnsHops.length - 1 > BaseClientsManager.MAX_IPNS_HOPS)
494
+ throw new PKCError("ERR_IPNS_MAX_HOPS_EXCEEDED", {
495
+ // hopRole/hopIndex describe the record that delegated one hop too far.
496
+ hopRole,
497
+ hopIndex,
498
+ ipnsHops,
499
+ maxHops: BaseClientsManager.MAX_IPNS_HOPS,
500
+ ipnsName,
501
+ ipnsResolveOpts
502
+ });
503
+ continue;
504
+ }
505
+ throw new PKCError("ERR_RESOLVED_IPNS_TO_UNSUPPORTED_VALUE", {
506
+ hopRole,
507
+ hopIndex,
508
+ unsupportedValue: value,
509
+ currentName,
454
510
  ipnsName,
511
+ ipnsHops,
455
512
  ipnsResolveOpts
456
513
  });
457
- return CidPathSchema.parse(resolvedCidOfIpns);
514
+ }
458
515
  };
459
516
  try {
460
517
  // Wrap the resolution function with pTimeout because kubo-rpc-client doesn't support timeout for IPNS
@@ -471,8 +528,18 @@ export class BaseClientsManager {
471
528
  catch (error) {
472
529
  if (isAbortError(error))
473
530
  throw error;
474
- //@ts-expect-error
475
- error.details = { ...error.details, ipnsName, ipnsResolveOpts };
531
+ // Over P2P, per-record IPNS signature validation — and therefore forgery/tamper detection —
532
+ // is performed inside the resolver (kubo/helia), not by us. So a forged, tampered, or
533
+ // otherwise unverifiable record surfaces here as an opaque resolution failure rather than an
534
+ // explicit forgery error like the gateway path's ERR_GATEWAY_IPNS_RECORD_CHAIN_INVALID. We
535
+ // attach this note to resolver-level failures (not to our own structured chain errors, which
536
+ // already explain themselves) so the surfaced error documents that asymmetry.
537
+ const isOpaqueResolverError = !(error instanceof PKCError);
538
+ const p2pValidationNote = isOpaqueResolverError
539
+ ? "Resolution failed inside the IPNS resolver (kubo/helia). Over P2P the resolver performs per-record signature validation, so a forged/tampered/unverifiable record appears here as a resolution failure, not an explicit forgery error (cf. the gateway path's ERR_GATEWAY_IPNS_RECORD_CHAIN_INVALID). See docs/protocol/delegated-ipns.md."
540
+ : undefined;
541
+ //@ts-expect-error attaching extra context to whatever propagated (PKCError or raw resolver error)
542
+ error.details = { ...error.details, ipnsName, ipnsResolveOpts, ...(p2pValidationNote ? { note: p2pValidationNote } : {}) };
476
543
  // Wrap ETIMEDOUT in PKCError so _isRetriableErrorWhenLoading recognizes it as retriable
477
544
  if (error instanceof Error && "cause" in error && error.cause?.code === "ETIMEDOUT") {
478
545
  log.error(`Failed to resolve IPNS ${ipnsName}: ${error.message} (ETIMEDOUT)`);
@@ -481,7 +548,8 @@ export class BaseClientsManager {
481
548
  ipnsResolveOpts,
482
549
  error,
483
550
  errorMessage: error.message,
484
- errorName: error.name
551
+ errorName: error.name,
552
+ note: p2pValidationNote
485
553
  });
486
554
  }
487
555
  throw error;
@@ -760,4 +828,11 @@ export class BaseClientsManager {
760
828
  return this._pkc._inflightFetchManager.withResource(InflightResourceTypes.COMMUNITY_IPNS, communityAddress, fetcher);
761
829
  }
762
830
  }
831
+ // IPFS P2P methods
832
+ // Maximum number of /ipns/ -> /ipns/ delegation hops we follow before giving up. For now this
833
+ // is capped at 1, so only a single anchor -> minter delegation is supported (see
834
+ // docs/protocol/delegated-ipns.md). A normal (non-delegated) community resolves in zero hops
835
+ // (its record points straight at /ipfs/); a delegated community resolves in exactly one
836
+ // (anchor -> minter -> /ipfs/). Longer chains are rejected with ERR_IPNS_MAX_HOPS_EXCEEDED.
837
+ BaseClientsManager.MAX_IPNS_HOPS = 1;
763
838
  //# sourceMappingURL=base-client-manager.js.map