Releases: observ33r/object-equals
Releases · observ33r/object-equals
v1.1.6
Performance
- Short-circuits invalid
options
with a nullish fast path to reduce runtime overhead when no config is passed
(objectEquals(target, source)
now avoids unnecessary optional chaining checks).
Types
- Refined
objectEqualsCore
andobjectEquals
signatures in.d.mts
:- Replaced
any
withunknown
for safer inputs. - Defaulted all boolean flags to
false
in type annotations for clarity. - Strengthened
cache
toMap<object, object> | WeakMap<object, object>
inObjectEqualsOptions
interface andobjectEqualsCore
function.
- Replaced
- Explicitly exported
ObjectEqualsOptions
interface.
Documentation
- Updated
README.md
usage section to reflect newunknown
parameter types instead ofany
. - Clarified that V8 and JSC paths apply to runtimes.
v1.1.5
Fixed
- Fixed false positives for inline function props in React mode by comparing function bodies using
.toString()
. - Prevented
RangeError
inTypedArray
comparison by validating byte alignment before usingInt32Array
views. - Fallback to tag-based type check when constructors mismatch and may be shadowed.
- Corrected
null
equality shortcut to use strict comparison for semantic clarity.
Improved
- Reduced stack slot usage and instruction count in
Set
comparison by inlining.length
checks. - Renamed internal
isTypedArray
toisBufferView
for clarity.
Refactored
- Removed browser-specific checks from runtime build.
Tests
- Added test case to verify fallback behavior for unaligned
TypedArray
offsets.
Documentation
- Added PayPal donation link via
.github/FUNDING.yml
to enable GitHub's Sponsor button. - Added
Support
section and donation badge toREADME.md
.
v1.1.4
Added
- Added dedicated benchmarks to evaluate deep equality performance for
ArrayBuffer
- Added a test for asymmetric mutual circular references.
Documentation
- Included benchmark results for
ArrayBuffer
- Clarified
web-safe
note and explained build output structure
v1.1.3
Fixed
- Added a
null
guard for recursive equality checks inSet
comparison (cosmetic, non-functional change). - Corrected
globalIndex
setting inShuffled nested Set
benchmarks to prevent early exit matches and ensure realistic evaluation.
Added
- Added
node.isDeepStrictEqual
toShuffled nested Set
group inadvanced
benchmarks. - Added a note to the
React benchmark
to clarify the role of thereact
option and benchmark fairness.
Updated
- Refreshed benchmark results in README for
Shuffled nested Set
with corrected generator config and additional comparison.
v1.1.2
Benchmarks
- Fixed incorrect import of the web-safe (
default
) variant in benchmark suites. - All runtime benchmarks (
basic
,react
, andadvanced
) now use the correct Node-optimized build (.node.esm.js
) to properly trigger runtime-specific optimizations likeBuffer.compare
,Bun.deepEquals
andutil.isDeepStrictEqual
. - Runtime benchmarks now reflect real-world performance more accurately, aligning with
README.md
results.
Documentation
- Fixed incorrect rendering of
> [!NOTE]
blocks on npm by appending proper spacing. - Minor consistency fixes for better clarity in markdown.
v1.1.1
Removed
- Removed
jsr.json
configuration and badge due to current platform limitations. object-equals
remains fully compatible with Deno via the npm registry, including runtime-specific optimizations.
Notes
- JSR currently lacks proper support for dual exports (
node
vsdefault
), ESM-only packages and.d.ts
mappings without TypeScript source. - Package remains platform-agnostic and ready for modern runtimes (Node.js, Bun, Deno) via
npm
.
v1.1.0
Highlights
- Web implementation is now the default export (
object-equals.esm.js
). - Node-specific optimizations (e.g.
Buffer.compare
,util.isDeepStrictEqual
) moved to explicit subpath (object-equals.node.esm.js
). - Added support for JSR.
Build
- Make browser-safe version the default export
- Moved Node-optimized build to explicit
node
subpath inexports
- Added
jsr.json
for publishing viajsr.io
Benchmarks
- Added runtime-specific benchmark groups for
TypedArray
andDataView
Documentation
- Refactor and expand
README.md
with:- New feature descriptions
- Separated benchmark results (web-safe vs runtime-specific) for
TypedArray
andDataView
- Cleaned up badges and removed outdated sections
v1.0.3
Refactor
- Replaced
assert.deepStrictEqual
withutil.isDeepStrictEqual
, improving performance and eliminating the need for a custom wrapper. - Cleaned up redundant wrapper logic across core comparison functions.
Benchmarks
- Refactored benchmark suite structure for better scalability and maintainability.
Tests
- Simplified
DataView
comparison test. - Clarified React element test to verify behavior with inline function props.
Documentation
- Updated
README.md
with the latest benchmark results.
Fixes
- Prevented unnecessary import of
node:util
in Bun runtime to reduce overhead.
v1.0.2
Changed
- Migrated test framework from Jest to Vitest for native ESM support.
- Added compatibility test suite based on
lodash.isEqual
QUnit test cases. - Updated
README.md
with newBuild
and updatedTesting
section.
Fixed
- Resolved asymmetric equality bug in circular reference mode.
- Corrected handling of objects with a shadowed
constructor
property. - Added
sideEffects: false
flag topackage.json
for proper tree-shaking in ESM-aware bundlers.
Internal
- Removed all Jest-related dependencies and configuration.
- Introduced
vitest.config.js
for clean test management.