text: 'use strict'
  
  const Libp2p = require('libp2p')
  const Websockets = require('libp2p-websockets')
  const { NOISE } = require('libp2p-noise')
  const MPLEX = require('libp2p-mplex')
  
  async function main () {
    const node = await Libp2p.create({
      modules: {
        transport: [Websockets],
        connEncryption: [NOISE],
        streamMuxer: [MPLEX]
      },
      addresses: {
        listen: ['/ip4/0.0.0.0/tcp/0/ws']
        // TODO check "What is next?" section
        // announce: ['/dns4/auto-relay.libp2p.io/tcp/443/wss/p2p/QmWDn2LY8nannvSWJzruUYoLZ4vV83vfCBwd8DipvdgQc3']
      },
      config: {
        relay: {
          enabled: true,
          hop: {
            enabled: true
          },
          advertise: {
            enabled: true,
          }
        }
      }
    })
  
    await node.start()
  
    console.log(`Node started with id ${node.peerId.toB58String()}`)
    console.log('Listening on:')
    node.multiaddrs.forEach((ma) => console.log(`${ma.toString()}/p2p/${node.peerId.toB58String()}`))
  }
  
  main()
  