@pkcprotocol/pkc-js 0.0.78 → 0.0.80

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 (72) hide show
  1. package/README.md +1 -1
  2. package/dist/browser/community/community-client-manager.d.ts +2 -0
  3. package/dist/browser/community/community-client-manager.js +164 -9
  4. package/dist/browser/community/community-client-manager.js.map +1 -1
  5. package/dist/browser/community/remote-community.d.ts +2 -1
  6. package/dist/browser/community/remote-community.js +30 -7
  7. package/dist/browser/community/remote-community.js.map +1 -1
  8. package/dist/browser/community/rpc-local-community.js.map +1 -1
  9. package/dist/browser/community/schema.d.ts +31 -4
  10. package/dist/browser/community/schema.js +16 -10
  11. package/dist/browser/community/schema.js.map +1 -1
  12. package/dist/browser/errors.d.ts +3 -0
  13. package/dist/browser/errors.js +3 -0
  14. package/dist/browser/errors.js.map +1 -1
  15. package/dist/browser/generated-version.d.ts +1 -1
  16. package/dist/browser/generated-version.js +1 -1
  17. package/dist/browser/helia/util.js +16 -8
  18. package/dist/browser/helia/util.js.map +1 -1
  19. package/dist/browser/pkc-error.d.ts +1 -1
  20. package/dist/browser/runtime/node/community/local-community/cleanup.d.ts +4 -0
  21. package/dist/browser/runtime/node/community/local-community/cleanup.js +50 -37
  22. package/dist/browser/runtime/node/community/local-community/cleanup.js.map +1 -1
  23. package/dist/browser/runtime/node/community/local-community/publication-validation.js +7 -1
  24. package/dist/browser/runtime/node/community/local-community/publication-validation.js.map +1 -1
  25. package/dist/browser/schema/schema-util.d.ts +15 -0
  26. package/dist/browser/signer/signatures.d.ts +1 -0
  27. package/dist/browser/signer/signatures.js +25 -2
  28. package/dist/browser/signer/signatures.js.map +1 -1
  29. package/dist/browser/test/test-util.d.ts +7 -0
  30. package/dist/browser/test/test-util.js +6 -0
  31. package/dist/browser/test/test-util.js.map +1 -1
  32. package/dist/bundled/bundle-manifest.json +31 -31
  33. package/dist/bundled/chunks/{helia-for-pkc-DPyYKV_m.js → helia-for-pkc-BsYWQ7qS.js} +31 -31
  34. package/dist/bundled/chunks/{local-community-KNlSpG2e.js → local-community-CHzhypCp.js} +48 -27
  35. package/dist/bundled/chunks/{local-community-DS4PU-HF.js → local-community-EqWKTLxr.js} +1 -1
  36. package/dist/bundled/chunks/{node-CcPI4aNc.js → node-4qAZNuJG.js} +5 -5
  37. package/dist/bundled/chunks/{rpc-local-community-DHhucg8-.js → rpc-local-community-Cog5rZLG.js} +107 -18
  38. package/dist/bundled/chunks/{schema-CH2yoI0b.js → schema-Iavj-cRD.js} +6 -2
  39. package/dist/bundled/chunks/{util-CiBeiLBn.js → util-CfSUfLkV.js} +3 -2
  40. package/dist/bundled/index.js +1 -1
  41. package/dist/bundled/rpc/src/index.js +4 -4
  42. package/dist/node/community/community-client-manager.d.ts +2 -0
  43. package/dist/node/community/community-client-manager.js +164 -9
  44. package/dist/node/community/community-client-manager.js.map +1 -1
  45. package/dist/node/community/remote-community.d.ts +2 -1
  46. package/dist/node/community/remote-community.js +30 -7
  47. package/dist/node/community/remote-community.js.map +1 -1
  48. package/dist/node/community/rpc-local-community.js.map +1 -1
  49. package/dist/node/community/schema.d.ts +31 -4
  50. package/dist/node/community/schema.js +16 -10
  51. package/dist/node/community/schema.js.map +1 -1
  52. package/dist/node/errors.d.ts +3 -0
  53. package/dist/node/errors.js +3 -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/helia/util.js +16 -8
  58. package/dist/node/helia/util.js.map +1 -1
  59. package/dist/node/pkc-error.d.ts +1 -1
  60. package/dist/node/runtime/node/community/local-community/cleanup.d.ts +4 -0
  61. package/dist/node/runtime/node/community/local-community/cleanup.js +50 -37
  62. package/dist/node/runtime/node/community/local-community/cleanup.js.map +1 -1
  63. package/dist/node/runtime/node/community/local-community/publication-validation.js +7 -1
  64. package/dist/node/runtime/node/community/local-community/publication-validation.js.map +1 -1
  65. package/dist/node/schema/schema-util.d.ts +15 -0
  66. package/dist/node/signer/signatures.d.ts +1 -0
  67. package/dist/node/signer/signatures.js +25 -2
  68. package/dist/node/signer/signatures.js.map +1 -1
  69. package/dist/node/test/test-util.d.ts +7 -0
  70. package/dist/node/test/test-util.js +6 -0
  71. package/dist/node/test/test-util.js.map +1 -1
  72. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  import { i as __toESM, n as __exportAll, r as __require, t as __commonJSMin } from "./chunk-2rV9d50f.js";
