1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const cloneDeep = require("lodash.clonedeep");
- const isEqual = require("lodash.isequal");
- var AttributeMap;
- (function (AttributeMap) {
- function compose(a = {}, b = {}, keepNull = false) {
- if (typeof a !== 'object') {
- a = {};
- }
- if (typeof b !== 'object') {
- b = {};
- }
- let attributes = cloneDeep(b);
- if (!keepNull) {
- attributes = Object.keys(attributes).reduce((copy, key) => {
- if (attributes[key] != null) {
- copy[key] = attributes[key];
- }
- return copy;
- }, {});
- }
- for (const 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 (typeof a !== 'object') {
- a = {};
- }
- if (typeof b !== 'object') {
- b = {};
- }
- const attributes = Object.keys(a)
- .concat(Object.keys(b))
- .reduce((attrs, key) => {
- if (!isEqual(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 = {}) {
- attr = attr || {};
- const baseInverted = Object.keys(base).reduce((memo, key) => {
- if (base[key] !== attr[key] && attr[key] !== undefined) {
- memo[key] = base[key];
- }
- return memo;
- }, {});
- return Object.keys(attr).reduce((memo, key) => {
- if (attr[key] !== base[key] && base[key] === undefined) {
- memo[key] = null;
- }
- return memo;
- }, baseInverted);
- }
- AttributeMap.invert = invert;
- function transform(a, b, priority = false) {
- if (typeof a !== 'object') {
- return b;
- }
- if (typeof b !== 'object') {
- return undefined;
- }
- if (!priority) {
- return b; // b simply overwrites us without priority
- }
- const attributes = Object.keys(b).reduce((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
|