MCPcopy Create free account
hub / github.com/effect-app/libs / makeClient

Function makeClient

packages/vue/src/makeClient.ts:727–1277  ·  view source on GitHub ↗
(
  // global, but only accessible after startup has completed
  getBaseMrt: () => ManagedRuntime.ManagedRuntime<RT_ | Mix, never>,
  clientFor_: ReturnType<typeof ApiClientFactory["makeFor"]>,
  rtHooks: Layer.Layer<RTHooks, never, Mix>,
  options?: MakeClientOptions
)

Source from the content-addressed store, hash-verified

725 invalidateSoft(keys).pipe(
726 Effect.provideService(Reactivity.Reactivity, getReactivity())
727 )
728 }
729}
730
731export const makeClient = <RT_, RTHooks>(
732 // global, but only accessible after startup has completed
733 getBaseMrt: () => ManagedRuntime.ManagedRuntime<RT_ | Mix, never>,
734 clientFor_: ReturnType<typeof ApiClientFactory["makeFor"]>,
735 rtHooks: Layer.Layer<RTHooks, never, Mix>,
736 options?: MakeClientOptions
737) => {
738 type RT = RT_ | Mix
739 const getBaseRt = () => managedRuntimeRt(getBaseMrt())
740 const makeCommand = makeUseCommand<RT, RTHooks>(rtHooks)
741 let cmd: Effect.Success<typeof makeCommand>
742 const useCommand = () => cmd ??= getBaseMrt().runSync(makeCommand)
743
744 // one AtomRuntime for the query engine, built lazily from the live app context;
745 // shares the ManagedRuntime memoMap so layers + Reactivity are the same instances.
746 let atomRt: AtomClientRuntime | undefined
747 const getAtomRt =
748 () => (atomRt ??= makeAtomClientRuntime(() => Layer.succeedContext(getBaseRt()), getBaseMrt().memoMap))
749
750 const legacyQueryEngine = options?.legacyQueryEngine ?? "tanstack"
751 let tanstackQueryClient: ReturnType<typeof makeTanstackQueryClient> | undefined
752 const getTanstackQueryClient = () => tanstackQueryClient ??= makeTanstackQueryClient()
753 const atomInvalidator = makeResolvedAtomQueryInvalidator(getBaseRt)
754 const queryInvalidator = legacyQueryEngine === "tanstack"
755 ? combineQueryInvalidators(atomInvalidator, makeTanstackQueryInvalidator(getTanstackQueryClient()))
756 : atomInvalidator
757 setQueryCacheUpdater(
758 legacyQueryEngine === "tanstack"
759 ? combineQueryCacheUpdaters(
760 makeTanstackQueryCacheUpdater(getTanstackQueryClient()),
761 optionalAtomQueryCacheUpdater
762 )
763 : atomQueryCacheUpdater
764 )
765
766 let m: ReturnType<typeof useMutationInt>
767 const useMutation = () => m ??= useMutationInt(queryInvalidator)
768
769 let sm2: ReturnType<typeof makeStreamMutation2>
770 const useStreamMutation2 = () => sm2 ??= makeStreamMutation2(queryInvalidator)
771
772 const legacyUseQuery = legacyQueryEngine === "tanstack"
773 ? makeTanstackQuery(getBaseRt, getTanstackQueryClient())
774 : undefined
775 const query = new QueryImpl(getBaseRt, getAtomRt, legacyUseQuery)
776 const useQuery = query.useQuery
777 const useQueryNew = query.useQueryNew
778 const useQueryAtom = query.useQueryAtom
779 const useQueryFamily = query.useQueryFamily
780 const useSuspenseQuery = query.useSuspenseQuery
781 const useSuspenseQueryNew = query.useSuspenseQueryNew
782 const useStreamQuery = query.useStreamQuery
783 const useStreamQueryFamily = query.useStreamQueryFamily
784 const useStreamQueryAtom = query.useStreamQueryAtom

Callers 4

useCommandFunction · 0.90
createClientFunction · 0.50
useClientFunction · 0.50

Calls 10

combineQueryInvalidatorsFunction · 0.90
setQueryCacheUpdaterFunction · 0.90
makeTanstackQueryFunction · 0.90
getTanstackQueryClientFunction · 0.85
wrapMethod · 0.80
useCommandFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…