diff --git a/lib/node/config.js b/lib/node/config.js index b2a794b8..c012f420 100644 --- a/lib/node/config.js +++ b/lib/node/config.js @@ -47,7 +47,7 @@ config.parse = function parse(options) { var env = {}; var arg = {}; var data = {}; - var text, prefix, filename, dirname; + var conf, prefix, filename, dirname; if (!options) options = {}; @@ -72,8 +72,8 @@ config.parse = function parse(options) { filename = resolve(prefix, 'bcoin.conf'); dirname = utils.normalize(filename, true); - text = config.readConfig(filename, prefix, dirname); - data = merge(text, data); + conf = config.readConfig(filename, prefix, dirname); + data = merge(conf, data); prefix = config.getPrefix(data); @@ -88,6 +88,10 @@ config.parse = function parse(options) { } } + // Force fast properties + // after all those merges. + utils.fastProp(data); + return data; }; diff --git a/lib/node/node.js b/lib/node/node.js index 583bf2d1..abc44e13 100644 --- a/lib/node/node.js +++ b/lib/node/node.js @@ -26,7 +26,10 @@ function Node(options) { AsyncObject.call(this); - options = this._parseOptions(options); + if (!options) + options = {}; + + options = this.parseOptions(options); this.options = options; this.network = bcoin.network.get(options.network); @@ -161,12 +164,7 @@ Node.prototype._error = function _error(err) { * @returns {Object} */ -Node.prototype._parseOptions = function _parseOptions(options) { - if (!options) - options = {}; - - options = utils.merge({}, options); - +Node.prototype.parseOptions = function parseOptions(options) { options.network = bcoin.network.get(options.network); if (!options.prefix) @@ -197,8 +195,6 @@ Node.prototype._parseOptions = function _parseOptions(options) { if (options.witness == null) options.witness = options.network.witness; - utils.fastProp(options); - return options; };