Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    y-ipfs-connectorpublic

    y-ipfs-connector

    IPFS Connector for Yjs

    (Demo video)

    Use it!

    Retrieve this with npm:

    $ npm install y-ipfs-connector --save

    Example

    // you need to create and inject a IPFS object
    const IPFS = require('ipfs')
     
    const Y = require('yjs')
    require('y-ipfs-connector')(Y)
     
    // other Yjs deps:
    require('y-memory')(Y)
    require('y-array')(Y)
    require('y-text')(Y)
     
     
    // create IPFS node
    const ipfs = new IPFS({
      EXPERIMENTAL: {
        pubsub: true // need this to work
      }
    })
     
    Y({
      db: {
        name: 'memory'
      },
      connector: {
        name: 'ipfs', // use the IPFS connector
        ipfs: ipfs, // inject the IPFS object
        room: 'Textarea-example-dev'
      },
      sourceDir: '/bower_components', // location of the y-* modules
      share: {
        textarea: 'Text' // y.share.textarea is of type Y.Text
      }
    }).then(function (y) {
      // bind the textarea to a shared text element
      y.share.textarea.bind(document.getElementById('textfield'))
    }

    Signature

    options.sign

    You can sign messages. For that, you have to provide a sign option, which needs to be a function that accepts a message (string) and calls back with a buffer containing the signature for it (string):

    Y({
      connector: {
        name: 'ipfs',
        sign: (m, callback) => { ... }
        // ...
      }
      // ...
    })

    Using this, messages will be sent alongside with a signature, which can be validated.

    options.verifySignature

    You can also verify a signature for a given message by providing a function like this:

    Y({
      connector: {
        name: 'ipfs',
        verifySignature: (peer, message, signature, callback) => { ... }
        // ...
      }
      // ...
    })

    options.encode

    Optional function that receives the message and encodes it. Useful if you want to encrypt the content before sending.

    options.encode = (message) => {
      return encrypt(message)
    }

    options.decode

    Optional function that receives the message and decodes it. Useful if you want to decrypt the content after receiving.

    options.decode = (message) => {
      return decrypt(message)
    }

    Debug

    Activate y-ipfs-connector on debug to see log messages.

    License

    MIT

    Contribute

    Feel free to join in. All welcome. Open an issue!

    This repository falls under the IPFS Code of Conduct.

    License

    MIT

    Keywords

    none

    install

    npm i y-ipfs-connector

    Downloadslast 7 days

    34

    version

    2.2.0

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar