Skip to content
This repository was archived by the owner on Feb 12, 2024. It is now read-only.

Commit a3b6235

Browse files
hugomrdiasAlan Shaw
authored andcommitted
perf: reduce bundle size (#1959)
* fix: remove sortby * fix: swap lodash flatten for just-flatten-it * fix: remove lodash isString and swap url for iso-url * fix: use dlv and merge-options * fix: more dlv, merge-options and remove lodash values * fix: more libs swaping * chore: clean up package.json
1 parent 66d6c42 commit a3b6235

File tree

15 files changed

+47
-38
lines changed

15 files changed

+47
-38
lines changed

package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@
7878
"stream-to-promise": "^2.2.0"
7979
},
8080
"dependencies": {
81-
"@nodeutils/defaults-deep": "^1.1.0",
8281
"async": "^2.6.1",
8382
"bignumber.js": "^8.0.2",
8483
"binary-querystring": "~0.1.2",
@@ -92,6 +91,7 @@
9291
"datastore-core": "~0.6.0",
9392
"datastore-pubsub": "~0.1.1",
9493
"debug": "^4.1.0",
94+
"dlv": "^1.1.2",
9595
"err-code": "^1.1.2",
9696
"file-type": "^10.2.0",
9797
"fnv1a": "^1.0.1",
@@ -100,7 +100,6 @@
100100
"glob": "^7.1.3",
101101
"hapi": "^18.0.0",
102102
"hapi-pino": "^5.2.0",
103-
"hoek": "^6.1.2",
104103
"human-to-milliseconds": "^1.0.0",
105104
"interface-datastore": "~0.6.0",
106105
"ipfs-bitswap": "~0.23.0",
@@ -124,9 +123,12 @@
124123
"is-ipfs": "~0.6.0",
125124
"is-pull-stream": "~0.0.0",
126125
"is-stream": "^1.1.0",
126+
"iso-url": "~0.4.6",
127127
"joi": "^14.3.0",
128128
"joi-browser": "^13.4.0",
129129
"joi-multiaddr": "^4.0.0",
130+
"just-flatten-it": "^2.1.0",
131+
"just-safe-set": "^2.1.0",
130132
"libp2p": "~0.25.0-rc.5",
131133
"libp2p-bootstrap": "~0.9.3",
132134
"libp2p-crypto": "~0.16.0",
@@ -142,6 +144,7 @@
142144
"libp2p-websockets": "~0.12.2",
143145
"lodash": "^4.17.11",
144146
"mafmt": "^6.0.2",
147+
"merge-options": "^1.0.1",
145148
"mime-types": "^2.1.21",
146149
"mkdirp": "~0.5.1",
147150
"multiaddr": "^6.0.0",
@@ -151,7 +154,6 @@
151154
"multihashes": "~0.4.14",
152155
"multihashing-async": "~0.5.1",
153156
"node-fetch": "^2.3.0",
154-
"once": "^1.4.0",
155157
"peer-book": "~0.9.0",
156158
"peer-id": "~0.12.0",
157159
"peer-info": "~0.15.0",
@@ -167,7 +169,6 @@
167169
"pull-sort": "^1.0.1",
168170
"pull-stream": "^3.6.9",
169171
"pull-stream-to-stream": "^1.3.4",
170-
"pump": "^3.0.0",
171172
"readable-stream": "^3.1.1",
172173
"receptacle": "^1.3.2",
173174
"stream-to-pull-stream": "^1.7.3",

src/cli/commands/add.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use strict'
22

3-
const sortBy = require('lodash/sortBy')
43
const pull = require('pull-stream')
54
const promisify = require('promisify-es6')
65
const getFolderSize = promisify(require('get-folder-size'))
@@ -38,7 +37,16 @@ function addPipeline (source, addStream, options) {
3837
return resolve()
3938
}
4039

41-
sortBy(added, 'path')
40+
added
41+
.sort((a, b) => {
42+
if (a.path > b.path) {
43+
return 1
44+
}
45+
if (a.path < b.path) {
46+
return -1
47+
}
48+
return 0
49+
})
4250
.reverse()
4351
.map((file) => {
4452
const log = options.quiet ? [] : ['added']

src/core/components/dag.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const CID = require('cids')
55
const pull = require('pull-stream')
66
const mapAsync = require('async/map')
77
const setImmediate = require('async/setImmediate')
8-
const flattenDeep = require('lodash/flattenDeep')
8+
const flattenDeep = require('just-flatten-it')
99
const errCode = require('err-code')
1010

1111
module.exports = function dag (self) {

src/core/components/files-regular/add-from-url.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict'
22

3-
const { URL } = require('url')
3+
const { URL } = require('iso-url')
44
const fetch = require('../../runtime/fetch-nodejs')
55

66
module.exports = (self) => {

src/core/components/files-regular/add.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ const pull = require('pull-stream')
55
const sort = require('pull-sort')
66
const isStream = require('is-stream')
77
const isSource = require('is-pull-stream').isSource
8-
const isString = require('lodash/isString')
98

109
module.exports = function (self) {
1110
const add = promisify((data, options, callback) => {
@@ -24,7 +23,7 @@ module.exports = function (self) {
2423
// path is optional if content is present
2524
if (obj.content) return isBufferOrStream(obj.content)
2625
// path must be a non-empty string if no content
27-
return Boolean(obj.path) && isString(obj.path)
26+
return Boolean(obj.path) && typeof obj.path === 'string'
2827
}
2928
// An input atom: a buffer, stream or content object
3029
const isInput = obj => isBufferOrStream(obj) || isContentObject(obj)

src/core/components/init.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
'use strict'
22

33
const peerId = require('peer-id')
4+
const mergeOptions = require('merge-options')
45
const waterfall = require('async/waterfall')
56
const parallel = require('async/parallel')
67
const promisify = require('promisify-es6')
7-
const defaultsDeep = require('@nodeutils/defaults-deep')
88
const defaultConfig = require('../runtime/config-nodejs.js')
99
const Keychain = require('libp2p-keychain')
1010
const {
@@ -59,7 +59,7 @@ module.exports = function init (self) {
5959
opts.bits = Number(opts.bits) || 2048
6060
opts.log = opts.log || function () {}
6161

62-
const config = defaultsDeep(self._options.config, defaultConfig())
62+
const config = mergeOptions(defaultConfig(), self._options.config)
6363
let privateKey
6464

6565
waterfall([

src/core/components/libp2p.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use strict'
22

3-
const get = require('lodash/get')
4-
const defaultsDeep = require('@nodeutils/defaults-deep')
3+
const get = require('dlv')
4+
const mergeOptions = require('merge-options')
55
const ipnsUtils = require('../ipns/routing/utils')
66

77
module.exports = function libp2p (self, config) {
@@ -107,7 +107,7 @@ function defaultBundle ({ datastore, peerInfo, peerBook, options, config }) {
107107
})
108108
}
109109

110-
const libp2pOptions = defaultsDeep(get(options, 'libp2p', {}), libp2pDefaults)
110+
const libp2pOptions = mergeOptions(libp2pDefaults, get(options, 'libp2p', {}))
111111

112112
// Required inline to reduce startup time
113113
// Note: libp2p-nodejs gets replaced by libp2p-browser when webpacked/browserified

src/core/components/pre-start.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const PeerInfo = require('peer-info')
55
const multiaddr = require('multiaddr')
66
const waterfall = require('async/waterfall')
77
const Keychain = require('libp2p-keychain')
8-
const defaultsDeep = require('@nodeutils/defaults-deep')
8+
const mergeOptions = require('merge-options')
99
const NoKeychain = require('./no-keychain')
1010
/*
1111
* Load stuff from Repo into memory
@@ -22,7 +22,7 @@ module.exports = function preStart (self) {
2222
return cb(null, config)
2323
}
2424

25-
config = defaultsDeep(self._options.config, config)
25+
config = mergeOptions(config, self._options.config)
2626

2727
self.config.replace(config, (err) => {
2828
if (err) {

src/core/components/start.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
const series = require('async/series')
44
const Bitswap = require('ipfs-bitswap')
5-
const get = require('lodash/get')
5+
const get = require('dlv')
66
const setImmediate = require('async/setImmediate')
77
const promisify = require('promisify-es6')
88
const { TieredDatastore } = require('datastore-core')

src/core/components/swarm.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
'use strict'
22

33
const promisify = require('promisify-es6')
4-
const values = require('lodash/values')
54

65
const OFFLINE_ERROR = require('../utils').OFFLINE_ERROR
76

@@ -25,7 +24,7 @@ module.exports = function swarm (self) {
2524

2625
const peers = []
2726

28-
values(self._peerInfoBook.getAll()).forEach((peer) => {
27+
Object.values(self._peerInfoBook.getAll()).forEach((peer) => {
2928
const connectedAddr = peer.isConnected()
3029

3130
if (!connectedAddr) { return }
@@ -50,7 +49,7 @@ module.exports = function swarm (self) {
5049
return callback(new Error(OFFLINE_ERROR))
5150
}
5251

53-
const peers = values(self._peerInfoBook.getAll())
52+
const peers = Object.values(self._peerInfoBook.getAll())
5453

5554
callback(null, peers)
5655
}),

0 commit comments

Comments
 (0)