chore(deps): upgrade bitsocial packages

This commit is contained in:
Tommaso Casaburi
2026-06-25 18:06:54 +07:00
parent f1022fc2d9
commit 466e0fee87
4 changed files with 62 additions and 339 deletions
@@ -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",
-3
View File
@@ -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"
+3 -4
View File
@@ -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": {
+59 -165
View File
@@ -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