mirror of
https://github.com/orbitdb/orbitdb.git
synced 2025-06-06 06:06:38 +00:00
feat: Default Libp2p config for node.js and browser peers.
This commit is contained in:
parent
c0fe90744c
commit
d718a66818
70
src/config/libp2p/index.js
Normal file
70
src/config/libp2p/index.js
Normal file
@ -0,0 +1,70 @@
|
||||
import { identifyService } 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'
|
||||
|
||||
/**
|
||||
* A basic Libp2p configuration for node servers.
|
||||
*/
|
||||
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: () => {
|
||||
return false
|
||||
}
|
||||
},
|
||||
services: {
|
||||
identify: identifyService(),
|
||||
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: () => {
|
||||
return false
|
||||
}
|
||||
},
|
||||
services: {
|
||||
identify: identifyService(),
|
||||
pubsub: gossipsub({ allowPublishToZeroPeers: true })
|
||||
}
|
||||
}
|
@ -41,3 +41,8 @@ export {
|
||||
MemoryStorage,
|
||||
ComposedStorage
|
||||
} from './storage/index.js'
|
||||
|
||||
export {
|
||||
DefaultLibp2pOptions,
|
||||
DefaultLibp2pBrowserOptions
|
||||
} from './config/libp2p/index.js'
|
||||
|
@ -5,5 +5,6 @@
|
||||
"exit": true,
|
||||
"bail": false,
|
||||
"slow": 1000,
|
||||
"exclude": ["test/browser/**/*.js", "test/utils/relay.js"]
|
||||
"exclude": ["test/browser/**/*.js", "test/utils/relay.js"],
|
||||
"timeout": 30000
|
||||
}
|
@ -3,7 +3,6 @@ import { rimraf } from 'rimraf'
|
||||
import Keystore from '../../src/key-store.js'
|
||||
import Identities from '../../src/identities/identities.js'
|
||||
import IPFSAccessController from '../../src/access-controllers/ipfs.js'
|
||||
import config from '../config.js'
|
||||
import connectPeers from '../utils/connect-nodes.js'
|
||||
import createHelia from '../utils/create-helia.js'
|
||||
|
||||
@ -11,8 +10,6 @@ describe('IPFSAccessController', function () {
|
||||
const dbPath1 = './orbitdb/tests/ipfs-access-controller/1'
|
||||
const dbPath2 = './orbitdb/tests/ipfs-access-controller/2'
|
||||
|
||||
this.timeout(config.timeout)
|
||||
|
||||
let ipfs1, ipfs2
|
||||
let keystore1, keystore2
|
||||
let identities1, identities2
|
||||
|
@ -4,7 +4,6 @@ import OrbitDB from '../../src/orbitdb.js'
|
||||
import Keystore from '../../src/key-store.js'
|
||||
import Identities from '../../src/identities/identities.js'
|
||||
import OrbitDBAccessController from '../../src/access-controllers/orbitdb.js'
|
||||
import config from '../config.js'
|
||||
import connectPeers from '../utils/connect-nodes.js'
|
||||
import createHelia from '../utils/create-helia.js'
|
||||
|
||||
@ -12,8 +11,6 @@ const dbPath1 = './orbitdb/tests/orbitdb-access-controller/1'
|
||||
const dbPath2 = './orbitdb/tests/orbitdb-access-controller/2'
|
||||
|
||||
describe('OrbitDBAccessController', function () {
|
||||
this.timeout(config.timeout)
|
||||
|
||||
let ipfs1, ipfs2
|
||||
let orbitdb1, orbitdb2
|
||||
let identities1, identities2, testIdentity1, testIdentity2
|
||||
|
@ -1,80 +0,0 @@
|
||||
const isBrowser = () => typeof window !== 'undefined'
|
||||
|
||||
const swarmAddress = isBrowser()
|
||||
? ['/ip4/0.0.0.0/tcp/12345/ws/p2p-webrtc-star']
|
||||
: ['/ip4/0.0.0.0/tcp/0']
|
||||
|
||||
export default {
|
||||
timeout: 30000,
|
||||
defaultIpfsConfig: {
|
||||
preload: {
|
||||
enabled: false
|
||||
},
|
||||
EXPERIMENTAL: {
|
||||
pubsub: true
|
||||
},
|
||||
config: {
|
||||
Addresses: {
|
||||
API: '/ip4/127.0.0.1/tcp/0',
|
||||
Swarm: swarmAddress,
|
||||
Gateway: '/ip4/0.0.0.0/tcp/0'
|
||||
},
|
||||
Bootstrap: [],
|
||||
Discovery: {
|
||||
MDNS: {
|
||||
Enabled: true,
|
||||
Interval: 0
|
||||
},
|
||||
webRTCStar: {
|
||||
Enabled: false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
daemon1: {
|
||||
silent: true,
|
||||
EXPERIMENTAL: {
|
||||
pubsub: true
|
||||
},
|
||||
config: {
|
||||
Addresses: {
|
||||
API: '/ip4/127.0.0.1/tcp/0',
|
||||
Swarm: isBrowser() ? ['/ip4/0.0.0.0/tcp/12345/ws/p2p-webrtc-star'] : ['/ip4/0.0.0.0/tcp/0'],
|
||||
Gateway: '/ip4/0.0.0.0/tcp/0'
|
||||
},
|
||||
Bootstrap: [],
|
||||
Discovery: {
|
||||
MDNS: {
|
||||
Enabled: true,
|
||||
Interval: 0
|
||||
},
|
||||
webRTCStar: {
|
||||
Enabled: false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
daemon2: {
|
||||
silent: true,
|
||||
EXPERIMENTAL: {
|
||||
pubsub: true
|
||||
},
|
||||
config: {
|
||||
Addresses: {
|
||||
API: '/ip4/127.0.0.1/tcp/0',
|
||||
Swarm: isBrowser() ? ['/ip4/0.0.0.0/tcp/12345/ws/p2p-webrtc-star'] : ['/ip4/0.0.0.0/tcp/0'],
|
||||
Gateway: '/ip4/0.0.0.0/tcp/0'
|
||||
},
|
||||
Bootstrap: [],
|
||||
Discovery: {
|
||||
MDNS: {
|
||||
Enabled: true,
|
||||
Interval: 0
|
||||
},
|
||||
webRTCStar: {
|
||||
Enabled: false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -13,8 +13,6 @@ import createHelia from './utils/create-helia.js'
|
||||
const keysPath = './testkeys'
|
||||
|
||||
describe('Database - Replication', function () {
|
||||
this.timeout(60000)
|
||||
|
||||
let ipfs1, ipfs2
|
||||
let keystore
|
||||
let identities
|
||||
|
@ -2,7 +2,6 @@ import { strictEqual } from 'assert'
|
||||
import { rimraf } from 'rimraf'
|
||||
import { copy } from 'fs-extra'
|
||||
import { Log, Entry, Identities, KeyStore, IPFSBlockStorage } from '../../src/index.js'
|
||||
import config from '../config.js'
|
||||
import testKeysPath from '../fixtures/test-keys-path.js'
|
||||
import connectPeers from '../utils/connect-nodes.js'
|
||||
import waitForPeers from '../utils/wait-for-peers.js'
|
||||
@ -11,8 +10,6 @@ import createHelia from '../utils/create-helia.js'
|
||||
const keysPath = './testkeys'
|
||||
|
||||
describe('Log - Replication', function () {
|
||||
this.timeout(60000)
|
||||
|
||||
let ipfs1, ipfs2
|
||||
let id1, id2
|
||||
let keystore
|
||||
@ -139,7 +136,7 @@ describe('Log - Replication', function () {
|
||||
})
|
||||
}
|
||||
|
||||
await whileProcessingMessages(config.timeout)
|
||||
await whileProcessingMessages(this.timeout())
|
||||
|
||||
const result = await Log(testIdentity1, { logId, entryStorage: storage1 })
|
||||
await result.join(log1)
|
||||
|
@ -1,48 +1,13 @@
|
||||
import { createHelia } from 'helia'
|
||||
import { createLibp2p } from 'libp2p'
|
||||
import { identifyService } 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'
|
||||
import { DefaultLibp2pOptions, DefaultLibp2pBrowserOptions } from '../../src/index.js'
|
||||
|
||||
const isBrowser = () => typeof window !== 'undefined'
|
||||
|
||||
export default async () => {
|
||||
const options = {
|
||||
addresses: {
|
||||
listen: [
|
||||
isBrowser() ? '/webrtc' : '/ip4/0.0.0.0/tcp/0/ws'
|
||||
]
|
||||
},
|
||||
transports: [
|
||||
webSockets({
|
||||
filter: all
|
||||
}),
|
||||
webRTC(),
|
||||
circuitRelayTransport({
|
||||
discoverRelays: 1
|
||||
})
|
||||
],
|
||||
connectionEncryption: [noise()],
|
||||
streamMuxers: [
|
||||
yamux()
|
||||
],
|
||||
connectionGater: {
|
||||
denyDialMultiaddr: () => {
|
||||
return false
|
||||
}
|
||||
},
|
||||
services: {
|
||||
identify: identifyService(),
|
||||
pubsub: gossipsub({ allowPublishToZeroPeers: true })
|
||||
}
|
||||
}
|
||||
const options = isBrowser() ? DefaultLibp2pBrowserOptions : DefaultLibp2pOptions
|
||||
|
||||
const libp2p = await createLibp2p(options)
|
||||
const libp2p = await createLibp2p({ ...options })
|
||||
|
||||
return createHelia({ libp2p })
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user