webpack-config
Version:
Helps to load, extend and merge webpack configs
95 lines (77 loc) • 1.71 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _weakMap = require('babel-runtime/core-js/weak-map');
var _weakMap2 = _interopRequireDefault(_weakMap);
var _lodash = require('lodash');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @private
* @type {WeakMap}
*/
const PATH_RESOLVER = new _weakMap2.default();
/**
* @private
* @type {WeakMap}
*/
const CACHE = new _weakMap2.default();
/**
* @private
* @type {WeakMap}
*/
const FACTORY = new _weakMap2.default();
/**
* @class
*/
class ConfigLoader {
/**
* @constructor
* @param {ConfigPathResolver} pathResolver
* @param {ConfigCache} cache
* @param {ConfigFactory} factory
*/
constructor(pathResolver, cache, factory) {
PATH_RESOLVER.set(this, pathResolver);
CACHE.set(this, cache);
FACTORY.set(this, factory);
}
/**
* @readonly
* @type {ConfigPathResolver}
*/
get pathResolver() {
return PATH_RESOLVER.get(this);
}
/**
* @readonly
* @type {ConfigCache}
*/
get cache() {
return CACHE.get(this);
}
/**
* @readonly
* @type {ConfigFactory}
*/
get factory() {
return FACTORY.get(this);
}
/**
* @param {String} filename
* @returns {Config|ConfigList}
*/
loadConfig(filename) {
filename = this.pathResolver.resolve(filename);
let config = this.cache.get(filename);
if (config) {
config = this.factory.createConfig(config);
}
if (config && !(0, _lodash.isString)(config.filename)) {
config.filename = filename;
}
return config;
}
}
exports.default = ConfigLoader;
//# sourceMappingURL=ConfigLoader.js.map
;