fast-equals

  • Version 6.0.0
  • Published
  • 103 kB
  • No dependencies
  • MIT license

Install

npm i fast-equals
yarn add fast-equals
pnpm add fast-equals

Overview

A blazing-fast equality comparison utility for a variety of use-cases

Index

Functions

function circularDeepEqual

circularDeepEqual: <A, B>(a: A, b: B) => boolean;
  • Whether the items passed are deeply-equal in value, including circular references.

function circularShallowEqual

circularShallowEqual: <A, B>(a: A, b: B) => boolean;
  • Whether the items passed are shallowly-equal in value, including circular references.

function createCustomEqual

createCustomEqual: <Meta = undefined>(
options?: CustomEqualCreatorOptions<Meta>
) => <A, B>(a: A, b: B) => boolean;
  • Create a custom equality comparison method.

    This can be done to create very targeted comparisons in extreme hot-path scenarios where the standard methods are not performant enough, but can also be used to provide support for legacy environments that do not support expected features like RegExp.prototype.flags out of the box.

function deepEqual

deepEqual: <A, B>(a: A, b: B) => boolean;
  • Whether the items passed are deeply-equal in value.

function sameValueEqual

sameValueEqual: (value1: any, value2: any) => boolean;
  • Whether the values passed are equal based on a [SameValue](https://262.ecma-international.org/7.0/#sec-samevalue) basis. Simplified, this maps to if the two values are referentially equal to one another (a === b) or both are NaN.

    When available in the environment, this is just a re-export of the global [Object.is](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) method.

function sameValueZeroEqual

sameValueZeroEqual: (a: any, b: any) => boolean;
  • Whether the values passed are equal based on a [SameValue](https://262.ecma-international.org/7.0/#sec-samevaluezero) basis. Simplified, this maps to if the two values are referentially equal to one another (a === b), both are NaN, or both are either positive or negative zero.

function shallowEqual

shallowEqual: <A, B>(a: A, b: B) => boolean;
  • Whether the items passed are shallowly-equal in value.

function strictCircularDeepEqual

strictCircularDeepEqual: <A, B>(a: A, b: B) => boolean;
  • Whether the items passed are deeply-equal in value, including circular references, based on strict comparison.

function strictCircularShallowEqual

strictCircularShallowEqual: <A, B>(a: A, b: B) => boolean;
  • Whether the items passed are shallowly-equal in value, including circular references, based on strict comparison.

function strictDeepEqual

strictDeepEqual: <A, B>(a: A, b: B) => boolean;
  • Whether the items passed are deeply-equal in value based on strict comparison.

function strictEqual

strictEqual: (a: any, b: any) => boolean;
  • Whether the values passed are equal based on a [Strict Equality Comparison](https://262.ecma-international.org/7.0/#sec-strict-equality-comparison) basis. Simplified, this maps to if the two values are referentially equal to one another (a === b).

    This is mainly available as a convenience function, such as being a default when a function to determine equality between two objects is used.

function strictShallowEqual

strictShallowEqual: <A, B>(a: A, b: B) => boolean;
  • Whether the items passed are shallowly-equal in value based on strict comparison

Interfaces

interface Cache

interface Cache<Key extends object, Value> {}
  • Cache used to store references to objects, used for circular reference checks.

method delete

delete: (key: Key) => boolean;

    method get

    get: (key: Key) => Value | undefined;

      method set

      set: (key: Key, value: any) => any;

        interface ComparatorConfig

        interface ComparatorConfig<Meta> {}

          property areArrayBuffersEqual

          areArrayBuffersEqual: EqualityComparator<Meta>;
          • Whether the array buffers passed are equal in value. In strict mode, this includes additional properties added to the array.

          property areArraysEqual

          areArraysEqual: EqualityComparator<Meta>;
          • Whether the arrays passed are equal in value. In strict mode, this includes additional properties added to the array.

          property areDataViewsEqual

          areDataViewsEqual: EqualityComparator<Meta>;
          • Whether the data views passed are equal in value.

          property areDatesEqual

          areDatesEqual: EqualityComparator<Meta>;
          • Whether the dates passed are equal in value.

          property areErrorsEqual

          areErrorsEqual: EqualityComparator<Meta>;
          • Whether the errors passed are equal in value.

          property areFunctionsEqual

          areFunctionsEqual: EqualityComparator<Meta>;
          • Whether the functions passed are equal in value.

          property areMapsEqual

          areMapsEqual: EqualityComparator<Meta>;
          • Whether the maps passed are equal in value. In strict mode, this includes additional properties added to the map.

          property areNumbersEqual

          areNumbersEqual: EqualityComparator<Meta>;
          • Whether the numbers passed are equal in value.

          property areObjectsEqual

          areObjectsEqual: EqualityComparator<Meta>;
          • Whether the objects passed are equal in value. In strict mode, this includes non-enumerable properties added to the map, as well as symbol properties.

          property arePrimitiveWrappersEqual

          arePrimitiveWrappersEqual: EqualityComparator<Meta>;
          • Whether the primitive wrappers passed are equal in value.

          property areRegExpsEqual

          areRegExpsEqual: EqualityComparator<Meta>;
          • Whether the regexps passed are equal in value.

          property areSetsEqual

          areSetsEqual: EqualityComparator<Meta>;
          • Whether the sets passed are equal in value. In strict mode, this includes additional properties added to the set.

          property areTypedArraysEqual

          areTypedArraysEqual: EqualityComparator<Meta>;
          • Whether the typed arrays passed are equal in value. In strict mode, this includes additional properties added to the typed array.

          property areUrlsEqual

          areUrlsEqual: EqualityComparator<Meta>;
          • Whether the URLs passed are equal in value.

          property getUnsupportedCustomComparator

          getUnsupportedCustomComparator:
          | ((
          a: any,
          b: any,
          state: State<Meta>,
          tag: string
          ) => EqualityComparator<Meta> | undefined)
          | undefined;
          • Get a custom comparator based on the objects passed.

          interface CustomEqualCreatorOptions

          interface CustomEqualCreatorOptions<Meta> {}

            property circular

            circular?: boolean;
            • Whether circular references should be supported. It causes the comparison to be slower, but for objects that have circular references it is required to avoid stack overflows.

            property createCustomConfig

            createCustomConfig?: (
            config: ComparatorConfig<Meta>
            ) => Partial<ComparatorConfig<Meta>>;
            • Create a custom configuration of type-specific equality comparators. This receives the default configuration, which allows either replacement or a superset of the default methods.

            property createInternalComparator

            createInternalComparator?: (
            compare: EqualityComparator<Meta>
            ) => InternalEqualityComparator<Meta>;
            • Create a custom internal comparator, which is used as an override to the default entry point for nested value equality comparisons. This is often used for doing custom logic for specific types (such as handling a specific class instance differently than other objects) or to incorporate meta in the comparison. See the recipes for examples.

            property createState

            createState?: () => {
            cache?: Cache<any, any> | undefined;
            meta?: Meta;
            };
            • Create a custom state object passed between the methods. This allows for custom cache and/or meta values to be used.

            property strict

            strict?: boolean;
            • Whether the equality comparison is strict, meaning it matches all properties (including symbols and non-enumerable properties) with equal shape of descriptors.

            interface State

            interface State<Meta> {}

              property cache

              readonly cache: Cache<any, any> | undefined;
              • Cache used to identify circular references

              property equals

              readonly equals: InternalEqualityComparator<Meta>;
              • Method used to determine equality of nested value.

              property meta

              meta: Meta;
              • Additional value that can be used for comparisons.

              property strict

              readonly strict: boolean;
              • Whether the equality comparison is strict, meaning it matches all properties (including symbols and non-enumerable properties) with equal shape of descriptors.

              Type Aliases

              type EqualityComparator

              type EqualityComparator<Meta> = (a: any, b: any, state: State<Meta>) => boolean;

                type InternalEqualityComparator

                type InternalEqualityComparator<Meta> = (
                a: any,
                b: any,
                indexOrKeyA: any,
                indexOrKeyB: any,
                parentA: any,
                parentB: any,
                state: State<Meta>
                ) => boolean;

                  type PrimitiveWrapper

                  type PrimitiveWrapper = Boolean | Number | String;

                    type TypedArray

                    type TypedArray =
                    | BigInt64Array
                    | BigUint64Array
                    | Float32Array
                    | Float64Array
                    | Int8Array
                    | Int16Array
                    | Int32Array
                    | Uint16Array
                    | Uint32Array
                    | Uint8Array
                    | Uint8ClampedArray;
                    • Type which encompasses possible instances of TypedArray classes.

                    Package Files (1)

                    Dependencies (0)

                    No dependencies.

                    Dev Dependencies (34)

                    Peer Dependencies (0)

                    No peer dependencies.

                    Badge

                    To add a badge like this onejsDocs.io badgeto your package's README, use the codes available below.

                    You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/fast-equals.

                    • Markdown
                      [![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/fast-equals)
                    • HTML
                      <a href="https://www.jsdocs.io/package/fast-equals"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>