Skip to content

Repository files navigation

deep-equal-check

Fast deep equality checker for modern JavaScript and TypeScript – robust, configurable, and safe for all data types.

Features

  • 3-10x faster than popular alternatives (16.7M ops/sec)
  • Zero dependencies - completely self-contained
  • TypeScript first - comprehensive type definitions
  • Highly configurable - customizable comparison options
  • Circular reference safe - prevents infinite recursion
  • Universal - works in Node.js, browsers, JavaScript & TypeScript projects
  • Hybrid optimization - combines fast paths with robust structure

Installation

npm install deep-equal-check

Quick Start

TypeScript/ES Modules

importdeepEqualCheckfrom'deep-equal-check';// Basic usagedeepEqualCheck({a: 1},{a: 1});// truedeepEqualCheck([1,2,3],[1,2,3]);// true// Complex objectsconstobj1={date: newDate('2023-01-01'),regex: /test/gi,set: newSet([1,2,3]),map: newMap([['key','value']])};constobj2={date: newDate('2023-01-01'),regex: /test/gi,set: newSet([1,2,3]),map: newMap([['key','value']])};deepEqualCheck(obj1,obj2);// true

JavaScript/CommonJS

constdeepEqualCheck=require('deep-equal-check');// Basic usagedeepEqualCheck({a: 1},{a: 1});// truedeepEqualCheck([1,2,3],[1,2,3]);// true// With optionsdeepEqualCheck(NaN,NaN,{nanEqual: true});// truedeepEqualCheck(+0,-0,{strictZero: true});// false

Performance

Run the built-in benchmark:

npm run benchmark

Architecture

The library uses a hybrid optimization strategy that combines:

  • Fast inline paths for primitives, arrays, dates, and regex
  • Modular structure for complex cases (sets, maps, objects)
  • Order-independent comparisons for collections
  • Circular reference detection with proper WeakMap handling

Supported Types

  • Primitives (numbers, strings, booleans, null, undefined)
  • Arrays (including nested and mixed types)
  • Objects (plain objects, custom constructors)
  • ES6+ Types (Set, Map, TypedArray, ArrayBuffer)
  • Built-in Objects (Date, RegExp, Error)
  • Boxed Primitives (String, Number, Boolean)
  • Circular References (with infinite recursion protection)

Performance Results

  • 28.4M operations/second - Primitives (same)
  • 19.2M operations/second - Primitives (different)
  • 9.0M operations/second - Mixed operations (complex cases)
  • 6.4x faster than lodash/isEqual (complex cases)
  • 4.8x faster than deep-eql (complex cases)
  • Competitive with fast-deep-equal (with circular reference support)
  • Strong performance on complex data types (Sets, Maps, nested objects)

Run Comparative Benchmarks

npx ts-node --project benchmark/tsconfig.json benchmark/compare-libraries.ts

License

MIT

About

Fast deep equality checker for modern JavaScript and TypeScript – robust, configurable, and safe for all data types.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages