webpack-config
Version:
Helps to load, extend and merge webpack configs
143 lines (101 loc) • 4.75 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _entries = require('babel-runtime/core-js/object/entries');
var _entries2 = _interopRequireDefault(_entries);
var _weakMap = require('babel-runtime/core-js/weak-map');
var _weakMap2 = _interopRequireDefault(_weakMap);
var _constitute = require('constitute');
var _Config = require('./Config');
var _Config2 = _interopRequireDefault(_Config);
var _ConfigCache = require('./ConfigCache');
var _ConfigCache2 = _interopRequireDefault(_ConfigCache);
var _ConfigEnvironment = require('./ConfigEnvironment');
var _ConfigEnvironment2 = _interopRequireDefault(_ConfigEnvironment);
var _ConfigPatternCache = require('./ConfigPatternCache');
var _ConfigPatternCache2 = _interopRequireDefault(_ConfigPatternCache);
var _ConfigStringResolver = require('./ConfigStringResolver');
var _ConfigStringResolver2 = _interopRequireDefault(_ConfigStringResolver);
var _ConfigPathResolver = require('./ConfigPathResolver');
var _ConfigPathResolver2 = _interopRequireDefault(_ConfigPathResolver);
var _ConfigLoader = require('./ConfigLoader');
var _ConfigLoader2 = _interopRequireDefault(_ConfigLoader);
var _ConfigFactory = require('./ConfigFactory');
var _ConfigFactory2 = _interopRequireDefault(_ConfigFactory);
var _ConfigOptionsResolver = require('./ConfigOptionsResolver');
var _ConfigOptionsResolver2 = _interopRequireDefault(_ConfigOptionsResolver);
var _ConfigDefaultsCommand = require('./ConfigDefaultsCommand');
var _ConfigDefaultsCommand2 = _interopRequireDefault(_ConfigDefaultsCommand);
var _ConfigMergeCommand = require('./ConfigMergeCommand');
var _ConfigMergeCommand2 = _interopRequireDefault(_ConfigMergeCommand);
var _ConfigExtendCommand = require('./ConfigExtendCommand');
var _ConfigExtendCommand2 = _interopRequireDefault(_ConfigExtendCommand);
var _ConfigCommandFactory = require('./ConfigCommandFactory');
var _ConfigCommandFactory2 = _interopRequireDefault(_ConfigCommandFactory);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @private
* @type {WeakMap}
*/
const CONTAINER = new _weakMap2.default();
/**
* @class
*/
class ConfigContainer {
/**
* @constructor
*/
constructor() {
CONTAINER.set(this, new _constitute.Container());
this.setUp();
}
/**
* @protected
* @type {Container}
*/
get container() {
return CONTAINER.get(this);
}
/**
* @protected
* @returns {void}
*/
setUp() {
const container = this.container;
container.bindValue(ConfigContainer, this);
container.bindValue(_ConfigEnvironment2.default, new _ConfigEnvironment2.default((0, _entries2.default)(process.env)));
container.bindClass(_ConfigCache2.default, _ConfigCache2.default, [_ConfigEnvironment2.default]);
container.bindValue(_ConfigPatternCache2.default, new _ConfigPatternCache2.default());
container.bindClass(_ConfigStringResolver2.default, _ConfigStringResolver2.default, [_ConfigEnvironment2.default, _ConfigPatternCache2.default]);
container.bindClass(_ConfigPathResolver2.default, _ConfigPathResolver2.default, [_ConfigStringResolver2.default]);
container.bindClass(_ConfigLoader2.default, _ConfigLoader2.default, [_ConfigPathResolver2.default, _ConfigCache2.default, _ConfigFactory2.default]);
container.bindClass(_ConfigFactory2.default, _ConfigFactory2.default, [ConfigContainer]);
container.bindClass(_Config2.default, _Config2.default, _constitute.Transient.with([_ConfigCommandFactory2.default]));
container.bindClass(_ConfigOptionsResolver2.default, _ConfigOptionsResolver2.default, [_ConfigStringResolver2.default]);
container.bindClass(_ConfigDefaultsCommand2.default, _ConfigDefaultsCommand2.default, [_ConfigOptionsResolver2.default]);
container.bindClass(_ConfigMergeCommand2.default, _ConfigMergeCommand2.default, [_ConfigOptionsResolver2.default]);
container.bindClass(_ConfigExtendCommand2.default, _ConfigExtendCommand2.default, [_ConfigOptionsResolver2.default, _ConfigLoader2.default, _ConfigFactory2.default]);
container.bindClass(_ConfigCommandFactory2.default, _ConfigCommandFactory2.default, [ConfigContainer]);
}
/**
* @param {*} T
* @returns {*}
*/
resolve(T) {
return this.container.constitute(T);
}
/**
* @param {*} T
* @returns {Proxy<T>}
*/
proxy(T) {
return new Proxy(function () {}, {
construct: () => {
return this.resolve(T);
}
});
}
}
exports.default = ConfigContainer;
//# sourceMappingURL=ConfigContainer.js.map