From 7e852f7a6fc236f1cf19b7dcb2b3c7e362bdc896 Mon Sep 17 00:00:00 2001 From: Kunal Kumar Date: Fri, 4 Sep 2026 20:25:30 +0530 Subject: [PATCH] Allow .cjs and .mjs files to be shadowed (#8413) (cherry picked from commit 799e67d81fb873cb9353136c72e371967f54a70c) --- packages/registry/__tests__/addon-registry.test.js | 3 +++ .../node_modules/@plone/volto/src/constants/Languages.cjs | 1 + .../src/customizations/constants/Languages.cjs | 1 + packages/registry/news/8366.bugfix | 1 + packages/registry/src/addon-registry/addon-registry.ts | 2 +- 5 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 packages/registry/__tests__/fixtures/test-volto-project/node_modules/@plone/volto/src/constants/Languages.cjs create mode 100644 packages/registry/__tests__/fixtures/test-volto-project/src/customizations/constants/Languages.cjs create mode 100644 packages/registry/news/8366.bugfix diff --git a/packages/registry/__tests__/addon-registry.test.js b/packages/registry/__tests__/addon-registry.test.js index b4b192e74c7..a85e20945db 100644 --- a/packages/registry/__tests__/addon-registry.test.js +++ b/packages/registry/__tests__/addon-registry.test.js @@ -227,6 +227,9 @@ describe('AddonRegistry - Project', () => { '@plone/volto/LanguageSwitcher': `${base}/src/customizations/LanguageSwitcher.js`, '@plone/volto/TSComponent': `${base}/src/customizations/TSComponent.jsx`, '@plone/volto/client': `${base}/src/customizations/client.js`, + // .cjs is shadowable, and the alias key keeps its extension because + // such modules are imported with it. See #8366. + '@plone/volto/constants/Languages.cjs': `${base}/src/customizations/constants/Languages.cjs`, '@plone/volto/routes': `${base}/src/customizations/routes.tsx`, 'test-addon/testaddon': `${base}/src/custom-addons/test-addon/testaddon.js`, '@plone/volto/server': `${base}/src/customizations/server.jsx`, diff --git a/packages/registry/__tests__/fixtures/test-volto-project/node_modules/@plone/volto/src/constants/Languages.cjs b/packages/registry/__tests__/fixtures/test-volto-project/node_modules/@plone/volto/src/constants/Languages.cjs new file mode 100644 index 00000000000..b4234b4bfdc --- /dev/null +++ b/packages/registry/__tests__/fixtures/test-volto-project/node_modules/@plone/volto/src/constants/Languages.cjs @@ -0,0 +1 @@ +module.exports = { en: 'English' }; diff --git a/packages/registry/__tests__/fixtures/test-volto-project/src/customizations/constants/Languages.cjs b/packages/registry/__tests__/fixtures/test-volto-project/src/customizations/constants/Languages.cjs new file mode 100644 index 00000000000..fa2ddf64805 --- /dev/null +++ b/packages/registry/__tests__/fixtures/test-volto-project/src/customizations/constants/Languages.cjs @@ -0,0 +1 @@ +module.exports = { en: 'English', sv: 'Svenska' }; diff --git a/packages/registry/news/8366.bugfix b/packages/registry/news/8366.bugfix new file mode 100644 index 00000000000..b8031d07265 --- /dev/null +++ b/packages/registry/news/8366.bugfix @@ -0,0 +1 @@ +Include `.cjs` and `.mjs` in the customizations glob so core modules with those extensions can be shadowed. @kunalKumar-13 diff --git a/packages/registry/src/addon-registry/addon-registry.ts b/packages/registry/src/addon-registry/addon-registry.ts index 36c1d80e0a1..30a3c80754b 100644 --- a/packages/registry/src/addon-registry/addon-registry.ts +++ b/packages/registry/src/addon-registry/addon-registry.ts @@ -684,7 +684,7 @@ class AddonRegistry { reg.forEach(({ customPath, name, sourcePath }) => { glob( - `${customPath}/**/*.*(svg|png|jpg|jpeg|gif|ico|less|js|jsx|ts|tsx)`, + `${customPath}/**/*.*(svg|png|jpg|jpeg|gif|ico|less|js|jsx|ts|tsx|cjs|mjs)`, ).map((filename) => { function changeFileExtension(filePath: string) { // Extract the current file extension