ipfs-merkle-dag
v0.7.3
Published
A JavaScript implementations of the IPFS MerkleDAG implementations (protobufs)
Downloads
385
Readme
js-ipfs-merkle-dag
JavaScript Implementation of the DAGService and DAGNode data structure
Table of Contents
Install
$ npm i ipfs-merkle-dag
Architecture
┌────────────────────┐
│ DAGService │
└────────────────────┘
│
▼
┌────────────────────┐
│ BlockService │
└────────────────────┘
DAGService - The DAGService offers an interface to interact directly with a MerkleDAG object (composed by one or more DAGNodes that are linked), using the BlockService to store and fetch the DAGNodes as it needs them
A DAGNode and DAGLink are data structures made available on this module.
Usage
const ipfsMDAG = require('ipfs-merkle-dag')
// then, to access each of the components
ipfsMDAG.DAGService
ipfsMDAG.DAGNode
ipfsMDAG.DAGLink
API
DAGNode Class
Create a new DAGNode
var node = new ipfsMDAG.DAGNode([<data>, <[links]>])
addNodeLink
creates a link on node A to node B by using node B to get its multihash
addRawLink
creates a link on node A to node B by using directly node B multihash
updateNodeLink
updates a link on the node. caution this method returns a copy of the MerkleDAG node
removeNodeLink
removes a link from the node by name
removeNodeLinkByHash
removes a link from the node by the hash of the linked node
copy
creates a copy of the MerkleDAG Node
size
(property) size of the node, in bytes
links
(property) an array of
DAGLink
s belonging to the node
multihash
returns the multihash (default: sha2-256)
marshal
returns a protobuf serialized version, compatible with go-ipfs MerkleDAG
unMarshal
deserializes a node encoded using protobuf
getPBNode
used internally
makeLink
used internally
DAGLink Class
Create a new DAGLink
var link = new ipfsMDAG.DAGLink(<name>, <size>, <hash>)
DAGService
put
stores the node
putStream
stores nodes using a writable pull-stream
get
fetches a node by its multihash
getStream
fetches a node as a pull-stream
getRecursive
fetches a node and all of its links (if possible)
getRecursiveStream
fetches a node and all of its links (if possible) as pull-stream
remove
deletes a node
License
MIT © IPFS