96 lines
3.3 KiB
JavaScript
96 lines
3.3 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var lodash_clonedeep_1 = __importDefault(require("lodash.clonedeep"));
|
|
var lodash_isequal_1 = __importDefault(require("lodash.isequal"));
|
|
var AttributeMap;
|
|
(function (AttributeMap) {
|
|
function compose(a, b, keepNull) {
|
|
if (a === void 0) { a = {}; }
|
|
if (b === void 0) { b = {}; }
|
|
if (typeof a !== 'object') {
|
|
a = {};
|
|
}
|
|
if (typeof b !== 'object') {
|
|
b = {};
|
|
}
|
|
var attributes = lodash_clonedeep_1.default(b);
|
|
if (!keepNull) {
|
|
attributes = Object.keys(attributes).reduce(function (copy, key) {
|
|
if (attributes[key] != null) {
|
|
copy[key] = attributes[key];
|
|
}
|
|
return copy;
|
|
}, {});
|
|
}
|
|
for (var key in a) {
|
|
if (a[key] !== undefined && b[key] === undefined) {
|
|
attributes[key] = a[key];
|
|
}
|
|
}
|
|
return Object.keys(attributes).length > 0 ? attributes : undefined;
|
|
}
|
|
AttributeMap.compose = compose;
|
|
function diff(a, b) {
|
|
if (a === void 0) { a = {}; }
|
|
if (b === void 0) { b = {}; }
|
|
if (typeof a !== 'object') {
|
|
a = {};
|
|
}
|
|
if (typeof b !== 'object') {
|
|
b = {};
|
|
}
|
|
var attributes = Object.keys(a)
|
|
.concat(Object.keys(b))
|
|
.reduce(function (attrs, key) {
|
|
if (!lodash_isequal_1.default(a[key], b[key])) {
|
|
attrs[key] = b[key] === undefined ? null : b[key];
|
|
}
|
|
return attrs;
|
|
}, {});
|
|
return Object.keys(attributes).length > 0 ? attributes : undefined;
|
|
}
|
|
AttributeMap.diff = diff;
|
|
function invert(attr, base) {
|
|
if (attr === void 0) { attr = {}; }
|
|
if (base === void 0) { base = {}; }
|
|
attr = attr || {};
|
|
var baseInverted = Object.keys(base).reduce(function (memo, key) {
|
|
if (base[key] !== attr[key] && attr[key] !== undefined) {
|
|
memo[key] = base[key];
|
|
}
|
|
return memo;
|
|
}, {});
|
|
return Object.keys(attr).reduce(function (memo, key) {
|
|
if (attr[key] !== base[key] && base[key] === undefined) {
|
|
memo[key] = null;
|
|
}
|
|
return memo;
|
|
}, baseInverted);
|
|
}
|
|
AttributeMap.invert = invert;
|
|
function transform(a, b, priority) {
|
|
if (priority === void 0) { priority = false; }
|
|
if (typeof a !== 'object') {
|
|
return b;
|
|
}
|
|
if (typeof b !== 'object') {
|
|
return undefined;
|
|
}
|
|
if (!priority) {
|
|
return b; // b simply overwrites us without priority
|
|
}
|
|
var attributes = Object.keys(b).reduce(function (attrs, key) {
|
|
if (a[key] === undefined) {
|
|
attrs[key] = b[key]; // null is a valid value
|
|
}
|
|
return attrs;
|
|
}, {});
|
|
return Object.keys(attributes).length > 0 ? attributes : undefined;
|
|
}
|
|
AttributeMap.transform = transform;
|
|
})(AttributeMap || (AttributeMap = {}));
|
|
exports.default = AttributeMap;
|
|
//# sourceMappingURL=AttributeMap.js.map
|