2
- import { $ as pubsubTopicToDhtKey, $n as n$9, $t as CommunityChallengeSettingSchema, A as extractNetworkErrorDetails, Ar as object, At as trackStartedCommunity, B as isIpfsCid, Cn as CommentUpdateChallengeReservedFieldNames, Ct as findUpdatingCommunity, D as deepMergeRuntimeFields, Dn as CommentUpdateSchema, Dr as custom, E as createAbortError, En as CommentUpdateReservedFields, Er as boolean, Et as listUpdatingCommunities, Fn as CommentEditChallengeRequestToEncryptSchema, Ft as untrackUpdatingCommunity, Gn as ChallengeAnswersSchema, Gt as CommentModerationPubsubMessagePublicationSchema, H as isIpns, Hn as AuthorAddressSchema, Ht as CommunityEditPubsubMessagePublicationSchema, I as getPostUpdateTimestampRange, It as require_sha256$1, Jn as CommunityAddressSchema, Jt as CommentModerationsTableRowSchema, Kn as CidPathSchema, L as hideClassPrivateProps, Ln as CommentEditPubsubMessagePublicationWithFlexibleAuthorSchema, Mn as GetPageParamSchema, Mr as string, Mt as trackUpdatingCommunity, Nn as ModQueuePageIpfsSchema, Nt as untrackStartedCommunity, O as derivePublicationFromChallengeRequest, On as CommentUpdateSignedPropertyNames, Or as literal, Ot as refreshTrackedCommunityAliases, Pn as PageIpfsSchema, Q as isStringDomain, R as ipnsNameToIpnsOverPubsubTopic, Rt as pTimeout, Sn as CommentSignedPropertyNames, Sr as require_ms$1, St as findUpdatingComment, Tn as CommentUpdateForChallengeVerificationSignedPropertyNames, Tr as array, U as isIpnsPath, Un as AuthorCommentIpfsReservedFields, Ut as CreateCommunityEditPublicationOptionsWithRefinementSchema, V as isIpfsPath, Vn as CreateCommentEditOptionsWithRefinementSchema, Vt as CommunityEditPublicationSignedPropertyNames, Wt as CommentModerationChallengeRequestToEncryptSchema, X as isRequestPubsubPublicationOfPost, Xn as CreateSignerSchema, Xt as ChallengeFileFactorySchema, Yn as CommunityAuthorChallengeReservedFieldNames, Yt as CreateCommentModerationOptionsWithRefinementSchema, Z as isRequestPubsubPublicationOfReply, Zn as n$10, Zt as ChallengeFileSchema, _ as PKCUserOptionBaseSchema, _n as CommentChallengeRequestToEncryptSchema, _r as FailedToFetchPageIpfsFromGatewaysError, _t as timestamp, an as CreateNewLocalCommunityUserOptionsSchema, ar as r$8, b as areEquivalentCommunityAddresses, br as logger_default, c as ChallengeVerificationMessageSignedPropertyNames, cn as ExportCommunityModLogsOptionsSchema, cr as r$7, ct as resolveWhenPredicateIsTrue, dn as CreateVoteUserOptionsWithRefinementSchema, dr as e$4, en as CommunityEditOptionsSchema, f as DecryptedChallengeSchema, fn as VoteChallengeRequestToEncryptSchema, fr as require_retry$1, ft as shortifyAddress, g as PKCParsedOptionsSchema, gr as FailedToFetchGenericIpfsFromGatewaysError, gt as throwIfAbortSignalAborted, h as NameResolverSerializedSchema, hn as VoteSignedPropertyNames, hr as FailedToFetchCommunityFromGatewaysError, i as ChallengeMessageSignedPropertyNames, in as CommunitySignedPropertyNames, ir as t$11, it as removeNullUndefinedEmptyObjectsValuesRecursively, j as fetchAndValidateIpnsRecordFromGateway, jn as CreateCommentOptionsWithRefinementSchema, jr as record, k as doesDomainAddressHaveCapitalLetter, kr as number, l as DecryptedChallengeAnswerSchema, lr as t$10, m as NameResolveCacheOptionsSchema, mr as FailedToFetchCommentUpdateFromGatewaysError, mt as sleepUntilTimeoutOrAbort, n as ChallengeAnswerMessageSignedPropertyNames, nn as CommunityIpfsReservedFields, nr as e$6, o as ChallengeRequestMessageSignedPropertyNames, on as CreateRemoteCommunityFunctionArgumentSchema, or as t$12, p as DecryptedChallengeVerificationSchema, pn as VotePubsubMessagePublicationSchema, pr as FailedToFetchCommentIpfsFromGatewaysError, pt as shortifyCid, qn as CidStringSchema, qt as CommentModerationSignedPropertyNames, rn as CommunityIpfsSchema, rr as e$5, sn as CreateRpcCommunityFunctionArgumentSchema, sr as n$8, tn as CommunityExportRecordsSchema, tr as t$13, tt as raceAgainstAbort, un as RpcRemoteCommunityUpdateEventResultSchema, ur as t$9, v as PKCUserOptionsSchema, vn as CommentIpfsReservedFields, vr as PKCError, vt as waitForUpdateInCommunityInstanceWithErrorAndTimeout, wr as _enum, wt as listStartedCommunities, x as calculateIpfsCidV0, xn as CommentPubsubMessageWithFlexibleAuthorRefinementSchema, xr as require_supports_color, xt as findStartedCommunity, yn as CommentIpfsSchema, yr as messages, z as isAbortError, zn as CommentEditSignedPropertyNames, zt as CommunityEditPublicationChallengeRequestToEncryptSchema } from "./schema-CH2yoI0b.js";
2
+ import { $ as pubsubTopicToDhtKey, $n as n$9, $t as CommunityChallengeSettingSchema, A as extractNetworkErrorDetails, Ar as object, At as trackStartedCommunity, B as isIpfsCid, Cn as CommentUpdateChallengeReservedFieldNames, Ct as findUpdatingCommunity, D as deepMergeRuntimeFields, Dn as CommentUpdateSchema, Dr as custom, E as createAbortError, En as CommentUpdateReservedFields, Er as boolean, Et as listUpdatingCommunities, Fn as CommentEditChallengeRequestToEncryptSchema, Ft as untrackUpdatingCommunity, Gn as ChallengeAnswersSchema, Gt as CommentModerationPubsubMessagePublicationSchema, H as isIpns, Hn as AuthorAddressSchema, Ht as CommunityEditPubsubMessagePublicationSchema, I as getPostUpdateTimestampRange, It as require_sha256$1, Jn as CommunityAddressSchema, Jt as CommentModerationsTableRowSchema, Kn as CidPathSchema, L as hideClassPrivateProps, Ln as CommentEditPubsubMessagePublicationWithFlexibleAuthorSchema, Mn as GetPageParamSchema, Mr as string, Mt as trackUpdatingCommunity, Nn as ModQueuePageIpfsSchema, Nt as untrackStartedCommunity, O as derivePublicationFromChallengeRequest, On as CommentUpdateSignedPropertyNames, Or as literal, Ot as refreshTrackedCommunityAliases, Pn as PageIpfsSchema, Q as isStringDomain, R as ipnsNameToIpnsOverPubsubTopic, Rt as pTimeout, Sn as CommentSignedPropertyNames, Sr as require_ms$1, St as findUpdatingComment, Tn as CommentUpdateForChallengeVerificationSignedPropertyNames, Tr as array, U as isIpnsPath, Un as AuthorCommentIpfsReservedFields, Ut as CreateCommunityEditPublicationOptionsWithRefinementSchema, V as isIpfsPath, Vn as CreateCommentEditOptionsWithRefinementSchema, Vt as CommunityEditPublicationSignedPropertyNames, Wt as CommentModerationChallengeRequestToEncryptSchema, X as isRequestPubsubPublicationOfPost, Xn as CreateSignerSchema, Xt as ChallengeFileFactorySchema, Yn as CommunityAuthorChallengeReservedFieldNames, Yt as CreateCommentModerationOptionsWithRefinementSchema, Z as isRequestPubsubPublicationOfReply, Zn as n$10, Zt as ChallengeFileSchema, _ as PKCUserOptionBaseSchema, _n as CommentChallengeRequestToEncryptSchema, _r as FailedToFetchPageIpfsFromGatewaysError, _t as timestamp, an as CreateNewLocalCommunityUserOptionsSchema, ar as r$8, b as areEquivalentCommunityAddresses, br as logger_default, c as ChallengeVerificationMessageSignedPropertyNames, cn as ExportCommunityModLogsOptionsSchema, cr as r$7, ct as resolveWhenPredicateIsTrue, dn as CreateVoteUserOptionsWithRefinementSchema, dr as e$4, en as CommunityEditOptionsSchema, f as DecryptedChallengeSchema, fn as VoteChallengeRequestToEncryptSchema, fr as require_retry$1, ft as shortifyAddress, g as PKCParsedOptionsSchema, gr as FailedToFetchGenericIpfsFromGatewaysError, gt as throwIfAbortSignalAborted, h as NameResolverSerializedSchema, hn as VoteSignedPropertyNames, hr as FailedToFetchCommunityFromGatewaysError, i as ChallengeMessageSignedPropertyNames, in as CommunitySignedPropertyNames, ir as t$11, it as removeNullUndefinedEmptyObjectsValuesRecursively, j as fetchAndValidateIpnsRecordFromGateway, jn as CreateCommentOptionsWithRefinementSchema, jr as record, k as doesDomainAddressHaveCapitalLetter, kr as number, l as DecryptedChallengeAnswerSchema, lr as t$10, m as NameResolveCacheOptionsSchema, mr as FailedToFetchCommentUpdateFromGatewaysError, mt as sleepUntilTimeoutOrAbort, n as ChallengeAnswerMessageSignedPropertyNames, nn as CommunityIpfsReservedFields, nr as e$6, o as ChallengeRequestMessageSignedPropertyNames, on as CreateRemoteCommunityFunctionArgumentSchema, or as t$12, p as DecryptedChallengeVerificationSchema, pn as VotePubsubMessagePublicationSchema, pr as FailedToFetchCommentIpfsFromGatewaysError, pt as shortifyCid, qn as CidStringSchema, qt as CommentModerationSignedPropertyNames, rn as CommunityIpfsSchema, rr as e$5, sn as CreateRpcCommunityFunctionArgumentSchema, sr as n$8, tn as CommunityExportRecordsSchema, tr as t$13, tt as raceAgainstAbort, un as RpcRemoteCommunityUpdateEventResultSchema, ur as t$9, v as PKCUserOptionsSchema, vn as CommentIpfsReservedFields, vr as PKCError, vt as waitForUpdateInCommunityInstanceWithErrorAndTimeout, wr as _enum, wt as listStartedCommunities, x as calculateIpfsCidV0, xn as CommentPubsubMessageWithFlexibleAuthorRefinementSchema, xr as require_supports_color, xt as findStartedCommunity, yn as CommentIpfsSchema, yr as messages, z as isAbortError, zn as CommentEditSignedPropertyNames, zt as CommunityEditPublicationChallengeRequestToEncryptSchema } from "./schema-Iavj-cRD.js";
3
3
  import { t as all } from "./src-CYIMjhjK.js";
