UNPKG

webpack-config

Version:

Helps to load, extend and merge webpack configs

113 lines (92 loc) 2.63 kB
'use strict'; 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