Skip to content
This repository has been archived by the owner on Aug 1, 2023. It is now read-only.

refactor: update to js-ipfs@0.50.0 with Uint8Arrays #107

Merged
merged 16 commits into from
Sep 9, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .aegir.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,14 @@ module.exports = {
webpack: {
plugins: [
new webpack.EnvironmentPlugin(['IPFS_JS_EXEC'])
]
],
node: {
// needed by binary-parse-stream
stream: true,

// needed by core-is-lib
Buffer: true
}
},
karma: {
files: [{
Expand Down
4,749 changes: 2,333 additions & 2,416 deletions package-lock.json

Large diffs are not rendered by default.

33 changes: 19 additions & 14 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,36 +29,41 @@
"url": "https://github.com/ipfs/interop/issues"
},
"homepage": "https://github.com/ipfs/interop#readme",
"browser": {
"go-ipfs": false
},
"dependencies": {
"aegir": "^23.0.0",
"base64url": "^3.0.0",
"aegir": "^26.0.0",
"chai": "^4.2.0",
"chai-as-promised": "^7.1.1",
"cids": "^0.8.0",
"cids": "^1.0.0",
"cross-env": "^7.0.2",
"delay": "^4.3.0",
"detect-node": "^2.0.4",
"dirty-chai": "^2.0.1",
"ipfs-unixfs": "^1.0.1",
"ipfsd-ctl": "^5.0.0",
"ipns": "^0.7.0",
"ipfs-unixfs": "^2.0.2",
"ipfsd-ctl": "^7.0.0",
"ipns": "^0.8.0",
"is-ci": "^2.0.0",
"is-os": "^1.0.1",
"iso-random-stream": "^1.1.1",
"it-all": "^1.0.1",
"it-concat": "^1.0.0",
"it-drain": "^1.0.0",
"it-last": "^1.0.1",
"libp2p-webrtc-star": "^0.18.5",
"libp2p-webrtc-star": "^0.20.0",
"mocha": "^8.0.1",
"multihashes": "^1.0.1",
"multihashes": "^3.0.1",
"nanoid": "^3.1.10",
"peer-id": "^0.13.13",
"peer-id": "^0.14.0",
"p-retry": "^4.1.0",
"pretty-bytes": "^5.1.0",
"promisify-es6": "^1.0.3",
"random-fs": "^1.0.3",
"readable-stream-buffer-stream": "^1.0.0",
"resolve-cwd": "^3.0.0",
"rimraf": "^3.0.0"
"rimraf": "^3.0.0",
"uint8arrays": "^1.1.0"
},
"contributors": [
"achingbrain <alex@achingbrain.net>",
Expand All @@ -78,12 +83,12 @@
],
"devDependencies": {
"go-ipfs": "^0.6.0",
"ipfs": "^0.48.0",
"ipfs-http-client": "^45.0.0"
"ipfs": "^0.50.1",
"ipfs-http-client": "^46.1.0"
},
"peerDependencies": {
"go-ipfs": "^0.6.0",
"ipfs": "^0.48.0",
"ipfs-http-client": "^45.0.0"
"ipfs": "^0.50.0",
"ipfs-http-client": "^46.1.0"
}
}
25 changes: 13 additions & 12 deletions test/cid-version-agnostic.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const { nanoid } = require('nanoid')
const concat = require('it-concat')
const { expect } = require('./utils/chai')
const daemonFactory = require('./utils/daemon-factory')
const uint8ArrayFromString = require('uint8arrays/from-string')

describe('CID version agnostic', function () {
this.timeout(50 * 1000)
Expand Down Expand Up @@ -32,95 +33,95 @@ describe('CID version agnostic', function () {
after(() => daemonFactory)

it('should add v0 and cat v1 (go0 -> go0)', async () => {
const input = Buffer.from(nanoid())
const input = uint8ArrayFromString(nanoid())
const { cid } = await daemons.go0.api.add(input, { cidVersion: 0 })
const cidv1 = cid.toV1()
const output = await concat(daemons.go0.api.cat(cidv1))
expect(output.slice()).to.deep.equal(input)
})

it('should add v0 and cat v1 (js0 -> js0)', async () => {
const input = Buffer.from(nanoid())
const input = uint8ArrayFromString(nanoid())
const { cid } = await daemons.js0.api.add(input, { cidVersion: 0 })
const cidv1 = cid.toV1()
const output = await concat(daemons.js0.api.cat(cidv1))
expect(output.slice()).to.deep.equal(input)
})

it('should add v0 and cat v1 (go0 -> go1)', async () => {
const input = Buffer.from(nanoid())
const input = uint8ArrayFromString(nanoid())
const { cid } = await daemons.go0.api.add(input, { cidVersion: 0 })
const cidv1 = cid.toV1()
const output = await concat(daemons.go1.api.cat(cidv1))
expect(output.slice()).to.deep.equal(input)
})

it('should add v0 and cat v1 (js0 -> js1)', async () => {
const input = Buffer.from(nanoid())
const input = uint8ArrayFromString(nanoid())
const { cid } = await daemons.js0.api.add(input, { cidVersion: 0 })
const cidv1 = cid.toV1()
const output = await concat(daemons.js1.api.cat(cidv1))
expect(output.slice()).to.deep.equal(input)
})

it('should add v0 and cat v1 (js0 -> go0)', async () => {
const input = Buffer.from(nanoid())
const input = uint8ArrayFromString(nanoid())
const { cid } = await daemons.js0.api.add(input, { cidVersion: 0 })
const cidv1 = cid.toV1()
const output = await concat(daemons.go0.api.cat(cidv1))
expect(output.slice()).to.deep.equal(input)
})

it('should add v0 and cat v1 (go0 -> js0)', async () => {
const input = Buffer.from(nanoid())
const input = uint8ArrayFromString(nanoid())
const { cid } = await daemons.go0.api.add(input, { cidVersion: 0 })
const cidv1 = cid.toV1()
const output = await concat(daemons.js0.api.cat(cidv1))
expect(output.slice()).to.deep.equal(input)
})

it('should add v1 and cat v0 (go0 -> go0)', async () => {
const input = Buffer.from(nanoid())
const input = uint8ArrayFromString(nanoid())
const { cid } = await daemons.go0.api.add(input, { cidVersion: 1, rawLeaves: false })
const cidv0 = cid.toV0()
const output = await concat(daemons.go0.api.cat(cidv0))
expect(output.slice()).to.deep.equal(input)
})

it('should add v1 and cat v0 (js0 -> js0)', async () => {
const input = Buffer.from(nanoid())
const input = uint8ArrayFromString(nanoid())
const { cid } = await daemons.js0.api.add(input, { cidVersion: 1, rawLeaves: false })
const cidv0 = cid.toV0()
const output = await concat(daemons.js0.api.cat(cidv0))
expect(output.slice()).to.deep.equal(input)
})

it('should add v1 and cat v0 (go0 -> go1)', async () => {
const input = Buffer.from(nanoid())
const input = uint8ArrayFromString(nanoid())
const { cid } = await daemons.go0.api.add(input, { cidVersion: 1, rawLeaves: false })
const cidv0 = cid.toV0()
const output = await concat(daemons.go1.api.cat(cidv0))
expect(output.slice()).to.deep.equal(input)
})

it('should add v1 and cat v0 (js0 -> js1)', async () => {
const input = Buffer.from(nanoid())
const input = uint8ArrayFromString(nanoid())
const { cid } = await daemons.js0.api.add(input, { cidVersion: 1, rawLeaves: false })
const cidv0 = cid.toV0()
const output = await concat(daemons.js1.api.cat(cidv0))
expect(output.slice()).to.deep.equal(input)
})

it('should add v1 and cat v0 (js0 -> go0)', async () => {
const input = Buffer.from(nanoid())
const input = uint8ArrayFromString(nanoid())
const { cid } = await daemons.js0.api.add(input, { cidVersion: 1, rawLeaves: false })
const cidv0 = cid.toV0()
const output = await concat(daemons.go0.api.cat(cidv0))
expect(output.slice()).to.deep.equal(input)
})

it('should add v1 and cat v0 (go0 -> js0)', async () => {
const input = Buffer.from(nanoid())
const input = uint8ArrayFromString(nanoid())
const { cid } = await daemons.go0.api.add(input, { cidVersion: 1, rawLeaves: false })
const cidv0 = cid.toV0()
const output = await concat(daemons.js0.api.cat(cidv0))
Expand Down
4 changes: 2 additions & 2 deletions test/exchange-files.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/* eslint-env mocha */
'use strict'

const crypto = require('crypto')
const randomBytes = require('iso-random-stream/src/random')
const pretty = require('pretty-bytes')
const randomFs = require('random-fs')
const promisify = require('promisify-es6')
Expand Down Expand Up @@ -130,7 +130,7 @@ describe('exchange files', function () {
it(`${name}: ${pretty(size)}`, async function () {
this.timeout(timeout)

const data = crypto.randomBytes(size)
const data = randomBytes(size)

const { cid } = await daemon1.api.add(data)
const file = await concat(daemon2.api.cat(cid))
Expand Down
46 changes: 23 additions & 23 deletions test/files.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/* eslint-env mocha */
'use strict'

const crypto = require('crypto')
const randomBytes = require('iso-random-stream/src/random')
const UnixFs = require('ipfs-unixfs')
const daemonFactory = require('./utils/daemon-factory')
const bufferStream = require('readable-stream-buffer-stream')
Expand Down Expand Up @@ -65,11 +65,11 @@ async function addFile (daemon, data) {

function createDataStream (size = 262144) {
const chunkSize = size
const buffer = Buffer.alloc(chunkSize, 0)
const buffer = new Uint8Array(chunkSize)

return bufferStream(chunkSize, {
generator: (size, callback) => {
callback(null, buffer.slice(0, size))
callback(null, buffer.subarray(0, size))
}
})
}
Expand Down Expand Up @@ -156,7 +156,7 @@ describe('files', function () {

it('returns an error when writing deeply nested files and the parents do not exist', () => {
const writeNonExistentFile = (daemon) => {
return daemon.api.files.write(`/foo-${Math.random()}/bar-${Math.random()}/baz-${Math.random()}/i-do-not-exist-${Math.random()}`, Buffer.from([0, 1, 2, 3]))
return daemon.api.files.write(`/foo-${Math.random()}/bar-${Math.random()}/baz-${Math.random()}/i-do-not-exist-${Math.random()}`, Uint8Array.from([0, 1, 2, 3]))
}

return compareErrors(
Expand All @@ -171,7 +171,7 @@ describe('files', function () {
// Similar to the problem we worked around here:
// https://github.com/ipfs/js-ipfs-http-client/blob/d7eb0e8ffb15e207a8a6062e292a3b5babf35a9e/src/lib/error-handler.js#L12-L23
it.skip('uses raw nodes for leaf data', () => {
const data = crypto.randomBytes(1024 * 300)
const data = randomBytes(1024 * 300)
const testLeavesAreRaw = async (daemon) => {
const file = await addFile(daemon, data)
await checkNodeTypes(daemon, file)
Expand Down Expand Up @@ -253,7 +253,7 @@ describe('files', function () {
}

it('empty files', () => {
const data = Buffer.alloc(0)
const data = new Uint8Array(0)

return compare(
testHashesAreEqual(go, data),
Expand All @@ -262,7 +262,7 @@ describe('files', function () {
})

it('small files', () => {
const data = Buffer.from([0x00, 0x01, 0x02])
const data = Uint8Array.from([0x00, 0x01, 0x02])

return compare(
testHashesAreEqual(go, data),
Expand All @@ -271,7 +271,7 @@ describe('files', function () {
})

it('big files', () => {
const data = crypto.randomBytes(1024 * 3000)
const data = randomBytes(1024 * 3000)

return compare(
testHashesAreEqual(go, data),
Expand All @@ -280,8 +280,8 @@ describe('files', function () {
})

it('files that have had data appended', () => {
const initialData = crypto.randomBytes(1024 * 300)
const appendedData = crypto.randomBytes(1024 * 300)
const initialData = randomBytes(1024 * 300)
const appendedData = randomBytes(1024 * 300)

return compare(
appendData(go, initialData, appendedData),
Expand All @@ -291,8 +291,8 @@ describe('files', function () {

it('files that have had data overwritten', () => {
const bytes = 1024 * 300
const initialData = crypto.randomBytes(bytes)
const newData = crypto.randomBytes(bytes)
const initialData = randomBytes(bytes)
const newData = randomBytes(bytes)

return compare(
overwriteData(go, initialData, newData),
Expand All @@ -301,7 +301,7 @@ describe('files', function () {
})

it('small files with CIDv1', () => {
const data = Buffer.from([0x00, 0x01, 0x02])
const data = Uint8Array.from([0x00, 0x01, 0x02])
const options = {
cidVersion: 1
}
Expand All @@ -313,7 +313,7 @@ describe('files', function () {
})

it('big files with CIDv1', () => {
const data = crypto.randomBytes(1024 * 3000)
const data = randomBytes(1024 * 3000)
const options = {
cidVersion: 1
}
Expand Down Expand Up @@ -366,7 +366,7 @@ describe('files', function () {
})

it('hamt shards', () => {
const data = crypto.randomBytes(100)
const data = randomBytes(100)
const files = []
const dir = `/shard-${Date.now()}`

Expand All @@ -385,27 +385,27 @@ describe('files', function () {

it('updating mfs hamt shards', () => {
const dir = `/shard-${Date.now()}`
const data = crypto.randomBytes(100)
const nodeGrContent = Buffer.from([0, 1, 2, 3, 4])
const superModuleContent = Buffer.from([5, 6, 7, 8, 9])
const data = randomBytes(100)
const nodeGrContent = Uint8Array.from([0, 1, 2, 3, 4])
const superModuleContent = Uint8Array.from([5, 6, 7, 8, 9])
const files = [{
path: `${dir}/node-gr`,
content: nodeGrContent
}, {
path: `${dir}/yanvoidmodule`,
content: crypto.randomBytes(5)
content: randomBytes(5)
}, {
path: `${dir}/methodify`,
content: crypto.randomBytes(5)
content: randomBytes(5)
}, {
path: `${dir}/fis-msprd-style-loader_0_13_1`,
content: crypto.randomBytes(5)
content: randomBytes(5)
}, {
path: `${dir}/js-form`,
content: crypto.randomBytes(5)
content: randomBytes(5)
}, {
path: `${dir}/vivanov-sliceart`,
content: crypto.randomBytes(5)
content: randomBytes(5)
}]

for (let i = 0; i < SHARD_THRESHOLD; i++) {
Expand Down
4 changes: 2 additions & 2 deletions test/ipns-pubsub.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@

const PeerID = require('peer-id')
const { fromB58String } = require('multihashes')
const base64url = require('base64url')
const ipns = require('ipns')
const last = require('it-last')
const pRetry = require('p-retry')
const waitFor = require('./utils/wait-for')
const { expect } = require('./utils/chai')
const daemonFactory = require('./utils/daemon-factory')
const uint8ArrayToString = require('uint8arrays/to-string')

const daemonsOptions = {
args: ['--enable-namesys-pubsub'] // enable ipns over pubsub
Expand Down Expand Up @@ -102,7 +102,7 @@ const subscribeToReceiveByPubsub = async (nodeA, nodeB, idA, idB) => {
}

const keys = ipns.getIdKeys(fromB58String(idA))
const topic = `${namespace}${base64url.encode(keys.routingKey.toBuffer())}`
const topic = `${namespace}${uint8ArrayToString(keys.routingKey.uint8Array(), 'base64url')}`

await waitForPeerToSubscribe(nodeB.api, topic)
await nodeB.api.pubsub.subscribe(topic, checkMessage)
Expand Down
Loading