( // 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 )
| 725 | invalidateSoft(keys).pipe( |
| 726 | Effect.provideService(Reactivity.Reactivity, getReactivity()) |
| 727 | ) |
| 728 | } |
| 729 | } |
| 730 | |
| 731 | export 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 |
no test coverage detected
searching dependent graphs…