angular2-hmr
Version:
angular2-hmr: Hot Module Replacement for Webpack and Angular 2
51 lines • 1.79 kB
JavaScript
var hmr_store_1 = require('./hmr-store');
// noop in parentNode
// TODO: find a better way to noop
var _env = typeof process !== 'undefined' &&
process &&
process.env &&
(process.env.ENV ||
process.env.NODE_ENV);
var _dev = ((_env &&
typeof _env === 'string' &&
(_env.indexOf('dev') > -1)) ||
_env === undefined);
function setDev(newDev) {
if (typeof newDev === 'string') {
return _dev = (newDev.indexOf('dev') > -1);
}
else if (typeof newDev === 'boolean') {
return _dev = newDev;
}
throw new Error('Please provide a string or boolean');
}
exports.setDev = setDev;
function HmrState(namespaceOrConfig, config) {
function decoratorFactory(target, decoratedPropertyName, descriptor) {
if (!_dev) {
return descriptor;
}
var key = namespaceOrConfig || target.constructor.name + '#' + decoratedPropertyName;
hmr_store_1.HmrStore.select(key, function () { return hmr_store_1.HmrStore.get(key); });
Object.defineProperty(target, decoratedPropertyName, {
get: function () { return hmr_store_1.HmrStore.get(key); },
set: function (newValue) {
var currentValue = hmr_store_1.HmrStore.get(key);
if (!currentValue) {
hmr_store_1.HmrStore._initialValues[key] = newValue;
}
else {
newValue = Object.assign(newValue, currentValue);
}
return hmr_store_1.HmrStore.set(key, newValue);
},
enumerable: true,
configurable: true
});
return descriptor;
}
return decoratorFactory;
}
exports.HmrState = HmrState;
//# sourceMappingURL=hmr-decorator.js.map
;