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

Commit 4e09d91

Browse files
authored
refactor: update to [email protected] with Uint8Arrays (#107)
Updates all dependency versions and switches out node Buffers for Uint8Arrays BREAKING CHANGES: - All uses of node Buffers have been replaced with Uint8Arrays
1 parent 3208b7c commit 4e09d91

File tree

13 files changed

+2424
-2490
lines changed

13 files changed

+2424
-2490
lines changed

.aegir.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,14 @@ module.exports = {
1111
webpack: {
1212
plugins: [
1313
new webpack.EnvironmentPlugin(['IPFS_JS_EXEC'])
14-
]
14+
],
15+
node: {
16+
// needed by binary-parse-stream
17+
stream: true,
18+
19+
// needed by core-is-lib
20+
Buffer: true
21+
}
1522
},
1623
karma: {
1724
files: [{

package-lock.json

Lines changed: 2333 additions & 2416 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,36 +29,41 @@
2929
"url": "https://github.com/ipfs/interop/issues"
3030
},
3131
"homepage": "https://github.com/ipfs/interop#readme",
32+
"browser": {
33+
"go-ipfs": false
34+
},
3235
"dependencies": {
33-
"aegir": "^23.0.0",
34-
"base64url": "^3.0.0",
36+
"aegir": "^26.0.0",
3537
"chai": "^4.2.0",
3638
"chai-as-promised": "^7.1.1",
37-
"cids": "^0.8.0",
39+
"cids": "^1.0.0",
3840
"cross-env": "^7.0.2",
3941
"delay": "^4.3.0",
4042
"detect-node": "^2.0.4",
4143
"dirty-chai": "^2.0.1",
42-
"ipfs-unixfs": "^1.0.1",
43-
"ipfsd-ctl": "^5.0.0",
44-
"ipns": "^0.7.0",
44+
"ipfs-unixfs": "^2.0.2",
45+
"ipfsd-ctl": "^7.0.0",
46+
"ipns": "^0.8.0",
4547
"is-ci": "^2.0.0",
4648
"is-os": "^1.0.1",
49+
"iso-random-stream": "^1.1.1",
4750
"it-all": "^1.0.1",
4851
"it-concat": "^1.0.0",
52+
"it-drain": "^1.0.0",
4953
"it-last": "^1.0.1",
50-
"libp2p-webrtc-star": "^0.18.5",
54+
"libp2p-webrtc-star": "^0.20.0",
5155
"mocha": "^8.0.1",
52-
"multihashes": "^1.0.1",
56+
"multihashes": "^3.0.1",
5357
"nanoid": "^3.1.10",
54-
"peer-id": "^0.13.13",
58+
"peer-id": "^0.14.0",
5559
"p-retry": "^4.1.0",
5660
"pretty-bytes": "^5.1.0",
5761
"promisify-es6": "^1.0.3",
5862
"random-fs": "^1.0.3",
5963
"readable-stream-buffer-stream": "^1.0.0",
6064
"resolve-cwd": "^3.0.0",
61-
"rimraf": "^3.0.0"
65+
"rimraf": "^3.0.0",
66+
"uint8arrays": "^1.1.0"
6267
},
6368
"contributors": [
6469
"achingbrain <[email protected]>",
@@ -78,12 +83,12 @@
7883
],
7984
"devDependencies": {
8085
"go-ipfs": "^0.6.0",
81-
"ipfs": "^0.48.0",
82-
"ipfs-http-client": "^45.0.0"
86+
"ipfs": "^0.50.1",
87+
"ipfs-http-client": "^46.1.0"
8388
},
8489
"peerDependencies": {
8590
"go-ipfs": "^0.6.0",
86-
"ipfs": "^0.48.0",
87-
"ipfs-http-client": "^45.0.0"
91+
"ipfs": "^0.50.0",
92+
"ipfs-http-client": "^46.1.0"
8893
}
8994
}

test/cid-version-agnostic.js

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const { nanoid } = require('nanoid')
55
const concat = require('it-concat')
66
const { expect } = require('./utils/chai')
77
const daemonFactory = require('./utils/daemon-factory')
8+
const uint8ArrayFromString = require('uint8arrays/from-string')
89

910
describe('CID version agnostic', function () {
1011
this.timeout(50 * 1000)
@@ -32,95 +33,95 @@ describe('CID version agnostic', function () {
3233
after(() => daemonFactory)
3334

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

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

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

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

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

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

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

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

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

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

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

122123
it('should add v1 and cat v0 (go0 -> js0)', async () => {
123-
const input = Buffer.from(nanoid())
124+
const input = uint8ArrayFromString(nanoid())
124125
const { cid } = await daemons.go0.api.add(input, { cidVersion: 1, rawLeaves: false })
125126
const cidv0 = cid.toV0()
126127
const output = await concat(daemons.js0.api.cat(cidv0))

test/exchange-files.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
/* eslint-env mocha */
33
'use strict'
44

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

133-
const data = crypto.randomBytes(size)
133+
const data = randomBytes(size)
134134

135135
const { cid } = await daemon1.api.add(data)
136136
const file = await concat(daemon2.api.cat(cid))

test/files.js

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-env mocha */
22
'use strict'
33

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

6666
function createDataStream (size = 262144) {
6767
const chunkSize = size
68-
const buffer = Buffer.alloc(chunkSize, 0)
68+
const buffer = new Uint8Array(chunkSize)
6969

7070
return bufferStream(chunkSize, {
7171
generator: (size, callback) => {
72-
callback(null, buffer.slice(0, size))
72+
callback(null, buffer.subarray(0, size))
7373
}
7474
})
7575
}
@@ -156,7 +156,7 @@ describe('files', function () {
156156

157157
it('returns an error when writing deeply nested files and the parents do not exist', () => {
158158
const writeNonExistentFile = (daemon) => {
159-
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]))
159+
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]))
160160
}
161161

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

255255
it('empty files', () => {
256-
const data = Buffer.alloc(0)
256+
const data = new Uint8Array(0)
257257

258258
return compare(
259259
testHashesAreEqual(go, data),
@@ -262,7 +262,7 @@ describe('files', function () {
262262
})
263263

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

267267
return compare(
268268
testHashesAreEqual(go, data),
@@ -271,7 +271,7 @@ describe('files', function () {
271271
})
272272

273273
it('big files', () => {
274-
const data = crypto.randomBytes(1024 * 3000)
274+
const data = randomBytes(1024 * 3000)
275275

276276
return compare(
277277
testHashesAreEqual(go, data),
@@ -280,8 +280,8 @@ describe('files', function () {
280280
})
281281

282282
it('files that have had data appended', () => {
283-
const initialData = crypto.randomBytes(1024 * 300)
284-
const appendedData = crypto.randomBytes(1024 * 300)
283+
const initialData = randomBytes(1024 * 300)
284+
const appendedData = randomBytes(1024 * 300)
285285

286286
return compare(
287287
appendData(go, initialData, appendedData),
@@ -291,8 +291,8 @@ describe('files', function () {
291291

292292
it('files that have had data overwritten', () => {
293293
const bytes = 1024 * 300
294-
const initialData = crypto.randomBytes(bytes)
295-
const newData = crypto.randomBytes(bytes)
294+
const initialData = randomBytes(bytes)
295+
const newData = randomBytes(bytes)
296296

297297
return compare(
298298
overwriteData(go, initialData, newData),
@@ -301,7 +301,7 @@ describe('files', function () {
301301
})
302302

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

315315
it('big files with CIDv1', () => {
316-
const data = crypto.randomBytes(1024 * 3000)
316+
const data = randomBytes(1024 * 3000)
317317
const options = {
318318
cidVersion: 1
319319
}
@@ -366,7 +366,7 @@ describe('files', function () {
366366
})
367367

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

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

386386
it('updating mfs hamt shards', () => {
387387
const dir = `/shard-${Date.now()}`
388-
const data = crypto.randomBytes(100)
389-
const nodeGrContent = Buffer.from([0, 1, 2, 3, 4])
390-
const superModuleContent = Buffer.from([5, 6, 7, 8, 9])
388+
const data = randomBytes(100)
389+
const nodeGrContent = Uint8Array.from([0, 1, 2, 3, 4])
390+
const superModuleContent = Uint8Array.from([5, 6, 7, 8, 9])
391391
const files = [{
392392
path: `${dir}/node-gr`,
393393
content: nodeGrContent
394394
}, {
395395
path: `${dir}/yanvoidmodule`,
396-
content: crypto.randomBytes(5)
396+
content: randomBytes(5)
397397
}, {
398398
path: `${dir}/methodify`,
399-
content: crypto.randomBytes(5)
399+
content: randomBytes(5)
400400
}, {
401401
path: `${dir}/fis-msprd-style-loader_0_13_1`,
402-
content: crypto.randomBytes(5)
402+
content: randomBytes(5)
403403
}, {
404404
path: `${dir}/js-form`,
405-
content: crypto.randomBytes(5)
405+
content: randomBytes(5)
406406
}, {
407407
path: `${dir}/vivanov-sliceart`,
408-
content: crypto.randomBytes(5)
408+
content: randomBytes(5)
409409
}]
410410

411411
for (let i = 0; i < SHARD_THRESHOLD; i++) {

test/ipns-pubsub.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33

44
const PeerID = require('peer-id')
55
const { fromB58String } = require('multihashes')
6-
const base64url = require('base64url')
76
const ipns = require('ipns')
87
const last = require('it-last')
98
const pRetry = require('p-retry')
109
const waitFor = require('./utils/wait-for')
1110
const { expect } = require('./utils/chai')
1211
const daemonFactory = require('./utils/daemon-factory')
12+
const uint8ArrayToString = require('uint8arrays/to-string')
1313

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

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

107107
await waitForPeerToSubscribe(nodeB.api, topic)
108108
await nodeB.api.pubsub.subscribe(topic, checkMessage)

0 commit comments

Comments
 (0)