UNPKG

@sprucelabs/spruce-skill-utils

Version:

Loosely coupled classes and functions to make skill development faster! 🏎

34 lines (33 loc) 968 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = isEqual; //@TODO write tests maybe? this is extracted from the calendar skill function isEqual(a, b) { if (a === b) { return true; } if (a instanceof Date && b instanceof Date) { return a.getTime() === b.getTime(); } if (!a || !b || (typeof a !== 'object' && typeof b !== 'object')) { return a === b; } if (a.prototype !== b.prototype) { return false; } a = removeUndefinedAndNullFields({ ...a }); b = removeUndefinedAndNullFields({ ...b }); const keys = Object.keys(a); if (keys.length !== Object.keys(b).length) { return false; } return keys.every((k) => isEqual(a[k], b[k])); } function removeUndefinedAndNullFields(obj) { for (const key in obj) { if (obj[key] === undefined || obj[key] === null) { delete obj[key]; } } return obj; }