From 2cd448346030c7db76ee03d3199cf8b9f487705c Mon Sep 17 00:00:00 2001 From: achingbrain Date: Mon, 3 Aug 2020 15:25:25 +0100 Subject: [PATCH 1/4] fix: replace node buffers with uint8arrays Follow up to #66 that removes node Buffers from the tests and uses version of protons that returns uint8arrays. --- .../ipfs-unixfs-exporter/package-lock.json | 48 +++++++ packages/ipfs-unixfs-exporter/package.json | 8 +- .../src/utils/find-cid-in-shard.js | 5 +- .../test/exporter-sharded.spec.js | 8 +- .../test/exporter-subtree.spec.js | 16 +-- .../test/exporter.spec.js | 122 +++++++++--------- .../test/helpers/create-shard.js | 3 +- packages/ipfs-unixfs-importer/package.json | 10 +- .../src/dag-builder/validate-chunks.js | 4 +- .../ipfs-unixfs-importer/src/dir-sharded.js | 4 +- .../src/utils/utf8-encoder.js | 5 - .../test/benchmark.spec.js | 3 +- .../test/builder-dir-sharding.spec.js | 42 +++--- .../test/builder-only-hash.spec.js | 3 +- .../ipfs-unixfs-importer/test/builder.spec.js | 6 +- .../test/chunker-custom.spec.js | 12 +- .../test/chunker-fixed-size.spec.js | 13 +- .../test/chunker-rabin.spec.js | 23 ++-- .../test/helpers/collect-leaf-cids.js | 4 +- .../finite-pseudorandom-byte-stream.js | 4 +- .../test/helpers/random-byte-stream.js | 3 +- .../test/import-export-nested-dir.spec.js | 14 +- .../test/importer.spec.js | 19 +-- packages/ipfs-unixfs/package.json | 2 +- .../ipfs-unixfs/test/unixfs-format.spec.js | 16 +-- 25 files changed, 221 insertions(+), 176 deletions(-) create mode 100644 packages/ipfs-unixfs-exporter/package-lock.json delete mode 100644 packages/ipfs-unixfs-importer/src/utils/utf8-encoder.js diff --git a/packages/ipfs-unixfs-exporter/package-lock.json b/packages/ipfs-unixfs-exporter/package-lock.json new file mode 100644 index 00000000..16b9c3eb --- /dev/null +++ b/packages/ipfs-unixfs-exporter/package-lock.json @@ -0,0 +1,48 @@ +{ + "name": "ipfs-unixfs-exporter", + "version": "3.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "multicodec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", + "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", + "dev": true, + "requires": { + "buffer": "^5.6.0", + "varint": "^5.0.0" + }, + "dependencies": { + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "varint": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", + "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=", + "dev": true + } + } + } + } +} diff --git a/packages/ipfs-unixfs-exporter/package.json b/packages/ipfs-unixfs-exporter/package.json index 5fd8926b..ac2c8172 100644 --- a/packages/ipfs-unixfs-exporter/package.json +++ b/packages/ipfs-unixfs-exporter/package.json @@ -37,21 +37,21 @@ "devDependencies": { "abort-controller": "^3.0.0", "aegir": "^25.0.0", - "buffer": "^5.6.0", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "detect-node": "^2.0.4", "dirty-chai": "^2.0.1", "ipfs-unixfs-importer": "^3.0.1", "ipld": "^0.26.1", - "ipld-dag-pb": "^0.19.0", + "ipld-dag-pb": "ipld/js-ipld-dag-pb#fix/replace-node-buffers-with-unit8arrays", "ipld-in-memory": "^5.0.0", "it-all": "^1.0.1", "it-buffer-stream": "^1.0.2", "it-first": "^1.0.1", "multicodec": "^1.0.0", "nyc": "^15.0.0", - "sinon": "^9.0.1" + "sinon": "^9.0.1", + "uint8arrays": "^1.0.0" }, "dependencies": { "cids": "^0.8.0", @@ -60,6 +60,6 @@ "ipfs-unixfs": "^2.0.1", "ipfs-utils": "^2.3.1", "it-last": "^1.0.1", - "multihashing-async": "^1.0.0" + "multihashing-async": "^2.0.0" } } diff --git a/packages/ipfs-unixfs-exporter/src/utils/find-cid-in-shard.js b/packages/ipfs-unixfs-exporter/src/utils/find-cid-in-shard.js index aec3b79a..51067151 100644 --- a/packages/ipfs-unixfs-exporter/src/utils/find-cid-in-shard.js +++ b/packages/ipfs-unixfs-exporter/src/utils/find-cid-in-shard.js @@ -2,12 +2,11 @@ const Bucket = require('hamt-sharding/src/bucket') const multihashing = require('multihashing-async') -const TextEncoder = require('ipfs-utils/src/text-encoder') -const UTF8_ENCODER = new TextEncoder('utf8') +const uint8ArrayFromString = require('uint8arrays/from-string') // FIXME: this is copy/pasted from ipfs-unixfs-importer/src/dir-sharded.js const hashFn = async function (value) { - const buf = UTF8_ENCODER.encode(value) + const buf = uint8ArrayFromString(value) const hash = await multihashing(buf, 'murmur3-128') // Multihashing inserts preamble of 2 bytes. Remove it. diff --git a/packages/ipfs-unixfs-exporter/test/exporter-sharded.spec.js b/packages/ipfs-unixfs-exporter/test/exporter-sharded.spec.js index dfdba0af..bd005d45 100644 --- a/packages/ipfs-unixfs-exporter/test/exporter-sharded.spec.js +++ b/packages/ipfs-unixfs-exporter/test/exporter-sharded.spec.js @@ -1,7 +1,6 @@ /* eslint-env mocha */ 'use strict' -const { Buffer } = require('buffer') const chai = require('chai') chai.use(require('dirty-chai')) const expect = chai.expect @@ -20,6 +19,7 @@ const { DAGNode } = require('ipld-dag-pb') const blockApi = require('./helpers/block') +const uint8ArrayConcat = require('uint8arrays/concat') const SHARD_SPLIT_THRESHOLD = 10 @@ -36,7 +36,7 @@ describe('exporter sharded', function () { const createShardWithFileNames = (numFiles, fileName) => { const files = new Array(numFiles).fill(0).map((_, index) => ({ path: fileName(index), - content: Buffer.from([0, 1, 2, 3, 4, index]) + content: Uint8Array.from([0, 1, 2, 3, 4, index]) })) return createShardWithFiles(files) @@ -59,7 +59,7 @@ describe('exporter sharded', function () { for (let i = 0; i < (SHARD_SPLIT_THRESHOLD + 1); i++) { files[`file-${Math.random()}.txt`] = { - content: Buffer.concat(await all(randomBytes(100))) + content: uint8ArrayConcat(await all(randomBytes(100))) } } @@ -92,7 +92,7 @@ describe('exporter sharded', function () { for (let i = 0; i < dirFiles.length; i++) { const dirFile = dirFiles[i] - const data = Buffer.concat(await all(dirFile.content())) + const data = uint8ArrayConcat(await all(dirFile.content())) // validate the CID expect(files[dirFile.name].cid.equals(dirFile.cid)).to.be.true() diff --git a/packages/ipfs-unixfs-exporter/test/exporter-subtree.spec.js b/packages/ipfs-unixfs-exporter/test/exporter-subtree.spec.js index ffda69a5..a33b72d9 100644 --- a/packages/ipfs-unixfs-exporter/test/exporter-subtree.spec.js +++ b/packages/ipfs-unixfs-exporter/test/exporter-subtree.spec.js @@ -1,7 +1,6 @@ /* eslint-env mocha */ 'use strict' -const { Buffer } = require('buffer') const chai = require('chai') chai.use(require('dirty-chai')) const expect = chai.expect @@ -13,6 +12,7 @@ const all = require('it-all') const last = require('it-last') const blockApi = require('./helpers/block') const randomBytes = require('it-buffer-stream') +const uint8ArrayConcat = require('uint8arrays/concat') const ONE_MEG = Math.pow(1024, 2) @@ -28,7 +28,7 @@ describe('exporter subtree', () => { }) it('exports a file 2 levels down', async () => { - const content = Buffer.concat(await all(randomBytes(ONE_MEG))) + const content = uint8ArrayConcat(await all(randomBytes(ONE_MEG))) const imported = await last(importer([{ path: './200Bytes.txt', @@ -44,12 +44,12 @@ describe('exporter subtree', () => { expect(exported.name).to.equal('200Bytes.txt') expect(exported.path).to.equal(`${imported.cid.toBaseEncodedString()}/level-1/200Bytes.txt`) - const data = Buffer.concat(await all(exported.content())) + const data = uint8ArrayConcat(await all(exported.content())) expect(data).to.deep.equal(content) }) it('exports a directory 1 level down', async () => { - const content = Buffer.concat(await all(randomBytes(ONE_MEG))) + const content = uint8ArrayConcat(await all(randomBytes(ONE_MEG))) const imported = await last(importer([{ path: './200Bytes.txt', content: randomBytes(ONE_MEG) @@ -70,7 +70,7 @@ describe('exporter subtree', () => { expect(files[1].name).to.equal('level-2') expect(files[1].path).to.equal(`${imported.cid.toBaseEncodedString()}/level-1/level-2`) - const data = Buffer.concat(await all(files[0].content())) + const data = uint8ArrayConcat(await all(files[0].content())) expect(data).to.deep.equal(content) }) @@ -88,7 +88,7 @@ describe('exporter subtree', () => { }) it('exports starting from non-protobuf node', async () => { - const content = Buffer.concat(await all(randomBytes(ONE_MEG))) + const content = uint8ArrayConcat(await all(randomBytes(ONE_MEG))) const imported = await last(importer([{ path: './level-1/200Bytes.txt', @@ -108,12 +108,12 @@ describe('exporter subtree', () => { expect(exported.name).to.equal('200Bytes.txt') expect(exported.path).to.equal(`${cborNodeCid.toBaseEncodedString()}/a/file/level-1/200Bytes.txt`) - const data = Buffer.concat(await all(exported.content())) + const data = uint8ArrayConcat(await all(exported.content())) expect(data).to.deep.equal(content) }) it('uses .path to export all components of a path', async () => { - const content = Buffer.concat(await all(randomBytes(ONE_MEG))) + const content = uint8ArrayConcat(await all(randomBytes(ONE_MEG))) const imported = await last(importer([{ path: './200Bytes.txt', diff --git a/packages/ipfs-unixfs-exporter/test/exporter.spec.js b/packages/ipfs-unixfs-exporter/test/exporter.spec.js index 172b90d4..e9322e9c 100644 --- a/packages/ipfs-unixfs-exporter/test/exporter.spec.js +++ b/packages/ipfs-unixfs-exporter/test/exporter.spec.js @@ -1,7 +1,6 @@ /* eslint-env mocha */ 'use strict' -const { Buffer } = require('buffer') const chai = require('chai') chai.use(require('dirty-chai')) chai.use(require('chai-as-promised')) @@ -24,6 +23,9 @@ const first = require('it-first') const randomBytes = require('it-buffer-stream') const AbortController = require('abort-controller') const blockApi = require('./helpers/block') +const uint8ArrayFromString = require('uint8arrays/from-string') +const uint8ArrayToString = require('uint8arrays/to-string') +const uint8ArrayConcat = require('uint8arrays/concat') const ONE_MEG = Math.pow(1024, 2) @@ -34,13 +36,13 @@ describe('exporter', () => { let smallFile before(async () => { - bigFile = Buffer.concat(await all(randomBytes(ONE_MEG * 1.2))) - smallFile = Buffer.concat(await all(randomBytes(200))) + bigFile = uint8ArrayConcat(await all(randomBytes(ONE_MEG * 1.2))) + smallFile = uint8ArrayConcat(await all(randomBytes(200))) }) async function dagPut (options = {}) { options.type = options.type || 'file' - options.content = options.content || Buffer.from([0x01, 0x02, 0x03]) + options.content = options.content || Uint8Array.from([0x01, 0x02, 0x03]) options.links = options.links || [] const file = new UnixFS({ @@ -76,14 +78,14 @@ describe('exporter', () => { const cid = await addTestFile({ file, strategy, path, maxChunkSize, rawLeaves }) const entry = await exporter(cid, ipld) - return Buffer.concat(await all(entry.content({ + return uint8ArrayConcat(await all(entry.content({ offset, length }))) } async function checkBytesThatSpanBlocks (strategy) { const bytesInABlock = 262144 - const bytes = Buffer.alloc(bytesInABlock + 100, 0) + const bytes = new Uint8Array(bytesInABlock + 100) bytes[bytesInABlock - 1] = 1 bytes[bytesInABlock] = 2 @@ -96,11 +98,11 @@ describe('exporter', () => { strategy }) - expect(data).to.deep.equal(Buffer.from([1, 2, 3])) + expect(data).to.deep.equal(Uint8Array.from([1, 2, 3])) } async function createAndPersistNode (ipld, type, data, children) { - const file = new UnixFS(type, data ? Buffer.from(data) : undefined) + const file = new UnixFS(type, data ? Uint8Array.from(data) : undefined) const links = [] for (let i = 0; i < children.length; i++) { @@ -141,7 +143,7 @@ describe('exporter', () => { expect(file).to.have.property('cid') expect(file).to.have.property('path', result.cid.toBaseEncodedString()) - const data = Buffer.concat(await all(file.content())) + const data = uint8ArrayConcat(await all(file.content())) expect(data).to.deep.equal(unmarsh.data) }) @@ -182,14 +184,14 @@ describe('exporter', () => { const length = 5 const result = await dagPut({ - content: Buffer.concat(await all(randomBytes(100))) + content: uint8ArrayConcat(await all(randomBytes(100))) }) const node = await ipld.get(result.cid) const unmarsh = UnixFS.unmarshal(node.Data) const file = await exporter(result.cid, ipld) - const data = Buffer.concat(await all(file.content({ + const data = uint8ArrayConcat(await all(file.content({ offset, length }))) @@ -198,7 +200,7 @@ describe('exporter', () => { }) it('exports a small file with links', async () => { - const content = Buffer.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) + const content = Uint8Array.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) const chunk1 = new UnixFS({ type: 'raw', data: content.slice(0, 5) @@ -232,7 +234,7 @@ describe('exporter', () => { }) const exported = await exporter(fileCid, ipld) - const data = Buffer.concat(await all(exported.content())) + const data = uint8ArrayConcat(await all(exported.content())) expect(data).to.deep.equal(content) }) @@ -242,14 +244,14 @@ describe('exporter', () => { const chunk = await dagPut({ content: randomBytes(100) }) const result = await dagPut({ - content: Buffer.concat(await all(randomBytes(100))), + content: uint8ArrayConcat(await all(randomBytes(100))), links: [ new DAGLink('', chunk.node.size, chunk.cid) ] }) const file = await exporter(result.cid, ipld) - const data = Buffer.concat(await all(file.content({ + const data = uint8ArrayConcat(await all(file.content({ offset, length }))) @@ -275,7 +277,7 @@ describe('exporter', () => { const offset = 0 const length = 5 - const bytes = Buffer.concat(await all(randomBytes(ONE_MEG * 6))) + const bytes = uint8ArrayConcat(await all(randomBytes(ONE_MEG * 6))) const cid = await addTestFile({ file: bytes @@ -284,7 +286,7 @@ describe('exporter', () => { const file = await exporter(cid, ipld) expect(file).to.have.property('path', cid.toBaseEncodedString()) - const data = Buffer.concat(await all(file.content({ + const data = uint8ArrayConcat(await all(file.content({ offset, length }))) @@ -295,7 +297,7 @@ describe('exporter', () => { it('exports the right chunks of files when offsets are specified', async function () { this.timeout(30 * 1000) const offset = 3 - const data = Buffer.alloc(300 * 1024) + const data = new Uint8Array(300 * 1024) const fileWithNoOffset = await addAndReadTestFile({ file: data, @@ -323,7 +325,7 @@ describe('exporter', () => { length: 0 }) - expect(data).to.eql(Buffer.alloc(0)) + expect(data).to.eql(new Uint8Array(0)) }) it('exports a directory', async () => { @@ -456,7 +458,7 @@ describe('exporter', () => { length }) - expect(data).to.eql(Buffer.alloc(0)) + expect(data).to.eql(new Uint8Array(0)) }) it('errors when exporting a chunk of a small file imported with raw leaves and negative length', async function () { @@ -525,7 +527,7 @@ describe('exporter', () => { })) const file = await exporter(imported.cid, ipld) - const data = Buffer.concat(await all(file.content())) + const data = uint8ArrayConcat(await all(file.content())) expect(data).to.deep.equal(bigFile) }) @@ -541,17 +543,17 @@ describe('exporter', () => { it('reads bytes with an offset', async () => { const data = await addAndReadTestFile({ - file: Buffer.from([0, 1, 2, 3]), + file: Uint8Array.from([0, 1, 2, 3]), offset: 1 }) - expect(data).to.deep.equal(Buffer.from([1, 2, 3])) + expect(data).to.deep.equal(Uint8Array.from([1, 2, 3])) }) it('errors when reading bytes with a negative offset', async () => { try { await addAndReadTestFile({ - file: Buffer.from([0, 1, 2, 3]), + file: Uint8Array.from([0, 1, 2, 3]), offset: -1 }) throw new Error('Should not have got this far') @@ -563,17 +565,17 @@ describe('exporter', () => { it('reads bytes with an offset and a length', async () => { const data = await addAndReadTestFile({ - file: Buffer.from([0, 1, 2, 3]), + file: Uint8Array.from([0, 1, 2, 3]), offset: 0, length: 1 }) - expect(data).to.deep.equal(Buffer.from([0])) + expect(data).to.deep.equal(Uint8Array.from([0])) }) it('reads returns an empty buffer when offset is equal to the file size', async () => { const data = await addAndReadTestFile({ - file: Buffer.from([0, 1, 2, 3]), + file: Uint8Array.from([0, 1, 2, 3]), offset: 4 }) @@ -582,7 +584,7 @@ describe('exporter', () => { it('reads returns an empty buffer when length is zero', async () => { const data = await addAndReadTestFile({ - file: Buffer.from([0, 1, 2, 3]), + file: Uint8Array.from([0, 1, 2, 3]), length: 0 }) @@ -592,7 +594,7 @@ describe('exporter', () => { it('errors when reading bytes with a negative length', async () => { try { await addAndReadTestFile({ - file: Buffer.from([0, 1, 2, 3, 4]), + file: Uint8Array.from([0, 1, 2, 3, 4]), offset: 2, length: -1 }) @@ -605,7 +607,7 @@ describe('exporter', () => { it('errors when reading bytes that start after the file ends', async () => { try { await addAndReadTestFile({ - file: Buffer.from([0, 1, 2, 3, 4]), + file: Uint8Array.from([0, 1, 2, 3, 4]), offset: 200 }) } catch (err) { @@ -616,12 +618,12 @@ describe('exporter', () => { it('reads bytes with an offset and a length', async () => { const data = await addAndReadTestFile({ - file: Buffer.from([0, 1, 2, 3, 4]), + file: Uint8Array.from([0, 1, 2, 3, 4]), offset: 1, length: 4 }) - expect(data).to.deep.equal(Buffer.from([1, 2, 3, 4])) + expect(data).to.deep.equal(Uint8Array.from([1, 2, 3, 4])) }) it('reads files that are split across lots of nodes', async function () { @@ -651,7 +653,7 @@ describe('exporter', () => { const file = await exporter(cid, ipld) while (offset < bigFile.length) { - const result = Buffer.concat(await all(file.content({ + const result = uint8ArrayConcat(await all(file.content({ offset, length: chunkSize }))) @@ -660,7 +662,7 @@ describe('exporter', () => { offset += result.length } - const buffer = Buffer.concat(results) + const buffer = uint8ArrayConcat(results) expect(buffer).to.deep.equal(bigFile) }) @@ -695,9 +697,9 @@ describe('exporter', () => { ]) const file = await exporter(node.cid, ipld) - const data = Buffer.concat(await all(file.content())) + const data = uint8ArrayConcat(await all(file.content())) - expect(data).to.deep.equal(Buffer.from([0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07])) + expect(data).to.deep.equal(Uint8Array.from([0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07])) }) it('exports file with data on some internal and leaf nodes', async () => { @@ -729,10 +731,10 @@ describe('exporter', () => { ]) const file = await exporter(node.cid, ipld) - const data = Buffer.concat(await all(file.content())) + const data = uint8ArrayConcat(await all(file.content())) expect(data).to.deep.equal( - Buffer.from([ + Uint8Array.from([ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15 ]) @@ -746,11 +748,11 @@ describe('exporter', () => { ]) const file = await exporter(node.cid, ipld) - const data = Buffer.concat(await all(file.content({ + const data = uint8ArrayConcat(await all(file.content({ offset: 4 }))) - expect(data).to.deep.equal(Buffer.from([0x04, 0x05, 0x06, 0x07])) + expect(data).to.deep.equal(Uint8Array.from([0x04, 0x05, 0x06, 0x07])) }) it('exports file with data on leaf nodes without emitting empty buffers', async function () { @@ -782,7 +784,7 @@ describe('exporter', () => { const file = await exporter(imported.cid, ipld) expect(CID.isCID(file.cid)).to.be.true() - const data = Buffer.concat(await all(file.content())) + const data = uint8ArrayConcat(await all(file.content())) expect(data).to.deep.equal(smallFile) }) @@ -820,7 +822,7 @@ describe('exporter', () => { }) it('errors if we try to export links from inside a raw node', async () => { - const cid = await ipld.put(Buffer.from([0, 1, 2, 3, 4]), mc.RAW) + const cid = await ipld.put(Uint8Array.from([0, 1, 2, 3, 4]), mc.RAW) try { await exporter(`${cid.toBaseEncodedString()}/lol`, ipld) @@ -830,7 +832,7 @@ describe('exporter', () => { }) it('errors we export a non-unixfs dag-pb node', async () => { - const cid = await ipld.put(new DAGNode(Buffer.from([0, 1, 2, 3, 4])), mc.DAG_PB) + const cid = await ipld.put(new DAGNode(Uint8Array.from([0, 1, 2, 3, 4])), mc.DAG_PB) try { await exporter(cid, ipld) @@ -865,7 +867,7 @@ describe('exporter', () => { it('exports a node with depth', async () => { const imported = await all(importer([{ path: '/foo/bar/baz.txt', - content: Buffer.from('hello world') + content: uint8ArrayFromString('hello world') }], block)) const exported = await exporter(imported[0].cid, ipld) @@ -876,13 +878,13 @@ describe('exporter', () => { it('exports a node recursively with depth', async () => { const dir = await last(importer([{ path: '/foo/bar/baz.txt', - content: Buffer.from('hello world') + content: uint8ArrayFromString('hello world') }, { path: '/foo/qux.txt', - content: Buffer.from('hello world') + content: uint8ArrayFromString('hello world') }, { path: '/foo/bar/quux.txt', - content: Buffer.from('hello world') + content: uint8ArrayFromString('hello world') }], block)) const exported = await all(exporter.recursive(dir.cid, ipld)) @@ -909,62 +911,62 @@ describe('exporter', () => { }) it('exports a CID encoded with the identity hash', async () => { - const data = Buffer.from('hello world') + const data = uint8ArrayFromString('hello world') const hash = mh.encode(data, 'identity') const cid = new CID(1, 'identity', hash) const exported = await exporter(cid, ipld) - const result = Buffer.concat(await all(exported.content())) + const result = uint8ArrayConcat(await all(exported.content())) expect(result).to.deep.equal(data) - expect(result.toString('utf8')).to.equal('hello world') + expect(uint8ArrayToString(result)).to.equal('hello world') }) it('exports a CID encoded with the identity hash with an offset', async () => { - const data = Buffer.from('hello world') + const data = uint8ArrayFromString('hello world') const hash = mh.encode(data, 'identity') const cid = new CID(1, 'identity', hash) const exported = await exporter(cid, ipld) - const result = Buffer.concat(await all(exported.content({ + const result = uint8ArrayConcat(await all(exported.content({ offset: 1 }))) - expect(result.toString('utf8')).to.equal('ello world') + expect(uint8ArrayToString(result)).to.equal('ello world') }) it('exports a CID encoded with the identity hash with a length', async () => { - const data = Buffer.from('hello world') + const data = uint8ArrayFromString('hello world') const hash = mh.encode(data, 'identity') const cid = new CID(1, 'identity', hash) const exported = await exporter(cid, ipld) - const result = Buffer.concat(await all(exported.content({ + const result = uint8ArrayConcat(await all(exported.content({ length: 1 }))) - expect(result.toString('utf8')).to.equal('h') + expect(uint8ArrayToString(result)).to.equal('h') }) it('exports a CID encoded with the identity hash with an offset and a length', async () => { - const data = Buffer.from('hello world') + const data = uint8ArrayFromString('hello world') const hash = mh.encode(data, 'identity') const cid = new CID(1, 'identity', hash) const exported = await exporter(cid, ipld) - const result = Buffer.concat(await all(exported.content({ + const result = uint8ArrayConcat(await all(exported.content({ offset: 3, length: 1 }))) - expect(result.toString('utf8')).to.equal('l') + expect(uint8ArrayToString(result)).to.equal('l') }) it('aborts a request', async () => { const abortController = new AbortController() // data should not be in IPLD - const data = Buffer.from(`hello world '${Math.random()}`) + const data = uint8ArrayFromString(`hello world '${Math.random()}`) const hash = mh.encode(data, 'sha2-256') const cid = new CID(1, 'dag-pb', hash) const message = `User aborted ${Math.random()}` diff --git a/packages/ipfs-unixfs-exporter/test/helpers/create-shard.js b/packages/ipfs-unixfs-exporter/test/helpers/create-shard.js index f51b7c72..836ac9e9 100644 --- a/packages/ipfs-unixfs-exporter/test/helpers/create-shard.js +++ b/packages/ipfs-unixfs-exporter/test/helpers/create-shard.js @@ -1,6 +1,5 @@ 'use strict' -const { Buffer } = require('buffer') const importer = require('ipfs-unixfs-importer') const SHARD_SPLIT_THRESHOLD = 10 @@ -12,7 +11,7 @@ const createShard = (numFiles, ipld) => { const createShardWithFileNames = (numFiles, fileName, ipld) => { const files = new Array(numFiles).fill(0).map((_, index) => ({ path: fileName(index), - content: Buffer.from([0, 1, 2, 3, 4, index]) + content: Uint8Array.from([0, 1, 2, 3, 4, index]) })) return createShardWithFiles(files, ipld) diff --git a/packages/ipfs-unixfs-importer/package.json b/packages/ipfs-unixfs-importer/package.json index 3f97d80b..5b102b0c 100644 --- a/packages/ipfs-unixfs-importer/package.json +++ b/packages/ipfs-unixfs-importer/package.json @@ -36,7 +36,6 @@ "homepage": "https://github.com/ipfs/js-ipfs-unixfs#readme", "devDependencies": { "aegir": "^25.0.0", - "buffer": "^5.6.0", "chai": "^4.2.0", "cids": "^0.8.0", "detect-node": "^2.0.4", @@ -47,7 +46,7 @@ "it-buffer-stream": "^1.0.2", "it-last": "^1.0.1", "merge-options": "^2.0.0", - "multicodec": "^1.0.0", + "multicodec": "^2.0.0", "nyc": "^15.0.0", "sinon": "^9.0.1" }, @@ -57,13 +56,14 @@ "hamt-sharding": "^1.0.0", "ipfs-unixfs": "^2.0.1", "ipfs-utils": "^2.3.1", - "ipld-dag-pb": "^0.19.0", + "ipld-dag-pb": "ipld/js-ipld-dag-pb#fix/replace-node-buffers-with-unit8arrays", "it-all": "^1.0.1", "it-batch": "^1.0.3", "it-first": "^1.0.1", "it-parallel-batch": "^1.0.3", "merge-options": "^2.0.0", - "multihashing-async": "^1.0.0", - "rabin-wasm": "^0.1.1" + "multihashing-async": "^2.0.0", + "rabin-wasm": "^0.1.1", + "uint8arrays": "^1.0.0" } } diff --git a/packages/ipfs-unixfs-importer/src/dag-builder/validate-chunks.js b/packages/ipfs-unixfs-importer/src/dag-builder/validate-chunks.js index a2167277..2fe95ddc 100644 --- a/packages/ipfs-unixfs-importer/src/dag-builder/validate-chunks.js +++ b/packages/ipfs-unixfs-importer/src/dag-builder/validate-chunks.js @@ -1,7 +1,7 @@ 'use strict' const errCode = require('err-code') -const utf8Encoder = require('../utils/utf8-encoder') +const uint8ArrayFromString = require('uint8arrays/from-string') // make sure the content only emits buffer-a-likes async function * validateChunks (source) { @@ -11,7 +11,7 @@ async function * validateChunks (source) { } if (typeof content === 'string' || content instanceof String) { - yield utf8Encoder.encode(content) + yield uint8ArrayFromString(content) } else if (Array.isArray(content)) { yield Uint8Array.from(content) } else { diff --git a/packages/ipfs-unixfs-importer/src/dir-sharded.js b/packages/ipfs-unixfs-importer/src/dir-sharded.js index 44bbe975..2810ae49 100644 --- a/packages/ipfs-unixfs-importer/src/dir-sharded.js +++ b/packages/ipfs-unixfs-importer/src/dir-sharded.js @@ -10,10 +10,10 @@ const Dir = require('./dir') const persist = require('./utils/persist') const Bucket = require('hamt-sharding') const mergeOptions = require('merge-options').bind({ ignoreUndefined: true }) -const utf8Encoder = require('./utils/utf8-encoder') +const uint8ArrayFromString = require('uint8arrays/from-string') const hashFn = async function (value) { - const buf = utf8Encoder.encode(value) + const buf = uint8ArrayFromString(value) const hash = await multihashing(buf, 'murmur3-128') // Multihashing inserts preamble of 2 bytes. Remove it. diff --git a/packages/ipfs-unixfs-importer/src/utils/utf8-encoder.js b/packages/ipfs-unixfs-importer/src/utils/utf8-encoder.js deleted file mode 100644 index 97e202ad..00000000 --- a/packages/ipfs-unixfs-importer/src/utils/utf8-encoder.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict' - -const TextEncoder = require('ipfs-utils/src/text-encoder') - -module.exports = new TextEncoder('utf8') diff --git a/packages/ipfs-unixfs-importer/test/benchmark.spec.js b/packages/ipfs-unixfs-importer/test/benchmark.spec.js index aa85e56e..57f18fde 100644 --- a/packages/ipfs-unixfs-importer/test/benchmark.spec.js +++ b/packages/ipfs-unixfs-importer/test/benchmark.spec.js @@ -1,7 +1,6 @@ /* eslint-env mocha */ 'use strict' -const { Buffer } = require('buffer') const importer = require('../src') const IPLD = require('ipld') @@ -55,7 +54,7 @@ describe.skip('benchmark', function () { } } - const buf = Buffer.alloc(CHUNK_SIZE).fill(0) + const buf = new Uint8Array(CHUNK_SIZE).fill(0) await all(importer([{ path: '200Bytes.txt', diff --git a/packages/ipfs-unixfs-importer/test/builder-dir-sharding.spec.js b/packages/ipfs-unixfs-importer/test/builder-dir-sharding.spec.js index 523e92f2..d3cbdd05 100644 --- a/packages/ipfs-unixfs-importer/test/builder-dir-sharding.spec.js +++ b/packages/ipfs-unixfs-importer/test/builder-dir-sharding.spec.js @@ -1,7 +1,6 @@ /* eslint-env mocha */ 'use strict' -const { Buffer } = require('buffer') const importer = require('../src') const exporter = require('ipfs-unixfs-exporter') @@ -13,6 +12,9 @@ const inMemory = require('ipld-in-memory') const all = require('it-all') const last = require('it-last') const blockApi = require('./helpers/block') +const uint8ArrayFromString = require('uint8arrays/from-string') +const uint8ArrayToString = require('uint8arrays/to-string') +const uint8ArrayConcat = require('uint8arrays/concat') describe('builder: directory sharding', () => { let ipld @@ -25,7 +27,7 @@ describe('builder: directory sharding', () => { describe('basic dirbuilder', () => { it('yields a non-sharded dir', async () => { - const content = Buffer.from('i have the best bytes') + const content = uint8ArrayFromString('i have the best bytes') const nodes = await all(importer([{ path: 'a/b', content @@ -43,13 +45,13 @@ describe('builder: directory sharding', () => { const fileNode = await exporter(nodes[0].cid, ipld) expect(fileNode.unixfs.type).to.equal('file') - expect(Buffer.concat(await all(fileNode.content()))).to.deep.equal(content) + expect(uint8ArrayConcat(await all(fileNode.content()))).to.deep.equal(content) }) it('yields a sharded dir', async () => { const nodes = await all(importer([{ path: 'a/b', - content: Buffer.from('i have the best bytes') + content: uint8ArrayFromString('i have the best bytes') }], block, { shardSplitThreshold: 0 // always shard })) @@ -67,7 +69,7 @@ describe('builder: directory sharding', () => { const content = 'i have the best bytes' const nodes = await all(importer([{ path: 'a/b', - content: Buffer.from(content) + content: uint8ArrayFromString(content) }], block, { shardSplitThreshold: Infinity // never shard })) @@ -86,16 +88,16 @@ describe('builder: directory sharding', () => { expect(files[0].path).to.be.eql(expectedHash + '/b') expect(files[0].unixfs.fileSize()).to.be.eql(content.length) - const fileContent = Buffer.concat(await all(files[0].content())) + const fileContent = uint8ArrayConcat(await all(files[0].content())) - expect(fileContent.toString()).to.equal(content) + expect(uint8ArrayToString(fileContent)).to.equal(content) }) it('exporting sharded hash results in the correct files', async () => { const content = 'i have the best bytes' const nodes = await all(importer([{ path: 'a/b', - content: Buffer.from(content) + content: uint8ArrayFromString(content) }], block, { shardSplitThreshold: 0 // always shard })) @@ -114,9 +116,9 @@ describe('builder: directory sharding', () => { expect(files[0].path).to.be.eql(expectedHash + '/b') expect(files[0].unixfs.fileSize()).to.be.eql(content.length) - const fileContent = Buffer.concat(await all(files[0].content())) + const fileContent = uint8ArrayConcat(await all(files[0].content())) - expect(fileContent.toString()).to.equal(content) + expect(uint8ArrayToString(fileContent)).to.equal(content) }) }) @@ -131,7 +133,7 @@ describe('builder: directory sharding', () => { for (let i = 0; i < maxDirs; i++) { yield { path: 'big/' + i.toString().padStart(4, '0'), - content: Buffer.from(i.toString()) + content: uint8ArrayFromString(i.toString()) } } } @@ -150,7 +152,7 @@ describe('builder: directory sharding', () => { for (let i = 0; i < maxDirs; i++) { yield { path: 'big/' + i.toString().padStart(4, '0'), - content: Buffer.from(i.toString()) + content: uint8ArrayFromString(i.toString()) } } } @@ -163,8 +165,8 @@ describe('builder: directory sharding', () => { const dir = await exporter(nodes[nodes.length - 1].cid, ipld) for await (const entry of dir.content()) { - const content = Buffer.concat(await all(entry.content())) - expect(content.toString()).to.equal(parseInt(entry.name, 10).toString()) + const content = uint8ArrayConcat(await all(entry.content())) + expect(uint8ArrayToString(content)).to.equal(parseInt(entry.name, 10).toString()) } }) }) @@ -194,7 +196,7 @@ describe('builder: directory sharding', () => { yield { path: dir.concat(i.toString().padStart(4, '0')).join('/'), - content: Buffer.from(i.toString()) + content: uint8ArrayFromString(i.toString()) } pending-- @@ -220,8 +222,8 @@ describe('builder: directory sharding', () => { const verifyContent = async (node) => { if (node.unixfs.type === 'file') { const bufs = await all(node.content()) - const content = Buffer.concat(bufs) - expect(content.toString()).to.equal(parseInt(node.name, 10).toString()) + const content = uint8ArrayConcat(bufs) + expect(uint8ArrayToString(content)).to.equal(parseInt(node.name, 10).toString()) } else { for await (const entry of node.content()) { await verifyContent(entry) @@ -236,7 +238,7 @@ describe('builder: directory sharding', () => { const collectContent = async (node, entries = {}) => { if (node.unixfs.type === 'file') { entries[node.path] = { - content: Buffer.concat(await all(node.content())).toString() + content: uint8ArrayToString(uint8ArrayConcat(await all(node.content()))) } } else { entries[node.path] = node @@ -291,8 +293,8 @@ describe('builder: directory sharding', () => { const node = await exporter(exportHash, ipld) expect(node.path).to.equal(exportHash) - const content = Buffer.concat(await all(node.content())) - expect(content.toString()).to.equal('2000') + const content = uint8ArrayConcat(await all(node.content())) + expect(uint8ArrayToString(content)).to.equal('2000') }) }) }) diff --git a/packages/ipfs-unixfs-importer/test/builder-only-hash.spec.js b/packages/ipfs-unixfs-importer/test/builder-only-hash.spec.js index 4c28967b..afe53e06 100644 --- a/packages/ipfs-unixfs-importer/test/builder-only-hash.spec.js +++ b/packages/ipfs-unixfs-importer/test/builder-only-hash.spec.js @@ -1,7 +1,6 @@ /* eslint-env mocha */ 'use strict' -const { Buffer } = require('buffer') const chai = require('chai') chai.use(require('dirty-chai')) const expect = chai.expect @@ -23,7 +22,7 @@ describe('builder: onlyHash', () => { it('will only chunk and hash if passed an "onlyHash" option', async () => { const nodes = await all(builder([{ path: 'foo.txt', - content: Buffer.from([0, 1, 2, 3, 4]) + content: Uint8Array.from([0, 1, 2, 3, 4]) }], block, { onlyHash: true, chunker: 'fixed', diff --git a/packages/ipfs-unixfs-importer/test/builder.spec.js b/packages/ipfs-unixfs-importer/test/builder.spec.js index fc1655ff..0e5c28fd 100644 --- a/packages/ipfs-unixfs-importer/test/builder.spec.js +++ b/packages/ipfs-unixfs-importer/test/builder.spec.js @@ -1,7 +1,6 @@ /* eslint-env mocha */ 'use strict' -const { Buffer } = require('buffer') const chai = require('chai') chai.use(require('dirty-chai')) const expect = chai.expect @@ -12,6 +11,7 @@ const UnixFS = require('ipfs-unixfs') const builder = require('../src/dag-builder') const first = require('it-first') const blockApi = require('./helpers/block') +const uint8ArrayFromString = require('uint8arrays/from-string') describe('builder', () => { let ipld @@ -44,7 +44,7 @@ describe('builder', () => { const content = String(Math.random() + Date.now()) const inputFile = { path: content + '.txt', - content: Buffer.from(content) + content: uint8ArrayFromString(content) } const imported = await (await first(builder([inputFile], block, options)))() @@ -75,7 +75,7 @@ describe('builder', () => { const inputFile = { path: content + '.txt', // Bigger than maxChunkSize - content: Buffer.alloc(262144 + 5).fill(1) + content: new Uint8Array(262144 + 5).fill(1) } const imported = await (await first(builder([inputFile], block, options)))() diff --git a/packages/ipfs-unixfs-importer/test/chunker-custom.spec.js b/packages/ipfs-unixfs-importer/test/chunker-custom.spec.js index 36e0b40f..7c3dff4f 100644 --- a/packages/ipfs-unixfs-importer/test/chunker-custom.spec.js +++ b/packages/ipfs-unixfs-importer/test/chunker-custom.spec.js @@ -2,7 +2,6 @@ 'use strict' const importer = require('../src') -const { Buffer } = require('buffer') const chai = require('chai') chai.use(require('dirty-chai')) const expect = chai.expect @@ -10,12 +9,13 @@ const IPLD = require('ipld') const inMemory = require('ipld-in-memory') const mc = require('multicodec') const blockApi = require('./helpers/block') +const uint8ArrayFromString = require('uint8arrays/from-string') // eslint bug https://github.com/eslint/eslint/issues/12459 // eslint-disable-next-line require-await const iter = async function * () { - yield Buffer.from('one') - yield Buffer.from('two') + yield uint8ArrayFromString('one') + yield uint8ArrayFromString('two') } describe('custom chunker', function () { @@ -57,11 +57,11 @@ describe('custom chunker', function () { const multi = async function * () { yield { size: 11, - cid: await inmem.put(Buffer.from('hello world'), mc.RAW) + cid: await inmem.put(uint8ArrayFromString('hello world'), mc.RAW) } yield { size: 11, - cid: await inmem.put(Buffer.from('hello world'), mc.RAW) + cid: await inmem.put(uint8ArrayFromString('hello world'), mc.RAW) } } it('works with multiple parts', fromPartsTest(multi, 120)) @@ -69,7 +69,7 @@ describe('custom chunker', function () { const single = async function * () { yield { size: 11, - cid: await inmem.put(Buffer.from('hello world'), mc.RAW) + cid: await inmem.put(uint8ArrayFromString('hello world'), mc.RAW) } } it('works with single part', fromPartsTest(single, 11)) diff --git a/packages/ipfs-unixfs-importer/test/chunker-fixed-size.spec.js b/packages/ipfs-unixfs-importer/test/chunker-fixed-size.spec.js index 61193957..bcdddbf8 100644 --- a/packages/ipfs-unixfs-importer/test/chunker-fixed-size.spec.js +++ b/packages/ipfs-unixfs-importer/test/chunker-fixed-size.spec.js @@ -1,7 +1,6 @@ /* eslint-env mocha */ 'use strict' -const { Buffer } = require('buffer') const chunker = require('../src/chunker/fixed-size') const chai = require('chai') chai.use(require('dirty-chai')) @@ -10,14 +9,16 @@ const isNode = require('detect-node') const all = require('it-all') const loadFixture = require('aegir/fixtures') const rawFile = loadFixture((isNode ? __dirname : 'test') + '/fixtures/1MiB.txt') +const uint8ArrayFromString = require('uint8arrays/from-string') +const uint8ArrayConcat = require('uint8arrays/concat') describe('chunker: fixed size', function () { this.timeout(30000) it('chunks non flat buffers', async () => { - const b1 = Buffer.alloc(2 * 256) - const b2 = Buffer.alloc(1 * 256) - const b3 = Buffer.alloc(5 * 256) + const b1 = new Uint8Array(2 * 256) + const b2 = new Uint8Array(1 * 256) + const b3 = new Uint8Array(5 * 256) b1.fill('a') b2.fill('b') @@ -35,7 +36,7 @@ describe('chunker: fixed size', function () { it('256 Bytes chunks', async () => { const input = [] - const buf = Buffer.from('a') + const buf = uint8ArrayFromString('a') for (let i = 0; i < (256 * 12); i++) { input.push(buf) @@ -64,7 +65,7 @@ describe('chunker: fixed size', function () { it('256 KiB chunks of non scalar filesize', async () => { const KiB256 = 262144 - const file = Buffer.concat([rawFile, Buffer.from('hello')]) + const file = uint8ArrayConcat([rawFile, uint8ArrayFromString('hello')]) const chunks = await all(chunker([file], { maxChunkSize: KiB256 diff --git a/packages/ipfs-unixfs-importer/test/chunker-rabin.spec.js b/packages/ipfs-unixfs-importer/test/chunker-rabin.spec.js index 3cf78a49..93cb3311 100644 --- a/packages/ipfs-unixfs-importer/test/chunker-rabin.spec.js +++ b/packages/ipfs-unixfs-importer/test/chunker-rabin.spec.js @@ -1,7 +1,6 @@ /* eslint-env mocha */ 'use strict' -const { Buffer } = require('buffer') const chunker = require('../src/chunker/rabin') const chai = require('chai') chai.use(require('dirty-chai')) @@ -9,6 +8,8 @@ const expect = chai.expect const loadFixture = require('aegir/fixtures') const isNode = require('detect-node') const all = require('it-all') +const uint8ArrayFromString = require('uint8arrays/from-string') +const uint8ArrayConcat = require('uint8arrays/concat') const rawFile = loadFixture((isNode ? __dirname : 'test') + '/fixtures/1MiB.txt') @@ -22,13 +23,13 @@ describe('chunker: rabin', function () { } it('chunks non flat buffers', async () => { - const b1 = Buffer.alloc(2 * 256) - const b2 = Buffer.alloc(1 * 256) - const b3 = Buffer.alloc(5 * 256) + const b1 = new Uint8Array(2 * 256) + const b2 = new Uint8Array(1 * 256) + const b3 = new Uint8Array(5 * 256) - b1.fill('a') - b2.fill('b') - b3.fill('c') + b1.fill('a'.charCodeAt(0)) + b2.fill('b'.charCodeAt(0)) + b3.fill('c'.charCodeAt(0)) const chunks = await all(chunker([b1, b2, b3], { ...defaultOptions, @@ -51,8 +52,8 @@ describe('chunker: rabin', function () { }) it('uses default min and max chunk size when only avgChunkSize is specified', async () => { - const b1 = Buffer.alloc(10 * 256) - b1.fill('a') + const b1 = new Uint8Array(10 * 256) + b1.fill('a'.charCodeAt(0)) const chunks = await all(chunker([b1], { ...defaultOptions, @@ -69,7 +70,7 @@ describe('chunker: rabin', function () { it('256 KiB avg chunks of non scalar filesize', async () => { const KiB256 = 262144 - const file = Buffer.concat([rawFile, Buffer.from('hello')]) + const file = uint8ArrayConcat([rawFile, uint8ArrayFromString('hello')]) const opts = { ...defaultOptions, minChunkSize: KiB256 / 3, @@ -115,7 +116,7 @@ describe('chunker: rabin', function () { }) it('uses the min chunk size when max and avg are too small', async () => { - const file = Buffer.concat([rawFile, Buffer.from('hello')]) + const file = uint8ArrayConcat([rawFile, uint8ArrayFromString('hello')]) const opts = { ...defaultOptions, minChunkSize: 100, diff --git a/packages/ipfs-unixfs-importer/test/helpers/collect-leaf-cids.js b/packages/ipfs-unixfs-importer/test/helpers/collect-leaf-cids.js index 9ee910d5..26354e69 100644 --- a/packages/ipfs-unixfs-importer/test/helpers/collect-leaf-cids.js +++ b/packages/ipfs-unixfs-importer/test/helpers/collect-leaf-cids.js @@ -1,12 +1,10 @@ 'use strict' -const { Buffer } = require('buffer') - module.exports = function (cid, ipld) { async function * traverse (cid) { const node = await ipld.get(cid) - if (Buffer.isBuffer(node) || !node.Links.length) { + if (node instanceof Uint8Array || !node.Links.length) { yield { node, cid diff --git a/packages/ipfs-unixfs-importer/test/helpers/finite-pseudorandom-byte-stream.js b/packages/ipfs-unixfs-importer/test/helpers/finite-pseudorandom-byte-stream.js index 9051f1cd..0371b3f6 100644 --- a/packages/ipfs-unixfs-importer/test/helpers/finite-pseudorandom-byte-stream.js +++ b/packages/ipfs-unixfs-importer/test/helpers/finite-pseudorandom-byte-stream.js @@ -1,11 +1,11 @@ 'use strict' -const { Buffer } = require('buffer') + const REPEATABLE_CHUNK_SIZE = 300000 module.exports = function * (maxSize, seed) { const chunks = Math.ceil(maxSize / REPEATABLE_CHUNK_SIZE) let emitted = 0 - const buf = Buffer.alloc(REPEATABLE_CHUNK_SIZE) + const buf = new Uint8Array(REPEATABLE_CHUNK_SIZE) while (emitted !== chunks) { for (let i = 0; i < buf.length; i++) { diff --git a/packages/ipfs-unixfs-importer/test/helpers/random-byte-stream.js b/packages/ipfs-unixfs-importer/test/helpers/random-byte-stream.js index 5d6c87fc..38cf2748 100644 --- a/packages/ipfs-unixfs-importer/test/helpers/random-byte-stream.js +++ b/packages/ipfs-unixfs-importer/test/helpers/random-byte-stream.js @@ -1,12 +1,11 @@ 'use strict' -const { Buffer } = require('buffer') module.exports = function * randomByteStream (seed) { while (true) { const r = Math.floor(random(seed) * 256) seed = r - yield Buffer.from([r]) + yield Uint8Array.from([r]) } } diff --git a/packages/ipfs-unixfs-importer/test/import-export-nested-dir.spec.js b/packages/ipfs-unixfs-importer/test/import-export-nested-dir.spec.js index d6f6142f..14df71e0 100644 --- a/packages/ipfs-unixfs-importer/test/import-export-nested-dir.spec.js +++ b/packages/ipfs-unixfs-importer/test/import-export-nested-dir.spec.js @@ -1,7 +1,6 @@ /* eslint-env mocha */ 'use strict' -const { Buffer } = require('buffer') const chai = require('chai') chai.use(require('dirty-chai')) const expect = chai.expect @@ -11,6 +10,9 @@ const all = require('it-all') const importer = require('../src') const exporter = require('ipfs-unixfs-exporter') const blockApi = require('./helpers/block') +const uint8ArrayFromString = require('uint8arrays/from-string') +const uint8ArrayToString = require('uint8arrays/to-string') +const uint8ArrayConcat = require('uint8arrays/concat') describe('import and export: directory', () => { const rootHash = 'QmdCrquDwd7RfZ6GCZFEVADwe8uyyw1YmF9mtAB7etDgmK' @@ -27,16 +29,16 @@ describe('import and export: directory', () => { const source = [{ path: 'a/b/c/d/e', - content: Buffer.from('banana') + content: uint8ArrayFromString('banana') }, { path: 'a/b/c/d/f', - content: Buffer.from('strawberry') + content: uint8ArrayFromString('strawberry') }, { path: 'a/b/g', - content: Buffer.from('ice') + content: uint8ArrayFromString('ice') }, { path: 'a/b/h', - content: Buffer.from('cream') + content: uint8ArrayFromString('cream') }] const files = await all(importer(source, block)) @@ -97,7 +99,7 @@ async function recursiveExport (node, path, entries = []) { } else { entries.push({ path: `${path}/${entry.name}`, - content: Buffer.concat(await all(entry.content())).toString() + content: uint8ArrayToString(uint8ArrayConcat(await all(entry.content()))) }) } } diff --git a/packages/ipfs-unixfs-importer/test/importer.spec.js b/packages/ipfs-unixfs-importer/test/importer.spec.js index 69b5a576..629d04fd 100644 --- a/packages/ipfs-unixfs-importer/test/importer.spec.js +++ b/packages/ipfs-unixfs-importer/test/importer.spec.js @@ -3,7 +3,6 @@ const importer = require('../src') const exporter = require('ipfs-unixfs-exporter') -const { Buffer } = require('buffer') const extend = require('merge-options') const chai = require('chai') chai.use(require('dirty-chai')) @@ -20,6 +19,8 @@ const smallFile = loadFixture((isNode ? __dirname : 'test') + '/fixtures/200Byte const all = require('it-all') const first = require('it-first') const blockApi = require('./helpers/block') +const uint8ArrayConcat = require('uint8arrays/concat') +const uint8ArrayFromString = require('uint8arrays/from-string') function stringifyMh (files) { return files.map((file) => { @@ -181,7 +182,7 @@ const strategyOverrides = { const checkLeafNodeTypes = async (block, ipld, options, expected) => { const file = await first(importer([{ path: 'foo', - content: Buffer.alloc(262144 + 5).fill(1) + content: new Uint8Array(262144 + 5).fill(1) }], block, options)) const node = await ipld.get(file.cid) @@ -203,7 +204,7 @@ const checkLeafNodeTypes = async (block, ipld, options, expected) => { const checkNodeLinks = async (block, ipld, options, expected) => { for await (const file of importer([{ path: 'foo', - content: Buffer.alloc(100).fill(1) + content: new Uint8Array(100).fill(1) }], block, options)) { const node = await ipld.get(file.cid) const meta = UnixFs.unmarshal(node.Data) @@ -360,7 +361,7 @@ strategies.forEach((strategy) => { it('doesn\'t yield anything on empty file', async () => { const files = await all(importer([{ path: 'emptyfile', - content: Buffer.alloc(0) + content: new Uint8Array(0) }], block, options)) expect(files.length).to.eql(1) @@ -627,7 +628,7 @@ strategies.forEach((strategy) => { const content = String(Math.random() + Date.now()) const files = await all(importer([{ path: content + '.txt', - content: Buffer.from(content) + content: uint8ArrayFromString(content) }], block, { onlyHash: true })) @@ -667,7 +668,7 @@ strategies.forEach((strategy) => { path = path[path.length - 1] === '/' ? path : path + '/' return { path: path + name + '.txt', - content: Buffer.alloc(size).fill(1) + content: new Uint8Array(size).fill(1) } } @@ -715,7 +716,7 @@ strategies.forEach((strategy) => { chunks.push(chunk) } - expect(Buffer.concat(chunks)).to.deep.equal(inputFile.content) + expect(uint8ArrayConcat(chunks)).to.deep.equal(inputFile.content) } }) @@ -1032,7 +1033,7 @@ describe('configuration', () => { expect(builtTree).to.be.true() }) - it('alllows configuring with custom chunker', async () => { + it('allows configuring with custom chunker', async () => { let validated = false let chunked = false const block = { @@ -1040,7 +1041,7 @@ describe('configuration', () => { } const entries = await all(importer([{ path: 'path', - content: 'content' + content: uint8ArrayFromString('content') }], block, { chunkValidator: async function * (source, opts) { // eslint-disable-line require-await validated = true diff --git a/packages/ipfs-unixfs/package.json b/packages/ipfs-unixfs/package.json index dae1c7b3..87cb1489 100644 --- a/packages/ipfs-unixfs/package.json +++ b/packages/ipfs-unixfs/package.json @@ -42,6 +42,6 @@ }, "dependencies": { "err-code": "^2.0.0", - "protons": "^1.2.0" + "protons": "ipfs/protons#fix/replace-node-buffers-with-uint8arrays" } } diff --git a/packages/ipfs-unixfs/test/unixfs-format.spec.js b/packages/ipfs-unixfs/test/unixfs-format.spec.js index 76cbe50f..c515c80f 100644 --- a/packages/ipfs-unixfs/test/unixfs-format.spec.js +++ b/packages/ipfs-unixfs/test/unixfs-format.spec.js @@ -12,13 +12,13 @@ const raw = loadFixture('test/fixtures/raw.unixfs') const directory = loadFixture('test/fixtures/directory.unixfs') const file = loadFixture('test/fixtures/file.txt.unixfs') const symlink = loadFixture('test/fixtures/symlink.txt.unixfs') -const { Buffer } = require('buffer') const protons = require('protons') const unixfsData = protons(require('../src/unixfs.proto')).Data +const uint8ArrayFromString = require('uint8arrays/from-string') describe('unixfs-format', () => { it('old style constructor', () => { - const buf = Buffer.from('hello world') + const buf = uint8ArrayFromString('hello world') const entry = new UnixFS('file', buf) expect(entry.type).to.equal('file') @@ -45,7 +45,7 @@ describe('unixfs-format', () => { it('raw', () => { const data = new UnixFS({ type: 'raw', - data: Buffer.from('bananas') + data: uint8ArrayFromString('bananas') }) const marshaled = data.marshal() const unmarshaled = UnixFS.unmarshal(marshaled) @@ -82,7 +82,7 @@ describe('unixfs-format', () => { it('file', () => { const data = new UnixFS({ type: 'file', - data: Buffer.from('batata') + data: uint8ArrayFromString('batata') }) const marshaled = data.marshal() const unmarshaled = UnixFS.unmarshal(marshaled) @@ -453,7 +453,7 @@ describe('unixfs-format', () => { describe('interop', () => { it('raw', () => { const unmarshaled = UnixFS.unmarshal(raw) - expect(unmarshaled.data).to.eql(Buffer.from('Hello UnixFS\n')) + expect(unmarshaled.data).to.eql(uint8ArrayFromString('Hello UnixFS\n')) expect(unmarshaled.type).to.equal('file') expect(unmarshaled.marshal()).to.deep.equal(raw) }) @@ -467,7 +467,7 @@ describe('unixfs-format', () => { it('file', () => { const unmarshaled = UnixFS.unmarshal(file) - expect(unmarshaled.data).to.deep.equal(Buffer.from('Hello UnixFS\n')) + expect(unmarshaled.data).to.deep.equal(uint8ArrayFromString('Hello UnixFS\n')) expect(unmarshaled.type).to.equal('file') expect(unmarshaled.marshal()).to.deep.equal(file) }) @@ -477,7 +477,7 @@ describe('unixfs-format', () => { it('symlink', () => { const unmarshaled = UnixFS.unmarshal(symlink) - expect(unmarshaled.data).to.deep.equal(Buffer.from('file.txt')) + expect(unmarshaled.data).to.deep.equal(uint8ArrayFromString('file.txt')) expect(unmarshaled.type).to.equal('symlink') // TODO: waiting on https://github.com/ipfs/js-ipfs-data-importing/issues/3#issuecomment-182440079 // expect(unmarshaled.marshal()).to.deep.equal(symlink) @@ -490,6 +490,6 @@ describe('unixfs-format', () => { }) const marshaled = data.marshal() - expect(marshaled).to.deep.equal(Buffer.from([0x08, 0x02, 0x18, 0x00])) + expect(marshaled).to.deep.equal(Uint8Array.from([0x08, 0x02, 0x18, 0x00])) }) }) From 353839bb96e71cf81cfba53670933b15b06aebad Mon Sep 17 00:00:00 2001 From: achingbrain Date: Mon, 3 Aug 2020 15:58:34 +0100 Subject: [PATCH 2/4] chore: fix up deps --- packages/ipfs-unixfs-exporter/package.json | 3 --- packages/ipfs-unixfs-exporter/test/exporter-sharded.spec.js | 4 +--- packages/ipfs-unixfs-exporter/test/exporter-subtree.spec.js | 4 +--- packages/ipfs-unixfs-exporter/test/exporter.spec.js | 4 +--- packages/ipfs-unixfs-importer/package.json | 2 -- packages/ipfs-unixfs-importer/test/builder-balanced.spec.js | 4 +--- .../ipfs-unixfs-importer/test/builder-dir-sharding.spec.js | 4 +--- packages/ipfs-unixfs-importer/test/builder-flat.spec.js | 4 +--- packages/ipfs-unixfs-importer/test/builder-only-hash.spec.js | 4 +--- .../ipfs-unixfs-importer/test/builder-trickle-dag.spec.js | 4 +--- packages/ipfs-unixfs-importer/test/builder.spec.js | 4 +--- packages/ipfs-unixfs-importer/test/chunker-custom.spec.js | 4 +--- .../ipfs-unixfs-importer/test/chunker-fixed-size.spec.js | 4 +--- packages/ipfs-unixfs-importer/test/chunker-rabin.spec.js | 4 +--- .../test/hash-parity-with-go-ipfs.spec.js | 4 +--- .../test/import-export-nested-dir.spec.js | 4 +--- packages/ipfs-unixfs-importer/test/import-export.spec.js | 4 +--- packages/ipfs-unixfs-importer/test/importer.spec.js | 4 +--- packages/ipfs-unixfs/package.json | 5 ++--- packages/ipfs-unixfs/test/unixfs-format.spec.js | 4 +--- 20 files changed, 19 insertions(+), 59 deletions(-) diff --git a/packages/ipfs-unixfs-exporter/package.json b/packages/ipfs-unixfs-exporter/package.json index ac2c8172..e618020c 100644 --- a/packages/ipfs-unixfs-exporter/package.json +++ b/packages/ipfs-unixfs-exporter/package.json @@ -37,10 +37,7 @@ "devDependencies": { "abort-controller": "^3.0.0", "aegir": "^25.0.0", - "chai": "^4.2.0", - "chai-as-promised": "^7.1.1", "detect-node": "^2.0.4", - "dirty-chai": "^2.0.1", "ipfs-unixfs-importer": "^3.0.1", "ipld": "^0.26.1", "ipld-dag-pb": "ipld/js-ipld-dag-pb#fix/replace-node-buffers-with-unit8arrays", diff --git a/packages/ipfs-unixfs-exporter/test/exporter-sharded.spec.js b/packages/ipfs-unixfs-exporter/test/exporter-sharded.spec.js index bd005d45..626beee0 100644 --- a/packages/ipfs-unixfs-exporter/test/exporter-sharded.spec.js +++ b/packages/ipfs-unixfs-exporter/test/exporter-sharded.spec.js @@ -1,9 +1,7 @@ /* eslint-env mocha */ 'use strict' -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const IPLD = require('ipld') const inMemory = require('ipld-in-memory') const UnixFS = require('ipfs-unixfs') diff --git a/packages/ipfs-unixfs-exporter/test/exporter-subtree.spec.js b/packages/ipfs-unixfs-exporter/test/exporter-subtree.spec.js index a33b72d9..9ee4caee 100644 --- a/packages/ipfs-unixfs-exporter/test/exporter-subtree.spec.js +++ b/packages/ipfs-unixfs-exporter/test/exporter-subtree.spec.js @@ -1,9 +1,7 @@ /* eslint-env mocha */ 'use strict' -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const IPLD = require('ipld') const inMemory = require('ipld-in-memory') const importer = require('ipfs-unixfs-importer') diff --git a/packages/ipfs-unixfs-exporter/test/exporter.spec.js b/packages/ipfs-unixfs-exporter/test/exporter.spec.js index e9322e9c..0c1235ef 100644 --- a/packages/ipfs-unixfs-exporter/test/exporter.spec.js +++ b/packages/ipfs-unixfs-exporter/test/exporter.spec.js @@ -1,9 +1,7 @@ /* eslint-env mocha */ 'use strict' -const chai = require('chai') -chai.use(require('dirty-chai')) -chai.use(require('chai-as-promised')) +const { expect } = require('aegir/utils/chai') const expect = chai.expect const IPLD = require('ipld') const inMemory = require('ipld-in-memory') diff --git a/packages/ipfs-unixfs-importer/package.json b/packages/ipfs-unixfs-importer/package.json index 5b102b0c..c30b6851 100644 --- a/packages/ipfs-unixfs-importer/package.json +++ b/packages/ipfs-unixfs-importer/package.json @@ -36,10 +36,8 @@ "homepage": "https://github.com/ipfs/js-ipfs-unixfs#readme", "devDependencies": { "aegir": "^25.0.0", - "chai": "^4.2.0", "cids": "^0.8.0", "detect-node": "^2.0.4", - "dirty-chai": "^2.0.1", "ipfs-unixfs-exporter": "^3.0.1", "ipld": "^0.26.1", "ipld-in-memory": "^5.0.0", diff --git a/packages/ipfs-unixfs-importer/test/builder-balanced.spec.js b/packages/ipfs-unixfs-importer/test/builder-balanced.spec.js index 17242a31..8135a803 100644 --- a/packages/ipfs-unixfs-importer/test/builder-balanced.spec.js +++ b/packages/ipfs-unixfs-importer/test/builder-balanced.spec.js @@ -1,9 +1,7 @@ /* eslint-env mocha */ 'use strict' -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const builder = require('../src/dag-builder/file/balanced') const all = require('it-all') diff --git a/packages/ipfs-unixfs-importer/test/builder-dir-sharding.spec.js b/packages/ipfs-unixfs-importer/test/builder-dir-sharding.spec.js index d3cbdd05..32ae8641 100644 --- a/packages/ipfs-unixfs-importer/test/builder-dir-sharding.spec.js +++ b/packages/ipfs-unixfs-importer/test/builder-dir-sharding.spec.js @@ -4,9 +4,7 @@ const importer = require('../src') const exporter = require('ipfs-unixfs-exporter') -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const IPLD = require('ipld') const inMemory = require('ipld-in-memory') const all = require('it-all') diff --git a/packages/ipfs-unixfs-importer/test/builder-flat.spec.js b/packages/ipfs-unixfs-importer/test/builder-flat.spec.js index e3f0339e..a1559976 100644 --- a/packages/ipfs-unixfs-importer/test/builder-flat.spec.js +++ b/packages/ipfs-unixfs-importer/test/builder-flat.spec.js @@ -1,9 +1,7 @@ /* eslint-env mocha */ 'use strict' -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const builder = require('../src/dag-builder/file/flat') const all = require('it-all') diff --git a/packages/ipfs-unixfs-importer/test/builder-only-hash.spec.js b/packages/ipfs-unixfs-importer/test/builder-only-hash.spec.js index afe53e06..b0483e81 100644 --- a/packages/ipfs-unixfs-importer/test/builder-only-hash.spec.js +++ b/packages/ipfs-unixfs-importer/test/builder-only-hash.spec.js @@ -1,9 +1,7 @@ /* eslint-env mocha */ 'use strict' -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const IPLD = require('ipld') const inMemory = require('ipld-in-memory') const builder = require('../src/dag-builder') diff --git a/packages/ipfs-unixfs-importer/test/builder-trickle-dag.spec.js b/packages/ipfs-unixfs-importer/test/builder-trickle-dag.spec.js index ba6c239a..45e779bd 100644 --- a/packages/ipfs-unixfs-importer/test/builder-trickle-dag.spec.js +++ b/packages/ipfs-unixfs-importer/test/builder-trickle-dag.spec.js @@ -1,9 +1,7 @@ /* eslint-env mocha */ 'use strict' -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const builder = require('../src/dag-builder/file/trickle') const all = require('it-all') diff --git a/packages/ipfs-unixfs-importer/test/builder.spec.js b/packages/ipfs-unixfs-importer/test/builder.spec.js index 0e5c28fd..d20198cc 100644 --- a/packages/ipfs-unixfs-importer/test/builder.spec.js +++ b/packages/ipfs-unixfs-importer/test/builder.spec.js @@ -1,9 +1,7 @@ /* eslint-env mocha */ 'use strict' -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const mh = require('multihashing-async').multihash const IPLD = require('ipld') const inMemory = require('ipld-in-memory') diff --git a/packages/ipfs-unixfs-importer/test/chunker-custom.spec.js b/packages/ipfs-unixfs-importer/test/chunker-custom.spec.js index 7c3dff4f..ac6765c8 100644 --- a/packages/ipfs-unixfs-importer/test/chunker-custom.spec.js +++ b/packages/ipfs-unixfs-importer/test/chunker-custom.spec.js @@ -2,9 +2,7 @@ 'use strict' const importer = require('../src') -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const IPLD = require('ipld') const inMemory = require('ipld-in-memory') const mc = require('multicodec') diff --git a/packages/ipfs-unixfs-importer/test/chunker-fixed-size.spec.js b/packages/ipfs-unixfs-importer/test/chunker-fixed-size.spec.js index bcdddbf8..b5c84d0d 100644 --- a/packages/ipfs-unixfs-importer/test/chunker-fixed-size.spec.js +++ b/packages/ipfs-unixfs-importer/test/chunker-fixed-size.spec.js @@ -2,9 +2,7 @@ 'use strict' const chunker = require('../src/chunker/fixed-size') -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const isNode = require('detect-node') const all = require('it-all') const loadFixture = require('aegir/fixtures') diff --git a/packages/ipfs-unixfs-importer/test/chunker-rabin.spec.js b/packages/ipfs-unixfs-importer/test/chunker-rabin.spec.js index 93cb3311..e0814e3b 100644 --- a/packages/ipfs-unixfs-importer/test/chunker-rabin.spec.js +++ b/packages/ipfs-unixfs-importer/test/chunker-rabin.spec.js @@ -2,9 +2,7 @@ 'use strict' const chunker = require('../src/chunker/rabin') -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const loadFixture = require('aegir/fixtures') const isNode = require('detect-node') const all = require('it-all') diff --git a/packages/ipfs-unixfs-importer/test/hash-parity-with-go-ipfs.spec.js b/packages/ipfs-unixfs-importer/test/hash-parity-with-go-ipfs.spec.js index 9b993894..6f46d67b 100644 --- a/packages/ipfs-unixfs-importer/test/hash-parity-with-go-ipfs.spec.js +++ b/packages/ipfs-unixfs-importer/test/hash-parity-with-go-ipfs.spec.js @@ -3,9 +3,7 @@ const importer = require('../src') -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const IPLD = require('ipld') const inMemory = require('ipld-in-memory') const randomByteStream = require('./helpers/finite-pseudorandom-byte-stream') diff --git a/packages/ipfs-unixfs-importer/test/import-export-nested-dir.spec.js b/packages/ipfs-unixfs-importer/test/import-export-nested-dir.spec.js index 14df71e0..79d747f3 100644 --- a/packages/ipfs-unixfs-importer/test/import-export-nested-dir.spec.js +++ b/packages/ipfs-unixfs-importer/test/import-export-nested-dir.spec.js @@ -1,9 +1,7 @@ /* eslint-env mocha */ 'use strict' -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const IPLD = require('ipld') const inMemory = require('ipld-in-memory') const all = require('it-all') diff --git a/packages/ipfs-unixfs-importer/test/import-export.spec.js b/packages/ipfs-unixfs-importer/test/import-export.spec.js index 26232d15..0d436b46 100644 --- a/packages/ipfs-unixfs-importer/test/import-export.spec.js +++ b/packages/ipfs-unixfs-importer/test/import-export.spec.js @@ -2,9 +2,7 @@ /* eslint max-nested-callbacks: ["error", 5] */ 'use strict' -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const IPLD = require('ipld') const inMemory = require('ipld-in-memory') const loadFixture = require('aegir/fixtures') diff --git a/packages/ipfs-unixfs-importer/test/importer.spec.js b/packages/ipfs-unixfs-importer/test/importer.spec.js index 629d04fd..07404c5a 100644 --- a/packages/ipfs-unixfs-importer/test/importer.spec.js +++ b/packages/ipfs-unixfs-importer/test/importer.spec.js @@ -4,9 +4,7 @@ const importer = require('../src') const exporter = require('ipfs-unixfs-exporter') const extend = require('merge-options') -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const spy = require('sinon/lib/sinon/spy') const IPLD = require('ipld') const inMemory = require('ipld-in-memory') diff --git a/packages/ipfs-unixfs/package.json b/packages/ipfs-unixfs/package.json index 87cb1489..dd600d8d 100644 --- a/packages/ipfs-unixfs/package.json +++ b/packages/ipfs-unixfs/package.json @@ -36,9 +36,8 @@ "homepage": "https://github.com/ipfs/js-ipfs-unixfs#readme", "devDependencies": { "aegir": "^25.0.0", - "chai": "^4.2.0", - "dirty-chai": "^2.0.1", - "nyc": "^15.0.0" + "nyc": "^15.0.0", + "uint8arrays": "^1.0.0" }, "dependencies": { "err-code": "^2.0.0", diff --git a/packages/ipfs-unixfs/test/unixfs-format.spec.js b/packages/ipfs-unixfs/test/unixfs-format.spec.js index c515c80f..ed934353 100644 --- a/packages/ipfs-unixfs/test/unixfs-format.spec.js +++ b/packages/ipfs-unixfs/test/unixfs-format.spec.js @@ -1,9 +1,7 @@ /* eslint-env mocha */ 'use strict' -const chai = require('chai') -chai.use(require('dirty-chai')) -const expect = chai.expect +const { expect } = require('aegir/utils/chai') const loadFixture = require('aegir/fixtures') const UnixFS = require('../src') From d73ccaf4416ef1b5ef1bf8549d96ceb6e0ec964c Mon Sep 17 00:00:00 2001 From: achingbrain Date: Wed, 5 Aug 2020 09:52:28 +0100 Subject: [PATCH 3/4] chore: update deps --- package-lock.json | 14 +- .../ipfs-unixfs-exporter/package-lock.json | 48 -- packages/ipfs-unixfs-exporter/package.json | 10 +- .../test/exporter.spec.js | 1 - .../ipfs-unixfs-importer/package-lock.json | 800 ++++++++++++++++++ packages/ipfs-unixfs-importer/package.json | 8 +- .../test/importer.spec.js | 5 +- packages/ipfs-unixfs/package-lock.json | 73 ++ packages/ipfs-unixfs/package.json | 2 +- 9 files changed, 894 insertions(+), 67 deletions(-) delete mode 100644 packages/ipfs-unixfs-exporter/package-lock.json create mode 100644 packages/ipfs-unixfs-importer/package-lock.json create mode 100644 packages/ipfs-unixfs/package-lock.json diff --git a/package-lock.json b/package-lock.json index 80b15f99..f3f1949a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2462,12 +2462,6 @@ "integrity": "sha512-k3Eh5bKuQnZjm49/L7H4cHzs2FlL5QjbTB3JrPxoTI8aJG7hVMe4uKyJxSYH4ahseby2waUwk5OaKX/nAsaYgg==", "dev": true }, - "err-code": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", - "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", - "dev": true - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -5311,6 +5305,14 @@ "requires": { "err-code": "^1.0.0", "retry": "^0.10.0" + }, + "dependencies": { + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + } } }, "promzard": { diff --git a/packages/ipfs-unixfs-exporter/package-lock.json b/packages/ipfs-unixfs-exporter/package-lock.json deleted file mode 100644 index 16b9c3eb..00000000 --- a/packages/ipfs-unixfs-exporter/package-lock.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "ipfs-unixfs-exporter", - "version": "3.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "multicodec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", - "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", - "dev": true, - "requires": { - "buffer": "^5.6.0", - "varint": "^5.0.0" - }, - "dependencies": { - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "dev": true - }, - "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "varint": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", - "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=", - "dev": true - } - } - } - } -} diff --git a/packages/ipfs-unixfs-exporter/package.json b/packages/ipfs-unixfs-exporter/package.json index e618020c..2b3fc7a1 100644 --- a/packages/ipfs-unixfs-exporter/package.json +++ b/packages/ipfs-unixfs-exporter/package.json @@ -39,19 +39,19 @@ "aegir": "^25.0.0", "detect-node": "^2.0.4", "ipfs-unixfs-importer": "^3.0.1", - "ipld": "^0.26.1", - "ipld-dag-pb": "ipld/js-ipld-dag-pb#fix/replace-node-buffers-with-unit8arrays", - "ipld-in-memory": "^5.0.0", + "ipld": "ipld/js-ipld#fix/replace-node-buffers-with-uint8arrays", + "ipld-dag-pb": "^0.20.0", + "ipld-in-memory": "ipld/ipld-in-memory#fix/replace-node-buffers-with-uint8arrays", "it-all": "^1.0.1", "it-buffer-stream": "^1.0.2", "it-first": "^1.0.1", - "multicodec": "^1.0.0", + "multicodec": "^2.0.0", "nyc": "^15.0.0", "sinon": "^9.0.1", "uint8arrays": "^1.0.0" }, "dependencies": { - "cids": "^0.8.0", + "cids": "^1.0.0", "err-code": "^2.0.0", "hamt-sharding": "^1.0.0", "ipfs-unixfs": "^2.0.1", diff --git a/packages/ipfs-unixfs-exporter/test/exporter.spec.js b/packages/ipfs-unixfs-exporter/test/exporter.spec.js index 0c1235ef..7630d19c 100644 --- a/packages/ipfs-unixfs-exporter/test/exporter.spec.js +++ b/packages/ipfs-unixfs-exporter/test/exporter.spec.js @@ -2,7 +2,6 @@ 'use strict' const { expect } = require('aegir/utils/chai') -const expect = chai.expect const IPLD = require('ipld') const inMemory = require('ipld-in-memory') const UnixFS = require('ipfs-unixfs') diff --git a/packages/ipfs-unixfs-importer/package-lock.json b/packages/ipfs-unixfs-importer/package-lock.json new file mode 100644 index 00000000..1915cbf8 --- /dev/null +++ b/packages/ipfs-unixfs-importer/package-lock.json @@ -0,0 +1,800 @@ +{ + "name": "ipfs-unixfs-importer", + "version": "3.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "cids": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cids/-/cids-1.0.0.tgz", + "integrity": "sha512-HEBCIElSiXlkgZq3dgHJc3eDcnFteFp96N8/1/oqX5lkxBtB66sZ12jqEP3g7Ut++jEk6kIUGifQ1Qrya1jcNQ==", + "dev": true, + "requires": { + "class-is": "^1.1.0", + "multibase": "^3.0.0", + "multicodec": "^2.0.0", + "multihashes": "^3.0.1", + "uint8arrays": "^1.0.0" + }, + "dependencies": { + "uint8arrays": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-1.0.0.tgz", + "integrity": "sha512-14tqEVujDREW7YwonSZZwLvo7aFDfX7b6ubvM/U7XvZol+CC/LbhaX/550VlWmhddAL9Wou1sxp0Of3tGqXigg==", + "dev": true, + "requires": { + "multibase": "^3.0.0", + "web-encoding": "^1.0.2" + } + } + } + }, + "class-is": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", + "dev": true + }, + "ipfs-unixfs": { + "version": "2.0.1", + "requires": { + "err-code": "^2.0.0", + "protons": "^2.0.0" + }, + "dependencies": { + "base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, + "multibase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.0.0.tgz", + "integrity": "sha512-fuB+zfRbF5zWV4L+CPM0dgA0gX7DHG/IMyzwhVi2RxbRVWn41Wk7SkKW8cxYDGOg6TVh7XgyoesjOAYrB1HBAA==", + "requires": { + "base-x": "^3.0.8", + "web-encoding": "^1.0.2" + } + }, + "protocol-buffers-schema": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz", + "integrity": "sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA==" + }, + "protons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/protons/-/protons-2.0.0.tgz", + "integrity": "sha512-BTrE9D6/d1NGis+0D8TqAO1THdn4evHQhfjapA0NUaRH4+ecJJcbqaF7TE/DKv5czE9VB/TeOllBOmCyJhHnhg==", + "requires": { + "protocol-buffers-schema": "^3.3.1", + "signed-varint": "^2.0.1", + "uint8arrays": "^1.0.0", + "varint": "^5.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "signed-varint": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/signed-varint/-/signed-varint-2.0.1.tgz", + "integrity": "sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk=", + "requires": { + "varint": "~5.0.0" + } + }, + "uint8arrays": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-1.0.0.tgz", + "integrity": "sha512-14tqEVujDREW7YwonSZZwLvo7aFDfX7b6ubvM/U7XvZol+CC/LbhaX/550VlWmhddAL9Wou1sxp0Of3tGqXigg==", + "requires": { + "multibase": "^3.0.0", + "web-encoding": "^1.0.2" + } + }, + "varint": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", + "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=" + }, + "web-encoding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.0.2.tgz", + "integrity": "sha512-fe9pqxglgy25Z4Ds+2GwZIrOnLxeozydMj0iV8zx0ZNxE3MPTseF4oXGrrBuH4vSkoDYDXoPRRFY/FEYitEUTA==" + } + } + }, + "ipfs-unixfs-exporter": { + "version": "3.0.1", + "dev": true, + "requires": { + "cids": "^0.8.0", + "err-code": "^2.0.0", + "hamt-sharding": "^1.0.0", + "ipfs-unixfs": "^2.0.1", + "ipfs-utils": "^2.3.1", + "it-last": "^1.0.1", + "multihashing-async": "^2.0.0" + }, + "dependencies": { + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "any-signal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-1.1.0.tgz", + "integrity": "sha512-mtwqpy58ys+/dRdH5Z8VArUluVrfz9/5BXo8tvSZ9kcQr3k9yyOPnGrYCBJQfcC5IlMrr63kDBlf5GyQCFn+Fw==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0" + } + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "blakejs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", + "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "cids": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.8.3.tgz", + "integrity": "sha512-yoXTbV3llpm+EBGWKeL9xKtksPE/s6DPoDSY4fn8I8TEW1zehWXPSB0pwAXVDlLaOlrw+sNynj995uD9abmPhA==", + "dev": true, + "requires": { + "buffer": "^5.6.0", + "class-is": "^1.1.0", + "multibase": "^1.0.0", + "multicodec": "^1.0.1", + "multihashes": "^1.0.1" + } + }, + "class-is": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "get-iterator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz", + "integrity": "sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "hamt-sharding": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hamt-sharding/-/hamt-sharding-1.0.0.tgz", + "integrity": "sha512-jDk8N1U8qprvSt3KopOrrP46zUogxeZY+znDHP196MLBQKldld0TQFTneT1bxOFDw8vttbAQy1bG7L3/pzYorg==", + "dev": true, + "requires": { + "sparse-array": "^1.3.1" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "ipfs-unixfs": { + "version": "2.0.1", + "dev": true, + "requires": { + "err-code": "^2.0.0", + "protons": "^2.0.0" + }, + "dependencies": { + "base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, + "multibase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.0.0.tgz", + "integrity": "sha512-fuB+zfRbF5zWV4L+CPM0dgA0gX7DHG/IMyzwhVi2RxbRVWn41Wk7SkKW8cxYDGOg6TVh7XgyoesjOAYrB1HBAA==", + "requires": { + "base-x": "^3.0.8", + "web-encoding": "^1.0.2" + } + }, + "protocol-buffers-schema": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz", + "integrity": "sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA==" + }, + "protons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/protons/-/protons-2.0.0.tgz", + "integrity": "sha512-BTrE9D6/d1NGis+0D8TqAO1THdn4evHQhfjapA0NUaRH4+ecJJcbqaF7TE/DKv5czE9VB/TeOllBOmCyJhHnhg==", + "requires": { + "protocol-buffers-schema": "^3.3.1", + "signed-varint": "^2.0.1", + "uint8arrays": "^1.0.0", + "varint": "^5.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "signed-varint": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/signed-varint/-/signed-varint-2.0.1.tgz", + "integrity": "sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk=", + "requires": { + "varint": "~5.0.0" + } + }, + "uint8arrays": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-1.0.0.tgz", + "integrity": "sha512-14tqEVujDREW7YwonSZZwLvo7aFDfX7b6ubvM/U7XvZol+CC/LbhaX/550VlWmhddAL9Wou1sxp0Of3tGqXigg==", + "requires": { + "multibase": "^3.0.0", + "web-encoding": "^1.0.2" + } + }, + "varint": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", + "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=" + }, + "web-encoding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.0.2.tgz", + "integrity": "sha512-fe9pqxglgy25Z4Ds+2GwZIrOnLxeozydMj0iV8zx0ZNxE3MPTseF4oXGrrBuH4vSkoDYDXoPRRFY/FEYitEUTA==" + } + } + }, + "ipfs-unixfs-importer": { + "requires": { + "ipfs-unixfs": "^2.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "blakejs": { + "version": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", + "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=" + }, + "brace-expansion": { + "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + }, + "buffer": { + "version": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==" + }, + "class-is": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", + "dev": true + }, + "concat-map": { + "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "ieee754": { + "version": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "ipfs-unixfs": { + "version": "2.0.1", + "requires": { + "err-code": "^2.0.0", + "protons": "^2.0.0" + }, + "dependencies": {} + }, + "ipfs-unixfs-exporter": { + "version": "3.0.1", + "dev": true, + "requires": { + "cids": "^0.8.0", + "err-code": "^2.0.0", + "hamt-sharding": "^1.0.0", + "ipfs-unixfs": "^2.0.1", + "ipfs-utils": "^2.3.1", + "it-last": "^1.0.1", + "multihashing-async": "^2.0.0" + }, + "dependencies": {} + } + } + }, + "ipfs-utils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-2.3.1.tgz", + "integrity": "sha512-Rq2iyFdqNknVtIgq8+/URt5WK94uEqTa2w22t2yrNE9CDifh5jvFaO6lBOMhsqzPkHjjJBoIqk+g5P0T2OHSow==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "any-signal": "^1.1.0", + "buffer": "^5.6.0", + "err-code": "^2.0.0", + "fs-extra": "^9.0.1", + "is-electron": "^2.2.0", + "iso-url": "^0.4.7", + "it-glob": "0.0.8", + "merge-options": "^2.0.0", + "nanoid": "^3.1.3", + "node-fetch": "^2.6.0", + "stream-to-it": "^0.2.0" + } + }, + "is-electron": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.0.tgz", + "integrity": "sha512-SpMppC2XR3YdxSzczXReBjqs2zGscWQpBIKqwXYBFic0ERaxNVgwLCHwOLZeESfdJQjX0RDvrJ1lBXX2ij+G1Q==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "iso-url": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-0.4.7.tgz", + "integrity": "sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog==", + "dev": true + }, + "it-glob": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-0.0.8.tgz", + "integrity": "sha512-PmIAgb64aJPM6wwT1UTlNDAJnNgdGrvr0vRr3AYCngcUuq1KaAovuz0dQAmUkaXudDG3EQzc7OttuLW9DaL3YQ==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "minimatch": "^3.0.4" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "it-last": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/it-last/-/it-last-1.0.2.tgz", + "integrity": "sha512-zjWiVvkDXKxGA+u2ZNzq321RWnj52RLucsIX0Bve3NUX3X/b1RjtUufvUdjtkFtQLKG1yCf5+hxbdeIYiRT1rQ==", + "dev": true + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "merge-options": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-2.0.0.tgz", + "integrity": "sha512-S7xYIeWHl2ZUKF7SDeBhGg6rfv5bKxVBdk95s/I7wVF8d+hjLSztJ/B271cnUiF6CAFduEQ5Zn3HYwAjT16DlQ==", + "dev": true, + "requires": { + "is-plain-obj": "^2.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "multibase": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-1.0.1.tgz", + "integrity": "sha512-KcCxpBVY8fdVKu4dJMAahq4F/2Z/9xqEjIiR7PiMe7LRGeorFn2NLmicN6nLBCqQvft6MG2Lc9X5P0IdyvnxEw==", + "dev": true, + "requires": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "multicodec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", + "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", + "dev": true, + "requires": { + "buffer": "^5.6.0", + "varint": "^5.0.0" + }, + "dependencies": { + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "varint": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", + "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=", + "dev": true + } + } + }, + "multihashes": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-1.0.1.tgz", + "integrity": "sha512-S27Tepg4i8atNiFaU5ZOm3+gl3KQlUanLs/jWcBxQHFttgq+5x1OgbQmf2d8axJ/48zYGBd/wT9d723USMFduw==", + "dev": true, + "requires": { + "buffer": "^5.6.0", + "multibase": "^1.0.1", + "varint": "^5.0.0" + } + }, + "multihashing-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-2.0.0.tgz", + "integrity": "sha512-zcOfmjhkAxpzERC9vfdfEk73HOLFixIpcSgJ39Q7UVfct92V21SR/pkruv7I837WxPbKfmF4zmqR82hlLvCMrQ==", + "dev": true, + "requires": { + "blakejs": "^1.1.0", + "err-code": "^2.0.0", + "js-sha3": "^0.8.0", + "multihashes": "^2.0.0", + "murmurhash3js-revisited": "^3.0.0", + "uint8arrays": "^1.0.0" + }, + "dependencies": { + "multibase": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-2.0.0.tgz", + "integrity": "sha512-xIrqUVsinSlFjqj+OtEgCJ6MRl5hXjHMBPWsUt1ZGSRMx8rzm+7hCLE4wDeSA3COomlUC9zHCoUlvWjvAMtfDg==", + "dev": true, + "requires": { + "base-x": "^3.0.8", + "buffer": "^5.5.0", + "web-encoding": "^1.0.2" + } + }, + "multihashes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-2.0.0.tgz", + "integrity": "sha512-Mp94Y+7h3oWQx8JickVghlWR6VhRPDnlv/KZEUyNP0ISSkNEe3kQkWoyIGt1B45D6cTLoulg+MP6bugVewx32Q==", + "dev": true, + "requires": { + "buffer": "^5.6.0", + "multibase": "^2.0.0", + "varint": "^5.0.0", + "web-encoding": "^1.0.2" + } + } + } + }, + "murmurhash3js-revisited": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", + "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", + "dev": true + }, + "nanoid": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz", + "integrity": "sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==", + "dev": true + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "sparse-array": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/sparse-array/-/sparse-array-1.3.2.tgz", + "integrity": "sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg==", + "dev": true + }, + "stream-to-it": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.2.tgz", + "integrity": "sha512-waULBmQpVdr6TkDzci6t1P7dIaSZ0bHC1TaPXDUeJC5PpSK7U3T0H0Zeo/LWUnd6mnhXOmGGDKAkjUCHw5IOng==", + "dev": true, + "requires": { + "get-iterator": "^1.0.2" + } + }, + "uint8arrays": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-1.0.0.tgz", + "integrity": "sha512-14tqEVujDREW7YwonSZZwLvo7aFDfX7b6ubvM/U7XvZol+CC/LbhaX/550VlWmhddAL9Wou1sxp0Of3tGqXigg==", + "dev": true, + "requires": { + "multibase": "^3.0.0", + "web-encoding": "^1.0.2" + }, + "dependencies": { + "multibase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.0.0.tgz", + "integrity": "sha512-fuB+zfRbF5zWV4L+CPM0dgA0gX7DHG/IMyzwhVi2RxbRVWn41Wk7SkKW8cxYDGOg6TVh7XgyoesjOAYrB1HBAA==", + "dev": true, + "requires": { + "base-x": "^3.0.8", + "web-encoding": "^1.0.2" + } + } + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + }, + "varint": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", + "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=", + "dev": true + }, + "web-encoding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.0.2.tgz", + "integrity": "sha512-fe9pqxglgy25Z4Ds+2GwZIrOnLxeozydMj0iV8zx0ZNxE3MPTseF4oXGrrBuH4vSkoDYDXoPRRFY/FEYitEUTA==", + "dev": true + } + } + }, + "multibase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.0.0.tgz", + "integrity": "sha512-fuB+zfRbF5zWV4L+CPM0dgA0gX7DHG/IMyzwhVi2RxbRVWn41Wk7SkKW8cxYDGOg6TVh7XgyoesjOAYrB1HBAA==", + "dev": true, + "requires": { + "base-x": "^3.0.8", + "web-encoding": "^1.0.2" + } + }, + "multicodec": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-2.0.0.tgz", + "integrity": "sha512-2SLsdTCXqOpUfoSHkTaVzxnjjl5fsSO283Idb9rAYgKGVu188NFP5KncuZ8Ifg8H2gc5GOi2rkuhLumqv9nweQ==", + "dev": true, + "requires": { + "uint8arrays": "1.0.0", + "varint": "^5.0.0" + }, + "dependencies": { + "uint8arrays": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-1.0.0.tgz", + "integrity": "sha512-14tqEVujDREW7YwonSZZwLvo7aFDfX7b6ubvM/U7XvZol+CC/LbhaX/550VlWmhddAL9Wou1sxp0Of3tGqXigg==", + "dev": true, + "requires": { + "multibase": "^3.0.0", + "web-encoding": "^1.0.2" + } + } + } + }, + "multihashes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-3.0.1.tgz", + "integrity": "sha512-fFY67WOtb0359IjDZxaCU3gJILlkwkFbxbwrK9Bej5+NqNaYztzLOj8/NgMNMg/InxmhK+Uu8S/U4EcqsHzB7Q==", + "dev": true, + "requires": { + "multibase": "^3.0.0", + "uint8arrays": "^1.0.0", + "varint": "^5.0.0" + }, + "dependencies": { + "uint8arrays": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-1.0.0.tgz", + "integrity": "sha512-14tqEVujDREW7YwonSZZwLvo7aFDfX7b6ubvM/U7XvZol+CC/LbhaX/550VlWmhddAL9Wou1sxp0Of3tGqXigg==", + "dev": true, + "requires": { + "multibase": "^3.0.0", + "web-encoding": "^1.0.2" + } + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "varint": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", + "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=", + "dev": true + }, + "web-encoding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.0.2.tgz", + "integrity": "sha512-fe9pqxglgy25Z4Ds+2GwZIrOnLxeozydMj0iV8zx0ZNxE3MPTseF4oXGrrBuH4vSkoDYDXoPRRFY/FEYitEUTA==", + "dev": true + } + } +} diff --git a/packages/ipfs-unixfs-importer/package.json b/packages/ipfs-unixfs-importer/package.json index c30b6851..57c602b9 100644 --- a/packages/ipfs-unixfs-importer/package.json +++ b/packages/ipfs-unixfs-importer/package.json @@ -36,11 +36,11 @@ "homepage": "https://github.com/ipfs/js-ipfs-unixfs#readme", "devDependencies": { "aegir": "^25.0.0", - "cids": "^0.8.0", + "cids": "^1.0.0", "detect-node": "^2.0.4", "ipfs-unixfs-exporter": "^3.0.1", - "ipld": "^0.26.1", - "ipld-in-memory": "^5.0.0", + "ipld": "ipld/js-ipld#fix/replace-node-buffers-with-uint8arrays", + "ipld-in-memory": "ipld/ipld-in-memory#fix/replace-node-buffers-with-uint8arrays", "it-buffer-stream": "^1.0.2", "it-last": "^1.0.1", "merge-options": "^2.0.0", @@ -54,7 +54,7 @@ "hamt-sharding": "^1.0.0", "ipfs-unixfs": "^2.0.1", "ipfs-utils": "^2.3.1", - "ipld-dag-pb": "ipld/js-ipld-dag-pb#fix/replace-node-buffers-with-unit8arrays", + "ipld-dag-pb": "^0.20.0", "it-all": "^1.0.1", "it-batch": "^1.0.3", "it-first": "^1.0.1", diff --git a/packages/ipfs-unixfs-importer/test/importer.spec.js b/packages/ipfs-unixfs-importer/test/importer.spec.js index 07404c5a..1793668a 100644 --- a/packages/ipfs-unixfs-importer/test/importer.spec.js +++ b/packages/ipfs-unixfs-importer/test/importer.spec.js @@ -19,6 +19,7 @@ const first = require('it-first') const blockApi = require('./helpers/block') const uint8ArrayConcat = require('uint8arrays/concat') const uint8ArrayFromString = require('uint8arrays/from-string') +const uint8ArrayToString = require('uint8arrays/to-string') function stringifyMh (files) { return files.map((file) => { @@ -392,9 +393,9 @@ strategies.forEach((strategy) => { }], block, options)) const file = await exporter(res[0].cid, ipld) - const fileContent = await all(file.content()) + const fileContent = await first(file.content()) - expect(fileContent.toString()).to.equal(content) + expect(uint8ArrayToString(fileContent)).to.equal(content) }) it('small file with an escaped slash in the title', async () => { diff --git a/packages/ipfs-unixfs/package-lock.json b/packages/ipfs-unixfs/package-lock.json new file mode 100644 index 00000000..0b36d435 --- /dev/null +++ b/packages/ipfs-unixfs/package-lock.json @@ -0,0 +1,73 @@ +{ + "name": "ipfs-unixfs", + "version": "2.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "multibase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.0.0.tgz", + "integrity": "sha512-fuB+zfRbF5zWV4L+CPM0dgA0gX7DHG/IMyzwhVi2RxbRVWn41Wk7SkKW8cxYDGOg6TVh7XgyoesjOAYrB1HBAA==", + "requires": { + "base-x": "^3.0.8", + "web-encoding": "^1.0.2" + } + }, + "protocol-buffers-schema": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz", + "integrity": "sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA==" + }, + "protons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/protons/-/protons-2.0.0.tgz", + "integrity": "sha512-BTrE9D6/d1NGis+0D8TqAO1THdn4evHQhfjapA0NUaRH4+ecJJcbqaF7TE/DKv5czE9VB/TeOllBOmCyJhHnhg==", + "requires": { + "protocol-buffers-schema": "^3.3.1", + "signed-varint": "^2.0.1", + "uint8arrays": "^1.0.0", + "varint": "^5.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "signed-varint": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/signed-varint/-/signed-varint-2.0.1.tgz", + "integrity": "sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk=", + "requires": { + "varint": "~5.0.0" + } + }, + "uint8arrays": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-1.0.0.tgz", + "integrity": "sha512-14tqEVujDREW7YwonSZZwLvo7aFDfX7b6ubvM/U7XvZol+CC/LbhaX/550VlWmhddAL9Wou1sxp0Of3tGqXigg==", + "requires": { + "multibase": "^3.0.0", + "web-encoding": "^1.0.2" + } + }, + "varint": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", + "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=" + }, + "web-encoding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.0.2.tgz", + "integrity": "sha512-fe9pqxglgy25Z4Ds+2GwZIrOnLxeozydMj0iV8zx0ZNxE3MPTseF4oXGrrBuH4vSkoDYDXoPRRFY/FEYitEUTA==" + } + } +} diff --git a/packages/ipfs-unixfs/package.json b/packages/ipfs-unixfs/package.json index dd600d8d..a3e236c2 100644 --- a/packages/ipfs-unixfs/package.json +++ b/packages/ipfs-unixfs/package.json @@ -41,6 +41,6 @@ }, "dependencies": { "err-code": "^2.0.0", - "protons": "ipfs/protons#fix/replace-node-buffers-with-uint8arrays" + "protons": "^2.0.0" } } From 9d6710951f48e4a09e7c6353b197ea73ac810af8 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Wed, 5 Aug 2020 16:57:33 +0100 Subject: [PATCH 4/4] chore: remove gh dep versions --- packages/ipfs-unixfs-exporter/package.json | 4 ++-- packages/ipfs-unixfs-importer/package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/ipfs-unixfs-exporter/package.json b/packages/ipfs-unixfs-exporter/package.json index 2b3fc7a1..17812af1 100644 --- a/packages/ipfs-unixfs-exporter/package.json +++ b/packages/ipfs-unixfs-exporter/package.json @@ -39,9 +39,9 @@ "aegir": "^25.0.0", "detect-node": "^2.0.4", "ipfs-unixfs-importer": "^3.0.1", - "ipld": "ipld/js-ipld#fix/replace-node-buffers-with-uint8arrays", + "ipld": "^0.27.0", "ipld-dag-pb": "^0.20.0", - "ipld-in-memory": "ipld/ipld-in-memory#fix/replace-node-buffers-with-uint8arrays", + "ipld-in-memory": "^6.0.0", "it-all": "^1.0.1", "it-buffer-stream": "^1.0.2", "it-first": "^1.0.1", diff --git a/packages/ipfs-unixfs-importer/package.json b/packages/ipfs-unixfs-importer/package.json index 57c602b9..126cad6d 100644 --- a/packages/ipfs-unixfs-importer/package.json +++ b/packages/ipfs-unixfs-importer/package.json @@ -39,8 +39,8 @@ "cids": "^1.0.0", "detect-node": "^2.0.4", "ipfs-unixfs-exporter": "^3.0.1", - "ipld": "ipld/js-ipld#fix/replace-node-buffers-with-uint8arrays", - "ipld-in-memory": "ipld/ipld-in-memory#fix/replace-node-buffers-with-uint8arrays", + "ipld": "^0.27.0", + "ipld-in-memory": "^6.0.0", "it-buffer-stream": "^1.0.2", "it-last": "^1.0.1", "merge-options": "^2.0.0",