webpack-config
Version:
Helps to load, extend and merge webpack configs
113 lines (92 loc) • 2.63 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _weakMap = require('babel-runtime/core-js/weak-map');
var _weakMap2 = _interopRequireDefault(_weakMap);
var _lodash = require('lodash');
var _recursiveIterator = require('recursive-iterator');
var _recursiveIterator2 = _interopRequireDefault(_recursiveIterator);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @function
* @name ConfigTransform
* @param {Config} config
* @returns {Config|Object}
*/
/**
* @typedef {Object|ConfigTransform} ConfigOptions
*/
/**
* @private
* @type {WeakMap}
*/
const STRING_RESOLVER = new _weakMap2.default();
/**
* @class
*/
class ConfigOptionsResolver {
/**
* @constructor
* @param {ConfigStringResolver} stringResolver
*/
constructor(stringResolver) {
STRING_RESOLVER.set(this, stringResolver);
}
/**
* @readonly
* @type {ConfigStringResolver}
*/
get stringResolver() {
return STRING_RESOLVER.get(this);
}
/**
* @private
* @param {Config} config
* @param {ConfigOptions} options
* @returns {Object}
*/
static valueOf(config, options) {
return (0, _lodash.isFunction)(options) ? options.call(config, config) : options;
}
/**
* @param {Config} config
* @param {ConfigOptions} options
* @returns {Object}
*/
resolve(config, options) {
const value = ConfigOptionsResolver.valueOf(config, options);
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = (0, _getIterator3.default)(new _recursiveIterator2.default(value, 1, true)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
const _ref = _step.value;
const parent = _ref.parent;
const node = _ref.node;
const key = _ref.key;
if ((0, _lodash.isString)(node)) {
parent[key] = this.stringResolver.resolve(node);
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return value;
}
}
exports.default = ConfigOptionsResolver;
//# sourceMappingURL=ConfigOptionsResolver.js.map
;