import type { ComponentType, FunctionComponent } from 'react' import { Provider, CommerceProviderProps, CoreCommerceProvider, useCommerce as useCoreCommerce, } from '@commerce' import { spreeProvider } from './provider' import type { SpreeProvider } from './provider' import { SWRConfig } from 'swr' import handleTokenErrors from './utils/handle-token-errors' import useLogout from '@commerce/auth/use-logout' export { spreeProvider } export type { SpreeProvider } export const WithTokenErrorsHandling: FunctionComponent = ({ children }) => { const logout = useLogout() return ( { handleTokenErrors(error, () => void logout()) }, }} > {children} ) } export const getCommerceProvider =

(provider: P) => { return function CommerceProvider({ children, ...props }: CommerceProviderProps) { return ( {children} ) } } export const CommerceProvider = getCommerceProvider(spreeProvider) export const useCommerce = () => useCoreCommerce()