@playlyfe/babel-loader
Version:
babel module loader for webpack
59 lines (48 loc) • 1.74 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _babelConfigCacheIdentifier = require("./babel-config-cache-identifier");
var _memoize2 = _interopRequireDefault(require("lodash/memoize"));
var _jsonString = require("./json-string");
var _log = _interopRequireDefault(require("./_log"));
var _default = {
generate: val => (0, _jsonString.toJSONString)(val),
diff: (oldIdent, newIdent) => {
const newVal = (0, _jsonString.parseJSONString)(newIdent);
if (oldIdent == null) {
Object.keys(newVal).forEach(key => {
if (key !== 'source') {
// eslint-disable-next-line no-use-before-define
printDiff(key, '', newVal[key] || '');
}
});
return ['new'];
}
const oldVal = (0, _jsonString.parseJSONString)(oldIdent);
return Object.keys(newVal).reduce((acc, key) => {
if (newVal[key] !== oldVal[key]) {
if (key !== 'source') {
// eslint-disable-next-line no-use-before-define
printDiff(key, oldVal[key] || '', newVal[key] || '');
}
acc.push(key);
}
return acc;
}, []);
}
};
exports.default = _default;
const printDiff = (0, _memoize2.default)((key, oldVal, newVal) => {
if (key === 'babelConfig') {
(0, _babelConfigCacheIdentifier.printBabelConfigCacheIdentifierDiff)(oldVal, newVal);
} else {
_log.default.write((0, _jsonString.diffJSONString)((0, _jsonString.toJSONString)({
[key]: oldVal
}), (0, _jsonString.toJSONString)({
[key]: newVal
})), false);
}
}, (key, oldVal, newVal) => `${key}-${oldVal}-${newVal}`);