orbitdb/test/utils/create-helia.js
2023-11-09 23:26:33 +00:00

49 lines
1.2 KiB
JavaScript

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'
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 libp2p = await createLibp2p(options)
return createHelia({ libp2p })
}