dep: update helia and add delegatedPeerRouting back

This commit is contained in:
Derrick Hammer 2023-10-15 15:55:41 -04:00
parent d8899221d2
commit 1a544d7c2d
Signed by: pcfreak30
GPG Key ID: C997C339BE476FF2
5 changed files with 1612 additions and 766 deletions

2326
npm-shrinkwrap.json generated

File diff suppressed because it is too large Load Diff

View File

@ -31,7 +31,7 @@
"blockstore-idb": "^1.1.1", "blockstore-idb": "^1.1.1",
"datastore-core": "^9.2.0", "datastore-core": "^9.2.0",
"datastore-idb": "^2.1.2", "datastore-idb": "^2.1.2",
"helia": "1.3.5", "helia": "^2.0.3",
"ipfs-http-client": "^60.0.1", "ipfs-http-client": "^60.0.1",
"multiformats": "^12.0.1", "multiformats": "^12.0.1",
"p-defer": "^4.0.0", "p-defer": "^4.0.0",
@ -46,12 +46,12 @@
"rollup-plugin-ignore-import": "^1.3.2" "rollup-plugin-ignore-import": "^1.3.2"
}, },
"overrides": { "overrides": {
"libp2p": "^0.45", "libp2p": "^0.46.6",
"@libp2p/kad-dht": "^9.3.8", "@libp2p/kad-dht": "^10.0.2",
"@chainsafe/libp2p-noise": "^12.0.0", "@chainsafe/libp2p-noise": "^12.0.0",
"@libp2p/mplex": "^8.0.3", "@libp2p/mplex": "^9.0.2",
"@libp2p/bootstrap": "^8.0.0", "@libp2p/bootstrap": "^9.0.2",
"@chainsafe/libp2p-gossipsub": "^8.0.0", "@chainsafe/libp2p-gossipsub": "^10.0.0",
"@libp2p/interface-datastore": "^8.0.0" "@libp2p/interface-datastore": "^8.0.0"
} }
} }

View File

