From 4ea6b26e979d8c485061b590aab61e69143e3ce5 Mon Sep 17 00:00:00 2001 From: Luigi Teschio Date: Wed, 3 Jun 2026 15:39:08 +0200 Subject: [PATCH] Fix is-shallow-equal default script export --- packages/is-shallow-equal/package.json | 1 + packages/is-shallow-equal/src/index.ts | 18 ++++++++++++++---- packages/is-shallow-equal/test/index.ts | 13 +++++++++++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/packages/is-shallow-equal/package.json b/packages/is-shallow-equal/package.json index a7dda60dc89be2..742c6aff2747f1 100644 --- a/packages/is-shallow-equal/package.json +++ b/packages/is-shallow-equal/package.json @@ -43,6 +43,7 @@ }, "react-native": "src/index", "wpScript": true, + "wpScriptDefaultExport": true, "types": "build-types", "sideEffects": false, "devDependencies": { diff --git a/packages/is-shallow-equal/src/index.ts b/packages/is-shallow-equal/src/index.ts index 5136638ef38c72..fa0b3be5429972 100644 --- a/packages/is-shallow-equal/src/index.ts +++ b/packages/is-shallow-equal/src/index.ts @@ -15,7 +15,10 @@ export type ComparableObject = Record< string, any >; * * @return Whether the two values are shallow equal. */ -export default function isShallowEqual( a: unknown, b: unknown ): boolean { +const isShallowEqualBase = function isShallowEqual( + a: unknown, + b: unknown +): boolean { if ( a && b ) { if ( a.constructor === Object && b.constructor === Object ) { return isShallowEqualObjects( a, b ); @@ -25,8 +28,15 @@ export default function isShallowEqual( a: unknown, b: unknown ): boolean { } return a === b; -} +}; -// `isShallowEqual` is exported also as a named export because esbuild cannot -// expose the default export from the `window.wp.isShallowEqual` global. +// `wpScriptDefaultExport` exposes `window.wp.isShallowEqual` as the callable +// default export. Attach the named helpers to preserve the existing global API. +const isShallowEqual = Object.assign( isShallowEqualBase, { + isShallowEqual: isShallowEqualBase, + isShallowEqualObjects, + isShallowEqualArrays, +} ); + +export default isShallowEqual; export { isShallowEqual, isShallowEqualObjects, isShallowEqualArrays }; diff --git a/packages/is-shallow-equal/test/index.ts b/packages/is-shallow-equal/test/index.ts index 377a85d52f42dd..1fad4e05b6f916 100644 --- a/packages/is-shallow-equal/test/index.ts +++ b/packages/is-shallow-equal/test/index.ts @@ -2,6 +2,7 @@ * Internal dependencies */ import { + default as defaultIsShallowEqual, isShallowEqual, isShallowEqualArrays, isShallowEqualObjects, @@ -154,6 +155,18 @@ describe( 'isShallowEqual', () => { expect( isShallowEqual( a, b ) ).toBe( true ); } ); + + it( 'exposes named helpers on the default export', () => { + expect( defaultIsShallowEqual.isShallowEqual ).toBe( + defaultIsShallowEqual + ); + expect( defaultIsShallowEqual.isShallowEqualArrays ).toBe( + isShallowEqualArrays + ); + expect( defaultIsShallowEqual.isShallowEqualObjects ).toBe( + isShallowEqualObjects + ); + } ); } ); describe( 'isShallowEqualArrays', () => {