diff --git a/src/config/libp2p/index.js b/src/config/libp2p/index.js deleted file mode 100644 index d52c20f..0000000 --- a/src/config/libp2p/index.js +++ /dev/null @@ -1,62 +0,0 @@ -import { identify } from '@libp2p/identify' -import { webSockets } from '@libp2p/websockets' -import { webRTC } from '@libp2p/webrtc' -import { all } from '@libp2p/websockets/filters' -import { noise } from '@chainsafe/libp2p-noise' -import { yamux } from '@chainsafe/libp2p-yamux' -import { gossipsub } from '@chainsafe/libp2p-gossipsub' -import { circuitRelayTransport } from '@libp2p/circuit-relay-v2' - -/** - * A basic Libp2p configuration for Node.js nodes. - */ -export const DefaultLibp2pOptions = { - addresses: { - listen: ['/ip4/0.0.0.0/tcp/0/ws'] - }, - transports: [ - webSockets({ - filter: all - }), - webRTC(), - circuitRelayTransport({ - discoverRelays: 1 - }) - ], - connectionEncryption: [noise()], - streamMuxers: [yamux()], - connectionGater: { - denyDialMultiaddr: () => false - }, - services: { - identify: identify(), - pubsub: gossipsub({ allowPublishToZeroPeers: true }) - } -} - -/** - * A basic Libp2p configuration for browser nodes. - */ -export const DefaultLibp2pBrowserOptions = { - addresses: { - listen: ['/webrtc'] - }, - transports: [ - webSockets({ - filter: all - }), - webRTC(), - circuitRelayTransport({ - discoverRelays: 1 - }) - ], - connectionEncryption: [noise()], - streamMuxers: [yamux()], - connectionGater: { - denyDialMultiaddr: () => false - }, - services: { - identify: identify(), - pubsub: gossipsub({ allowPublishToZeroPeers: true }) - } -} diff --git a/src/index.js b/src/index.js index da4d111..ec833ca 100644 --- a/src/index.js +++ b/src/index.js @@ -41,10 +41,3 @@ export { MemoryStorage, ComposedStorage } from './storage/index.js' - -export { - DefaultLibp2pOptions, - DefaultLibp2pBrowserOptions -} from './config/libp2p/index.js' - -export { startOrbitDB } from './utils/index.js' diff --git a/src/utils/index.js b/src/utils/index.js index 67737d6..a6ac16f 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -1,6 +1,5 @@ import createId from './create-id.js' -import startOrbitDB from './start.js' + export { - createId, - startOrbitDB + createId } diff --git a/src/utils/start.js b/src/utils/start.js deleted file mode 100644 index 948d22c..0000000 --- a/src/utils/start.js +++ /dev/null @@ -1,30 +0,0 @@ -import { createHelia } from 'helia' -import { createLibp2p } from 'libp2p' -import { LevelBlockstore } from 'blockstore-level' -import { bitswap } from '@helia/block-brokers' -import createOrbitDB from '../orbitdb.js' -import { DefaultLibp2pOptions, DefaultLibp2pBrowserOptions } from '../config/libp2p/index.js' - -const isBrowser = () => typeof window !== 'undefined' - -/** - * Start a new OrbitDB peer with a preconfigured Helia instance. - * @function startOrbitDB - * @param {Object} params One or more parameters for configuring OrbitDB. - * @param {IPFS} params.ipfs An IPFS instance. - * @param {module:Identity|Object} [params.identity] An identity instance or an object containing an Identity Provider instance and any additional params required to create the identity using the specified provider. - * @param {Function} [params.identity.provider] An initialized identity provider. - * @param {module:Identities} [params.identities] An Identities system instance. - * @param {string} [params.directory] A location for storing OrbitDB data. - * @return {module:OrbitDB~OrbitDB} An instance of OrbitDB. - * @throws "IPFS instance is required argument" if no IPFS instance is provided. - * @instance - */ -export default async ({ id, identity, identities, directory } = {}) => { - const options = isBrowser() ? DefaultLibp2pBrowserOptions : DefaultLibp2pOptions - const libp2p = await createLibp2p({ ...options }) - directory = directory || '.' - const blockstore = new LevelBlockstore(`${directory}/ipfs/blocks`) - const ipfs = await createHelia({ libp2p, blockstore, blockBrokers: [bitswap()] }) - return createOrbitDB({ ipfs, id, identity, identities, directory }) -} diff --git a/test/orbitdb-start.test.js b/test/orbitdb-start.test.js deleted file mode 100644 index 6abb1be..0000000 --- a/test/orbitdb-start.test.js +++ /dev/null @@ -1,17 +0,0 @@ -import { startOrbitDB } from '../src/index.js' -import { deepStrictEqual } from 'assert' -import { rimraf } from 'rimraf' - -describe('Starting OrbitDB', function () { - it('starts OrbitDB with a preconfigured Helia instance', async () => { - const orbitdb = await startOrbitDB({ directory: './ipfs' }) - const db1 = await orbitdb.open('db1') - await db1.add('hello world!') - - deepStrictEqual((await db1.all()).map(e => e.value), ['hello world!']) - await orbitdb.stop() - await orbitdb.ipfs.stop() - await rimraf('./orbitdb') - await rimraf('./ipfs') - }) -}) diff --git a/test/utils/create-helia.js b/test/utils/create-helia.js index 088226f..a34ad7e 100644 --- a/test/utils/create-helia.js +++ b/test/utils/create-helia.js @@ -3,12 +3,70 @@ import { bitswap } from '@helia/block-brokers' import { createLibp2p } from 'libp2p' import { MemoryBlockstore } from 'blockstore-core' import { LevelBlockstore } from 'blockstore-level' -import { DefaultLibp2pOptions, DefaultLibp2pBrowserOptions } from '../../src/index.js' +import { identify } from '@libp2p/identify' +import { webSockets } from '@libp2p/websockets' +import { webRTC } from '@libp2p/webrtc' +import { all } from '@libp2p/websockets/filters' +import { noise } from '@chainsafe/libp2p-noise' +import { yamux } from '@chainsafe/libp2p-yamux' +import { gossipsub } from '@chainsafe/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'] + }, + transports: [ + webSockets({ + filter: all + }), + webRTC(), + circuitRelayTransport({ + discoverRelays: 1 + }) + ], + connectionEncryption: [noise()], + streamMuxers: [yamux()], + connectionGater: { + denyDialMultiaddr: () => false + }, + services: { + identify: identify(), + pubsub: gossipsub({ allowPublishToZeroPeers: true }) + } +} + +/** + * A basic Libp2p configuration for browser nodes. + */ +const Libp2pBrowserOptions = { + addresses: { + listen: ['/webrtc'] + }, + transports: [ + webSockets({ + filter: all + }), + webRTC(), + circuitRelayTransport({ + discoverRelays: 1 + }) + ], + connectionEncryption: [noise()], + streamMuxers: [yamux()], + connectionGater: { + denyDialMultiaddr: () => false + }, + services: { + identify: identify(), + pubsub: gossipsub({ allowPublishToZeroPeers: true }) + } +} + export default async ({ directory } = {}) => { - const options = isBrowser() ? DefaultLibp2pBrowserOptions : DefaultLibp2pOptions + const options = isBrowser() ? Libp2pBrowserOptions : Libp2pOptions const libp2p = await createLibp2p({ ...options })