From c281335d4f3f43b07ff97f96896f2a8a1d587e8a Mon Sep 17 00:00:00 2001 From: Matt Van Horn Date: Tue, 12 May 2026 02:50:43 -0700 Subject: [PATCH] chore(deps): replace fast-deep-equal with fast-equals fast-deep-equal hasn't been updated since 2020 and ships only CJS. fast-equals is actively maintained, ships ESM + CJS, and is API- compatible at the call site: deepEqual(a, b) takes the same arguments and returns the same boolean. Swap the dependency in package.json (fast-deep-equal ^3.1.3 -> fast-equals ^5.0.0) and update every src/ import. The local binding stays isDeepEqual via the rename-on-import form, so every call site is unchanged. @googlemaps/markerclusterer made the same swap recently (googlemaps/js-markerclusterer#893). Closes #755 --- package-lock.json | 12 +++++++++++- package.json | 2 +- src/components/circle.tsx | 2 +- src/components/info-window.tsx | 2 +- src/components/polygon.tsx | 2 +- src/components/polyline.tsx | 2 +- src/components/rectangle.tsx | 2 +- src/hooks/use-deep-compare-effect.ts | 2 +- 8 files changed, 18 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index f4ca399b..ce0e0866 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@googlemaps/js-api-loader": "^2.0.2", "@types/google.maps": "^3.64.0", - "fast-deep-equal": "^3.1.3" + "fast-equals": "^5.0.0" }, "devDependencies": { "@eslint/js": "^9.17.0", @@ -4930,8 +4930,18 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, "license": "MIT" }, + "node_modules/fast-equals": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.4.0.tgz", + "integrity": "sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", diff --git a/package.json b/package.json index 4aba7a1c..2d8f3363 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "dependencies": { "@googlemaps/js-api-loader": "^2.0.2", "@types/google.maps": "^3.64.0", - "fast-deep-equal": "^3.1.3" + "fast-equals": "^5.0.0" }, "peerDependencies": { "react": ">=16.8.0 || ^19.0 || ^19.0.0-rc", diff --git a/src/components/circle.tsx b/src/components/circle.tsx index f32ad35e..24ff1086 100644 --- a/src/components/circle.tsx +++ b/src/components/circle.tsx @@ -5,7 +5,7 @@ import React, { useState } from 'react'; -import isDeepEqual from 'fast-deep-equal'; +import {deepEqual as isDeepEqual} from 'fast-equals'; import {useMap} from '../hooks/use-map'; import {useMapsEventListener} from '../hooks/use-maps-event-listener'; diff --git a/src/components/info-window.tsx b/src/components/info-window.tsx index 0f5170ac..37d0e567 100644 --- a/src/components/info-window.tsx +++ b/src/components/info-window.tsx @@ -9,7 +9,7 @@ import React, { useState } from 'react'; import {createPortal} from 'react-dom'; -import isDeepEqual from 'fast-deep-equal'; +import {deepEqual as isDeepEqual} from 'fast-equals'; import {useMap} from '../hooks/use-map'; import {useMapsEventListener} from '../hooks/use-maps-event-listener'; diff --git a/src/components/polygon.tsx b/src/components/polygon.tsx index 6c556db4..ca560b60 100644 --- a/src/components/polygon.tsx +++ b/src/components/polygon.tsx @@ -6,7 +6,7 @@ import React, { useState } from 'react'; -import isDeepEqual from 'fast-deep-equal'; +import {deepEqual as isDeepEqual} from 'fast-equals'; import {useMap} from '../hooks/use-map'; import {useMapsLibrary} from '../hooks/use-maps-library'; diff --git a/src/components/polyline.tsx b/src/components/polyline.tsx index e792ef98..9408d4f0 100644 --- a/src/components/polyline.tsx +++ b/src/components/polyline.tsx @@ -6,7 +6,7 @@ import React, { useState } from 'react'; -import isDeepEqual from 'fast-deep-equal'; +import {deepEqual as isDeepEqual} from 'fast-equals'; import {useMap} from '../hooks/use-map'; import {useMapsLibrary} from '../hooks/use-maps-library'; diff --git a/src/components/rectangle.tsx b/src/components/rectangle.tsx index 543c6784..921d23ea 100644 --- a/src/components/rectangle.tsx +++ b/src/components/rectangle.tsx @@ -5,7 +5,7 @@ import React, { useState } from 'react'; -import isDeepEqual from 'fast-deep-equal'; +import {deepEqual as isDeepEqual} from 'fast-equals'; import {useMap} from '../hooks/use-map'; import {useMapsEventListener} from '../hooks/use-maps-event-listener'; diff --git a/src/hooks/use-deep-compare-effect.ts b/src/hooks/use-deep-compare-effect.ts index 2e9ffe22..70460111 100644 --- a/src/hooks/use-deep-compare-effect.ts +++ b/src/hooks/use-deep-compare-effect.ts @@ -1,6 +1,6 @@ import {DependencyList, EffectCallback} from 'react'; import {useCustomCompareEffect} from './use-custom-compare-efffect'; -import isDeepEqual from 'fast-deep-equal'; +import {deepEqual as isDeepEqual} from 'fast-equals'; export function useDeepCompareEffect( effect: EffectCallback,