Back to Explore

fastify/deepmerge

GitHub
1 watchersOpen source

Last release:

@fastify/deepmerge is a Node.js utility for deeply merging the enumerable properties of two or more objects, returning a new merged object without mutating the inputs. It provides options to control behavior such as merging symbols, handling multiple objects, customizing how arrays are merged, and excluding or treating specific object types as mergeable.

Project status

  • Actively maintained: The repo shows an upstream push on 2026-08-04, and tagged updates have continued into 2026 (v3.2.0 in 2026-01 and v3.2.1 in 2026-02).
  • Update cadence: Recent updates are relatively steady at about 1 month between v3.2.0 (2026-01-20) and v3.2.1 (2026-02-19), but there has been a gap since then (no new tagged update after 2026-02, despite an upstream push in 2026-08).

AI summary generated

AI-generated from public sources. May be inaccurate. Report

Recent updates

  • v3.2.1

    v3.2.1 updates @fastify/deepmerge’s TypeScript types to better support the onlyDefinedProperties: true mode. The documented fix aims to preserve required properties from the target type when merging from a source that may contain undefined values.

  • v3.2.0

    v3.2.0 adds a new `onlyDefinedProperties` option to control how `undefined` values from the source object are handled during deep merges. The release also includes some maintainer and CI-related chores, including dev dependency bumps and workflow concurrency settings.

    Features
  • v3.1.0

    v3.1.0 adds a new `isMergeableObject` option to control whether values should be treated as mergeable during deepmerge, and it documents exporting the default implementation. The release also includes CI workflow permission tightening at the workflow level and job-level restoration. Code changes go beyond the release notes by altering the default mergeability rules for some built-in types.

    Features
  • v3.0.0

    v3.0.0 is primarily a tooling and typing update. It renames the CI branch reference from master to main, updates CI workflow permissions, drops Node 16/18 from the CI configuration, and adds a new optional typing option cloneProtoObject.

    Features
  • v2.0.2

    v2.0.2 is a small release focused on documentation, TypeScript type test updates, and internal cleanup. The runtime change is primarily replacing some conditional checks with optional chaining, and the dev tooling switches unit coverage to c8 with tape. No explicit runtime breaking changes are stated in the release notes.

  • v2.0.1

    v2.0.1 primarily updates development tooling and CI, including dependency bumps (tsd, tap, workflows) and a switch from standard to neostandard for linting. The core functional change is in the deep merge logic, adding improved handling for the cloneProtoObject option when merging certain prototype objects.

  • v2.0.0

    v2.0.0 primarily contains tooling and CI updates, plus TypeScript type definition changes around deep merge return types. The release notes mention fixes for tuple and readonly array merge typing, along with minor documentation/typo cleanup and CI workflow adjustments. The code diff also shows additional dependency and configuration changes that are not fully covered by the release notes.

  • v1.3.0

    v1.3.0 is described as a NodeNext compatibility update. The code diff shows a primarily TypeScript typing and packaging configuration adjustment, with no runtime implementation changes visible in the provided diff.

  • v1.2.0

    v1.2.0 introduces a new option, cloneProtoObject, intended to let deepmerge clone or preserve objects with non-Object prototypes (for example, Streams) via a user-supplied function. The release also adds CI license checking and updates the test suite to include browser compatibility coverage.

    Features
  • v1.1.0

    v1.1.0 introduces a new option to customize how arrays are merged, implemented via a user-provided factory function. The release notes also mention a performance improvement and a tsd devDependency bump. The code changes add new TypeScript types and new tests for the array merge customization.

    Features