Skip to content

Releases: observ33r/object-equals

v1.1.6

18 Jul 05:35
Compare
Choose a tag to compare

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 and objectEquals signatures in .d.mts:
    • Replaced any with unknown for safer inputs.
    • Defaulted all boolean flags to false in type annotations for clarity.
    • Strengthened cache to Map<object, object> | WeakMap<object, object> in ObjectEqualsOptions interface and objectEqualsCore function.
  • Explicitly exported ObjectEqualsOptions interface.

Documentation

  • Updated README.md usage section to reflect new unknown parameter types instead of any.
  • Clarified that V8 and JSC paths apply to runtimes.

v1.1.5

07 Jul 04:53
Compare
Choose a tag to compare

Fixed

  • Fixed false positives for inline function props in React mode by comparing function bodies using .toString().
  • Prevented RangeError in TypedArray comparison by validating byte alignment before using Int32Array 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 to isBufferView 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 to README.md.

v1.1.4

19 Jun 14:31
Compare
Choose a tag to compare

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

15 Jun 18:33
Compare
Choose a tag to compare

Fixed

  • Added a null guard for recursive equality checks in Set comparison (cosmetic, non-functional change).
  • Corrected globalIndex setting in Shuffled nested Set benchmarks to prevent early exit matches and ensure realistic evaluation.

Added

  • Added node.isDeepStrictEqual to Shuffled nested Set group in advanced benchmarks.
  • Added a note to the React benchmark to clarify the role of the react option and benchmark fairness.

Updated

  • Refreshed benchmark results in README for Shuffled nested Set with corrected generator config and additional comparison.

v1.1.2

13 Jun 12:12
Compare
Choose a tag to compare

Benchmarks

  • Fixed incorrect import of the web-safe (default) variant in benchmark suites.
  • All runtime benchmarks (basic, react, and advanced) now use the correct Node-optimized build (.node.esm.js) to properly trigger runtime-specific optimizations like Buffer.compare, Bun.deepEquals and util.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

13 Jun 08:30
Compare
Choose a tag to compare

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 vs default), 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

13 Jun 05:55
Compare
Choose a tag to compare

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 in exports
  • Added jsr.json for publishing via jsr.io

Benchmarks

  • Added runtime-specific benchmark groups for TypedArray and DataView

Documentation

  • Refactor and expand README.md with:
    • New feature descriptions
    • Separated benchmark results (web-safe vs runtime-specific) for TypedArray and DataView
    • Cleaned up badges and removed outdated sections

v1.0.3

11 Jun 13:00
Compare
Choose a tag to compare

Refactor

  • Replaced assert.deepStrictEqual with util.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

07 Jun 08:12
Compare
Choose a tag to compare

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 new Build and updated Testing section.

Fixed

  • Resolved asymmetric equality bug in circular reference mode.
  • Corrected handling of objects with a shadowed constructor property.
  • Added sideEffects: false flag to package.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.

v1.0.1

03 Jun 03:32
Compare
Choose a tag to compare

v1.0.1 - minor update

  • Added guard against null in constructor comparison
  • Added regression tests for null comparison
  • Improved engine and runtime detection
  • Added browser field to package.json

Thanks for early community feedback and stars!