diff --git a/packages/interface-ipfs-core/package.json b/packages/interface-ipfs-core/package.json index 36aaf167f0..b812fb7d2d 100644 --- a/packages/interface-ipfs-core/package.json +++ b/packages/interface-ipfs-core/package.json @@ -45,7 +45,7 @@ "@types/pako": "^1.0.2", "@types/readable-stream": "^2.3.11", "abort-controller": "^3.0.0", - "aegir": "^35.0.2", + "aegir": "^35.0.3", "delay": "^5.0.0", "err-code": "^3.0.1", "interface-blockstore": "^1.0.0", diff --git a/packages/ipfs-cli/package.json b/packages/ipfs-cli/package.json index 3dd4f39dcd..2d84fe8a2d 100644 --- a/packages/ipfs-cli/package.json +++ b/packages/ipfs-cli/package.json @@ -68,7 +68,7 @@ "devDependencies": { "@types/progress": "^2.0.3", "@types/yargs": "^16.0.0", - "aegir": "^35.0.2", + "aegir": "^35.0.3", "it-to-buffer": "^2.0.0", "nanoid": "^3.1.12", "ncp": "^2.0.0", diff --git a/packages/ipfs-cli/src/utils.js b/packages/ipfs-cli/src/utils.js index 95010673b4..1d294fdf63 100644 --- a/packages/ipfs-cli/src/utils.js +++ b/packages/ipfs-cli/src/utils.js @@ -338,8 +338,10 @@ const escapeControlCharacters = (str) => { * @returns {any} */ const makeEntriesPrintable = (obj, cidBase) => { - if (obj instanceof CID) { - return { '/': obj.toString(cidBase.encoder) } + const cid = CID.asCID(obj) + + if (cid) { + return { '/': cid.toString(cidBase.encoder) } } if (typeof obj === 'string') { diff --git a/packages/ipfs-client/package.json b/packages/ipfs-client/package.json index 0acadbe6ab..5d9619f579 100644 --- a/packages/ipfs-client/package.json +++ b/packages/ipfs-client/package.json @@ -37,7 +37,7 @@ "merge-options": "^3.0.4" }, "devDependencies": { - "aegir": "^35.0.2", + "aegir": "^35.0.3", "rimraf": "^3.0.2" } } diff --git a/packages/ipfs-core-types/package.json b/packages/ipfs-core-types/package.json index 89428a7a16..edacd0907b 100644 --- a/packages/ipfs-core-types/package.json +++ b/packages/ipfs-core-types/package.json @@ -47,7 +47,7 @@ "multiformats": "^9.4.1" }, "devDependencies": { - "aegir": "^35.0.2", + "aegir": "^35.0.3", "rimraf": "^3.0.2" }, "contributors": [ diff --git a/packages/ipfs-core-utils/package.json b/packages/ipfs-core-utils/package.json index 0c0997380e..2ea88cf3c8 100644 --- a/packages/ipfs-core-utils/package.json +++ b/packages/ipfs-core-utils/package.json @@ -60,7 +60,7 @@ }, "devDependencies": { "@web-std/file": "^1.1.2", - "aegir": "^35.0.2", + "aegir": "^35.0.3", "rimraf": "^3.0.2" } } diff --git a/packages/ipfs-core-utils/src/pins/normalise-input.js b/packages/ipfs-core-utils/src/pins/normalise-input.js index 8f17423745..a99b06ea8c 100644 --- a/packages/ipfs-core-utils/src/pins/normalise-input.js +++ b/packages/ipfs-core-utils/src/pins/normalise-input.js @@ -53,8 +53,10 @@ async function * normaliseInput (input) { } // CID - if (input instanceof CID) { - yield toPin({ cid: input }) + const cid = CID.asCID(input) + + if (cid) { + yield toPin({ cid }) return } @@ -78,7 +80,7 @@ async function * normaliseInput (input) { if (first.done) return iterator // Iterable - if (first.value instanceof CID || first.value instanceof String || typeof first.value === 'string') { + if (CID.asCID(first.value) || first.value instanceof String || typeof first.value === 'string') { yield toPin({ cid: first.value }) for (const cid of iterator) { yield toPin({ cid }) @@ -106,7 +108,7 @@ async function * normaliseInput (input) { if (first.done) return iterator // AsyncIterable - if (first.value instanceof CID || first.value instanceof String || typeof first.value === 'string') { + if (CID.asCID(first.value) || first.value instanceof String || typeof first.value === 'string') { yield toPin({ cid: first.value }) for await (const cid of iterator) { yield toPin({ cid }) diff --git a/packages/ipfs-core-utils/src/to-cid-and-path.js b/packages/ipfs-core-utils/src/to-cid-and-path.js index 33736c5f9d..a8f884009a 100644 --- a/packages/ipfs-core-utils/src/to-cid-and-path.js +++ b/packages/ipfs-core-utils/src/to-cid-and-path.js @@ -18,19 +18,22 @@ const toCidAndPath = (string) => { } } - if (string instanceof CID) { + let cid = CID.asCID(string) + + if (cid) { return { - cid: string, + cid, path: undefined } } + string = string.toString() + if (string.startsWith(IPFS_PREFIX)) { string = string.substring(IPFS_PREFIX.length) } const parts = string.split('/') - let cid let path try { diff --git a/packages/ipfs-core/package.json b/packages/ipfs-core/package.json index 36058c2c5b..73892445d7 100644 --- a/packages/ipfs-core/package.json +++ b/packages/ipfs-core/package.json @@ -134,7 +134,7 @@ "@types/dlv": "^1.1.2", "@types/pako": "^1.0.2", "@types/rimraf": "^3.0.1", - "aegir": "^35.0.2", + "aegir": "^35.0.3", "delay": "^5.0.0", "go-ipfs": "0.9.1", "interface-blockstore-tests": "^1.0.0", diff --git a/packages/ipfs-core/src/components/block/utils.js b/packages/ipfs-core/src/components/block/utils.js index 3495ba3226..9e6d5502db 100644 --- a/packages/ipfs-core/src/components/block/utils.js +++ b/packages/ipfs-core/src/components/block/utils.js @@ -1,23 +1,14 @@ 'use strict' const { CID } = require('multiformats/cid') -const errCode = require('err-code') /** * @param {string|Uint8Array|CID} cid */ exports.cleanCid = cid => { - if (cid instanceof CID) { - return cid - } - - if (typeof cid === 'string') { - return CID.parse(cid) - } - if (cid instanceof Uint8Array) { return CID.decode(cid) } - throw errCode(new Error('Invalid CID'), 'ERR_INVALID_CID') + return CID.parse(cid.toString()) } diff --git a/packages/ipfs-core/src/components/files/utils/to-mfs-path.js b/packages/ipfs-core/src/components/files/utils/to-mfs-path.js index a3db10b2bd..e3affebaf0 100644 --- a/packages/ipfs-core/src/components/files/utils/to-mfs-path.js +++ b/packages/ipfs-core/src/components/files/utils/to-mfs-path.js @@ -99,10 +99,10 @@ const toMfsPath = async (context, path, options) => { let ipfsPath = '' - if (path instanceof CID) { + if (CID.asCID(path)) { ipfsPath = `/ipfs/${path}` } else { - ipfsPath = path + ipfsPath = path.toString() } ipfsPath = ipfsPath.trim() diff --git a/packages/ipfs-core/src/components/object/links.js b/packages/ipfs-core/src/components/object/links.js index 28a14064ab..c19b367d17 100644 --- a/packages/ipfs-core/src/components/object/links.js +++ b/packages/ipfs-core/src/components/object/links.js @@ -32,11 +32,13 @@ function findLinks (node, links = []) { } } - if (val instanceof CID) { + const cid = CID.asCID(val) + + if (cid) { links.push({ Name: '', Tsize: 0, - Hash: val + Hash: cid }) continue } diff --git a/packages/ipfs-core/src/components/pin/add.js b/packages/ipfs-core/src/components/pin/add.js index 75dee59342..68cd3ccfbc 100644 --- a/packages/ipfs-core/src/components/pin/add.js +++ b/packages/ipfs-core/src/components/pin/add.js @@ -14,9 +14,11 @@ module.exports = ({ addAll }) => (path, options = {}) => { let iter - if (path instanceof CID) { + const cid = CID.asCID(path) + + if (cid) { iter = addAll([{ - cid: path, + cid, ...options }], options) } else { diff --git a/packages/ipfs-core/src/components/resolve.js b/packages/ipfs-core/src/components/resolve.js index 8c60279f76..24d18d6f72 100644 --- a/packages/ipfs-core/src/components/resolve.js +++ b/packages/ipfs-core/src/components/resolve.js @@ -48,7 +48,7 @@ module.exports = ({ repo, codecs, bases, name }) => { let remainderPath = path for await (const result of results) { - if (result.value instanceof CID) { + if (CID.asCID(result.value)) { value = result.value remainderPath = result.remainderPath } diff --git a/packages/ipfs-core/src/utils.js b/packages/ipfs-core/src/utils.js index 6ffcd35f6b..3774c81e1f 100644 --- a/packages/ipfs-core/src/utils.js +++ b/packages/ipfs-core/src/utils.js @@ -25,17 +25,20 @@ const ERR_BAD_PATH = 'ERR_BAD_PATH' * @throws on an invalid @param pathStr */ const normalizePath = (pathStr) => { - if (pathStr instanceof CID) { + const cid = CID.asCID(pathStr) + + if (cid) { return `/ipfs/${pathStr}` } + const str = pathStr.toString() + try { - CID.parse(pathStr) - pathStr = `/ipfs/${pathStr}` + return `/ipfs/${CID.parse(str)}` } catch {} - if (isIpfs.path(pathStr)) { - return pathStr + if (isIpfs.path(str)) { + return str } else { throw errCode(new Error(`invalid path: ${pathStr}`), ERR_BAD_PATH) } @@ -45,21 +48,22 @@ const normalizePath = (pathStr) => { // TODO: don't forget ipfs-core-utils/src/to-cid-and-path /** * @param {Uint8Array|CID|string} path - * @returns {string} */ const normalizeCidPath = (path) => { if (path instanceof Uint8Array) { return CID.decode(path).toString() } - if (path instanceof CID) { - return path.toString() - } + + path = path.toString() + if (path.indexOf('/ipfs/') === 0) { path = path.substring('/ipfs/'.length) } + if (path.charAt(path.length - 1) === '/') { path = path.substring(0, path.length - 1) } + return path } @@ -95,7 +99,7 @@ const resolvePath = async function (repo, codecs, ipfsPath, options = {}) { for await (const { value, remainderPath } of resolve(cid, options.path, codecs, repo, { signal: options.signal })) { - if (!(value instanceof CID)) { + if (!CID.asCID(value)) { break } @@ -235,7 +239,7 @@ const resolve = async function * (cid, path, codecs, repo, options) { throw errCode(new Error(`no link named "${key}" under ${lastCid}`), 'ERR_NO_LINK') } - if (value instanceof CID) { + if (CID.asCID(value)) { lastCid = value value = await load(value) } diff --git a/packages/ipfs-daemon/package.json b/packages/ipfs-daemon/package.json index 083a91364c..8509d9aa25 100644 --- a/packages/ipfs-daemon/package.json +++ b/packages/ipfs-daemon/package.json @@ -43,7 +43,7 @@ "libp2p-webrtc-star": "^0.23.0" }, "devDependencies": { - "aegir": "^35.0.2", + "aegir": "^35.0.3", "node-fetch": "npm:@achingbrain/node-fetch@^2.6.4", "ws": "^7.3.1" }, diff --git a/packages/ipfs-grpc-client/package.json b/packages/ipfs-grpc-client/package.json index 514aff7ede..25282ffe97 100644 --- a/packages/ipfs-grpc-client/package.json +++ b/packages/ipfs-grpc-client/package.json @@ -50,7 +50,7 @@ "ws": "^7.3.1" }, "devDependencies": { - "aegir": "^35.0.2", + "aegir": "^35.0.3", "it-all": "^1.0.4", "rimraf": "^3.0.2", "sinon": "^11.1.1" diff --git a/packages/ipfs-grpc-server/package.json b/packages/ipfs-grpc-server/package.json index 478d3bd2e5..7d10ae7c6c 100644 --- a/packages/ipfs-grpc-server/package.json +++ b/packages/ipfs-grpc-server/package.json @@ -48,7 +48,7 @@ }, "devDependencies": { "@types/ws": "^7.4.0", - "aegir": "^35.0.2", + "aegir": "^35.0.3", "ipfs-core": "^0.10.4", "it-all": "^1.0.4", "it-drain": "^1.0.3", diff --git a/packages/ipfs-http-client/package.json b/packages/ipfs-http-client/package.json index 7102b1120f..87e95a344a 100644 --- a/packages/ipfs-http-client/package.json +++ b/packages/ipfs-http-client/package.json @@ -67,7 +67,7 @@ "uint8arrays": "^3.0.0" }, "devDependencies": { - "aegir": "^35.0.2", + "aegir": "^35.0.3", "delay": "^5.0.0", "go-ipfs": "0.9.1", "ipfsd-ctl": "^10.0.3", diff --git a/packages/ipfs-http-client/src/files/cp.js b/packages/ipfs-http-client/src/files/cp.js index 1f8c16c332..b26eb5240b 100644 --- a/packages/ipfs-http-client/src/files/cp.js +++ b/packages/ipfs-http-client/src/files/cp.js @@ -20,7 +20,7 @@ module.exports = configure(api => { const res = await api.post('files/cp', { signal: options.signal, searchParams: toUrlSearchParams({ - arg: sourceArr.concat(destination).map(src => src instanceof CID ? `/ipfs/${src}` : src), + arg: sourceArr.concat(destination).map(src => CID.asCID(src) ? `/ipfs/${src}` : src), ...options }), headers: options.headers diff --git a/packages/ipfs-http-client/src/files/ls.js b/packages/ipfs-http-client/src/files/ls.js index c3986f557f..ee2e436f76 100644 --- a/packages/ipfs-http-client/src/files/ls.js +++ b/packages/ipfs-http-client/src/files/ls.js @@ -21,7 +21,7 @@ module.exports = configure(api => { const res = await api.post('files/ls', { signal: options.signal, searchParams: toUrlSearchParams({ - arg: path instanceof CID ? `/ipfs/${path}` : path, + arg: CID.asCID(path) ? `/ipfs/${path}` : path, // default long to true, diverges from go-ipfs where its false by default long: true, ...options, diff --git a/packages/ipfs-http-client/src/files/stat.js b/packages/ipfs-http-client/src/files/stat.js index 2a54bdd663..5b2dc0c09b 100644 --- a/packages/ipfs-http-client/src/files/stat.js +++ b/packages/ipfs-http-client/src/files/stat.js @@ -15,13 +15,6 @@ module.exports = configure(api => { * @type {FilesAPI["stat"]} */ async function stat (path, options = {}) { - if (path && !(path instanceof CID) && typeof path !== 'string') { - options = path || {} - path = '/' - } - - options = options || {} - const res = await api.post('files/stat', { signal: options.signal, searchParams: toUrlSearchParams({ diff --git a/packages/ipfs-http-client/src/lib/resolve.js b/packages/ipfs-http-client/src/lib/resolve.js index 8fb5d2294a..0425e1528e 100644 --- a/packages/ipfs-http-client/src/lib/resolve.js +++ b/packages/ipfs-http-client/src/lib/resolve.js @@ -57,8 +57,10 @@ const resolve = async function * (cid, path, codecs, getBlock, options) { throw errCode(new Error(`no link named "${key}" under ${lastCid}`), 'ERR_NO_LINK') } - if (value instanceof CID) { - lastCid = value + const cid = CID.asCID(value) + + if (cid) { + lastCid = cid value = await load(value) } } diff --git a/packages/ipfs-http-client/src/pin/remote/index.js b/packages/ipfs-http-client/src/pin/remote/index.js index 29db834840..5643697a57 100644 --- a/packages/ipfs-http-client/src/pin/remote/index.js +++ b/packages/ipfs-http-client/src/pin/remote/index.js @@ -119,7 +119,7 @@ const encodeService = (service) => { * @returns {string} */ const encodeCID = (cid) => { - if (cid instanceof CID) { + if (CID.asCID(cid)) { return cid.toString() } else { throw new TypeError(`CID instance expected instead of ${typeof cid}`) diff --git a/packages/ipfs-http-gateway/package.json b/packages/ipfs-http-gateway/package.json index 1ecc99f8e8..a1e007f7d3 100644 --- a/packages/ipfs-http-gateway/package.json +++ b/packages/ipfs-http-gateway/package.json @@ -59,7 +59,7 @@ "devDependencies": { "@types/hapi-pino": "^8.0.1", "@types/hapi__hapi": "^20.0.5", - "aegir": "^35.0.2", + "aegir": "^35.0.3", "file-type": "^16.0.0", "rimraf": "^3.0.2", "sinon": "^11.1.1" diff --git a/packages/ipfs-http-server/package.json b/packages/ipfs-http-server/package.json index 9b353c421d..a50e8391cd 100644 --- a/packages/ipfs-http-server/package.json +++ b/packages/ipfs-http-server/package.json @@ -67,7 +67,7 @@ "devDependencies": { "@types/hapi-pino": "^8.0.1", "@types/hapi__hapi": "^20.0.5", - "aegir": "^35.0.2", + "aegir": "^35.0.3", "form-data": "^4.0.0", "ipfs-http-client": "^52.0.2", "iso-random-stream": "^2.0.0", diff --git a/packages/ipfs-message-port-client/package.json b/packages/ipfs-message-port-client/package.json index ec43e4ec72..16f2ebf737 100644 --- a/packages/ipfs-message-port-client/package.json +++ b/packages/ipfs-message-port-client/package.json @@ -40,7 +40,7 @@ "multiformats": "^9.4.1" }, "devDependencies": { - "aegir": "^35.0.2", + "aegir": "^35.0.3", "interface-ipfs-core": "^0.150.1", "ipfs-core": "^0.10.4", "ipfs-message-port-server": "^0.9.1", diff --git a/packages/ipfs-message-port-client/src/core.js b/packages/ipfs-message-port-client/src/core.js index 671b1ad2ed..1a2886f12a 100644 --- a/packages/ipfs-message-port-client/src/core.js +++ b/packages/ipfs-message-port-client/src/core.js @@ -122,7 +122,8 @@ CoreClient.prototype.add = async function add (input, options = {}) { * @type {RootAPI["cat"]} */ CoreClient.prototype.cat = async function * cat (inputPath, options = {}) { - const input = inputPath instanceof CID ? encodeCID(inputPath) : inputPath + const cid = CID.asCID(inputPath) + const input = cid ? encodeCID(cid) : inputPath const result = await this.remote.cat({ ...options, path: input }) yield * decodeIterable(result.data, identity) } @@ -133,7 +134,8 @@ CoreClient.prototype.cat = async function * cat (inputPath, options = {}) { * @type {RootAPI["ls"]} */ CoreClient.prototype.ls = async function * ls (inputPath, options = {}) { - const input = inputPath instanceof CID ? encodeCID(inputPath) : inputPath + const cid = CID.asCID(inputPath) + const input = cid ? encodeCID(cid) : inputPath const result = await this.remote.ls({ ...options, path: input }) yield * decodeIterable(result.data, decodeLsEntry) diff --git a/packages/ipfs-message-port-client/src/files.js b/packages/ipfs-message-port-client/src/files.js index c7b3ac8abb..560f2cb908 100644 --- a/packages/ipfs-message-port-client/src/files.js +++ b/packages/ipfs-message-port-client/src/files.js @@ -49,8 +49,11 @@ module.exports = FilesClient * * @param {string|CID} pathOrCID */ -const encodeLocation = pathOrCID => - pathOrCID instanceof CID ? `/ipfs/${pathOrCID.toString()}` : pathOrCID +const encodeLocation = pathOrCID => { + const cid = CID.asCID(pathOrCID) + + return cid ? `/ipfs/${pathOrCID.toString()}` : pathOrCID.toString() +} /** * @param {EncodedStat} data diff --git a/packages/ipfs-message-port-protocol/package.json b/packages/ipfs-message-port-protocol/package.json index 3210781b32..a10e2c2884 100644 --- a/packages/ipfs-message-port-protocol/package.json +++ b/packages/ipfs-message-port-protocol/package.json @@ -50,7 +50,7 @@ "multiformats": "^9.4.1" }, "devDependencies": { - "aegir": "^35.0.2", + "aegir": "^35.0.3", "rimraf": "^3.0.2", "uint8arrays": "^3.0.0" }, diff --git a/packages/ipfs-message-port-protocol/src/dag.js b/packages/ipfs-message-port-protocol/src/dag.js index f58cb80cde..0b031eaf2e 100644 --- a/packages/ipfs-message-port-protocol/src/dag.js +++ b/packages/ipfs-message-port-protocol/src/dag.js @@ -68,9 +68,11 @@ exports.encodeNode = encodeNode */ const collectNode = (value, cids, transfer) => { if (value != null && typeof value === 'object') { - if (value instanceof CID) { - cids.push(value) - encodeCID(value, transfer) + const cid = CID.asCID(value) + + if (cid) { + cids.push(cid) + encodeCID(cid, transfer) } else if (value instanceof ArrayBuffer) { if (transfer) { transfer.push(value) diff --git a/packages/ipfs-message-port-server/package.json b/packages/ipfs-message-port-server/package.json index 74b5d28e77..378d64918a 100644 --- a/packages/ipfs-message-port-server/package.json +++ b/packages/ipfs-message-port-server/package.json @@ -44,7 +44,7 @@ "multiformats": "^9.4.1" }, "devDependencies": { - "aegir": "^35.0.2", + "aegir": "^35.0.3", "rimraf": "^3.0.2" }, "engines": { diff --git a/packages/ipfs/package.json b/packages/ipfs/package.json index c6f72b4eae..4a17ee83aa 100644 --- a/packages/ipfs/package.json +++ b/packages/ipfs/package.json @@ -47,7 +47,7 @@ "devDependencies": { "@types/semver": "^7.3.4", "@types/update-notifier": "^5.0.0", - "aegir": "^35.0.2", + "aegir": "^35.0.3", "assert": "^2.0.0", "cross-env": "^7.0.0", "electron-webrtc": "^0.3.0",