diff --git a/lib/net/bip150.js b/lib/net/bip150.js index a9c2a0f0..f73edeca 100644 --- a/lib/net/bip150.js +++ b/lib/net/bip150.js @@ -9,6 +9,7 @@ 'use strict'; var assert = require('assert'); +var path = require('path'); var EventEmitter = require('events').EventEmitter; var util = require('../utils/util'); var co = require('../utils/co'); @@ -691,7 +692,7 @@ AuthDB.prototype.readKnown = async function readKnown() { if (!this.prefix) return; - file = this.prefix + '/known-peers'; + file = path.join(this.prefix, 'known-peers'); try { text = await fs.readFile(file, 'utf8'); @@ -769,7 +770,7 @@ AuthDB.prototype.readAuth = async function readAuth() { if (!this.prefix) return; - file = this.prefix + '/authorized-peers'; + file = path.join(this.prefix, 'authorized-peers'); try { text = await fs.readFile(file, 'utf8'); diff --git a/lib/net/hostlist.js b/lib/net/hostlist.js index 70791ff9..8f0f663a 100644 --- a/lib/net/hostlist.js +++ b/lib/net/hostlist.js @@ -7,6 +7,7 @@ 'use strict'; var assert = require('assert'); +var path = require('path'); var util = require('../utils/util'); var IP = require('../utils/ip'); var co = require('../utils/co'); @@ -1634,7 +1635,7 @@ HostListOptions.prototype.fromOptions = function fromOptions(options) { if (options.prefix != null) { assert(typeof options.prefix === 'string'); this.prefix = options.prefix; - this.filename = this.prefix + '/hosts.json'; + this.filename = path.join(this.prefix, 'hosts.json'); } if (options.filename != null) { diff --git a/lib/node/config.js b/lib/node/config.js index 6172bf32..c355ff28 100644 --- a/lib/node/config.js +++ b/lib/node/config.js @@ -7,9 +7,10 @@ 'use strict'; var assert = require('assert'); +var path = require('path'); +var os = require('os'); var fs = require('../utils/fs'); var util = require('../utils/util'); -var os = require('os'); var HOME = os.homedir(); /** @@ -24,10 +25,11 @@ function Config(module) { return new Config(module); assert(typeof module === 'string'); + assert(module.length > 0); this.module = module; this.network = 'main'; - this.prefix = HOME + '/.' + module; + this.prefix = path.join(HOME, '.' + module); this.options = Object.create(null); this.data = Object.create(null); @@ -522,7 +524,7 @@ Config.prototype.func = function func(key, fallback) { * @returns {String|null} */ -Config.prototype.path = function path(key, fallback) { +Config.prototype.path = function _path(key, fallback) { var value = this.str(key); if (fallback === undefined) @@ -533,16 +535,16 @@ Config.prototype.path = function path(key, fallback) { switch (value[0]) { case '~': // home dir - value = HOME + value.substring(1); + value = path.join(HOME, value.substring(1)); break; case '@': // prefix - value = this.prefix + value.substring(1); + value = path.join(this.prefix, value.substring(1)); break; default: // cwd break; } - return util.normalize(value); + return path.normalize(value); }; /** @@ -593,20 +595,20 @@ Config.prototype.getPrefix = function getPrefix() { if (prefix) { if (prefix[0] === '~') - prefix = HOME + prefix.substring(1); + prefix = path.join(HOME, prefix.substring(1)); return prefix; } - prefix = HOME + '/.' + this.module; + prefix = path.join(HOME, '.' + this.module); network = this.str('network'); if (network) { assert(isAlpha(network), 'Bad network.'); if (network !== 'main') - prefix += '/' + network; + prefix = path.join(prefix, network); } - return util.normalize(prefix); + return path.normalize(prefix); }; /** @@ -617,12 +619,12 @@ Config.prototype.getPrefix = function getPrefix() { */ Config.prototype.getFile = function getFile(file) { - var path = this.str('config'); + var name = this.str('config'); - if (path) - return path; + if (name) + return name; - return this.prefix + '/' + file; + return path.join(this.prefix, file); }; /** @@ -644,7 +646,7 @@ Config.prototype.ensure = function ensure() { */ Config.prototype.location = function location(file) { - return this.prefix + '/' + file; + return path.join(this.prefix, file); }; /** diff --git a/lib/utils/encoding.js b/lib/utils/encoding.js index 40cd71dc..b9c78236 100644 --- a/lib/utils/encoding.js +++ b/lib/utils/encoding.js @@ -12,6 +12,7 @@ */ var BN = require('bn.js'); +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER; var encoding = exports; /** @@ -352,7 +353,7 @@ encoding._write64 = function _write64(dst, num, off, be) { num -= 1; } - enforce(num <= Number.MAX_SAFE_INTEGER, off, 'Number exceeds 2^53-1'); + enforce(num <= MAX_SAFE_INTEGER, off, 'Number exceeds 2^53-1'); lo = num % 0x100000000; hi = (num - lo) / 0x100000000; diff --git a/lib/utils/fs.js b/lib/utils/fs.js index 0ff88b6f..a9a276d6 100644 --- a/lib/utils/fs.js +++ b/lib/utils/fs.js @@ -7,6 +7,7 @@ 'use strict'; var fs = require('fs'); +var path = require('path'); var co = require('./co'); exports.access = co.promisify(fs.access); @@ -87,11 +88,11 @@ exports.writeFileSync = fs.writeFileSync; exports.mkdirpSync = function mkdirpSync(dir, mode) { var data = getParts(dir); var parts = data.parts; - var path = data.path; + var path = data.root; var i, stat; if (mode == null) - mode = 488; // 0755 + mode = 0o750; for (i = 0; i < parts.length; i++) { path += parts[i]; @@ -114,11 +115,11 @@ exports.mkdirpSync = function mkdirpSync(dir, mode) { exports.mkdirp = async function mkdirp(dir, mode) { var data = getParts(dir); var parts = data.parts; - var path = data.path; + var path = data.root; var i, stat; if (mode == null) - mode = 488; // 0755 + mode = 0o750; for (i = 0; i < parts.length; i++) { path += parts[i]; @@ -139,28 +140,28 @@ exports.mkdirp = async function mkdirp(dir, mode) { }; function getParts(path) { + var root = ''; var parts; path = path.replace(/\\/g, '/'); path = path.replace(/(^|\/)\.\//, '$1'); path = path.replace(/\/+\.?$/, ''); parts = path.split(/\/+/); - path = ''; if (process.platform === 'win32') { if (parts[0].indexOf(':') !== -1) - path = parts.shift() + '/'; + root = parts.shift() + '/'; } if (parts.length > 0) { if (parts[0].length === 0) { parts.shift(); - path = '/'; + root = '/'; } } return { - path: path, + root: root, parts: parts }; } diff --git a/lib/utils/util.js b/lib/utils/util.js index 1313c75b..c113f5b3 100644 --- a/lib/utils/util.js +++ b/lib/utils/util.js @@ -792,26 +792,6 @@ util.binaryRemove = function binaryRemove(items, item, compare) { return true; }; -/** - * Normalize a path. - * @param {String} path - * @param {Boolean?} dirname - */ - -util.normalize = function normalize(path, dirname) { - var parts; - - path = path.replace(/\\/g, '/'); - path = path.replace(/(^|\/)\.\//, '$1'); - path = path.replace(/\/+\.?$/, ''); - parts = path.split(/\/+/); - - if (dirname) - parts.pop(); - - return parts.join('/'); -}; - /** * Ensure hidden-class mode for object. * @param {Object} obj @@ -850,24 +830,6 @@ if (!''.startsWith) { }; } -/** - * Promisify a function. - * @param {Function} func - * @returns {Function} - */ - -util.promisify = function promisify(func) { - return function() { - var result; - try { - result = func.apply(this, arguments); - } catch (e) { - return Promise.reject(e); - } - return Promise.resolve(result); - }; -}; - /** * Get memory usage info. * @returns {Object}