From 71af77c222f4266ffe653dc7699c6671c926bff2 Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Mon, 29 Jun 2026 15:21:48 -0500 Subject: [PATCH 1/7] Removed dead vite preview config from admin-toolbar #28968 dropped the public-app preview servers in favor of a plain `vite build --watch` dev loop, so the configurePreviewServer no-op plugin added in #28964 and the `preview` block (host/port/allowedHosts) no longer have a consumer. - removed the tolerateMissingOutDir plugin definition + its plugins[] entry - removed the preview block The five peer public-app configs (portal/announcement-bar/comments-ui/ sodo-search/signup-form) also still carry dead preview blocks; those are folded into a later commit in the same PR. --- apps/admin-toolbar/vite.config.mjs | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/apps/admin-toolbar/vite.config.mjs b/apps/admin-toolbar/vite.config.mjs index 7de16392368..2f8df9aa72d 100644 --- a/apps/admin-toolbar/vite.config.mjs +++ b/apps/admin-toolbar/vite.config.mjs @@ -3,29 +3,12 @@ import {resolve} from 'path'; import {defineConfig} from 'vite'; -// `vite preview` aborts when its outDir is missing — a UX nudge for the -// "did you forget to build?" case. Our dev script runs preview alongside -// `build:watch`, so the dir is missing for the first ~1s after a fresh -// clone or `build:clean`. Defining configurePreviewServer is Vite's -// documented opt-out from that guard; the underlying sirv server already -// 404s for missing files. -const tolerateMissingOutDir = () => ({ - name: 'tolerate-missing-outdir', - configurePreviewServer() {} -}); - export default defineConfig(({mode}) => ({ logLevel: process.env.CI ? 'info' : 'warn', clearScreen: false, - plugins: [tolerateMissingOutDir()], define: { 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || mode) }, - preview: { - host: '0.0.0.0', - allowedHosts: true, // allows domain-name proxies to the preview server - port: 4176 - }, build: { outDir: resolve(import.meta.dirname, 'umd'), emptyOutDir: true, From 483e20771b0f71b6a25d26c1c2c66bd046f1898a Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Mon, 29 Jun 2026 15:30:45 -0500 Subject: [PATCH 2/7] Added secretlint allowlist entries for pre-existing public-app values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no ref Two long-stable identifiers in apps/portal and apps/sodo-search trigger the `credential assignment` rule but are not secrets: - `scriptTag.dataset.key` (portal/src/index — DOM variable reference, not a literal value at all) - `69010382388f9de5869ad6e558` (sodo-search test fixture API key, in tree since #25461 and used purely to assert the App component receives the prop) Neither has tripped the hook historically because the files weren't staged in any commit since the rule was tightened. A follow-up rename commit (.js → .jsx for JSX-containing files) re-stages both, so add allowlist entries now to keep the rule green for future edits too. --- .secretlintrc.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.secretlintrc.json b/.secretlintrc.json index 43d3a0f21ac..de68888039a 100644 --- a/.secretlintrc.json +++ b/.secretlintrc.json @@ -43,7 +43,9 @@ ], "allows": [ "/attempt-to-change-via-edit/", - "/mynewfancypasswordwhichisnotallowed/" + "/mynewfancypasswordwhichisnotallowed/", + "/scriptTag\\.dataset\\.key/", + "/69010382388f9de5869ad6e558/" ] }, { From 5ab602327b9ef19962078648d405884933371b94 Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Mon, 29 Jun 2026 15:31:05 -0500 Subject: [PATCH 3/7] Renamed JSX-containing .js files to .jsx in public apps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no ref Long-standing convention drift: portal, announcement-bar and sodo-search had JSX in plain .js files (~77 across src + test), worked around by two esbuild loader overrides in each vite.config — a global `esbuild.loader: 'jsx'` over /src|test\.jsx?$/ and an `optimizeDeps` plugin that load-files-as-jsx on the .js subset. Renaming the files to match their content lets esbuild infer the loader from the extension and lets both hacks be dropped in a follow-up commit. - 39 portal src + 28 portal test files - 5 announcement-bar src files - 3 sodo-search src + 2 test files - 3 vite.config entry paths updated (announcement-bar/portal/sodo-search hardcoded `src/index.js`) - 5 portal test files updated to drop the explicit '.js' from `../src/app.js` imports (extensionless lets Vite resolve to the new .jsx file) Verified: bundle .js + .css are byte-identical to pre-rename baselines across all 6 public apps; sourcemaps reference the new .jsx filenames in their `sources` arrays (expected, not a runtime change). --- apps/announcement-bar/src/{app.js => app.jsx} | 0 .../components/{announcement-bar.js => announcement-bar.jsx} | 0 apps/announcement-bar/src/components/{main.js => main.jsx} | 0 .../announcement-bar/src/components/{preview.js => preview.jsx} | 0 apps/announcement-bar/src/{index.js => index.jsx} | 0 apps/announcement-bar/vite.config.mjs | 2 +- apps/portal/src/{app.js => app.jsx} | 0 .../components/common/{action-button.js => action-button.jsx} | 0 .../src/components/common/{back-button.js => back-button.jsx} | 0 .../src/components/common/{close-button.js => close-button.jsx} | 0 .../src/components/common/{gift-card.js => gift-card.jsx} | 0 .../common/{gift-details-toggle.js => gift-details-toggle.jsx} | 0 .../common/{inbox-link-button.js => inbox-link-button.jsx} | 0 .../src/components/common/{input-field.js => input-field.jsx} | 0 .../src/components/common/{input-form.js => input-form.jsx} | 0 .../common/{member-gravatar.js => member-gravatar.jsx} | 0 .../{newsletter-management.js => newsletter-management.jsx} | 0 .../components/common/{plans-section.js => plans-section.jsx} | 0 .../common/{popup-notification.js => popup-notification.jsx} | 0 .../src/components/common/{powered-by.js => powered-by.jsx} | 0 .../common/{products-section.js => products-section.jsx} | 0 .../{site-title-back-button.js => site-title-back-button.jsx} | 0 apps/portal/src/components/common/{switch.js => switch.jsx} | 0 apps/portal/src/components/{frame.js => frame.jsx} | 0 .../portal/src/components/{notification.js => notification.jsx} | 0 .../{account-home-page.js => account-home-page.jsx} | 0 .../components/{account-actions.js => account-actions.jsx} | 0 .../components/{account-footer.js => account-footer.jsx} | 0 .../components/{account-main.js => account-main.jsx} | 0 .../components/{account-welcome.js => account-welcome.jsx} | 0 ...cription-banner.js => continue-gift-subscription-banner.jsx} | 0 ...-subscription-button.js => continue-subscription-button.jsx} | 0 .../{email-newsletter-action.js => email-newsletter-action.jsx} | 0 ...email-preferences-action.js => email-preferences-action.jsx} | 0 .../{paid-account-actions.js => paid-account-actions.jsx} | 0 .../components/{subscribe-button.js => subscribe-button.jsx} | 0 ...sistor-podcasts-action.js => transistor-podcasts-action.jsx} | 0 .../components/{user-header.js => user-header.jsx} | 0 .../pages/{account-email-page.js => account-email-page.jsx} | 0 .../pages/{account-plan-page.js => account-plan-page.jsx} | 0 .../pages/{account-profile-page.js => account-profile-page.jsx} | 0 .../pages/{email-receiving-faq.js => email-receiving-faq.jsx} | 0 .../{email-suppressed-page.js => email-suppressed-page.jsx} | 0 .../{email-suppression-faq.js => email-suppression-faq.jsx} | 0 .../components/pages/{feedback-page.js => feedback-page.jsx} | 0 .../portal/src/components/pages/{gift-page.js => gift-page.jsx} | 0 .../pages/{gift-redemption-page.js => gift-redemption-page.jsx} | 0 .../pages/{gift-success-page.js => gift-success-page.jsx} | 0 .../src/components/pages/{loading-page.js => loading-page.jsx} | 0 .../pages/{magic-link-page.js => magic-link-page.jsx} | 0 ...wsletter-selection-page.js => newsletter-selection-page.jsx} | 0 .../src/components/pages/{offer-page.js => offer-page.jsx} | 0 .../pages/{recommendations-page.js => recommendations-page.jsx} | 0 .../components/pages/share/{share-modal.js => share-modal.jsx} | 0 .../src/components/pages/{signin-page.js => signin-page.jsx} | 0 .../src/components/pages/{signup-page.js => signup-page.jsx} | 0 .../components/pages/{support-error.js => support-error.jsx} | 0 .../src/components/pages/{support-page.js => support-page.jsx} | 0 .../pages/{support-success.js => support-success.jsx} | 0 .../pages/{unsubscribe-page.js => unsubscribe-page.jsx} | 0 apps/portal/src/components/{popup-modal.js => popup-modal.jsx} | 0 .../src/components/{trigger-button.js => trigger-button.jsx} | 0 apps/portal/src/{index.js => index.jsx} | 0 apps/portal/test/{app-frames.test.js => app-frames.test.jsx} | 0 apps/portal/test/{app.test.js => app.test.jsx} | 0 .../test/{data-attributes.test.js => data-attributes.test.jsx} | 0 ...criptions-flow.test.js => email-subscriptions-flow.test.jsx} | 2 +- .../test/{feedback-flow.test.js => feedback-flow.test.jsx} | 2 +- .../portal/test/{portal-links.test.js => portal-links.test.jsx} | 0 apps/portal/test/{signin-flow.test.js => signin-flow.test.jsx} | 2 +- apps/portal/test/{signup-flow.test.js => signup-flow.test.jsx} | 2 +- .../common/{action-button.test.js => action-button.test.jsx} | 0 .../common/{input-field.test.js => input-field.test.jsx} | 0 .../{member-gravatar.test.js => member-gravatar.test.jsx} | 0 ...letter-management.test.js => newsletter-management.test.jsx} | 0 .../unit/components/common/{switch.test.js => switch.test.jsx} | 0 .../components/{notification.test.js => notification.test.jsx} | 0 .../{account-actions.test.js => account-actions.test.jsx} | 0 .../{account-home-page.test.js => account-home-page.test.jsx} | 0 .../{account-welcome.test.js => account-welcome.test.jsx} | 0 ...anner.test.js => continue-gift-subscription-banner.test.jsx} | 0 ...ion-button.test.js => continue-subscription-button.test.jsx} | 0 ...wsletter-action.test.js => email-newsletter-action.test.jsx} | 0 ...id-account-actions.test.js => paid-account-actions.test.jsx} | 0 ...casts-action.test.js => transistor-podcasts-action.test.jsx} | 0 .../{account-email-page.test.js => account-email-page.test.jsx} | 0 .../{account-plan-page.test.js => account-plan-page.test.jsx} | 0 ...count-profile-page.test.js => account-profile-page.test.jsx} | 0 ...l-suppressed-page.test.js => email-suppressed-page.test.jsx} | 0 .../pages/{feedback-page.test.js => feedback-page.test.jsx} | 0 ...ft-redemption-page.test.js => gift-redemption-page.test.jsx} | 0 .../pages/{magic-link-page.test.js => magic-link-page.test.jsx} | 0 ...election-page.test.js => newsletter-selection-page.test.jsx} | 0 .../pages/{offer-page.test.js => offer-page.test.jsx} | 0 .../pages/{share-modal.test.js => share-modal.test.jsx} | 0 .../pages/{signin-page.test.js => signin-page.test.jsx} | 0 .../pages/{signup-page.test.js => signup-page.test.jsx} | 0 .../{trigger-button.test.js => trigger-button.test.jsx} | 0 .../portal/test/{upgrade-flow.test.js => upgrade-flow.test.jsx} | 2 +- apps/portal/test/utils/{test-utils.js => test-utils.jsx} | 0 apps/portal/vite.config.mjs | 2 +- apps/sodo-search/src/{app.js => app.jsx} | 0 apps/sodo-search/src/components/{frame.js => frame.jsx} | 0 .../src/components/{popup-modal.js => popup-modal.jsx} | 0 apps/sodo-search/src/{index.js => index.jsx} | 0 apps/sodo-search/test/acceptance/{app.test.js => app.test.jsx} | 0 .../test/unit/{popup-modal.test.js => popup-modal.test.jsx} | 0 apps/sodo-search/vite.config.mjs | 2 +- 108 files changed, 8 insertions(+), 8 deletions(-) rename apps/announcement-bar/src/{app.js => app.jsx} (100%) rename apps/announcement-bar/src/components/{announcement-bar.js => announcement-bar.jsx} (100%) rename apps/announcement-bar/src/components/{main.js => main.jsx} (100%) rename apps/announcement-bar/src/components/{preview.js => preview.jsx} (100%) rename apps/announcement-bar/src/{index.js => index.jsx} (100%) rename apps/portal/src/{app.js => app.jsx} (100%) rename apps/portal/src/components/common/{action-button.js => action-button.jsx} (100%) rename apps/portal/src/components/common/{back-button.js => back-button.jsx} (100%) rename apps/portal/src/components/common/{close-button.js => close-button.jsx} (100%) rename apps/portal/src/components/common/{gift-card.js => gift-card.jsx} (100%) rename apps/portal/src/components/common/{gift-details-toggle.js => gift-details-toggle.jsx} (100%) rename apps/portal/src/components/common/{inbox-link-button.js => inbox-link-button.jsx} (100%) rename apps/portal/src/components/common/{input-field.js => input-field.jsx} (100%) rename apps/portal/src/components/common/{input-form.js => input-form.jsx} (100%) rename apps/portal/src/components/common/{member-gravatar.js => member-gravatar.jsx} (100%) rename apps/portal/src/components/common/{newsletter-management.js => newsletter-management.jsx} (100%) rename apps/portal/src/components/common/{plans-section.js => plans-section.jsx} (100%) rename apps/portal/src/components/common/{popup-notification.js => popup-notification.jsx} (100%) rename apps/portal/src/components/common/{powered-by.js => powered-by.jsx} (100%) rename apps/portal/src/components/common/{products-section.js => products-section.jsx} (100%) rename apps/portal/src/components/common/{site-title-back-button.js => site-title-back-button.jsx} (100%) rename apps/portal/src/components/common/{switch.js => switch.jsx} (100%) rename apps/portal/src/components/{frame.js => frame.jsx} (100%) rename apps/portal/src/components/{notification.js => notification.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/{account-home-page.js => account-home-page.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/components/{account-actions.js => account-actions.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/components/{account-footer.js => account-footer.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/components/{account-main.js => account-main.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/components/{account-welcome.js => account-welcome.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/components/{continue-gift-subscription-banner.js => continue-gift-subscription-banner.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/components/{continue-subscription-button.js => continue-subscription-button.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/components/{email-newsletter-action.js => email-newsletter-action.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/components/{email-preferences-action.js => email-preferences-action.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/components/{paid-account-actions.js => paid-account-actions.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/components/{subscribe-button.js => subscribe-button.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/components/{transistor-podcasts-action.js => transistor-podcasts-action.jsx} (100%) rename apps/portal/src/components/pages/AccountHomePage/components/{user-header.js => user-header.jsx} (100%) rename apps/portal/src/components/pages/{account-email-page.js => account-email-page.jsx} (100%) rename apps/portal/src/components/pages/{account-plan-page.js => account-plan-page.jsx} (100%) rename apps/portal/src/components/pages/{account-profile-page.js => account-profile-page.jsx} (100%) rename apps/portal/src/components/pages/{email-receiving-faq.js => email-receiving-faq.jsx} (100%) rename apps/portal/src/components/pages/{email-suppressed-page.js => email-suppressed-page.jsx} (100%) rename apps/portal/src/components/pages/{email-suppression-faq.js => email-suppression-faq.jsx} (100%) rename apps/portal/src/components/pages/{feedback-page.js => feedback-page.jsx} (100%) rename apps/portal/src/components/pages/{gift-page.js => gift-page.jsx} (100%) rename apps/portal/src/components/pages/{gift-redemption-page.js => gift-redemption-page.jsx} (100%) rename apps/portal/src/components/pages/{gift-success-page.js => gift-success-page.jsx} (100%) rename apps/portal/src/components/pages/{loading-page.js => loading-page.jsx} (100%) rename apps/portal/src/components/pages/{magic-link-page.js => magic-link-page.jsx} (100%) rename apps/portal/src/components/pages/{newsletter-selection-page.js => newsletter-selection-page.jsx} (100%) rename apps/portal/src/components/pages/{offer-page.js => offer-page.jsx} (100%) rename apps/portal/src/components/pages/{recommendations-page.js => recommendations-page.jsx} (100%) rename apps/portal/src/components/pages/share/{share-modal.js => share-modal.jsx} (100%) rename apps/portal/src/components/pages/{signin-page.js => signin-page.jsx} (100%) rename apps/portal/src/components/pages/{signup-page.js => signup-page.jsx} (100%) rename apps/portal/src/components/pages/{support-error.js => support-error.jsx} (100%) rename apps/portal/src/components/pages/{support-page.js => support-page.jsx} (100%) rename apps/portal/src/components/pages/{support-success.js => support-success.jsx} (100%) rename apps/portal/src/components/pages/{unsubscribe-page.js => unsubscribe-page.jsx} (100%) rename apps/portal/src/components/{popup-modal.js => popup-modal.jsx} (100%) rename apps/portal/src/components/{trigger-button.js => trigger-button.jsx} (100%) rename apps/portal/src/{index.js => index.jsx} (100%) rename apps/portal/test/{app-frames.test.js => app-frames.test.jsx} (100%) rename apps/portal/test/{app.test.js => app.test.jsx} (100%) rename apps/portal/test/{data-attributes.test.js => data-attributes.test.jsx} (100%) rename apps/portal/test/{email-subscriptions-flow.test.js => email-subscriptions-flow.test.jsx} (99%) rename apps/portal/test/{feedback-flow.test.js => feedback-flow.test.jsx} (99%) rename apps/portal/test/{portal-links.test.js => portal-links.test.jsx} (100%) rename apps/portal/test/{signin-flow.test.js => signin-flow.test.jsx} (99%) rename apps/portal/test/{signup-flow.test.js => signup-flow.test.jsx} (99%) rename apps/portal/test/unit/components/common/{action-button.test.js => action-button.test.jsx} (100%) rename apps/portal/test/unit/components/common/{input-field.test.js => input-field.test.jsx} (100%) rename apps/portal/test/unit/components/common/{member-gravatar.test.js => member-gravatar.test.jsx} (100%) rename apps/portal/test/unit/components/common/{newsletter-management.test.js => newsletter-management.test.jsx} (100%) rename apps/portal/test/unit/components/common/{switch.test.js => switch.test.jsx} (100%) rename apps/portal/test/unit/components/{notification.test.js => notification.test.jsx} (100%) rename apps/portal/test/unit/components/pages/AccountHomePage/{account-actions.test.js => account-actions.test.jsx} (100%) rename apps/portal/test/unit/components/pages/AccountHomePage/{account-home-page.test.js => account-home-page.test.jsx} (100%) rename apps/portal/test/unit/components/pages/AccountHomePage/{account-welcome.test.js => account-welcome.test.jsx} (100%) rename apps/portal/test/unit/components/pages/AccountHomePage/{continue-gift-subscription-banner.test.js => continue-gift-subscription-banner.test.jsx} (100%) rename apps/portal/test/unit/components/pages/AccountHomePage/{continue-subscription-button.test.js => continue-subscription-button.test.jsx} (100%) rename apps/portal/test/unit/components/pages/AccountHomePage/{email-newsletter-action.test.js => email-newsletter-action.test.jsx} (100%) rename apps/portal/test/unit/components/pages/AccountHomePage/{paid-account-actions.test.js => paid-account-actions.test.jsx} (100%) rename apps/portal/test/unit/components/pages/AccountHomePage/{transistor-podcasts-action.test.js => transistor-podcasts-action.test.jsx} (100%) rename apps/portal/test/unit/components/pages/{account-email-page.test.js => account-email-page.test.jsx} (100%) rename apps/portal/test/unit/components/pages/{account-plan-page.test.js => account-plan-page.test.jsx} (100%) rename apps/portal/test/unit/components/pages/{account-profile-page.test.js => account-profile-page.test.jsx} (100%) rename apps/portal/test/unit/components/pages/{email-suppressed-page.test.js => email-suppressed-page.test.jsx} (100%) rename apps/portal/test/unit/components/pages/{feedback-page.test.js => feedback-page.test.jsx} (100%) rename apps/portal/test/unit/components/pages/{gift-redemption-page.test.js => gift-redemption-page.test.jsx} (100%) rename apps/portal/test/unit/components/pages/{magic-link-page.test.js => magic-link-page.test.jsx} (100%) rename apps/portal/test/unit/components/pages/{newsletter-selection-page.test.js => newsletter-selection-page.test.jsx} (100%) rename apps/portal/test/unit/components/pages/{offer-page.test.js => offer-page.test.jsx} (100%) rename apps/portal/test/unit/components/pages/{share-modal.test.js => share-modal.test.jsx} (100%) rename apps/portal/test/unit/components/pages/{signin-page.test.js => signin-page.test.jsx} (100%) rename apps/portal/test/unit/components/pages/{signup-page.test.js => signup-page.test.jsx} (100%) rename apps/portal/test/unit/components/{trigger-button.test.js => trigger-button.test.jsx} (100%) rename apps/portal/test/{upgrade-flow.test.js => upgrade-flow.test.jsx} (99%) rename apps/portal/test/utils/{test-utils.js => test-utils.jsx} (100%) rename apps/sodo-search/src/{app.js => app.jsx} (100%) rename apps/sodo-search/src/components/{frame.js => frame.jsx} (100%) rename apps/sodo-search/src/components/{popup-modal.js => popup-modal.jsx} (100%) rename apps/sodo-search/src/{index.js => index.jsx} (100%) rename apps/sodo-search/test/acceptance/{app.test.js => app.test.jsx} (100%) rename apps/sodo-search/test/unit/{popup-modal.test.js => popup-modal.test.jsx} (100%) diff --git a/apps/announcement-bar/src/app.js b/apps/announcement-bar/src/app.jsx similarity index 100% rename from apps/announcement-bar/src/app.js rename to apps/announcement-bar/src/app.jsx diff --git a/apps/announcement-bar/src/components/announcement-bar.js b/apps/announcement-bar/src/components/announcement-bar.jsx similarity index 100% rename from apps/announcement-bar/src/components/announcement-bar.js rename to apps/announcement-bar/src/components/announcement-bar.jsx diff --git a/apps/announcement-bar/src/components/main.js b/apps/announcement-bar/src/components/main.jsx similarity index 100% rename from apps/announcement-bar/src/components/main.js rename to apps/announcement-bar/src/components/main.jsx diff --git a/apps/announcement-bar/src/components/preview.js b/apps/announcement-bar/src/components/preview.jsx similarity index 100% rename from apps/announcement-bar/src/components/preview.js rename to apps/announcement-bar/src/components/preview.jsx diff --git a/apps/announcement-bar/src/index.js b/apps/announcement-bar/src/index.jsx similarity index 100% rename from apps/announcement-bar/src/index.js rename to apps/announcement-bar/src/index.jsx diff --git a/apps/announcement-bar/vite.config.mjs b/apps/announcement-bar/vite.config.mjs index b23bac5a0c5..f7b36068588 100644 --- a/apps/announcement-bar/vite.config.mjs +++ b/apps/announcement-bar/vite.config.mjs @@ -54,7 +54,7 @@ export default defineConfig((config) => { sourcemap: true, cssCodeSplit: true, lib: { - entry: resolve(__dirname, 'src/index.js'), + entry: resolve(__dirname, 'src/index.jsx'), formats: ['umd'], name: pkg.name, fileName: format => `${outputFileName}.min.js` diff --git a/apps/portal/src/app.js b/apps/portal/src/app.jsx similarity index 100% rename from apps/portal/src/app.js rename to apps/portal/src/app.jsx diff --git a/apps/portal/src/components/common/action-button.js b/apps/portal/src/components/common/action-button.jsx similarity index 100% rename from apps/portal/src/components/common/action-button.js rename to apps/portal/src/components/common/action-button.jsx diff --git a/apps/portal/src/components/common/back-button.js b/apps/portal/src/components/common/back-button.jsx similarity index 100% rename from apps/portal/src/components/common/back-button.js rename to apps/portal/src/components/common/back-button.jsx diff --git a/apps/portal/src/components/common/close-button.js b/apps/portal/src/components/common/close-button.jsx similarity index 100% rename from apps/portal/src/components/common/close-button.js rename to apps/portal/src/components/common/close-button.jsx diff --git a/apps/portal/src/components/common/gift-card.js b/apps/portal/src/components/common/gift-card.jsx similarity index 100% rename from apps/portal/src/components/common/gift-card.js rename to apps/portal/src/components/common/gift-card.jsx diff --git a/apps/portal/src/components/common/gift-details-toggle.js b/apps/portal/src/components/common/gift-details-toggle.jsx similarity index 100% rename from apps/portal/src/components/common/gift-details-toggle.js rename to apps/portal/src/components/common/gift-details-toggle.jsx diff --git a/apps/portal/src/components/common/inbox-link-button.js b/apps/portal/src/components/common/inbox-link-button.jsx similarity index 100% rename from apps/portal/src/components/common/inbox-link-button.js rename to apps/portal/src/components/common/inbox-link-button.jsx diff --git a/apps/portal/src/components/common/input-field.js b/apps/portal/src/components/common/input-field.jsx similarity index 100% rename from apps/portal/src/components/common/input-field.js rename to apps/portal/src/components/common/input-field.jsx diff --git a/apps/portal/src/components/common/input-form.js b/apps/portal/src/components/common/input-form.jsx similarity index 100% rename from apps/portal/src/components/common/input-form.js rename to apps/portal/src/components/common/input-form.jsx diff --git a/apps/portal/src/components/common/member-gravatar.js b/apps/portal/src/components/common/member-gravatar.jsx similarity index 100% rename from apps/portal/src/components/common/member-gravatar.js rename to apps/portal/src/components/common/member-gravatar.jsx diff --git a/apps/portal/src/components/common/newsletter-management.js b/apps/portal/src/components/common/newsletter-management.jsx similarity index 100% rename from apps/portal/src/components/common/newsletter-management.js rename to apps/portal/src/components/common/newsletter-management.jsx diff --git a/apps/portal/src/components/common/plans-section.js b/apps/portal/src/components/common/plans-section.jsx similarity index 100% rename from apps/portal/src/components/common/plans-section.js rename to apps/portal/src/components/common/plans-section.jsx diff --git a/apps/portal/src/components/common/popup-notification.js b/apps/portal/src/components/common/popup-notification.jsx similarity index 100% rename from apps/portal/src/components/common/popup-notification.js rename to apps/portal/src/components/common/popup-notification.jsx diff --git a/apps/portal/src/components/common/powered-by.js b/apps/portal/src/components/common/powered-by.jsx similarity index 100% rename from apps/portal/src/components/common/powered-by.js rename to apps/portal/src/components/common/powered-by.jsx diff --git a/apps/portal/src/components/common/products-section.js b/apps/portal/src/components/common/products-section.jsx similarity index 100% rename from apps/portal/src/components/common/products-section.js rename to apps/portal/src/components/common/products-section.jsx diff --git a/apps/portal/src/components/common/site-title-back-button.js b/apps/portal/src/components/common/site-title-back-button.jsx similarity index 100% rename from apps/portal/src/components/common/site-title-back-button.js rename to apps/portal/src/components/common/site-title-back-button.jsx diff --git a/apps/portal/src/components/common/switch.js b/apps/portal/src/components/common/switch.jsx similarity index 100% rename from apps/portal/src/components/common/switch.js rename to apps/portal/src/components/common/switch.jsx diff --git a/apps/portal/src/components/frame.js b/apps/portal/src/components/frame.jsx similarity index 100% rename from apps/portal/src/components/frame.js rename to apps/portal/src/components/frame.jsx diff --git a/apps/portal/src/components/notification.js b/apps/portal/src/components/notification.jsx similarity index 100% rename from apps/portal/src/components/notification.js rename to apps/portal/src/components/notification.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/account-home-page.js b/apps/portal/src/components/pages/AccountHomePage/account-home-page.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/account-home-page.js rename to apps/portal/src/components/pages/AccountHomePage/account-home-page.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/components/account-actions.js b/apps/portal/src/components/pages/AccountHomePage/components/account-actions.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/components/account-actions.js rename to apps/portal/src/components/pages/AccountHomePage/components/account-actions.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/components/account-footer.js b/apps/portal/src/components/pages/AccountHomePage/components/account-footer.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/components/account-footer.js rename to apps/portal/src/components/pages/AccountHomePage/components/account-footer.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/components/account-main.js b/apps/portal/src/components/pages/AccountHomePage/components/account-main.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/components/account-main.js rename to apps/portal/src/components/pages/AccountHomePage/components/account-main.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/components/account-welcome.js b/apps/portal/src/components/pages/AccountHomePage/components/account-welcome.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/components/account-welcome.js rename to apps/portal/src/components/pages/AccountHomePage/components/account-welcome.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/components/continue-gift-subscription-banner.js b/apps/portal/src/components/pages/AccountHomePage/components/continue-gift-subscription-banner.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/components/continue-gift-subscription-banner.js rename to apps/portal/src/components/pages/AccountHomePage/components/continue-gift-subscription-banner.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/components/continue-subscription-button.js b/apps/portal/src/components/pages/AccountHomePage/components/continue-subscription-button.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/components/continue-subscription-button.js rename to apps/portal/src/components/pages/AccountHomePage/components/continue-subscription-button.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/components/email-newsletter-action.js b/apps/portal/src/components/pages/AccountHomePage/components/email-newsletter-action.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/components/email-newsletter-action.js rename to apps/portal/src/components/pages/AccountHomePage/components/email-newsletter-action.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/components/email-preferences-action.js b/apps/portal/src/components/pages/AccountHomePage/components/email-preferences-action.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/components/email-preferences-action.js rename to apps/portal/src/components/pages/AccountHomePage/components/email-preferences-action.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/components/paid-account-actions.js b/apps/portal/src/components/pages/AccountHomePage/components/paid-account-actions.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/components/paid-account-actions.js rename to apps/portal/src/components/pages/AccountHomePage/components/paid-account-actions.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/components/subscribe-button.js b/apps/portal/src/components/pages/AccountHomePage/components/subscribe-button.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/components/subscribe-button.js rename to apps/portal/src/components/pages/AccountHomePage/components/subscribe-button.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/components/transistor-podcasts-action.js b/apps/portal/src/components/pages/AccountHomePage/components/transistor-podcasts-action.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/components/transistor-podcasts-action.js rename to apps/portal/src/components/pages/AccountHomePage/components/transistor-podcasts-action.jsx diff --git a/apps/portal/src/components/pages/AccountHomePage/components/user-header.js b/apps/portal/src/components/pages/AccountHomePage/components/user-header.jsx similarity index 100% rename from apps/portal/src/components/pages/AccountHomePage/components/user-header.js rename to apps/portal/src/components/pages/AccountHomePage/components/user-header.jsx diff --git a/apps/portal/src/components/pages/account-email-page.js b/apps/portal/src/components/pages/account-email-page.jsx similarity index 100% rename from apps/portal/src/components/pages/account-email-page.js rename to apps/portal/src/components/pages/account-email-page.jsx diff --git a/apps/portal/src/components/pages/account-plan-page.js b/apps/portal/src/components/pages/account-plan-page.jsx similarity index 100% rename from apps/portal/src/components/pages/account-plan-page.js rename to apps/portal/src/components/pages/account-plan-page.jsx diff --git a/apps/portal/src/components/pages/account-profile-page.js b/apps/portal/src/components/pages/account-profile-page.jsx similarity index 100% rename from apps/portal/src/components/pages/account-profile-page.js rename to apps/portal/src/components/pages/account-profile-page.jsx diff --git a/apps/portal/src/components/pages/email-receiving-faq.js b/apps/portal/src/components/pages/email-receiving-faq.jsx similarity index 100% rename from apps/portal/src/components/pages/email-receiving-faq.js rename to apps/portal/src/components/pages/email-receiving-faq.jsx diff --git a/apps/portal/src/components/pages/email-suppressed-page.js b/apps/portal/src/components/pages/email-suppressed-page.jsx similarity index 100% rename from apps/portal/src/components/pages/email-suppressed-page.js rename to apps/portal/src/components/pages/email-suppressed-page.jsx diff --git a/apps/portal/src/components/pages/email-suppression-faq.js b/apps/portal/src/components/pages/email-suppression-faq.jsx similarity index 100% rename from apps/portal/src/components/pages/email-suppression-faq.js rename to apps/portal/src/components/pages/email-suppression-faq.jsx diff --git a/apps/portal/src/components/pages/feedback-page.js b/apps/portal/src/components/pages/feedback-page.jsx similarity index 100% rename from apps/portal/src/components/pages/feedback-page.js rename to apps/portal/src/components/pages/feedback-page.jsx diff --git a/apps/portal/src/components/pages/gift-page.js b/apps/portal/src/components/pages/gift-page.jsx similarity index 100% rename from apps/portal/src/components/pages/gift-page.js rename to apps/portal/src/components/pages/gift-page.jsx diff --git a/apps/portal/src/components/pages/gift-redemption-page.js b/apps/portal/src/components/pages/gift-redemption-page.jsx similarity index 100% rename from apps/portal/src/components/pages/gift-redemption-page.js rename to apps/portal/src/components/pages/gift-redemption-page.jsx diff --git a/apps/portal/src/components/pages/gift-success-page.js b/apps/portal/src/components/pages/gift-success-page.jsx similarity index 100% rename from apps/portal/src/components/pages/gift-success-page.js rename to apps/portal/src/components/pages/gift-success-page.jsx diff --git a/apps/portal/src/components/pages/loading-page.js b/apps/portal/src/components/pages/loading-page.jsx similarity index 100% rename from apps/portal/src/components/pages/loading-page.js rename to apps/portal/src/components/pages/loading-page.jsx diff --git a/apps/portal/src/components/pages/magic-link-page.js b/apps/portal/src/components/pages/magic-link-page.jsx similarity index 100% rename from apps/portal/src/components/pages/magic-link-page.js rename to apps/portal/src/components/pages/magic-link-page.jsx diff --git a/apps/portal/src/components/pages/newsletter-selection-page.js b/apps/portal/src/components/pages/newsletter-selection-page.jsx similarity index 100% rename from apps/portal/src/components/pages/newsletter-selection-page.js rename to apps/portal/src/components/pages/newsletter-selection-page.jsx diff --git a/apps/portal/src/components/pages/offer-page.js b/apps/portal/src/components/pages/offer-page.jsx similarity index 100% rename from apps/portal/src/components/pages/offer-page.js rename to apps/portal/src/components/pages/offer-page.jsx diff --git a/apps/portal/src/components/pages/recommendations-page.js b/apps/portal/src/components/pages/recommendations-page.jsx similarity index 100% rename from apps/portal/src/components/pages/recommendations-page.js rename to apps/portal/src/components/pages/recommendations-page.jsx diff --git a/apps/portal/src/components/pages/share/share-modal.js b/apps/portal/src/components/pages/share/share-modal.jsx similarity index 100% rename from apps/portal/src/components/pages/share/share-modal.js rename to apps/portal/src/components/pages/share/share-modal.jsx diff --git a/apps/portal/src/components/pages/signin-page.js b/apps/portal/src/components/pages/signin-page.jsx similarity index 100% rename from apps/portal/src/components/pages/signin-page.js rename to apps/portal/src/components/pages/signin-page.jsx diff --git a/apps/portal/src/components/pages/signup-page.js b/apps/portal/src/components/pages/signup-page.jsx similarity index 100% rename from apps/portal/src/components/pages/signup-page.js rename to apps/portal/src/components/pages/signup-page.jsx diff --git a/apps/portal/src/components/pages/support-error.js b/apps/portal/src/components/pages/support-error.jsx similarity index 100% rename from apps/portal/src/components/pages/support-error.js rename to apps/portal/src/components/pages/support-error.jsx diff --git a/apps/portal/src/components/pages/support-page.js b/apps/portal/src/components/pages/support-page.jsx similarity index 100% rename from apps/portal/src/components/pages/support-page.js rename to apps/portal/src/components/pages/support-page.jsx diff --git a/apps/portal/src/components/pages/support-success.js b/apps/portal/src/components/pages/support-success.jsx similarity index 100% rename from apps/portal/src/components/pages/support-success.js rename to apps/portal/src/components/pages/support-success.jsx diff --git a/apps/portal/src/components/pages/unsubscribe-page.js b/apps/portal/src/components/pages/unsubscribe-page.jsx similarity index 100% rename from apps/portal/src/components/pages/unsubscribe-page.js rename to apps/portal/src/components/pages/unsubscribe-page.jsx diff --git a/apps/portal/src/components/popup-modal.js b/apps/portal/src/components/popup-modal.jsx similarity index 100% rename from apps/portal/src/components/popup-modal.js rename to apps/portal/src/components/popup-modal.jsx diff --git a/apps/portal/src/components/trigger-button.js b/apps/portal/src/components/trigger-button.jsx similarity index 100% rename from apps/portal/src/components/trigger-button.js rename to apps/portal/src/components/trigger-button.jsx diff --git a/apps/portal/src/index.js b/apps/portal/src/index.jsx similarity index 100% rename from apps/portal/src/index.js rename to apps/portal/src/index.jsx diff --git a/apps/portal/test/app-frames.test.js b/apps/portal/test/app-frames.test.jsx similarity index 100% rename from apps/portal/test/app-frames.test.js rename to apps/portal/test/app-frames.test.jsx diff --git a/apps/portal/test/app.test.js b/apps/portal/test/app.test.jsx similarity index 100% rename from apps/portal/test/app.test.js rename to apps/portal/test/app.test.jsx diff --git a/apps/portal/test/data-attributes.test.js b/apps/portal/test/data-attributes.test.jsx similarity index 100% rename from apps/portal/test/data-attributes.test.js rename to apps/portal/test/data-attributes.test.jsx diff --git a/apps/portal/test/email-subscriptions-flow.test.js b/apps/portal/test/email-subscriptions-flow.test.jsx similarity index 99% rename from apps/portal/test/email-subscriptions-flow.test.js rename to apps/portal/test/email-subscriptions-flow.test.jsx index 1b021f9134a..a4e5e761dcf 100644 --- a/apps/portal/test/email-subscriptions-flow.test.js +++ b/apps/portal/test/email-subscriptions-flow.test.jsx @@ -1,4 +1,4 @@ -import App from '../src/app.js'; +import App from '../src/app'; import {appRender, fireEvent, within, waitFor} from './utils/test-utils'; import {newsletters as Newsletters, site as FixtureSite, member as FixtureMember} from './utils/test-fixtures'; import setupGhostApi from '../src/utils/api.js'; diff --git a/apps/portal/test/feedback-flow.test.js b/apps/portal/test/feedback-flow.test.jsx similarity index 99% rename from apps/portal/test/feedback-flow.test.js rename to apps/portal/test/feedback-flow.test.jsx index 316aeb2904c..685983d04c1 100644 --- a/apps/portal/test/feedback-flow.test.js +++ b/apps/portal/test/feedback-flow.test.jsx @@ -1,4 +1,4 @@ -import App from '../src/app.js'; +import App from '../src/app'; import {appRender, fireEvent, waitFor, within} from './utils/test-utils'; import setupGhostApi from '../src/utils/api.js'; import {getMemberData, getPostsData, getSiteData} from '../src/utils/fixtures-generator.js'; diff --git a/apps/portal/test/portal-links.test.js b/apps/portal/test/portal-links.test.jsx similarity index 100% rename from apps/portal/test/portal-links.test.js rename to apps/portal/test/portal-links.test.jsx diff --git a/apps/portal/test/signin-flow.test.js b/apps/portal/test/signin-flow.test.jsx similarity index 99% rename from apps/portal/test/signin-flow.test.js rename to apps/portal/test/signin-flow.test.jsx index 7d02055c39e..ae1e8611ef6 100644 --- a/apps/portal/test/signin-flow.test.js +++ b/apps/portal/test/signin-flow.test.jsx @@ -1,4 +1,4 @@ -import App from '../src/app.js'; +import App from '../src/app'; import {fireEvent, appRender, within, waitFor} from './utils/test-utils'; import {site as FixtureSite} from './utils/test-fixtures'; import setupGhostApi from '../src/utils/api.js'; diff --git a/apps/portal/test/signup-flow.test.js b/apps/portal/test/signup-flow.test.jsx similarity index 99% rename from apps/portal/test/signup-flow.test.js rename to apps/portal/test/signup-flow.test.jsx index 027bba23dd0..e8e1c859cff 100644 --- a/apps/portal/test/signup-flow.test.js +++ b/apps/portal/test/signup-flow.test.jsx @@ -1,4 +1,4 @@ -import App from '../src/app.js'; +import App from '../src/app'; import {fireEvent, appRender, within, waitFor} from './utils/test-utils'; import {offer as FixtureOffer, site as FixtureSite, member as FixtureMember} from './utils/test-fixtures'; import setupGhostApi from '../src/utils/api.js'; diff --git a/apps/portal/test/unit/components/common/action-button.test.js b/apps/portal/test/unit/components/common/action-button.test.jsx similarity index 100% rename from apps/portal/test/unit/components/common/action-button.test.js rename to apps/portal/test/unit/components/common/action-button.test.jsx diff --git a/apps/portal/test/unit/components/common/input-field.test.js b/apps/portal/test/unit/components/common/input-field.test.jsx similarity index 100% rename from apps/portal/test/unit/components/common/input-field.test.js rename to apps/portal/test/unit/components/common/input-field.test.jsx diff --git a/apps/portal/test/unit/components/common/member-gravatar.test.js b/apps/portal/test/unit/components/common/member-gravatar.test.jsx similarity index 100% rename from apps/portal/test/unit/components/common/member-gravatar.test.js rename to apps/portal/test/unit/components/common/member-gravatar.test.jsx diff --git a/apps/portal/test/unit/components/common/newsletter-management.test.js b/apps/portal/test/unit/components/common/newsletter-management.test.jsx similarity index 100% rename from apps/portal/test/unit/components/common/newsletter-management.test.js rename to apps/portal/test/unit/components/common/newsletter-management.test.jsx diff --git a/apps/portal/test/unit/components/common/switch.test.js b/apps/portal/test/unit/components/common/switch.test.jsx similarity index 100% rename from apps/portal/test/unit/components/common/switch.test.js rename to apps/portal/test/unit/components/common/switch.test.jsx diff --git a/apps/portal/test/unit/components/notification.test.js b/apps/portal/test/unit/components/notification.test.jsx similarity index 100% rename from apps/portal/test/unit/components/notification.test.js rename to apps/portal/test/unit/components/notification.test.jsx diff --git a/apps/portal/test/unit/components/pages/AccountHomePage/account-actions.test.js b/apps/portal/test/unit/components/pages/AccountHomePage/account-actions.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/AccountHomePage/account-actions.test.js rename to apps/portal/test/unit/components/pages/AccountHomePage/account-actions.test.jsx diff --git a/apps/portal/test/unit/components/pages/AccountHomePage/account-home-page.test.js b/apps/portal/test/unit/components/pages/AccountHomePage/account-home-page.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/AccountHomePage/account-home-page.test.js rename to apps/portal/test/unit/components/pages/AccountHomePage/account-home-page.test.jsx diff --git a/apps/portal/test/unit/components/pages/AccountHomePage/account-welcome.test.js b/apps/portal/test/unit/components/pages/AccountHomePage/account-welcome.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/AccountHomePage/account-welcome.test.js rename to apps/portal/test/unit/components/pages/AccountHomePage/account-welcome.test.jsx diff --git a/apps/portal/test/unit/components/pages/AccountHomePage/continue-gift-subscription-banner.test.js b/apps/portal/test/unit/components/pages/AccountHomePage/continue-gift-subscription-banner.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/AccountHomePage/continue-gift-subscription-banner.test.js rename to apps/portal/test/unit/components/pages/AccountHomePage/continue-gift-subscription-banner.test.jsx diff --git a/apps/portal/test/unit/components/pages/AccountHomePage/continue-subscription-button.test.js b/apps/portal/test/unit/components/pages/AccountHomePage/continue-subscription-button.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/AccountHomePage/continue-subscription-button.test.js rename to apps/portal/test/unit/components/pages/AccountHomePage/continue-subscription-button.test.jsx diff --git a/apps/portal/test/unit/components/pages/AccountHomePage/email-newsletter-action.test.js b/apps/portal/test/unit/components/pages/AccountHomePage/email-newsletter-action.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/AccountHomePage/email-newsletter-action.test.js rename to apps/portal/test/unit/components/pages/AccountHomePage/email-newsletter-action.test.jsx diff --git a/apps/portal/test/unit/components/pages/AccountHomePage/paid-account-actions.test.js b/apps/portal/test/unit/components/pages/AccountHomePage/paid-account-actions.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/AccountHomePage/paid-account-actions.test.js rename to apps/portal/test/unit/components/pages/AccountHomePage/paid-account-actions.test.jsx diff --git a/apps/portal/test/unit/components/pages/AccountHomePage/transistor-podcasts-action.test.js b/apps/portal/test/unit/components/pages/AccountHomePage/transistor-podcasts-action.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/AccountHomePage/transistor-podcasts-action.test.js rename to apps/portal/test/unit/components/pages/AccountHomePage/transistor-podcasts-action.test.jsx diff --git a/apps/portal/test/unit/components/pages/account-email-page.test.js b/apps/portal/test/unit/components/pages/account-email-page.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/account-email-page.test.js rename to apps/portal/test/unit/components/pages/account-email-page.test.jsx diff --git a/apps/portal/test/unit/components/pages/account-plan-page.test.js b/apps/portal/test/unit/components/pages/account-plan-page.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/account-plan-page.test.js rename to apps/portal/test/unit/components/pages/account-plan-page.test.jsx diff --git a/apps/portal/test/unit/components/pages/account-profile-page.test.js b/apps/portal/test/unit/components/pages/account-profile-page.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/account-profile-page.test.js rename to apps/portal/test/unit/components/pages/account-profile-page.test.jsx diff --git a/apps/portal/test/unit/components/pages/email-suppressed-page.test.js b/apps/portal/test/unit/components/pages/email-suppressed-page.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/email-suppressed-page.test.js rename to apps/portal/test/unit/components/pages/email-suppressed-page.test.jsx diff --git a/apps/portal/test/unit/components/pages/feedback-page.test.js b/apps/portal/test/unit/components/pages/feedback-page.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/feedback-page.test.js rename to apps/portal/test/unit/components/pages/feedback-page.test.jsx diff --git a/apps/portal/test/unit/components/pages/gift-redemption-page.test.js b/apps/portal/test/unit/components/pages/gift-redemption-page.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/gift-redemption-page.test.js rename to apps/portal/test/unit/components/pages/gift-redemption-page.test.jsx diff --git a/apps/portal/test/unit/components/pages/magic-link-page.test.js b/apps/portal/test/unit/components/pages/magic-link-page.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/magic-link-page.test.js rename to apps/portal/test/unit/components/pages/magic-link-page.test.jsx diff --git a/apps/portal/test/unit/components/pages/newsletter-selection-page.test.js b/apps/portal/test/unit/components/pages/newsletter-selection-page.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/newsletter-selection-page.test.js rename to apps/portal/test/unit/components/pages/newsletter-selection-page.test.jsx diff --git a/apps/portal/test/unit/components/pages/offer-page.test.js b/apps/portal/test/unit/components/pages/offer-page.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/offer-page.test.js rename to apps/portal/test/unit/components/pages/offer-page.test.jsx diff --git a/apps/portal/test/unit/components/pages/share-modal.test.js b/apps/portal/test/unit/components/pages/share-modal.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/share-modal.test.js rename to apps/portal/test/unit/components/pages/share-modal.test.jsx diff --git a/apps/portal/test/unit/components/pages/signin-page.test.js b/apps/portal/test/unit/components/pages/signin-page.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/signin-page.test.js rename to apps/portal/test/unit/components/pages/signin-page.test.jsx diff --git a/apps/portal/test/unit/components/pages/signup-page.test.js b/apps/portal/test/unit/components/pages/signup-page.test.jsx similarity index 100% rename from apps/portal/test/unit/components/pages/signup-page.test.js rename to apps/portal/test/unit/components/pages/signup-page.test.jsx diff --git a/apps/portal/test/unit/components/trigger-button.test.js b/apps/portal/test/unit/components/trigger-button.test.jsx similarity index 100% rename from apps/portal/test/unit/components/trigger-button.test.js rename to apps/portal/test/unit/components/trigger-button.test.jsx diff --git a/apps/portal/test/upgrade-flow.test.js b/apps/portal/test/upgrade-flow.test.jsx similarity index 99% rename from apps/portal/test/upgrade-flow.test.js rename to apps/portal/test/upgrade-flow.test.jsx index 8bd66540bf3..bddd09d542c 100644 --- a/apps/portal/test/upgrade-flow.test.js +++ b/apps/portal/test/upgrade-flow.test.jsx @@ -1,4 +1,4 @@ -import App from '../src/app.js'; +import App from '../src/app'; import {fireEvent, appRender, within, waitFor} from './utils/test-utils'; import {offer as FixtureOffer, site as FixtureSite, member as FixtureMember} from './utils/test-fixtures'; import setupGhostApi from '../src/utils/api.js'; diff --git a/apps/portal/test/utils/test-utils.js b/apps/portal/test/utils/test-utils.jsx similarity index 100% rename from apps/portal/test/utils/test-utils.js rename to apps/portal/test/utils/test-utils.jsx diff --git a/apps/portal/vite.config.mjs b/apps/portal/vite.config.mjs index 619144cfac9..c9a38817a01 100644 --- a/apps/portal/vite.config.mjs +++ b/apps/portal/vite.config.mjs @@ -64,7 +64,7 @@ export default defineConfig((config) => { sourcemap: true, cssCodeSplit: false, lib: { - entry: resolve(__dirname, 'src/index.js'), + entry: resolve(__dirname, 'src/index.jsx'), formats: ['umd'], name: pkg.name, fileName: format => `${outputFileName}.min.js` diff --git a/apps/sodo-search/src/app.js b/apps/sodo-search/src/app.jsx similarity index 100% rename from apps/sodo-search/src/app.js rename to apps/sodo-search/src/app.jsx diff --git a/apps/sodo-search/src/components/frame.js b/apps/sodo-search/src/components/frame.jsx similarity index 100% rename from apps/sodo-search/src/components/frame.js rename to apps/sodo-search/src/components/frame.jsx diff --git a/apps/sodo-search/src/components/popup-modal.js b/apps/sodo-search/src/components/popup-modal.jsx similarity index 100% rename from apps/sodo-search/src/components/popup-modal.js rename to apps/sodo-search/src/components/popup-modal.jsx diff --git a/apps/sodo-search/src/index.js b/apps/sodo-search/src/index.jsx similarity index 100% rename from apps/sodo-search/src/index.js rename to apps/sodo-search/src/index.jsx diff --git a/apps/sodo-search/test/acceptance/app.test.js b/apps/sodo-search/test/acceptance/app.test.jsx similarity index 100% rename from apps/sodo-search/test/acceptance/app.test.js rename to apps/sodo-search/test/acceptance/app.test.jsx diff --git a/apps/sodo-search/test/unit/popup-modal.test.js b/apps/sodo-search/test/unit/popup-modal.test.jsx similarity index 100% rename from apps/sodo-search/test/unit/popup-modal.test.js rename to apps/sodo-search/test/unit/popup-modal.test.jsx diff --git a/apps/sodo-search/vite.config.mjs b/apps/sodo-search/vite.config.mjs index fd1773da843..fc0b21af1e9 100644 --- a/apps/sodo-search/vite.config.mjs +++ b/apps/sodo-search/vite.config.mjs @@ -56,7 +56,7 @@ export default defineConfig((config) => { sourcemap: true, cssCodeSplit: false, lib: { - entry: resolve(__dirname, 'src/index.js'), + entry: resolve(__dirname, 'src/index.jsx'), formats: ['umd'], name: pkg.name, fileName: format => `${outputFileName}.min.js` From 1e26a9d1aa5041e7c3288c6987498d905fbcb980 Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Mon, 29 Jun 2026 15:40:19 -0500 Subject: [PATCH 4/7] Removed esbuild jsx-loader hacks from public-app configs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no ref With JSX-containing files now correctly named .jsx (previous commit), the explicit loader overrides in portal, announcement-bar and sodo-search vite.configs are redundant — esbuild infers the right loader from the extension. Removed: - the `esbuild: {loader: 'tsx'|'jsx', include: /...\.jsx?$/}` block - the `optimizeDeps.esbuildOptions.plugins[load-js-files-as-jsx]` inline plugin that re-loaded .js files as jsx during dep prebundling - the now-unused `fs/promises` import each of those needed ### Bundle drift (benign) Bundle .js shrinks ~300 bytes in portal (0.012%) and stays the same size in sodo-search (different hash). The drift comes from esbuild's default per-extension loader emitting subtly different output than the TSX-loader-on-everything override that used to apply — semantically identical, no behavior change. Verified by running each app's full test suite: - portal: 582 passed, 1 skipped - sodo-search: 11 passed - announcement-bar: 1 passed admin-toolbar, comments-ui and signup-form bundle output is unchanged (byte-identical to baseline). --- apps/announcement-bar/vite.config.mjs | 21 --------------------- apps/portal/vite.config.mjs | 21 --------------------- apps/sodo-search/vite.config.mjs | 21 --------------------- 3 files changed, 63 deletions(-) diff --git a/apps/announcement-bar/vite.config.mjs b/apps/announcement-bar/vite.config.mjs index f7b36068588..e431bf757ed 100644 --- a/apps/announcement-bar/vite.config.mjs +++ b/apps/announcement-bar/vite.config.mjs @@ -1,6 +1,5 @@ /* eslint-env node */ import {resolve} from 'path'; -import fs from 'fs/promises'; import {defineConfig} from 'vitest/config'; import reactPlugin from '@vitejs/plugin-react'; @@ -26,26 +25,6 @@ export default defineConfig((config) => { reactPlugin(), svgrPlugin() ], - esbuild: { - loader: 'jsx', - include: /src\/.*\.jsx?$/, - exclude: [] - }, - optimizeDeps: { - esbuildOptions: { - plugins: [ - { - name: 'load-js-files-as-jsx', - setup(build) { - build.onLoad({filter: /(src|test)\/.*\.js$/}, async args => ({ - loader: 'jsx', - contents: await fs.readFile(args.path, 'utf8') - })); - } - } - ] - } - }, build: { outDir: resolve(__dirname, 'umd'), emptyOutDir: true, diff --git a/apps/portal/vite.config.mjs b/apps/portal/vite.config.mjs index c9a38817a01..deb0242bc53 100644 --- a/apps/portal/vite.config.mjs +++ b/apps/portal/vite.config.mjs @@ -1,6 +1,5 @@ /* eslint-env node */ import {resolve} from 'path'; -import fs from 'fs/promises'; import {defineConfig} from 'vitest/config'; import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js'; @@ -33,26 +32,6 @@ export default defineConfig((config) => { reactPlugin(), svgrPlugin() ], - esbuild: { - loader: 'tsx', - include: [/src\/.*\.[jt]sx?$/, /__mocks__\/.*\.[jt]sx?$/, /test\/.*\.[jt]sx?$/], - exclude: [] - }, - optimizeDeps: { - esbuildOptions: { - plugins: [ - { - name: 'load-js-files-as-jsx', - setup(build) { - build.onLoad({filter: /src\/.*\.js$/}, async args => ({ - loader: 'jsx', - contents: await fs.readFile(args.path, 'utf8') - })); - } - } - ] - } - }, resolve: { dedupe: ['@tryghost/debug'] }, diff --git a/apps/sodo-search/vite.config.mjs b/apps/sodo-search/vite.config.mjs index fc0b21af1e9..7183c66ad1d 100644 --- a/apps/sodo-search/vite.config.mjs +++ b/apps/sodo-search/vite.config.mjs @@ -1,6 +1,5 @@ /* eslint-env node */ import {resolve} from 'path'; -import fs from 'fs/promises'; import {defineConfig} from 'vitest/config'; import reactPlugin from '@vitejs/plugin-react'; @@ -25,26 +24,6 @@ export default defineConfig((config) => { reactPlugin(), svgrPlugin() ], - esbuild: { - loader: 'jsx', - include: /(src|test)\/.*\.jsx?$/, - exclude: [] - }, - optimizeDeps: { - esbuildOptions: { - plugins: [ - { - name: 'load-js-files-as-jsx', - setup(build) { - build.onLoad({filter: /(src|test)\/.*\.js$/}, async args => ({ - loader: 'jsx', - contents: await fs.readFile(args.path, 'utf8') - })); - } - } - ] - } - }, resolve: { dedupe: ['@tryghost/debug'] }, From 3cb7b17047e46008d7b9f8434408c4a36082722b Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Mon, 29 Jun 2026 15:42:46 -0500 Subject: [PATCH 5/7] Removed dead preview/server config from 3 public-app vite configs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no ref Continuation of commit 71af77c2 (admin-toolbar cleanup). With #28968 having dropped the public-app preview-server flow in favor of `vite build --watch` plus Caddy-served UMDs, the per-app `preview: {host, allowedHosts, port, cors}` blocks no longer have a consumer. Removed from: - portal (plus its dead `server: {port: 5368}` block — no vite dev script consumes it) - announcement-bar - sodo-search comments-ui and signup-form intentionally kept their `preview` blocks — each has a `dev:test` script that still invokes `vite preview` and relies on `host: '0.0.0.0'` / `allowedHosts` for the Playwright acceptance flow. --- apps/announcement-bar/vite.config.mjs | 5 ----- apps/portal/vite.config.mjs | 9 --------- apps/sodo-search/vite.config.mjs | 5 ----- 3 files changed, 19 deletions(-) diff --git a/apps/announcement-bar/vite.config.mjs b/apps/announcement-bar/vite.config.mjs index e431bf757ed..ea50f33aab5 100644 --- a/apps/announcement-bar/vite.config.mjs +++ b/apps/announcement-bar/vite.config.mjs @@ -16,11 +16,6 @@ export default defineConfig((config) => { define: { 'process.env.NODE_ENV': JSON.stringify(config.mode) }, - preview: { - host: '0.0.0.0', - allowedHosts: true, // allows domain-name proxies to the preview server - port: 4177 - }, plugins: [ reactPlugin(), svgrPlugin() diff --git a/apps/portal/vite.config.mjs b/apps/portal/vite.config.mjs index deb0242bc53..27a47b851a6 100644 --- a/apps/portal/vite.config.mjs +++ b/apps/portal/vite.config.mjs @@ -18,15 +18,6 @@ export default defineConfig((config) => { 'process.env.NODE_ENV': JSON.stringify(config.mode), REACT_APP_VERSION: JSON.stringify(process.env.npm_package_version) }, - preview: { - host: '0.0.0.0', - allowedHosts: true, // allows domain-name proxies to the preview server - port: 4175, - cors: true - }, - server: { - port: 5368 - }, plugins: [ cssInjectedByJsPlugin(), reactPlugin(), diff --git a/apps/sodo-search/vite.config.mjs b/apps/sodo-search/vite.config.mjs index 7183c66ad1d..019ccdee758 100644 --- a/apps/sodo-search/vite.config.mjs +++ b/apps/sodo-search/vite.config.mjs @@ -15,11 +15,6 @@ export default defineConfig((config) => { define: { 'process.env.NODE_ENV': JSON.stringify(config.mode) }, - preview: { - host: '0.0.0.0', - allowedHosts: true, // allows domain-name proxies to the preview server - port: 4178 - }, plugins: [ reactPlugin(), svgrPlugin() From baefc9194feb27a7c79129c0eb53c9d782ff3bcc Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Mon, 29 Jun 2026 15:59:08 -0500 Subject: [PATCH 6/7] Bumped public-app patch versions for cleanup changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no ref The earlier commits in this PR (vite config cleanup, .js → .jsx rename, esbuild hack removal) trigger the app-version-bump CI check for the apps whose files changed. Patch-only bumps; MAJOR.MINOR in ghost/core/core/shared/config/defaults.json is unchanged. - admin-toolbar: 0.1.9 → 0.1.10 - announcement-bar: 1.1.25 → 1.1.26 - portal: 2.69.13 → 2.69.14 - sodo-search: 1.8.28 → 1.8.29 comments-ui and signup-form had no file changes, no bump needed. --- apps/announcement-bar/package.json | 2 +- apps/portal/package.json | 2 +- apps/sodo-search/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/announcement-bar/package.json b/apps/announcement-bar/package.json index 0c744c5a800..590efea8820 100644 --- a/apps/announcement-bar/package.json +++ b/apps/announcement-bar/package.json @@ -1,7 +1,7 @@ { "name": "@tryghost/announcement-bar", "type": "module", - "version": "1.1.25", + "version": "1.1.26", "license": "MIT", "repository": "https://github.com/TryGhost/Ghost", "author": "Ghost Foundation", diff --git a/apps/portal/package.json b/apps/portal/package.json index e0805ef29cf..a346cb8eaad 100644 --- a/apps/portal/package.json +++ b/apps/portal/package.json @@ -1,7 +1,7 @@ { "name": "@tryghost/portal", "type": "module", - "version": "2.69.13", + "version": "2.69.14", "license": "MIT", "repository": "https://github.com/TryGhost/Ghost", "author": "Ghost Foundation", diff --git a/apps/sodo-search/package.json b/apps/sodo-search/package.json index bff465ea0d4..9216ba0e448 100644 --- a/apps/sodo-search/package.json +++ b/apps/sodo-search/package.json @@ -1,7 +1,7 @@ { "name": "@tryghost/sodo-search", "type": "module", - "version": "1.8.28", + "version": "1.8.29", "license": "MIT", "repository": "https://github.com/TryGhost/Ghost", "author": "Ghost Foundation", From 8986fc0c569b8aac1a7e28374f8e3f5e8405553f Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Mon, 29 Jun 2026 15:59:46 -0500 Subject: [PATCH 7/7] Bumped admin-toolbar to 0.1.10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no ref Missed in the previous bump commit (baefc9194f) — admin-toolbar's vite.config.mjs was touched in commit 71af77c2 (dead preview config removal), so the CI app-version-bump check requires the version bump too. --- apps/admin-toolbar/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/admin-toolbar/package.json b/apps/admin-toolbar/package.json index 985e020245d..b57db21fb78 100644 --- a/apps/admin-toolbar/package.json +++ b/apps/admin-toolbar/package.json @@ -1,7 +1,7 @@ { "name": "@tryghost/admin-toolbar", "type": "module", - "version": "0.1.9", + "version": "0.1.10", "license": "MIT", "repository": "https://github.com/TryGhost/Ghost", "author": "Ghost Foundation",