import { ControllerContext, useController } from '@rest-hooks/react'; import { useCallback, useMemo } from 'react'; import React from 'react'; import { createControllerInterceptor } from './createControllerInterceptor.js'; import { createFixtureMap } from './createFixtureMap.js'; import type { Fixture, Interceptor } from './fixtureTypes.js'; type Props = { children: React.ReactNode; readonly fixtures: (Fixture | Interceptor)[]; silenceMissing: boolean; getInitialInterceptorData: () => T; }; /** Can be used to mock responses based on fixtures provided. * * * * Place below and above any components you want to mock. */ export default function MockResolver({ children, fixtures, getInitialInterceptorData, silenceMissing, }: Props) { const controller = useController(); const [fixtureMap, interceptors] = useMemo( () => createFixtureMap(fixtures), [fixtures], ); const controllerInterceptor = useMemo( () => createControllerInterceptor( controller, fixtureMap, interceptors, getInitialInterceptorData, silenceMissing, ), [ interceptors, controller, fixtureMap, silenceMissing, getInitialInterceptorData, ], ); return ( {children} ); } MockResolver.defaultProps = { silenceMissing: false, getInitialInterceptorData: () => ({}), };