diff --git a/.vercelignore b/.vercelignore new file mode 100644 index 00000000..8d14c7e0 --- /dev/null +++ b/.vercelignore @@ -0,0 +1,6 @@ +.codegraph/ +.firecrawl/ +.playwright-cli/ +build/ +coverage/ +release-assets/ diff --git a/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch b/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.47-e2131d72c8.patch similarity index 73% rename from .yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch rename to .yarn/patches/@pkcprotocol-pkc-js-npm-0.0.47-e2131d72c8.patch index 7ae6ea69..83bbf8b5 100644 --- a/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.48-7f3bbd0d02.patch +++ b/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.47-e2131d72c8.patch @@ -1,5 +1,51 @@ +diff --git a/dist/browser/helia/helia-for-pkc.js b/dist/browser/helia/helia-for-pkc.js +index e6821667b0601ac56a850e989bfedf76c14796a2..1a2ae7ab9b0afc605c9b4dcddccf25ac02aa1337 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..339d299de85ba5d144e4608f9189c88f4ef42dc8 100644 +index 5e17c02a39c2715c7ac932695fe90d5078bce405..2d43d996e2b3cdab759e89c296eb9ed8aae857db 100644 --- a/dist/browser/publications/publication.js +++ b/dist/browser/publications/publication.js @@ -842,8 +842,14 @@ class Publication extends TypedEmitter { @@ -19,49 +65,25 @@ index 5e17c02a39c2715c7ac932695fe90d5078bce405..339d299de85ba5d144e4608f9189c88f pubsubTopic: this._communityPubsubTopicWithFallback(), providerHeliaContexts: this._libp2pJsClientHeliaContexts() }); -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/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", diff --git a/.yarnrc.yml b/.yarnrc.yml index c30118dc..5a4394d2 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -5,3 +5,6 @@ packageExtensions: peerDependencies: "@types/react": ">=18.0.0" react: ">=17.0.1" + "@pkcprotocol/pkc-js@0.0.47": + dependencies: + "@libp2p/webtransport": "6.0.0" diff --git a/CHANGELOG.md b/CHANGELOG.md index 5027da54..f537ab9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,21 +1,3 @@ -## [0.9.3](https://github.com/bitsocialnet/5chan/compare/v0.9.2...v0.9.3) (2026-06-16) - - -### Bug Fixes - -* **ci:** keep raw board tests side-effect free ([75dd7a8](https://github.com/bitsocialnet/5chan/commit/75dd7a84967cb3c99da37780fb31bb6a947d7d57)) -* **pubsub:** avoid false browser p2p provider failures ([10015de](https://github.com/bitsocialnet/5chan/commit/10015de6b925595694ce1abae547e628b169bf35)) -* **release:** align blotter and release copy with LaTeX in /sci/ ([3577673](https://github.com/bitsocialnet/5chan/commit/35776737f2479266c00fffc440e4b946e5782517)) -* **rules:** re-scroll directory hash when data refreshes ([6006a65](https://github.com/bitsocialnet/5chan/commit/6006a658fbf4fe625a76c836992dff89540dbe4a)) - - -### Performance Improvements - -* **mod queue:** stabilize empty loading state ([33bb1d1](https://github.com/bitsocialnet/5chan/commit/33bb1d1356fbf09693acb5003bcc6e7039a51b90)) -* **mod queue:** stabilize moderation subscriptions ([f3565f0](https://github.com/bitsocialnet/5chan/commit/f3565f0dda132c67300c49eba49e868f2fc6bfbd)) - - - ## [0.9.2](https://github.com/bitsocialnet/5chan/compare/v0.9.1...v0.9.2) (2026-06-13) @@ -23,7 +5,7 @@ * **archive:** preserve button link text color on desktop ([b0193b3](https://github.com/bitsocialnet/5chan/commit/b0193b34beec9993d4ca3cedc259ac2e9bd88460)) * **challenge-modal:** center mobile modal in viewport ([2e58961](https://github.com/bitsocialnet/5chan/commit/2e58961cf1d32fa303c042809309172add45eb51)) -* **challenge-modal:** publish challenge answers with pkc object schema ([591aaa7](https://github.com/bitsocialnet/5chan/commit/591aaa729f05a4b2ff62b86c07ee67c112f4123b)) +* **challenge-modal:** publish challenge answers with pkc object schema ([591aaa7](https://github.com/bitsocialnet/5chan/commit/591aaa729)) * **deps:** bump react-router-dom to 6.30.4 ([ee5aa78](https://github.com/bitsocialnet/5chan/commit/ee5aa7845edcd66b4bde7d6b09a6018bf40b9974)), closes [#276](https://github.com/bitsocialnet/5chan/issues/276) * **deps:** resolve shell-quote critical dependabot alert ([fa7cab0](https://github.com/bitsocialnet/5chan/commit/fa7cab069999c745595d2d50bd4f9c920047963d)) * **failed-publish:** keep bracket actions on one line ([9de2e6a](https://github.com/bitsocialnet/5chan/commit/9de2e6a8510d4ec6647ff13ce99bd9e8c22b197a)) diff --git a/package.json b/package.json index a6cc548d..51313390 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "5chan", - "version": "0.9.3", + "version": "0.9.2", "packageManager": "yarn@4.13.0", "description": "A Bitsocial client with an imageboard UI", "type": "module", @@ -9,14 +9,14 @@ "private": true, "dependencies": { "@bbob/parser": "4.3.1", - "@bitsocial/bitsocial-react-hooks": "0.1.18", + "@bitsocial/bitsocial-react-hooks": "0.1.17", "@capacitor/app": "7.0.1", "@capacitor/browser": "7.0.5", "@capacitor/status-bar": "7.0.1", "@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": "patch:@pkcprotocol/pkc-js@npm%3A0.0.47#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.47-e2131d72c8.patch", "@react-spring/web": "10.0.3", "@ruffle-rs/ruffle": "0.2.0", "@types/node": "20.19.37", @@ -187,7 +187,7 @@ }, "resolutions": { "follow-redirects": "1.16.0", - "@libp2p/gossipsub": "16.0.2", + "@libp2p/gossipsub": "15.0.23", "@libp2p/kad-dht": "16.2.6", "brace-expansion@npm:^5.0.2": "5.0.6", "protobufjs": "7.5.8", @@ -243,7 +243,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.48": "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.47": "patch:@pkcprotocol/pkc-js@npm%3A0.0.47#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.47-e2131d72c8.patch" }, "main": "electron/main.js", "lint-staged": { diff --git a/public/llms-full.txt b/public/llms-full.txt index 7d7ecb67..c92d42af 100644 --- a/public/llms-full.txt +++ b/public/llms-full.txt @@ -1182,24 +1182,6 @@ Avoid GitHub MCP and browser MCP servers for this project because they add signi Source: https://github.com/bitsocialnet/5chan/blob/master/CHANGELOG.md ```markdown -## [0.9.3](https://github.com/bitsocialnet/5chan/compare/v0.9.2...v0.9.3) (2026-06-16) - - -### Bug Fixes - -* **ci:** keep raw board tests side-effect free ([75dd7a8](https://github.com/bitsocialnet/5chan/commit/75dd7a84967cb3c99da37780fb31bb6a947d7d57)) -* **pubsub:** avoid false browser p2p provider failures ([10015de](https://github.com/bitsocialnet/5chan/commit/10015de6b925595694ce1abae547e628b169bf35)) -* **release:** align blotter and release copy with LaTeX in /sci/ ([3577673](https://github.com/bitsocialnet/5chan/commit/35776737f2479266c00fffc440e4b946e5782517)) -* **rules:** re-scroll directory hash when data refreshes ([6006a65](https://github.com/bitsocialnet/5chan/commit/6006a658fbf4fe625a76c836992dff89540dbe4a)) - - -### Performance Improvements - -* **mod queue:** stabilize empty loading state ([33bb1d1](https://github.com/bitsocialnet/5chan/commit/33bb1d1356fbf09693acb5003bcc6e7039a51b90)) -* **mod queue:** stabilize moderation subscriptions ([f3565f0](https://github.com/bitsocialnet/5chan/commit/f3565f0dda132c67300c49eba49e868f2fc6bfbd)) - - - ## [0.9.2](https://github.com/bitsocialnet/5chan/compare/v0.9.1...v0.9.2) (2026-06-13) @@ -1207,7 +1189,7 @@ Source: https://github.com/bitsocialnet/5chan/blob/master/CHANGELOG.md * **archive:** preserve button link text color on desktop ([b0193b3](https://github.com/bitsocialnet/5chan/commit/b0193b34beec9993d4ca3cedc259ac2e9bd88460)) * **challenge-modal:** center mobile modal in viewport ([2e58961](https://github.com/bitsocialnet/5chan/commit/2e58961cf1d32fa303c042809309172add45eb51)) -* **challenge-modal:** publish challenge answers with pkc object schema ([591aaa7](https://github.com/bitsocialnet/5chan/commit/591aaa729f05a4b2ff62b86c07ee67c112f4123b)) +* **challenge-modal:** publish challenge answers with pkc object schema ([591aaa7](https://github.com/bitsocialnet/5chan/commit/591aaa729)) * **deps:** bump react-router-dom to 6.30.4 ([ee5aa78](https://github.com/bitsocialnet/5chan/commit/ee5aa7845edcd66b4bde7d6b09a6018bf40b9974)), closes [#276](https://github.com/bitsocialnet/5chan/issues/276) * **deps:** resolve shell-quote critical dependabot alert ([fa7cab0](https://github.com/bitsocialnet/5chan/commit/fa7cab069999c745595d2d50bd4f9c920047963d)) * **failed-publish:** keep bracket actions on one line ([9de2e6a](https://github.com/bitsocialnet/5chan/commit/9de2e6a8510d4ec6647ff13ce99bd9e8c22b197a)) diff --git a/public/llms.txt b/public/llms.txt index cd1751bd..e134313e 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -47,5 +47,5 @@ This file is generated by `scripts/generate-llms-files.mjs`. Do not hand-edit it ## Optional -- [Changelog](https://github.com/bitsocialnet/5chan/blob/master/CHANGELOG.md): * **ci:** keep raw board tests side-effect free ([75dd7a8](https://github.com/bitsocialnet/5chan/commit/75dd7a84967cb3c99da37780fb31bb6a947d7d57)) * **pubsub:** avoid false browser p2p provider failures ([10015de](htt... +- [Changelog](https://github.com/bitsocialnet/5chan/blob/master/CHANGELOG.md): * **archive:** preserve button link text color on desktop ([b0193b3](https://github.com/bitsocialnet/5chan/commit/b0193b34beec9993d4ca3cedc259ac2e9bd88460)) * **challenge-modal:** center mobile modal in viewport ([2e5... - [Upload Automation Retest Checklist](https://github.com/bitsocialnet/5chan/blob/master/docs/upload-automation-retest-checklist.md): Retest checklist for Android and desktop after changes to media upload automation (`MediaUploadAutomationRunner`, `MediaUploadRecipes`, `upload-orchestrator`, etc.). diff --git a/scripts/release-body.js b/scripts/release-body.js index f68b985f..531e3461 100644 --- a/scripts/release-body.js +++ b/scripts/release-body.js @@ -103,7 +103,7 @@ const downloads = [macSection, winSection, linuxSection, androidSection, htmlSec // One-liner summary of what changed in this release. Update before each release. const oneLinerDescription = - 'This release fixes browser P2P posting errors, improves moderation queue responsiveness, and keeps board rule navigation in place after refreshes.'; + 'This release ships signed and notarized macOS desktop apps, adds LaTeX in /sci/, shows board subtitles on the All view, and improves YouTube thumbnails alongside moderation queue, challenge modal, and media playback fixes.'; const releaseBody = `${oneLinerDescription} diff --git a/src/components/settings-modal/__tests__/settings-modal.test.tsx b/src/components/settings-modal/__tests__/settings-modal.test.tsx index bb374b06..568eeb28 100644 --- a/src/components/settings-modal/__tests__/settings-modal.test.tsx +++ b/src/components/settings-modal/__tests__/settings-modal.test.tsx @@ -175,7 +175,7 @@ describe('SettingsModal', () => { expect(container.querySelector('[data-testid="p2p-stats-settings-panel"]')).toBeNull(); }); - it('opens the p2p stats section from its hash', () => { + it('opens the p2p stats section from its hash when browser pure p2p is enabled', () => { render('/all/settings#p2p-stats-settings'); expect(container.querySelector('[data-testid="p2p-stats-settings-panel"]')).not.toBeNull(); diff --git a/src/components/settings-modal/advanced-settings/__tests__/advanced-settings.test.tsx b/src/components/settings-modal/advanced-settings/__tests__/advanced-settings.test.tsx index 0f145b2f..d99e5182 100644 --- a/src/components/settings-modal/advanced-settings/__tests__/advanced-settings.test.tsx +++ b/src/components/settings-modal/advanced-settings/__tests__/advanced-settings.test.tsx @@ -81,12 +81,6 @@ const clickButton = async (text: string) => { }); }; -const getSaveAdvancedSettingsButton = () => { - const button = Array.from(container.querySelectorAll('button')).find((candidate) => candidate.textContent === 'save_advanced_settings'); - expect(button).toBeTruthy(); - return button as HTMLButtonElement; -}; - const setTestHostname = (hostname: string) => { Object.defineProperty(window, 'location', { configurable: true, @@ -210,38 +204,30 @@ describe('AdvancedSettings', () => { expect(textInputs[2]?.value).toBe('/tmp/connected-node'); }); - it('hides gateway mode settings while browser pure p2p is enabled', async () => { + it('shows pure p2p browser mode checked by default', async () => { await renderSettings(false); expect(container.textContent).not.toContain('advanced_ipfs_gateways'); expect(container.textContent).not.toContain('advanced_pubsub_providers'); expect(container.textContent).toContain('advanced_http_routers'); expect(container.textContent).toContain('advanced_full_node_websocket_rpc'); + const checkbox = container.querySelector('input[type="checkbox"]'); + expect(checkbox?.checked).toBe(true); const nodeRpcInput = Array.from(container.querySelectorAll('input[type="text"]')).find( (input) => input.placeholder === 'advanced_p2p_rpc_placeholder', ); expect(nodeRpcInput).toBeTruthy(); - - const checkbox = container.querySelector('input[type="checkbox"]'); - await act(async () => { - checkbox?.click(); - }); - - expect(container.textContent).toContain('advanced_ipfs_gateways'); - expect(container.textContent).toContain('advanced_pubsub_providers'); }); - it('saves the browser pure p2p toggle through advanced settings', async () => { + it('saves browser pure p2p settings when the toggle is turned on', async () => { localStorage.setItem('5chan:pure-p2p-browser-enabled', 'false'); await renderSettings(false); const checkbox = container.querySelector('input[type="checkbox"]'); expect(checkbox?.checked).toBe(false); - expect(container.textContent).not.toContain('pure P2P:'); expect(checkbox?.closest('label')?.nextElementSibling?.textContent).toBe('enable_pure_p2p_tip'); - expect(getSaveAdvancedSettingsButton().previousElementSibling).toBe(checkbox?.closest('div')); await act(async () => { checkbox?.click(); @@ -252,10 +238,10 @@ describe('AdvancedSettings', () => { expect.objectContaining({ pkcOptions: expect.objectContaining({ httpRoutersOptions: ['https://router.old.example'], - ipfsGatewayUrls: [], + ipfsGatewayUrls: undefined, libp2pJsClientsOptions: [{ key: 'libp2pjs' }], pkcRpcClientsOptions: undefined, - pubsubKuboRpcClientsOptions: [], + pubsubKuboRpcClientsOptions: undefined, }), }), ); @@ -263,7 +249,42 @@ describe('AdvancedSettings', () => { expect(reloadMock).toHaveBeenCalledOnce(); }); - it('allows browser pure p2p to be disabled on p2p subdomains', async () => { + it('saves gateway defaults when the browser pure p2p setting is turned off', async () => { + localStorage.setItem('5chan:pure-p2p-browser-enabled', 'true'); + testState.account = { + mediaIpfsGatewayUrl: 'https://media.old.example', + pkcOptions: { + httpRoutersOptions: ['https://peers.pleb.bot'], + libp2pJsClientsOptions: [{ key: 'libp2pjs' }], + }, + }; + + await renderSettings(false); + + const checkbox = container.querySelector('input[type="checkbox"]'); + expect(checkbox?.checked).toBe(true); + + await act(async () => { + checkbox?.click(); + }); + await clickButton('save_advanced_settings'); + + expect(testState.setAccountMock).toHaveBeenCalledWith( + expect.objectContaining({ + pkcOptions: expect.objectContaining({ + httpRoutersOptions: ['https://peers.pleb.bot'], + ipfsGatewayUrls: ['https://ipfsgateway.xyz', 'https://gateway.plebpubsub.xyz', 'https://gateway.forumindex.com'], + libp2pJsClientsOptions: undefined, + pkcRpcClientsOptions: undefined, + pubsubKuboRpcClientsOptions: ['https://pubsubprovider.xyz/api/v0', 'https://plebpubsub.xyz/api/v0', 'https://rannithepleb.com/api/v0'], + }), + }), + ); + expect(localStorage.getItem('5chan:pure-p2p-browser-enabled')).toBe('false'); + expect(reloadMock).toHaveBeenCalledOnce(); + }); + + it('preserves custom browser gateway providers while pure p2p is unavailable', async () => { localStorage.setItem('5chan:pure-p2p-browser-enabled', 'false'); setTestHostname('p2p.5chan.app'); @@ -271,7 +292,6 @@ describe('AdvancedSettings', () => { const checkbox = container.querySelector('input[type="checkbox"]'); expect(checkbox?.checked).toBe(false); - expect(checkbox?.disabled).toBe(false); await clickButton('save_advanced_settings'); @@ -288,7 +308,7 @@ describe('AdvancedSettings', () => { expect(localStorage.getItem('5chan:pure-p2p-browser-enabled')).toBe('false'); }); - it('saves gateway mode defaults when browser pure p2p is disabled', async () => { + it('saves gateway mode defaults when browser pure p2p settings have no gateway endpoints', async () => { testState.account = { mediaIpfsGatewayUrl: 'https://media.old.example', pkcOptions: { diff --git a/src/components/settings-modal/advanced-settings/advanced-settings.tsx b/src/components/settings-modal/advanced-settings/advanced-settings.tsx index 87aa63a1..6f268d39 100644 --- a/src/components/settings-modal/advanced-settings/advanced-settings.tsx +++ b/src/components/settings-modal/advanced-settings/advanced-settings.tsx @@ -248,6 +248,23 @@ const getTrimmedLines = (value: string | undefined): string[] | undefined => { }, []); }; +const applyBrowserGatewayPkcOptions = ( + pkcOptions: AccountProtocolOptions, + ipfsGatewayUrls: string[] | undefined, + pubsubKuboRpcClientsOptions: string[] | undefined, + httpRoutersOptions: string[] | undefined, +) => { + const gatewayOptions = getBrowserGatewayPkcOptions(); + + return { + ...pkcOptions, + ...gatewayOptions, + ipfsGatewayUrls: ipfsGatewayUrls?.length ? ipfsGatewayUrls : gatewayOptions.ipfsGatewayUrls, + pubsubKuboRpcClientsOptions: pubsubKuboRpcClientsOptions?.length ? pubsubKuboRpcClientsOptions : gatewayOptions.pubsubKuboRpcClientsOptions, + httpRoutersOptions: httpRoutersOptions?.length ? httpRoutersOptions : gatewayOptions.httpRoutersOptions, + }; +}; + const AdvancedSettings = () => { const { t } = useTranslation(); const account = useAccount() as AccountShape | undefined; @@ -305,14 +322,7 @@ const AdvancedSettings = () => { pkcRpcClientsOptions: undefined, }; } else { - const gatewayOptions = getBrowserGatewayPkcOptions(); - pkcOptions = { - ...pkcOptions, - ...gatewayOptions, - ipfsGatewayUrls: ipfsGatewayUrls?.length ? ipfsGatewayUrls : gatewayOptions.ipfsGatewayUrls, - pubsubKuboRpcClientsOptions: pubsubKuboRpcClientsOptions?.length ? pubsubKuboRpcClientsOptions : gatewayOptions.pubsubKuboRpcClientsOptions, - httpRoutersOptions: httpRoutersOptions?.length ? httpRoutersOptions : gatewayOptions.httpRoutersOptions, - }; + pkcOptions = applyBrowserGatewayPkcOptions(pkcOptions, ipfsGatewayUrls, pubsubKuboRpcClientsOptions, httpRoutersOptions); } } diff --git a/src/data/5chan-blotter.json b/src/data/5chan-blotter.json index 0478492d..c045c4cc 100644 --- a/src/data/5chan-blotter.json +++ b/src/data/5chan-blotter.json @@ -1,12 +1,5 @@ { "entries": [ - { - "id": "release-0.9.3", - "kind": "release", - "timestamp": 1781611200, - "message": "v0.9.3: More reliable browser posting", - "version": "0.9.3" - }, { "id": "release-0.9.2", "kind": "release", diff --git a/src/hooks/__tests__/use-state-string.test.tsx b/src/hooks/__tests__/use-state-string.test.tsx index cdba5a37..c45bc997 100644 --- a/src/hooks/__tests__/use-state-string.test.tsx +++ b/src/hooks/__tests__/use-state-string.test.tsx @@ -102,7 +102,7 @@ describe('use-state-string', () => { expect(latestValue).toBe('Resolving address, downloading board from peers'); }); - it('formats browser p2p fallback publishing states as peer downloads', () => { + it('formats browser p2p fallback publishing states as peer downloads when pure p2p is enabled', () => { localStorage.setItem('5chan:pure-p2p-browser-enabled', 'true'); act(() => { @@ -144,7 +144,7 @@ describe('use-state-string', () => { expect(latestValue).toBe('Downloading board via IPFS'); }); - it('formats browser p2p single-board feed fallback states as peer downloads', () => { + it('formats browser p2p single-board feed fallback states as peer downloads when pure p2p is enabled', () => { localStorage.setItem('5chan:pure-p2p-browser-enabled', 'true'); testState.community = { state: 'updating', diff --git a/src/lib/__tests__/p2p-browser-config.test.ts b/src/lib/__tests__/p2p-browser-config.test.ts index 81380f38..e0dd7cbf 100644 --- a/src/lib/__tests__/p2p-browser-config.test.ts +++ b/src/lib/__tests__/p2p-browser-config.test.ts @@ -2,8 +2,8 @@ import { describe, expect, it } from 'vitest'; import { configureP2PBrowserPkcOptions, + getBrowserGatewayPkcOptions, getPureP2PBrowserPreference, - P2P_BROWSER_PKC_OPTIONS, PURE_P2P_BROWSER_SETTING_KEY, setPureP2PBrowserPreference, shouldUsePureP2PBrowser, @@ -17,36 +17,54 @@ const createStorage = (values: Record = {}) => ({ }); describe('p2p-browser-config', () => { + const defaultHttpRouters = ['https://peers.plebpubsub.xyz', 'https://routing.lol', 'https://peers.pleb.bot']; + it('configures browser PKC options for pure p2p by default', () => { + const chainProviders = { + eth: { urls: ['https://eth.example'], chainId: 1 }, + }; const targetWindow = { location: { hostname: '5chan.app' }, localStorage: createStorage(), defaultPkcOptions: { + chainProviders, ipfsGatewayUrls: ['https://gateway.example'], }, }; expect(shouldUsePureP2PBrowser(targetWindow)).toBe(true); expect(configureP2PBrowserPkcOptions(targetWindow)).toBe(true); - expect(targetWindow.defaultPkcOptions).toEqual(P2P_BROWSER_PKC_OPTIONS); + expect(targetWindow.defaultPkcOptions).toMatchObject({ + chainProviders, + httpRoutersOptions: defaultHttpRouters, + ipfsGatewayUrls: undefined, + libp2pJsClientsOptions: [{ key: 'libp2pjs' }], + pubsubKuboRpcClientsOptions: undefined, + }); }); - it('respects disabled pure p2p preference on p2p subdomains', () => { - const defaultPkcOptions = { - ipfsGatewayUrls: ['https://gateway.example'], + it('configures browser PKC options for gateway mode when pure p2p is explicitly disabled', () => { + const chainProviders = { + eth: { urls: ['https://eth.example'], chainId: 1 }, }; const targetWindow = { - location: { hostname: 'p2p.5chan.app' }, + location: { hostname: '5chan.app' }, localStorage: createStorage({ [PURE_P2P_BROWSER_SETTING_KEY]: 'false' }), - defaultPkcOptions, + defaultPkcOptions: { + chainProviders, + ipfsGatewayUrls: ['https://gateway.example'], + }, }; expect(shouldUsePureP2PBrowser(targetWindow)).toBe(false); expect(configureP2PBrowserPkcOptions(targetWindow)).toBe(false); - expect(targetWindow.defaultPkcOptions).toBe(defaultPkcOptions); + expect(targetWindow.defaultPkcOptions).toEqual({ + chainProviders, + ...getBrowserGatewayPkcOptions(), + }); }); - it('configures browser PKC options when pure p2p is enabled', () => { + it('configures browser PKC options when pure p2p is explicitly enabled', () => { const targetWindow = { location: { hostname: '5chan.app' }, localStorage: createStorage({ [PURE_P2P_BROWSER_SETTING_KEY]: 'true' }), @@ -55,22 +73,14 @@ describe('p2p-browser-config', () => { }, }; + expect(shouldUsePureP2PBrowser(targetWindow)).toBe(true); expect(configureP2PBrowserPkcOptions(targetWindow)).toBe(true); - expect(targetWindow.defaultPkcOptions).toEqual(P2P_BROWSER_PKC_OPTIONS); - }); - - it('leaves browser PKC options untouched when pure p2p is disabled', () => { - const defaultPkcOptions = { - ipfsGatewayUrls: ['https://gateway.example'], - }; - const targetWindow = { - location: { hostname: '5chan.app' }, - localStorage: createStorage({ [PURE_P2P_BROWSER_SETTING_KEY]: 'false' }), - defaultPkcOptions, - }; - - expect(configureP2PBrowserPkcOptions(targetWindow)).toBe(false); - expect(targetWindow.defaultPkcOptions).toBe(defaultPkcOptions); + expect(targetWindow.defaultPkcOptions).toMatchObject({ + httpRoutersOptions: defaultHttpRouters, + ipfsGatewayUrls: undefined, + libp2pJsClientsOptions: [{ key: 'libp2pjs' }], + pubsubKuboRpcClientsOptions: undefined, + }); }); it('leaves electron defaults untouched', () => { diff --git a/src/lib/__tests__/p2p-runtime.test.ts b/src/lib/__tests__/p2p-runtime.test.ts index 3565bdf5..a4882003 100644 --- a/src/lib/__tests__/p2p-runtime.test.ts +++ b/src/lib/__tests__/p2p-runtime.test.ts @@ -27,6 +27,16 @@ const browserWindowWithDisabledPureP2P = { }, } as unknown as Window; +const browserWindowWithEnabledPureP2P = { + electronApi: undefined, + isElectron: false, + location: { hostname: '5chan.app' }, + localStorage: { + getItem: () => 'true', + setItem: () => undefined, + }, +} as unknown as Window; + const electronWindow = { electronApi: { isElectron: true }, isElectron: true, @@ -56,10 +66,14 @@ describe('p2p-runtime', () => { expect(getP2PRuntimeMode(account, browserWindow)).toBe('full-node-rpc'); }); - it('shows p2p settings in browsers when pure p2p is enabled by default', () => { + it('keeps browser pure p2p on by default while allowing gateway mode when configured', () => { expect(shouldShowP2PSettingsSection(undefined, browserWindow)).toBe(true); expect(shouldShowP2PSettingsSection({ pkcOptions: { ipfsGatewayUrls: ['https://gateway.example'] } }, browserWindow)).toBe(true); expect(isBrowserPureP2PEnabled({ pkcOptions: { ipfsGatewayUrls: ['https://gateway.example'] } }, browserWindow)).toBe(true); + expect(shouldShowP2PSettingsSection({ pkcOptions: { libp2pJsClientsOptions: [{ key: 'libp2pjs' }] } }, browserWindow)).toBe(true); + expect(isBrowserPureP2PEnabled({ pkcOptions: { libp2pJsClientsOptions: [{ key: 'libp2pjs' }] } }, browserWindow)).toBe(true); + expect(shouldShowP2PSettingsSection({ pkcOptions: { ipfsGatewayUrls: ['https://gateway.example'] } }, browserWindowWithEnabledPureP2P)).toBe(true); + expect(isBrowserPureP2PEnabled({ pkcOptions: { ipfsGatewayUrls: ['https://gateway.example'] } }, browserWindowWithEnabledPureP2P)).toBe(true); }); it('allows browser gateway mode when pure p2p is disabled', () => { @@ -88,13 +102,15 @@ describe('p2p-runtime', () => { expect(getBrowserPureP2PAccountOptions(account)).toMatchObject({ libp2pJsClientsOptions: [{ key: 'libp2pjs' }], - ipfsGatewayUrls: [], + ipfsGatewayUrls: undefined, pkcRpcClientsOptions: undefined, }); expect(getBrowserGatewayAccountOptions(account)).toMatchObject({ - ipfsGatewayUrls: ['https://ipfsgateway.xyz', 'https://gateway.plebpubsub.xyz', 'https://gateway.forumindex.com'], + httpRoutersOptions: ['https://custom-router.example'], + ipfsGatewayUrls: ['https://gateway.example'], libp2pJsClientsOptions: undefined, pkcRpcClientsOptions: undefined, + pubsubKuboRpcClientsOptions: ['https://pubsubprovider.xyz/api/v0', 'https://plebpubsub.xyz/api/v0', 'https://rannithepleb.com/api/v0'], }); }); }); diff --git a/src/lib/p2p-browser-config.ts b/src/lib/p2p-browser-config.ts index 164e2d62..7447cd7d 100644 --- a/src/lib/p2p-browser-config.ts +++ b/src/lib/p2p-browser-config.ts @@ -1,12 +1,13 @@ export const PURE_P2P_BROWSER_SETTING_KEY = '5chan:pure-p2p-browser-enabled'; +export const BROWSER_PURE_P2P_DEFAULT_ENABLED = true; export const P2P_BROWSER_PKC_OPTIONS = { libp2pJsClientsOptions: [{ key: 'libp2pjs' }], - ipfsGatewayUrls: [], + ipfsGatewayUrls: undefined, kuboRpcClientsOptions: undefined, pubsubHttpClientsOptions: undefined, - pubsubKuboRpcClientsOptions: [], - httpRoutersOptions: ['https://peers.pleb.bot', 'https://peers.forumindex.com'], + pubsubKuboRpcClientsOptions: undefined, + httpRoutersOptions: ['https://peers.plebpubsub.xyz', 'https://routing.lol', 'https://peers.pleb.bot'], }; const GATEWAY_BROWSER_PKC_OPTIONS = { @@ -29,8 +30,6 @@ type P2PBrowserConfigWindow = { export const getBrowserPureP2PPkcOptions = () => ({ ...P2P_BROWSER_PKC_OPTIONS, libp2pJsClientsOptions: P2P_BROWSER_PKC_OPTIONS.libp2pJsClientsOptions.map((options) => ({ ...options })), - ipfsGatewayUrls: [...P2P_BROWSER_PKC_OPTIONS.ipfsGatewayUrls], - pubsubKuboRpcClientsOptions: [...P2P_BROWSER_PKC_OPTIONS.pubsubKuboRpcClientsOptions], httpRoutersOptions: [...P2P_BROWSER_PKC_OPTIONS.httpRoutersOptions], }); @@ -63,17 +62,26 @@ export const setPureP2PBrowserPreference = (enabled: boolean, targetWindow: P2PB export const isElectronRuntime = (targetWindow: P2PBrowserConfigWindow = window) => targetWindow.electronApi?.isElectron === true || targetWindow.isElectron === true; +export const canUsePureP2PBrowser = (targetWindow: P2PBrowserConfigWindow = window) => !isElectronRuntime(targetWindow); + export const shouldUsePureP2PBrowser = (targetWindow: P2PBrowserConfigWindow = window) => { - if (isElectronRuntime(targetWindow)) return false; + if (!canUsePureP2PBrowser(targetWindow)) return false; const preference = getPureP2PBrowserPreference(targetWindow); if (preference !== undefined) return preference; - return true; + return BROWSER_PURE_P2P_DEFAULT_ENABLED; }; export const configureP2PBrowserPkcOptions = (targetWindow: P2PBrowserConfigWindow = window) => { if (!shouldUsePureP2PBrowser(targetWindow)) { + if (canUsePureP2PBrowser(targetWindow)) { + targetWindow.defaultPkcOptions = { + ...targetWindow.defaultPkcOptions, + ...getBrowserGatewayPkcOptions(), + }; + } + return false; } diff --git a/src/lib/p2p-runtime.ts b/src/lib/p2p-runtime.ts index c2483f18..fab7e0cc 100644 --- a/src/lib/p2p-runtime.ts +++ b/src/lib/p2p-runtime.ts @@ -1,4 +1,4 @@ -import { getBrowserGatewayPkcOptions, getBrowserPureP2PPkcOptions, isElectronRuntime, shouldUsePureP2PBrowser } from './p2p-browser-config'; +import { canUsePureP2PBrowser, getBrowserGatewayPkcOptions, getBrowserPureP2PPkcOptions, isElectronRuntime, shouldUsePureP2PBrowser } from './p2p-browser-config'; export const P2P_STATS_SECTION_ID = 'p2p-stats-settings'; @@ -46,10 +46,13 @@ export const getP2PRuntimeMode = (account?: unknown, targetWindow: Window = wind return null; }; -export const canConfigureBrowserPureP2P = (targetWindow: Window = window) => !isElectronRuntime(targetWindow); +export const canConfigureBrowserPureP2P = (targetWindow: Window = window) => canUsePureP2PBrowser(targetWindow); -export const shouldShowP2PSettingsSection = (account?: unknown, targetWindow: Window = window) => - getP2PRuntimeMode(account, targetWindow) !== null || (canConfigureBrowserPureP2P(targetWindow) && isBrowserPureP2PEnabled(account, targetWindow)); +export const shouldShowP2PSettingsSection = (account?: unknown, targetWindow: Window = window) => { + const runtimeMode = getP2PRuntimeMode(account, targetWindow); + if (runtimeMode === 'electron-kubo-rpc' || runtimeMode === 'full-node-rpc') return true; + return canConfigureBrowserPureP2P(targetWindow) && (runtimeMode === 'browser-libp2p' || isBrowserPureP2PEnabled(account, targetWindow)); +}; export const isBrowserPureP2PEnabled = (account?: unknown, targetWindow: Window = window) => { if (!canConfigureBrowserPureP2P(targetWindow)) return false; @@ -63,8 +66,18 @@ export const getBrowserPureP2PAccountOptions = (account?: unknown) => ({ pkcRpcClientsOptions: undefined, }); -export const getBrowserGatewayAccountOptions = (account?: unknown) => ({ - ...toAccountShape(account)?.pkcOptions, - ...getBrowserGatewayPkcOptions(), - pkcRpcClientsOptions: undefined, -}); +export const getBrowserGatewayAccountOptions = (account?: unknown) => { + const protocolOptions = toAccountShape(account)?.pkcOptions; + const gatewayOptions = getBrowserGatewayPkcOptions(); + + return { + ...protocolOptions, + ...gatewayOptions, + ipfsGatewayUrls: hasArrayItems(protocolOptions?.ipfsGatewayUrls) ? protocolOptions?.ipfsGatewayUrls : gatewayOptions.ipfsGatewayUrls, + pubsubKuboRpcClientsOptions: hasArrayItems(protocolOptions?.pubsubKuboRpcClientsOptions) + ? protocolOptions?.pubsubKuboRpcClientsOptions + : gatewayOptions.pubsubKuboRpcClientsOptions, + httpRoutersOptions: hasArrayItems(protocolOptions?.httpRoutersOptions) ? protocolOptions?.httpRoutersOptions : gatewayOptions.httpRoutersOptions, + pkcRpcClientsOptions: undefined, + }; +}; diff --git a/src/views/rules/__tests__/rules.test.tsx b/src/views/rules/__tests__/rules.test.tsx index b064f81d..19bafddd 100644 --- a/src/views/rules/__tests__/rules.test.tsx +++ b/src/views/rules/__tests__/rules.test.tsx @@ -227,7 +227,7 @@ describe('Rules', () => { expect(scrollIntoViewMock).toHaveBeenCalled(); }); - it('shows a friendly loading state string while a board over P2P is downloading', async () => { + it('shows a friendly loading state string while a board is downloading from peers', async () => { testState.communities = { 'custom-board.eth': { state: 'fetching-ipns', diff --git a/yarn.lock b/yarn.lock index cd3b352d..106b04d8 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.18" + "@bitsocial/bitsocial-react-hooks": "npm:0.1.17" "@capacitor/android": "npm:7.4.5" "@capacitor/app": "npm:7.0.1" "@capacitor/browser": "npm:7.0.5" @@ -25,7 +25,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": "patch:@pkcprotocol/pkc-js@npm%3A0.0.47#~/.yarn/patches/@pkcprotocol-pkc-js-npm-0.0.47-e2131d72c8.patch" "@react-spring/web": "npm:10.0.3" "@reforged/maker-appimage": "npm:5.1.1" "@ruffle-rs/ruffle": "npm:0.2.0" @@ -1579,12 +1579,12 @@ __metadata: languageName: node linkType: hard -"@bitsocial/bitsocial-react-hooks@npm:0.1.18": - version: 0.1.18 - resolution: "@bitsocial/bitsocial-react-hooks@npm:0.1.18" +"@bitsocial/bitsocial-react-hooks@npm:0.1.17": + version: 0.1.17 + resolution: "@bitsocial/bitsocial-react-hooks@npm:0.1.17" dependencies: "@bitsocial/bso-resolver": "npm:0.0.8" - "@pkcprotocol/pkc-js": "npm:0.0.48" + "@pkcprotocol/pkc-js": "npm:0.0.47" "@pkcprotocol/pkc-logger": "npm:0.1.0" assert: "npm:2.0.0" ethers: "npm:5.8.0" @@ -1600,7 +1600,7 @@ __metadata: zustand: "npm:4.0.0" peerDependencies: react: ">=16.8" - checksum: 10c0/1137edf780d2532d72fac35c55eaed69863a88a98878c77de04d207bb8ea654337a3600d08f074153810c8031a3171b30775ecc7b892ba7573f11010a1145388 + checksum: 10c0/3b652a2b6171b70c0e2047a32088cebf05f99b87c008d87218f144d766e076c47c564f5f70ff160e55d7aae83f94a367998e511e05b716523e71a0ada52fe6a2 languageName: node linkType: hard @@ -3193,26 +3193,7 @@ __metadata: languageName: node linkType: hard -"@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": +"@helia/delegated-routing-v1-http-api-client@npm:6.0.1, @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: @@ -3698,16 +3679,6 @@ __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" @@ -3728,7 +3699,7 @@ __metadata: languageName: node linkType: hard -"@ipld/dag-json@npm:^10.2.5": +"@ipld/dag-json@npm:^10.0.0, @ipld/dag-json@npm:^10.2.5": version: 10.2.6 resolution: "@ipld/dag-json@npm:10.2.6" dependencies: @@ -3748,16 +3719,6 @@ __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" @@ -3767,15 +3728,6 @@ __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" @@ -3963,18 +3915,18 @@ __metadata: languageName: node linkType: hard -"@libp2p/crypto@npm:5.1.19": - version: 5.1.19 - resolution: "@libp2p/crypto@npm:5.1.19" +"@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" dependencies: - "@libp2p/interface": "npm:^3.2.3" + "@libp2p/interface": "npm:^3.2.2" "@noble/curves": "npm:^2.0.1" "@noble/hashes": "npm:^2.0.1" - multiformats: "npm:^14.0.0" + multiformats: "npm:^13.4.0" protons-runtime: "npm:^6.0.1" uint8arraylist: "npm:^2.4.8" - uint8arrays: "npm:^6.1.1" - checksum: 10c0/bac81169a941cce3eb047cdc15d2510ebcce1524788b2caa580e3b002bd5ef61478144c90c728a14fc7126626995caa7655e65d1ee0d89d0168379ab1d103da0 + uint8arrays: "npm:^5.1.0" + checksum: 10c0/fa63aa9a7260f9841d477daee82677d3cd0a6f287ac77bacb1131998764ac76f819b7b453985579ef1f9c14115f435ceb23f316388491650a54c00c52a1c143b languageName: node linkType: hard @@ -3993,18 +3945,18 @@ __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" +"@libp2p/crypto@npm:^5.1.10, @libp2p/crypto@npm:^5.1.20": + version: 5.1.20 + resolution: "@libp2p/crypto@npm:5.1.20" dependencies: - "@libp2p/interface": "npm:^3.2.2" + "@libp2p/interface": "npm:^3.2.4" "@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 + 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 @@ -4023,21 +3975,6 @@ __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" @@ -4054,22 +3991,7 @@ __metadata: languageName: node linkType: hard -"@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": +"@libp2p/fetch@npm:4.1.3, @libp2p/fetch@npm:^4.1.0": version: 4.1.3 resolution: "@libp2p/fetch@npm:4.1.3" dependencies: @@ -4084,25 +4006,25 @@ __metadata: languageName: node linkType: hard -"@libp2p/gossipsub@npm:16.0.2": - version: 16.0.2 - resolution: "@libp2p/gossipsub@npm:16.0.2" +"@libp2p/gossipsub@npm:15.0.23": + version: 15.0.23 + resolution: "@libp2p/gossipsub@npm:15.0.23" 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/utils": "npm:^7.2.2" - "@multiformats/multiaddr": "npm:^13.0.3" + "@libp2p/crypto": "npm:^5.1.18" + "@libp2p/interface": "npm:^3.2.2" + "@libp2p/interface-internal": "npm:^3.1.5" + "@libp2p/peer-id": "npm:^6.0.9" + "@libp2p/utils": "npm:^7.2.1" + "@multiformats/multiaddr": "npm:^13.0.1" denque: "npm:^2.1.0" it-length-prefixed: "npm:^10.0.1" it-pipe: "npm:^3.0.1" it-pushable: "npm:^3.2.3" - multiformats: "npm:^14.0.0" + multiformats: "npm:^13.0.1" protons-runtime: "npm:^6.0.1" uint8arraylist: "npm:^2.4.8" - uint8arrays: "npm:^6.1.1" - checksum: 10c0/35126ec978686ad19a83b59379c48583a2b4a8ca5d4537f358f54fe12c53850c8c2151468cab7002c47a6336f7719dc6f629bc4e18db46ecbe7a8b025e23ddb5 + uint8arrays: "npm:^5.0.1" + checksum: 10c0/1bf9caeea0ae27813e6c22ce855d372d96bea2ac8599dca40722b727a40f6dc1625b07a26de82a62e1bfdc6de820fb13ba8c392d8a06aa93f7d6669bf192bbd3 languageName: node linkType: hard @@ -4204,29 +4126,7 @@ __metadata: languageName: node linkType: hard -"@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": +"@libp2p/identify@npm:4.1.3, @libp2p/identify@npm:^4.1.0": version: 4.1.3 resolution: "@libp2p/identify@npm:4.1.3" dependencies: @@ -4284,29 +4184,17 @@ __metadata: languageName: node linkType: hard -"@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" +"@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" dependencies: "@multiformats/dns": "npm:^1.0.6" - "@multiformats/multiaddr": "npm:^13.0.3" + "@multiformats/multiaddr": "npm:^13.0.1" main-event: "npm:^1.0.1" - multiformats: "npm:^14.0.0" + multiformats: "npm:^13.4.0" progress-events: "npm:^1.1.0" uint8arraylist: "npm:^2.4.8" - checksum: 10c0/a38dc3acc79156a2bf0695acb4772b640a5361b6abb3266e340e1e35b0067a7168ac0d8d884506caf2f576277e081987990b1119c01990496b613aef137b0c06 + checksum: 10c0/e3393a2739d5c7ff65a818adc9ab599d0c59e093a0e8024f67853b9219f365623e36b2218786c475ba53cd2d8b17bd72c6b2ec46c53d89590549bf2185d10bb5 languageName: node linkType: hard @@ -4324,21 +4212,7 @@ __metadata: languageName: node linkType: hard -"@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": +"@libp2p/interface@npm:^3.2.4": version: 3.2.4 resolution: "@libp2p/interface@npm:3.2.4" dependencies: @@ -4462,7 +4336,7 @@ __metadata: languageName: node linkType: hard -"@libp2p/logger@npm:^6.2.8, @libp2p/logger@npm:^6.2.9": +"@libp2p/logger@npm:^6.2.9": version: 6.2.9 resolution: "@libp2p/logger@npm:6.2.9" dependencies: @@ -4519,16 +4393,24 @@ __metadata: languageName: node linkType: hard -"@libp2p/multistream-select@npm:^7.0.21": - version: 7.0.22 - resolution: "@libp2p/multistream-select@npm:7.0.22" +"@libp2p/noise@npm:^1.0.0": + version: 1.0.1 + resolution: "@libp2p/noise@npm:1.0.1" 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 + "@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 @@ -4568,27 +4450,15 @@ __metadata: languageName: node linkType: hard -"@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" +"@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" dependencies: - "@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 + "@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 @@ -4604,7 +4474,7 @@ __metadata: languageName: node linkType: hard -"@libp2p/peer-id@npm:^6.0.10, @libp2p/peer-id@npm:^6.0.11": +"@libp2p/peer-id@npm:^6.0.1": version: 6.0.11 resolution: "@libp2p/peer-id@npm:6.0.11" dependencies: @@ -4616,18 +4486,6 @@ __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" @@ -4640,23 +4498,6 @@ __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" @@ -4696,28 +4537,6 @@ __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" @@ -4846,6 +4665,38 @@ __metadata: languageName: node linkType: hard +"@libp2p/utils@npm:^7.0.1": + 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" @@ -4911,38 +4762,6 @@ __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" @@ -5003,6 +4822,25 @@ __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" @@ -5060,19 +4898,7 @@ __metadata: languageName: node linkType: hard -"@multiformats/multiaddr@npm:13.0.3, @multiformats/multiaddr@npm:^13.0.3": - version: 13.0.3 - resolution: "@multiformats/multiaddr@npm:13.0.3" - dependencies: - "@chainsafe/is-ip": "npm:^2.0.1" - multiformats: "npm:^14.0.0" - uint8-varint: "npm:^3.0.0" - uint8arrays: "npm:^6.1.1" - checksum: 10c0/00266178623c4b98a6ce9e25e4a657c6c17a70e3111b337a91762aa756ad9ce905670024ac3f1fa46533792ff1d95e2c95dc7739ae916263daa8b5a344c2cd80 - languageName: node - linkType: hard - -"@multiformats/multiaddr@npm:^13.0.0, @multiformats/multiaddr@npm:^13.0.1": +"@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: @@ -5084,6 +4910,18 @@ __metadata: languageName: node linkType: hard +"@multiformats/multiaddr@npm:^13.0.3": + version: 13.0.3 + resolution: "@multiformats/multiaddr@npm:13.0.3" + dependencies: + "@chainsafe/is-ip": "npm:^2.0.1" + multiformats: "npm:^14.0.0" + uint8-varint: "npm:^3.0.0" + uint8arrays: "npm:^6.1.1" + checksum: 10c0/00266178623c4b98a6ce9e25e4a657c6c17a70e3111b337a91762aa756ad9ce905670024ac3f1fa46533792ff1d95e2c95dc7739ae916263daa8b5a344c2cd80 + languageName: node + linkType: hard + "@multiformats/murmur3@npm:^2.1.8": version: 2.2.0 resolution: "@multiformats/murmur3@npm:2.2.0" @@ -5102,15 +4940,6 @@ __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" @@ -6375,28 +6204,28 @@ __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.47": + version: 0.0.47 + resolution: "@pkcprotocol/pkc-js@npm:0.0.47" 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/delegated-routing-v1-http-api-client": "npm:6.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" + "@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" "@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" + blockstore-core: "npm:6.1.2" buffer: "npm:6.0.3" cbor: "npm:10.0.11" cborg: "npm:4.5.8" @@ -6404,19 +6233,19 @@ __metadata: 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" + ipfs-unixfs-importer: "npm:16.1.4" + ipns: "npm:10.1.3" 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" + kubo-rpc-client: "npm:6.1.0" + libp2p: "npm:3.2.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" + multiformats: "npm:13.4.2" node-forge: "npm:1.4.0" open-graph-scraper: "npm:6.11.0" p-limit: "npm:7.3.0" @@ -6432,37 +6261,37 @@ __metadata: 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" + uint8arrays: "npm:5.1.0" undici: "npm:7.24.7" uuid: "npm:13.0.0" ws: "npm:8.20.0" zod: "npm:4.3.6" - checksum: 10c0/eaf9c5e2a83cc6cc108bbb239f6f0461a63830ddb003ebce6aea5423478a24fbc3de9cc1560e97969af41cedcfa05167f04ccae19bd379629e2dfc1b9c5f0836 + checksum: 10c0/41013c495b3480ff664511798e045d59f729e6a341e7ea268acd819975c0e038252ab27af85108c568e9cb6a6e54c696abf663b2e91210a136c52a0f97af86cd 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=670aff" +"@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=df4e0a" 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/delegated-routing-v1-http-api-client": "npm:6.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" + "@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" "@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" + blockstore-core: "npm:6.1.2" buffer: "npm:6.0.3" cbor: "npm:10.0.11" cborg: "npm:4.5.8" @@ -6470,19 +6299,19 @@ __metadata: 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" + ipfs-unixfs-importer: "npm:16.1.4" + ipns: "npm:10.1.3" 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" + kubo-rpc-client: "npm:6.1.0" + libp2p: "npm:3.2.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" + multiformats: "npm:13.4.2" node-forge: "npm:1.4.0" open-graph-scraper: "npm:6.11.0" p-limit: "npm:7.3.0" @@ -6498,12 +6327,12 @@ __metadata: 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" + uint8arrays: "npm:5.1.0" undici: "npm:7.24.7" uuid: "npm:13.0.0" ws: "npm:8.20.0" zod: "npm:4.3.6" - checksum: 10c0/980473995eb0efb90f9bcf8908232f9e0e9ffb9d38c4a1d98cb2596ad0d260a569e7308e281f631c2ddbc8620eac87aca6aaed16ea2e48245da6cb983bf7c322 + checksum: 10c0/461adae6d52600e9ab77b4733026d9addb9d24dc9a1dbd4744eac797eb265d6aee62d05251fe56e7c5dde12bc3d9717c0ad598d439a396675f1d3496cd31dc96 languageName: node linkType: hard @@ -8347,32 +8176,16 @@ __metadata: languageName: node linkType: hard -"blob-to-it@npm:^3.0.0": - version: 3.0.0 - resolution: "blob-to-it@npm:3.0.0" +"blob-to-it@npm:^2.0.5": + version: 2.0.10 + resolution: "blob-to-it@npm:2.0.10" dependencies: browser-readablestream-to-it: "npm:^2.0.0" - checksum: 10c0/1bfc924ed5c40dd223d6d6fed1b48aec2d461def6901ee9fefc18ac5ce1e0503bc560eb12df313a32c973172ab92b400821c59553f19169646d9136f3c67153d + checksum: 10c0/9c133ab2dc077a3bc89e61947c5375732fedadd8a417d95073e2029ae2000b3818ac806af897297446a41330a97c1d38d6d320c09bf1980ef5fbc903c3f964dc languageName: node linkType: hard -"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": +"blockstore-core@npm:6.1.2, blockstore-core@npm:^6.1.2": version: 6.1.2 resolution: "blockstore-core@npm:6.1.2" dependencies: @@ -8506,13 +8319,6 @@ __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" @@ -12016,16 +11822,6 @@ __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" @@ -12630,17 +12426,7 @@ __metadata: languageName: node linkType: hard -"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": +"interface-datastore@npm:^10.0.1": version: 10.0.1 resolution: "interface-datastore@npm:10.0.1" dependencies: @@ -12780,26 +12566,27 @@ __metadata: languageName: node linkType: hard -"ipfs-unixfs-importer@npm:17.0.1": - version: 17.0.1 - resolution: "ipfs-unixfs-importer@npm:17.0.1" +"ipfs-unixfs-importer@npm:16.1.4": + version: 16.1.4 + resolution: "ipfs-unixfs-importer@npm:16.1.4" dependencies: - "@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" + "@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" rabin-wasm: "npm:^0.1.5" - uint8arraylist: "npm:^3.0.2" - uint8arrays: "npm:^6.1.1" - checksum: 10c0/6c4198491175ace215d5896701ac2c5a67064775d2e0f8af09bf1e8fc7a2efc716fc1c7b7466e9bcd0da2915fac199a5495389edab5e26b13c82a2639c16bef3 + uint8arraylist: "npm:^2.4.8" + uint8arrays: "npm:^5.1.0" + checksum: 10c0/4083010ee815ea6c90fad52f419f1f11a3f5f0eb3283ea6b3fc817d5ff390062ddd8700b8951f0845ec4607b73130f53d813b646bcb505b8b2ec7c207427f067 languageName: node linkType: hard @@ -12869,16 +12656,6 @@ __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" @@ -12904,25 +12681,7 @@ __metadata: languageName: node linkType: hard -"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": +"ipns@npm:10.1.3, ipns@npm:^10.0.2": version: 10.1.3 resolution: "ipns@npm:10.1.3" dependencies: @@ -13609,13 +13368,6 @@ __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" @@ -13778,7 +13530,7 @@ __metadata: languageName: node linkType: hard -"it-map@npm:^3.1.5, it-map@npm:^3.1.6": +"it-map@npm:^3.1.5": version: 3.1.6 resolution: "it-map@npm:3.1.6" dependencies: @@ -13814,15 +13566,6 @@ __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" @@ -13832,15 +13575,6 @@ __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" @@ -14349,12 +14083,12 @@ __metadata: languageName: node linkType: hard -"kubo-rpc-client@npm:7.1.0": - version: 7.1.0 - resolution: "kubo-rpc-client@npm:7.1.0" +"kubo-rpc-client@npm:6.1.0": + version: 6.1.0 + resolution: "kubo-rpc-client@npm:6.1.0" dependencies: - "@ipld/dag-cbor": "npm:^10.0.1" - "@ipld/dag-json": "npm:^11.0.0" + "@ipld/dag-cbor": "npm:^9.0.0" + "@ipld/dag-json": "npm:^10.0.0" "@ipld/dag-pb": "npm:^4.0.0" "@libp2p/crypto": "npm:^5.0.0" "@libp2p/interface": "npm:^3.0.2" @@ -14363,12 +14097,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:^3.0.0" + blob-to-it: "npm:^2.0.5" 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:^13.0.0" + ipfs-unixfs: "npm:^12.0.0" iso-url: "npm:^1.2.1" it-all: "npm:^3.0.4" it-first: "npm:^3.0.4" @@ -14378,13 +14112,13 @@ __metadata: it-peekable: "npm:^3.0.3" it-to-stream: "npm:^1.0.0" merge-options: "npm:^3.0.4" - multiformats: "npm:^14.0.0" + multiformats: "npm:^13.1.0" nanoid: "npm:^5.0.7" parse-duration: "npm:^2.1.2" stream-to-it: "npm:^1.0.1" - uint8arrays: "npm:^6.1.1" + uint8arrays: "npm:^5.0.3" wherearewe: "npm:^2.0.1" - checksum: 10c0/aa85ea094a65086f5cde4e38456712935cd9a95eba42b0327ff677b4d691a97c588a4a633891abc21c78721c737015fa5709a964a39e54f6d607cb4d06ab39f9 + checksum: 10c0/31620eaf9f0d22caa32fcb58d674746b08fe656c5a1b4e116bc1834842878fd935e22229cb356a1266501accdc385441f37fec80839c086dac8bfcdac36e63f1 languageName: node linkType: hard @@ -14411,42 +14145,7 @@ __metadata: languageName: node linkType: hard -"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": +"libp2p@npm:3.2.3, libp2p@npm:^3.2.0": version: 3.2.3 resolution: "libp2p@npm:3.2.3" dependencies: @@ -15651,14 +15350,14 @@ __metadata: languageName: node linkType: hard -"multiformats@npm:13.4.2, multiformats@npm:^13.0.0, multiformats@npm:^13.1.0, multiformats@npm:^13.2.2, multiformats@npm:^13.3.1, multiformats@npm:^13.3.6, multiformats@npm:^13.3.7, multiformats@npm:^13.4.0, multiformats@npm:^13.4.1, multiformats@npm:^13.4.2": +"multiformats@npm:13.4.2, multiformats@npm:^13.0.0, multiformats@npm:^13.0.1, multiformats@npm:^13.1.0, multiformats@npm:^13.2.2, multiformats@npm:^13.3.1, multiformats@npm:^13.3.6, multiformats@npm:^13.3.7, multiformats@npm:^13.4.0, multiformats@npm:^13.4.1, multiformats@npm:^13.4.2": version: 13.4.2 resolution: "multiformats@npm:13.4.2" checksum: 10c0/b7be09b8bf8198d601c8f8c9a358b9a6aca5a14d61239a84f88d8266322e4e7c3015fe7bdf88b589b9993a4abb752defabb932719d1b457a53277e264c4cee11 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 @@ -20280,12 +19979,12 @@ __metadata: languageName: node linkType: hard -"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" +"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" dependencies: - multiformats: "npm:^14.0.0" - checksum: 10c0/5814d69e5fada5d169ee8e88c750ad4ddf57a6ee86a7fe9534b86b55a147fab8e0b75d66cb1d2a1c6c2350526edd03e57a3ab5f0a0977c8ac13a6ce350c7b958 + multiformats: "npm:^13.0.0" + checksum: 10c0/e7587f97d03a17a608becd01b3ca52aa6db43e7ee6156c18b278c715a62f4f9e62ef2fe9432a3cd02791b6222a17578476a20b8e3ea37dd3b5ce454c6a8782a9 languageName: node linkType: hard @@ -20298,12 +19997,12 @@ __metadata: languageName: node linkType: hard -"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" +"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