ipld-graph-builder

1.3.9 • Public • Published

SYNOPSIS

NPM Package Coverage Status Greenkeeper badge

js-standard-style

This provides an efficent way to build and manipulate IPLD DAGs as JSON. This is accomplished by only producing merkle roots when flushing the DAG. If any object has a "/" property, its value will be replaced with the merkle hash of that value when flushed. This allows you to build object anyway you like.

LEAD MAINTAINER

wanderer

INSTALL

npm install ipld-graph-builder

USAGE

const IPFS = require('ipfs')
const Graph = require('ipld-graph-builder')
const ipfs = new IPFS()
 
ipfs.on('start', () => {
  const graph = new Graph(ipfs.dag)
  const a = {
    some: {
      thing: 'nested'
    }
  }
  const b = {
    lol: 1
  }
 
  graph.set(a, 'some/thing/else', b).then(result => {
    // set "patches" together two objects
    console.log(JSON.stringify(result))
    > {
    >  "some": {
    >    "thing": {
    >      "else": {
    >        "/": {
    >          "lol": 1
    >        }
    >      }
    >    }
    >  }
    >}
 
 
    // flush replaces the links with merkle links, resulting in a single root hash
    graph.flush(result).then((result) => {
      console.log(result)
      > { '/': 'zdpuAqnGt7k49xSfawetvZXSLm4b1vvkSMnDrk4NFqnCCnW5V' }
 
      // taverse paths through merkle links given a starting vertex
      graph.get(result, 'some/thing/else').then(result2 => {
        console.log(result2)
        > { lol: 1 }
      })
    })
  })
})

Additonally you can define the encoding of each link by adding the follow options property to un-merklized links. options will be used as the options argument for DAG.put. For Example:

{
  'my-link': {
    '/': {
      'some': 'stuff here'
    },
    'options': {
      format: 'dag-cbor',
      hashAlg: 'sha2-256'
     }
  }
}

API

'./docs/'

TESTS

npm run tests

LICENSE

MPL-2.0

Readme

Keywords

Package Sidebar

Install

npm i ipld-graph-builder

Weekly Downloads

5

Version

1.3.9

License

MPL-2.0

Unpacked Size

15 kB

Total Files

6

Last publish

Collaborators

  • null_radix