webpack-config
Version:
Helps to load, extend and merge webpack configs
126 lines (100 loc) • 2.81 kB
JavaScript
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
;