From 91f129be5e2f2f5d19a2b8b556e61e2a96121988 Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Thu, 2 Jun 2022 15:32:13 +0900 Subject: [PATCH 1/2] Remove global config --- packages/hydrogen/src/entry-server.tsx | 2 -- packages/hydrogen/src/framework/config.ts | 15 --------------- packages/hydrogen/src/hooks/useShopQuery/hooks.ts | 5 ++--- 3 files changed, 2 insertions(+), 20 deletions(-) delete mode 100644 packages/hydrogen/src/framework/config.ts diff --git a/packages/hydrogen/src/entry-server.tsx b/packages/hydrogen/src/entry-server.tsx index 70fe550c9a..5720492eb4 100644 --- a/packages/hydrogen/src/entry-server.tsx +++ b/packages/hydrogen/src/entry-server.tsx @@ -31,7 +31,6 @@ import { import {ServerPropsProvider} from './foundation/ServerPropsProvider'; import {isBotUA} from './utilities/bot-ua'; import {setContext, setCache, RuntimeContext} from './framework/runtime'; -import {setConfig} from './framework/config'; import { ssrRenderToPipeableStream, ssrRenderToReadableStream, @@ -127,7 +126,6 @@ export const renderHydrogen = (App: any) => { */ setCache(cache); setContext(context); - setConfig({dev}); if ( url.pathname === EVENT_PATHNAME || diff --git a/packages/hydrogen/src/framework/config.ts b/packages/hydrogen/src/framework/config.ts deleted file mode 100644 index 4b5c4b79bf..0000000000 --- a/packages/hydrogen/src/framework/config.ts +++ /dev/null @@ -1,15 +0,0 @@ -declare namespace globalThis { - let __config: HydrogenConfig | undefined; -} - -type HydrogenConfig = { - dev?: boolean; -}; - -export function setConfig(config: HydrogenConfig) { - globalThis.__config = config; -} - -export function getConfig(): HydrogenConfig { - return globalThis.__config || {}; -} diff --git a/packages/hydrogen/src/hooks/useShopQuery/hooks.ts b/packages/hydrogen/src/hooks/useShopQuery/hooks.ts index 7efee2a3c7..b8fd580862 100644 --- a/packages/hydrogen/src/hooks/useShopQuery/hooks.ts +++ b/packages/hydrogen/src/hooks/useShopQuery/hooks.ts @@ -2,7 +2,6 @@ import {useShop} from '../../foundation/useShop'; import {getLoggerWithContext} from '../../utilities/log'; import type {CachingStrategy, PreloadOptions} from '../../types'; import {graphqlRequestBody} from '../../utilities'; -import {getConfig} from '../../framework/config'; import {useServerRequest} from '../../foundation/ServerRequestProvider'; import {injectGraphQLTracker} from '../../utilities/graphql-tracker'; import {sendMessageToClient} from '../../utilities/devtools'; @@ -103,7 +102,7 @@ export function useShopQuery({ log.error(errorMessage); log.error(useQueryError); - if (getConfig().dev) { + if (__DEV__) { throw new Error(errorMessage); } else { // in non-dev environments, we probably don't want super-detailed error messages for the user @@ -121,7 +120,7 @@ export function useShopQuery({ const errors = Array.isArray(data.errors) ? data.errors : [data.errors]; for (const error of errors) { - if (getConfig().dev) { + if (__DEV__) { throw new Error(error.message); } else { log.error('GraphQL Error', error); From 9636f67ce8ec0f92bb58c0aba6052703704c7eec Mon Sep 17 00:00:00 2001 From: Fran Dios Date: Thu, 2 Jun 2022 15:56:35 +0900 Subject: [PATCH 2/2] Fix unit tests --- jest.config.ts | 1 + .../foundation/ServerPropsProvider/ServerPropsProvider.tsx | 2 ++ .../ServerRequestProvider/ServerRequestProvider.tsx | 4 ++-- .../src/framework/plugins/vite-plugin-hydrogen-config.ts | 1 + packages/hydrogen/src/hooks/useShopQuery/hooks.ts | 4 ++-- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/jest.config.ts b/jest.config.ts index 68c2101099..7176c0c63f 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -19,6 +19,7 @@ const config: Config.InitialOptions = { setupFilesAfterEnv: ['/jest-setup.ts'], globals: { __DEV__: true, + __TEST__: true, 'ts-jest': { tsconfig: './packages/hydrogen/tsconfig.json', }, diff --git a/packages/hydrogen/src/foundation/ServerPropsProvider/ServerPropsProvider.tsx b/packages/hydrogen/src/foundation/ServerPropsProvider/ServerPropsProvider.tsx index aacdee9050..8ba51ffb34 100644 --- a/packages/hydrogen/src/foundation/ServerPropsProvider/ServerPropsProvider.tsx +++ b/packages/hydrogen/src/foundation/ServerPropsProvider/ServerPropsProvider.tsx @@ -11,6 +11,8 @@ import React, { declare global { // eslint-disable-next-line no-var var __DEV__: boolean; + // eslint-disable-next-line no-var + var __TEST__: boolean; } const PRIVATE_PROPS = ['request', 'response'] as const; diff --git a/packages/hydrogen/src/foundation/ServerRequestProvider/ServerRequestProvider.tsx b/packages/hydrogen/src/foundation/ServerRequestProvider/ServerRequestProvider.tsx index bff926d073..bc038b1f3f 100644 --- a/packages/hydrogen/src/foundation/ServerRequestProvider/ServerRequestProvider.tsx +++ b/packages/hydrogen/src/foundation/ServerRequestProvider/ServerRequestProvider.tsx @@ -33,7 +33,7 @@ function getCacheForType(resource: () => Map) { .ReactCurrentDispatcher.current; // @ts-ignore - if (__DEV__ && typeof jest !== 'undefined' && !dispatcher.getCacheForType) { + if (__TEST__ && !dispatcher.getCacheForType) { // Jest does not have access to the RSC runtime, mock it here: // @ts-ignore return (globalThis.__jestRscCache ??= resource()); @@ -82,7 +82,7 @@ export function useServerRequest() { if (!request) { // @ts-ignore - if (__DEV__ && typeof jest !== 'undefined') { + if (__TEST__) { // Unit tests are not wrapped in ServerRequestProvider. // This mocks it, instead of providing it in every test. return {ctx: {}} as ServerComponentRequest; diff --git a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-config.ts b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-config.ts index 8ecbbb26b1..00aa9f90e6 100644 --- a/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-config.ts +++ b/packages/hydrogen/src/framework/plugins/vite-plugin-hydrogen-config.ts @@ -100,6 +100,7 @@ export default () => { define: { __DEV__: env.mode !== 'production', __WORKER__: isWorker, + __TEST__: false, // Used in unit tests }, envPrefix: ['VITE_', 'PUBLIC_'], diff --git a/packages/hydrogen/src/hooks/useShopQuery/hooks.ts b/packages/hydrogen/src/hooks/useShopQuery/hooks.ts index b8fd580862..148a03eec0 100644 --- a/packages/hydrogen/src/hooks/useShopQuery/hooks.ts +++ b/packages/hydrogen/src/hooks/useShopQuery/hooks.ts @@ -102,7 +102,7 @@ export function useShopQuery({ log.error(errorMessage); log.error(useQueryError); - if (__DEV__) { + if (__DEV__ && !__TEST__) { throw new Error(errorMessage); } else { // in non-dev environments, we probably don't want super-detailed error messages for the user @@ -120,7 +120,7 @@ export function useShopQuery({ const errors = Array.isArray(data.errors) ? data.errors : [data.errors]; for (const error of errors) { - if (__DEV__) { + if (__DEV__ && !__TEST__) { throw new Error(error.message); } else { log.error('GraphQL Error', error);