@orbitdb/feed-db
Version:
Feed database type for orbit-db.
60 lines • 2.05 kB
JavaScript
import { createHelia } from "helia";
import { bitswap } from "@helia/block-brokers";
import { createLibp2p } from "libp2p";
import { MemoryBlockstore } from "blockstore-core";
import { LevelBlockstore } from "blockstore-level";
import { identify } from "@libp2p/identify";
import { webSockets } from "@libp2p/websockets";
import { webRTC } from "@libp2p/webrtc";
import { noise } from "@chainsafe/libp2p-noise";
import { yamux } from "@chainsafe/libp2p-yamux";
import { gossipsub } from "@libp2p/gossipsub";
import { circuitRelayTransport } from "@libp2p/circuit-relay-v2";
const isBrowser = () => typeof window !== "undefined";
const Libp2pOptions = {
addresses: {
listen: ["/ip4/0.0.0.0/tcp/0/ws", "/p2p-circuit"],
},
transports: [webSockets(), webRTC(), circuitRelayTransport()],
connectionEncryption: [noise()],
streamMuxers: [yamux()],
connectionGater: {
denyDialMultiaddr: () => false,
},
services: {
identify: identify(),
pubsub: gossipsub({ allowPublishToZeroTopicPeers: true }),
},
};
/**
* A basic Libp2p configuration for browser nodes.
*/
const Libp2pBrowserOptions = {
addresses: {
listen: ["/webrtc", "/p2p-circuit"],
},
transports: [webSockets(), webRTC(), circuitRelayTransport()],
connectionEncryption: [noise()],
streamMuxers: [yamux()],
connectionGater: {
denyDialMultiaddr: () => false,
},
services: {
identify: identify(),
pubsub: gossipsub({ allowPublishToZeroTopicPeers: true }),
},
};
export const createTestHelia = async ({ directory, } = {}) => {
const options = isBrowser() ? Libp2pBrowserOptions : Libp2pOptions;
const libp2p = await createLibp2p({ ...options });
const blockstore = directory
? new LevelBlockstore(`${directory}/blocks`)
: new MemoryBlockstore();
const heliaOptions = {
blockstore,
libp2p,
blockBrokers: [bitswap()],
};
return (await createHelia({ ...heliaOptions }));
};
//# sourceMappingURL=config.js.map