webpack-config
Version:
Helps to load, extend and merge webpack configs
111 lines (91 loc) • 2.16 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');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @private
* @type {RegExp}
*/
const DEFAULT_INTERPOLATE = /\[([\w\s]+?)]/g;
/**
* @private
* @type {WeakMap}
*/
const INTERPOLATE = new _weakMap2.default();
/**
* @class
* @extends {Map}
*/
class ConfigPatternCache extends _map2.default {
/**
* @constructor
* @param {RegExp} [interpolate=/\[([\w\s]+?)]/g]
*/
constructor(interpolate = DEFAULT_INTERPOLATE) {
super();
this.interpolate = interpolate;
}
/**
* @type {RegExp}
*/
get interpolate() {
return INTERPOLATE.get(this);
}
/**
* @example
* import {
* patternCache
* } from 'webpack-config';
*
* patternCache.interpolate = /{([\w\s]+?)}/g;
* @param {RegExp} value
*/
set interpolate(value) {
INTERPOLATE.set(this, value);
}
/**
* @param {*} key
* @returns {RegExp}
*/
getOrSet(key) {
if (!this.has(key)) {
this.set(key, key);
}
return this.get(key);
}
/**
* @override
* @param {*} key
* @param {String} value
* @returns {RegExp}
*/
set(key, value) {
return super.set(key, this.compile(value));
}
/**
* @param {String} value
* @param {Object} options
* @returns {String}
*/
eval(value, options = {}) {
const compiledTemplate = this.getOrSet(value);
return compiledTemplate(options);
}
/**
* @param {String} value
* @returns {Function}
*/
compile(value) {
return (0, _lodash.template)(value, {
interpolate: this.interpolate
});
}
}
exports.default = ConfigPatternCache;
//# sourceMappingURL=ConfigPatternCache.js.map