diff --git a/package.json b/package.json index aba9c0c1bc..a4de628b02 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "async": "^2.6.2", "bl": "^3.0.0", "bs58": "^4.0.1", + "callbackify": "^1.1.0", "chai": "^4.2.0", "cids": "~0.7.1", "concat-stream": "^2.0.0", @@ -50,7 +51,7 @@ "ipfs-unixfs": "~0.1.16", "ipfs-utils": "~0.1.0", "ipld-dag-cbor": "~0.15.0", - "ipld-dag-pb": "~0.17.3", + "ipld-dag-pb": "^0.18.1", "is-ipfs": "~0.6.1", "is-plain-object": "^3.0.0", "it-pushable": "^1.2.1", diff --git a/src/dag/get.js b/src/dag/get.js index 9453445df9..9a03ffccad 100644 --- a/src/dag/get.js +++ b/src/dag/get.js @@ -49,7 +49,7 @@ module.exports = (createCommon, options) => { const someData = Buffer.from('some other data') try { - pbNode = DAGNode.create(someData) + pbNode = new DAGNode(someData) } catch (err) { return cb(err) } @@ -62,7 +62,7 @@ module.exports = (createCommon, options) => { }, (cb) => { try { - nodePb = DAGNode.create(Buffer.from('I am inside a Protobuf')) + nodePb = new DAGNode(Buffer.from('I am inside a Protobuf')) } catch (err) { return cb(err) } @@ -70,7 +70,7 @@ module.exports = (createCommon, options) => { cb() }, (cb) => { - dagPB.util.cid(dagPB.util.serialize(nodePb)) + dagPB.util.cid(nodePb.serialize()) .then(cid => { cidPb = cid cb() @@ -139,7 +139,7 @@ module.exports = (createCommon, options) => { const node = result.value - dagPB.util.cid(dagPB.util.serialize(node)) + dagPB.util.cid(node.serialize()) .then(cid => { expect(cid).to.eql(cidPb) done() @@ -232,7 +232,7 @@ module.exports = (createCommon, options) => { it('should get a node added as CIDv0 with a CIDv1', done => { const input = Buffer.from(`TEST${Date.now()}`) - const node = dagPB.DAGNode.create(input) + const node = new DAGNode(input) ipfs.dag.put(node, { format: 'dag-pb', hashAlg: 'sha2-256' }, (err, cid) => { expect(err).to.not.exist() diff --git a/src/dag/put.js b/src/dag/put.js index f368b140b3..f1532cbdf4 100644 --- a/src/dag/put.js +++ b/src/dag/put.js @@ -42,7 +42,7 @@ module.exports = (createCommon, options) => { const someData = Buffer.from('some data') try { - pbNode = DAGNode.create(someData) + pbNode = new DAGNode(someData) } catch (err) { return done(err) } diff --git a/src/dag/tree.js b/src/dag/tree.js index 997f5c3407..4eb6ccf2be 100644 --- a/src/dag/tree.js +++ b/src/dag/tree.js @@ -4,6 +4,7 @@ const series = require('async/series') const eachSeries = require('async/eachSeries') const dagPB = require('ipld-dag-pb') +const DAGNode = dagPB.DAGNode const dagCBOR = require('ipld-dag-cbor') const { spawnNodeWithId } = require('../utils/spawn') const { getDescribe, getIt, expect } = require('../utils/mocha') @@ -43,7 +44,7 @@ module.exports = (createCommon, options) => { series([ (cb) => { try { - nodePb = dagPB.DAGNode.create(Buffer.from('I am inside a Protobuf')) + nodePb = new DAGNode(Buffer.from('I am inside a Protobuf')) } catch (err) { return cb(err) } @@ -51,7 +52,7 @@ module.exports = (createCommon, options) => { cb() }, (cb) => { - dagPB.util.cid(dagPB.util.serialize(nodePb)) + dagPB.util.cid(nodePb.serialize()) .then(cid => { cidPb = cid cb() diff --git a/src/object/get.js b/src/object/get.js index ae8509ed61..a9f422ceb9 100644 --- a/src/object/get.js +++ b/src/object/get.js @@ -67,7 +67,7 @@ module.exports = (createCommon, options) => { // because js-ipfs-api can't infer if the // returned Data is Buffer or String if (typeof node.Data === 'string') { - node = DAGNode.create(Buffer.from(node.Data), node.Links, node.size) + node = new DAGNode(Buffer.from(node.Data), node.Links, node.size) } node2 = node @@ -96,7 +96,7 @@ module.exports = (createCommon, options) => { // because js-ipfs-api can't infer if the // returned Data is Buffer or String if (typeof node2.Data === 'string') { - node2 = DAGNode.create(Buffer.from(node2.Data), node2.Links, node2.size) + node2 = new DAGNode(Buffer.from(node2.Data), node2.Links, node2.size) } expect(node1.Data).to.deep.equal(node2.Data) @@ -133,7 +133,7 @@ module.exports = (createCommon, options) => { // because js-ipfs-api can't infer if the // returned Data is Buffer or String if (typeof node.Data === 'string') { - node = DAGNode.create(Buffer.from(node.Data), node.Links, node.size) + node = new DAGNode(Buffer.from(node.Data), node.Links, node.size) } node2 = node @@ -161,7 +161,7 @@ module.exports = (createCommon, options) => { // because js-ipfs-api can't infer if the // returned Data is Buffer or String if (typeof node2.Data === 'string') { - node2 = DAGNode.create(Buffer.from(node2.Data), node2.Links, node2.size) + node2 = new DAGNode(Buffer.from(node2.Data), node2.Links, node2.size) } expect(node1.Data).to.deep.equal(node2.Data) @@ -178,7 +178,7 @@ module.exports = (createCommon, options) => { series([ (cb) => { try { - node1a = DAGNode.create(Buffer.from('Some data 1')) + node1a = new DAGNode(Buffer.from('Some data 1')) } catch (err) { return cb(err) } @@ -187,7 +187,7 @@ module.exports = (createCommon, options) => { }, (cb) => { try { - node2 = DAGNode.create(Buffer.from('Some data 2')) + node2 = new DAGNode(Buffer.from('Some data 2')) } catch (err) { return cb(err) } @@ -196,13 +196,13 @@ module.exports = (createCommon, options) => { }, (cb) => { asDAGLink(node2, 'some-link', (err, link) => { - expect(err).to.not.exist() + if (err) { + return cb(err) + } - DAGNode.addLink(node1a, link) - .then(node => { - node1b = node - cb() - }, cb) + node1b = new DAGNode(node1a.Data, node1a.Links.concat(link)) + + cb() }) }, (cb) => { @@ -219,7 +219,7 @@ module.exports = (createCommon, options) => { // because js-ipfs-api can't infer if the // returned Data is Buffer or String if (typeof node.Data === 'string') { - node = DAGNode.create(Buffer.from(node.Data), node.Links, node.size) + node = new DAGNode(Buffer.from(node.Data), node.Links, node.size) } node1c = node @@ -262,7 +262,7 @@ module.exports = (createCommon, options) => { // because js-ipfs-api can't infer if the // returned Data is Buffer or String if (typeof node.Data === 'string') { - node = DAGNode.create(Buffer.from(node.Data), node.Links, node.size) + node = new DAGNode(Buffer.from(node.Data), node.Links, node.size) } node1b = node cb() @@ -305,7 +305,7 @@ module.exports = (createCommon, options) => { // because js-ipfs-api can't infer if the // returned Data is Buffer or String if (typeof node.Data === 'string') { - node = DAGNode.create(Buffer.from(node.Data), node.Links, node.size) + node = new DAGNode(Buffer.from(node.Data), node.Links, node.size) } node1b = node cb() diff --git a/src/object/links.js b/src/object/links.js index 6cac58f96e..899fa8a74b 100644 --- a/src/object/links.js +++ b/src/object/links.js @@ -80,7 +80,7 @@ module.exports = (createCommon, options) => { series([ (cb) => { try { - node1a = DAGNode.create(Buffer.from('Some data 1')) + node1a = new DAGNode(Buffer.from('Some data 1')) } catch (err) { return cb(err) } @@ -89,7 +89,7 @@ module.exports = (createCommon, options) => { }, (cb) => { try { - node2 = DAGNode.create(Buffer.from('Some data 2')) + node2 = new DAGNode(Buffer.from('Some data 2')) } catch (err) { return cb(err) } @@ -100,22 +100,19 @@ module.exports = (createCommon, options) => { asDAGLink(node2, 'some-link', (err, link) => { expect(err).to.not.exist() - DAGNode.addLink(node1a, link) - .then(node => { - node1b = node + node1b = new DAGNode(node1a.Data, node1a.Links.concat(link)) - return dagPB.util.cid(dagPB.util.serialize(node1b)) - }) - .then(cid => { - node1bCid = cid - - cb() - }) - .catch(cb) + cb() }) }, (cb) => { - ipfs.object.put(node1b, cb) + ipfs.object.put(node1b, (err, cid) => { + expect(err).to.not.exist() + + node1bCid = cid + + cb() + }) }, (cb) => { ipfs.object.links(node1bCid, (err, links) => { diff --git a/src/object/patch/add-link.js b/src/object/patch/add-link.js index d944b9efa8..c5589a9598 100644 --- a/src/object/patch/add-link.js +++ b/src/object/patch/add-link.js @@ -8,7 +8,8 @@ const { getDescribe, getIt, expect } = require('../../utils/mocha') const { calculateCid, createDAGNode, - addLinkToDAGNode + addLinkToDAGNode, + asDAGLink } = require('../utils') module.exports = (createCommon, options) => { @@ -44,7 +45,6 @@ module.exports = (createCommon, options) => { let node1a let node1b let node2 - let node2Cid const obj = { Data: Buffer.from('patch test object'), @@ -61,7 +61,7 @@ module.exports = (createCommon, options) => { }, (cb) => { try { - node1a = DAGNode.create(obj.Data, obj.Links) + node1a = new DAGNode(obj.Data, obj.Links) } catch (err) { return cb(err) } @@ -70,7 +70,7 @@ module.exports = (createCommon, options) => { }, (cb) => { try { - node2 = DAGNode.create(Buffer.from('some other node')) + node2 = new DAGNode(Buffer.from('some other node')) } catch (err) { return cb(err) } @@ -82,29 +82,27 @@ module.exports = (createCommon, options) => { // timeout. Reason: it needs the node to get its size ipfs.object.put(node2, (err, cid) => { expect(err).to.not.exist() - node2Cid = cid + + cb() + }) + }, + (cb) => { + asDAGLink(node2, 'link-to-node', (err, link) => { + expect(err).to.not.exist() + + node1b = new DAGNode(node1a.Data, node1a.Links.concat(link)) + cb() }) }, (cb) => { - DAGNode.addLink(node1a, { - name: 'link-to-node', - size: node2.toJSON().size, - cid: node2Cid + ipfs.object.put(node1b, (err, cid) => { + expect(err).to.not.exist() + + node1bCid = cid + + cb() }) - .then(node => { - node1b = node - - return dagPB.util.cid(dagPB.util.serialize(node), { - cidVersion: 0 - }) - }) - .then(cid => { - node1bCid = cid - - cb() - }) - .catch(cb) }, (cb) => { ipfs.object.patch.addLink(testNodeCid, node1b.Links[0], (err, cid) => { diff --git a/src/object/put.js b/src/object/put.js index d550a0d104..f838a87810 100644 --- a/src/object/put.js +++ b/src/object/put.js @@ -100,7 +100,7 @@ module.exports = (createCommon, options) => { series([ (cb) => { try { - node = DAGNode.create(Buffer.from(hat())) + node = new DAGNode(Buffer.from(hat())) } catch (err) { return cb(err) } @@ -109,7 +109,7 @@ module.exports = (createCommon, options) => { }, (cb) => { try { - serialized = dagPB.util.serialize(node) + serialized = node.serialize() } catch (err) { return cb(err) } @@ -146,7 +146,7 @@ module.exports = (createCommon, options) => { }) it('should put a Protobuf DAGNode', (done) => { - const dNode = DAGNode.create(Buffer.from(hat())) + const dNode = new DAGNode(Buffer.from(hat())) ipfs.object.put(dNode, (err, cid) => { expect(err).to.not.exist() @@ -175,7 +175,7 @@ module.exports = (createCommon, options) => { series([ (cb) => { try { - node1a = DAGNode.create(Buffer.from(hat())) + node1a = new DAGNode(Buffer.from(hat())) } catch (err) { return cb(err) } @@ -184,7 +184,7 @@ module.exports = (createCommon, options) => { }, (cb) => { try { - node2 = DAGNode.create(Buffer.from(hat())) + node2 = new DAGNode(Buffer.from(hat())) } catch (err) { return cb(err) } @@ -195,11 +195,9 @@ module.exports = (createCommon, options) => { asDAGLink(node2, 'some-link', (err, link) => { expect(err).to.not.exist() - DAGNode.addLink(node1a, link) - .then(node => { - node1b = node - cb() - }, cb) + node1b = new DAGNode(node1a.Data, node1a.Links.concat(link)) + + cb() }) }, (cb) => { diff --git a/src/object/stat.js b/src/object/stat.js index 0559ad104a..c71e086620 100644 --- a/src/object/stat.js +++ b/src/object/stat.js @@ -115,7 +115,7 @@ module.exports = (createCommon, options) => { series([ (cb) => { try { - node1a = DAGNode.create(Buffer.from('Some data 1')) + node1a = new DAGNode(Buffer.from('Some data 1')) } catch (err) { return cb(err) } @@ -124,7 +124,7 @@ module.exports = (createCommon, options) => { }, (cb) => { try { - node2 = DAGNode.create(Buffer.from('Some data 2')) + node2 = new DAGNode(Buffer.from('Some data 2')) } catch (err) { return cb(err) } @@ -135,11 +135,9 @@ module.exports = (createCommon, options) => { asDAGLink(node2, 'some-link', (err, link) => { expect(err).to.not.exist() - DAGNode.addLink(node1a, link) - .then(node => { - node1b = node - cb() - }, cb) + node1b = new DAGNode(node1a.Data, node1a.Links.concat(link)) + + cb() }) }, (cb) => { diff --git a/src/object/utils.js b/src/object/utils.js index ead57bdad1..db206d9853 100644 --- a/src/object/utils.js +++ b/src/object/utils.js @@ -1,23 +1,22 @@ 'use strict' const { promisify } = require('es6-promisify') +const callbackify = require('callbackify') const dagPB = require('ipld-dag-pb') const { DAGNode, DAGLink } = dagPB -const calculateCid = promisify((node, cb) => { - dagPB.util.cid(dagPB.util.serialize(node), { +const calculateCid = callbackify((node) => { + return dagPB.util.cid(node.serialize(), { cidVersion: 0 }) - .then(cid => cb(null, cid), cb) }) const createDAGNode = promisify((data, links, cb) => { - cb(null, DAGNode.create(data, links)) + cb(null, new DAGNode(data, links)) }) const addLinkToDAGNode = promisify((parent, link, cb) => { - DAGNode.addLink(parent, link) - .then(node => cb(null, node), cb) + cb(null, new DAGNode(parent.Data, parent.Links.concat(link))) }) const asDAGLink = promisify((node, name, cb) => { diff --git a/src/repo/gc.js b/src/repo/gc.js index 2305e0b608..e2d0158b01 100644 --- a/src/repo/gc.js +++ b/src/repo/gc.js @@ -184,7 +184,7 @@ module.exports = (createCommon, options) => { await ipfs.pin.rm(dataHash) // Create a link to the data from an object - const obj = await DAGNode.create(Buffer.from('fruit'), [{ + const obj = await new DAGNode(Buffer.from('fruit'), [{ Name: 'p', Hash: dataHash, TSize: addRes[0].size