@ -1,3 +1,5 @@
import type { BootstrapInit } from "@libp2p/bootstrap";
export const bootstrapConfig = { export const bootstrapConfig = {
list: [ list: [
"/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN", "/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
@ -54,4 +56,4 @@ export const bootstrapConfig = {
"/ip6/2a01:4ff:f0:3764::1/tcp/4001/p2p/12D3KooWSDj6JM2JmoHwE9AUUwqAFUEg9ndd3pMA8aF2bkYckZfo", "/ip6/2a01:4ff:f0:3764::1/tcp/4001/p2p/12D3KooWSDj6JM2JmoHwE9AUUwqAFUEg9ndd3pMA8aF2bkYckZfo",
"/ip6/2a01:4ff:f0:3764::1/udp/4001/quic/p2p/12D3KooWSDj6JM2JmoHwE9AUUwqAFUEg9ndd3pMA8aF2bkYckZfo", "/ip6/2a01:4ff:f0:3764::1/udp/4001/quic/p2p/12D3KooWSDj6JM2JmoHwE9AUUwqAFUEg9ndd3pMA8aF2bkYckZfo",
], ],
}; } as BootstrapInit;

View File

@ -18,7 +18,14 @@ import { reframeContentRouting } from "@libp2p/reframe-content-routing";
import { multiaddr } from "@multiformats/multiaddr"; import { multiaddr } from "@multiformats/multiaddr";
import { create as createIpfsHttpClient } from "ipfs-http-client"; import { create as createIpfsHttpClient } from "ipfs-http-client";
import { delegatedContentRouting } from "@libp2p/delegated-content-routing"; import { delegatedContentRouting } from "@libp2p/delegated-content-routing";
import { delegatedPeerRouting } from "@libp2p/delegated-peer-routing";
import { circuitRelayTransport } from "libp2p/circuit-relay";
import { DELEGATE_LIST } from "./constants.js"; import { DELEGATE_LIST } from "./constants.js";
import { webSockets } from "@libp2p/websockets";
import { webTransport } from "@libp2p/webtransport";
import { dcutrService } from "libp2p/dcutr";
// @ts-ignore
import type { DefaultLibp2pServices } from "helia/dist/src/utils/libp2p-defaults.browser.js";
function getDelegateConfig(): any { function getDelegateConfig(): any {
const delegateString = const delegateString =
@ -34,19 +41,22 @@ function getDelegateConfig(): any {
}; };
} }
export function libp2pConfig(proxy: MultiSocketProxy): Libp2pOptions<{ export function libp2pConfig(
dht: DualKadDHT; proxy: MultiSocketProxy,
pubsub: PubSub; ): Libp2pOptions<DefaultLibp2pServices> {
identify: unknown;
autoNAT: unknown;
}> {
const client = createIpfsHttpClient(getDelegateConfig()); const client = createIpfsHttpClient(getDelegateConfig());
return { return {
addresses: { addresses: {
listen: [], listen: [],
}, },
transports: [hypercoreTransport({ proxy })], transports: [
circuitRelayTransport({
discoverRelays: 1,
}),
webTransport(),
webSockets(),
],
connectionEncryption: [noise()], connectionEncryption: [noise()],
streamMuxers: [yamux(), mplex()], streamMuxers: [yamux(), mplex()],
peerDiscovery: [bootstrap(bootstrapConfig)], peerDiscovery: [bootstrap(bootstrapConfig)],
@ -55,10 +65,12 @@ export function libp2pConfig(proxy: MultiSocketProxy): Libp2pOptions<{
ipniContentRouting("https://cid.contact"), ipniContentRouting("https://cid.contact"),
reframeContentRouting("https://cid.contact/reframe"), reframeContentRouting("https://cid.contact/reframe"),
], ],
peerRouters: [delegatedPeerRouting(client)],
services: { services: {
identify: identifyService(), identify: identifyService(),
autoNAT: autoNATService(), autoNAT: autoNATService(),
pubsub: gossipsub(), pubsub: gossipsub(),
dcutr: dcutrService(),
dht: kadDHT({ dht: kadDHT({
clientMode: true, clientMode: true,
validators: { validators: {

View File

@ -1,6 +1,4 @@
import { createHelia } from "helia"; import { createHelia } from "helia";
// @ts-ignore
import Hyperswarm from "hyperswarm";
import { MultiSocketProxy } from "@lumeweb/libhyperproxy"; import { MultiSocketProxy } from "@lumeweb/libhyperproxy";
import { UnixFS, unixfs } from "@helia/unixfs"; import { UnixFS, unixfs } from "@helia/unixfs";
import { PROTOCOL } from "./constants.js"; import { PROTOCOL } from "./constants.js";
@ -11,9 +9,8 @@ import {
} from "@lumeweb/libkernel/module"; } from "@lumeweb/libkernel/module";
import { createClient } from "@lumeweb/kernel-swarm-client"; import { createClient } from "@lumeweb/kernel-swarm-client";
import { ipns, IPNS } from "@helia/ipns"; import { ipns, IPNS } from "@helia/ipns";
import { dht, pubsub } from "@helia/ipns/routing"; import { dht } from "@helia/ipns/routing";
// @ts-ignore // @ts-ignore
import { gossipsub } from "@chainsafe/libp2p-gossipsub";
import { CID } from "multiformats/cid"; import { CID } from "multiformats/cid";
import { bases } from "multiformats/basics"; import { bases } from "multiformats/basics";
import { substr } from "runes2"; import { substr } from "runes2";
@ -27,6 +24,7 @@ import { Helia } from "@helia/interface";
import type { Components } from "libp2p/src/components.js"; import type { Components } from "libp2p/src/components.js";
import { libp2pConfig } from "./config.js"; import { libp2pConfig } from "./config.js";
import { createClient as createNetworkRegistryClient } from "@lumeweb/kernel-network-registry-client"; import { createClient as createNetworkRegistryClient } from "@lumeweb/kernel-network-registry-client";
import { Libp2p } from "@libp2p/interface";
const basesByPrefix: { [prefix: string]: MultibaseDecoder<any> } = Object.keys( const basesByPrefix: { [prefix: string]: MultibaseDecoder<any> } = Object.keys(
bases, bases,
@ -50,7 +48,7 @@ let swarm;
let proxy: MultiSocketProxy; let proxy: MultiSocketProxy;
let fs: UnixFS; let fs: UnixFS;
let IPNS: IPNS; let IPNS: IPNS;
let ipfs: Helia; let ipfs: Helia<Libp2p<any>>;
// @ts-ignore // @ts-ignore
BigInt.prototype.toJSON = function () { BigInt.prototype.toJSON = function () {
@ -106,7 +104,7 @@ async function handlePresentKey() {
await swarm.ready(); await swarm.ready();
// @ts-ignore // @ts-ignore
fs = unixfs(ipfs); fs = unixfs(ipfs);
IPNS = ipns(ipfs as any, [dht(ipfs), pubsub(ipfs as any)]); IPNS = ipns(ipfs as any, [dht(ipfs)]);
ipfs.libp2p.addEventListener("peer:connect", () => { ipfs.libp2p.addEventListener("peer:connect", () => {
if (ipfs.libp2p.getPeers().length > 0) { if (ipfs.libp2p.getPeers().length > 0) {