UNPKG

691 BPlain TextView Raw
1import { deepEqual } from "../internal"
2
3export interface IEqualsComparer<T> {
4 (a: T, b: T): boolean
5}
6
7function identityComparer(a: any, b: any): boolean {
8 return a === b
9}
10
11function structuralComparer(a: any, b: any): boolean {
12 return deepEqual(a, b)
13}
14
15function shallowComparer(a: any, b: any): boolean {
16 return deepEqual(a, b, 1)
17}
18
19function defaultComparer(a: any, b: any): boolean {
20 if (Object.is) return Object.is(a, b)
21
22 return a === b
23 ? a !== 0 || 1 / a === 1 / b
24 : a !== a && b !== b
25}
26
27export const comparer = {
28 identity: identityComparer,
29 structural: structuralComparer,
30 default: defaultComparer,
31 shallow: shallowComparer
32}