Releases: observ33r/object-equals
Releases · observ33r/object-equals
v1.1.6
Performance
- Short-circuits invalid
optionswith a nullish fast path to reduce runtime overhead when no config is passed
(objectEquals(target, source)now avoids unnecessary optional chaining checks).
Types
- Refined
objectEqualsCoreandobjectEqualssignatures in.d.mts:- Replaced
anywithunknownfor safer inputs. - Defaulted all boolean flags to
falsein type annotations for clarity. - Strengthened
cachetoMap<object, object> | WeakMap<object, object>inObjectEqualsOptionsinterface andobjectEqualsCorefunction.
- Replaced
- Explicitly exported
ObjectEqualsOptionsinterface.
Documentation
- Updated
README.mdusage section to reflect newunknownparameter 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
RangeErrorinTypedArraycomparison by validating byte alignment before usingInt32Arrayviews. - Fallback to tag-based type check when constructors mismatch and may be shadowed.
- Corrected
nullequality shortcut to use strict comparison for semantic clarity.
Improved
- Reduced stack slot usage and instruction count in
Setcomparison by inlining.lengthchecks. - Renamed internal
isTypedArraytoisBufferViewfor clarity.
Refactored
- Removed browser-specific checks from runtime build.
Tests
- Added test case to verify fallback behavior for unaligned
TypedArrayoffsets.
Documentation
- Added PayPal donation link via
.github/FUNDING.ymlto enable GitHub's Sponsor button. - Added
Supportsection 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-safenote and explained build output structure
v1.1.3
Fixed
- Added a
nullguard for recursive equality checks inSetcomparison (cosmetic, non-functional change). - Corrected
globalIndexsetting inShuffled nested Setbenchmarks to prevent early exit matches and ensure realistic evaluation.
Added
- Added
node.isDeepStrictEqualtoShuffled nested Setgroup inadvancedbenchmarks. - Added a note to the
React benchmarkto clarify the role of thereactoption and benchmark fairness.
Updated
- Refreshed benchmark results in README for
Shuffled nested Setwith 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.deepEqualsandutil.isDeepStrictEqual. - Runtime benchmarks now reflect real-world performance more accurately, aligning with
README.mdresults.
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.jsonconfiguration and badge due to current platform limitations. object-equalsremains fully compatible with Deno via the npm registry, including runtime-specific optimizations.
Notes
- JSR currently lacks proper support for dual exports (
nodevsdefault), ESM-only packages and.d.tsmappings 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
nodesubpath inexports - Added
jsr.jsonfor publishing viajsr.io
Benchmarks
- Added runtime-specific benchmark groups for
TypedArrayandDataView
Documentation
- Refactor and expand
README.mdwith:- New feature descriptions
- Separated benchmark results (web-safe vs runtime-specific) for
TypedArrayandDataView - Cleaned up badges and removed outdated sections
v1.0.3
Refactor
- Replaced
assert.deepStrictEqualwithutil.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
DataViewcomparison test. - Clarified React element test to verify behavior with inline function props.
Documentation
- Updated
README.mdwith the latest benchmark results.
Fixes
- Prevented unnecessary import of
node:utilin 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.isEqualQUnit test cases. - Updated
README.mdwith newBuildand updatedTestingsection.
Fixed
- Resolved asymmetric equality bug in circular reference mode.
- Corrected handling of objects with a shadowed
constructorproperty. - Added
sideEffects: falseflag topackage.jsonfor proper tree-shaking in ESM-aware bundlers.
Internal
- Removed all Jest-related dependencies and configuration.
- Introduced
vitest.config.jsfor clean test management.