From d83fd68876749859a307430c601f2ac3ca90c4e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= Date: Fri, 1 Nov 2019 11:53:37 +0100 Subject: [PATCH] fix: add extend, fixes #2579 --- package.json | 2 +- src/core/components/libp2p.js | 11 +++++++++-- src/core/runtime/libp2p-browser.js | 5 ++++- src/core/runtime/libp2p-nodejs.js | 5 ++++- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ba77c2301a..66ede006a1 100644 --- a/package.json +++ b/package.json @@ -212,7 +212,7 @@ "qs": "^6.5.2", "rimraf": "^3.0.0", "sinon": "^7.4.2", - "stardust4ipfs": "^0.1.2", + "stardust4ipfs": "^0.1.3", "stream-to-promise": "^2.2.0", "temp-write": "^4.0.0" }, diff --git a/src/core/components/libp2p.js b/src/core/components/libp2p.js index 5b4a47f84f..11e4761006 100644 --- a/src/core/components/libp2p.js +++ b/src/core/components/libp2p.js @@ -134,16 +134,23 @@ function defaultBundle ({ datastore, peerInfo, peerBook, options, config }) { } const libp2pUserOptions = get(options, 'libp2p', {}) + let libp2pExtend = get(options, 'libp2p.extend', false) let libp2pOptions = libp2pDefaults // allow user to specify overrideFunction, while at the same time allowing static arguments if (libp2pUserOptions.overrideFunction && typeof libp2pUserOptions.overrideFunction === 'function') { - libp2pOptions = mergeOptions(libp2pOptions, libp2pUserOptions.overrideFunction({ datastore, peerInfo, peerBook, options, config })) + const override = libp2pUserOptions.overrideFunction({ datastore, peerInfo, peerBook, options, config }) + + if (override.extend != null) { + libp2pExtend = override.extend + } + + libp2pOptions = mergeOptions.call({ concatArrays: libp2pExtend }, libp2pOptions, override) delete libp2pUserOptions.overrideFunction } - libp2pOptions = mergeOptions(libp2pOptions, libp2pUserOptions) + libp2pOptions = mergeOptions.call({ concatArrays: libp2pExtend }, libp2pOptions, libp2pUserOptions) // Required inline to reduce startup time // Note: libp2p-nodejs gets replaced by libp2p-browser when webpacked/browserified diff --git a/src/core/runtime/libp2p-browser.js b/src/core/runtime/libp2p-browser.js index 5e1348ecf4..5810afc96e 100644 --- a/src/core/runtime/libp2p-browser.js +++ b/src/core/runtime/libp2p-browser.js @@ -14,6 +14,9 @@ class Node extends libp2p { constructor (_options) { const wrtcstar = new WebRTCStar({ id: _options.peerInfo.id }) + const { extend } = _options + delete _options.extend + const defaults = { switch: { denyTTL: 2 * 60 * 1e3, // 2 minute base @@ -63,7 +66,7 @@ class Node extends libp2p { } } - super(mergeOptions(defaults, _options)) + super(mergeOptions.call({ concatArrays: extend }, defaults, _options)) } } diff --git a/src/core/runtime/libp2p-nodejs.js b/src/core/runtime/libp2p-nodejs.js index 6485e2d8d5..3ab22104ae 100644 --- a/src/core/runtime/libp2p-nodejs.js +++ b/src/core/runtime/libp2p-nodejs.js @@ -13,6 +13,9 @@ const mergeOptions = require('merge-options') class Node extends libp2p { constructor (_options) { + const { extend } = _options + delete _options.extend + const defaults = { switch: { denyTTL: 2 * 60 * 1e3, // 2 minute base @@ -66,7 +69,7 @@ class Node extends libp2p { } } - super(mergeOptions(defaults, _options)) + super(mergeOptions.call({ concatArrays: extend }, defaults, _options)) } }