UNPKG

ts-predicate

Version:

TypeScript predicates and assertions library

51 lines (50 loc) 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ValueGuard = void 0; const TypeGuard_js_1 = require("./TypeGuard.cjs"); /** * ValueGuard * * @class */ class ValueGuard { /** * IsSimilar * * @description check if two value are similar (same key and values) * @public * @static * @param {unknown} a first argument * @param {unknown} b second argument * @return {boolean} a boolean */ static IsSimilar(a, b) { if (a === b) { return true; } if (Number.isNaN(a) && Number.isNaN(b)) { return true; } if (TypeGuard_js_1.TypeGuard.IsRecord(a) && TypeGuard_js_1.TypeGuard.IsRecord(b)) { const KEYS_A = Object.keys(a); const KEYS_B = Object.keys(b); if (!ValueGuard.IsSimilar(KEYS_A, KEYS_B)) { return false; } return KEYS_A.every((key) => { return ValueGuard.IsSimilar(a[key], b[key]); }); } if (Array.isArray(a) && Array.isArray(b) && a.length === b.length) { // Stryker disable next-line EqualityOperator: Accessing out of bound values on both arrays for (let i = 0; i < a.length; ++i) { if (!ValueGuard.IsSimilar(a[i], b[i])) { return false; } } return true; } return false; } } exports.ValueGuard = ValueGuard;