Files: 8b3b6ad9bccab11efb8cdb0f5a71e03b011e8ee0 / dag.js
881 bytesRaw
1 | const crypto = require('crypto') |
2 | const DAG = require('ipld-graph-builder/dag') |
3 | const treeNode = require('./treeNode.js') |
4 | const HASH_LEN = 20 |
5 | |
6 | module.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