refactor(shared/api): lazify queryClient to remove eager-construction footgun
queryClient.ts constructed the TanStack client at module eval but was not in the sideEffects allowlist, so Rollup treated the module as pure — safe only while a value-importer keeps it alive (D-3). - replace the eager `queryClient` singleton with a memoized getQueryClient() factory; construction is deferred to first call - the module is now genuinely side-effect-free, so no sideEffects exception is needed and construction can never be legally tree-shaken away - route all consumers through getQueryClient() (QueryProvider as first caller; stores via class fields/observers; tests via a local alias; the fontCatalogStore spec mock now overrides getQueryClient)
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
descendants of this provider.
|
||||
-->
|
||||
<script lang="ts">
|
||||
import { queryClient } from '$shared/api/queryClient';
|
||||
import { getQueryClient } from '$shared/api/queryClient';
|
||||
import { QueryClientProvider } from '@tanstack/svelte-query';
|
||||
import type { Snippet } from 'svelte';
|
||||
|
||||
@@ -18,6 +18,9 @@ interface Props {
|
||||
}
|
||||
|
||||
let { children }: Props = $props();
|
||||
|
||||
// First call to the lazy singleton — constructs the shared client for the app.
|
||||
const queryClient = getQueryClient();
|
||||
</script>
|
||||
|
||||
<QueryClientProvider client={queryClient}>
|
||||
|
||||
Reference in New Issue
Block a user