@thisisagile/easy
Version:
Straightforward library for building domain-driven microservice architectures
23 lines (21 loc) • 1.04 kB
JavaScript
import {
choose
} from "./chunk-XAIHCZT4.mjs";
import {
isArray,
isObject
} from "./chunk-DEJ7A5PY.mjs";
// src/types/IsEqual.ts
var isEqualArray = (one, another) => choose([one, another]).case(([o, a]) => !isArray(o) || !isArray(a), false).case(([o, a]) => o?.length !== a?.length, false).else(([o, a]) => !o.some((v, i) => !isEqual(v, a[i])));
var isEqualObject = (one, another) => choose([Object.keys(one), Object.keys(another)]).case(([keysO, keysA]) => keysO.length !== keysA.length, false).case(([keysO, keysA]) => keysO.some((k) => !keysA.includes(k)), false).case(([keysO]) => keysO.some((k) => !isEqual(one[k], another[k])), false).else(true);
var isEqual = (one, another) => choose([one, another]).case(([o, a]) => o === a, true).case(
([o, a]) => isArray(o) || isArray(a),
([o, a]) => isEqualArray(o, a)
).case(
([o, a]) => o == null || a == null || !isObject(o) && !isObject(a),
([o, a]) => o !== o && a !== a
).else(([o, a]) => isEqualObject(o, a));
export {
isEqual
};
//# sourceMappingURL=chunk-ONMLG5EJ.mjs.map