diff --git a/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch b/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch deleted file mode 100644 index 91d6c8f2..00000000 --- a/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch +++ /dev/null @@ -1,167 +0,0 @@ -diff --git a/dist/browser/community/community-client-manager.js b/dist/browser/community/community-client-manager.js -index 8b45a48e22aff3ff5c0f9f0a30408fd63dfe40a4..9356e89aca5a84eae0c13a790b2fdbfff88604ca 100644 ---- a/dist/browser/community/community-client-manager.js -+++ b/dist/browser/community/community-client-manager.js -@@ -16,6 +16,7 @@ import { CID } from "kubo-rpc-client"; - import { getAuthorNameFromRuntime } from "../publications/publication-author.js"; - import { selectWinningGatewayCommunity } from "./community-gateway-selection.js"; - export const MAX_FILE_SIZE_BYTES_FOR_COMMUNITY_IPFS = 1024 * 1024; // 1mb -+const BROWSER_P2P_GATEWAY_FALLBACK_IPNS_TIMEOUT_MS = 15000; - export class CommunityClientsManager extends PKCClientsManager { - constructor(community) { - super(community._pkc); -@@ -378,22 +379,37 @@ export class CommunityClientsManager extends PKCClientsManager { - let subRes; - const areWeConnectedToKuboOrHelia = Object.keys(this._pkc.clients.kuboRpcClients).length > 0 || Object.keys(this._pkc.clients.libp2pJsClients).length > 0; - if (areWeConnectedToKuboOrHelia) { -+ const log = Logger("pkc-js:remote-community:update"); - const kuboRpcOrHelia = this.getDefaultKuboRpcClientOrHelia(); -+ const canFallbackToGateways = Object.keys(this._pkc.clients.ipfsGateways).length > 0; -+ const p2pIpnsTimeoutMs = canFallbackToGateways && "_helia" in kuboRpcOrHelia -+ ? Math.min(this._pkc._timeouts["community-ipns"], BROWSER_P2P_GATEWAY_FALLBACK_IPNS_TIMEOUT_MS) -+ : this._pkc._timeouts["community-ipns"]; - // we're connected to kubo or helia - try { -- subRes = await this._fetchCommunityIpnsP2PAndVerify(ipnsName); -+ subRes = await this._fetchCommunityIpnsP2PAndVerify(ipnsName, p2pIpnsTimeoutMs); - } - catch (e) { -- //@ts-expect-error -- e.details = { -+ if (canFallbackToGateways && !this._community._getStopAbortSignal()?.aborted) { -+ log.error("Falling back to gateways after browser P2P community IPNS fetch failed", { -+ communityAddress, -+ ipnsName, -+ error: e -+ }); -+ subRes = await this._fetchCommunityFromGateways(ipnsName); -+ } -+ else { - //@ts-expect-error -- ...e.details, -- ipnsName, -- communityAddress, -- ipnsPubsubTopic: this._community.ipnsPubsubTopic, -- ipnsPubsubTopicRoutingCid: this._community.ipnsPubsubTopicRoutingCid -- }; -- throw e; -+ e.details = { -+ //@ts-expect-error -+ ...e.details, -+ ipnsName, -+ communityAddress, -+ ipnsPubsubTopic: this._community.ipnsPubsubTopic, -+ ipnsPubsubTopicRoutingCid: this._community.ipnsPubsubTopicRoutingCid -+ }; -+ throw e; -+ } - } - finally { - if ("_helia" in kuboRpcOrHelia) -@@ -425,7 +441,7 @@ export class CommunityClientsManager extends PKCClientsManager { - return subRes; - }); - } -- async _fetchCommunityIpnsP2PAndVerify(ipnsName) { -+ async _fetchCommunityIpnsP2PAndVerify(ipnsName, timeoutMs = this._pkc._timeouts["community-ipns"]) { - const log = Logger("pkc-js:clients-manager:_fetchCommunityIpnsP2PAndVerify"); - const kuboRpcOrHelia = this.getDefaultKuboRpcClientOrHelia(); - if ("_helia" in kuboRpcOrHelia) { -@@ -434,7 +450,7 @@ export class CommunityClientsManager extends PKCClientsManager { - else - this.updateKuboRpcState("fetching-ipns", kuboRpcOrHelia.url); - const { cid: latestCommunityCid, ipnsHops } = await this.resolveIpnsToCidP2P(ipnsName, { -- timeoutMs: this._pkc._timeouts["community-ipns"], -+ timeoutMs, - abortSignal: this._community._getStopAbortSignal() - }); - // ipnsHops[0] is the anchor (== ipnsName), ipnsHops.at(-1) is the terminal name whose -diff --git a/dist/browser/helia/helia-for-pkc.js b/dist/browser/helia/helia-for-pkc.js -index 3eca64dd532a19393c55ddf953dfd4ef207c65f8..683fed56722effc54b1b08e5b050e311ed174424 100644 ---- a/dist/browser/helia/helia-for-pkc.js -+++ b/dist/browser/helia/helia-for-pkc.js -@@ -161,6 +161,11 @@ export async function createLibp2pJsClientOrUseExistingOne(pkcOptions) { - warmupPromisesByTopic.set(topic, p); - return p; - }; -+ const ignoreBestEffortPubsubWarmupError = (operation, topic, err, options) => { -+ if (options?.signal?.aborted) -+ throw err; -+ log.error(`Best-effort pubsub peer warmup failed before ${operation} on topic`, topic, err); -+ }; - const throwIfHeliaIsStoppingOrStopped = () => { - if (helia.libp2p.status === "stopped" || helia.libp2p.status === "stopping") - throw new PKCError("ERR_HELIAS_STOPPING_OR_STOPPED", { -@@ -299,8 +304,13 @@ export async function createLibp2pJsClientOrUseExistingOne(pkcOptions) { - if (!wasAlreadySubscribed) - helia.libp2p.services.pubsub.subscribe(topic); - try { -- await warmupForTopic(topic, options); -- const res = await helia.libp2p.services.pubsub.publish(topic, data); -+ try { -+ await warmupForTopic(topic, options); -+ } -+ catch (err) { -+ ignoreBestEffortPubsubWarmupError("publish", topic, err, options); -+ } -+ const res = await helia.libp2p.services.pubsub.publish(topic, data, { allowPublishToZeroTopicPeers: true }); - log("Published new data to pubsub topic (string, e.g. community address)", topic, "Direct gossipsub recipients (libp2p peer IDs, NOT signer/community addresses):", res.recipients.map((p) => p.toString())); - } - finally { -@@ -323,7 +333,12 @@ export async function createLibp2pJsClientOrUseExistingOne(pkcOptions) { - // locally subscribed to). - const warmupPromise = warmupForTopic(topic, options); - helia.libp2p.services.pubsub.subscribe(topic); -- await warmupPromise; -+ try { -+ await warmupPromise; -+ } -+ catch (err) { -+ ignoreBestEffortPubsubWarmupError("subscribe", topic, err, options); -+ } - }, - unsubscribe: async (topic, handler, options) => { - throwIfHeliaIsStoppingOrStopped(); -diff --git a/dist/browser/publications/publication.js b/dist/browser/publications/publication.js -index 5e17c02a39c2715c7ac932695fe90d5078bce405..2d43d996e2b3cdab759e89c296eb9ed8aae857db 100644 ---- a/dist/browser/publications/publication.js -+++ b/dist/browser/publications/publication.js -@@ -842,8 +842,14 @@ class Publication extends TypedEmitter { - await new Promise((resolve) => setTimeout(resolve, this._setProviderFailureThresholdSeconds * 1000)); - if (this._isAllAttemptsExhausted(providers.length)) { - await this._postSucessOrFailurePublishing(); -- const allAttemptsFailedError = new PKCError("ERR_ALL_PUBSUB_PROVIDERS_THROW_ERRORS", { -- challengeExchanges: this._challengeExchangesFormattedForErrors(), -+ const challengeExchanges = this._challengeExchangesFormattedForErrors(); -+ const didEveryAttemptThrow = challengeExchanges.length > 0 && -+ challengeExchanges.every((exchange) => exchange.challengeRequestPublishError); -+ const allAttemptsFailedError = new PKCError(didEveryAttemptThrow -+ ? "ERR_ALL_PUBSUB_PROVIDERS_THROW_ERRORS" -+ : "ERR_PUBSUB_DID_NOT_RECEIVE_RESPONSE_AFTER_PUBLISHING_CHALLENGE_REQUEST", { -+ challengeExchanges, -+ publishToDifferentProviderThresholdSeconds: this._publishToDifferentProviderThresholdSeconds, - pubsubTopic: this._communityPubsubTopicWithFallback(), - providerHeliaContexts: this._libp2pJsClientHeliaContexts() - }); -diff --git a/dist/browser/runtime/browser/libp2p-extra-transports.js b/dist/browser/runtime/browser/libp2p-extra-transports.js -index 1b7028978d1da8c3f78e9b4d18e790a3ad025e25..2b8eff3ce509cff57ac5be3d31b26b38a5301a52 100644 ---- a/dist/browser/runtime/browser/libp2p-extra-transports.js -+++ b/dist/browser/runtime/browser/libp2p-extra-transports.js -@@ -1,3 +1,4 @@ --const extraLibp2pTransports = []; -+import { webTransport } from "@libp2p/webtransport"; -+const extraLibp2pTransports = typeof globalThis.WebTransport === "function" ? [webTransport()] : []; - export default extraLibp2pTransports; - //# sourceMappingURL=libp2p-extra-transports.js.map -diff --git a/package.json b/package.json -index 7667db9846b0e18a55ce3942d243f2148b2ab5a0..f064d57f444083a6cf2c7a9ecb1b8ab1049e7a46 100644 ---- a/package.json -+++ b/package.json -@@ -78,6 +78,7 @@ - "@libp2p/identify": "4.1.7", - "@libp2p/interface": "3.2.3", - "@libp2p/peer-id": "6.0.10", -+ "@libp2p/webtransport": "6.0.0", - "@multiformats/multiaddr": "13.0.3", - "@noble/curves": "2.2.0", - "@pkcprotocol/pkc-logger": "0.1.0", diff --git a/.yarnrc.yml b/.yarnrc.yml index b71fe20a..c30118dc 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -5,6 +5,3 @@ packageExtensions: peerDependencies: "@types/react": ">=18.0.0" react: ">=17.0.1" - "@pkcprotocol/pkc-js@0.0.48": - dependencies: - "@libp2p/webtransport": "6.0.0" diff --git a/package.json b/package.json index 7aeec77a..4feea278 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "private": true, "dependencies": { "@bbob/parser": "4.3.1", - "@bitsocial/bitsocial-react-hooks": "0.1.21", + "@bitsocial/bitsocial-react-hooks": "0.1.22", "@bitsocial/bso-resolver": "0.0.8", "@capacitor/app": "7.0.1", "@capacitor/browser": "7.0.5", @@ -17,7 +17,7 @@ "@capawesome/capacitor-android-edge-to-edge-support": "7.2.2", "@chenglou/pretext": "0.0.5", "@floating-ui/react": "0.26.1", - "@pkcprotocol/pkc-js": "patch:@pkcprotocol/pkc-js@npm%3A0.0.48#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch", + "@pkcprotocol/pkc-js": "0.0.53", "@react-spring/web": "10.0.3", "@ruffle-rs/ruffle": "0.2.0", "@types/node": "20.19.37", @@ -245,8 +245,7 @@ "yaml@npm:^1.10.2": "1.10.3", "yaml@npm:^2.8.2": "2.8.3", "use-sync-external-store": "1.6.0", - "@electron/notarize@npm:^2.1.0": "patch:@electron/notarize@npm%3A2.5.0#~/.yarn/patches/@electron-notarize-npm-2.5.0-b15dc30c99.patch", - "@pkcprotocol/pkc-js@npm:0.0.48": "patch:@pkcprotocol/pkc-js@npm%3A0.0.48#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch" + "@electron/notarize@npm:^2.1.0": "patch:@electron/notarize@npm%3A2.5.0#~/.yarn/patches/@electron-notarize-npm-2.5.0-b15dc30c99.patch" }, "main": "electron/main.js", "lint-staged": { diff --git a/yarn.lock b/yarn.lock index d0a76fe4..ba283ce3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,7 +10,7 @@ __metadata: resolution: "5chan@workspace:." dependencies: "@bbob/parser": "npm:4.3.1" - "@bitsocial/bitsocial-react-hooks": "npm:0.1.21" + "@bitsocial/bitsocial-react-hooks": "npm:0.1.22" "@bitsocial/bso-resolver": "npm:0.0.8" "@capacitor/android": "npm:7.4.5" "@capacitor/app": "npm:7.0.1" @@ -26,7 +26,7 @@ __metadata: "@electron-forge/maker-zip": "npm:7.8.0" "@electron/rebuild": "npm:3.7.2" "@floating-ui/react": "npm:0.26.1" - "@pkcprotocol/pkc-js": "patch:@pkcprotocol/pkc-js@npm%3A0.0.48#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch" + "@pkcprotocol/pkc-js": "npm:0.0.53" "@react-spring/web": "npm:10.0.3" "@reforged/maker-appimage": "npm:5.1.1" "@ruffle-rs/ruffle": "npm:0.2.0" @@ -1582,12 +1582,12 @@ __metadata: languageName: node linkType: hard -"@bitsocial/bitsocial-react-hooks@npm:0.1.21": - version: 0.1.21 - resolution: "@bitsocial/bitsocial-react-hooks@npm:0.1.21" +"@bitsocial/bitsocial-react-hooks@npm:0.1.22": + version: 0.1.22 + resolution: "@bitsocial/bitsocial-react-hooks@npm:0.1.22" dependencies: "@bitsocial/bso-resolver": "npm:0.0.8" - "@pkcprotocol/pkc-js": "npm:0.0.48" + "@pkcprotocol/pkc-js": "npm:0.0.53" "@pkcprotocol/pkc-logger": "npm:0.1.0" assert: "npm:2.0.0" ethers: "npm:5.8.0" @@ -1603,7 +1603,7 @@ __metadata: zustand: "npm:4.0.0" peerDependencies: react: ">=16.8" - checksum: 10c0/02f9faf7069b6752dc814c6484964bf7cfeb3739690a1ca268d0d3f641d7d79d95015d27cbdf6b2f5656f41ff993a149aafcec2f0f367dea105c088c76b737b7 + checksum: 10c0/debb24cd5e9931c532e86c0f8c4abe7ffef92b26dff2cebbe40a65a59c682c92466deeca54d8cc8006399f2d8cc7e66fdf2cc612b935710377999f5093dff210 languageName: node linkType: hard @@ -3996,21 +3996,6 @@ __metadata: languageName: node linkType: hard -"@libp2p/crypto@npm:^5.1.10, @libp2p/crypto@npm:^5.1.19, @libp2p/crypto@npm:^5.1.20": - version: 5.1.20 - resolution: "@libp2p/crypto@npm:5.1.20" - dependencies: - "@libp2p/interface": "npm:^3.2.4" - "@noble/curves": "npm:^2.0.1" - "@noble/hashes": "npm:^2.0.1" - multiformats: "npm:^14.0.0" - protons-runtime: "npm:^7.0.0" - uint8arraylist: "npm:^3.0.2" - uint8arrays: "npm:^6.1.1" - checksum: 10c0/0893f6e441aaf6f5f5e249f2ebfe66c2075c77c0e952953c541a32896d156cd0e1010d61e27a6446935fbe86d98680b06c65235402854bf5fd20a7eb6891e4c2 - languageName: node - linkType: hard - "@libp2p/crypto@npm:^5.1.15, @libp2p/crypto@npm:^5.1.17": version: 5.1.17 resolution: "@libp2p/crypto@npm:5.1.17" @@ -4041,6 +4026,21 @@ __metadata: languageName: node linkType: hard +"@libp2p/crypto@npm:^5.1.19, @libp2p/crypto@npm:^5.1.20": + version: 5.1.20 + resolution: "@libp2p/crypto@npm:5.1.20" + dependencies: + "@libp2p/interface": "npm:^3.2.4" + "@noble/curves": "npm:^2.0.1" + "@noble/hashes": "npm:^2.0.1" + multiformats: "npm:^14.0.0" + protons-runtime: "npm:^7.0.0" + uint8arraylist: "npm:^3.0.2" + uint8arrays: "npm:^6.1.1" + checksum: 10c0/0893f6e441aaf6f5f5e249f2ebfe66c2075c77c0e952953c541a32896d156cd0e1010d61e27a6446935fbe86d98680b06c65235402854bf5fd20a7eb6891e4c2 + languageName: node + linkType: hard + "@libp2p/dcutr@npm:^3.0.15": version: 3.0.18 resolution: "@libp2p/dcutr@npm:3.0.18" @@ -4535,27 +4535,6 @@ __metadata: languageName: node linkType: hard -"@libp2p/noise@npm:^1.0.0": - version: 1.0.1 - resolution: "@libp2p/noise@npm:1.0.1" - dependencies: - "@chainsafe/as-chacha20poly1305": "npm:^0.1.0" - "@chainsafe/as-sha256": "npm:^1.2.0" - "@libp2p/crypto": "npm:^5.1.10" - "@libp2p/interface": "npm:^3.0.0" - "@libp2p/peer-id": "npm:^6.0.1" - "@libp2p/utils": "npm:^7.0.1" - "@noble/ciphers": "npm:^2.0.1" - "@noble/curves": "npm:^2.0.1" - "@noble/hashes": "npm:^2.0.1" - protons-runtime: "npm:^5.6.0" - uint8arraylist: "npm:^2.4.8" - uint8arrays: "npm:^5.1.0" - wherearewe: "npm:^2.0.1" - checksum: 10c0/caae7138b0370f28287e6b6179dd034022420f2450a9611852fd4e0d572cbb272e6c8e14151137ed655d6c754e4d12f40eeac0f7620ab7900cf14fbc48e394af - languageName: node - linkType: hard - "@libp2p/peer-collections@npm:^7.0.10": version: 7.0.10 resolution: "@libp2p/peer-collections@npm:7.0.10" @@ -4628,7 +4607,7 @@ __metadata: languageName: node linkType: hard -"@libp2p/peer-id@npm:^6.0.1, @libp2p/peer-id@npm:^6.0.10, @libp2p/peer-id@npm:^6.0.11": +"@libp2p/peer-id@npm:^6.0.10, @libp2p/peer-id@npm:^6.0.11": version: 6.0.11 resolution: "@libp2p/peer-id@npm:6.0.11" dependencies: @@ -4870,38 +4849,6 @@ __metadata: languageName: node linkType: hard -"@libp2p/utils@npm:^7.0.1, @libp2p/utils@npm:^7.2.2, @libp2p/utils@npm:^7.2.3": - version: 7.2.3 - resolution: "@libp2p/utils@npm:7.2.3" - dependencies: - "@chainsafe/is-ip": "npm:^2.1.0" - "@chainsafe/netmask": "npm:^2.0.0" - "@libp2p/interface": "npm:^3.2.4" - "@libp2p/logger": "npm:^6.2.9" - "@multiformats/multiaddr": "npm:^13.0.3" - "@multiformats/multiaddr-matcher": "npm:^3.0.2" - "@sindresorhus/fnv1a": "npm:^3.1.0" - any-signal: "npm:^4.1.1" - cborg: "npm:^5.1.0" - delay: "npm:^7.0.0" - is-loopback-addr: "npm:^2.0.2" - it-length-prefixed: "npm:^11.0.1" - it-pipe: "npm:^3.0.1" - it-pushable: "npm:^3.2.3" - it-stream-types: "npm:^2.0.2" - main-event: "npm:^1.0.1" - netmask: "npm:^2.0.2" - p-defer: "npm:^4.0.1" - p-event: "npm:^7.0.0" - progress-events: "npm:^1.1.0" - race-signal: "npm:^2.0.0" - uint8-varint: "npm:^3.0.0" - uint8arraylist: "npm:^3.0.2" - uint8arrays: "npm:^6.1.1" - checksum: 10c0/2d570dadfb363ebac64bb8aa6236b68b5661084aab24fd67deeff649513a1985fcb6e7862194c7c3f818dd650daa7efa4cdb5544d9063a9703ef30f052cde239 - languageName: node - linkType: hard - "@libp2p/utils@npm:^7.0.15, @libp2p/utils@npm:^7.1.0": version: 7.1.0 resolution: "@libp2p/utils@npm:7.1.0" @@ -4967,6 +4914,38 @@ __metadata: languageName: node linkType: hard +"@libp2p/utils@npm:^7.2.2, @libp2p/utils@npm:^7.2.3": + version: 7.2.3 + resolution: "@libp2p/utils@npm:7.2.3" + dependencies: + "@chainsafe/is-ip": "npm:^2.1.0" + "@chainsafe/netmask": "npm:^2.0.0" + "@libp2p/interface": "npm:^3.2.4" + "@libp2p/logger": "npm:^6.2.9" + "@multiformats/multiaddr": "npm:^13.0.3" + "@multiformats/multiaddr-matcher": "npm:^3.0.2" + "@sindresorhus/fnv1a": "npm:^3.1.0" + any-signal: "npm:^4.1.1" + cborg: "npm:^5.1.0" + delay: "npm:^7.0.0" + is-loopback-addr: "npm:^2.0.2" + it-length-prefixed: "npm:^11.0.1" + it-pipe: "npm:^3.0.1" + it-pushable: "npm:^3.2.3" + it-stream-types: "npm:^2.0.2" + main-event: "npm:^1.0.1" + netmask: "npm:^2.0.2" + p-defer: "npm:^4.0.1" + p-event: "npm:^7.0.0" + progress-events: "npm:^1.1.0" + race-signal: "npm:^2.0.0" + uint8-varint: "npm:^3.0.0" + uint8arraylist: "npm:^3.0.2" + uint8arrays: "npm:^6.1.1" + checksum: 10c0/2d570dadfb363ebac64bb8aa6236b68b5661084aab24fd67deeff649513a1985fcb6e7862194c7c3f818dd650daa7efa4cdb5544d9063a9703ef30f052cde239 + languageName: node + linkType: hard + "@libp2p/webrtc@npm:^6.0.16": version: 6.0.20 resolution: "@libp2p/webrtc@npm:6.0.20" @@ -5027,25 +5006,6 @@ __metadata: languageName: node linkType: hard -"@libp2p/webtransport@npm:6.0.0": - version: 6.0.0 - resolution: "@libp2p/webtransport@npm:6.0.0" - dependencies: - "@libp2p/interface": "npm:^3.0.0" - "@libp2p/noise": "npm:^1.0.0" - "@libp2p/peer-id": "npm:^6.0.0" - "@libp2p/utils": "npm:^7.0.0" - "@multiformats/multiaddr": "npm:^13.0.1" - "@multiformats/multiaddr-matcher": "npm:^3.0.1" - multiformats: "npm:^13.3.6" - progress-events: "npm:^1.0.1" - race-signal: "npm:^2.0.0" - uint8arraylist: "npm:^2.4.8" - uint8arrays: "npm:^5.1.0" - checksum: 10c0/65e43aed751d3a213f0b195fa5e88ae92802d550059d15accc0da6e4c4d54edcbf82002186a3300cd8c729e86697b078be6e4c10a4e16647de6ad6ce6d80a37e - languageName: node - linkType: hard - "@malept/cross-spawn-promise@npm:^2.0.0": version: 2.0.0 resolution: "@malept/cross-spawn-promise@npm:2.0.0" @@ -6411,9 +6371,9 @@ __metadata: languageName: node linkType: hard -"@pkcprotocol/pkc-js@npm:0.0.48": - version: 0.0.48 - resolution: "@pkcprotocol/pkc-js@npm:0.0.48" +"@pkcprotocol/pkc-js@npm:0.0.53": + version: 0.0.53 + resolution: "@pkcprotocol/pkc-js@npm:0.0.53" dependencies: "@enhances/with-resolvers": "npm:0.0.5" "@helia/block-brokers": "npm:5.2.4" @@ -6473,73 +6433,7 @@ __metadata: uuid: "npm:13.0.0" ws: "npm:8.20.0" zod: "npm:4.3.6" - checksum: 10c0/eaf9c5e2a83cc6cc108bbb239f6f0461a63830ddb003ebce6aea5423478a24fbc3de9cc1560e97969af41cedcfa05167f04ccae19bd379629e2dfc1b9c5f0836 - languageName: node - linkType: hard - -"@pkcprotocol/pkc-js@patch:@pkcprotocol/pkc-js@npm%3A0.0.48#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch": - version: 0.0.48 - resolution: "@pkcprotocol/pkc-js@patch:@pkcprotocol/pkc-js@npm%3A0.0.48#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch::version=0.0.48&hash=d06909" - dependencies: - "@enhances/with-resolvers": "npm:0.0.5" - "@helia/block-brokers": "npm:5.2.4" - "@helia/delegated-routing-v1-http-api-client": "npm:8.0.1" - "@helia/ipns": "npm:9.2.1" - "@helia/unixfs": "npm:7.2.1" - "@libp2p/crypto": "npm:5.1.19" - "@libp2p/fetch": "npm:4.1.6" - "@libp2p/gossipsub": "npm:16.0.2" - "@libp2p/identify": "npm:4.1.7" - "@libp2p/interface": "npm:3.2.3" - "@libp2p/peer-id": "npm:6.0.10" - "@multiformats/multiaddr": "npm:13.0.3" - "@noble/curves": "npm:2.2.0" - "@pkcprotocol/pkc-logger": "npm:0.1.0" - "@pkcprotocol/proper-lock-file": "npm:4.2.1" - assert: "npm:2.1.0" - better-sqlite3: "npm:12.9.0" - blockstore-core: "npm:7.0.1" - buffer: "npm:6.0.3" - cbor: "npm:10.0.11" - cborg: "npm:4.5.8" - debounce: "npm:1.2.1" - ext-name: "npm:5.0.0" - helia: "npm:6.1.4" - hpagent: "npm:1.2.0" - ipfs-unixfs-importer: "npm:17.0.1" - ipns: "npm:11.0.0" - it-all: "npm:3.0.6" - it-last: "npm:3.0.11" - js-sha256: "npm:0.11.1" - js-sha512: "npm:0.9.0" - kubo-rpc-client: "npm:7.1.0" - libp2p: "npm:3.3.3" - limiter-es6-compat: "npm:2.1.2" - localforage: "npm:1.10.0" - lodash.merge: "npm:4.6.2" - lru-cache: "npm:10.1.0" - multiformats: "npm:14.0.0" - node-forge: "npm:1.4.0" - open-graph-scraper: "npm:6.11.0" - p-limit: "npm:7.3.0" - p-retry: "npm:8.0.0" - p-timeout: "npm:7.0.1" - probe-image-size: "npm:7.2.3" - quick-lru: "npm:5.1.1" - remeda: "npm:1.57.0" - retry: "npm:0.13.1" - rpc-websockets: "npm:9.3.8" - safe-stable-stringify: "npm:2.4.3" - tiny-typed-emitter: "npm:2.1.0" - tinycache: "npm:1.1.2" - ts-custom-error: "npm:3.3.1" - typestub-ipfs-only-hash: "npm:4.0.0" - uint8arrays: "npm:6.1.1" - undici: "npm:7.24.7" - uuid: "npm:13.0.0" - ws: "npm:8.20.0" - zod: "npm:4.3.6" - checksum: 10c0/71398b56139091414002bb81c21430bd82fa98fb2c98291b6a887f2f70d7e300471dbd529f573cb094a0da9a64b396b68979fcb5413c3df7c7eaeb68e91b5181 + checksum: 10c0/b3b0bb6a53c5d53dd7198745e4899d888919620c2b05dfeb5baf9d16499d50f22ea18955a658f290277354fe839890e5a4d939d802349bc373dc4f97d4a71161 languageName: node linkType: hard