UNPKG

webpack-config

Version:

Helps to load, extend and merge webpack configs

95 lines (77 loc) 1.71 kB
'use strict'; 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