4
4
  import http from "node:http";
5
5
  import { createHash } from "node:crypto";
6
6
  import { pathToFileURL } from "node:url";
7
- import fsp from "node:fs/promises";
7
+ import fs from "node:fs/promises";
8
8
  import path from "node:path";
9
9
  import dns from "node:dns";
10
10
  import os from "os";
@@ -88345,7 +88345,7 @@ var require_package$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
88345
88345
  //#endregion
88346
88346
  //#region node_modules/needle/lib/needle.js
88347
88347
  var require_needle = /* @__PURE__ */ __commonJSMin(((exports, module) => {
88348
- var fs = __require("fs"), http$2 = __require("http"), https$1 = __require("https"), url = __require("url"), stream = __require("stream"), debug$2 = require_src()("needle"), stringify$1 = require_querystring().build, multipart = require_multipart(), auth = require_auth(), cookies = require_cookies(), parsers = require_parsers(), decoder = require_decoder();
88348
+ var fs$1 = __require("fs"), http$2 = __require("http"), https$1 = __require("https"), url = __require("url"), stream = __require("stream"), debug$2 = require_src()("needle"), stringify$1 = require_querystring().build, multipart = require_multipart(), auth = require_auth(), cookies = require_cookies(), parsers = require_parsers(), decoder = require_decoder();
88349
88349
  var version = require_package$1().version;
88350
88350
  var user_agent = "Needle/" + version;
88351
88351
  user_agent += " (Node.js " + process.version + "; " + process.platform + " " + process.arch + ")";
@@ -88437,7 +88437,7 @@ var require_needle = /* @__PURE__ */ __commonJSMin(((exports, module) => {
88437
88437
  function get_stream_length(stream, given_length, cb) {
88438
88438
  if (given_length > 0) return cb(given_length);
88439
88439
  if (stream.end !== void 0 && stream.end !== Infinity && stream.start !== void 0) return cb(stream.end + 1 - (stream.start || 0));
88440
- fs.stat(stream.path, function(err, stat) {
88440
+ fs$1.stat(stream.path, function(err, stat) {
88441
88441
  cb(stat ? stat.size - (stream.start || 0) : null);
88442
88442
  });
88443
88443
  }
@@ -88700,7 +88700,7 @@ var require_needle = /* @__PURE__ */ __commonJSMin(((exports, module) => {
88700
88700
  if (err && err.message == "write after end") request.destroy();
88701
88701
  });
88702
88702
  if (config.output && resp.statusCode == 200) {
88703
- var file = fs.createWriteStream(config.output);
88703
+ var file = fs$1.createWriteStream(config.output);
88704
88704
  file.on("error", had_error);
88705
88705
  out.on("end", function() {
88706
88706
  if (file.writable) file.end();
@@ -97817,7 +97817,7 @@ function _allFieldsOfRecordInSignedPropertyNames(record) {
97817
97817
  async function verifyCommunity({ community, communityIpnsHops, resolveAuthorNames, clientsManager, validatePages, cacheIfValid, abortSignal }) {
97818
97818
  const log = logger_default("pkc-js:signatures:verifyCommunity");
97819
97819
  if (!Array.isArray(communityIpnsHops) || communityIpnsHops.length === 0) throw Error("verifyCommunity needs a non-empty communityIpnsHops to verify a community record against");
97820
- const communityIdentityIpnsName = communityIpnsHops[0];
97820
+ const communityIdentityIpnsName = community.anchor?.publicKey ?? communityIpnsHops[0];
97821
97821
  const terminalIpnsName = communityIpnsHops[communityIpnsHops.length - 1];
97822
97822
  if (!_allFieldsOfRecordInSignedPropertyNames(community)) return {
97823
97823
  valid: false,
@@ -97827,6 +97827,10 @@ async function verifyCommunity({ community, communityIpnsHops, resolveAuthorName
97827
97827
  valid: false,
97828
97828
  reason: messages.ERR_COMMUNITY_RECORD_INCLUDES_RESERVED_FIELD
97829
97829
  };
97830
+ if (communityIpnsHops.length > 1 && community.anchor?.publicKey !== communityIpnsHops[0]) return {
97831
+ valid: false,
97832
+ reason: messages.ERR_COMMUNITY_RECORD_ANCHOR_CLAIM_DOES_NOT_MATCH_CHAIN_ANCHOR
97833
+ };
97830
97834
  if (!await _verifyJsonSignature(community)) return {
97831
97835
  valid: false,
97832
97836
  reason: messages.ERR_COMMUNITY_SIGNATURE_IS_INVALID
@@ -97838,7 +97842,8 @@ async function verifyCommunity({ community, communityIpnsHops, resolveAuthorName
97838
97842
  const communityForPages = {
97839
97843
  publicKey: communityIdentityIpnsName,
97840
97844
  name: community.name,
97841
- signature: community.signature
97845
+ signature: community.signature,
97846
+ anchor: community.anchor
97842
97847
  };
97843
97848
  if (community.posts?.pages && validatePages) for (const preloadedPageSortName of t$13(community.posts.pages)) {
97844
97849
  const pageCid = community.posts.pageCids?.[preloadedPageSortName];
@@ -98053,6 +98058,13 @@ async function verifyPageComment({ pageComment, community, parentComment, resolv
98053
98058
  };
98054
98059
  }
98055
98060
  const commentRecord = pageComment.comment;
98061
+ if (community.anchor?.publicKey) {
98062
+ const communityPublicKeyFromRecord = getCommunityPublicKeyFromWire(commentRecord);
98063
+ if (communityPublicKeyFromRecord && !areEquivalentCommunityAddresses(communityPublicKeyFromRecord, community.anchor.publicKey)) return {
98064
+ valid: false,
98065
+ reason: messages.ERR_COMMENT_IN_PAGE_BELONG_TO_DIFFERENT_COMMUNITY
98066
+ };
98067
+ }
98056
98068
  if (community.name) {
98057
98069
  const communityNameFromRecord = getCommunityNameFromWire$1(commentRecord);
98058
98070
  if (communityNameFromRecord && !areEquivalentCommunityAddresses(communityNameFromRecord, community.name)) return {
@@ -124882,9 +124894,12 @@ var CommunityClientsManager = class extends PKCClientsManager {
124882
124894
  newUpdatingState: "failed"
124883
124895
  });
124884
124896
  } else if (communityLoadingRes?.community && (this._community.raw.communityIpfs?.updatedAt || 0) < communityLoadingRes.community.updatedAt) {
124897
+ const publicKeyBeforeApply = this._community.publicKey;
124885
124898
  this._community.initCommunityIpfsPropsNoMerge(communityLoadingRes.community);
124886
124899
  this._community.updateCid = communityLoadingRes.cid;
124900
+ if (publicKeyBeforeApply && this._community.publicKey !== publicKeyBeforeApply) this._community.nameResolved = void 0;
124887
124901
  if (!isStringDomain(this._community.address) && this._community.name && this._community.publicKey && typeof this._community.nameResolved !== "boolean") this._resolveNameInBackground(this._community.name);
124902
+ else if (isStringDomain(this._community.address) && this._community.publicKey && typeof this._community.nameResolved !== "boolean") this._resolveNameInBackground(this._community.address);
124888
124903
  log(`Remote Community`, this._community.address, `received a new update. Will emit an update event with updatedAt`, this._community.updatedAt, "that's", timestamp() - this._community.updatedAt, "seconds old");
124889
124904
  this._community._changeStateEmitEventEmitStateChangeEvent({
124890
124905
  event: {
@@ -124927,6 +124942,14 @@ var CommunityClientsManager = class extends PKCClientsManager {
124927
124942
  this._suppressUpdatingStateForNameResolution--;
124928
124943
  }
124929
124944
  }
124945
+ _nonAnchorHopsOfLoadedChain() {
124946
+ const loadedRecord = this._community.raw.communityIpfs;
124947
+ if (!loadedRecord) return void 0;
124948
+ const chainKeys = new Set(this._community.ipnsHops ?? []);
124949
+ chainKeys.add(getPKCAddressFromPublicKeySync(loadedRecord.signature.publicKey));
124950
+ if (this._community.publicKey) chainKeys.delete(this._community.publicKey);
124951
+ return [...chainKeys];
124952
+ }
124930
124953
  _resolveNameInBackground(name) {
124931
124954
  const log = logger_default("pkc-js:community-client-manager:_resolveNameInBackground");
124932
124955
  const setNameResolvedAndEmitUpdate = (newNameResolved) => {
@@ -124940,6 +124963,11 @@ var CommunityClientsManager = class extends PKCClientsManager {
124940
124963
  cache: { maxAge: 3600 }
124941
124964
  }).then((resolved) => {
124942
124965
  if (resolved && resolved !== this._community.publicKey) {
124966
+ if (this._nonAnchorHopsOfLoadedChain()?.includes(resolved)) {
124967
+ log(`Community name ${name} resolves to ${resolved}, a non-anchor hop of the community's own chain, instead of its identity ${this._community.publicKey}. Marking nameResolved false`);
124968
+ setNameResolvedAndEmitUpdate(false);
124969
+ return;
124970
+ }
124943
124971
  log("Key migration detected for", name, "old:", this._community.publicKey, "new:", resolved);
124944
124972
  const previousPublicKey = this._community.publicKey;
124945
124973
  const error = new PKCError("ERR_COMMUNITY_NAME_RESOLVES_TO_DIFFERENT_PUBLIC_KEY", {
@@ -124989,7 +125017,8 @@ var CommunityClientsManager = class extends PKCClientsManager {
124989
125017
  return this._withInflightCommunityFetch(communityAddress, async () => {
124990
125018
  let ipnsName;
124991
125019
  const isDomain = isStringDomain(communityAddress);
124992
- if (this._community.publicKey && (isDomain || !isDomain && this._community.name && this._community.nameResolved === true)) {
125020
+ const hasAnchorClaim = Boolean(this._community.anchor);
125021
+ if (this._community.publicKey && (isDomain || hasAnchorClaim || !isDomain && this._community.name && this._community.nameResolved === true)) {
124993
125022
  ipnsName = this._community.publicKey;
124994
125023
  if (isDomain) this._resolveNameInBackground(communityAddress);
124995
125024
  } else ipnsName = await this.resolveCommunityNameIfNeeded({
@@ -125027,12 +125056,13 @@ var CommunityClientsManager = class extends PKCClientsManager {
125027
125056
  }
125028
125057
  } else subRes = await this._fetchCommunityFromGateways(ipnsName);
125029
125058
  if (subRes?.community) {
125030
- const anchorIdentityAddress = subRes.community.name || ipnsName;
125059
+ const identityPublicKey = subRes.community.anchor?.publicKey ?? ipnsName;
125060
+ const anchorIdentityAddress = subRes.community.name || identityPublicKey;
125031
125061
  this._pkc._memCaches.communityForPublishing.set(anchorIdentityAddress, {
125032
125062
  encryption: subRes.community.encryption,
125033
125063
  pubsubTopic: subRes.community.pubsubTopic,
125034
125064
  address: anchorIdentityAddress,
125035
- publicKey: ipnsName,
125065
+ publicKey: identityPublicKey,
125036
125066
  name: subRes.community.name
125037
125067
  });
125038
125068
  }
@@ -125080,9 +125110,18 @@ var CommunityClientsManager = class extends PKCClientsManager {
125080
125110
  this._updateCidsAlreadyLoaded.add(latestCommunityCid);
125081
125111
  try {
125082
125112
  const communityIpfs = parseCommunityIpfsSchemaPassthroughWithPKCErrorIfItFails(parseJsonWithPKCErrorIfFails(rawCommunityJsonString));
125113
+ const provenIpnsHops = await this._proveAnchorClaimIfUnwalked({
125114
+ communityJson: communityIpfs,
125115
+ ipnsHops,
125116
+ resolveChainOfClaimedAnchor: async (claimedAnchor) => (await this.resolveIpnsToCidP2P(claimedAnchor, {
125117
+ timeoutMs: this._pkc._timeouts["community-ipns"],
125118
+ abortSignal: this._community._getStopAbortSignal()
125119
+ })).ipnsHops
125120
+ });
125121
+ this._community.ipnsHops = provenIpnsHops;
125083
125122
  const errInRecord = await this._findErrorInCommunityRecord({
125084
125123
  communityJson: communityIpfs,
125085
- communityIpnsHops: ipnsHops,
125124
+ communityIpnsHops: provenIpnsHops,
125086
125125
  cidOfCommunityIpns: latestCommunityCid
125087
125126
  });
125088
125127
  if (errInRecord) throw errInRecord;
@@ -125157,6 +125196,11 @@ var CommunityClientsManager = class extends PKCClientsManager {
125157
125196
  gatewayUrl
125158
125197
  });
125159
125198
  }
125199
+ ipnsHops = await this._proveAnchorClaimIfUnwalked({
125200
+ communityJson: communityIpfs,
125201
+ ipnsHops,
125202
+ resolveChainOfClaimedAnchor: async (claimedAnchor) => (await this._resolveIpnsChainViaGateway(gatewayUrl, claimedAnchor, abortController.signal)).ipnsHops
125203
+ });
125160
125204
  gatewayFetches[gatewayUrl].ipnsHops = ipnsHops;
125161
125205
  const errorWithinRecord = await this._findErrorInCommunityRecord({
125162
125206
  communityJson: communityIpfs,
@@ -125266,7 +125310,27 @@ var CommunityClientsManager = class extends PKCClientsManager {
125266
125310
  cleanUp();
125267
125311
  throwIfAbortSignalAborted(stopSignal);
125268
125312
  const gatewayToError = t$4(gatewayFetches, (gatewayFetch) => gatewayFetch.error);
125269
- if (Object.keys(gatewayFetches).map((gatewayUrl) => gatewayFetches[gatewayUrl].error).some((err) => err.details?.status === 304 || err.code === "ERR_GATEWAY_ABORTING_LOADING_COMMUNITY_BECAUSE_WE_ALREADY_LOADED_THIS_RECORD")) return void 0;
125313
+ if (Object.keys(gatewayFetches).map((gatewayUrl) => gatewayFetches[gatewayUrl].error).some((err) => err.details?.status === 304 || err.code === "ERR_GATEWAY_ABORTING_LOADING_COMMUNITY_BECAUSE_WE_ALREADY_LOADED_THIS_RECORD")) {
125314
+ if (this._community.anchor && this._community.ipnsHops?.[0] !== ipnsName) {
125315
+ const confirmingGatewayUrl = Object.keys(gatewayFetches).find((gatewayUrl) => gatewayFetches[gatewayUrl].error?.details?.status === 304 || gatewayFetches[gatewayUrl].error?.code === "ERR_GATEWAY_ABORTING_LOADING_COMMUNITY_BECAUSE_WE_ALREADY_LOADED_THIS_RECORD");
125316
+ if (confirmingGatewayUrl) {
125317
+ const chainWalkAbortController = new AbortController();
125318
+ const chainWalkTimeoutId = setTimeout(() => chainWalkAbortController.abort("Aborting delegated chain upgrade because it timed out after " + timeoutMs + "ms"), timeoutMs);
125319
+ const onStopAbortChainWalk = () => chainWalkAbortController.abort(stopSignal?.reason);
125320
+ stopSignal?.addEventListener("abort", onStopAbortChainWalk, { once: true });
125321
+ try {
125322
+ const chain = await this._resolveIpnsChainViaGateway(confirmingGatewayUrl, ipnsName, chainWalkAbortController.signal);
125323
+ if (this._community.updateCid && chain.terminalCidV0 === this._community.updateCid) this._community.ipnsHops = chain.ipnsHops;
125324
+ } catch (chainWalkError) {
125325
+ log.trace(`Failed to upgrade the delegated chain of ${ipnsName} after a confirmed consumed record, will retry next poll`, chainWalkError);
125326
+ } finally {
125327
+ clearTimeout(chainWalkTimeoutId);
125328
+ stopSignal?.removeEventListener("abort", onStopAbortChainWalk);
125329
+ }
125330
+ }
125331
+ }
125332
+ return;
125333
+ }
125270
125334
  const combinedError = new FailedToFetchCommunityFromGatewaysError({
125271
125335
  ipnsName,
125272
125336
  gatewayToError,
@@ -125330,6 +125394,26 @@ var CommunityClientsManager = class extends PKCClientsManager {
125330
125394
  });
125331
125395
  }
125332
125396
  }
125397
+ async _proveAnchorClaimIfUnwalked({ communityJson, ipnsHops, resolveChainOfClaimedAnchor }) {
125398
+ const log = logger_default("pkc-js:community-client-manager:_proveAnchorClaimIfUnwalked");
125399
+ if (ipnsHops.length > 1) return ipnsHops;
125400
+ const claimedAnchor = communityJson.anchor?.publicKey;
125401
+ if (!claimedAnchor) return ipnsHops;
125402
+ const loadedName = ipnsHops[0];
125403
+ if (this._areEquivalentCommunityAddresses(claimedAnchor, loadedName)) return ipnsHops;
125404
+ const provenHops = await resolveChainOfClaimedAnchor(claimedAnchor);
125405
+ const anchorDelegatesTo = provenHops[provenHops.length - 1];
125406
+ if (!this._areEquivalentCommunityAddresses(anchorDelegatesTo, loadedName)) throw new PKCError("ERR_COMMUNITY_RECORD_ANCHOR_CLAIM_IS_NOT_ENDORSED", {
125407
+ claimedAnchor,
125408
+ recordIpnsName: loadedName,
125409
+ anchorDelegatesTo,
125410
+ claimedAnchorHops: provenHops,
125411
+ communityAddress: this._getCommunityAddressFromInstance(),
125412
+ recordSignerAddress: getPKCAddressFromPublicKeySync(communityJson.signature.publicKey)
125413
+ });
125414
+ log.trace(`Anchor claim of ${loadedName} proven: ${claimedAnchor} delegates to it. Adopting the chain`, provenHops);
125415
+ return provenHops;
125416
+ }
125333
125417
  async _findErrorInCommunityRecord({ communityJson, communityIpnsHops, cidOfCommunityIpns }) {
125334
125418
  const anchorIpnsName = communityIpnsHops[0];
125335
125419
  const terminalIpnsName = communityIpnsHops[communityIpnsHops.length - 1];
@@ -125540,13 +125624,13 @@ var RemoteCommunity = class extends import_lib$1.TypedEmitter {
125540
125624
  }
125541
125625
  }
125542
125626
  _updateIpnsPubsubPropsIfNeeded(newProps) {
125543
- const anchorFromHops = this.ipnsHops?.[0];
125627
+ const anchorFromClaimOrHops = this.anchor?.publicKey ?? this.ipnsHops?.[0];
125544
125628
  if ("ipnsName" in newProps && newProps.ipnsName) {
125545
125629
  this.ipnsName = newProps.ipnsName;
125546
125630
  this.ipnsPubsubTopic = ipnsNameToIpnsOverPubsubTopic(this.ipnsName);
125547
125631
  this.ipnsPubsubTopicRoutingCid = pubsubTopicToDhtKey(this.ipnsPubsubTopic);
125548
- } else if (anchorFromHops) {
125549
- this.ipnsName = anchorFromHops;
125632
+ } else if (anchorFromClaimOrHops) {
125633
+ this.ipnsName = anchorFromClaimOrHops;
125550
125634
  this.ipnsPubsubTopic = ipnsNameToIpnsOverPubsubTopic(this.ipnsName);
125551
125635
  this.ipnsPubsubTopicRoutingCid = pubsubTopicToDhtKey(this.ipnsPubsubTopic);
125552
125636
  } else if (newProps.signature?.publicKey && this.signature?.publicKey !== newProps.signature?.publicKey) {
@@ -125563,6 +125647,8 @@ var RemoteCommunity = class extends import_lib$1.TypedEmitter {
125563
125647
  initRemoteCommunityPropsNoMerge(newProps) {
125564
125648
  const incomingIpnsHops = newProps.ipnsHops;
125565
125649
  if (Array.isArray(incomingIpnsHops) && incomingIpnsHops.length > 0) this._ipnsHops = incomingIpnsHops;
125650
+ if ("anchor" in newProps) this.anchor = newProps.anchor;
125651
+ else if (newProps.signature) this.anchor = void 0;
125566
125652
  this.title = newProps.title;
125567
125653
  this.description = newProps.description;
125568
125654
  this.lastPostCid = newProps.lastPostCid;
@@ -125583,8 +125669,10 @@ var RemoteCommunity = class extends import_lib$1.TypedEmitter {
125583
125669
  this.pubsubTopic = newProps.pubsubTopic;
125584
125670
  this.signature = newProps.signature;
125585
125671
  const explicitPublicKey = "publicKey" in newProps ? newProps.publicKey : void 0;
125672
+ const anchorFromClaim = this.anchor?.publicKey;
125586
125673
  const anchorFromHops = this.ipnsHops?.[0];
125587
- if (anchorFromHops) this.publicKey = anchorFromHops;
125674
+ if (anchorFromClaim) this.publicKey = anchorFromClaim;
125675
+ else if (anchorFromHops) this.publicKey = anchorFromHops;
125588
125676
  else if (newProps.signature?.publicKey) this.publicKey = getPKCAddressFromPublicKeySync(newProps.signature.publicKey);
125589
125677
  else if (explicitPublicKey) this.publicKey = explicitPublicKey;
125590
125678
  else if (!this.publicKey && "address" in newProps && typeof newProps.address === "string" && !isStringDomain(newProps.address)) this.publicKey = newProps.address;
@@ -125625,6 +125713,7 @@ var RemoteCommunity = class extends import_lib$1.TypedEmitter {
125625
125713
  _clearDataForKeyMigration(newPublicKey) {
125626
125714
  this.raw.communityIpfs = void 0;
125627
125715
  this.updateCid = void 0;
125716
+ this.anchor = void 0;
125628
125717
  this.initRemoteCommunityPropsNoMerge({});
125629
125718
  this.pubsubTopicRoutingCid = void 0;
125630
125719
  this.publicKey = newPublicKey;
@@ -125725,7 +125814,7 @@ var RemoteCommunity = class extends import_lib$1.TypedEmitter {
125725
125814
  }
125726
125815
  _isRetriableErrorWhenLoading(err) {
125727
125816
  if (!(err instanceof PKCError)) return false;
125728
- if (err.code === "ERR_COMMUNITY_SIGNATURE_IS_INVALID" || err.code === "ERR_INVALID_COMMUNITY_IPFS_SCHEMA" || err.code === "ERR_THE_COMMUNITY_IPNS_RECORD_POINTS_TO_DIFFERENT_ADDRESS_THAN_WE_EXPECTED" || err.code === "ERR_OVER_DOWNLOAD_LIMIT" || err.code === "ERR_INVALID_JSON" || err.code === "ERR_NO_RESOLVER_FOR_NAME" || err.code === "ERR_GATEWAY_IPNS_RECORD_CHAIN_INVALID" || err.code === "ERR_IPNS_MAX_HOPS_EXCEEDED" || err.code === "ERR_RESOLVED_IPNS_TO_UNSUPPORTED_VALUE") return false;
125817
+ if (err.code === "ERR_COMMUNITY_SIGNATURE_IS_INVALID" || err.code === "ERR_INVALID_COMMUNITY_IPFS_SCHEMA" || err.code === "ERR_THE_COMMUNITY_IPNS_RECORD_POINTS_TO_DIFFERENT_ADDRESS_THAN_WE_EXPECTED" || err.code === "ERR_OVER_DOWNLOAD_LIMIT" || err.code === "ERR_INVALID_JSON" || err.code === "ERR_NO_RESOLVER_FOR_NAME" || err.code === "ERR_GATEWAY_IPNS_RECORD_CHAIN_INVALID" || err.code === "ERR_IPNS_MAX_HOPS_EXCEEDED" || err.code === "ERR_RESOLVED_IPNS_TO_UNSUPPORTED_VALUE" || err.code === "ERR_COMMUNITY_RECORD_ANCHOR_CLAIM_IS_NOT_ENDORSED") return false;
125729
125818
  if (err instanceof FailedToFetchCommunityFromGatewaysError) {
125730
125819
  for (const gatewayError of Object.values(err.details.gatewayToError)) {
125731
125820
  if (gatewayError instanceof PKCError && gatewayError.code === "ERR_COMMUNITY_SIGNATURE_IS_INVALID") return true;
@@ -125905,7 +125994,7 @@ var AddressRewriterDatabase = class {
125905
125994
  async initialize() {
125906
125995
  try {
125907
125996
  const dbDir = path.dirname(this._dbPath);
125908
- await fsp.mkdir(dbDir, { recursive: true });
125997
+ await fs.mkdir(dbDir, { recursive: true });
125909
125998
  this._db = new Database(this._dbPath);
125910
125999
  this._db.exec(`
125911
126000
  CREATE TABLE IF NOT EXISTS request_logs (
@@ -5315,6 +5315,8 @@ var messages;
5315
5315
  messages["ERR_COMMUNITY_EDIT_HAS_RESERVED_FIELD"] = "CommunityEdit record includes a reserved field";
5316
5316
  messages["ERR_COMMUNITY_SIGNATURE_IS_INVALID"] = "Community signature is invalid";
5317
5317
  messages["ERR_COMMUNITY_RECORD_INCLUDES_RESERVED_FIELD"] = "The CommunityIpfs record includes a reserved field";
5318
+ messages["ERR_COMMUNITY_RECORD_ANCHOR_CLAIM_DOES_NOT_MATCH_CHAIN_ANCHOR"] = "The CommunityIpfs record was resolved through a delegated IPNS chain but its signed anchor claim does not match the chain's anchor";
5319
+ messages["ERR_COMMUNITY_RECORD_ANCHOR_CLAIM_IS_NOT_ENDORSED"] = "The CommunityIpfs record claims an anchor that does not delegate to it: resolving the claimed anchor does not lead to the key that signed this record, so the claim is forged";
5318
5320
  messages["ERR_FAILED_TO_RESOLVE_COMMUNITY_DOMAIN"] = "Failed to resolve the community domain address to use for verification";
5319
5321
  messages["ERR_FAILED_TO_RESOLVE_AUTHOR_DOMAIN"] = "Failed to resolve the author domain address to use for verification";
5320
5322
  messages["ERR_AUTHOR_DOMAIN_RESOLVES_TO_DIFFERENT_SIGNER"] = "The author domain resolved to a public key that does not match the publication signer";
@@ -5371,6 +5373,7 @@ var messages;
5371
5373
  messages["ERR_PUBLICATION_USES_DEPRECATED_SUBPLEBBIT_ADDRESS"] = "Publication uses the deprecated `subplebbitAddress` field; update your client to use `communityPublicKey`";
5372
5374
  messages["ERR_PUBLICATION_USES_DEPRECATED_COMMUNITY_ADDRESS"] = "Publication uses the deprecated `communityAddress` field; update your client to use `communityPublicKey`";
5373
5375
  messages["ERR_PUBLICATION_INVALID_COMMUNITY_PUBLIC_KEY"] = "The communityPublicKey field of publication does not match the community's IPNS key";
5376
+ messages["ERR_PUBLICATION_SIGNED_TO_MINTER_INSTEAD_OF_ANCHOR"] = "The communityPublicKey field of publication is this delegated community's minter key; publications must be signed to the community's anchor identity";
5374
5377
  messages["ERR_PUBLICATION_INVALID_COMMUNITY_NAME"] = "The communityName field of publication does not match the community's address";
5375
5378
  messages["ERR_AUTHOR_IS_BANNED"] = "Author is banned";
5376
5379
  messages["ERR_PUBLICATION_HAS_NO_AUTHOR_ADDRESS"] = "Publication has no author.address";
@@ -6660,6 +6663,7 @@ const ChallengeFileFactorySchema = _function({
6660
6663
  input: [object({ challengeSettings: CommunityChallengeSettingSchema })],
6661
6664
  output: ChallengeFileSchema
6662
6665
  });
6666
+ const CommunityAnchorSchema = object({ publicKey: string().refine((arg) => isIpnsName(arg), messages.ERR_ANCHOR_PUBLIC_KEY_IS_INVALID) }).strict();
6663
6667
  const CommunityIpfsSchema = object({
6664
6668
  posts: PostsPagesIpfsSchema.optional(),
6665
6669
  modQueue: ModQueuePagesIpfsSchema.optional(),
@@ -6667,6 +6671,7 @@ const CommunityIpfsSchema = object({
6667
6671
  signature: JsonSignatureSchema,
6668
6672
  encryption: CommunityEncryptionSchema,
6669
6673
  name: string().min(1).optional(),
6674
+ anchor: CommunityAnchorSchema.optional(),
6670
6675
  createdAt: PKCTimestampSchema,
6671
6676
  updatedAt: PKCTimestampSchema,
6672
6677
  pubsubTopic: PubsubTopicSchema.optional(),
@@ -6725,7 +6730,6 @@ const CommunityEditOptionsSchema = CommunityIpfsSchema.pick({
6725
6730
  settings: CommunitySettingsSchema.optional(),
6726
6731
  roles: CommunityRolesToEditSchema.optional()
6727
6732
  }).partial().strict();
6728
- const CommunityAnchorSchema = object({ publicKey: string().refine((arg) => isIpnsName(arg), messages.ERR_ANCHOR_PUBLIC_KEY_IS_INVALID) }).strict();
6729
6733
  const CreateNewLocalCommunityUserOptionsSchema = CommunityEditOptionsSchema.omit({ address: true }).extend({
6730
6734
  signer: CreateSignerSchema.optional(),
6731
6735
  anchor: CommunityAnchorSchema.optional(),
@@ -16059,7 +16063,7 @@ function extractNetworkErrorDetails(err, depth = 0) {
16059
16063
  }
16060
16064
  //#endregion
16061
16065
  //#region dist/node/generated-version.js
16062
- const version = "0.0.78";
16066
+ const version = "0.0.80";
16063
16067
  //#endregion
16064
16068
  //#region dist/node/version.js
16065
16069
  const protocolVersion = ProtocolVersionSchema.parse("1.0.0");
@@ -1,4 +1,4 @@
1
- import { et as pubsubTopicToDhtKeyCid, vr as PKCError } from "./schema-CH2yoI0b.js";
1
+ import { et as pubsubTopicToDhtKeyCid, vr as PKCError } from "./schema-Iavj-cRD.js";
2
2
  import { ipnsSelector } from "ipns/selector";
3
3
  import { equals } from "uint8arrays/equals";
4
4
  //#region dist/node/helia/util.js
@@ -223,8 +223,9 @@ async function connectToPubsubPeers({ helia, pubsubTopic, maxPeers, options, log
223
223
  };
224
224
  throw e;
225
225
  }
226
+ } finally {
227
+ retryScheduler.onProviderStreamEnded();
226
228
  }
227
- retryScheduler.onProviderStreamEnded();
228
229
  inflightDialPromises.push(...retryScheduler.retryTasks);
229
230
  let graftError = null;
230
231
  try {
@@ -1,2 +1,2 @@
1
- import { a as getShortCid, i as getShortAddress, n as challenges, o as nativeFunctions, r as createAnchorIpnsRecord, s as setNativeFunctions, t as PKC } from "./chunks/node-CcPI4aNc.js";
1
+ import { a as getShortCid, i as getShortAddress, n as challenges, o as nativeFunctions, r as createAnchorIpnsRecord, s as setNativeFunctions, t as PKC } from "./chunks/node-4qAZNuJG.js";
2
2
  export { challenges, createAnchorIpnsRecord, PKC as default, getShortAddress, getShortCid, nativeFunctions, setNativeFunctions };
@@ -1,7 +1,7 @@
1
- import { $n as n, L as hideClassPrivateProps, br as logger_default, st as replaceXWithY, tr as t, vr as PKCError, xt as findStartedCommunity } from "../../chunks/schema-CH2yoI0b.js";
2
- import { _ as parseRpcPublishAnchorRecordParam, c as parseRpcAuthorNameParam, d as parseRpcCommentRepliesPageParam, f as parseRpcCommunityIdentifierParam, g as parseRpcExportCommunityParam, h as parseRpcExportCommunityModLogsParam, l as parseRpcCancelExportParam, m as parseRpcEditCommunityParam, p as parseRpcCommunityPageParam, t as PKC, u as parseRpcCidParam, v as parseRpcPublishChallengeAnswersParam, y as parseRpcUnsubscribeParam } from "../../chunks/node-CcPI4aNc.js";
3
- import { $t as parseCommentEditChallengeRequestToEncryptSchemaWithPKCErrorIfItFails, Dn as parseVoteChallengeRequestToEncryptSchemaWithPKCErrorIfItFails, En as parseSetNewSettingsPKCWsServerSchemaWithPKCErrorIfItFails, J as buildPageRuntimeFields, Qt as parseCommentChallengeRequestToEncryptSchemaWithPKCErrorIfItFails, Y as buildPagesRuntimeFields, Zn as t$1, at as pLimit, hn as parseCreatePKCWsServerOptionsSchemaWithPKCErrorIfItFails, ir as stringify, it as pRetry, mn as parseCreateNewLocalCommunityUserOptionsSchemaWithPKCErrorIfItFails, nn as parseCommentModerationChallengeRequestToEncryptSchemaWithPKCErrorIfItFails, on as parseCommunityEditChallengeRequestToEncryptSchemaWithPKCErrorIfItFails, sn as parseCommunityEditOptionsSchemaWithPKCErrorIfItFails, st as require_lib, yn as parseDecryptedChallengeAnswerWithPKCErrorIfItFails } from "../../chunks/rpc-local-community-DHhucg8-.js";
4
- import { t as LocalCommunity } from "../../chunks/local-community-KNlSpG2e.js";
1
+ import { $n as n, L as hideClassPrivateProps, br as logger_default, st as replaceXWithY, tr as t, vr as PKCError, xt as findStartedCommunity } from "../../chunks/schema-Iavj-cRD.js";
2
+ import { _ as parseRpcPublishAnchorRecordParam, c as parseRpcAuthorNameParam, d as parseRpcCommentRepliesPageParam, f as parseRpcCommunityIdentifierParam, g as parseRpcExportCommunityParam, h as parseRpcExportCommunityModLogsParam, l as parseRpcCancelExportParam, m as parseRpcEditCommunityParam, p as parseRpcCommunityPageParam, t as PKC, u as parseRpcCidParam, v as parseRpcPublishChallengeAnswersParam, y as parseRpcUnsubscribeParam } from "../../chunks/node-4qAZNuJG.js";
3
+ import { $t as parseCommentEditChallengeRequestToEncryptSchemaWithPKCErrorIfItFails, Dn as parseVoteChallengeRequestToEncryptSchemaWithPKCErrorIfItFails, En as parseSetNewSettingsPKCWsServerSchemaWithPKCErrorIfItFails, J as buildPageRuntimeFields, Qt as parseCommentChallengeRequestToEncryptSchemaWithPKCErrorIfItFails, Y as buildPagesRuntimeFields, Zn as t$1, at as pLimit, hn as parseCreatePKCWsServerOptionsSchemaWithPKCErrorIfItFails, ir as stringify, it as pRetry, mn as parseCreateNewLocalCommunityUserOptionsSchemaWithPKCErrorIfItFails, nn as parseCommentModerationChallengeRequestToEncryptSchemaWithPKCErrorIfItFails, on as parseCommunityEditChallengeRequestToEncryptSchemaWithPKCErrorIfItFails, sn as parseCommunityEditOptionsSchemaWithPKCErrorIfItFails, st as require_lib, yn as parseDecryptedChallengeAnswerWithPKCErrorIfItFails } from "../../chunks/rpc-local-community-Cog5rZLG.js";
4
+ import { t as LocalCommunity } from "../../chunks/local-community-CHzhypCp.js";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import path from "path";
7
7
  import assert from "assert";
@@ -52,11 +52,13 @@ export declare class CommunityClientsManager extends PKCClientsManager {
52
52
  startUpdatingLoop(): Promise<void>;
53
53
  stopUpdatingLoop(): Promise<void>;
54
54
  private _resolveCommunityNameWithoutUpdatingState;
55
+ private _nonAnchorHopsOfLoadedChain;
55
56
  private _resolveNameInBackground;
56
57
  _resolvePageAuthorNamesInBackground(): void;
57
58
  fetchNewUpdateForCommunity(communityAddress: string): Promise<ResultOfFetchingCommunity>;
58
59
  private _fetchCommunityIpnsP2PAndVerify;
59
60
  private _fetchCommunityFromGateways;
60
61
  private _resolveIpnsChainViaGateway;
62
+ private _proveAnchorClaimIfUnwalked;
61
63
  private _findErrorInCommunityRecord;
62
64
  }