From 0aa9d77cc5ff0acf6ef84022450356a2e20fde2a Mon Sep 17 00:00:00 2001 From: Hugo Dias Date: Fri, 15 Mar 2019 17:04:18 +0000 Subject: [PATCH] fix: reduce bundle size (#186) * fix: reduce bundle size * chore: update deps and fix tests * chore: change safe-buffer to buffer * fix: fix config get callbacks --- .npmignore | 30 ------------------------------ package.json | 16 ++++++++-------- src/blockstore.js | 5 +++-- src/config.js | 28 +++++++++++++++++++++------- src/index.js | 7 ++++--- test/repo-test.js | 9 +++++++++ 6 files changed, 45 insertions(+), 50 deletions(-) delete mode 100644 .npmignore diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 33ff01fc..00000000 --- a/.npmignore +++ /dev/null @@ -1,30 +0,0 @@ -test - -# Logs -logs -*.log - -coverage - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -build - -# Dependency directory -# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git -node_modules diff --git a/package.json b/package.json index 70f10b9b..6e71371c 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "npm": ">=3.0.0" }, "devDependencies": { - "aegir": "^18.1.0", + "aegir": "^18.2.1", "chai": "^4.2.0", "dirty-chai": "^2.0.1", "lodash": "^4.17.11", @@ -55,18 +55,18 @@ "dependencies": { "async": "^2.6.2", "base32.js": "~0.1.0", - "bignumber.js": "^8.0.2", - "cids": "~0.5.7", + "bignumber.js": "^8.1.1", + "buffer": "^5.2.1", + "cids": "~0.5.8", "datastore-core": "~0.6.0", "datastore-fs": "~0.8.0", "datastore-level": "~0.10.0", - "debug": "^4.1.1", + "debug": "^4.1.0", + "dlv": "^1.1.2", "interface-datastore": "~0.6.0", "ipfs-block": "~0.8.0", - "lodash.get": "^4.4.2", - "lodash.has": "^4.5.2", - "lodash.set": "^4.3.2", - "multiaddr": "^6.0.4", + "just-safe-set": "^2.1.0", + "multiaddr": "^6.0.6", "proper-lockfile": "^4.0.0", "pull-stream": "^3.6.9", "sort-keys": "^2.0.0" diff --git a/src/blockstore.js b/src/blockstore.js index e38c386c..e081f810 100644 --- a/src/blockstore.js +++ b/src/blockstore.js @@ -8,7 +8,8 @@ const Block = require('ipfs-block') const setImmediate = require('async/setImmediate') const reject = require('async/reject') const CID = require('cids') -const pull = require('pull-stream') +const pull = require('pull-stream/pull') +const collect = require('pull-stream/sinks/collect') /** * Transform a raw buffer to a base32 encoded key. @@ -60,7 +61,7 @@ function createBaseStore (store) { query (query, callback) { pull( store.query(query), - pull.collect(callback) + collect(callback) ) }, /** diff --git a/src/config.js b/src/config.js index 8b835beb..c5840a05 100644 --- a/src/config.js +++ b/src/config.js @@ -3,9 +3,9 @@ const Key = require('interface-datastore').Key const queue = require('async/queue') const waterfall = require('async/waterfall') -const _get = require('lodash.get') -const _set = require('lodash.set') -const _has = require('lodash.has') +const _get = require('dlv') +const _set = require('just-safe-set') +const Buffer = require('buffer').Buffer const configKey = new Key('config') @@ -37,10 +37,21 @@ module.exports = (store) => { } catch (err) { return callback(err) } - if (key !== undefined && !_has(config, key)) { - return callback(new Error('Key ' + key + ' does not exist in config')) + + if (typeof key === 'undefined') { + return callback(null, config) + } + + if (typeof key !== 'string') { + return callback(new Error('Key ' + key + ' must be a string.')) } - const value = key !== undefined ? _get(config, key) : config + + const value = _get(config, key, null) + + if (value === null) { + return callback(new Error('Key ' + key + ' does not exist in config.')) + } + callback(null, value) }) }, @@ -91,7 +102,10 @@ module.exports = (store) => { waterfall( [ (cb) => configStore.get(cb), - (config, cb) => cb(null, _set(config, key, value)), + (config, cb) => { + _set(config, key, value) + cb(null, config) + }, _saveAll ], callback) diff --git a/src/index.js b/src/index.js index cc18d7f6..2e018ded 100644 --- a/src/index.js +++ b/src/index.js @@ -4,12 +4,13 @@ const waterfall = require('async/waterfall') const series = require('async/series') const parallel = require('async/parallel') const each = require('async/each') -const _get = require('lodash.get') +const _get = require('dlv') const assert = require('assert') const path = require('path') const debug = require('debug') const Big = require('bignumber.js') -const pull = require('pull-stream') +const pull = require('pull-stream/pull') +const reduce = require('pull-stream/sinks/reduce') const backends = require('./backends') const version = require('./version') @@ -328,7 +329,7 @@ class IpfsRepo { function getSize (queryFn, callback) { pull( queryFn.query({}), - pull.reduce((sum, block) => { + reduce((sum, block) => { return sum .plus(block.value.byteLength) .plus(block.key._buf.byteLength) diff --git a/test/repo-test.js b/test/repo-test.js index 83c625d3..30eea4f0 100644 --- a/test/repo-test.js +++ b/test/repo-test.js @@ -49,6 +49,15 @@ module.exports = (repo) => { }) }) + it('get config key should fail with non string key', (done) => { + repo.config.get(1111, (err, value) => { + expect(err).to.exist() + console.log(value) + + done() + }) + }) + it('set config key', (done) => { series([ (cb) => repo.config.set('c.x', 'd', cb),