| Server IP : 68.183.124.220 / Your IP : 216.73.217.137 Web Server : Apache/2.4.18 (Ubuntu) System : Linux Sandbox-A 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : gavin ( 1000) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/gavin/workspace/readjs/node_modules/rcloader/ |
Upload File : |
module.exports = RcLoader;
var path = require('path');
var assign = require('lodash.assign');
var isObject = require('lodash.isobject');
var merge = require('lodash.merge');
var RcFinder = require('rcfinder');
function RcLoader(name, userConfig, finderConfig) {
if (!(this instanceof RcLoader))
return new RcLoader(name, userConfig, finderConfig);
if (!name)
throw new TypeError('Specify a name for your config files');
finderConfig = isObject(finderConfig) ? finderConfig : {};
var config = {};
var configPending = false;
var lookup = userConfig && userConfig.lookup !== void 0 ? !!userConfig.lookup : true;
var finder = new RcFinder(name, finderConfig);
if (typeof userConfig === 'string') {
lookup = false;
config.defaultFile = userConfig;
} else {
assign(config, userConfig || {});
}
var defaultFileGiven = (config.defaultFile !== undefined);
if (defaultFileGiven) {
if (finder.canLoadSync) {
assign(config, finder.get(config.defaultFile));
} else {
// push callbacks here that need to wait for config to load
configPending = [];
// force the async loader
finder.get(config.defaultFile, function (err, defaults) {
if (err) throw err;
assign(config, defaults);
// clear the configPending queue
var cbs = configPending;
configPending = null;
cbs.forEach(function (cb) { cb(); });
});
}
}
// these shouldn't be a part of the final config
delete config.defaultFile;
delete config.lookup;
// get the config for a file
this.for = function (filename, cb) {
var sync = typeof cb !== 'function';
function respond(err, configFile) {
if (err && !sync) return cb(err);
// the config has not loaded yet, delay our response
// until it is
if (!sync && configPending) {
return configPending.push(function () {
respond(err, configFile);
});
}
configFile = configFile || {};
if (defaultFileGiven) {
configFile = merge(config, configFile);
} else {
configFile = merge(configFile, config);
}
if (sync) return configFile;
cb(void 0, configFile);
}
if (!lookup) {
if (sync) return respond();
return process.nextTick(respond);
}
if (sync) return respond(null, finder.find(path.dirname(filename)));
finder.find(path.dirname(filename), respond);
};
}