mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
Fix empty board loading state and browser P2P patch (#1175)
* fix(board): show loaded empty boards * fix(p2p): patch browser hooks runtime * fix(board): stop flash loading for explicit empty boards * fix(board): wait for feed on preloaded empty pages
This commit is contained in:
@@ -1,89 +0,0 @@
|
||||
diff --git a/dist/browser/helia/helia-for-pkc.js b/dist/browser/helia/helia-for-pkc.js
|
||||
index e6821667b0601ac56a850e989bfedf76c14796a2..87d84a502bdbf72b8cf22b7a8ac6bd68e542c611 100644
|
||||
--- a/dist/browser/helia/helia-for-pkc.js
|
||||
+++ b/dist/browser/helia/helia-for-pkc.js
|
||||
@@ -145,6 +145,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", {
|
||||
@@ -290,8 +295,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 {
|
||||
@@ -314,7 +324,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..8c61955ee6ef6dd353e57584b4aaf745e143f6d4 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 2a44f27220191ee556a317bf25005b7fcbde6aaa..335ee82cc7e9850eb1bc036b2a481ae5a575eabd 100644
|
||||
--- a/package.json
|
||||
+++ b/package.json
|
||||
@@ -78,6 +78,7 @@
|
||||
"@libp2p/identify": "4.1.3",
|
||||
"@libp2p/interface": "3.2.2",
|
||||
"@libp2p/peer-id": "6.0.8",
|
||||
+ "@libp2p/webtransport": "6.0.0",
|
||||
"@multiformats/multiaddr": "13.0.1",
|
||||
"@noble/curves": "2.2.0",
|
||||
"@pkcprotocol/pkc-logger": "0.1.0",
|
||||
@@ -0,0 +1,167 @@
|
||||
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",
|
||||
+1
-1
@@ -5,6 +5,6 @@ packageExtensions:
|
||||
peerDependencies:
|
||||
"@types/react": ">=18.0.0"
|
||||
react: ">=17.0.1"
|
||||
"@pkcprotocol/pkc-js@0.0.47":
|
||||
"@pkcprotocol/pkc-js@0.0.48":
|
||||
dependencies:
|
||||
"@libp2p/webtransport": "6.0.0"
|
||||
|
||||
+3
-3
@@ -9,7 +9,7 @@
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@bbob/parser": "4.3.1",
|
||||
"@bitsocial/bitsocial-react-hooks": "0.1.17",
|
||||
"@bitsocial/bitsocial-react-hooks": "0.1.19",
|
||||
"@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.47#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.47-e2131d72c8.patch",
|
||||
"@pkcprotocol/pkc-js": "patch:@pkcprotocol/pkc-js@npm%3A0.0.48#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch",
|
||||
"@react-spring/web": "10.0.3",
|
||||
"@ruffle-rs/ruffle": "0.2.0",
|
||||
"@types/node": "20.19.37",
|
||||
@@ -244,7 +244,7 @@
|
||||
"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.47": "patch:@pkcprotocol/pkc-js@npm%3A0.0.47#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.47-e2131d72c8.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"
|
||||
},
|
||||
"main": "electron/main.js",
|
||||
"lint-staged": {
|
||||
|
||||
@@ -61,6 +61,46 @@ describe('getRawBoardThreadState', () => {
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('treats explicit empty page CIDs as a fully loaded empty board', () => {
|
||||
const community = {
|
||||
posts: {
|
||||
pageCids: {},
|
||||
pages: {},
|
||||
},
|
||||
updatedAt: 1781773422,
|
||||
} as Community;
|
||||
|
||||
expect(
|
||||
getRawBoardThreadState({
|
||||
accountId: undefined,
|
||||
communitiesPages: {} as CommunitiesPages,
|
||||
community,
|
||||
sortType: 'active',
|
||||
}),
|
||||
).toMatchObject({
|
||||
isFullyLoaded: true,
|
||||
rootThreadCids: new Set<string>(),
|
||||
});
|
||||
});
|
||||
|
||||
it('does not treat placeholder empty page CIDs as fully loaded', () => {
|
||||
const community = {
|
||||
posts: {
|
||||
pageCids: {},
|
||||
pages: {},
|
||||
},
|
||||
} as Community;
|
||||
|
||||
expect(
|
||||
getRawBoardThreadState({
|
||||
accountId: undefined,
|
||||
communitiesPages: {} as CommunitiesPages,
|
||||
community,
|
||||
sortType: 'active',
|
||||
}).isFullyLoaded,
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it('walks stored board pages without importing side-effectful stores', () => {
|
||||
const community = {
|
||||
posts: {
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
import type { Comment, CommunitiesPages, Community, CommunityPage } from '@bitsocial/bitsocial-react-hooks';
|
||||
|
||||
export type RawBoardThreadState = {
|
||||
hasExplicitEmptyPageCids: boolean;
|
||||
isFullyLoaded: boolean;
|
||||
rootThreadCids: Set<string>;
|
||||
};
|
||||
|
||||
const EMPTY_RAW_BOARD_THREAD_STATE: RawBoardThreadState = {
|
||||
hasExplicitEmptyPageCids: false,
|
||||
isFullyLoaded: false,
|
||||
rootThreadCids: new Set<string>(),
|
||||
};
|
||||
@@ -80,6 +82,7 @@ export const getRawBoardThreadState = ({
|
||||
|
||||
if (pages.length > 0) {
|
||||
return {
|
||||
hasExplicitEmptyPageCids: false,
|
||||
isFullyLoaded: !pages[pages.length - 1]?.nextCid,
|
||||
rootThreadCids,
|
||||
};
|
||||
@@ -88,6 +91,8 @@ export const getRawBoardThreadState = ({
|
||||
const hasPageCid = Boolean(community.posts?.pageCids?.[sortType]);
|
||||
const preloadedPages = (preloadedSortPage ? [preloadedSortPage] : []) as Array<{ comments?: Comment[]; nextCid?: string }>;
|
||||
const hasCompletePreloadedPage = !hasPageCid && preloadedPages.some((page) => Array.isArray(page?.comments)) && preloadedPages.every((page) => !page?.nextCid);
|
||||
const hasFetchedCommunityUpdate = typeof community.updatedAt === 'number' || typeof community.updateCid === 'string';
|
||||
const hasExplicitEmptyPageCids = hasFetchedCommunityUpdate && Boolean(community.posts?.pageCids && !hasPageCid);
|
||||
|
||||
if (hasCompletePreloadedPage) {
|
||||
for (const page of preloadedPages) {
|
||||
@@ -96,7 +101,8 @@ export const getRawBoardThreadState = ({
|
||||
}
|
||||
|
||||
return {
|
||||
isFullyLoaded: hasCompletePreloadedPage,
|
||||
hasExplicitEmptyPageCids,
|
||||
isFullyLoaded: hasCompletePreloadedPage || hasExplicitEmptyPageCids,
|
||||
rootThreadCids,
|
||||
};
|
||||
};
|
||||
|
||||
@@ -36,6 +36,7 @@ type TestComment = {
|
||||
type TestCommunity = {
|
||||
error?: Error;
|
||||
nameResolved?: boolean;
|
||||
updatedAt?: number;
|
||||
posts?: {
|
||||
pageCids?: Record<string, string>;
|
||||
pages?: Record<string, { comments?: TestComment[]; nextCid?: string }>;
|
||||
@@ -687,6 +688,43 @@ describe('Board', () => {
|
||||
expect(container.querySelectorAll('[data-testid="loading-ellipsis"]').length).toBe(1);
|
||||
});
|
||||
|
||||
it('renders an empty flash table when a loaded board reports explicit empty page cids', async () => {
|
||||
testState.directories = [{ address: 'flash-posting.bso', directoryCode: 'f', title: '/f/ - Flash' }];
|
||||
testState.directoryByAddress = {
|
||||
'flash-posting.bso': {
|
||||
address: 'flash-posting.bso',
|
||||
directoryCode: 'f',
|
||||
features: { postsPerPage: 50 },
|
||||
title: '/f/ - Flash',
|
||||
},
|
||||
};
|
||||
testState.resolvedCommunityAddress = 'flash-posting.bso';
|
||||
testState.feedState = 'fetching-ipns';
|
||||
testState.hasMore = true;
|
||||
testState.community = {
|
||||
error: undefined,
|
||||
posts: {
|
||||
pageCids: {},
|
||||
pages: {},
|
||||
},
|
||||
shortAddress: 'flash-posting.bso',
|
||||
state: 'succeeded',
|
||||
title: '/f/ - Flash',
|
||||
updatedAt: 1781773422,
|
||||
};
|
||||
testState.communitySnapshot = {
|
||||
shortAddress: 'flash-posting.bso',
|
||||
title: '/f/ - Flash',
|
||||
};
|
||||
|
||||
await renderBoard({ initialEntry: '/f', routePath: '/:boardIdentifier/*' });
|
||||
|
||||
const table = container.querySelector('#flash-list');
|
||||
expect(table).toBeTruthy();
|
||||
expect(table?.textContent).toContain('no posts');
|
||||
expect(table?.querySelector('[data-testid="loading-ellipsis"]')).toBeNull();
|
||||
});
|
||||
|
||||
it('inserts a nonoko pending account comment after pinned posts on the redirected board index', async () => {
|
||||
const currentTimestamp = Math.floor(Date.now() / 1000);
|
||||
testState.feed = [
|
||||
@@ -1043,6 +1081,71 @@ describe('Board', () => {
|
||||
expect(container.querySelector('[data-testid="loading-ellipsis"]')).toBeNull();
|
||||
});
|
||||
|
||||
it('keeps loading when an empty preloaded board page finishes before the feed', async () => {
|
||||
testState.feedStateString = undefined;
|
||||
testState.feedState = 'fetching-ipns';
|
||||
testState.hasMore = true;
|
||||
testState.community = {
|
||||
error: undefined,
|
||||
shortAddress: 'music-posting.eth',
|
||||
state: 'succeeded',
|
||||
title: '/mu/ - Music',
|
||||
};
|
||||
markRawBoardThreadsFullyLoaded();
|
||||
|
||||
await renderBoard({ initialEntry: '/mu', routePath: '/:boardIdentifier/*' });
|
||||
|
||||
expect(container.textContent).not.toContain('no_threads');
|
||||
expect(container.querySelector('[data-testid="loading-ellipsis"]')?.textContent).toBe('downloading_board');
|
||||
expect(container.textContent).toContain('load_more');
|
||||
});
|
||||
|
||||
it('shows no threads when a loaded board reports explicit empty page cids', async () => {
|
||||
testState.feedStateString = 'Downloading board from peers';
|
||||
testState.feedState = 'fetching-ipns';
|
||||
testState.hasMore = true;
|
||||
testState.community = {
|
||||
error: undefined,
|
||||
posts: {
|
||||
pageCids: {},
|
||||
pages: {},
|
||||
},
|
||||
shortAddress: 'blog.bitsocial.bso',
|
||||
state: 'succeeded',
|
||||
title: 'Bitsocial Updates',
|
||||
updatedAt: 1781773422,
|
||||
};
|
||||
testState.communitySnapshot = {
|
||||
shortAddress: 'blog.bitsocial.bso',
|
||||
title: 'Bitsocial Updates',
|
||||
};
|
||||
|
||||
await renderBoard({ initialEntry: '/blog.bitsocial.bso', routePath: '/:boardIdentifier/*' });
|
||||
|
||||
expect(container.textContent).toContain('no_threads');
|
||||
expect(container.querySelector('[data-testid="loading-ellipsis"]')).toBeNull();
|
||||
expect(container.textContent).not.toContain('load_more');
|
||||
});
|
||||
|
||||
it('keeps loading when raw board pages contain threads but the feed has not caught up', async () => {
|
||||
testState.feedStateString = undefined;
|
||||
testState.feedState = 'fetching-ipns';
|
||||
testState.hasMore = true;
|
||||
testState.community = {
|
||||
error: undefined,
|
||||
shortAddress: 'music-posting.eth',
|
||||
state: 'succeeded',
|
||||
title: '/mu/ - Music',
|
||||
};
|
||||
markRawBoardThreadsFullyLoaded([{ cid: 'post-1' }]);
|
||||
|
||||
await renderBoard({ initialEntry: '/mu', routePath: '/:boardIdentifier/*' });
|
||||
|
||||
expect(container.textContent).not.toContain('no_threads');
|
||||
expect(container.querySelector('[data-testid="loading-ellipsis"]')?.textContent).toBe('downloading_board');
|
||||
expect(container.textContent).toContain('load_more');
|
||||
});
|
||||
|
||||
it('does not show no threads after board metadata loads but raw thread pages are still missing', async () => {
|
||||
testState.feedStateString = undefined;
|
||||
testState.feedState = 'succeeded';
|
||||
|
||||
@@ -60,6 +60,7 @@ interface BoardFooterProps {
|
||||
combinedFeedLength: number;
|
||||
isSingleCommunityBoard: boolean;
|
||||
isRawBoardThreadStateFullyLoaded: boolean;
|
||||
isKnownEmptySingleCommunityBoard: boolean;
|
||||
isInSubscriptionsView: boolean;
|
||||
isInModView: boolean;
|
||||
currentTimeFilterName: string;
|
||||
@@ -84,6 +85,7 @@ const BoardFooter = ({
|
||||
combinedFeedLength,
|
||||
isSingleCommunityBoard,
|
||||
isRawBoardThreadStateFullyLoaded,
|
||||
isKnownEmptySingleCommunityBoard,
|
||||
isInSubscriptionsView,
|
||||
isInModView,
|
||||
currentTimeFilterName,
|
||||
@@ -102,7 +104,9 @@ const BoardFooter = ({
|
||||
const isLoadedCommunityState = communityState === 'succeeded' || communityState === 'ready';
|
||||
const isFeedSucceeded = feedState === 'succeeded';
|
||||
const isFeedFailed = feedState === 'failed';
|
||||
const canShowNoThreads = isSingleCommunityBoard ? isLoadedCommunityState && isFeedSucceeded && isRawBoardThreadStateFullyLoaded : isFeedSucceeded && !hasMore;
|
||||
const canShowNoThreads =
|
||||
isKnownEmptySingleCommunityBoard ||
|
||||
(isSingleCommunityBoard ? isLoadedCommunityState && isFeedSucceeded && isRawBoardThreadStateFullyLoaded : isFeedSucceeded && !hasMore);
|
||||
const isEmptyFeedLoading = combinedFeedLength === 0 && !canShowNoThreads && (isSingleCommunityBoard ? communityState !== 'failed' : !isFeedFailed);
|
||||
const showFooterLoading = showLoadingEllipsis && (hasMore || isEmptyFeedLoading);
|
||||
|
||||
@@ -472,6 +476,14 @@ const Board = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp, t
|
||||
[account?.id, communitiesPages, communityData, isMultiboardView],
|
||||
);
|
||||
const isRawBoardThreadStateFullyLoaded = rawBoardThreadState?.isFullyLoaded ?? false;
|
||||
const hasExplicitEmptyPageCids = rawBoardThreadState?.hasExplicitEmptyPageCids ?? false;
|
||||
const isRawBoardThreadStateEmpty = isRawBoardThreadStateFullyLoaded && (rawBoardThreadState?.rootThreadCids.size ?? 0) === 0;
|
||||
const isSingleCommunityBoard = !isInAllView && !isInSubscriptionsView && !isInModView;
|
||||
const isLoadedCommunityState = communityState === 'succeeded' || communityState === 'ready';
|
||||
const isFeedSucceeded = feedState === 'succeeded';
|
||||
const isKnownEmptySingleCommunityBoard =
|
||||
isSingleCommunityBoard && combinedFeed.length === 0 && isLoadedCommunityState && isRawBoardThreadStateEmpty && (hasExplicitEmptyPageCids || isFeedSucceeded);
|
||||
const effectiveHasMore = isKnownEmptySingleCommunityBoard ? false : hasMore;
|
||||
const title = isInAllView ? t('all') : isInSubscriptionsView ? t('subscriptions') : isInModView ? t('mod') : communityTitle;
|
||||
|
||||
// Memoize footer component to preserve identity across renders (Virtuoso optimization)
|
||||
@@ -483,11 +495,12 @@ const Board = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp, t
|
||||
{shouldUseFlashTable ? null : (
|
||||
<BoardFooter
|
||||
communityAddresses={communityAddresses}
|
||||
hasMore={hasMore}
|
||||
hasMore={effectiveHasMore}
|
||||
feedState={feedState}
|
||||
combinedFeedLength={combinedFeed.length}
|
||||
isSingleCommunityBoard={!isInAllView && !isInSubscriptionsView && !isInModView}
|
||||
isSingleCommunityBoard={isSingleCommunityBoard}
|
||||
isRawBoardThreadStateFullyLoaded={isRawBoardThreadStateFullyLoaded}
|
||||
isKnownEmptySingleCommunityBoard={isKnownEmptySingleCommunityBoard}
|
||||
isInSubscriptionsView={isInSubscriptionsView}
|
||||
isInModView={isInModView}
|
||||
currentTimeFilterName={currentTimeFilterName}
|
||||
@@ -552,7 +565,7 @@ const Board = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp, t
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
{hasMore && !effectiveInfiniteScroll && !shouldUseFlashTable && (
|
||||
{effectiveHasMore && !effectiveInfiniteScroll && !shouldUseFlashTable && (
|
||||
<div className={mobileFooterStyles.mobileFooterButtons}>
|
||||
<button type='button' className='button' onClick={() => setEnableInfiniteScroll(true)}>
|
||||
{t('load_more')}
|
||||
@@ -566,9 +579,11 @@ const Board = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp, t
|
||||
}),
|
||||
[
|
||||
communityAddresses,
|
||||
hasMore,
|
||||
effectiveHasMore,
|
||||
combinedFeed.length,
|
||||
isRawBoardThreadStateFullyLoaded,
|
||||
isKnownEmptySingleCommunityBoard,
|
||||
isSingleCommunityBoard,
|
||||
isInAllView,
|
||||
isInSubscriptionsView,
|
||||
isInModView,
|
||||
@@ -665,9 +680,7 @@ const Board = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp, t
|
||||
communityIdentifier.publicKey.length > 0 &&
|
||||
communityData?.nameResolved === false;
|
||||
const displayFeed = effectiveInfiniteScroll ? combinedFeed : currentPageFeed;
|
||||
const isLoadedCommunityState = communityState === 'succeeded' || communityState === 'ready';
|
||||
const isFeedSucceeded = feedState === 'succeeded';
|
||||
const canShowEmptyFlashTable = isLoadedCommunityState && isFeedSucceeded && isRawBoardThreadStateFullyLoaded;
|
||||
const canShowEmptyFlashTable = hasExplicitEmptyPageCids || (isLoadedCommunityState && isFeedSucceeded && isRawBoardThreadStateFullyLoaded);
|
||||
const shouldShowFlashTableLoading = shouldUseFlashTable && displayFeed.length === 0 && !canShowEmptyFlashTable && communityState !== 'failed' && feedState !== 'failed';
|
||||
|
||||
return (
|
||||
@@ -697,7 +710,7 @@ const Board = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp, t
|
||||
itemContent={boardItemContent}
|
||||
useWindowScroll={true}
|
||||
components={footerComponents}
|
||||
endReached={hasMore ? loadMore : undefined}
|
||||
endReached={effectiveHasMore ? loadMore : undefined}
|
||||
ref={virtuosoRef}
|
||||
restoreStateFrom={lastVirtuosoState}
|
||||
initialScrollTop={lastVirtuosoState?.scrollTop}
|
||||
|
||||
@@ -10,7 +10,7 @@ __metadata:
|
||||
resolution: "5chan@workspace:."
|
||||
dependencies:
|
||||
"@bbob/parser": "npm:4.3.1"
|
||||
"@bitsocial/bitsocial-react-hooks": "npm:0.1.17"
|
||||
"@bitsocial/bitsocial-react-hooks": "npm:0.1.19"
|
||||
"@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.47#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.47-e2131d72c8.patch"
|
||||
"@pkcprotocol/pkc-js": "patch:@pkcprotocol/pkc-js@npm%3A0.0.48#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch"
|
||||
"@react-spring/web": "npm:10.0.3"
|
||||
"@reforged/maker-appimage": "npm:5.1.1"
|
||||
"@ruffle-rs/ruffle": "npm:0.2.0"
|
||||
@@ -1580,12 +1580,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@bitsocial/bitsocial-react-hooks@npm:0.1.17":
|
||||
version: 0.1.17
|
||||
resolution: "@bitsocial/bitsocial-react-hooks@npm:0.1.17"
|
||||
"@bitsocial/bitsocial-react-hooks@npm:0.1.19":
|
||||
version: 0.1.19
|
||||
resolution: "@bitsocial/bitsocial-react-hooks@npm:0.1.19"
|
||||
dependencies:
|
||||
"@bitsocial/bso-resolver": "npm:0.0.8"
|
||||
"@pkcprotocol/pkc-js": "npm:0.0.47"
|
||||
"@pkcprotocol/pkc-js": "npm:0.0.48"
|
||||
"@pkcprotocol/pkc-logger": "npm:0.1.0"
|
||||
assert: "npm:2.0.0"
|
||||
ethers: "npm:5.8.0"
|
||||
@@ -1601,7 +1601,7 @@ __metadata:
|
||||
zustand: "npm:4.0.0"
|
||||
peerDependencies:
|
||||
react: ">=16.8"
|
||||
checksum: 10c0/3b652a2b6171b70c0e2047a32088cebf05f99b87c008d87218f144d766e076c47c564f5f70ff160e55d7aae83f94a367998e511e05b716523e71a0ada52fe6a2
|
||||
checksum: 10c0/5645249211c4b0d91b0e9f6c91b75703da15ff5dbf37bc2eab2353959818bb0d2803ee649fae30530a42298ec55c34e2f3900c71025c89af35a0314d622f42a3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -3194,7 +3194,26 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@helia/delegated-routing-v1-http-api-client@npm:6.0.1, @helia/delegated-routing-v1-http-api-client@npm:^6.0.1":
|
||||
"@helia/delegated-routing-v1-http-api-client@npm:8.0.1":
|
||||
version: 8.0.1
|
||||
resolution: "@helia/delegated-routing-v1-http-api-client@npm:8.0.1"
|
||||
dependencies:
|
||||
"@libp2p/interface": "npm:^3.2.2"
|
||||
"@libp2p/peer-id": "npm:^6.0.9"
|
||||
"@libp2p/utils": "npm:^7.2.2"
|
||||
"@multiformats/multiaddr": "npm:^13.0.3"
|
||||
any-signal: "npm:^4.2.0"
|
||||
browser-readablestream-to-it: "npm:^2.0.12"
|
||||
it-first: "npm:^3.0.11"
|
||||
it-map: "npm:^3.1.6"
|
||||
it-ndjson: "npm:^2.0.0"
|
||||
multiformats: "npm:^14.0.0"
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
checksum: 10c0/2bf0042fb53032f82eff85a816e01b5541ed3dbf15729b9e13e1bc60e9f17d85daf6198f324f7c45f44ec873a131d5a5f405c13e2c710bf41ccfd264de1868be
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@helia/delegated-routing-v1-http-api-client@npm:^6.0.1":
|
||||
version: 6.0.1
|
||||
resolution: "@helia/delegated-routing-v1-http-api-client@npm:6.0.1"
|
||||
dependencies:
|
||||
@@ -3680,6 +3699,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ipld/dag-cbor@npm:^10.0.1":
|
||||
version: 10.0.1
|
||||
resolution: "@ipld/dag-cbor@npm:10.0.1"
|
||||
dependencies:
|
||||
cborg: "npm:^5.0.1"
|
||||
multiformats: "npm:^14.0.0"
|
||||
checksum: 10c0/f9b51461c06c6ac2c2584dfd990dfd9ff2648b93c9a9fd5b2a34ffd8f3ceb4f22f313209a3ca4fabc0c46c9be60c5daa119d77511623685099f00ebb018871ce
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ipld/dag-cbor@npm:^9.0.0, @ipld/dag-cbor@npm:^9.2.4":
|
||||
version: 9.2.5
|
||||
resolution: "@ipld/dag-cbor@npm:9.2.5"
|
||||
@@ -3700,7 +3729,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ipld/dag-json@npm:^10.0.0, @ipld/dag-json@npm:^10.2.5":
|
||||
"@ipld/dag-json@npm:^10.2.5":
|
||||
version: 10.2.6
|
||||
resolution: "@ipld/dag-json@npm:10.2.6"
|
||||
dependencies:
|
||||
@@ -3720,6 +3749,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ipld/dag-json@npm:^11.0.0":
|
||||
version: 11.0.0
|
||||
resolution: "@ipld/dag-json@npm:11.0.0"
|
||||
dependencies:
|
||||
cborg: "npm:^5.0.0"
|
||||
multiformats: "npm:^14.0.0"
|
||||
checksum: 10c0/9405f318dc7fd9467b20e68a292651965308e5b42f1a231cb2a26acac0fde87e39a5b5da947fec4623296cfc703b2af5c338c3663e6f54ad4e50fb5299ed92b5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ipld/dag-pb@npm:^4.0.0, @ipld/dag-pb@npm:^4.1.5":
|
||||
version: 4.1.5
|
||||
resolution: "@ipld/dag-pb@npm:4.1.5"
|
||||
@@ -3729,6 +3768,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ipld/dag-pb@npm:^4.1.7":
|
||||
version: 4.1.7
|
||||
resolution: "@ipld/dag-pb@npm:4.1.7"
|
||||
dependencies:
|
||||
multiformats: "npm:^14.0.0"
|
||||
checksum: 10c0/93c68778c05749f021393c2a98f7966700ab921216ca632c7dded7ae8191e98770dafe15623755d4ea04c690d73d3980ef3b2ca08448fb7950353d071bdad133
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@ipshipyard/libp2p-auto-tls@npm:^2.0.1":
|
||||
version: 2.0.1
|
||||
resolution: "@ipshipyard/libp2p-auto-tls@npm:2.0.1"
|
||||
@@ -3916,18 +3964,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/crypto@npm:5.1.17, @libp2p/crypto@npm:^5.1.15, @libp2p/crypto@npm:^5.1.17":
|
||||
version: 5.1.17
|
||||
resolution: "@libp2p/crypto@npm:5.1.17"
|
||||
"@libp2p/crypto@npm:5.1.19":
|
||||
version: 5.1.19
|
||||
resolution: "@libp2p/crypto@npm:5.1.19"
|
||||
dependencies:
|
||||
"@libp2p/interface": "npm:^3.2.2"
|
||||
"@libp2p/interface": "npm:^3.2.3"
|
||||
"@noble/curves": "npm:^2.0.1"
|
||||
"@noble/hashes": "npm:^2.0.1"
|
||||
multiformats: "npm:^13.4.0"
|
||||
multiformats: "npm:^14.0.0"
|
||||
protons-runtime: "npm:^6.0.1"
|
||||
uint8arraylist: "npm:^2.4.8"
|
||||
uint8arrays: "npm:^5.1.0"
|
||||
checksum: 10c0/fa63aa9a7260f9841d477daee82677d3cd0a6f287ac77bacb1131998764ac76f819b7b453985579ef1f9c14115f435ceb23f316388491650a54c00c52a1c143b
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
checksum: 10c0/bac81169a941cce3eb047cdc15d2510ebcce1524788b2caa580e3b002bd5ef61478144c90c728a14fc7126626995caa7655e65d1ee0d89d0168379ab1d103da0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -3946,7 +3994,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/crypto@npm:^5.1.10, @libp2p/crypto@npm:^5.1.20":
|
||||
"@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:
|
||||
@@ -3961,6 +4009,21 @@ __metadata:
|
||||
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"
|
||||
dependencies:
|
||||
"@libp2p/interface": "npm:^3.2.2"
|
||||
"@noble/curves": "npm:^2.0.1"
|
||||
"@noble/hashes": "npm:^2.0.1"
|
||||
multiformats: "npm:^13.4.0"
|
||||
protons-runtime: "npm:^6.0.1"
|
||||
uint8arraylist: "npm:^2.4.8"
|
||||
uint8arrays: "npm:^5.1.0"
|
||||
checksum: 10c0/fa63aa9a7260f9841d477daee82677d3cd0a6f287ac77bacb1131998764ac76f819b7b453985579ef1f9c14115f435ceb23f316388491650a54c00c52a1c143b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/crypto@npm:^5.1.18":
|
||||
version: 5.1.18
|
||||
resolution: "@libp2p/crypto@npm:5.1.18"
|
||||
@@ -3992,7 +4055,22 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/fetch@npm:4.1.3, @libp2p/fetch@npm:^4.1.0":
|
||||
"@libp2p/fetch@npm:4.1.6":
|
||||
version: 4.1.6
|
||||
resolution: "@libp2p/fetch@npm:4.1.6"
|
||||
dependencies:
|
||||
"@libp2p/interface": "npm:^3.2.3"
|
||||
"@libp2p/interface-internal": "npm:^3.1.6"
|
||||
"@libp2p/utils": "npm:^7.2.2"
|
||||
main-event: "npm:^1.0.1"
|
||||
protons-runtime: "npm:^6.0.1"
|
||||
uint8arraylist: "npm:^2.4.8"
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
checksum: 10c0/d4b70d3f74d68c49a32c329dffbf3446c0477dceb18bf6203eaed279d77e5f2707d2174146a127d3d8ce09aec03109be6efd034883e008a1da4cf88f7e511967
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/fetch@npm:^4.1.0":
|
||||
version: 4.1.3
|
||||
resolution: "@libp2p/fetch@npm:4.1.3"
|
||||
dependencies:
|
||||
@@ -4127,7 +4205,29 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/identify@npm:4.1.3, @libp2p/identify@npm:^4.1.0":
|
||||
"@libp2p/identify@npm:4.1.7":
|
||||
version: 4.1.7
|
||||
resolution: "@libp2p/identify@npm:4.1.7"
|
||||
dependencies:
|
||||
"@libp2p/crypto": "npm:^5.1.19"
|
||||
"@libp2p/interface": "npm:^3.2.3"
|
||||
"@libp2p/interface-internal": "npm:^3.1.6"
|
||||
"@libp2p/peer-id": "npm:^6.0.10"
|
||||
"@libp2p/peer-record": "npm:^9.0.11"
|
||||
"@libp2p/utils": "npm:^7.2.2"
|
||||
"@multiformats/multiaddr": "npm:^13.0.3"
|
||||
"@multiformats/multiaddr-matcher": "npm:^3.0.2"
|
||||
it-drain: "npm:^3.0.10"
|
||||
it-parallel: "npm:^3.0.13"
|
||||
main-event: "npm:^1.0.1"
|
||||
protons-runtime: "npm:^6.0.1"
|
||||
uint8arraylist: "npm:^2.4.8"
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
checksum: 10c0/320854874e06adae7ea26f253e75732560cf4697ae2d158f33019f44b3bdc2da75f067dbd045f7340565ba8287ddfe7bbd33f161dc918c4d0684a78502260bf1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/identify@npm:^4.1.0":
|
||||
version: 4.1.3
|
||||
resolution: "@libp2p/identify@npm:4.1.3"
|
||||
dependencies:
|
||||
@@ -4185,17 +4285,29 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/interface@npm:3.2.2, @libp2p/interface@npm:^3.2.0, @libp2p/interface@npm:^3.2.2":
|
||||
version: 3.2.2
|
||||
resolution: "@libp2p/interface@npm:3.2.2"
|
||||
"@libp2p/interface-internal@npm:^3.1.6":
|
||||
version: 3.1.7
|
||||
resolution: "@libp2p/interface-internal@npm:3.1.7"
|
||||
dependencies:
|
||||
"@libp2p/interface": "npm:^3.2.4"
|
||||
"@libp2p/peer-collections": "npm:^7.0.22"
|
||||
"@multiformats/multiaddr": "npm:^13.0.3"
|
||||
progress-events: "npm:^1.0.1"
|
||||
checksum: 10c0/fd22459e3249cc5e84c933f16c182419abc1660c79f3eda6bf8979d806d5977bacb684f71e42630f254ceea4c6d54178e7c8eb477cfd26c8558ac9b2907ce81b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/interface@npm:3.2.3":
|
||||
version: 3.2.3
|
||||
resolution: "@libp2p/interface@npm:3.2.3"
|
||||
dependencies:
|
||||
"@multiformats/dns": "npm:^1.0.6"
|
||||
"@multiformats/multiaddr": "npm:^13.0.1"
|
||||
"@multiformats/multiaddr": "npm:^13.0.3"
|
||||
main-event: "npm:^1.0.1"
|
||||
multiformats: "npm:^13.4.0"
|
||||
multiformats: "npm:^14.0.0"
|
||||
progress-events: "npm:^1.1.0"
|
||||
uint8arraylist: "npm:^2.4.8"
|
||||
checksum: 10c0/e3393a2739d5c7ff65a818adc9ab599d0c59e093a0e8024f67853b9219f365623e36b2218786c475ba53cd2d8b17bd72c6b2ec46c53d89590549bf2185d10bb5
|
||||
checksum: 10c0/a38dc3acc79156a2bf0695acb4772b640a5361b6abb3266e340e1e35b0067a7168ac0d8d884506caf2f576277e081987990b1119c01990496b613aef137b0c06
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -4213,7 +4325,21 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/interface@npm:^3.2.4":
|
||||
"@libp2p/interface@npm:^3.2.0, @libp2p/interface@npm:^3.2.2":
|
||||
version: 3.2.2
|
||||
resolution: "@libp2p/interface@npm:3.2.2"
|
||||
dependencies:
|
||||
"@multiformats/dns": "npm:^1.0.6"
|
||||
"@multiformats/multiaddr": "npm:^13.0.1"
|
||||
main-event: "npm:^1.0.1"
|
||||
multiformats: "npm:^13.4.0"
|
||||
progress-events: "npm:^1.1.0"
|
||||
uint8arraylist: "npm:^2.4.8"
|
||||
checksum: 10c0/e3393a2739d5c7ff65a818adc9ab599d0c59e093a0e8024f67853b9219f365623e36b2218786c475ba53cd2d8b17bd72c6b2ec46c53d89590549bf2185d10bb5
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/interface@npm:^3.2.3, @libp2p/interface@npm:^3.2.4":
|
||||
version: 3.2.4
|
||||
resolution: "@libp2p/interface@npm:3.2.4"
|
||||
dependencies:
|
||||
@@ -4337,7 +4463,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/logger@npm:^6.2.9":
|
||||
"@libp2p/logger@npm:^6.2.8, @libp2p/logger@npm:^6.2.9":
|
||||
version: 6.2.9
|
||||
resolution: "@libp2p/logger@npm:6.2.9"
|
||||
dependencies:
|
||||
@@ -4394,6 +4520,19 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/multistream-select@npm:^7.0.21":
|
||||
version: 7.0.22
|
||||
resolution: "@libp2p/multistream-select@npm:7.0.22"
|
||||
dependencies:
|
||||
"@libp2p/interface": "npm:^3.2.4"
|
||||
"@libp2p/utils": "npm:^7.2.3"
|
||||
it-length-prefixed: "npm:^11.0.1"
|
||||
uint8arraylist: "npm:^3.0.2"
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
checksum: 10c0/0711857ca406ae04594f430ff24c4dcc7774a93c9f421e729558d8f567c1ebf054c03622970b7c762df70ed450bc8bc30ae90af61593b6431e960224218cc231
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/noise@npm:^1.0.0":
|
||||
version: 1.0.1
|
||||
resolution: "@libp2p/noise@npm:1.0.1"
|
||||
@@ -4451,15 +4590,27 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/peer-id@npm:6.0.8, @libp2p/peer-id@npm:^6.0.6, @libp2p/peer-id@npm:^6.0.8":
|
||||
version: 6.0.8
|
||||
resolution: "@libp2p/peer-id@npm:6.0.8"
|
||||
"@libp2p/peer-collections@npm:^7.0.21, @libp2p/peer-collections@npm:^7.0.22":
|
||||
version: 7.0.22
|
||||
resolution: "@libp2p/peer-collections@npm:7.0.22"
|
||||
dependencies:
|
||||
"@libp2p/crypto": "npm:^5.1.17"
|
||||
"@libp2p/interface": "npm:^3.2.2"
|
||||
multiformats: "npm:^13.4.0"
|
||||
uint8arrays: "npm:^5.1.0"
|
||||
checksum: 10c0/4b65dc5d9c17e4aa717582a07433524b1591bd3e67df3785e704878147508bc4fc8a5d1fc54a26e3da7fc478bdc22485a39447f8439423a927aa20302af63e6e
|
||||
"@libp2p/interface": "npm:^3.2.4"
|
||||
"@libp2p/peer-id": "npm:^6.0.11"
|
||||
"@libp2p/utils": "npm:^7.2.3"
|
||||
multiformats: "npm:^14.0.0"
|
||||
checksum: 10c0/726754749d7fcbba6ab41c6e8dcd8268851fa9d2e5fead11dc1a0cb57e38b0b52e6cd80a655792e4d841069076cd059d623e0c6c36b5e8f7073cdd91faea3cbe
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/peer-id@npm:6.0.10":
|
||||
version: 6.0.10
|
||||
resolution: "@libp2p/peer-id@npm:6.0.10"
|
||||
dependencies:
|
||||
"@libp2p/crypto": "npm:^5.1.19"
|
||||
"@libp2p/interface": "npm:^3.2.3"
|
||||
multiformats: "npm:^14.0.0"
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
checksum: 10c0/c29c93e9318a8f28c8f9a831bb91bc626e4d74c0f585506425ea6e200b42498d186c9eb1382854238fd183be01aeda05642589599fec1b7c9e21a8ecf7af5064
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -4475,7 +4626,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/peer-id@npm:^6.0.1":
|
||||
"@libp2p/peer-id@npm:^6.0.1, @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:
|
||||
@@ -4487,6 +4638,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/peer-id@npm:^6.0.6, @libp2p/peer-id@npm:^6.0.8":
|
||||
version: 6.0.8
|
||||
resolution: "@libp2p/peer-id@npm:6.0.8"
|
||||
dependencies:
|
||||
"@libp2p/crypto": "npm:^5.1.17"
|
||||
"@libp2p/interface": "npm:^3.2.2"
|
||||
multiformats: "npm:^13.4.0"
|
||||
uint8arrays: "npm:^5.1.0"
|
||||
checksum: 10c0/4b65dc5d9c17e4aa717582a07433524b1591bd3e67df3785e704878147508bc4fc8a5d1fc54a26e3da7fc478bdc22485a39447f8439423a927aa20302af63e6e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/peer-id@npm:^6.0.9":
|
||||
version: 6.0.9
|
||||
resolution: "@libp2p/peer-id@npm:6.0.9"
|
||||
@@ -4499,6 +4662,23 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/peer-record@npm:^9.0.11, @libp2p/peer-record@npm:^9.0.12":
|
||||
version: 9.0.12
|
||||
resolution: "@libp2p/peer-record@npm:9.0.12"
|
||||
dependencies:
|
||||
"@libp2p/crypto": "npm:^5.1.20"
|
||||
"@libp2p/interface": "npm:^3.2.4"
|
||||
"@libp2p/peer-id": "npm:^6.0.11"
|
||||
"@multiformats/multiaddr": "npm:^13.0.3"
|
||||
multiformats: "npm:^14.0.0"
|
||||
protons-runtime: "npm:^7.0.0"
|
||||
uint8-varint: "npm:^3.0.0"
|
||||
uint8arraylist: "npm:^3.0.2"
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
checksum: 10c0/322a552e18377e59f0f08ae64095c4f2b29fd500a01d762a69dc1b56d981363e781ff9bd48b93e3fd742fbd366d3d8a0519375579131eaf70d123bd93b28b5c6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/peer-record@npm:^9.0.9":
|
||||
version: 9.0.9
|
||||
resolution: "@libp2p/peer-record@npm:9.0.9"
|
||||
@@ -4538,6 +4718,28 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/peer-store@npm:^12.0.21":
|
||||
version: 12.0.22
|
||||
resolution: "@libp2p/peer-store@npm:12.0.22"
|
||||
dependencies:
|
||||
"@libp2p/crypto": "npm:^5.1.20"
|
||||
"@libp2p/interface": "npm:^3.2.4"
|
||||
"@libp2p/peer-collections": "npm:^7.0.22"
|
||||
"@libp2p/peer-id": "npm:^6.0.11"
|
||||
"@libp2p/peer-record": "npm:^9.0.12"
|
||||
"@multiformats/multiaddr": "npm:^13.0.3"
|
||||
interface-datastore: "npm:^10.0.1"
|
||||
it-all: "npm:^3.0.9"
|
||||
main-event: "npm:^1.0.1"
|
||||
mortice: "npm:^3.3.1"
|
||||
multiformats: "npm:^14.0.0"
|
||||
protons-runtime: "npm:^7.0.0"
|
||||
uint8arraylist: "npm:^3.0.2"
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
checksum: 10c0/d7d53adac30ef34a0952d6f641cf52db503af73dc7e89959a0d0958825e3109656eaf20d8fefdb34612d66da96699a5a610614cda47618817e1cd3c113ae9803
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/ping@npm:^3.1.0":
|
||||
version: 3.1.3
|
||||
resolution: "@libp2p/ping@npm:3.1.3"
|
||||
@@ -4666,7 +4868,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@libp2p/utils@npm:^7.0.1":
|
||||
"@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:
|
||||
@@ -4899,19 +5101,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@multiformats/multiaddr@npm:13.0.1, @multiformats/multiaddr@npm:^13.0.0, @multiformats/multiaddr@npm:^13.0.1":
|
||||
version: 13.0.1
|
||||
resolution: "@multiformats/multiaddr@npm:13.0.1"
|
||||
dependencies:
|
||||
"@chainsafe/is-ip": "npm:^2.0.1"
|
||||
multiformats: "npm:^13.0.0"
|
||||
uint8-varint: "npm:^2.0.1"
|
||||
uint8arrays: "npm:^5.0.0"
|
||||
checksum: 10c0/e5f360c6674cf96010fe7c6875e62c4bf35639e8a8a75e6fad9384a23f1abf35ca689b90446341ba47c242c83a9d529c25d2610bee46fe2ff68f44d19321c138
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@multiformats/multiaddr@npm:^13.0.3":
|
||||
"@multiformats/multiaddr@npm:13.0.3, @multiformats/multiaddr@npm:^13.0.3":
|
||||
version: 13.0.3
|
||||
resolution: "@multiformats/multiaddr@npm:13.0.3"
|
||||
dependencies:
|
||||
@@ -4923,6 +5113,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@multiformats/multiaddr@npm:^13.0.0, @multiformats/multiaddr@npm:^13.0.1":
|
||||
version: 13.0.1
|
||||
resolution: "@multiformats/multiaddr@npm:13.0.1"
|
||||
dependencies:
|
||||
"@chainsafe/is-ip": "npm:^2.0.1"
|
||||
multiformats: "npm:^13.0.0"
|
||||
uint8-varint: "npm:^2.0.1"
|
||||
uint8arrays: "npm:^5.0.0"
|
||||
checksum: 10c0/e5f360c6674cf96010fe7c6875e62c4bf35639e8a8a75e6fad9384a23f1abf35ca689b90446341ba47c242c83a9d529c25d2610bee46fe2ff68f44d19321c138
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@multiformats/murmur3@npm:^2.1.8":
|
||||
version: 2.2.0
|
||||
resolution: "@multiformats/murmur3@npm:2.2.0"
|
||||
@@ -4941,6 +5143,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@multiformats/murmur3@npm:^2.2.5":
|
||||
version: 2.2.5
|
||||
resolution: "@multiformats/murmur3@npm:2.2.5"
|
||||
dependencies:
|
||||
multiformats: "npm:^14.0.0"
|
||||
checksum: 10c0/f3e081af0ba8da49f719fa5b2608e77aaedf83cd872bf1bf777d60bd96dbb49373b12538d168933f9a6ed5d67684dac1afbdbf0c4cbc1caebc03270a5fa55859
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@multiformats/uri-to-multiaddr@npm:^10.0.0":
|
||||
version: 10.0.0
|
||||
resolution: "@multiformats/uri-to-multiaddr@npm:10.0.0"
|
||||
@@ -6205,28 +6416,28 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@pkcprotocol/pkc-js@npm:0.0.47":
|
||||
version: 0.0.47
|
||||
resolution: "@pkcprotocol/pkc-js@npm:0.0.47"
|
||||
"@pkcprotocol/pkc-js@npm:0.0.48":
|
||||
version: 0.0.48
|
||||
resolution: "@pkcprotocol/pkc-js@npm:0.0.48"
|
||||
dependencies:
|
||||
"@enhances/with-resolvers": "npm:0.0.5"
|
||||
"@helia/block-brokers": "npm:5.2.4"
|
||||
"@helia/delegated-routing-v1-http-api-client": "npm:6.0.1"
|
||||
"@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.17"
|
||||
"@libp2p/fetch": "npm:4.1.3"
|
||||
"@libp2p/gossipsub": "npm:15.0.21"
|
||||
"@libp2p/identify": "npm:4.1.3"
|
||||
"@libp2p/interface": "npm:3.2.2"
|
||||
"@libp2p/peer-id": "npm:6.0.8"
|
||||
"@multiformats/multiaddr": "npm:13.0.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:6.1.2"
|
||||
blockstore-core: "npm:7.0.1"
|
||||
buffer: "npm:6.0.3"
|
||||
cbor: "npm:10.0.11"
|
||||
cborg: "npm:4.5.8"
|
||||
@@ -6234,19 +6445,19 @@ __metadata:
|
||||
ext-name: "npm:5.0.0"
|
||||
helia: "npm:6.1.4"
|
||||
hpagent: "npm:1.2.0"
|
||||
ipfs-unixfs-importer: "npm:16.1.4"
|
||||
ipns: "npm:10.1.3"
|
||||
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:6.1.0"
|
||||
libp2p: "npm:3.2.3"
|
||||
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:13.4.2"
|
||||
multiformats: "npm:14.0.0"
|
||||
node-forge: "npm:1.4.0"
|
||||
open-graph-scraper: "npm:6.11.0"
|
||||
p-limit: "npm:7.3.0"
|
||||
@@ -6262,37 +6473,37 @@ __metadata:
|
||||
tinycache: "npm:1.1.2"
|
||||
ts-custom-error: "npm:3.3.1"
|
||||
typestub-ipfs-only-hash: "npm:4.0.0"
|
||||
uint8arrays: "npm:5.1.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/41013c495b3480ff664511798e045d59f729e6a341e7ea268acd819975c0e038252ab27af85108c568e9cb6a6e54c696abf663b2e91210a136c52a0f97af86cd
|
||||
checksum: 10c0/eaf9c5e2a83cc6cc108bbb239f6f0461a63830ddb003ebce6aea5423478a24fbc3de9cc1560e97969af41cedcfa05167f04ccae19bd379629e2dfc1b9c5f0836
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@pkcprotocol/pkc-js@patch:@pkcprotocol/pkc-js@npm%3A0.0.47#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.47-e2131d72c8.patch":
|
||||
version: 0.0.47
|
||||
resolution: "@pkcprotocol/pkc-js@patch:@pkcprotocol/pkc-js@npm%3A0.0.47#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.47-e2131d72c8.patch::version=0.0.47&hash=bbfad6"
|
||||
"@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:6.0.1"
|
||||
"@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.17"
|
||||
"@libp2p/fetch": "npm:4.1.3"
|
||||
"@libp2p/gossipsub": "npm:15.0.21"
|
||||
"@libp2p/identify": "npm:4.1.3"
|
||||
"@libp2p/interface": "npm:3.2.2"
|
||||
"@libp2p/peer-id": "npm:6.0.8"
|
||||
"@multiformats/multiaddr": "npm:13.0.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:6.1.2"
|
||||
blockstore-core: "npm:7.0.1"
|
||||
buffer: "npm:6.0.3"
|
||||
cbor: "npm:10.0.11"
|
||||
cborg: "npm:4.5.8"
|
||||
@@ -6300,19 +6511,19 @@ __metadata:
|
||||
ext-name: "npm:5.0.0"
|
||||
helia: "npm:6.1.4"
|
||||
hpagent: "npm:1.2.0"
|
||||
ipfs-unixfs-importer: "npm:16.1.4"
|
||||
ipns: "npm:10.1.3"
|
||||
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:6.1.0"
|
||||
libp2p: "npm:3.2.3"
|
||||
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:13.4.2"
|
||||
multiformats: "npm:14.0.0"
|
||||
node-forge: "npm:1.4.0"
|
||||
open-graph-scraper: "npm:6.11.0"
|
||||
p-limit: "npm:7.3.0"
|
||||
@@ -6328,12 +6539,12 @@ __metadata:
|
||||
tinycache: "npm:1.1.2"
|
||||
ts-custom-error: "npm:3.3.1"
|
||||
typestub-ipfs-only-hash: "npm:4.0.0"
|
||||
uint8arrays: "npm:5.1.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/461adae6d52600e9ab77b4733026d9addb9d24dc9a1dbd4744eac797eb265d6aee62d05251fe56e7c5dde12bc3d9717c0ad598d439a396675f1d3496cd31dc96
|
||||
checksum: 10c0/71398b56139091414002bb81c21430bd82fa98fb2c98291b6a887f2f70d7e300471dbd529f573cb094a0da9a64b396b68979fcb5413c3df7c7eaeb68e91b5181
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -8177,16 +8388,32 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"blob-to-it@npm:^2.0.5":
|
||||
version: 2.0.10
|
||||
resolution: "blob-to-it@npm:2.0.10"
|
||||
"blob-to-it@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "blob-to-it@npm:3.0.0"
|
||||
dependencies:
|
||||
browser-readablestream-to-it: "npm:^2.0.0"
|
||||
checksum: 10c0/9c133ab2dc077a3bc89e61947c5375732fedadd8a417d95073e2029ae2000b3818ac806af897297446a41330a97c1d38d6d320c09bf1980ef5fbc903c3f964dc
|
||||
checksum: 10c0/1bfc924ed5c40dd223d6d6fed1b48aec2d461def6901ee9fefc18ac5ce1e0503bc560eb12df313a32c973172ab92b400821c59553f19169646d9136f3c67153d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"blockstore-core@npm:6.1.2, blockstore-core@npm:^6.1.2":
|
||||
"blockstore-core@npm:7.0.1, blockstore-core@npm:^7.0.1":
|
||||
version: 7.0.1
|
||||
resolution: "blockstore-core@npm:7.0.1"
|
||||
dependencies:
|
||||
"@libp2p/logger": "npm:^6.2.4"
|
||||
abort-error: "npm:^1.0.2"
|
||||
interface-blockstore: "npm:^7.0.0"
|
||||
interface-store: "npm:^8.0.0"
|
||||
it-all: "npm:^3.0.9"
|
||||
it-filter: "npm:^3.1.4"
|
||||
it-merge: "npm:^3.0.12"
|
||||
multiformats: "npm:^14.0.0"
|
||||
checksum: 10c0/be00facc94c6a350bb30d0aa9d235b8c0fe431d0627529c74be95f39b0882289585fe622066e6f2e5845a5b0fd4876e7a161a4d48a595cd3b66df13c7763b361
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"blockstore-core@npm:^6.1.2":
|
||||
version: 6.1.2
|
||||
resolution: "blockstore-core@npm:6.1.2"
|
||||
dependencies:
|
||||
@@ -8320,6 +8547,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"browser-readablestream-to-it@npm:^2.0.12":
|
||||
version: 2.0.12
|
||||
resolution: "browser-readablestream-to-it@npm:2.0.12"
|
||||
checksum: 10c0/470a82cd9422955a51aa895b8ba1b734ce7453da286fe4b5495ee68dde72ea0c7b9c2de755d155a70450f057b679c99a00da2865978454b2607d584f02f4c778
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"browserify-aes@npm:^1.0.4, browserify-aes@npm:^1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "browserify-aes@npm:1.2.0"
|
||||
@@ -11823,6 +12057,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"hamt-sharding@npm:^3.0.8":
|
||||
version: 3.0.8
|
||||
resolution: "hamt-sharding@npm:3.0.8"
|
||||
dependencies:
|
||||
sparse-array: "npm:^1.3.1"
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
checksum: 10c0/01954d7d845b3aea80f8098a40e50cae3116736c57520d3189d838498c47c94ea98d7d514fd81434244141288a3344b5978d7190054bcd2470083b9f12a87ac9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"handlebars@npm:^4.7.7":
|
||||
version: 4.7.9
|
||||
resolution: "handlebars@npm:4.7.9"
|
||||
@@ -12427,7 +12671,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"interface-datastore@npm:^10.0.1":
|
||||
"interface-blockstore@npm:^7.0.0, interface-blockstore@npm:^7.0.1":
|
||||
version: 7.0.1
|
||||
resolution: "interface-blockstore@npm:7.0.1"
|
||||
dependencies:
|
||||
interface-store: "npm:^8.0.0"
|
||||
multiformats: "npm:^14.0.0"
|
||||
checksum: 10c0/5c1db76ac4013f863f8619ed341ddeffc28dd373046c7ac762c767e4853fb6a0e5016f8b73f6f99357dedb5162edcea5e7889d8a420d1706d673054ea2f01f70
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"interface-datastore@npm:^10.0.0, interface-datastore@npm:^10.0.1":
|
||||
version: 10.0.1
|
||||
resolution: "interface-datastore@npm:10.0.1"
|
||||
dependencies:
|
||||
@@ -12567,27 +12821,26 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ipfs-unixfs-importer@npm:16.1.4":
|
||||
version: 16.1.4
|
||||
resolution: "ipfs-unixfs-importer@npm:16.1.4"
|
||||
"ipfs-unixfs-importer@npm:17.0.1":
|
||||
version: 17.0.1
|
||||
resolution: "ipfs-unixfs-importer@npm:17.0.1"
|
||||
dependencies:
|
||||
"@ipld/dag-pb": "npm:^4.1.5"
|
||||
"@multiformats/murmur3": "npm:^2.1.8"
|
||||
blockstore-core: "npm:^6.1.2"
|
||||
hamt-sharding: "npm:^3.0.6"
|
||||
interface-blockstore: "npm:^6.0.1"
|
||||
interface-store: "npm:^7.0.0"
|
||||
ipfs-unixfs: "npm:^12.0.0"
|
||||
it-all: "npm:^3.0.9"
|
||||
it-batch: "npm:^3.0.9"
|
||||
it-first: "npm:^3.0.9"
|
||||
it-parallel-batch: "npm:^3.0.9"
|
||||
multiformats: "npm:^13.3.7"
|
||||
progress-events: "npm:^1.0.1"
|
||||
"@ipld/dag-pb": "npm:^4.1.7"
|
||||
"@multiformats/murmur3": "npm:^2.2.5"
|
||||
blockstore-core: "npm:^7.0.1"
|
||||
hamt-sharding: "npm:^3.0.8"
|
||||
interface-blockstore: "npm:^7.0.1"
|
||||
ipfs-unixfs: "npm:^13.0.0"
|
||||
it-all: "npm:^3.0.11"
|
||||
it-batch: "npm:^3.0.11"
|
||||
it-first: "npm:^3.0.11"
|
||||
it-parallel-batch: "npm:^3.0.11"
|
||||
multiformats: "npm:^14.0.0"
|
||||
progress-events: "npm:^1.1.0"
|
||||
rabin-wasm: "npm:^0.1.5"
|
||||
uint8arraylist: "npm:^2.4.8"
|
||||
uint8arrays: "npm:^5.1.0"
|
||||
checksum: 10c0/4083010ee815ea6c90fad52f419f1f11a3f5f0eb3283ea6b3fc817d5ff390062ddd8700b8951f0845ec4607b73130f53d813b646bcb505b8b2ec7c207427f067
|
||||
uint8arraylist: "npm:^3.0.2"
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
checksum: 10c0/6c4198491175ace215d5896701ac2c5a67064775d2e0f8af09bf1e8fc7a2efc716fc1c7b7466e9bcd0da2915fac199a5495389edab5e26b13c82a2639c16bef3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -12657,6 +12910,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ipfs-unixfs@npm:^13.0.0":
|
||||
version: 13.0.0
|
||||
resolution: "ipfs-unixfs@npm:13.0.0"
|
||||
dependencies:
|
||||
protons-runtime: "npm:^7.0.0"
|
||||
uint8arraylist: "npm:^3.0.2"
|
||||
checksum: 10c0/1b73a481bcd0b5245fa54bf58816444c0f475ae2a8f796d93f722b775112d260f94cd04551e67bada4843a2784efa7821f240739e8accb0b56670a38ec8be9cd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ipfs-unixfs@npm:^4.0.3":
|
||||
version: 4.0.3
|
||||
resolution: "ipfs-unixfs@npm:4.0.3"
|
||||
@@ -12682,7 +12945,25 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ipns@npm:10.1.3, ipns@npm:^10.0.2":
|
||||
"ipns@npm:11.0.0":
|
||||
version: 11.0.0
|
||||
resolution: "ipns@npm:11.0.0"
|
||||
dependencies:
|
||||
"@libp2p/crypto": "npm:^5.0.0"
|
||||
"@libp2p/interface": "npm:^3.0.2"
|
||||
"@libp2p/logger": "npm:^6.0.4"
|
||||
cborg: "npm:^5.1.0"
|
||||
interface-datastore: "npm:^10.0.0"
|
||||
multiformats: "npm:^14.0.0"
|
||||
protons-runtime: "npm:^7.0.0"
|
||||
timestamp-nano: "npm:^1.0.1"
|
||||
uint8arraylist: "npm:^3.0.2"
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
checksum: 10c0/7047ba05fc82454a39525e0c3f25c765cebb255837ba2c170b95853078d0a218a9007df46cabbd2ae7e688e1da74b94573ee9d5b6de56a3ed04399d8c8e0b452
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ipns@npm:^10.0.2":
|
||||
version: 10.1.3
|
||||
resolution: "ipns@npm:10.1.3"
|
||||
dependencies:
|
||||
@@ -13369,6 +13650,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"it-batch@npm:^3.0.11":
|
||||
version: 3.0.11
|
||||
resolution: "it-batch@npm:3.0.11"
|
||||
checksum: 10c0/b540c817197323f32816926f8451e815ded51391a2eea1d2b13ac982e30fd9193ae00f9636dc2684913e235223201cc701d0c6627efea2870bc95c5cbb559f14
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"it-byte-stream@npm:^2.0.0":
|
||||
version: 2.0.4
|
||||
resolution: "it-byte-stream@npm:2.0.4"
|
||||
@@ -13531,7 +13819,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"it-map@npm:^3.1.5":
|
||||
"it-map@npm:^3.1.5, it-map@npm:^3.1.6":
|
||||
version: 3.1.6
|
||||
resolution: "it-map@npm:3.1.6"
|
||||
dependencies:
|
||||
@@ -13567,6 +13855,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"it-ndjson@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "it-ndjson@npm:2.0.0"
|
||||
dependencies:
|
||||
uint8arraylist: "npm:^3.0.1"
|
||||
checksum: 10c0/67bc6ba22b0af9411d365cce07ea2dde0d3de6080c88c6e1d23e2083277a6fc72351010ebb766fbf7aea467e1ac8ba96e9d7c278f11d4f82792392482a60f87b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"it-parallel-batch@npm:^1.0.9":
|
||||
version: 1.0.11
|
||||
resolution: "it-parallel-batch@npm:1.0.11"
|
||||
@@ -13576,6 +13873,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"it-parallel-batch@npm:^3.0.11":
|
||||
version: 3.0.11
|
||||
resolution: "it-parallel-batch@npm:3.0.11"
|
||||
dependencies:
|
||||
it-batch: "npm:^3.0.0"
|
||||
checksum: 10c0/dad34f8997fe3a0b9600b85668b1a47678830d559c85cfe821cc1dc9285f33724e8604cd086d2af79b8094fad8523e9e35455b845d6b3cb3d3e0e80f3756823b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"it-parallel-batch@npm:^3.0.9":
|
||||
version: 3.0.9
|
||||
resolution: "it-parallel-batch@npm:3.0.9"
|
||||
@@ -14084,12 +14390,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"kubo-rpc-client@npm:6.1.0":
|
||||
version: 6.1.0
|
||||
resolution: "kubo-rpc-client@npm:6.1.0"
|
||||
"kubo-rpc-client@npm:7.1.0":
|
||||
version: 7.1.0
|
||||
resolution: "kubo-rpc-client@npm:7.1.0"
|
||||
dependencies:
|
||||
"@ipld/dag-cbor": "npm:^9.0.0"
|
||||
"@ipld/dag-json": "npm:^10.0.0"
|
||||
"@ipld/dag-cbor": "npm:^10.0.1"
|
||||
"@ipld/dag-json": "npm:^11.0.0"
|
||||
"@ipld/dag-pb": "npm:^4.0.0"
|
||||
"@libp2p/crypto": "npm:^5.0.0"
|
||||
"@libp2p/interface": "npm:^3.0.2"
|
||||
@@ -14098,12 +14404,12 @@ __metadata:
|
||||
"@multiformats/multiaddr": "npm:^13.0.1"
|
||||
"@multiformats/multiaddr-to-uri": "npm:^12.0.0"
|
||||
any-signal: "npm:^4.1.1"
|
||||
blob-to-it: "npm:^2.0.5"
|
||||
blob-to-it: "npm:^3.0.0"
|
||||
browser-readablestream-to-it: "npm:^2.0.5"
|
||||
dag-jose: "npm:^5.0.0"
|
||||
electron-fetch: "npm:^1.9.1"
|
||||
err-code: "npm:^3.0.1"
|
||||
ipfs-unixfs: "npm:^12.0.0"
|
||||
ipfs-unixfs: "npm:^13.0.0"
|
||||
iso-url: "npm:^1.2.1"
|
||||
it-all: "npm:^3.0.4"
|
||||
it-first: "npm:^3.0.4"
|
||||
@@ -14113,13 +14419,13 @@ __metadata:
|
||||
it-peekable: "npm:^3.0.3"
|
||||
it-to-stream: "npm:^1.0.0"
|
||||
merge-options: "npm:^3.0.4"
|
||||
multiformats: "npm:^13.1.0"
|
||||
multiformats: "npm:^14.0.0"
|
||||
nanoid: "npm:^5.0.7"
|
||||
parse-duration: "npm:^2.1.2"
|
||||
stream-to-it: "npm:^1.0.1"
|
||||
uint8arrays: "npm:^5.0.3"
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
wherearewe: "npm:^2.0.1"
|
||||
checksum: 10c0/31620eaf9f0d22caa32fcb58d674746b08fe656c5a1b4e116bc1834842878fd935e22229cb356a1266501accdc385441f37fec80839c086dac8bfcdac36e63f1
|
||||
checksum: 10c0/aa85ea094a65086f5cde4e38456712935cd9a95eba42b0327ff677b4d691a97c588a4a633891abc21c78721c737015fa5709a964a39e54f6d607cb4d06ab39f9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -14146,7 +14452,42 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"libp2p@npm:3.2.3, libp2p@npm:^3.2.0":
|
||||
"libp2p@npm:3.3.3":
|
||||
version: 3.3.3
|
||||
resolution: "libp2p@npm:3.3.3"
|
||||
dependencies:
|
||||
"@chainsafe/is-ip": "npm:^2.1.0"
|
||||
"@chainsafe/netmask": "npm:^2.0.0"
|
||||
"@libp2p/crypto": "npm:^5.1.19"
|
||||
"@libp2p/interface": "npm:^3.2.3"
|
||||
"@libp2p/interface-internal": "npm:^3.1.6"
|
||||
"@libp2p/logger": "npm:^6.2.8"
|
||||
"@libp2p/multistream-select": "npm:^7.0.21"
|
||||
"@libp2p/peer-collections": "npm:^7.0.21"
|
||||
"@libp2p/peer-id": "npm:^6.0.10"
|
||||
"@libp2p/peer-store": "npm:^12.0.21"
|
||||
"@libp2p/utils": "npm:^7.2.2"
|
||||
"@multiformats/dns": "npm:^1.0.6"
|
||||
"@multiformats/multiaddr": "npm:^13.0.3"
|
||||
"@multiformats/multiaddr-matcher": "npm:^3.0.2"
|
||||
any-signal: "npm:^4.1.1"
|
||||
datastore-core: "npm:^11.0.1"
|
||||
interface-datastore: "npm:^9.0.1"
|
||||
it-merge: "npm:^3.0.12"
|
||||
it-parallel: "npm:^3.0.13"
|
||||
main-event: "npm:^1.0.1"
|
||||
multiformats: "npm:^14.0.0"
|
||||
p-defer: "npm:^4.0.1"
|
||||
p-event: "npm:^7.0.0"
|
||||
p-retry: "npm:^8.0.0"
|
||||
progress-events: "npm:^1.1.0"
|
||||
race-signal: "npm:^2.0.0"
|
||||
uint8arrays: "npm:^6.1.1"
|
||||
checksum: 10c0/b29ea7bedbd4ec68e0029c886f80f9ec56ecb3a0b615cf0c8b6ce2a3b0cdbfb97edd3da904c973e849e36511018382cbe4bd30065128621c89203b273027549c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"libp2p@npm:^3.2.0":
|
||||
version: 3.2.3
|
||||
resolution: "libp2p@npm:3.2.3"
|
||||
dependencies:
|
||||
@@ -15358,7 +15699,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"multiformats@npm:^14.0.0":
|
||||
"multiformats@npm:14.0.0, multiformats@npm:^14.0.0":
|
||||
version: 14.0.0
|
||||
resolution: "multiformats@npm:14.0.0"
|
||||
checksum: 10c0/ec4b7d5ffa9dfb5b18274afb41c105c2d410e758b2c9242fdfbd938972c3a9796cabba74c214158b8732a41e1b5ba3c106c9dd5f1b7b19c4669c8f45b91db5cd
|
||||
@@ -19980,12 +20321,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"uint8arrays@npm:5.1.0, uint8arrays@npm:^5.0.0, uint8arrays@npm:^5.0.1, uint8arrays@npm:^5.0.2, uint8arrays@npm:^5.0.3, uint8arrays@npm:^5.1.0":
|
||||
version: 5.1.0
|
||||
resolution: "uint8arrays@npm:5.1.0"
|
||||
"uint8arrays@npm:6.1.1, uint8arrays@npm:^6.0.0, uint8arrays@npm:^6.1.0, uint8arrays@npm:^6.1.1":
|
||||
version: 6.1.1
|
||||
resolution: "uint8arrays@npm:6.1.1"
|
||||
dependencies:
|
||||
multiformats: "npm:^13.0.0"
|
||||
checksum: 10c0/e7587f97d03a17a608becd01b3ca52aa6db43e7ee6156c18b278c715a62f4f9e62ef2fe9432a3cd02791b6222a17578476a20b8e3ea37dd3b5ce454c6a8782a9
|
||||
multiformats: "npm:^14.0.0"
|
||||
checksum: 10c0/5814d69e5fada5d169ee8e88c750ad4ddf57a6ee86a7fe9534b86b55a147fab8e0b75d66cb1d2a1c6c2350526edd03e57a3ab5f0a0977c8ac13a6ce350c7b958
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -19998,12 +20339,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"uint8arrays@npm:^6.0.0, uint8arrays@npm:^6.1.0, uint8arrays@npm:^6.1.1":
|
||||
version: 6.1.1
|
||||
resolution: "uint8arrays@npm:6.1.1"
|
||||
"uint8arrays@npm:^5.0.0, uint8arrays@npm:^5.0.1, uint8arrays@npm:^5.0.2, uint8arrays@npm:^5.1.0":
|
||||
version: 5.1.0
|
||||
resolution: "uint8arrays@npm:5.1.0"
|
||||
dependencies:
|
||||
multiformats: "npm:^14.0.0"
|
||||
checksum: 10c0/5814d69e5fada5d169ee8e88c750ad4ddf57a6ee86a7fe9534b86b55a147fab8e0b75d66cb1d2a1c6c2350526edd03e57a3ab5f0a0977c8ac13a6ce350c7b958
|
||||
multiformats: "npm:^13.0.0"
|
||||
checksum: 10c0/e7587f97d03a17a608becd01b3ca52aa6db43e7ee6156c18b278c715a62f4f9e62ef2fe9432a3cd02791b6222a17578476a20b8e3ea37dd3b5ce454c6a8782a9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
Reference in New Issue
Block a user