UNPKG

webpack-config

Version:

Helps to load, extend and merge webpack configs

126 lines (100 loc) 2.81 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _map = require('babel-runtime/core-js/map'); var _map2 = _interopRequireDefault(_map); var _weakMap = require('babel-runtime/core-js/weak-map'); var _weakMap2 = _interopRequireDefault(_weakMap); var _lodash = require('lodash'); var _ConfigStrategyList = require('./ConfigStrategyList'); var _ConfigStrategyList2 = _interopRequireDefault(_ConfigStrategyList); var _ConfigCacheResolvers = require('./ConfigCacheResolvers'); var _ConfigCacheResolvers2 = _interopRequireDefault(_ConfigCacheResolvers); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @private * @type {String} */ const PERSISTENT_KEY = 'WEBPACK_CONFIG_CACHE'; /** * @private * @type {WeakMap} */ const ENVIRONMENT = new _weakMap2.default(); /** * @private * @type {WeakMap} */ const VALUE_RESOLVERS = new _weakMap2.default(); /** * Please set `WEBPACK_CONFIG_CACHE` environment variable to `false` to make it non persistent or just use {@link ConfigCache#persistent} * @class * @extends {Map} */ class ConfigCache extends _map2.default { /** * @constructor * @param {ConfigEnvironment} environment * @param {Function[]} [valueResolvers] */ constructor(environment, valueResolvers = _ConfigCacheResolvers2.default) { super(); ENVIRONMENT.set(this, environment); VALUE_RESOLVERS.set(this, _ConfigStrategyList2.default.from(valueResolvers)); } /** * @readonly * @type {ConfigEnvironment} */ get environment() { return ENVIRONMENT.get(this); } /** * @type {Boolean} */ get persistent() { return this.environment.getOrDefault(PERSISTENT_KEY, true) === true; } /** * @example * import { * cache * } from 'webpack-config'; * * cache.persistent = false; * @example * WEBPACK_CONFIG_CACHE=false ... * @param {Boolean} value */ set persistent(value) { this.environment.set(PERSISTENT_KEY, value); } /** * @readonly * @type {ConfigStrategyList} */ get valueResolvers() { return VALUE_RESOLVERS.get(this); } /** * @override */ get(key) { let value; if (this.persistent) { if (!this.has(key)) { value = require(key); this.set(key, value); } else { value = super.get(key); } } else { delete require.cache[key]; value = require(key); } return this.valueResolvers.resolve(value, x => !(0, _lodash.isUndefined)(x)); } } exports.default = ConfigCache; //# sourceMappingURL=ConfigCache.js.map