git ssb

0+

wanderer🌟 / js-dfinity-radix-tree



Tree: 8b3b6ad9bccab11efb8cdb0f5a71e03b011e8ee0

Files: 8b3b6ad9bccab11efb8cdb0f5a71e03b011e8ee0 / dag.js

881 bytesRaw
1const crypto = require('crypto')
2const DAG = require('ipld-graph-builder/dag')
3const treeNode = require('./treeNode.js')
4const HASH_LEN = 20
5
6module.exports = class TreeDAG extends DAG {
7 put (val, options) {
8 const encoded = treeNode.encode(val)
9 const key = crypto.createHash('sha256').update(encoded).digest().slice(0, HASH_LEN)
10 return new Promise((resolve, reject) => {
11 this._dag.put(key, encoded.toString('hex'), () => {
12 resolve(key)
13 })
14 })
15 }
16
17 get (link) {
18 return new Promise((resolve, reject) => {
19 this._dag.get(link, (err, val) => {
20 if (err) {
21 reject(err)
22 } else {
23 val = Buffer.from(val, 'hex')
24 const decoded = treeNode.decode(val)
25 resolve(decoded)
26 }
27 })
28 })
29 }
30
31 isValidLink (link) {
32 return Buffer.isBuffer(link) && link.length === HASH_LEN
33 }
34}
35

Built with git-ssb-web