webpack-config
Version:
Helps to load, extend and merge webpack configs
90 lines (69 loc) • 1.89 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');
var _Config = require('./Config');
var _Config2 = _interopRequireDefault(_Config);
var _ConfigList = require('./ConfigList');
var _ConfigList2 = _interopRequireDefault(_ConfigList);
var _ConfigArgv = require('./ConfigArgv');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @private
* @type {WeakMap}
*/
const CONTAINER = new _weakMap2.default();
/**
* @class
*/
class ConfigFactory {
/**
* @constructor
* @param {ConfigContainer} container
*/
constructor(container) {
CONTAINER.set(this, container);
}
/**
* @readonly
* @type {ConfigContainer}
*/
get container() {
return CONTAINER.get(this);
}
/**
* @private
* @param {Object|Config} value
* @returns {Config}
*/
initWith(value) {
let config;
if (value instanceof _Config2.default) {
config = value.clone();
} else {
config = this.container.resolve(_Config2.default).merge(value);
}
return config;
}
/**
* @param {Function|Object|Object[]} value
* @returns {Config|ConfigList}
*/
createConfig(value) {
let config;
if ((0, _lodash.isFunction)(value)) {
value = value(_ConfigArgv.env);
}
if (Array.isArray(value)) {
config = _ConfigList2.default.from(value, x => this.initWith(x));
} else if ((0, _lodash.isObject)(value)) {
config = this.initWith(value);
}
return config;
}
}
exports.default = ConfigFactory;
//# sourceMappingURL=ConfigFactory.js.map
;