From d4f1a4f7e50176bfd8f558d5d39f50a550b403bd Mon Sep 17 00:00:00 2001 From: Friedel Ziegelmayer Date: Thu, 29 Sep 2016 17:13:26 +0200 Subject: [PATCH 1/3] refactor: update deps and better browser compat --- package.json | 6 +++--- protos/unixfs.proto | 18 ------------------ src/index.js | 5 +---- src/unixfs.proto.js | 21 +++++++++++++++++++++ 4 files changed, 25 insertions(+), 25 deletions(-) delete mode 100644 protos/unixfs.proto create mode 100644 src/unixfs.proto.js diff --git a/package.json b/package.json index 49391082..d2dafce5 100644 --- a/package.json +++ b/package.json @@ -30,12 +30,12 @@ }, "homepage": "https://github.com/ipfs/js-ipfs-unixfs#readme", "devDependencies": { - "aegir": "^2.1.1", + "aegir": "^8.1.2", "chai": "^3.5.0", - "pre-commit": "^1.1.2" + "pre-commit": "^1.1.3" }, "dependencies": { - "protocol-buffers": "^3.1.5" + "protocol-buffers": "^3.1.6" }, "pre-commit": [ "lint", diff --git a/protos/unixfs.proto b/protos/unixfs.proto deleted file mode 100644 index aa43b8de..00000000 --- a/protos/unixfs.proto +++ /dev/null @@ -1,18 +0,0 @@ -message Data { - enum DataType { - Raw = 0; - Directory = 1; - File = 2; - Metadata = 3; - Symlink = 4; - } - - required DataType Type = 1; - optional bytes Data = 2; - optional uint64 filesize = 3; - repeated uint64 blocksizes = 4; -} - -message Metadata { - required string MimeType = 1; -} diff --git a/src/index.js b/src/index.js index b3b93e36..3cabb259 100644 --- a/src/index.js +++ b/src/index.js @@ -1,10 +1,7 @@ 'use strict' -const fs = require('fs') -const path = require('path') const protobuf = require('protocol-buffers') -const schema = fs.readFileSync(path.resolve(__dirname, '../protos/unixfs.proto')) -const pb = protobuf(schema) +const pb = protobuf(require('./unixfs.proto')) // encode/decode const unixfsData = pb.Data // const unixfsMetadata = pb.MetaData // encode/decode diff --git a/src/unixfs.proto.js b/src/unixfs.proto.js new file mode 100644 index 00000000..87240ac0 --- /dev/null +++ b/src/unixfs.proto.js @@ -0,0 +1,21 @@ +'use strict' + +module.exports = new Buffer(`message Data { + enum DataType { + Raw = 0; + Directory = 1; + File = 2; + Metadata = 3; + Symlink = 4; + } + + required DataType Type = 1; + optional bytes Data = 2; + optional uint64 filesize = 3; + repeated uint64 blocksizes = 4; +} + +message Metadata { + required string MimeType = 1; +} +`) From 089b7a4a01ac8cf11ff2cd5bcef7dd5642669680 Mon Sep 17 00:00:00 2001 From: nikuda Date: Tue, 4 Oct 2016 07:24:27 +1100 Subject: [PATCH 2/3] Using string instead of buffer for proto file --- src/unixfs.proto.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/unixfs.proto.js b/src/unixfs.proto.js index 87240ac0..91395370 100644 --- a/src/unixfs.proto.js +++ b/src/unixfs.proto.js @@ -1,6 +1,6 @@ 'use strict' -module.exports = new Buffer(`message Data { +module.exports = `message Data { enum DataType { Raw = 0; Directory = 1; @@ -18,4 +18,4 @@ module.exports = new Buffer(`message Data { message Metadata { required string MimeType = 1; } -`) +` From 0893da698cc6784593e3b43b1ab49190448f3763 Mon Sep 17 00:00:00 2001 From: Friedel Ziegelmayer Date: Wed, 2 Nov 2016 13:55:18 +0100 Subject: [PATCH 3/3] ready --- .gitignore | 1 - .travis.yml | 24 ++++++++++++++----- README.md | 4 ++++ package.json | 11 ++++++--- src/unixfs.proto.js | 3 +-- test/{test-data => fixtures}/directory.unixfs | 0 .../directory/file.txt | 0 test/{test-data => fixtures}/file.txt | 0 test/{test-data => fixtures}/file.txt.unixfs | 0 test/{test-data => fixtures}/raw.unixfs | 0 test/{test-data => fixtures}/symlink.txt | 0 .../symlink.txt.unixfs | 0 test/unixfs-format.spec.js | 24 +++++++++---------- 13 files changed, 43 insertions(+), 24 deletions(-) rename test/{test-data => fixtures}/directory.unixfs (100%) rename test/{test-data => fixtures}/directory/file.txt (100%) rename test/{test-data => fixtures}/file.txt (100%) rename test/{test-data => fixtures}/file.txt.unixfs (100%) rename test/{test-data => fixtures}/raw.unixfs (100%) rename test/{test-data => fixtures}/symlink.txt (100%) rename test/{test-data => fixtures}/symlink.txt.unixfs (100%) diff --git a/.gitignore b/.gitignore index 8cb3dc06..c2ba6370 100644 --- a/.gitignore +++ b/.gitignore @@ -33,4 +33,3 @@ node_modules .node_repl_history dist -lib \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index e1d6320b..a152bd2c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,15 @@ sudo: false language: node_js -node_js: - - 4 - - 5 +matrix: + include: + - node_js: 4 + env: CXX=g++-4.8 + - node_js: 6 + env: + - SAUCE=true + - CXX=g++-4.8 + - node_js: stable + env: CXX=g++-4.8 # Make sure we have new NPM. before_install: @@ -13,12 +20,17 @@ script: - npm test - npm run coverage -addons: - firefox: 'latest' - before_script: - export DISPLAY=:99.0 - sh -e /etc/init.d/xvfb start after_success: - npm run coverage-publish + +addons: + firefox: 'latest' + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-4.8 diff --git a/README.md b/README.md index da5c4801..cb682d26 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,10 @@ [![Coverage Status](https://coveralls.io/repos/github/ipfs/js-ipfs-unixfs/badge.svg?branch=master)](https://coveralls.io/github/ipfs/js-ipfs-unixfs?branch=master) [![Dependency Status](https://david-dm.org/ipfs/js-ipfs-unixfs.svg?style=flat-square)](https://david-dm.org/ipfs/js-ipfs-unixfs) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard) +![](https://img.shields.io/badge/npm-%3E%3D3.0.0-orange.svg?style=flat-square) +![](https://img.shields.io/badge/Node.js-%3E%3D4.0.0-orange.svg?style=flat-square) + +[![Sauce Test Status](https://saucelabs.com/browser-matrix/js-ipfs-unixfs.svg)](https://saucelabs.com/u/js-ipfs-unixfs) > JavaScript implementation of IPFS' unixfs (a Unix FileSystem representation on top of a MerkleDAG) diff --git a/package.json b/package.json index d2dafce5..65ff998e 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,10 @@ "name": "ipfs-unixfs", "version": "0.1.4", "description": "JavaScript implementation of IPFS' unixfs (a Unix FileSystem representation on top of a MerkleDAG)", - "main": "lib/index.js", - "jsnext:main": "src/index.js", + "main": "src/index.js", + "browser": { + "fs": false + }, "scripts": { "test": "aegir-test", "test:node": "aegir-test node", @@ -28,9 +30,12 @@ "bugs": { "url": "https://github.com/ipfs/js-ipfs-unixfs/issues" }, + "engines": { + "node": ">=4.0.0" + }, "homepage": "https://github.com/ipfs/js-ipfs-unixfs#readme", "devDependencies": { - "aegir": "^8.1.2", + "aegir": "^9.1.0", "chai": "^3.5.0", "pre-commit": "^1.1.3" }, diff --git a/src/unixfs.proto.js b/src/unixfs.proto.js index 91395370..8843dc6c 100644 --- a/src/unixfs.proto.js +++ b/src/unixfs.proto.js @@ -17,5 +17,4 @@ module.exports = `message Data { message Metadata { required string MimeType = 1; -} -` +}` diff --git a/test/test-data/directory.unixfs b/test/fixtures/directory.unixfs similarity index 100% rename from test/test-data/directory.unixfs rename to test/fixtures/directory.unixfs diff --git a/test/test-data/directory/file.txt b/test/fixtures/directory/file.txt similarity index 100% rename from test/test-data/directory/file.txt rename to test/fixtures/directory/file.txt diff --git a/test/test-data/file.txt b/test/fixtures/file.txt similarity index 100% rename from test/test-data/file.txt rename to test/fixtures/file.txt diff --git a/test/test-data/file.txt.unixfs b/test/fixtures/file.txt.unixfs similarity index 100% rename from test/test-data/file.txt.unixfs rename to test/fixtures/file.txt.unixfs diff --git a/test/test-data/raw.unixfs b/test/fixtures/raw.unixfs similarity index 100% rename from test/test-data/raw.unixfs rename to test/fixtures/raw.unixfs diff --git a/test/test-data/symlink.txt b/test/fixtures/symlink.txt similarity index 100% rename from test/test-data/symlink.txt rename to test/fixtures/symlink.txt diff --git a/test/test-data/symlink.txt.unixfs b/test/fixtures/symlink.txt.unixfs similarity index 100% rename from test/test-data/symlink.txt.unixfs rename to test/fixtures/symlink.txt.unixfs diff --git a/test/unixfs-format.spec.js b/test/unixfs-format.spec.js index f4a12e37..8d748cbb 100644 --- a/test/unixfs-format.spec.js +++ b/test/unixfs-format.spec.js @@ -2,11 +2,15 @@ 'use strict' const expect = require('chai').expect -const fs = require('fs') -const path = require('path') +const loadFixture = require('aegir/fixtures') const UnixFS = require('../src') +const raw = loadFixture(__dirname, 'fixtures/raw.unixfs') +const directory = loadFixture(__dirname, 'fixtures/directory.unixfs') +const file = loadFixture(__dirname, 'fixtures/file.txt.unixfs') +const symlink = loadFixture(__dirname, 'fixtures/symlink.txt.unixfs') + describe('unixfs-format', () => { it('raw', (done) => { const data = new UnixFS('raw', new Buffer('bananas')) @@ -93,7 +97,6 @@ describe('unixfs-format', () => { describe('interop', () => { it('raw', (done) => { - const raw = fs.readFileSync(path.join(__dirname, '/test-data/raw.unixfs')) const unmarsheled = UnixFS.unmarshal(raw) expect(unmarsheled.data).to.deep.equal(new Buffer('Hello UnixFS\n')) expect(unmarsheled.type).to.equal('file') @@ -102,20 +105,18 @@ describe('unixfs-format', () => { }) it('directory', (done) => { - const raw = fs.readFileSync(path.join(__dirname, '/test-data/directory.unixfs')) - const unmarsheled = UnixFS.unmarshal(raw) + const unmarsheled = UnixFS.unmarshal(directory) expect(unmarsheled.data).to.deep.equal(undefined) expect(unmarsheled.type).to.equal('directory') - expect(unmarsheled.marshal()).to.deep.equal(raw) + expect(unmarsheled.marshal()).to.deep.equal(directory) done() }) it('file', (done) => { - const raw = fs.readFileSync(path.join(__dirname, '/test-data/file.txt.unixfs')) - const unmarsheled = UnixFS.unmarshal(raw) + const unmarsheled = UnixFS.unmarshal(file) expect(unmarsheled.data).to.deep.equal(new Buffer('Hello UnixFS\n')) expect(unmarsheled.type).to.equal('file') - expect(unmarsheled.marshal()).to.deep.equal(raw) + expect(unmarsheled.marshal()).to.deep.equal(file) done() }) @@ -123,12 +124,11 @@ describe('unixfs-format', () => { }) it('symlink', (done) => { - const raw = fs.readFileSync(path.join(__dirname, '/test-data/symlink.txt.unixfs')) - const unmarsheled = UnixFS.unmarshal(raw) + const unmarsheled = UnixFS.unmarshal(symlink) expect(unmarsheled.data).to.deep.equal(new Buffer('file.txt')) expect(unmarsheled.type).to.equal('symlink') // TODO: waiting on https://github.com/ipfs/js-ipfs-data-importing/issues/3#issuecomment-182440079 - // expect(unmarsheled.marshal()).to.deep.equal(raw) + // expect(unmarsheled.marshal()).to.deep.equal(symlink) done() }) })