diff --git a/package.json b/package.json index eb6b9c7638..a4201f262d 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ }, "homepage": "https://github.com/ipfs/js-ipfs#readme", "devDependencies": { - "aegir": "^9.4.0", + "aegir": "^10.0.0", "buffer-loader": "0.0.1", "chai": "^3.5.0", "delay": "^1.3.1", @@ -71,10 +71,10 @@ "execa": "^0.6.0", "expose-loader": "^0.7.1", "form-data": "^2.1.2", - "fs-pull-blob-store": "^0.4.1", + "fs-pull-blob-store": "~0.4.1", "gulp": "^3.9.1", - "interface-ipfs-core": "^0.24.0", - "ipfsd-ctl": "^0.18.2", + "interface-ipfs-core": "~0.24.1", + "ipfsd-ctl": "~0.18.3", "left-pad": "^1.1.3", "lodash": "^4.17.4", "mocha": "^3.2.0", @@ -91,26 +91,26 @@ "bl": "^1.2.0", "boom": "^4.2.0", "debug": "^2.6.0", - "fs-pull-blob-store": "^0.3.0", + "fs-pull-blob-store": "~0.3.0", "glob": "^7.1.1", "hapi": "^16.1.0", "hapi-set-header": "^1.0.2", "hoek": "^4.1.0", - "idb-pull-blob-store": "^0.5.1", - "ipfs-api": "^12.1.6", - "ipfs-bitswap": "^0.9.2", - "ipfs-block": "^0.5.4", - "ipfs-block-service": "^0.8.1", - "ipfs-multipart": "^0.1.0", - "ipfs-repo": "^0.11.2", - "ipfs-unixfs": "^0.1.9", - "ipfs-unixfs-engine": "^0.16.1", - "ipld-resolver": "^0.6.0", + "idb-pull-blob-store": "~0.5.1", + "ipfs-api": "^12.1.7", + "ipfs-bitswap": "~0.9.3", + "ipfs-block": "~0.5.5", + "ipfs-block-service": "~0.8.3", + "ipfs-multipart": "~0.1.0", + "ipfs-repo": "~0.11.3", + "ipfs-unixfs": "~0.1.10", + "ipfs-unixfs-engine": "~0.17.0", + "ipld-resolver": "~0.8.1", "isstream": "^0.1.2", - "joi": "^10.2.1", - "libp2p-floodsub": "0.7.2", - "libp2p-ipfs-browser": "^0.17.8", - "libp2p-ipfs-nodejs": "^0.17.9", + "joi": "^10.2.2", + "libp2p-floodsub": "~0.7.3", + "libp2p-ipfs-browser": "~0.17.9", + "libp2p-ipfs-nodejs": "~0.17.10", "lodash.flatmap": "^4.5.0", "lodash.get": "^4.4.2", "lodash.has": "^4.5.2", @@ -119,12 +119,12 @@ "lodash.values": "^4.3.0", "mafmt": "^2.1.6", "mkdirp": "^0.5.1", - "multiaddr": "^2.2.0", - "multihashes": "^0.3.2", + "multiaddr": "^2.2.1", + "multihashes": "~0.3.3", "path-exists": "^3.0.0", - "peer-book": "^0.3.0", - "peer-id": "^0.8.1", - "peer-info": "^0.8.2", + "peer-book": "~0.3.1", + "peer-id": "~0.8.2", + "peer-info": "~0.8.3", "promisify-es6": "^1.0.2", "pull-file": "^1.0.0", "pull-paramap": "^1.2.1", diff --git a/src/cli/commands/dag/get.js b/src/cli/commands/dag/get.js index 4100b533ed..7f8986508b 100644 --- a/src/cli/commands/dag/get.js +++ b/src/cli/commands/dag/get.js @@ -21,27 +21,20 @@ module.exports = { const refParts = argv.ref.split('/') const cidString = refParts[0] - const pathString = refParts.slice(1).join('/') + const path = refParts.slice(1).join('/') const cid = new CID(cidString) - let lookupFn - if (pathString) { - lookupFn = () => ipfs.dag.resolve(cid, pathString) - } else { - lookupFn = () => ipfs.dag.get(cid) - } - - lookupFn() - .then((obj) => { + ipfs.dag.get(cid, path, (err, result) => { + if (err) { + throw err + } + const obj = result.value if (Buffer.isBuffer(obj)) { console.log('0x' + obj.toString('hex')) } else { console.log(obj) } }) - .catch((err) => { - console.error(err) - }) }) } } diff --git a/src/core/components/dag.js b/src/core/components/dag.js index 6b6d01ab1f..511bf9959d 100644 --- a/src/core/components/dag.js +++ b/src/core/components/dag.js @@ -2,34 +2,13 @@ const promisify = require('promisify-es6') -const dagPB = require('ipld-dag-pb') -const dagCBOR = require('ipld-dag-cbor') - module.exports = function dag (self) { return { - put: promisify((dagNode, multicodec, hashAlg, callback) => { - switch (multicodec) { - case 'dag-pb': dagPB.util.cid(dagNode, gotCid); break - case 'dag-cbor': dagCBOR.util.cid(dagNode, gotCid); break - default: callback(new Error('IPLD Format not supported')) - } - - function gotCid (err, cid) { - if (err) { - return callback(err) - } - - self._ipldResolver.put({ - node: dagNode, - cid: cid - }, callback) - } - }), - get: promisify((cid, callback) => { - self._ipldResolver.get(cid, callback) + put: promisify((dagNode, options, callback) => { + self._ipldResolver.put(dagNode, options, callback) }), - resolve: promisify((cid, path, callback) => { - self._ipldResolver.resolve(cid, path, callback) + get: promisify((cid, path, options, callback) => { + self._ipldResolver.get(cid, path, options, callback) }) } } diff --git a/src/core/components/files.js b/src/core/components/files.js index 1216a98bcc..908fe2b5bf 100644 --- a/src/core/components/files.js +++ b/src/core/components/files.js @@ -61,16 +61,17 @@ module.exports = function files (self) { return callback(new Error('You must supply a multihash')) } - self._ipldResolver.get(new CID(hash), (err, node) => { + self._ipldResolver.get(new CID(hash), (err, result) => { if (err) { return callback(err) } + const node = result.value + const data = UnixFS.unmarshal(node.data) + if (data.type === 'directory') { - return callback( - new Error('This dag node is a directory') - ) + return callback(new Error('This dag node is a directory')) } pull( @@ -107,6 +108,7 @@ module.exports = function files (self) { function prepareFile (self, file, callback) { const bs58mh = multihashes.toB58String(file.multihash) + waterfall([ (cb) => self.object.get(file.multihash, cb), (node, cb) => { diff --git a/src/core/components/object.js b/src/core/components/object.js index da0b4b65a9..cc6dd06369 100644 --- a/src/core/components/object.js +++ b/src/core/components/object.js @@ -80,8 +80,7 @@ module.exports = function object (self) { if (err) { return cb(err) } - self._ipldResolver.put({ - node: node, + self._ipldResolver.put(node, { cid: new CID(node.multihash) }, (err) => { cb(err, node) @@ -112,8 +111,7 @@ module.exports = function object (self) { if (err) { return callback(err) } - self._ipldResolver.put({ - node: node, + self._ipldResolver.put(node, { cid: new CID(node.multihash) }, (err) => { if (err) { @@ -169,8 +167,7 @@ module.exports = function object (self) { } function next () { - self._ipldResolver.put({ - node: node, + self._ipldResolver.put(node, { cid: new CID(node.multihash) }, (err) => { if (err) { @@ -196,7 +193,16 @@ module.exports = function object (self) { return callback(err) } const cid = new CID(mh) - self._ipldResolver.get(cid, callback) + + self._ipldResolver.get(cid, (err, result) => { + if (err) { + return callback(err) + } + + const node = result.value + + callback(null, node) + }) }), data: promisify((multihash, options, callback) => { diff --git a/test/core/interface/dag-resolve.js b/test/core/interface/dag-resolve.js deleted file mode 100644 index 86618fa13f..0000000000 --- a/test/core/interface/dag-resolve.js +++ /dev/null @@ -1,20 +0,0 @@ -/* eslint-env mocha */ - -'use strict' - -const test = require('interface-ipfs-core') -const IPFSFactory = require('../../utils/ipfs-factory-instance') - -let factory - -const common = { - setup: function (cb) { - factory = new IPFSFactory() - cb(null, factory) - }, - teardown: function (cb) { - factory.dismantle(cb) - } -} - -test.dagResolve(common) diff --git a/test/core/interface/interface.spec.js b/test/core/interface/interface.spec.js index 7390d54742..bf749464d1 100644 --- a/test/core/interface/interface.spec.js +++ b/test/core/interface/interface.spec.js @@ -11,7 +11,6 @@ describe('interface-ipfs-core tests', () => { require('./generic') require('./object') require('./dag') - require('./dag-resolve') if (isNode) { require('./swarm') require('./pubsub') diff --git a/test/utils/create-repo-browser.js b/test/utils/create-repo-browser.js index 6d5ff91811..d280acf896 100644 --- a/test/utils/create-repo-browser.js +++ b/test/utils/create-repo-browser.js @@ -1,12 +1,13 @@ +/* global self */ 'use strict' const IPFSRepo = require('ipfs-repo') const Store = require('idb-pull-blob-store') -const idb = window.indexedDB || - window.mozIndexedDB || - window.webkitIndexedDB || - window.msIndexedDB +const idb = self.indexedDB || + self.mozIndexedDB || + self.webkitIndexedDB || + self.msIndexedDB function createTempRepo (repoPath) { repoPath = repoPath || '/tmp/ipfs-test-' + Math.random().toString().substring(2, 8)