diff --git a/.changeset/purple-parents-jog.md b/.changeset/purple-parents-jog.md new file mode 100644 index 000000000..daeaf88f5 --- /dev/null +++ b/.changeset/purple-parents-jog.md @@ -0,0 +1,5 @@ +--- +"@zus-health/ctw-component-library": patch +--- + +Move ctw provider and context into separate files to avoid bug outlined in https://github.com/vitejs/vite/pull/10239 diff --git a/src/components/core/ctw-context.tsx b/src/components/core/ctw-context.tsx new file mode 100644 index 000000000..5fc9c73fe --- /dev/null +++ b/src/components/core/ctw-context.tsx @@ -0,0 +1,24 @@ +import { Theme } from "@/styles/tailwind.theme"; +import { createContext } from "react"; +import type { Env } from "./ctw-provider"; + +export type CTWToken = { + accessToken: string; + issuedTokenType: string; + tokenType: string; + expiresAt: number; +}; + +export type CTWState = { + env: Env; + authToken?: string; + headers?: HeadersInit; + authTokenURL?: string; + theme?: Theme; + token?: CTWToken; + actions: { + handleAuth: () => Promise; + }; +}; + +export const CTWStateContext = createContext(undefined); diff --git a/src/components/core/ctw-provider.tsx b/src/components/core/ctw-provider.tsx index 115e6f28b..2f79ce743 100644 --- a/src/components/core/ctw-provider.tsx +++ b/src/components/core/ctw-provider.tsx @@ -3,39 +3,14 @@ import { DefaultTheme, mapToCSSVar, Theme } from "@/styles/tailwind.theme"; import { queryClient } from "@/utils/request"; import { QueryClientProvider } from "@tanstack/react-query"; import { merge } from "lodash"; -import { - createContext, - ReactNode, - useCallback, - useContext, - useMemo, - useState, -} from "react"; +import { ReactNode, useCallback, useContext, useMemo, useState } from "react"; +import { CTWState, CTWStateContext, CTWToken } from "./ctw-context"; import "./main.scss"; export type Env = "dev" | "sandbox" | "production"; const EXPIRY_PADDING_MS = 60000; -type CTWToken = { - accessToken: string; - issuedTokenType: string; - tokenType: string; - expiresAt: number; -}; - -type CTWState = { - env: Env; - authToken?: string; - headers?: HeadersInit; - authTokenURL?: string; - theme?: Theme; - token?: CTWToken; - actions: { - handleAuth: () => Promise; - }; -}; - type AuthTokenSpecified = { authToken: string; authTokenURL?: never }; type AuthTokenURLSpecified = { authToken?: never; authTokenURL: string }; @@ -46,8 +21,6 @@ type CTWProviderProps = { headers?: HeadersInit; } & (AuthTokenSpecified | AuthTokenURLSpecified); -const CTWStateContext = createContext(undefined); - function CTWProvider({ theme, children, ...ctwState }: CTWProviderProps) { const [token, setToken] = useState();