diff --git a/docs/framework/react/guides/render-optimizations.md b/docs/framework/react/guides/render-optimizations.md index 51ca5b17d27..75775eab347 100644 --- a/docs/framework/react/guides/render-optimizations.md +++ b/docs/framework/react/guides/render-optimizations.md @@ -17,11 +17,11 @@ The top level object returned from `useQuery`, `useInfiniteQuery`, `useMutation` ## tracked properties -React Query will only trigger a re-render if one of the properties returned from `useQuery` is actually "used". This is done by using [custom getters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty#custom_setters_and_getters). This avoids a lot of unnecessary re-renders, e.g. because properties like `isFetching` or `isStale` might change often, but are not used in the component. +React Query will only trigger a re-render if one of the properties returned from `useQuery` is actually "used". This is done by using [Proxy object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy). This avoids a lot of unnecessary re-renders, e.g. because properties like `isFetching` or `isStale` might change often, but are not used in the component. You can customize this feature by setting `notifyOnChangeProps` manually globally or on a per-query basis. If you want to turn that feature off, you can set `notifyOnChangeProps: 'all'`. -> Note: Custom getters are invoked by accessing a property, either via destructuring or by accessing it directly. If you use object rest destructuring, you will disable this optimization. We have a [lint rule](../../../eslint/no-rest-destructuring.md) to guard against this pitfall. +> Note: The get trap of a proxy is invoked by accessing a property, either via destructuring or by accessing it directly. If you use object rest destructuring, you will disable this optimization. We have a [lint rule](../../../eslint/no-rest-destructuring.md) to guard against this pitfall. ## select diff --git a/docs/framework/vue/reactivity.md b/docs/framework/vue/reactivity.md index 371b32c52c6..50e5b8874fe 100644 --- a/docs/framework/vue/reactivity.md +++ b/docs/framework/vue/reactivity.md @@ -157,6 +157,12 @@ export function useUserProjects(userId: MaybeRef) { More details on this option can be found on the [useQuery reference](./reference/useQuery.md) page. +## Immutability + +Results from `useQuery` are always immutable. This is necessary for performance and caching purposes. If you need to mutate a value returned from `useQuery`, you must create a copy of the data. + +One implication of this design is that passing values from `useQuery` to a two-way binding such as `v-model` will not work. You must create a mutable copy of the data before attempting to update it in place. + # Key Takeaways - `enabled` and `queryKey` are the two query options that can accept reactive values. @@ -164,3 +170,4 @@ More details on this option can be found on the [useQuery reference](./reference - If you expect a query to react to changes based on the values it consumes, ensure that the values are reactive. (i.e. pass in refs directly to the query, or use reactive getters) - If you don't need a query to be reactive pass in a plain value. - For trivial derived state such as property access consider using a reactive getter in place of a `computed`. +- Results from `useQuery` are always immutable. diff --git a/docs/reference/QueryCache.md b/docs/reference/QueryCache.md index ffa4a20440a..cd3e0f2a512 100644 --- a/docs/reference/QueryCache.md +++ b/docs/reference/QueryCache.md @@ -75,8 +75,8 @@ const queries = queryCache.findAll(queryKey) **Options** -- `queryKey?: QueryKey`: [Query Keys](../../framework/react/guides/query-keys) -- `filters?: QueryFilters`: [Query Filters](../../framework/react/guides/filters#query-filters) +- `queryKey?: QueryKey`: [Query Keys](../framework/react/guides/query-keys.md) +- `filters?: QueryFilters`: [Query Filters](../framework/react/guides/filters.md#query-filters) **Returns** @@ -118,6 +118,6 @@ queryCache.clear() ## Further reading To get a better understanding how the QueryCache works internally, have a look at [#18: Inside React Query -](../../framework/react/community/tkdodos-blog#18-inside-react-query) from the Community Resources. +](../framework/react/community/tkdodos-blog.md#18-inside-react-query) from the Community Resources. [//]: # 'Materials' diff --git a/docs/reference/streamedQuery.md b/docs/reference/streamedQuery.md index 7c47a7811db..1926b0fd680 100644 --- a/docs/reference/streamedQuery.md +++ b/docs/reference/streamedQuery.md @@ -26,8 +26,10 @@ const query = queryOptions({ - **Required** - The function that returns a Promise of an AsyncIterable of data to stream in. - Receives a [QueryFunctionContext](../guides/query-functions.md#queryfunctioncontext) -- `refetchMode?: 'append' | 'reset'` - - optional - - when set to `'reset'`, the query will erase all data and go back into `pending` state when a refetch occurs. - - when set to `'append'`, data will be appended on a refetch. - - defaults to `'reset'` +- `refetchMode?: 'append' | 'reset' | 'replace` + - Optional + - Defines how refetches are handled. + - Defaults to `'reset'` + - When set to `'reset'`, the query will erase all data and go back into `pending` state. + - When set to `'append'`, data will be appended to existing data. + - When set to `'replace'`, data will be written to the cache at the end of the stream. diff --git a/eslint.config.js b/eslint.config.js index d8a54583771..f156cd2e9c2 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -45,10 +45,7 @@ export default [ { files: ['**/*.spec.ts*', '**/*.test.ts*', '**/*.test-d.ts*'], plugins: { vitest }, - rules: { - ...vitest.configs.recommended.rules, - 'vitest/expect-expect': 'warn', - }, + rules: vitest.configs.recommended.rules, settings: { vitest: { typecheck: true } }, }, ] diff --git a/examples/angular/auto-refetching/package.json b/examples/angular/auto-refetching/package.json index bc99d91b86c..ad488cc6bb3 100644 --- a/examples/angular/auto-refetching/package.json +++ b/examples/angular/auto-refetching/package.json @@ -14,7 +14,7 @@ "@angular/core": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.74.6", + "@tanstack/angular-query-experimental": "^5.75.4", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/basic-persister/package.json b/examples/angular/basic-persister/package.json index 1f3e6ef2214..386143aca6f 100644 --- a/examples/angular/basic-persister/package.json +++ b/examples/angular/basic-persister/package.json @@ -14,9 +14,9 @@ "@angular/core": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.74.6", + "@tanstack/angular-query-experimental": "^5.75.4", "@tanstack/angular-query-persist-client": "^5.62.7", - "@tanstack/query-sync-storage-persister": "^5.74.6", + "@tanstack/query-sync-storage-persister": "^5.75.4", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "^0.15.0" diff --git a/examples/angular/basic/package.json b/examples/angular/basic/package.json index f7a4649bd84..fcc111ad605 100644 --- a/examples/angular/basic/package.json +++ b/examples/angular/basic/package.json @@ -14,7 +14,7 @@ "@angular/core": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.74.6", + "@tanstack/angular-query-experimental": "^5.75.4", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/devtools-panel/package.json b/examples/angular/devtools-panel/package.json index 08f8ee29c79..4abea90c2cc 100644 --- a/examples/angular/devtools-panel/package.json +++ b/examples/angular/devtools-panel/package.json @@ -15,8 +15,8 @@ "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", "@angular/router": "^19.2.4", - "@tanstack/angular-query-devtools-experimental": "^5.74.6", - "@tanstack/angular-query-experimental": "^5.74.6", + "@tanstack/angular-query-devtools-experimental": "^5.75.4", + "@tanstack/angular-query-experimental": "^5.75.4", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/infinite-query-with-max-pages/package.json b/examples/angular/infinite-query-with-max-pages/package.json index 2fa8a98850b..6d654692db4 100644 --- a/examples/angular/infinite-query-with-max-pages/package.json +++ b/examples/angular/infinite-query-with-max-pages/package.json @@ -14,7 +14,7 @@ "@angular/core": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.74.6", + "@tanstack/angular-query-experimental": "^5.75.4", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/optimistic-updates/package.json b/examples/angular/optimistic-updates/package.json index 64e1a59e7b2..b0e6e529a83 100644 --- a/examples/angular/optimistic-updates/package.json +++ b/examples/angular/optimistic-updates/package.json @@ -15,7 +15,7 @@ "@angular/forms": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.74.6", + "@tanstack/angular-query-experimental": "^5.75.4", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/pagination/package.json b/examples/angular/pagination/package.json index 7c2de011685..499cd7b7d19 100644 --- a/examples/angular/pagination/package.json +++ b/examples/angular/pagination/package.json @@ -14,7 +14,7 @@ "@angular/core": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.74.6", + "@tanstack/angular-query-experimental": "^5.75.4", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/query-options-from-a-service/package.json b/examples/angular/query-options-from-a-service/package.json index 9cb1edd4dc1..f0c25f61aa4 100644 --- a/examples/angular/query-options-from-a-service/package.json +++ b/examples/angular/query-options-from-a-service/package.json @@ -15,7 +15,7 @@ "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", "@angular/router": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.74.6", + "@tanstack/angular-query-experimental": "^5.75.4", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/router/package.json b/examples/angular/router/package.json index b7f251b0b88..2bb7a6151b2 100644 --- a/examples/angular/router/package.json +++ b/examples/angular/router/package.json @@ -15,7 +15,7 @@ "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", "@angular/router": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.74.6", + "@tanstack/angular-query-experimental": "^5.75.4", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/rxjs/package.json b/examples/angular/rxjs/package.json index 4c1fc68e658..a5ae84efac3 100644 --- a/examples/angular/rxjs/package.json +++ b/examples/angular/rxjs/package.json @@ -15,7 +15,7 @@ "@angular/forms": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.74.6", + "@tanstack/angular-query-experimental": "^5.75.4", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/angular/simple/package.json b/examples/angular/simple/package.json index 90c5da9376b..dcef975e76e 100644 --- a/examples/angular/simple/package.json +++ b/examples/angular/simple/package.json @@ -14,7 +14,7 @@ "@angular/core": "^19.2.4", "@angular/platform-browser": "^19.2.4", "@angular/platform-browser-dynamic": "^19.2.4", - "@tanstack/angular-query-experimental": "^5.74.6", + "@tanstack/angular-query-experimental": "^5.75.4", "rxjs": "^7.8.2", "tslib": "^2.8.1", "zone.js": "0.15.0" diff --git a/examples/react/algolia/package.json b/examples/react/algolia/package.json index b42437f9039..dae482e4c59 100644 --- a/examples/react/algolia/package.json +++ b/examples/react/algolia/package.json @@ -9,13 +9,13 @@ }, "dependencies": { "@algolia/client-search": "5.2.1", - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "react": "^19.0.0", "react-dom": "^19.0.0" }, "devDependencies": { - "@tanstack/eslint-plugin-query": "^5.73.3", + "@tanstack/eslint-plugin-query": "^5.74.7", "@types/react": "^18.2.79", "@types/react-dom": "^18.2.25", "@vitejs/plugin-react": "^4.3.4", diff --git a/examples/react/auto-refetching/package.json b/examples/react/auto-refetching/package.json index 08898c8eb0e..0753ff77f04 100644 --- a/examples/react/auto-refetching/package.json +++ b/examples/react/auto-refetching/package.json @@ -8,9 +8,9 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "next": "^15.1.2", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "next": "^15.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/basic-graphql-request/package.json b/examples/react/basic-graphql-request/package.json index b31b8eeaf6c..03a6258f1f2 100644 --- a/examples/react/basic-graphql-request/package.json +++ b/examples/react/basic-graphql-request/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "graphql": "^16.9.0", "graphql-request": "^7.1.2", "react": "^19.0.0", diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json index b970816394e..ea343b6fa08 100644 --- a/examples/react/basic/package.json +++ b/examples/react/basic/package.json @@ -9,15 +9,15 @@ "test:eslint": "eslint ./src" }, "dependencies": { - "@tanstack/query-sync-storage-persister": "^5.74.6", - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "@tanstack/react-query-persist-client": "^5.74.6", + "@tanstack/query-sync-storage-persister": "^5.75.4", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "@tanstack/react-query-persist-client": "^5.75.4", "react": "^19.0.0", "react-dom": "^19.0.0" }, "devDependencies": { - "@tanstack/eslint-plugin-query": "^5.73.3", + "@tanstack/eslint-plugin-query": "^5.74.7", "@types/react": "^18.2.79", "@types/react-dom": "^18.2.25", "@vitejs/plugin-react": "^4.3.4", diff --git a/examples/react/chat/package.json b/examples/react/chat/package.json index d67925a2bd5..434805f0ca0 100644 --- a/examples/react/chat/package.json +++ b/examples/react/chat/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/default-query-function/package.json b/examples/react/default-query-function/package.json index dd0f8826fed..736dfab8a5d 100644 --- a/examples/react/default-query-function/package.json +++ b/examples/react/default-query-function/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/devtools-panel/package.json b/examples/react/devtools-panel/package.json index b5038f0e64f..52ac1091ca4 100644 --- a/examples/react/devtools-panel/package.json +++ b/examples/react/devtools-panel/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/eslint-legacy/package.json b/examples/react/eslint-legacy/package.json index 1f95e725a3c..f7df90b15d3 100644 --- a/examples/react/eslint-legacy/package.json +++ b/examples/react/eslint-legacy/package.json @@ -9,15 +9,15 @@ "test:eslint": "ESLINT_USE_FLAT_CONFIG=false eslint ./src/**/*.tsx" }, "dependencies": { - "@tanstack/query-sync-storage-persister": "^5.74.6", - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "@tanstack/react-query-persist-client": "^5.74.6", + "@tanstack/query-sync-storage-persister": "^5.75.4", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "@tanstack/react-query-persist-client": "^5.75.4", "react": "^19.0.0", "react-dom": "^19.0.0" }, "devDependencies": { - "@tanstack/eslint-plugin-query": "^5.73.3", + "@tanstack/eslint-plugin-query": "^5.74.7", "@types/react": "^18.2.79", "@types/react-dom": "^18.2.25", "@vitejs/plugin-react": "^4.3.4", diff --git a/examples/react/infinite-query-with-max-pages/package.json b/examples/react/infinite-query-with-max-pages/package.json index 1b0f018ffe6..ba6a9659ad3 100644 --- a/examples/react/infinite-query-with-max-pages/package.json +++ b/examples/react/infinite-query-with-max-pages/package.json @@ -8,9 +8,9 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "next": "^15.1.2", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "next": "^15.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/load-more-infinite-scroll/package.json b/examples/react/load-more-infinite-scroll/package.json index f15f709cca3..878c4da1349 100644 --- a/examples/react/load-more-infinite-scroll/package.json +++ b/examples/react/load-more-infinite-scroll/package.json @@ -8,9 +8,9 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "next": "^15.1.2", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "next": "^15.3.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-intersection-observer": "^9.16.0" diff --git a/examples/react/nextjs-app-prefetching/package.json b/examples/react/nextjs-app-prefetching/package.json index be7d82aa668..c2c1be612c7 100644 --- a/examples/react/nextjs-app-prefetching/package.json +++ b/examples/react/nextjs-app-prefetching/package.json @@ -8,9 +8,9 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "next": "^15.1.2", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "next": "^15.3.1", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/nextjs-suspense-streaming/package.json b/examples/react/nextjs-suspense-streaming/package.json index 3b295b3b334..182e0480421 100644 --- a/examples/react/nextjs-suspense-streaming/package.json +++ b/examples/react/nextjs-suspense-streaming/package.json @@ -8,10 +8,10 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "@tanstack/react-query-next-experimental": "^5.74.4", - "next": "^15.1.2", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "@tanstack/react-query-next-experimental": "^5.75.4", + "next": "^15.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/nextjs/package.json b/examples/react/nextjs/package.json index d3c615417ff..6ce75ee0336 100644 --- a/examples/react/nextjs/package.json +++ b/examples/react/nextjs/package.json @@ -8,9 +8,9 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "next": "^15.1.2", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "next": "^15.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/offline/package.json b/examples/react/offline/package.json index b940103d5be..29f0e4f2d5e 100644 --- a/examples/react/offline/package.json +++ b/examples/react/offline/package.json @@ -8,11 +8,11 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/query-sync-storage-persister": "^5.74.6", + "@tanstack/query-sync-storage-persister": "^5.75.4", "@tanstack/react-location": "^3.7.4", - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "@tanstack/react-query-persist-client": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "@tanstack/react-query-persist-client": "^5.75.4", "msw": "^2.6.6", "react": "^19.0.0", "react-dom": "^19.0.0", diff --git a/examples/react/optimistic-updates-cache/package.json b/examples/react/optimistic-updates-cache/package.json index 2e175a29077..66f2110b98c 100755 --- a/examples/react/optimistic-updates-cache/package.json +++ b/examples/react/optimistic-updates-cache/package.json @@ -8,9 +8,9 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "next": "^15.1.2", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "next": "^15.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/optimistic-updates-ui/package.json b/examples/react/optimistic-updates-ui/package.json index 6e837f465a7..1c6f028d798 100755 --- a/examples/react/optimistic-updates-ui/package.json +++ b/examples/react/optimistic-updates-ui/package.json @@ -8,9 +8,9 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "next": "^15.1.2", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "next": "^15.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/pagination/package.json b/examples/react/pagination/package.json index ad9b58839b5..57e3cc5ec65 100644 --- a/examples/react/pagination/package.json +++ b/examples/react/pagination/package.json @@ -8,9 +8,9 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "next": "^15.1.2", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "next": "^15.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/playground/package.json b/examples/react/playground/package.json index a99b3a43433..76a35a9302c 100644 --- a/examples/react/playground/package.json +++ b/examples/react/playground/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/prefetching/package.json b/examples/react/prefetching/package.json index e6a8afb7dfb..6ac3248b9b0 100644 --- a/examples/react/prefetching/package.json +++ b/examples/react/prefetching/package.json @@ -8,9 +8,9 @@ "start": "next start" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", - "next": "^15.1.2", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", + "next": "^15.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/examples/react/react-native/package.json b/examples/react/react-native/package.json index a4cd7cf0743..634641ea098 100644 --- a/examples/react/react-native/package.json +++ b/examples/react/react-native/package.json @@ -14,8 +14,8 @@ "@react-native-community/netinfo": "^11.4.1", "@react-navigation/native": "^6.1.18", "@react-navigation/stack": "^6.4.1", - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "expo": "^52.0.11", "expo-constants": "^17.0.3", "expo-status-bar": "^2.0.0", diff --git a/examples/react/react-router/package.json b/examples/react/react-router/package.json index a714ad941e7..8bc36c8ef83 100644 --- a/examples/react/react-router/package.json +++ b/examples/react/react-router/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "localforage": "^1.10.0", "match-sorter": "^6.3.4", "react": "^19.0.0", diff --git a/examples/react/rick-morty/package.json b/examples/react/rick-morty/package.json index 4380d2b63ed..1861b3e9d34 100644 --- a/examples/react/rick-morty/package.json +++ b/examples/react/rick-morty/package.json @@ -12,8 +12,8 @@ "@emotion/styled": "^11.13.5", "@mui/material": "^6.1.8", "@mui/styles": "^6.1.8", - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "react": "^19.0.0", "react-dom": "^19.0.0", "react-router": "^6.25.1", diff --git a/examples/react/shadow-dom/package.json b/examples/react/shadow-dom/package.json index 53d8f11f9e4..ed4a78ad47d 100644 --- a/examples/react/shadow-dom/package.json +++ b/examples/react/shadow-dom/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/simple/package.json b/examples/react/simple/package.json index f1ccdf9d431..7b1d40e9c28 100644 --- a/examples/react/simple/package.json +++ b/examples/react/simple/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/react/star-wars/package.json b/examples/react/star-wars/package.json index 6661083e296..7a55eae87a5 100644 --- a/examples/react/star-wars/package.json +++ b/examples/react/star-wars/package.json @@ -12,8 +12,8 @@ "@emotion/styled": "^11.13.5", "@mui/material": "^6.1.8", "@mui/styles": "^6.1.8", - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "react": "^19.0.0", "react-dom": "^19.0.0", "react-router": "^6.25.1", diff --git a/examples/react/suspense/package.json b/examples/react/suspense/package.json index f3614ef85a5..5a45d422922 100644 --- a/examples/react/suspense/package.json +++ b/examples/react/suspense/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-query-devtools": "^5.74.6", + "@tanstack/react-query": "^5.75.4", + "@tanstack/react-query-devtools": "^5.75.4", "font-awesome": "^4.7.0", "react": "^19.0.0", "react-dom": "^19.0.0", diff --git a/examples/solid/astro/package.json b/examples/solid/astro/package.json index dfa76e145f1..94d37946504 100644 --- a/examples/solid/astro/package.json +++ b/examples/solid/astro/package.json @@ -15,8 +15,8 @@ "@astrojs/solid-js": "^5.0.7", "@astrojs/tailwind": "^6.0.2", "@astrojs/vercel": "^8.1.3", - "@tanstack/solid-query": "^5.74.4", - "@tanstack/solid-query-devtools": "^5.74.6", + "@tanstack/solid-query": "^5.75.4", + "@tanstack/solid-query-devtools": "^5.75.4", "astro": "^5.5.6", "solid-js": "^1.9.5", "tailwindcss": "^3.4.7", diff --git a/examples/solid/basic-graphql-request/package.json b/examples/solid/basic-graphql-request/package.json index 9beee43d278..4f5c73874e3 100644 --- a/examples/solid/basic-graphql-request/package.json +++ b/examples/solid/basic-graphql-request/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-query": "^5.74.4", - "@tanstack/solid-query-devtools": "^5.74.6", + "@tanstack/solid-query": "^5.75.4", + "@tanstack/solid-query-devtools": "^5.75.4", "graphql": "^16.9.0", "graphql-request": "^7.1.2", "solid-js": "^1.9.5" diff --git a/examples/solid/basic/package.json b/examples/solid/basic/package.json index 389f4d72233..c1587344abe 100644 --- a/examples/solid/basic/package.json +++ b/examples/solid/basic/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-query": "^5.74.4", - "@tanstack/solid-query-devtools": "^5.74.6", + "@tanstack/solid-query": "^5.75.4", + "@tanstack/solid-query-devtools": "^5.75.4", "solid-js": "^1.9.5" }, "devDependencies": { diff --git a/examples/solid/default-query-function/package.json b/examples/solid/default-query-function/package.json index 6ee45006852..68e798b2390 100644 --- a/examples/solid/default-query-function/package.json +++ b/examples/solid/default-query-function/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-query": "^5.74.4", - "@tanstack/solid-query-devtools": "^5.74.6", + "@tanstack/solid-query": "^5.75.4", + "@tanstack/solid-query-devtools": "^5.75.4", "solid-js": "^1.9.5" }, "devDependencies": { diff --git a/examples/solid/simple/package.json b/examples/solid/simple/package.json index 9d6686c7067..bc8c7b3a574 100644 --- a/examples/solid/simple/package.json +++ b/examples/solid/simple/package.json @@ -8,12 +8,12 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-query": "^5.74.4", - "@tanstack/solid-query-devtools": "^5.74.6", + "@tanstack/solid-query": "^5.75.4", + "@tanstack/solid-query-devtools": "^5.75.4", "solid-js": "^1.9.5" }, "devDependencies": { - "@tanstack/eslint-plugin-query": "^5.73.3", + "@tanstack/eslint-plugin-query": "^5.74.7", "typescript": "5.8.3", "vite": "^6.2.4", "vite-plugin-solid": "^2.11.6" diff --git a/examples/solid/solid-start-streaming/package.json b/examples/solid/solid-start-streaming/package.json index 9493ad0e57a..41e4ad25c79 100644 --- a/examples/solid/solid-start-streaming/package.json +++ b/examples/solid/solid-start-streaming/package.json @@ -12,8 +12,8 @@ "@solidjs/meta": "^0.29.4", "@solidjs/router": "^0.15.3", "@solidjs/start": "^1.1.3", - "@tanstack/solid-query": "^5.74.4", - "@tanstack/solid-query-devtools": "^5.74.6", + "@tanstack/solid-query": "^5.75.4", + "@tanstack/solid-query-devtools": "^5.75.4", "solid-js": "^1.9.5", "vinxi": "^0.5.3" }, diff --git a/examples/svelte/auto-refetching/package.json b/examples/svelte/auto-refetching/package.json index 1e4759841f9..ade9146bd6d 100644 --- a/examples/svelte/auto-refetching/package.json +++ b/examples/svelte/auto-refetching/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.74.4", - "@tanstack/svelte-query-devtools": "^5.74.6" + "@tanstack/svelte-query": "^5.75.4", + "@tanstack/svelte-query-devtools": "^5.75.4" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/svelte/basic/package.json b/examples/svelte/basic/package.json index 7a82bf0c047..c29e27c7faf 100644 --- a/examples/svelte/basic/package.json +++ b/examples/svelte/basic/package.json @@ -8,10 +8,10 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/query-sync-storage-persister": "^5.74.6", - "@tanstack/svelte-query": "^5.74.4", - "@tanstack/svelte-query-devtools": "^5.74.6", - "@tanstack/svelte-query-persist-client": "^5.74.6" + "@tanstack/query-sync-storage-persister": "^5.75.4", + "@tanstack/svelte-query": "^5.75.4", + "@tanstack/svelte-query-devtools": "^5.75.4", + "@tanstack/svelte-query-persist-client": "^5.75.4" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/svelte/load-more-infinite-scroll/package.json b/examples/svelte/load-more-infinite-scroll/package.json index b6fcc264daf..aca447daa9b 100644 --- a/examples/svelte/load-more-infinite-scroll/package.json +++ b/examples/svelte/load-more-infinite-scroll/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.74.4", - "@tanstack/svelte-query-devtools": "^5.74.6" + "@tanstack/svelte-query": "^5.75.4", + "@tanstack/svelte-query-devtools": "^5.75.4" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/svelte/optimistic-updates/package.json b/examples/svelte/optimistic-updates/package.json index fe137246f4f..74bff86325f 100644 --- a/examples/svelte/optimistic-updates/package.json +++ b/examples/svelte/optimistic-updates/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.74.4", - "@tanstack/svelte-query-devtools": "^5.74.6" + "@tanstack/svelte-query": "^5.75.4", + "@tanstack/svelte-query-devtools": "^5.75.4" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/svelte/playground/package.json b/examples/svelte/playground/package.json index 720ce1b930a..21f458c6db4 100644 --- a/examples/svelte/playground/package.json +++ b/examples/svelte/playground/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.74.4", - "@tanstack/svelte-query-devtools": "^5.74.6" + "@tanstack/svelte-query": "^5.75.4", + "@tanstack/svelte-query-devtools": "^5.75.4" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/svelte/simple/package.json b/examples/svelte/simple/package.json index aff3354abbb..404cfbb1b75 100644 --- a/examples/svelte/simple/package.json +++ b/examples/svelte/simple/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.74.4", - "@tanstack/svelte-query-devtools": "^5.74.6" + "@tanstack/svelte-query": "^5.75.4", + "@tanstack/svelte-query-devtools": "^5.75.4" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^5.0.3", diff --git a/examples/svelte/ssr/package.json b/examples/svelte/ssr/package.json index 8f27cea255b..16316650d36 100644 --- a/examples/svelte/ssr/package.json +++ b/examples/svelte/ssr/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.74.4", - "@tanstack/svelte-query-devtools": "^5.74.6" + "@tanstack/svelte-query": "^5.75.4", + "@tanstack/svelte-query-devtools": "^5.75.4" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/svelte/star-wars/package.json b/examples/svelte/star-wars/package.json index 3ef620cac43..09be51fabb8 100644 --- a/examples/svelte/star-wars/package.json +++ b/examples/svelte/star-wars/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/svelte-query": "^5.74.4", - "@tanstack/svelte-query-devtools": "^5.74.6" + "@tanstack/svelte-query": "^5.75.4", + "@tanstack/svelte-query-devtools": "^5.75.4" }, "devDependencies": { "@sveltejs/adapter-auto": "^6.0.0", diff --git a/examples/vue/2.6-basic/package.json b/examples/vue/2.6-basic/package.json index 75d35b229cb..b68a2a71a99 100644 --- a/examples/vue/2.6-basic/package.json +++ b/examples/vue/2.6-basic/package.json @@ -8,7 +8,7 @@ "_preview": "vite preview" }, "dependencies": { - "@tanstack/vue-query": "^5.74.6", + "@tanstack/vue-query": "^5.75.4", "@vue/composition-api": "1.7.2", "vue": "2.6.14", "vue-template-compiler": "2.6.14" diff --git a/examples/vue/2.7-basic/package.json b/examples/vue/2.7-basic/package.json index 0be678cd5e1..0eb9b8ab2e6 100644 --- a/examples/vue/2.7-basic/package.json +++ b/examples/vue/2.7-basic/package.json @@ -8,7 +8,7 @@ "_serve": "vite preview" }, "dependencies": { - "@tanstack/vue-query": "^5.74.6", + "@tanstack/vue-query": "^5.75.4", "vue": "2.7.16", "vue-template-compiler": "2.7.16" }, diff --git a/examples/vue/basic/package.json b/examples/vue/basic/package.json index 77bece5f99e..791a9f8764f 100644 --- a/examples/vue/basic/package.json +++ b/examples/vue/basic/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-query": "^5.74.6", - "@tanstack/vue-query-devtools": "^5.74.6", + "@tanstack/vue-query": "^5.75.4", + "@tanstack/vue-query-devtools": "^5.75.4", "vue": "^3.4.27" }, "devDependencies": { diff --git a/examples/vue/dependent-queries/package.json b/examples/vue/dependent-queries/package.json index 705359ab938..974f4fb686c 100644 --- a/examples/vue/dependent-queries/package.json +++ b/examples/vue/dependent-queries/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-query": "^5.74.6", + "@tanstack/vue-query": "^5.75.4", "vue": "^3.4.27" }, "devDependencies": { diff --git a/examples/vue/nuxt3/package.json b/examples/vue/nuxt3/package.json index 44b504d935b..f4c05df02ca 100644 --- a/examples/vue/nuxt3/package.json +++ b/examples/vue/nuxt3/package.json @@ -7,7 +7,7 @@ "_start": "node .output/server/index.mjs" }, "dependencies": { - "@tanstack/vue-query": "^5.74.6" + "@tanstack/vue-query": "^5.75.4" }, "devDependencies": { "nuxt": "^3.12.4" diff --git a/examples/vue/persister/package.json b/examples/vue/persister/package.json index 599bc3fa077..1dfe9674912 100644 --- a/examples/vue/persister/package.json +++ b/examples/vue/persister/package.json @@ -8,10 +8,10 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/query-core": "^5.74.4", - "@tanstack/query-persist-client-core": "^5.74.6", - "@tanstack/query-sync-storage-persister": "^5.74.6", - "@tanstack/vue-query": "^5.74.6", + "@tanstack/query-core": "^5.75.4", + "@tanstack/query-persist-client-core": "^5.75.4", + "@tanstack/query-sync-storage-persister": "^5.75.4", + "@tanstack/vue-query": "^5.75.4", "idb-keyval": "^6.2.1", "vue": "^3.4.27" }, diff --git a/examples/vue/simple/package.json b/examples/vue/simple/package.json index 69903688bfa..b33f1add193 100644 --- a/examples/vue/simple/package.json +++ b/examples/vue/simple/package.json @@ -8,8 +8,8 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/vue-query": "^5.74.6", - "@tanstack/vue-query-devtools": "^5.74.6", + "@tanstack/vue-query": "^5.75.4", + "@tanstack/vue-query-devtools": "^5.75.4", "vue": "^3.4.27" }, "devDependencies": { diff --git a/integrations/react-next-14/package.json b/integrations/react-next-14/package.json index 5ad396b6c69..38e3f2ccd38 100644 --- a/integrations/react-next-14/package.json +++ b/integrations/react-next-14/package.json @@ -7,7 +7,7 @@ "dependencies": { "@tanstack/react-query": "workspace:*", "@tanstack/react-query-devtools": "workspace:*", - "next": "^15.1.2", + "next": "^14.2.28", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/integrations/react-next-15/package.json b/integrations/react-next-15/package.json index bfa676166d6..09b77217d90 100644 --- a/integrations/react-next-15/package.json +++ b/integrations/react-next-15/package.json @@ -9,7 +9,7 @@ "@js-temporal/polyfill": "^0.4.4", "@tanstack/react-query": "workspace:*", "@tanstack/react-query-devtools": "workspace:*", - "next": "^15.1.2", + "next": "^15.3.1", "react": "^19.0.0", "react-dom": "^19.0.0", "tupleson": "0.23.1" diff --git a/packages/angular-query-devtools-experimental/package.json b/packages/angular-query-devtools-experimental/package.json index 76587b1896b..cd75560d861 100644 --- a/packages/angular-query-devtools-experimental/package.json +++ b/packages/angular-query-devtools-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/angular-query-devtools-experimental", - "version": "5.74.6", + "version": "5.75.4", "description": "Developer tools to interact with and visualize the TanStack/angular-query cache", "author": "Arnoud de Vries", "license": "MIT", diff --git a/packages/angular-query-devtools-experimental/src/__tests__/inject-devtools-panel.test.ts b/packages/angular-query-devtools-experimental/src/__tests__/inject-devtools-panel.test.ts index e2d2f7751f2..ff2f6224cbe 100644 --- a/packages/angular-query-devtools-experimental/src/__tests__/inject-devtools-panel.test.ts +++ b/packages/angular-query-devtools-experimental/src/__tests__/inject-devtools-panel.test.ts @@ -8,7 +8,7 @@ import { QueryClient, provideTanStackQuery, } from '@tanstack/angular-query-experimental' -import { beforeEach, describe, expect, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { injectDevtoolsPanel } from '../inject-devtools-panel' const mockDevtoolsPanelInstance = { diff --git a/packages/angular-query-devtools-experimental/tsconfig.json b/packages/angular-query-devtools-experimental/tsconfig.json index 5982d4bf3e2..330cf1d7596 100644 --- a/packages/angular-query-devtools-experimental/tsconfig.json +++ b/packages/angular-query-devtools-experimental/tsconfig.json @@ -8,8 +8,7 @@ "noPropertyAccessFromIndexSignature": true, "noFallthroughCasesInSwitch": true, "useDefineForClassFields": false, - "target": "ES2022", - "types": ["vitest/globals"] + "target": "ES2022" }, "include": ["src", "*.config.js", "*.config.ts", "package.json"], "references": [ diff --git a/packages/angular-query-experimental/eslint.config.js b/packages/angular-query-experimental/eslint.config.js index 84b0029c8e7..a86775ff270 100644 --- a/packages/angular-query-experimental/eslint.config.js +++ b/packages/angular-query-experimental/eslint.config.js @@ -1,6 +1,7 @@ // @ts-check import pluginJsdoc from 'eslint-plugin-jsdoc' +import vitest from '@vitest/eslint-plugin' import rootConfig from './root.eslint.config.js' export default [ @@ -28,4 +29,13 @@ export default [ ], }, }, + { + plugins: { vitest }, + rules: { + 'vitest/expect-expect': [ + 'error', + { assertFunctionNames: ['expect', 'expectSignals'] }, + ], + }, + }, ] diff --git a/packages/angular-query-experimental/package.json b/packages/angular-query-experimental/package.json index b1a73b3976e..5b33372bd5e 100644 --- a/packages/angular-query-experimental/package.json +++ b/packages/angular-query-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/angular-query-experimental", - "version": "5.74.6", + "version": "5.75.4", "description": "Signals for managing, caching and syncing asynchronous and remote data in Angular", "author": "Arnoud de Vries", "license": "MIT", diff --git a/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test-d.ts b/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test-d.ts new file mode 100644 index 00000000000..047da657e21 --- /dev/null +++ b/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test-d.ts @@ -0,0 +1,41 @@ +import { TestBed } from '@angular/core/testing' +import { afterEach, beforeEach, describe, expectTypeOf, test, vi } from 'vitest' +import { provideExperimentalZonelessChangeDetection } from '@angular/core' +import { QueryClient, injectInfiniteQuery, provideTanStackQuery } from '..' +import { infiniteFetcher } from './test-utils' +import type { InfiniteData } from '@tanstack/query-core' + +describe('injectInfiniteQuery', () => { + let queryClient: QueryClient + + beforeEach(() => { + queryClient = new QueryClient() + vi.useFakeTimers() + TestBed.configureTestingModule({ + providers: [ + provideExperimentalZonelessChangeDetection(), + provideTanStackQuery(queryClient), + ], + }) + }) + + afterEach(() => { + vi.useRealTimers() + }) + + test('should narrow type after isSuccess', async () => { + const query = TestBed.runInInjectionContext(() => { + return injectInfiniteQuery(() => ({ + queryKey: ['infiniteQuery'], + queryFn: infiniteFetcher, + initialPageParam: 0, + getNextPageParam: () => 12, + })) + }) + + if (query.isSuccess()) { + const data = query.data() + expectTypeOf(data).toEqualTypeOf>() + } + }) +}) diff --git a/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test.ts b/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test.ts index c91c004294f..6c7c8d1d51e 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-infinite-query.test.ts @@ -1,5 +1,5 @@ import { TestBed } from '@angular/core/testing' -import { afterEach } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' import { Injector, provideExperimentalZonelessChangeDetection, diff --git a/packages/angular-query-experimental/src/__tests__/inject-is-fetching.test.ts b/packages/angular-query-experimental/src/__tests__/inject-is-fetching.test.ts index fbbe9a6f003..1e42ddc1242 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-is-fetching.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-is-fetching.test.ts @@ -1,5 +1,5 @@ import { TestBed } from '@angular/core/testing' -import { beforeEach, describe, expect } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' import { Injector, provideExperimentalZonelessChangeDetection, diff --git a/packages/angular-query-experimental/src/__tests__/inject-is-mutating.test.ts b/packages/angular-query-experimental/src/__tests__/inject-is-mutating.test.ts index ccfa8e46407..73a3ce5f241 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-is-mutating.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-is-mutating.test.ts @@ -1,4 +1,4 @@ -import { beforeEach, describe } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' import { TestBed } from '@angular/core/testing' import { Injector, diff --git a/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test-d.ts b/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test-d.ts index 338c464a9b0..0fbd5d8f652 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test-d.ts @@ -1,4 +1,4 @@ -import { describe, expectTypeOf } from 'vitest' +import { describe, expectTypeOf, it } from 'vitest' import { injectMutationState } from '..' import type { MutationState, MutationStatus } from '..' diff --git a/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test.ts b/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test.ts index e7ae9dec8a8..44e6eeab906 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-mutation-state.test.ts @@ -6,7 +6,7 @@ import { signal, } from '@angular/core' import { TestBed } from '@angular/core/testing' -import { describe, expect, test, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' import { By } from '@angular/platform-browser' import { QueryClient, diff --git a/packages/angular-query-experimental/src/__tests__/inject-mutation.test-d.ts b/packages/angular-query-experimental/src/__tests__/inject-mutation.test-d.ts index 2cfac635ede..b3aa0a96dc1 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-mutation.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-mutation.test-d.ts @@ -1,4 +1,4 @@ -import { describe, expectTypeOf } from 'vitest' +import { describe, expectTypeOf, test } from 'vitest' import { injectMutation } from '..' import { successMutator } from './test-utils' import type { Signal } from '@angular/core' diff --git a/packages/angular-query-experimental/src/__tests__/inject-mutation.test.ts b/packages/angular-query-experimental/src/__tests__/inject-mutation.test.ts index a15daa54db3..f595095c817 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-mutation.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-mutation.test.ts @@ -6,7 +6,7 @@ import { signal, } from '@angular/core' import { TestBed } from '@angular/core/testing' -import { describe, expect, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' import { By } from '@angular/platform-browser' import { QueryClient, injectMutation, provideTanStackQuery } from '..' import { diff --git a/packages/angular-query-experimental/src/__tests__/inject-query.test-d.ts b/packages/angular-query-experimental/src/__tests__/inject-query.test-d.ts index a49ca421cf2..ded20a5803f 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-query.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-query.test-d.ts @@ -1,4 +1,4 @@ -import { describe, expectTypeOf, it } from 'vitest' +import { describe, expectTypeOf, it, test } from 'vitest' import { injectQuery, queryOptions } from '..' import { simpleFetcher } from './test-utils' import type { Signal } from '@angular/core' @@ -108,11 +108,14 @@ describe('initialData', () => { }) describe('structuralSharing', () => { - it('should restrict to same types', () => { + it('should be able to use structuralSharing with unknown types', () => { + // https://github.com/TanStack/query/issues/6525#issuecomment-1938411343 injectQuery(() => ({ queryKey: ['key'], queryFn: () => 5, - structuralSharing: (_oldData, newData) => { + structuralSharing: (oldData, newData) => { + expectTypeOf(oldData).toBeUnknown() + expectTypeOf(newData).toBeUnknown() return newData }, })) diff --git a/packages/angular-query-experimental/src/__tests__/inject-query.test.ts b/packages/angular-query-experimental/src/__tests__/inject-query.test.ts index 51d20efaced..2f7d5f4f457 100644 --- a/packages/angular-query-experimental/src/__tests__/inject-query.test.ts +++ b/packages/angular-query-experimental/src/__tests__/inject-query.test.ts @@ -8,7 +8,15 @@ import { signal, } from '@angular/core' import { TestBed } from '@angular/core/testing' -import { afterEach, describe, expect, vi } from 'vitest' +import { + afterEach, + beforeEach, + describe, + expect, + expectTypeOf, + test, + vi, +} from 'vitest' import { QueryCache, QueryClient, injectQuery, provideTanStackQuery } from '..' import { delayedFetcher, diff --git a/packages/angular-query-experimental/src/__tests__/mutation-options.test-d.ts b/packages/angular-query-experimental/src/__tests__/mutation-options.test-d.ts index 0aea5556a87..e3412fe75f2 100644 --- a/packages/angular-query-experimental/src/__tests__/mutation-options.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/mutation-options.test-d.ts @@ -1,17 +1,28 @@ +import { assertType, describe, expectTypeOf, test } from 'vitest' import { mutationOptions } from '../mutation-options' describe('mutationOptions', () => { test('should not allow excess properties', () => { - return mutationOptions({ - mutationFn: () => Promise.resolve(5), - mutationKey: ['key'], - // @ts-expect-error this is a good error, because onMutates does not exist! - onMutates: 1000, - }) + assertType>([ + { + mutationFn: () => Promise.resolve(5), + mutationKey: ['key'], + // @ts-expect-error this is a good error, because onMutates does not exist! + onMutates: 1000, + }, + ]) + assertType>([ + { + mutationFn: () => Promise.resolve(5), + mutationKey: ['key'], + // @ts-expect-error this is a good error, because onMutates does not exist! + onMutates: 1000, + }, + ]) }) test('should infer types for callbacks', () => { - return mutationOptions({ + mutationOptions({ mutationFn: () => Promise.resolve(5), mutationKey: ['key'], onSuccess: (data) => { diff --git a/packages/angular-query-experimental/src/__tests__/providers.test.ts b/packages/angular-query-experimental/src/__tests__/providers.test.ts index 266aa40a352..a4d9b9da3f5 100644 --- a/packages/angular-query-experimental/src/__tests__/providers.test.ts +++ b/packages/angular-query-experimental/src/__tests__/providers.test.ts @@ -1,4 +1,4 @@ -import { beforeEach, describe, expect, test, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, it, test, vi } from 'vitest' import { QueryClient } from '@tanstack/query-core' import { TestBed } from '@angular/core/testing' import { diff --git a/packages/angular-query-experimental/src/__tests__/query-options.test-d.ts b/packages/angular-query-experimental/src/__tests__/query-options.test-d.ts index 0d49180b4a1..350ab3dda28 100644 --- a/packages/angular-query-experimental/src/__tests__/query-options.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/query-options.test-d.ts @@ -1,19 +1,14 @@ -import { assertType, describe, expectTypeOf } from 'vitest' +import { assertType, describe, expectTypeOf, test } from 'vitest' import { QueryClient, dataTagSymbol, injectQuery, queryOptions } from '..' import type { Signal } from '@angular/core' describe('queryOptions', () => { test('should not allow excess properties', () => { - return queryOptions({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - // @ts-expect-error this is a good error, because stallTime does not exist! - stallTime: 1000, - }) + expectTypeOf(queryOptions).parameter(0).not.toHaveProperty('stallTime') }) test('should infer types for callbacks', () => { - return queryOptions({ + queryOptions({ queryKey: ['key'], queryFn: () => Promise.resolve(5), staleTime: 1000, @@ -24,7 +19,7 @@ describe('queryOptions', () => { }) test('should allow undefined response in initialData', () => { - return (id: string | null) => + const options = (id: string | null) => queryOptions({ queryKey: ['todo', id], queryFn: () => @@ -40,6 +35,10 @@ describe('queryOptions', () => { title: 'Initial Data', }, }) + + expectTypeOf(options(null).initialData).returns.toEqualTypeOf< + { id: string; title: string } | undefined + >() }) }) diff --git a/packages/angular-query-experimental/src/__tests__/signal-proxy.test.ts b/packages/angular-query-experimental/src/__tests__/signal-proxy.test.ts index f784554e90a..d06aef67230 100644 --- a/packages/angular-query-experimental/src/__tests__/signal-proxy.test.ts +++ b/packages/angular-query-experimental/src/__tests__/signal-proxy.test.ts @@ -1,5 +1,5 @@ import { isSignal, signal } from '@angular/core' -import { describe } from 'vitest' +import { describe, expect, test } from 'vitest' import { signalProxy } from '../signal-proxy' describe('signalProxy', () => { diff --git a/packages/angular-query-experimental/src/__tests__/test-utils.ts b/packages/angular-query-experimental/src/__tests__/test-utils.ts index bb3f5bae83c..9fdd01f943c 100644 --- a/packages/angular-query-experimental/src/__tests__/test-utils.ts +++ b/packages/angular-query-experimental/src/__tests__/test-utils.ts @@ -1,5 +1,6 @@ import { isSignal, untracked } from '@angular/core' import { SIGNAL, signalSetFn } from '@angular/core/primitives/signals' +import { expect } from 'vitest' import type { InputSignal, Signal } from '@angular/core' import type { ComponentFixture } from '@angular/core/testing' diff --git a/packages/angular-query-experimental/src/index.ts b/packages/angular-query-experimental/src/index.ts index da68067d33c..360be005e66 100644 --- a/packages/angular-query-experimental/src/index.ts +++ b/packages/angular-query-experimental/src/index.ts @@ -8,24 +8,57 @@ export * from './types' export type { DefinedInitialDataOptions, UndefinedInitialDataOptions, + UnusedSkipTokenOptions, } from './query-options' export { queryOptions } from './query-options' -export { mutationOptions } from './mutation-options' + export type { CreateMutationOptions } from './mutation-options' +export { mutationOptions } from './mutation-options' export type { DefinedInitialDataInfiniteOptions, UndefinedInitialDataInfiniteOptions, + UnusedSkipTokenInfiniteOptions, } from './infinite-query-options' export { infiniteQueryOptions } from './infinite-query-options' -export * from './inject-infinite-query' -export * from './inject-is-fetching' -export * from './inject-is-mutating' -export * from './inject-is-restoring' -export * from './inject-mutation' -export * from './inject-mutation-state' -export * from './inject-queries' -export * from './inject-query' -export * from './inject-query-client' -export * from './providers' +export type { InjectInfiniteQueryOptions } from './inject-infinite-query' +export { injectInfiniteQuery } from './inject-infinite-query' + +export type { InjectIsFetchingOptions } from './inject-is-fetching' +export { injectIsFetching } from './inject-is-fetching' + +export type { InjectIsMutatingOptions } from './inject-is-mutating' +export { injectIsMutating } from './inject-is-mutating' + +export { injectIsRestoring, provideIsRestoring } from './inject-is-restoring' + +export type { InjectMutationOptions } from './inject-mutation' +export { injectMutation } from './inject-mutation' + +export type { InjectMutationStateOptions } from './inject-mutation-state' +export { injectMutationState } from './inject-mutation-state' + +export type { QueriesOptions, QueriesResults } from './inject-queries' +export { injectQueries } from './inject-queries' + +export type { InjectQueryOptions } from './inject-query' +export { injectQuery } from './inject-query' + +export { injectQueryClient } from './inject-query-client' + +export type { + DeveloperToolsFeature, + DevtoolsOptions, + PersistQueryClientFeature, + QueryFeature, + QueryFeatureKind, + QueryFeatures, +} from './providers' +export { + provideQueryClient, + provideTanStackQuery, + queryFeature, + queryFeatures, + withDevtools, +} from './providers' diff --git a/packages/angular-query-experimental/src/infinite-query-options.ts b/packages/angular-query-experimental/src/infinite-query-options.ts index 266df37910e..5b8844c78f6 100644 --- a/packages/angular-query-experimental/src/infinite-query-options.ts +++ b/packages/angular-query-experimental/src/infinite-query-options.ts @@ -2,13 +2,13 @@ import type { DataTag, DefaultError, InfiniteData, + InitialDataFunction, + OmitKeyof, QueryKey, + SkipToken, } from '@tanstack/query-core' -import type { CreateInfiniteQueryOptions, NonUndefinedGuard } from './types' +import type { CreateInfiniteQueryOptions } from './types' -/** - * @public - */ export type UndefinedInitialDataInfiniteOptions< TQueryFnData, TError = DefaultError, @@ -23,12 +23,46 @@ export type UndefinedInitialDataInfiniteOptions< TQueryKey, TPageParam > & { - initialData?: undefined + initialData?: + | undefined + | NonUndefinedGuard> + | InitialDataFunction< + NonUndefinedGuard> + > } -/** - * @public - */ +export type UnusedSkipTokenInfiniteOptions< + TQueryFnData, + TError = DefaultError, + TData = InfiniteData, + TQueryKey extends QueryKey = QueryKey, + TPageParam = unknown, +> = OmitKeyof< + CreateInfiniteQueryOptions< + TQueryFnData, + TError, + TData, + TQueryFnData, + TQueryKey, + TPageParam + >, + 'queryFn' +> & { + queryFn?: Exclude< + CreateInfiniteQueryOptions< + TQueryFnData, + TError, + TData, + TQueryFnData, + TQueryKey, + TPageParam + >['queryFn'], + SkipToken | undefined + > +} + +type NonUndefinedGuard = T extends undefined ? never : T + export type DefinedInitialDataInfiniteOptions< TQueryFnData, TError = DefaultError, @@ -46,6 +80,7 @@ export type DefinedInitialDataInfiniteOptions< initialData: | NonUndefinedGuard> | (() => NonUndefinedGuard>) + | undefined } /** @@ -77,7 +112,39 @@ export function infiniteQueryOptions< TQueryKey, TPageParam > & { - queryKey: DataTag> + queryKey: DataTag, TError> +} + +/** + * Allows to share and re-use infinite query options in a type-safe way. + * + * The `queryKey` will be tagged with the type from `queryFn`. + * @param options - The infinite query options to tag with the type from `queryFn`. + * @returns The tagged infinite query options. + * @public + */ +export function infiniteQueryOptions< + TQueryFnData, + TError = DefaultError, + TData = InfiniteData, + TQueryKey extends QueryKey = QueryKey, + TPageParam = unknown, +>( + options: UnusedSkipTokenInfiniteOptions< + TQueryFnData, + TError, + TData, + TQueryKey, + TPageParam + >, +): UnusedSkipTokenInfiniteOptions< + TQueryFnData, + TError, + TData, + TQueryKey, + TPageParam +> & { + queryKey: DataTag, TError> } /** @@ -109,7 +176,7 @@ export function infiniteQueryOptions< TQueryKey, TPageParam > & { - queryKey: DataTag> + queryKey: DataTag, TError> } /** diff --git a/packages/angular-query-experimental/src/inject-is-restoring.ts b/packages/angular-query-experimental/src/inject-is-restoring.ts index c57a15fbb71..92e50d4342f 100644 --- a/packages/angular-query-experimental/src/inject-is-restoring.ts +++ b/packages/angular-query-experimental/src/inject-is-restoring.ts @@ -2,12 +2,20 @@ import { InjectionToken, Injector, assertInInjectionContext, - computed, inject, + signal, } from '@angular/core' import type { Provider, Signal } from '@angular/core' -const IS_RESTORING = new InjectionToken>('') +const IS_RESTORING = new InjectionToken( + typeof ngDevMode === 'undefined' || ngDevMode + ? 'TANSTACK_QUERY_IS_RESTORING' + : '', + { + // Default value when not provided + factory: () => signal(false).asReadonly(), + }, +) /** * The `Injector` in which to create the isRestoring signal. @@ -19,21 +27,15 @@ interface InjectIsRestoringOptions { } /** - * Injects a signal that tracks whether a restore is currently in progress. {@link injectQuery} and friends also check this internally to avoid race conditions between the restore and mounting queries. + * Injects a signal that tracks whether a restore is currently in progress. {@link injectQuery} and friends also check this internally to avoid race conditions between the restore and initializing queries. * @param options - Options for injectIsRestoring. * @returns signal with boolean that indicates whether a restore is in progress. * @public */ -export function injectIsRestoring( - options?: InjectIsRestoringOptions, -): Signal { +export function injectIsRestoring(options?: InjectIsRestoringOptions) { !options?.injector && assertInInjectionContext(injectIsRestoring) const injector = options?.injector ?? inject(Injector) - return injector.get( - IS_RESTORING, - computed(() => false), - { optional: true }, - ) + return injector.get(IS_RESTORING) } /** diff --git a/packages/angular-query-experimental/src/query-options.ts b/packages/angular-query-experimental/src/query-options.ts index 3dc91a6d0aa..2c48f49711b 100644 --- a/packages/angular-query-experimental/src/query-options.ts +++ b/packages/angular-query-experimental/src/query-options.ts @@ -2,34 +2,55 @@ import type { DataTag, DefaultError, InitialDataFunction, + OmitKeyof, + QueryFunction, QueryKey, + SkipToken, } from '@tanstack/query-core' -import type { CreateQueryOptions, NonUndefinedGuard } from './types' +import type { CreateQueryOptions } from './types' -/** - * @public - */ export type UndefinedInitialDataOptions< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = CreateQueryOptions & { - initialData?: undefined | InitialDataFunction> + initialData?: + | undefined + | InitialDataFunction> + | NonUndefinedGuard } -/** - * @public - */ +export type UnusedSkipTokenOptions< + TQueryFnData = unknown, + TError = DefaultError, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +> = OmitKeyof< + CreateQueryOptions, + 'queryFn' +> & { + queryFn?: Exclude< + CreateQueryOptions['queryFn'], + SkipToken | undefined + > +} + +type NonUndefinedGuard = T extends undefined ? never : T + export type DefinedInitialDataOptions< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, -> = CreateQueryOptions & { +> = Omit< + CreateQueryOptions, + 'queryFn' +> & { initialData: | NonUndefinedGuard | (() => NonUndefinedGuard) + queryFn?: QueryFunction } /** @@ -62,7 +83,40 @@ export function queryOptions< >( options: DefinedInitialDataOptions, ): DefinedInitialDataOptions & { - queryKey: DataTag + queryKey: DataTag +} + +/** + * Allows to share and re-use query options in a type-safe way. + * + * The `queryKey` will be tagged with the type from `queryFn`. + * + * **Example** + * + * ```ts + * const { queryKey } = queryOptions({ + * queryKey: ['key'], + * queryFn: () => Promise.resolve(5), + * // ^? Promise + * }) + * + * const queryClient = new QueryClient() + * const data = queryClient.getQueryData(queryKey) + * // ^? number | undefined + * ``` + * @param options - The query options to tag with the type from `queryFn`. + * @returns The tagged query options. + * @public + */ +export function queryOptions< + TQueryFnData = unknown, + TError = DefaultError, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +>( + options: UnusedSkipTokenOptions, +): UnusedSkipTokenOptions & { + queryKey: DataTag } /** @@ -95,7 +149,7 @@ export function queryOptions< >( options: UndefinedInitialDataOptions, ): UndefinedInitialDataOptions & { - queryKey: DataTag + queryKey: DataTag } /** diff --git a/packages/angular-query-experimental/src/types.ts b/packages/angular-query-experimental/src/types.ts index 5c0e0964577..8cdb8209652 100644 --- a/packages/angular-query-experimental/src/types.ts +++ b/packages/angular-query-experimental/src/types.ts @@ -145,7 +145,8 @@ export type DefinedCreateQueryResult< export type CreateInfiniteQueryResult< TData = unknown, TError = DefaultError, -> = MapToSignals> +> = BaseQueryNarrowing & + MapToSignals> /** * @public @@ -308,8 +309,3 @@ export type CreateMutationResult< >, > = BaseMutationNarrowing & MapToSignals> - -/** - * @public - */ -export type NonUndefinedGuard = T extends undefined ? never : T diff --git a/packages/angular-query-experimental/tsconfig.json b/packages/angular-query-experimental/tsconfig.json index 67e70b897ca..fa57271ae75 100644 --- a/packages/angular-query-experimental/tsconfig.json +++ b/packages/angular-query-experimental/tsconfig.json @@ -8,8 +8,7 @@ "noPropertyAccessFromIndexSignature": true, "noFallthroughCasesInSwitch": true, "useDefineForClassFields": false, - "target": "ES2022", - "types": ["vitest/globals"] + "target": "ES2022" }, "include": ["src", "*.config.js", "*.config.ts", "package.json"], "references": [{ "path": "../query-core" }, { "path": "../query-devtools" }] diff --git a/packages/angular-query-persist-client/src/with-persist-query-client.ts b/packages/angular-query-persist-client/src/with-persist-query-client.ts index 2896cbc7b27..ceeeed01cd4 100644 --- a/packages/angular-query-persist-client/src/with-persist-query-client.ts +++ b/packages/angular-query-persist-client/src/with-persist-query-client.ts @@ -55,10 +55,11 @@ type PersistQueryClientOptions = { export function withPersistQueryClient( persistQueryClientOptions: PersistQueryClientOptions, ): PersistQueryClientFeature { - const isRestoring = signal(false) + const isRestoring = signal(true) const providers = [ provideIsRestoring(isRestoring.asReadonly()), { + // Do not use provideEnvironmentInitializer while Angular < v19 is supported provide: ENVIRONMENT_INITIALIZER, multi: true, useValue: () => { @@ -66,7 +67,6 @@ export function withPersistQueryClient( const destroyRef = inject(DestroyRef) const queryClient = inject(QueryClient) - isRestoring.set(true) const { onSuccess, onError, persistOptions } = persistQueryClientOptions const options = { queryClient, ...persistOptions } persistQueryClientRestore(options) diff --git a/packages/angular-query-persist-client/tsconfig.json b/packages/angular-query-persist-client/tsconfig.json index 1c0f8de7c8e..85cdab026b9 100644 --- a/packages/angular-query-persist-client/tsconfig.json +++ b/packages/angular-query-persist-client/tsconfig.json @@ -9,8 +9,7 @@ "noPropertyAccessFromIndexSignature": true, "noFallthroughCasesInSwitch": true, "useDefineForClassFields": false, - "target": "ES2022", - "types": ["vitest/globals"] + "target": "ES2022" }, "include": ["src", "*.config.js", "*.config.ts", "package.json"], "references": [ diff --git a/packages/eslint-plugin-query/eslint.config.js b/packages/eslint-plugin-query/eslint.config.js index cb04452c999..b6464bd8c98 100644 --- a/packages/eslint-plugin-query/eslint.config.js +++ b/packages/eslint-plugin-query/eslint.config.js @@ -8,6 +8,7 @@ export default [ { plugins: { vitest }, rules: { + ...vitest.configs.recommended.rules, 'vitest/expect-expect': [ 'warn', { diff --git a/packages/eslint-plugin-query/package.json b/packages/eslint-plugin-query/package.json index 53a3918fc44..c9df4ba4e1e 100644 --- a/packages/eslint-plugin-query/package.json +++ b/packages/eslint-plugin-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/eslint-plugin-query", - "version": "5.73.3", + "version": "5.74.7", "description": "ESLint plugin for TanStack Query", "author": "Eliya Cohen", "license": "MIT", diff --git a/packages/query-async-storage-persister/package.json b/packages/query-async-storage-persister/package.json index a50662bc574..b3aadf4d431 100644 --- a/packages/query-async-storage-persister/package.json +++ b/packages/query-async-storage-persister/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/query-async-storage-persister", - "version": "5.74.6", + "version": "5.75.4", "description": "A persister for asynchronous storages, to be used with TanStack/Query", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/query-broadcast-client-experimental/package.json b/packages/query-broadcast-client-experimental/package.json index fa8dd3fb5a1..713f318110c 100644 --- a/packages/query-broadcast-client-experimental/package.json +++ b/packages/query-broadcast-client-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/query-broadcast-client-experimental", - "version": "5.74.4", + "version": "5.75.4", "description": "An experimental plugin to for broadcasting the state of your queryClient between browser tabs/windows", "author": "tannerlinsley", "license": "MIT", @@ -28,6 +28,8 @@ "test:types:ts56": "node ../../node_modules/typescript56/lib/tsc.js --build", "test:types:ts57": "node ../../node_modules/typescript57/lib/tsc.js --build", "test:types:tscurrent": "tsc --build", + "test:lib": "vitest", + "test:lib:dev": "pnpm run test:lib --watch", "test:build": "publint --strict && attw --pack", "build": "tsup --tsconfig tsconfig.prod.json" }, @@ -60,6 +62,8 @@ "broadcast-channel": "^7.0.0" }, "devDependencies": { + "@testing-library/react": "^16.1.0", + "@vitejs/plugin-react": "^4.3.4", "npm-run-all2": "^5.0.0" } } diff --git a/packages/query-broadcast-client-experimental/src/__tests__/index.test.ts b/packages/query-broadcast-client-experimental/src/__tests__/index.test.ts new file mode 100644 index 00000000000..763a7edd58e --- /dev/null +++ b/packages/query-broadcast-client-experimental/src/__tests__/index.test.ts @@ -0,0 +1,31 @@ +import { QueryClient } from '@tanstack/query-core' +import { beforeEach, describe, expect, it } from 'vitest' +import { broadcastQueryClient } from '..' +import type { QueryCache } from '@tanstack/query-core' + +describe('broadcastQueryClient', () => { + let queryClient: QueryClient + let queryCache: QueryCache + + beforeEach(() => { + queryClient = new QueryClient() + queryCache = queryClient.getQueryCache() + }) + + it('should subscribe to the query cache', async () => { + broadcastQueryClient({ + queryClient, + broadcastChannel: 'test_channel', + }) + expect(queryCache.hasListeners()).toBe(true) + }) + + it('should not have any listeners after cleanup', async () => { + const unsubscribe = broadcastQueryClient({ + queryClient, + broadcastChannel: 'test_channel', + }) + unsubscribe() + expect(queryCache.hasListeners()).toBe(false) + }) +}) diff --git a/packages/query-broadcast-client-experimental/src/index.ts b/packages/query-broadcast-client-experimental/src/index.ts index f49a09b7efc..e102b3c0b01 100644 --- a/packages/query-broadcast-client-experimental/src/index.ts +++ b/packages/query-broadcast-client-experimental/src/index.ts @@ -12,7 +12,7 @@ export function broadcastQueryClient({ queryClient, broadcastChannel = 'tanstack-query', options, -}: BroadcastQueryClientOptions) { +}: BroadcastQueryClientOptions): () => void { let transaction = false const tx = (cb: () => void) => { transaction = true @@ -27,13 +27,13 @@ export function broadcastQueryClient({ const queryCache = queryClient.getQueryCache() - queryClient.getQueryCache().subscribe((queryEvent) => { + const unsubscribe = queryClient.getQueryCache().subscribe((queryEvent) => { if (transaction) { return } const { - query: { queryHash, queryKey, state }, + query: { queryHash, queryKey, state, observers }, } = queryEvent if (queryEvent.type === 'updated' && queryEvent.action.type === 'success') { @@ -45,13 +45,21 @@ export function broadcastQueryClient({ }) } - if (queryEvent.type === 'removed') { + if (queryEvent.type === 'removed' && observers.length > 0) { channel.postMessage({ type: 'removed', queryHash, queryKey, }) } + + if (queryEvent.type === 'added') { + channel.postMessage({ + type: 'added', + queryHash, + queryKey, + }) + } }) channel.onmessage = (action) => { @@ -62,9 +70,9 @@ export function broadcastQueryClient({ tx(() => { const { type, queryHash, queryKey, state } = action - if (type === 'updated') { - const query = queryCache.get(queryHash) + const query = queryCache.get(queryHash) + if (type === 'updated') { if (query) { query.setState(state) return @@ -79,12 +87,27 @@ export function broadcastQueryClient({ state, ) } else if (type === 'removed') { - const query = queryCache.get(queryHash) - if (query) { queryCache.remove(query) } + } else if (type === 'added') { + if (query) { + query.setState(state) + return + } + queryCache.build( + queryClient, + { + queryKey, + queryHash, + }, + state, + ) } }) } + return () => { + unsubscribe() + channel.close() + } } diff --git a/packages/query-broadcast-client-experimental/test-setup.ts b/packages/query-broadcast-client-experimental/test-setup.ts new file mode 100644 index 00000000000..d82b1a4f854 --- /dev/null +++ b/packages/query-broadcast-client-experimental/test-setup.ts @@ -0,0 +1,14 @@ +import '@testing-library/jest-dom/vitest' +import { act, cleanup as cleanupRTL } from '@testing-library/react' +import { afterEach } from 'vitest' +import { notifyManager } from '@tanstack/query-core' + +// https://testing-library.com/docs/react-testing-library/api#cleanup +afterEach(() => { + cleanupRTL() +}) + +// Wrap notifications with act to make sure React knows about React Query updates +notifyManager.setNotifyFunction((fn) => { + act(fn) +}) diff --git a/packages/query-broadcast-client-experimental/vite.config.ts b/packages/query-broadcast-client-experimental/vite.config.ts new file mode 100644 index 00000000000..01ab3b00dfc --- /dev/null +++ b/packages/query-broadcast-client-experimental/vite.config.ts @@ -0,0 +1,30 @@ +import { defineConfig } from 'vitest/config' +import react from '@vitejs/plugin-react' + +import packageJson from './package.json' + +export default defineConfig({ + plugins: [react()], + // fix from https://github.com/vitest-dev/vitest/issues/6992#issuecomment-2509408660 + resolve: { + conditions: ['@tanstack/custom-condition'], + }, + environments: { + ssr: { + resolve: { + conditions: ['@tanstack/custom-condition'], + }, + }, + }, + test: { + name: packageJson.name, + dir: './src', + watch: false, + environment: 'jsdom', + setupFiles: ['test-setup.ts'], + coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] }, + typecheck: { enabled: true }, + restoreMocks: true, + retry: process.env.CI ? 3 : 0, + }, +}) diff --git a/packages/query-codemods/eslint.config.js b/packages/query-codemods/eslint.config.js index c3c009f41e8..19a16c3c1e8 100644 --- a/packages/query-codemods/eslint.config.js +++ b/packages/query-codemods/eslint.config.js @@ -1,5 +1,6 @@ // @ts-check +import vitest from '@vitest/eslint-plugin' import rootConfig from './root.eslint.config.js' export default [ diff --git a/packages/query-core/package.json b/packages/query-core/package.json index 836de5e7e61..63fe2ba3dac 100644 --- a/packages/query-core/package.json +++ b/packages/query-core/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/query-core", - "version": "5.74.4", + "version": "5.75.4", "description": "The framework agnostic core that powers TanStack Query", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/query-core/src/__tests__/notifyManager.test.tsx b/packages/query-core/src/__tests__/notifyManager.test.tsx index 20a3103eca1..deb070f2c5c 100644 --- a/packages/query-core/src/__tests__/notifyManager.test.tsx +++ b/packages/query-core/src/__tests__/notifyManager.test.tsx @@ -1,4 +1,13 @@ -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { + afterEach, + assertType, + beforeEach, + describe, + expect, + expectTypeOf, + it, + vi, +} from 'vitest' import { createNotifyManager } from '../notifyManager' import { sleep } from './utils' @@ -81,10 +90,13 @@ describe('notifyManager', () => { // now someFn expect to be called with args [a: string, b: number] const someFn = notifyManagerTest.batchCalls(fn) - someFn('im happy', 4) - - // @ts-expect-error - someFn('im not happy', false) + expectTypeOf(someFn).parameters.toEqualTypeOf>() + assertType>(['im happy', 4]) + assertType>([ + 'im not happy', + // @ts-expect-error + false, + ]) }) it('should use custom batch notify function', async () => { diff --git a/packages/query-core/src/__tests__/query.test.tsx b/packages/query-core/src/__tests__/query.test.tsx index 03a0222b7fe..6d7485a6d7f 100644 --- a/packages/query-core/src/__tests__/query.test.tsx +++ b/packages/query-core/src/__tests__/query.test.tsx @@ -1003,7 +1003,7 @@ describe('query', () => { const key = queryKey() const queryFn = vi - .fn() + .fn<() => Promise>() .mockImplementation(() => sleep(10).then(() => 'data')) queryClient.prefetchQuery({ diff --git a/packages/query-core/src/__tests__/queryClient.test-d.tsx b/packages/query-core/src/__tests__/queryClient.test-d.tsx index c9d953a973d..8a3be1a9e23 100644 --- a/packages/query-core/src/__tests__/queryClient.test-d.tsx +++ b/packages/query-core/src/__tests__/queryClient.test-d.tsx @@ -1,4 +1,4 @@ -import { describe, expectTypeOf, it } from 'vitest' +import { assertType, describe, expectTypeOf, it } from 'vitest' import { QueryClient } from '../queryClient' import type { MutationFilters, QueryFilters, Updater } from '../utils' import type { Mutation } from '../mutation' @@ -42,10 +42,10 @@ describe('getQueryData', () => { }) it('should only allow Arrays to be passed', () => { - const queryKey = 'key' - const queryClient = new QueryClient() - // @ts-expect-error TS2345: Argument of type 'string' is not assignable to parameter of type 'QueryKey' - return queryClient.getQueryData(queryKey) + assertType>([ + // @ts-expect-error TS2345: Argument of type 'string' is not assignable to parameter of type 'QueryKey' + { queryKey: 'key' }, + ]) }) }) @@ -171,22 +171,26 @@ describe('fetchInfiniteQuery', () => { }) it('should not allow passing getNextPageParam without pages', () => { - new QueryClient().fetchInfiniteQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve('string'), - initialPageParam: 1, - getNextPageParam: () => 1, - }) + assertType>([ + { + queryKey: ['key'], + queryFn: () => Promise.resolve('string'), + initialPageParam: 1, + getNextPageParam: () => 1, + }, + ]) }) it('should not allow passing pages without getNextPageParam', () => { - // @ts-expect-error Property 'getNextPageParam' is missing - return new QueryClient().fetchInfiniteQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve('string'), - initialPageParam: 1, - pages: 5, - }) + assertType>([ + // @ts-expect-error Property 'getNextPageParam' is missing + { + queryKey: ['key'], + queryFn: () => Promise.resolve('string'), + initialPageParam: 1, + pages: 5, + }, + ]) }) }) @@ -506,26 +510,17 @@ describe('fully typed usage', () => { describe('invalidateQueries', () => { it('shows type error when queryKey is a wrong type in invalidateQueries', () => { - const queryClient = new QueryClient() - - queryClient.invalidateQueries() - - queryClient.invalidateQueries({ - queryKey: ['1'], - }) - - queryClient.invalidateQueries({ + assertType>([]) + assertType>([ + { queryKey: ['1'] }, + ]) + assertType>([ // @ts-expect-error - queryKey: '1', - }) - - queryClient.invalidateQueries({ - // @ts-expect-error - queryKey: {}, - }) + { queryKey: '1' }, + ]) }) it('needs queryKey to be an array (#8684)', () => { - new QueryClient().invalidateQueries({ + assertType>({ // @ts-expect-error key is not an array queryKey: { foo: true }, }) diff --git a/packages/query-core/src/__tests__/streamedQuery.test.tsx b/packages/query-core/src/__tests__/streamedQuery.test.tsx index c6f5c931074..eadeebea49d 100644 --- a/packages/query-core/src/__tests__/streamedQuery.test.tsx +++ b/packages/query-core/src/__tests__/streamedQuery.test.tsx @@ -18,11 +18,11 @@ describe('streamedQuery', () => { vi.useRealTimers() }) - function createAsyncNumberGenerator(amount: number) { + function createAsyncNumberGenerator(amount: number, start = 0) { return { async *[Symbol.asyncIterator]() { - let num = 0 - while (num < amount) { + let num = start + while (num < amount + start) { await sleep(50) yield num++ } @@ -74,6 +74,61 @@ describe('streamedQuery', () => { unsubscribe() }) + test('should allow Arrays to be returned from the stream', async () => { + const key = queryKey() + const observer = new QueryObserver(queryClient, { + queryKey: key, + queryFn: streamedQuery({ + queryFn: async function* () { + for await (const num of createAsyncNumberGenerator(3)) { + yield [num, num] as const + } + }, + }), + }) + + const unsubscribe = observer.subscribe(vi.fn()) + + expect(observer.getCurrentResult()).toMatchObject({ + status: 'pending', + fetchStatus: 'fetching', + data: undefined, + }) + + await vi.advanceTimersByTimeAsync(50) + + expect(observer.getCurrentResult()).toMatchObject({ + status: 'success', + fetchStatus: 'fetching', + data: [[0, 0]], + }) + + await vi.advanceTimersByTimeAsync(50) + + expect(observer.getCurrentResult()).toMatchObject({ + status: 'success', + fetchStatus: 'fetching', + data: [ + [0, 0], + [1, 1], + ], + }) + + await vi.advanceTimersByTimeAsync(50) + + expect(observer.getCurrentResult()).toMatchObject({ + status: 'success', + fetchStatus: 'idle', + data: [ + [0, 0], + [1, 1], + [2, 2], + ], + }) + + unsubscribe() + }) + test('should replace on refetch', async () => { const key = queryKey() const observer = new QueryObserver(queryClient, { @@ -183,6 +238,64 @@ describe('streamedQuery', () => { unsubscribe() }) + test('should support refetchMode replace', async () => { + const key = queryKey() + let offset = 0 + const observer = new QueryObserver(queryClient, { + queryKey: key, + queryFn: streamedQuery({ + queryFn: () => createAsyncNumberGenerator(2, offset), + refetchMode: 'replace', + }), + }) + + const unsubscribe = observer.subscribe(vi.fn()) + + expect(observer.getCurrentResult()).toMatchObject({ + status: 'pending', + fetchStatus: 'fetching', + data: undefined, + }) + + await vi.advanceTimersByTimeAsync(100) + + expect(observer.getCurrentResult()).toMatchObject({ + status: 'success', + fetchStatus: 'idle', + data: [0, 1], + }) + + offset = 100 + + void observer.refetch() + + await vi.advanceTimersByTimeAsync(10) + + expect(observer.getCurrentResult()).toMatchObject({ + status: 'success', + fetchStatus: 'fetching', + data: [0, 1], + }) + + await vi.advanceTimersByTimeAsync(40) + + expect(observer.getCurrentResult()).toMatchObject({ + status: 'success', + fetchStatus: 'fetching', + data: [0, 1], + }) + + await vi.advanceTimersByTimeAsync(50) + + expect(observer.getCurrentResult()).toMatchObject({ + status: 'success', + fetchStatus: 'idle', + data: [100, 101], + }) + + unsubscribe() + }) + test('should abort ongoing stream when refetch happens', async () => { const key = queryKey() const observer = new QueryObserver(queryClient, { diff --git a/packages/query-core/src/queryObserver.ts b/packages/query-core/src/queryObserver.ts index 6f01860d304..174dc72bf50 100644 --- a/packages/query-core/src/queryObserver.ts +++ b/packages/query-core/src/queryObserver.ts @@ -268,21 +268,13 @@ export class QueryObserver< result: QueryObserverResult, onPropTracked?: (key: keyof QueryObserverResult) => void, ): QueryObserverResult { - const trackedResult = {} as QueryObserverResult - - Object.keys(result).forEach((key) => { - Object.defineProperty(trackedResult, key, { - configurable: false, - enumerable: true, - get: () => { - this.trackProp(key as keyof QueryObserverResult) - onPropTracked?.(key as keyof QueryObserverResult) - return result[key as keyof QueryObserverResult] - }, - }) + return new Proxy(result, { + get: (target, key) => { + this.trackProp(key as keyof QueryObserverResult) + onPropTracked?.(key as keyof QueryObserverResult) + return Reflect.get(target, key) + }, }) - - return trackedResult } trackProp(key: keyof QueryObserverResult) { diff --git a/packages/query-core/src/streamedQuery.ts b/packages/query-core/src/streamedQuery.ts index 72f3e4883d1..b5b513434ca 100644 --- a/packages/query-core/src/streamedQuery.ts +++ b/packages/query-core/src/streamedQuery.ts @@ -6,46 +6,63 @@ import type { QueryFunction, QueryFunctionContext, QueryKey } from './types' * The query will be in a 'pending' state until the first chunk of data is received, but will go to 'success' after that. * The query will stay in fetchStatus 'fetching' until the stream ends. * @param queryFn - The function that returns an AsyncIterable to stream data from. - * @param refetchMode - Defaults to 'reset', which replaces data when a refetch happens. Set to 'append' to append new data to the existing data. + * @param refetchMode - Defines how re-fetches are handled. + * Defaults to `'reset'`, erases all data and puts the query back into `pending` state. + * Set to `'append'` to append new data to the existing data. + * Set to `'replace'` to write the data to the cache at the end of the stream. */ export function streamedQuery< TQueryFnData = unknown, TQueryKey extends QueryKey = QueryKey, >({ queryFn, - refetchMode, + refetchMode = 'reset', }: { queryFn: ( context: QueryFunctionContext, ) => AsyncIterable | Promise> - refetchMode?: 'append' | 'reset' + refetchMode?: 'append' | 'reset' | 'replace' }): QueryFunction, TQueryKey> { return async (context) => { - if (refetchMode !== 'append') { - const query = context.client - .getQueryCache() - .find({ queryKey: context.queryKey, exact: true }) - if (query && query.state.data !== undefined) { - query.setState({ - status: 'pending', - data: undefined, - error: null, - fetchStatus: 'fetching', - }) - } + const query = context.client + .getQueryCache() + .find({ queryKey: context.queryKey, exact: true }) + const isRefetch = !!query && query.state.data !== undefined + + if (isRefetch && refetchMode === 'reset') { + query.setState({ + status: 'pending', + data: undefined, + error: null, + fetchStatus: 'fetching', + }) } + + const result: Array = [] const stream = await queryFn(context) + for await (const chunk of stream) { if (context.signal.aborted) { break } - context.client.setQueryData>( - context.queryKey, - (prev = []) => { - return prev.concat(chunk) - }, - ) + + // don't append to the cache directly when replace-refetching + if (!isRefetch || refetchMode !== 'replace') { + context.client.setQueryData>( + context.queryKey, + (prev = []) => { + return prev.concat([chunk]) + }, + ) + } + result.push(chunk) + } + + // finalize result: replace-refetching needs to write to the cache + if (isRefetch && refetchMode === 'replace' && !context.signal.aborted) { + context.client.setQueryData>(context.queryKey, result) } + return context.client.getQueryData(context.queryKey)! } } diff --git a/packages/query-core/src/types.ts b/packages/query-core/src/types.ts index 0aafb2f1af1..dfde4ef8675 100644 --- a/packages/query-core/src/types.ts +++ b/packages/query-core/src/types.ts @@ -9,6 +9,11 @@ import type { QueryFilters, QueryTypeFilter, SkipToken } from './utils' import type { QueryCache } from './queryCache' import type { MutationCache } from './mutationCache' +export type DistributiveOmit< + TObject, + TKey extends keyof TObject, +> = TObject extends any ? Omit : never + export type OmitKeyof< TObject, TKey extends TStrictly extends 'safely' @@ -432,11 +437,6 @@ export interface QueryObserverOptions< export type WithRequired = TTarget & { [_ in TKey]: {} } -export type Optional = Pick< - Partial, - TKey -> & - OmitKeyof export type DefaultedQueryObserverOptions< TQueryFnData = unknown, diff --git a/packages/query-devtools/package.json b/packages/query-devtools/package.json index 9d9ba4341d7..4414e038941 100644 --- a/packages/query-devtools/package.json +++ b/packages/query-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/query-devtools", - "version": "5.74.6", + "version": "5.74.7", "description": "Developer tools to interact with and visualize the TanStack Query cache", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/query-persist-client-core/package.json b/packages/query-persist-client-core/package.json index b713eebf474..0de2032e844 100644 --- a/packages/query-persist-client-core/package.json +++ b/packages/query-persist-client-core/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/query-persist-client-core", - "version": "5.74.6", + "version": "5.75.4", "description": "Set of utilities for interacting with persisters, which can save your queryClient for later use", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/query-persist-client-core/src/__tests__/createPersister.test.ts b/packages/query-persist-client-core/src/__tests__/createPersister.test.ts index 95038813dc1..c13b91305d1 100644 --- a/packages/query-persist-client-core/src/__tests__/createPersister.test.ts +++ b/packages/query-persist-client-core/src/__tests__/createPersister.test.ts @@ -1,10 +1,9 @@ -import { describe, expect, test, vi } from 'vitest' +import { afterAll, beforeAll, describe, expect, test, vi } from 'vitest' import { Query, QueryClient, hashKey } from '@tanstack/query-core' import { PERSISTER_KEY_PREFIX, experimental_createPersister, } from '../createPersister' -import { sleep } from './utils' import type { QueryFunctionContext, QueryKey } from '@tanstack/query-core' import type { StoragePersisterOptions } from '../createPersister' @@ -60,6 +59,14 @@ function setupPersister( } describe('createPersister', () => { + beforeAll(() => { + vi.useFakeTimers() + }) + + afterAll(() => { + vi.useRealTimers() + }) + test('should fetch if storage is not provided', async () => { const { context, persisterFn, query, queryFn } = setupPersister(['foo'], { storage: undefined, @@ -215,7 +222,7 @@ describe('createPersister', () => { query.fetch = vi.fn() expect(query.state.dataUpdatedAt).toEqual(0) - await sleep(0) + await vi.advanceTimersByTimeAsync(0) expect(queryFn).toHaveBeenCalledTimes(0) expect(query.fetch).toHaveBeenCalledTimes(0) @@ -243,7 +250,7 @@ describe('createPersister', () => { query.state.isInvalidated = true query.fetch = vi.fn() - await sleep(0) + await vi.advanceTimersByTimeAsync(0) expect(queryFn).toHaveBeenCalledTimes(0) expect(query.fetch).toHaveBeenCalledTimes(1) @@ -266,7 +273,7 @@ describe('createPersister', () => { await persisterFn(queryFn, context, query) query.setData('baz') - await sleep(0) + await vi.advanceTimersByTimeAsync(0) expect(queryFn).toHaveBeenCalledOnce() expect(queryFn).toHaveBeenCalledWith(context) @@ -308,7 +315,7 @@ describe('createPersister', () => { await persisterFn(queryFn, context, query) query.fetch = vi.fn() - await sleep(0) + await vi.advanceTimersByTimeAsync(0) expect(queryFn).toHaveBeenCalledTimes(1) expect(query.fetch).toHaveBeenCalledTimes(0) @@ -337,7 +344,7 @@ describe('createPersister', () => { query.state.isInvalidated = true query.fetch = vi.fn() - await sleep(0) + await vi.advanceTimersByTimeAsync(0) expect(queryFn).toHaveBeenCalledTimes(0) expect(query.fetch).toHaveBeenCalledTimes(1) @@ -362,7 +369,7 @@ describe('createPersister', () => { await persisterFn(queryFn, context, query) query.setData('baz') - await sleep(0) + await vi.advanceTimersByTimeAsync(0) expect(queryFn).toHaveBeenCalledOnce() expect(queryFn).toHaveBeenCalledWith(context) diff --git a/packages/query-persist-client-core/src/__tests__/utils.ts b/packages/query-persist-client-core/src/__tests__/utils.ts index 01287a2422d..ee5ac7f0d40 100644 --- a/packages/query-persist-client-core/src/__tests__/utils.ts +++ b/packages/query-persist-client-core/src/__tests__/utils.ts @@ -7,7 +7,7 @@ export function createQueryClient(config?: QueryClientConfig): QueryClient { return new QueryClient(config) } -export function sleep(timeout: number): Promise { +function sleep(timeout: number): Promise { return new Promise((resolve, _reject) => { setTimeout(resolve, timeout) }) diff --git a/packages/query-sync-storage-persister/package.json b/packages/query-sync-storage-persister/package.json index 9ac2c57a8c5..099b88045b1 100644 --- a/packages/query-sync-storage-persister/package.json +++ b/packages/query-sync-storage-persister/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/query-sync-storage-persister", - "version": "5.74.6", + "version": "5.75.4", "description": "A persister for synchronous storages, to be used with TanStack/Query", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/react-query-devtools/package.json b/packages/react-query-devtools/package.json index 5556461c8c1..1774eac49ad 100644 --- a/packages/react-query-devtools/package.json +++ b/packages/react-query-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-query-devtools", - "version": "5.74.6", + "version": "5.75.4", "description": "Developer tools to interact with and visualize the TanStack/react-query cache", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/react-query-next-experimental/package.json b/packages/react-query-next-experimental/package.json index 028bb75afcc..a749b614724 100644 --- a/packages/react-query-next-experimental/package.json +++ b/packages/react-query-next-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-query-next-experimental", - "version": "5.74.4", + "version": "5.75.4", "description": "Hydration utils for React Query in the NextJs app directory", "author": "tannerlinsley", "license": "MIT", @@ -59,7 +59,7 @@ "@tanstack/react-query": "workspace:*", "@types/react": "^19.0.1", "@vitejs/plugin-react": "^4.3.4", - "next": "^15.1.2", + "next": "^15.3.1", "npm-run-all2": "^5.0.0", "react": "^19.0.0" }, diff --git a/packages/react-query-persist-client/package.json b/packages/react-query-persist-client/package.json index eec285ab193..9ee1e589b50 100644 --- a/packages/react-query-persist-client/package.json +++ b/packages/react-query-persist-client/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-query-persist-client", - "version": "5.74.6", + "version": "5.75.4", "description": "React bindings to work with persisters in TanStack/react-query", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/react-query/package.json b/packages/react-query/package.json index 34b4c35525b..040e8b75f79 100644 --- a/packages/react-query/package.json +++ b/packages/react-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-query", - "version": "5.74.4", + "version": "5.75.4", "description": "Hooks for managing, caching and syncing asynchronous and remote data in React", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/react-query/src/isRestoring.ts b/packages/react-query/src/IsRestoringProvider.ts similarity index 100% rename from packages/react-query/src/isRestoring.ts rename to packages/react-query/src/IsRestoringProvider.ts diff --git a/packages/react-query/src/__tests__/QueryClientProvider.test.tsx b/packages/react-query/src/__tests__/QueryClientProvider.test.tsx index 1a04474f297..53ebf7bafba 100644 --- a/packages/react-query/src/__tests__/QueryClientProvider.test.tsx +++ b/packages/react-query/src/__tests__/QueryClientProvider.test.tsx @@ -1,9 +1,17 @@ -import { describe, expect, test, vi } from 'vitest' -import { render, waitFor } from '@testing-library/react' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' +import { render } from '@testing-library/react' import { QueryCache, QueryClientProvider, useQuery, useQueryClient } from '..' import { createQueryClient, queryKey, sleep } from './utils' describe('QueryClientProvider', () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + test('sets a specific cache for all queries to use', async () => { const key = queryKey() @@ -13,10 +21,7 @@ describe('QueryClientProvider', () => { function Page() { const { data } = useQuery({ queryKey: key, - queryFn: async () => { - await sleep(10) - return 'test' - }, + queryFn: () => sleep(10).then(() => 'test'), }) return ( @@ -32,7 +37,7 @@ describe('QueryClientProvider', () => { , ) - await waitFor(() => rendered.getByText('test')) + await vi.waitFor(() => rendered.getByText('test')) expect(queryCache.find({ queryKey: key })).toBeDefined() }) @@ -50,10 +55,7 @@ describe('QueryClientProvider', () => { function Page1() { const { data } = useQuery({ queryKey: key1, - queryFn: async () => { - await sleep(10) - return 'test1' - }, + queryFn: () => sleep(10).then(() => 'test1'), }) return ( @@ -65,10 +67,7 @@ describe('QueryClientProvider', () => { function Page2() { const { data } = useQuery({ queryKey: key2, - queryFn: async () => { - await sleep(10) - return 'test2' - }, + queryFn: () => sleep(10).then(() => 'test2'), }) return ( @@ -89,8 +88,8 @@ describe('QueryClientProvider', () => { , ) - await waitFor(() => rendered.getByText('test1')) - await waitFor(() => rendered.getByText('test2')) + await vi.waitFor(() => rendered.getByText('test1')) + await vi.waitFor(() => rendered.getByText('test2')) expect(queryCache1.find({ queryKey: key1 })).toBeDefined() expect(queryCache1.find({ queryKey: key2 })).not.toBeDefined() @@ -114,10 +113,7 @@ describe('QueryClientProvider', () => { function Page() { const { data } = useQuery({ queryKey: key, - queryFn: async () => { - await sleep(10) - return 'test' - }, + queryFn: () => sleep(10).then(() => 'test'), }) return ( @@ -133,7 +129,7 @@ describe('QueryClientProvider', () => { , ) - await waitFor(() => rendered.getByText('test')) + await vi.waitFor(() => rendered.getByText('test')) expect(queryCache.find({ queryKey: key })).toBeDefined() expect(queryCache.find({ queryKey: key })?.options.gcTime).toBe(Infinity) diff --git a/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx b/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx index 6ee2dd37ed9..eeb19512d9a 100644 --- a/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx +++ b/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx @@ -68,11 +68,17 @@ describe('QueryErrorResetBoundary', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('retry')).toBeInTheDocument(), + ) succeed = true fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('data')) + await waitFor(() => + expect(rendered.getByText('data')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -132,11 +138,17 @@ describe('QueryErrorResetBoundary', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('retry')).toBeInTheDocument(), + ) succeed = true fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('status: error')) + await waitFor(() => + expect(rendered.getByText('status: error')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -198,11 +210,17 @@ describe('QueryErrorResetBoundary', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('retry')).toBeInTheDocument(), + ) succeed = true fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('data')) + await waitFor(() => + expect(rendered.getByText('data')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -259,10 +277,14 @@ describe('QueryErrorResetBoundary', () => { ) await waitFor(() => - rendered.getByText('status: pending, fetchStatus: idle'), + expect( + rendered.getByText('status: pending, fetchStatus: idle'), + ).toBeInTheDocument(), ) fireEvent.click(rendered.getByRole('button', { name: /refetch/i })) - await waitFor(() => rendered.getByText('error boundary')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -316,11 +338,17 @@ describe('QueryErrorResetBoundary', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('retry')).toBeInTheDocument(), + ) succeed = true fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('error boundary')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -376,11 +404,17 @@ describe('QueryErrorResetBoundary', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('retry')).toBeInTheDocument(), + ) succeed = true fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('data')) + await waitFor(() => + expect(rendered.getByText('data')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -440,11 +474,17 @@ describe('QueryErrorResetBoundary', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('retry')).toBeInTheDocument(), + ) shouldReset = true fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('error boundary')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) succeed = true shouldReset = false fireEvent.click(rendered.getByText('retry')) @@ -651,11 +691,17 @@ describe('QueryErrorResetBoundary', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('retry')).toBeInTheDocument(), + ) succeed = true fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('data')) + await waitFor(() => + expect(rendered.getByText('data')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) }) @@ -715,11 +761,17 @@ describe('QueryErrorResetBoundary', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('retry')).toBeInTheDocument(), + ) succeed = true fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('data')) + await waitFor(() => + expect(rendered.getByText('data')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -779,11 +831,17 @@ describe('QueryErrorResetBoundary', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('retry')).toBeInTheDocument(), + ) succeed = true fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('data')) + await waitFor(() => + expect(rendered.getByText('data')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) }) diff --git a/packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx b/packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx index c5d7efeee94..a1d97bf0927 100644 --- a/packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx +++ b/packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx @@ -1,4 +1,4 @@ -import { describe, expectTypeOf, it, test } from 'vitest' +import { assertType, describe, expectTypeOf, it, test } from 'vitest' import { QueryClient, dataTagSymbol, skipToken } from '@tanstack/query-core' import { infiniteQueryOptions } from '../infiniteQueryOptions' import { useInfiniteQuery } from '../useInfiniteQuery' @@ -12,14 +12,16 @@ import type { describe('infiniteQueryOptions', () => { it('should not allow excess properties', () => { - infiniteQueryOptions({ - queryKey: ['key'], - queryFn: () => Promise.resolve('data'), - getNextPageParam: () => 1, - initialPageParam: 1, - // @ts-expect-error this is a good error, because stallTime does not exist! - stallTime: 1000, - }) + assertType( + infiniteQueryOptions({ + queryKey: ['key'], + queryFn: () => Promise.resolve('data'), + getNextPageParam: () => 1, + initialPageParam: 1, + // @ts-expect-error this is a good error, because stallTime does not exist! + stallTime: 1000, + }), + ) }) it('should infer types for callbacks', () => { infiniteQueryOptions({ @@ -159,14 +161,22 @@ describe('infiniteQueryOptions', () => { getNextPageParam: () => 1, initialPageParam: 1, }) - // @ts-expect-error cannot pass infinite options to non-infinite query functions - useQuery(options) - // @ts-expect-error cannot pass infinite options to non-infinite query functions - queryClient.ensureQueryData(options) - // @ts-expect-error cannot pass infinite options to non-infinite query functions - queryClient.fetchQuery(options) - // @ts-expect-error cannot pass infinite options to non-infinite query functions - queryClient.prefetchQuery(options) + assertType( + // @ts-expect-error cannot pass infinite options to non-infinite query functions + useQuery(options), + ) + assertType( + // @ts-expect-error cannot pass infinite options to non-infinite query functions + queryClient.ensureQueryData(options), + ) + assertType( + // @ts-expect-error cannot pass infinite options to non-infinite query functions + queryClient.fetchQuery(options), + ) + assertType( + // @ts-expect-error cannot pass infinite options to non-infinite query functions + queryClient.prefetchQuery(options), + ) }) test('allow optional initialData function', () => { diff --git a/packages/react-query/src/__tests__/queryOptions.test-d.tsx b/packages/react-query/src/__tests__/queryOptions.test-d.tsx index f453900888b..aac63737eb3 100644 --- a/packages/react-query/src/__tests__/queryOptions.test-d.tsx +++ b/packages/react-query/src/__tests__/queryOptions.test-d.tsx @@ -1,4 +1,4 @@ -import { describe, expectTypeOf, it } from 'vitest' +import { assertType, describe, expectTypeOf, it } from 'vitest' import { QueriesObserver, QueryClient, @@ -18,12 +18,14 @@ import type { describe('queryOptions', () => { it('should not allow excess properties', () => { - queryOptions({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - // @ts-expect-error this is a good error, because stallTime does not exist! - stallTime: 1000, - }) + assertType( + queryOptions({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + // @ts-expect-error this is a good error, because stallTime does not exist! + stallTime: 1000, + }), + ) }) it('should infer types for callbacks', () => { queryOptions({ @@ -203,7 +205,7 @@ describe('queryOptions', () => { }) it('should allow undefined response in initialData', () => { - return (id: string | null) => + assertType((id: string | null) => queryOptions({ queryKey: ['todo', id], queryFn: () => @@ -218,7 +220,8 @@ describe('queryOptions', () => { id, title: 'Initial Data', }, - }) + }), + ) }) it('should allow optional initialData object', () => { @@ -248,7 +251,7 @@ describe('queryOptions', () => { queryFn: () => Promise.resolve(1), }) - somethingWithQueryOptions(options) + assertType(somethingWithQueryOptions(options)) }) it('should return a custom query key type', () => { diff --git a/packages/react-query/src/__tests__/useInfiniteQuery.test.tsx b/packages/react-query/src/__tests__/useInfiniteQuery.test.tsx index 75768977cf6..433bc3fa2c1 100644 --- a/packages/react-query/src/__tests__/useInfiniteQuery.test.tsx +++ b/packages/react-query/src/__tests__/useInfiniteQuery.test.tsx @@ -920,18 +920,30 @@ describe('useInfiniteQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('status: success, idle')) await waitFor(() => - rendered.getByText('data: {"pages":[10],"pageParams":[10]}'), + expect(rendered.getByText('status: success, idle')).toBeInTheDocument(), + ) + await waitFor(() => + expect( + rendered.getByText('data: {"pages":[10],"pageParams":[10]}'), + ).toBeInTheDocument(), ) fireEvent.click(rendered.getByRole('button', { name: /refetch/i })) - await waitFor(() => rendered.getByText('status: success, fetching')) + await waitFor(() => + expect( + rendered.getByText('status: success, fetching'), + ).toBeInTheDocument(), + ) fireEvent.click(rendered.getByRole('button', { name: /fetchNextPage/i })) - await waitFor(() => rendered.getByText('status: success, idle')) await waitFor(() => - rendered.getByText('data: {"pages":[10,11],"pageParams":[10,11]}'), + expect(rendered.getByText('status: success, idle')).toBeInTheDocument(), + ) + await waitFor(() => + expect( + rendered.getByText('data: {"pages":[10,11],"pageParams":[10,11]}'), + ).toBeInTheDocument(), ) }) @@ -1216,13 +1228,17 @@ describe('useInfiniteQuery', () => { const rendered = renderWithClient(queryClient, ) await waitFor(() => - rendered.getByText('data: {"pages":[0],"pageParams":[0]}'), + expect( + rendered.getByText('data: {"pages":[0],"pageParams":[0]}'), + ).toBeInTheDocument(), ) fireEvent.click(rendered.getByRole('button', { name: /setPages/i })) await waitFor(() => - rendered.getByText('data: {"pages":[7,8],"pageParams":[7,8]}'), + expect( + rendered.getByText('data: {"pages":[7,8],"pageParams":[7,8]}'), + ).toBeInTheDocument(), ) multiplier = 2 @@ -1230,7 +1246,9 @@ describe('useInfiniteQuery', () => { fireEvent.click(rendered.getByRole('button', { name: /refetch/i })) await waitFor(() => - rendered.getByText('data: {"pages":[14,30],"pageParams":[7,15]}'), + expect( + rendered.getByText('data: {"pages":[14,30],"pageParams":[7,15]}'), + ).toBeInTheDocument(), ) }) @@ -1807,7 +1825,9 @@ describe('useInfiniteQuery', () => { const rendered = render() - await waitFor(() => rendered.getByText('data: custom client')) + await waitFor(() => + expect(rendered.getByText('data: custom client')).toBeInTheDocument(), + ) }) it('should work with React.use()', async () => { diff --git a/packages/react-query/src/__tests__/useIsFetching.test.tsx b/packages/react-query/src/__tests__/useIsFetching.test.tsx index 223d586d646..bed5506fe99 100644 --- a/packages/react-query/src/__tests__/useIsFetching.test.tsx +++ b/packages/react-query/src/__tests__/useIsFetching.test.tsx @@ -53,20 +53,20 @@ describe('useIsFetching', () => { ) } - const { findByText, getByRole } = renderWithClient(queryClient, ) + const { getByText, getByRole } = renderWithClient(queryClient, ) await vi.waitFor(() => { - findByText('isFetching: 0') + expect(getByText('isFetching: 0')).toBeInTheDocument() }) fireEvent.click(getByRole('button', { name: /setReady/i })) await vi.waitFor(() => { - findByText('isFetching: 1') + expect(getByText('isFetching: 1')).toBeInTheDocument() }) await vi.waitFor(() => { - findByText('isFetching: 0') + expect(getByText('isFetching: 0')).toBeInTheDocument() }) }) @@ -226,11 +226,11 @@ describe('useIsFetching', () => { const rendered = renderWithClient(queryClient, ) await vi.waitFor(() => { - rendered.findByText('isFetching: 1') + expect(rendered.getByText('isFetching: 1')).toBeInTheDocument() }) await vi.waitFor(() => { - rendered.findByText('isFetching: 0') + expect(rendered.getByText('isFetching: 0')).toBeInTheDocument() }) }) @@ -262,7 +262,7 @@ describe('useIsFetching', () => { const rendered = render() await vi.waitFor(() => { - rendered.getByText('isFetching: 1') + expect(rendered.getByText('isFetching: 1')).toBeInTheDocument() }) }) }) diff --git a/packages/react-query/src/__tests__/useMutation.test.tsx b/packages/react-query/src/__tests__/useMutation.test.tsx index 1bbf1f4a7e7..20aad96b95b 100644 --- a/packages/react-query/src/__tests__/useMutation.test.tsx +++ b/packages/react-query/src/__tests__/useMutation.test.tsx @@ -1,7 +1,7 @@ import '@testing-library/jest-dom/vitest' -import { describe, expect, it, vi } from 'vitest' -import { fireEvent, render, waitFor } from '@testing-library/react' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { fireEvent, render } from '@testing-library/react' import * as React from 'react' import { ErrorBoundary } from 'react-error-boundary' import { MutationCache, QueryCache, useMutation } from '..' @@ -16,9 +16,25 @@ import { import type { UseMutationResult } from '../types' describe('useMutation', () => { - const queryCache = new QueryCache() - const mutationCache = new MutationCache() - const queryClient = createQueryClient({ queryCache, mutationCache }) + let queryCache = new QueryCache() + let mutationCache = new MutationCache() + let queryClient = createQueryClient({ + queryCache, + mutationCache, + }) + + beforeEach(() => { + queryCache = new QueryCache() + mutationCache = new MutationCache() + queryClient = createQueryClient({ + queryCache, + }) + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) it('should be able to reset `data`', async () => { function Page() { @@ -43,13 +59,13 @@ describe('useMutation', () => { fireEvent.click(getByRole('button', { name: /mutate/i })) - await waitFor(() => { + await vi.waitFor(() => { expect(getByRole('heading').textContent).toBe('mutation') }) fireEvent.click(getByRole('button', { name: /reset/i })) - await waitFor(() => { + await vi.waitFor(() => { expect(getByRole('heading').textContent).toBe('empty') }) }) @@ -75,13 +91,13 @@ describe('useMutation', () => { const { getByRole, queryByRole } = renderWithClient(queryClient, ) - await waitFor(() => { + await vi.waitFor(() => { expect(queryByRole('heading')).toBeNull() }) fireEvent.click(getByRole('button', { name: /mutate/i })) - await waitFor(() => { + await vi.waitFor(() => { expect(getByRole('heading').textContent).toBe( 'Expected mock error. All is well!', ) @@ -89,7 +105,7 @@ describe('useMutation', () => { fireEvent.click(getByRole('button', { name: /reset/i })) - await waitFor(() => { + await vi.waitFor(() => { expect(queryByRole('heading')).toBeNull() }) }) @@ -127,11 +143,11 @@ describe('useMutation', () => { fireEvent.click(getByRole('button', { name: /mutate/i })) fireEvent.click(getByRole('button', { name: /mutate/i })) - await waitFor(() => { + await vi.waitFor(() => { expect(getByRole('heading').textContent).toBe('3') }) - await waitFor(() => { + await vi.waitFor(() => { expect(onSuccessMock).toHaveBeenCalledTimes(3) }) @@ -139,7 +155,7 @@ describe('useMutation', () => { expect(onSuccessMock).toHaveBeenCalledWith(2) expect(onSuccessMock).toHaveBeenCalledWith(3) - await waitFor(() => { + await vi.waitFor(() => { expect(onSettledMock).toHaveBeenCalledTimes(3) }) @@ -181,20 +197,42 @@ describe('useMutation', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Data')) + await vi.waitFor(() => + expect(rendered.getByText('Data')).toBeInTheDocument(), + ) fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => rendered.getByText('Data')) - await waitFor(() => rendered.getByText('Status error')) - await waitFor(() => rendered.getByText('Failed 1 times')) - await waitFor(() => rendered.getByText('Failed because Error test Jonas')) + await vi.waitFor(() => + expect(rendered.getByText('Data')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('Status error')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('Failed 1 times')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect( + rendered.getByText('Failed because Error test Jonas'), + ).toBeInTheDocument(), + ) fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => rendered.getByText('Status pending')) - await waitFor(() => rendered.getByText('Status success')) - await waitFor(() => rendered.getByText('Data 2')) - await waitFor(() => rendered.getByText('Failed 0 times')) - await waitFor(() => rendered.getByText('Failed because null')) + await vi.waitFor(() => + expect(rendered.getByText('Status pending')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('Status success')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('Data 2')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('Failed 0 times')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('Failed because null')).toBeInTheDocument(), + ) }) it('should be able to call `onError` and `onSettled` after each failed mutate', async () => { @@ -235,11 +273,11 @@ describe('useMutation', () => { fireEvent.click(getByRole('button', { name: /mutate/i })) fireEvent.click(getByRole('button', { name: /mutate/i })) - await waitFor(() => { + await vi.waitFor(() => { expect(getByRole('heading').textContent).toBe('3') }) - await waitFor(() => { + await vi.waitFor(() => { expect(onErrorMock).toHaveBeenCalledTimes(3) }) expect(onErrorMock).toHaveBeenCalledWith( @@ -252,7 +290,7 @@ describe('useMutation', () => { 'Expected mock error. All is well! 3', ) - await waitFor(() => { + await vi.waitFor(() => { expect(onSettledMock).toHaveBeenCalledTimes(3) }) expect(onSettledMock).toHaveBeenCalledWith( @@ -305,7 +343,7 @@ describe('useMutation', () => { renderWithClient(queryClient, ) - await sleep(100) + await vi.advanceTimersByTimeAsync(10) expect(callbacks).toEqual([ 'useMutation.onSuccess', @@ -356,7 +394,7 @@ describe('useMutation', () => { renderWithClient(queryClient, ) - await sleep(100) + await vi.advanceTimersByTimeAsync(10) expect(callbacks).toEqual([ 'useMutation.onError', @@ -397,7 +435,7 @@ describe('useMutation', () => { renderWithClient(queryClient, ) - await sleep(100) + await vi.advanceTimersByTimeAsync(30) expect(states.length).toBe(3) expect(states[0]).toMatchObject({ data: undefined, isPending: false }) @@ -429,7 +467,7 @@ describe('useMutation', () => { renderWithClient(queryClient, ) - await sleep(100) + await vi.advanceTimersByTimeAsync(15) expect(count).toBe(2) }) @@ -463,7 +501,7 @@ describe('useMutation', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => { + await vi.waitFor(() => { expect( rendered.getByText('error: null, status: idle, isPaused: false'), ).toBeInTheDocument() @@ -471,7 +509,7 @@ describe('useMutation', () => { fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => { + await vi.waitFor(() => { expect( rendered.getByText('error: null, status: pending, isPaused: true'), ).toBeInTheDocument() @@ -482,9 +520,7 @@ describe('useMutation', () => { onlineMock.mockReturnValue(true) queryClient.getMutationCache().resumePausedMutations() - await sleep(100) - - await waitFor(() => { + await vi.waitFor(() => { expect( rendered.getByText('error: oops, status: error, isPaused: false'), ).toBeInTheDocument() @@ -522,11 +558,13 @@ describe('useMutation', () => { const rendered = renderWithClient(queryClient, ) - await rendered.findByText('data: null, status: idle, isPaused: false') + rendered.findByText('data: null, status: idle, isPaused: false') fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await rendered.findByText('data: null, status: pending, isPaused: true') + await vi.waitFor(() => + rendered.findByText('data: null, status: pending, isPaused: true'), + ) expect(onMutate).toHaveBeenCalledTimes(1) expect(onMutate).toHaveBeenCalledWith('todo') @@ -534,7 +572,9 @@ describe('useMutation', () => { onlineMock.mockReturnValue(true) queryClient.getMutationCache().resumePausedMutations() - await rendered.findByText('data: 1, status: success, isPaused: false') + await vi.waitFor(() => + rendered.findByText('data: 1, status: success, isPaused: false'), + ) expect(onMutate).toHaveBeenCalledTimes(1) expect(count).toBe(1) @@ -571,11 +611,15 @@ describe('useMutation', () => { const rendered = renderWithClient(queryClient, ) - await rendered.findByText('data: null, status: idle, isPaused: false') + await vi.waitFor(() => + rendered.findByText('data: null, status: idle, isPaused: false'), + ) fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await rendered.findByText('data: null, status: pending, isPaused: true') + await vi.waitFor(() => + rendered.findByText('data: null, status: pending, isPaused: true'), + ) // no intermediate 'pending, false' state is expected because we don't start mutating! expect(states[0]).toBe('idle, false') @@ -584,7 +628,9 @@ describe('useMutation', () => { onlineMock.mockReturnValue(true) queryClient.getMutationCache().resumePausedMutations() - await rendered.findByText('data: 1, status: success, isPaused: false') + await vi.waitFor(() => + rendered.findByText('data: 1, status: success, isPaused: false'), + ) onlineMock.mockRestore() }) @@ -622,9 +668,9 @@ describe('useMutation', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('status: idle')) + await vi.waitFor(() => rendered.getByText('status: idle')) fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => rendered.getByText('isPaused: true')) + await vi.waitFor(() => rendered.getByText('isPaused: true')) expect( queryClient.getMutationCache().findAll({ mutationKey: key }).length, @@ -641,7 +687,7 @@ describe('useMutation', () => { onlineMock.mockReturnValue(true) queryClient.getMutationCache().resumePausedMutations() - await waitFor(() => rendered.getByText('data: data2')) + await vi.waitFor(() => rendered.getByText('data: data2')) expect( queryClient.getMutationCache().findAll({ mutationKey: key })[0]?.state, @@ -656,6 +702,7 @@ describe('useMutation', () => { onlineMock.mockRestore() }) + // eslint-disable-next-line vitest/expect-expect it('should not change state if unmounted', () => { function Mutates() { const { mutate } = useMutation({ mutationFn: () => sleep(10) }) @@ -713,7 +760,7 @@ describe('useMutation', () => { fireEvent.click(getByText('mutate')) - await waitFor(() => { + await vi.waitFor(() => { expect(queryByText('error')).not.toBeNull() }) @@ -762,14 +809,14 @@ describe('useMutation', () => { // first error goes to component fireEvent.click(getByText('mutate')) - await waitFor(() => { + await vi.waitFor(() => { expect(queryByText('mock error')).not.toBeNull() }) // second error goes to boundary boundary = true fireEvent.click(getByText('mutate')) - await waitFor(() => { + await vi.waitFor(() => { expect(queryByText('error boundary')).not.toBeNull() }) consoleMock.mockRestore() @@ -823,7 +870,7 @@ describe('useMutation', () => { fireEvent.click(getByText('succeed')) fireEvent.click(getByText('error')) - await waitFor(() => { + await vi.waitFor(() => { expect(queryByText('successTest')).not.toBeNull() expect(queryByText('errorTest')).not.toBeNull() }) @@ -887,12 +934,14 @@ describe('useMutation', () => { const rendered = renderWithClient(queryClient, ) - await rendered.findByText('data: null, status: idle, isPaused: false') + await vi.waitFor(() => + rendered.findByText('data: null, status: idle, isPaused: false'), + ) fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) fireEvent.click(rendered.getByRole('button', { name: /hide/i })) - await waitFor(() => { + await vi.waitFor(() => { expect( queryClient.getMutationCache().findAll({ mutationKey }), ).toHaveLength(0) @@ -956,12 +1005,14 @@ describe('useMutation', () => { const rendered = renderWithClient(queryClient, ) - await rendered.findByText('data: null, status: idle') + await vi.waitFor(() => rendered.findByText('data: null, status: idle')) fireEvent.click(rendered.getByRole('button', { name: /mutate1/i })) fireEvent.click(rendered.getByRole('button', { name: /mutate2/i })) - await rendered.findByText('data: result-todo2, status: success') + await vi.waitFor(() => + rendered.findByText('data: result-todo2, status: success'), + ) expect(count).toBe(2) @@ -1018,11 +1069,11 @@ describe('useMutation', () => { const rendered = renderWithClient(queryClient, ) - await rendered.findByText('status: idle') + await vi.waitFor(() => rendered.findByText('status: idle')) rendered.getByRole('button', { name: /mutate/i }).click() - await rendered.findByText('status: error') + await vi.waitFor(() => rendered.findByText('status: error')) expect(onError).toHaveBeenCalledWith(error, 'todo', undefined) }) @@ -1054,11 +1105,19 @@ describe('useMutation', () => { const rendered = renderWithClient(queryClient, ) - await rendered.findByText('error: null, status: idle') + await vi.waitFor(() => + expect( + rendered.getByText('error: null, status: idle'), + ).toBeInTheDocument(), + ) rendered.getByRole('button', { name: /mutate/i }).click() - await rendered.findByText('error: mutateFnError, status: error') + await vi.waitFor(() => + expect( + rendered.getByText('error: mutateFnError, status: error'), + ).toBeInTheDocument(), + ) }) it('should go to error state if onSettled callback errors', async () => { @@ -1090,11 +1149,13 @@ describe('useMutation', () => { const rendered = renderWithClient(queryClient, ) - await rendered.findByText('error: null, status: idle') + await vi.waitFor(() => rendered.findByText('error: null, status: idle')) rendered.getByRole('button', { name: /mutate/i }).click() - await rendered.findByText('error: mutateFnError, status: error') + await vi.waitFor(() => + rendered.findByText('error: mutateFnError, status: error'), + ) expect(onError).toHaveBeenCalledWith(mutateFnError, 'todo', undefined) }) @@ -1124,12 +1185,18 @@ describe('useMutation', () => { const rendered = render() - await rendered.findByText('data: null, status: idle') + await vi.waitFor(() => + expect( + rendered.getByText('data: null, status: idle'), + ).toBeInTheDocument(), + ) fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => - rendered.findByText('data: custom client, status: success'), + await vi.waitFor(() => + expect( + rendered.getByText('data: custom client, status: success'), + ).toBeInTheDocument(), ) }) }) diff --git a/packages/react-query/src/__tests__/useMutationState.test-d.tsx b/packages/react-query/src/__tests__/useMutationState.test-d.tsx new file mode 100644 index 00000000000..795995aa440 --- /dev/null +++ b/packages/react-query/src/__tests__/useMutationState.test-d.tsx @@ -0,0 +1,23 @@ +import { describe, expectTypeOf, it } from 'vitest' +import { useMutationState } from '../useMutationState' +import type { MutationState, MutationStatus } from '@tanstack/query-core' + +describe('useMutationState', () => { + it('should default to QueryState', () => { + const result = useMutationState({ + filters: { status: 'pending' }, + }) + + expectTypeOf(result).toEqualTypeOf< + Array> + >() + }) + it('should infer with select', () => { + const result = useMutationState({ + filters: { status: 'pending' }, + select: (mutation) => mutation.state.status, + }) + + expectTypeOf(result).toEqualTypeOf>() + }) +}) diff --git a/packages/react-query/src/__tests__/useMutationState.test.tsx b/packages/react-query/src/__tests__/useMutationState.test.tsx index f35206525c6..1f88ed6200e 100644 --- a/packages/react-query/src/__tests__/useMutationState.test.tsx +++ b/packages/react-query/src/__tests__/useMutationState.test.tsx @@ -1,17 +1,19 @@ -import { describe, expect, expectTypeOf, it } from 'vitest' -import { fireEvent, render, waitFor } from '@testing-library/react' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { fireEvent, render } from '@testing-library/react' import * as React from 'react' import { useIsMutating, useMutationState } from '../useMutationState' import { useMutation } from '../useMutation' -import { - createQueryClient, - doNotExecute, - renderWithClient, - sleep, -} from './utils' -import type { MutationState, MutationStatus } from '@tanstack/query-core' +import { createQueryClient, renderWithClient, sleep } from './utils' describe('useIsMutating', () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + it('should return the number of fetching mutations', async () => { const isMutatingArray: Array = [] const queryClient = createQueryClient() @@ -25,17 +27,11 @@ describe('useIsMutating', () => { function Mutations() { const { mutate: mutate1 } = useMutation({ mutationKey: ['mutation1'], - mutationFn: async () => { - await sleep(50) - return 'data' - }, + mutationFn: () => sleep(50).then(() => 'data'), }) const { mutate: mutate2 } = useMutation({ mutationKey: ['mutation2'], - mutationFn: async () => { - await sleep(10) - return 'data' - }, + mutationFn: () => sleep(10).then(() => 'data'), }) return ( @@ -57,7 +53,7 @@ describe('useIsMutating', () => { const rendered = renderWithClient(queryClient, ) fireEvent.click(rendered.getByRole('button', { name: /mutate1/i })) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) fireEvent.click(rendered.getByRole('button', { name: /mutate2/i })) // we don't really care if this yields @@ -66,10 +62,10 @@ describe('useIsMutating', () => { // [ +0, 1, 2, 1, +0 ] // our batching strategy might yield different results - await waitFor(() => expect(isMutatingArray[0]).toEqual(0)) - await waitFor(() => expect(isMutatingArray[1]).toEqual(1)) - await waitFor(() => expect(isMutatingArray[2]).toEqual(2)) - await waitFor(() => + await vi.waitFor(() => expect(isMutatingArray[0]).toEqual(0)) + await vi.waitFor(() => expect(isMutatingArray[1]).toEqual(1)) + await vi.waitFor(() => expect(isMutatingArray[2]).toEqual(2)) + await vi.waitFor(() => expect(isMutatingArray[isMutatingArray.length - 1]).toEqual(0), ) }) @@ -87,17 +83,11 @@ describe('useIsMutating', () => { function Page() { const { mutate: mutate1 } = useMutation({ mutationKey: ['mutation1'], - mutationFn: async () => { - await sleep(100) - return 'data' - }, + mutationFn: () => sleep(100).then(() => 'data'), }) const { mutate: mutate2 } = useMutation({ mutationKey: ['mutation2'], - mutationFn: async () => { - await sleep(100) - return 'data' - }, + mutationFn: () => sleep(100).then(() => 'data'), }) React.useEffect(() => { @@ -109,7 +99,7 @@ describe('useIsMutating', () => { } renderWithClient(queryClient, ) - await waitFor(() => expect(isMutatingArray).toEqual([0, 1, 0])) + await vi.waitFor(() => expect(isMutatingArray).toEqual([0, 1, 0])) }) it('should filter correctly by predicate', async () => { @@ -128,17 +118,11 @@ describe('useIsMutating', () => { function Page() { const { mutate: mutate1 } = useMutation({ mutationKey: ['mutation1'], - mutationFn: async () => { - await sleep(100) - return 'data' - }, + mutationFn: () => sleep(100).then(() => 'data'), }) const { mutate: mutate2 } = useMutation({ mutationKey: ['mutation2'], - mutationFn: async () => { - await sleep(100) - return 'data' - }, + mutationFn: () => sleep(100).then(() => 'data'), }) React.useEffect(() => { @@ -150,7 +134,7 @@ describe('useIsMutating', () => { } renderWithClient(queryClient, ) - await waitFor(() => expect(isMutatingArray).toEqual([0, 1, 0])) + await vi.waitFor(() => expect(isMutatingArray).toEqual([0, 1, 0])) }) it('should use provided custom queryClient', async () => { @@ -161,10 +145,7 @@ describe('useIsMutating', () => { const { mutate } = useMutation( { mutationKey: ['mutation1'], - mutationFn: async () => { - await sleep(10) - return 'data' - }, + mutationFn: () => sleep(10).then(() => 'data'), }, queryClient, ) @@ -182,32 +163,13 @@ describe('useIsMutating', () => { const rendered = render() - await waitFor(() => rendered.getByText('mutating: 1')) + await vi.waitFor(() => + expect(rendered.getByText('mutating: 1')).toBeInTheDocument(), + ) }) }) describe('useMutationState', () => { - describe('types', () => { - it('should default to QueryState', () => { - doNotExecute(() => { - const result = useMutationState({ - filters: { status: 'pending' }, - }) - - expectTypeOf(result).toEqualTypeOf>() - }) - }) - it('should infer with select', () => { - doNotExecute(() => { - const result = useMutationState({ - filters: { status: 'pending' }, - select: (mutation) => mutation.state.status, - }) - - expectTypeOf(result).toEqualTypeOf>() - }) - }) - }) it('should return variables after calling mutate', async () => { const queryClient = createQueryClient() const variables: Array> = [] @@ -227,10 +189,7 @@ describe('useMutationState', () => { function Mutate() { const { mutate, data } = useMutation({ mutationKey, - mutationFn: async (input: number) => { - await sleep(150) - return 'data' + input - }, + mutationFn: (input: number) => sleep(150).then(() => 'data' + input), }) return ( @@ -252,11 +211,11 @@ describe('useMutationState', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: null')) + await vi.waitFor(() => rendered.getByText('data: null')) fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => rendered.getByText('data: data1')) + await vi.waitFor(() => rendered.getByText('data: data1')) expect(variables).toEqual([[], [1], []]) }) diff --git a/packages/react-query/src/__tests__/usePrefetchInfiniteQuery.test-d.tsx b/packages/react-query/src/__tests__/usePrefetchInfiniteQuery.test-d.tsx index f813a14382f..03af450c93a 100644 --- a/packages/react-query/src/__tests__/usePrefetchInfiniteQuery.test-d.tsx +++ b/packages/react-query/src/__tests__/usePrefetchInfiniteQuery.test-d.tsx @@ -1,4 +1,4 @@ -import { describe, expectTypeOf, it } from 'vitest' +import { assertType, describe, expectTypeOf, it } from 'vitest' import { usePrefetchInfiniteQuery } from '..' describe('usePrefetchInfiniteQuery', () => { @@ -14,39 +14,47 @@ describe('usePrefetchInfiniteQuery', () => { }) it('should require initialPageParam and getNextPageParam', () => { - // @ts-expect-error TS2345 - usePrefetchInfiniteQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - }) + assertType( + // @ts-expect-error TS2345 + usePrefetchInfiniteQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + }), + ) }) it('should not allow refetchInterval, enabled or throwOnError options', () => { - usePrefetchInfiniteQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - initialPageParam: 1, - getNextPageParam: () => 1, - // @ts-expect-error TS2353 - refetchInterval: 1000, - }) + assertType( + usePrefetchInfiniteQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + initialPageParam: 1, + getNextPageParam: () => 1, + // @ts-expect-error TS2353 + refetchInterval: 1000, + }), + ) - usePrefetchInfiniteQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - initialPageParam: 1, - getNextPageParam: () => 1, - // @ts-expect-error TS2353 - enabled: true, - }) + assertType( + usePrefetchInfiniteQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + initialPageParam: 1, + getNextPageParam: () => 1, + // @ts-expect-error TS2353 + enabled: true, + }), + ) - usePrefetchInfiniteQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - initialPageParam: 1, - getNextPageParam: () => 1, - // @ts-expect-error TS2353 - throwOnError: true, - }) + assertType( + usePrefetchInfiniteQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + initialPageParam: 1, + getNextPageParam: () => 1, + // @ts-expect-error TS2353 + throwOnError: true, + }), + ) }) }) diff --git a/packages/react-query/src/__tests__/usePrefetchQuery.test-d.tsx b/packages/react-query/src/__tests__/usePrefetchQuery.test-d.tsx index d337d77e2e7..e7d9db5007c 100644 --- a/packages/react-query/src/__tests__/usePrefetchQuery.test-d.tsx +++ b/packages/react-query/src/__tests__/usePrefetchQuery.test-d.tsx @@ -1,4 +1,4 @@ -import { describe, expectTypeOf, it } from 'vitest' +import { assertType, describe, expectTypeOf, it } from 'vitest' import { usePrefetchQuery } from '..' describe('usePrefetchQuery', () => { @@ -12,25 +12,31 @@ describe('usePrefetchQuery', () => { }) it('should not allow refetchInterval, enabled or throwOnError options', () => { - usePrefetchQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - // @ts-expect-error TS2345 - refetchInterval: 1000, - }) + assertType( + usePrefetchQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + // @ts-expect-error TS2345 + refetchInterval: 1000, + }), + ) - usePrefetchQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - // @ts-expect-error TS2345 - enabled: true, - }) + assertType( + usePrefetchQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + // @ts-expect-error TS2345 + enabled: true, + }), + ) - usePrefetchQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - // @ts-expect-error TS2345 - throwOnError: true, - }) + assertType( + usePrefetchQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + // @ts-expect-error TS2345 + throwOnError: true, + }), + ) }) }) diff --git a/packages/react-query/src/__tests__/useQueries.test.tsx b/packages/react-query/src/__tests__/useQueries.test.tsx index 55ee81e9802..8bb81fffccd 100644 --- a/packages/react-query/src/__tests__/useQueries.test.tsx +++ b/packages/react-query/src/__tests__/useQueries.test.tsx @@ -836,8 +836,12 @@ describe('useQueries', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('single query error')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('single query error')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -903,8 +907,12 @@ describe('useQueries', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('single query error')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('single query error')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -932,7 +940,9 @@ describe('useQueries', () => { const rendered = render() - await waitFor(() => rendered.getByText('data: custom client')) + await waitFor(() => + expect(rendered.getByText('data: custom client')).toBeInTheDocument(), + ) }) it('should combine queries', async () => { @@ -974,7 +984,9 @@ describe('useQueries', () => { const rendered = render() await waitFor(() => - rendered.getByText('data: true first result,second result'), + expect( + rendered.getByText('data: true first result,second result'), + ).toBeInTheDocument(), ) }) @@ -1085,9 +1097,11 @@ describe('useQueries', () => { const rendered = renderWithClient(queryClient, ) await waitFor(() => - rendered.getByText( - 'data: {"data":{"query1":"query1","query2":"query2"}}', - ), + expect( + rendered.getByText( + 'data: {"data":{"query1":"query1","query2":"query2"}}', + ), + ).toBeInTheDocument(), ) }) @@ -1144,7 +1158,9 @@ describe('useQueries', () => { const rendered = render() await waitFor(() => - rendered.getByText('data: true first result 0,second result 0'), + expect( + rendered.getByText('data: true first result 0,second result 0'), + ).toBeInTheDocument(), ) expect(results.length).toBe(3) @@ -1237,9 +1253,15 @@ describe('useQueries', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Loading Status: Loading...')) + await waitFor(() => + expect( + rendered.getByText('Loading Status: Loading...'), + ).toBeInTheDocument(), + ) - await waitFor(() => rendered.getByText('Loading Status: Loaded')) + await waitFor(() => + expect(rendered.getByText('Loading Status: Loaded')).toBeInTheDocument(), + ) }) it('should not have stale closures with combine (#6648)', async () => { @@ -1281,7 +1303,9 @@ describe('useQueries', () => { fireEvent.click(rendered.getByRole('button', { name: /inc/i })) - await waitFor(() => rendered.getByText('data: 1 result')) + await waitFor(() => + expect(rendered.getByText('data: 1 result')).toBeInTheDocument(), + ) }) it('should optimize combine if it is a stable reference', async () => { @@ -1610,17 +1634,23 @@ describe('useQueries', () => { const rendered = render() - await waitFor(() => rendered.getByText('data: pending')) await waitFor(() => - rendered.getByText('data: first result, second result, third result'), + expect(rendered.getByText('data: pending')).toBeInTheDocument(), + ) + await waitFor(() => + expect( + rendered.getByText('data: first result, second result, third result'), + ).toBeInTheDocument(), ) fireEvent.click(rendered.getByRole('button', { name: /update/i })) await waitFor(() => - rendered.getByText( - 'data: first result updated, second result, third result', - ), + expect( + rendered.getByText( + 'data: first result updated, second result, third result', + ), + ).toBeInTheDocument(), ) }) }) diff --git a/packages/react-query/src/__tests__/useQuery.promise.test.tsx b/packages/react-query/src/__tests__/useQuery.promise.test.tsx index d4c64efd0fe..915100d3676 100644 --- a/packages/react-query/src/__tests__/useQuery.promise.test.tsx +++ b/packages/react-query/src/__tests__/useQuery.promise.test.tsx @@ -620,12 +620,12 @@ describe('useQuery().promise', () => { { const { withinDOM } = await renderStream.takeRender() - withinDOM().getByText('loading..') + expect(withinDOM().getByText('loading..')).toBeInTheDocument() } { const { withinDOM } = await renderStream.takeRender() - withinDOM().getByText('error boundary') + expect(withinDOM().getByText('error boundary')).toBeInTheDocument() } consoleMock.mockRestore() @@ -979,7 +979,7 @@ describe('useQuery().promise', () => { { const { withinDOM } = await renderStream.takeRender() - withinDOM().getByText('loading..') + expect(withinDOM().getByText('loading..')).toBeInTheDocument() } rendered.getByText('enable').click() @@ -989,7 +989,7 @@ describe('useQuery().promise', () => { { const { withinDOM } = await renderStream.takeRender() - withinDOM().getByText('test1') + expect(withinDOM().getByText('test1')).toBeInTheDocument() } }) diff --git a/packages/react-query/src/__tests__/useQuery.test-d.tsx b/packages/react-query/src/__tests__/useQuery.test-d.tsx index 505344d6e8a..5aa37fc3766 100644 --- a/packages/react-query/src/__tests__/useQuery.test-d.tsx +++ b/packages/react-query/src/__tests__/useQuery.test-d.tsx @@ -1,149 +1,324 @@ import { describe, expectTypeOf, it } from 'vitest' import { useQuery } from '../useQuery' import { queryOptions } from '../queryOptions' -import type { OmitKeyof } from '..' -import type { UseQueryOptions } from '../types' - -describe('initialData', () => { - describe('Config object overload', () => { - it('TData should always be defined when initialData is provided as an object', () => { - const { data } = useQuery({ - queryKey: ['key'], - queryFn: () => ({ wow: true }), - initialData: { wow: true }, - }) +import { queryKey } from './utils' +import type { OmitKeyof, QueryFunction, UseQueryOptions } from '..' + +describe('useQuery', () => { + const key = queryKey() + + // unspecified query function should default to unknown + const noQueryFn = useQuery({ queryKey: key }) + expectTypeOf(noQueryFn.data).toEqualTypeOf() + expectTypeOf(noQueryFn.error).toEqualTypeOf() + + // it should infer the result type from the query function + const fromQueryFn = useQuery({ queryKey: key, queryFn: () => 'test' }) + expectTypeOf(fromQueryFn.data).toEqualTypeOf() + expectTypeOf(fromQueryFn.error).toEqualTypeOf() + expectTypeOf(fromQueryFn.promise).toEqualTypeOf>() + + // it should be possible to specify the result type + const withResult = useQuery({ + queryKey: key, + queryFn: () => 'test', + }) + expectTypeOf(withResult.data).toEqualTypeOf() + expectTypeOf(withResult.error).toEqualTypeOf() + + // it should be possible to specify the error type + const withError = useQuery({ + queryKey: key, + queryFn: () => 'test', + }) + expectTypeOf(withError.data).toEqualTypeOf() + expectTypeOf(withError.error).toEqualTypeOf() + + // it should provide the result type in the configuration + useQuery({ + queryKey: [key], + queryFn: () => Promise.resolve(true), + }) + + // it should be possible to specify a union type as result type + const unionTypeSync = useQuery({ + queryKey: key, + queryFn: () => (Math.random() > 0.5 ? ('a' as const) : ('b' as const)), + }) + expectTypeOf(unionTypeSync.data).toEqualTypeOf<'a' | 'b' | undefined>() + const unionTypeAsync = useQuery<'a' | 'b'>({ + queryKey: key, + queryFn: () => Promise.resolve(Math.random() > 0.5 ? 'a' : 'b'), + }) + expectTypeOf(unionTypeAsync.data).toEqualTypeOf<'a' | 'b' | undefined>() + + // should error when the query function result does not match with the specified type + // @ts-expect-error + useQuery({ queryKey: key, queryFn: () => 'test' }) - expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() + // it should infer the result type from a generic query function + function queryFn(): Promise { + return Promise.resolve({} as T) + } + + const fromGenericQueryFn = useQuery({ + queryKey: key, + queryFn: () => queryFn(), + }) + expectTypeOf(fromGenericQueryFn.data).toEqualTypeOf() + expectTypeOf(fromGenericQueryFn.error).toEqualTypeOf() + + const fromGenericOptionsQueryFn = useQuery({ + queryKey: key, + queryFn: () => queryFn(), + }) + expectTypeOf(fromGenericOptionsQueryFn.data).toEqualTypeOf< + string | undefined + >() + expectTypeOf(fromGenericOptionsQueryFn.error).toEqualTypeOf() + + type MyData = number + type MyQueryKey = readonly ['my-data', number] + + const getMyDataArrayKey: QueryFunction = ({ + queryKey: [, n], + }) => { + return Promise.resolve(n + 42) + } + + useQuery({ + queryKey: ['my-data', 100], + queryFn: getMyDataArrayKey, + }) + + const getMyDataStringKey: QueryFunction = (context) => { + expectTypeOf(context.queryKey).toEqualTypeOf<['1']>() + return Promise.resolve(Number(context.queryKey[0]) + 42) + } + + useQuery({ + queryKey: ['1'], + queryFn: getMyDataStringKey, + }) + + // it should handle query-functions that return Promise + useQuery({ + queryKey: key, + queryFn: () => fetch('return Promise').then((resp) => resp.json()), + }) + + // handles wrapped queries with custom fetcher passed as inline queryFn + const useWrappedQuery = < + TQueryKey extends [string, Record?], + TQueryFnData, + TError, + TData = TQueryFnData, + >( + qk: TQueryKey, + fetcher: ( + obj: TQueryKey[1], + token: string, + // return type must be wrapped with TQueryFnReturn + ) => Promise, + options?: OmitKeyof< + UseQueryOptions, + 'queryKey' | 'queryFn' | 'initialData' + >, + ) => + useQuery({ + queryKey: qk, + queryFn: () => fetcher(qk[1], 'token'), + ...options, }) + const testQuery = useWrappedQuery([''], () => Promise.resolve('1')) + expectTypeOf(testQuery.data).toEqualTypeOf() - it('TData should be defined when passed through queryOptions', () => { - const options = queryOptions({ - queryKey: ['key'], - queryFn: () => { - return { - wow: true, - } - }, - initialData: { - wow: true, - }, - }) - const { data } = useQuery(options) + // handles wrapped queries with custom fetcher passed directly to useQuery + const useWrappedFuncStyleQuery = < + TQueryKey extends [string, Record?], + TQueryFnData, + TError, + TData = TQueryFnData, + >( + qk: TQueryKey, + fetcher: () => Promise, + options?: OmitKeyof< + UseQueryOptions, + 'queryKey' | 'queryFn' | 'initialData' + >, + ) => useQuery({ queryKey: qk, queryFn: fetcher, ...options }) + const testFuncStyle = useWrappedFuncStyleQuery([''], () => + Promise.resolve(true), + ) + expectTypeOf(testFuncStyle.data).toEqualTypeOf() - expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() + it('should return the correct states for a successful query', async () => { + const state = useQuery({ + queryKey: key, + queryFn: () => Promise.resolve('test'), }) - it('should be possible to define a different TData than TQueryFnData using select with queryOptions spread into useQuery', () => { - const options = queryOptions({ - queryKey: ['key'], - queryFn: () => Promise.resolve(1), - }) + if (state.isPending) { + expectTypeOf(state.data).toEqualTypeOf() + expectTypeOf(state.error).toEqualTypeOf() + return pending + } - const query = useQuery({ - ...options, - select: (data) => data > 1, - }) + if (state.isLoadingError) { + expectTypeOf(state.data).toEqualTypeOf() + expectTypeOf(state.error).toEqualTypeOf() + return {state.error.message} + } - expectTypeOf(query.data).toEqualTypeOf() - }) + expectTypeOf(state.data).toEqualTypeOf() + expectTypeOf(state.error).toEqualTypeOf() + return {state.data} + }) + + describe('initialData', () => { + describe('Config object overload', () => { + it('TData should always be defined when initialData is provided as an object', () => { + const { data } = useQuery({ + queryKey: ['key'], + queryFn: () => ({ wow: true }), + initialData: { wow: true }, + }) - it('TData should always be defined when initialData is provided as a function which ALWAYS returns the data', () => { - const { data } = useQuery({ - queryKey: ['key'], - queryFn: () => { - return { + expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() + }) + + it('TData should be defined when passed through queryOptions', () => { + const options = queryOptions({ + queryKey: ['key'], + queryFn: () => { + return { + wow: true, + } + }, + initialData: { wow: true, - } - }, - initialData: () => ({ - wow: true, - }), + }, + }) + const { data } = useQuery(options) + + expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() }) - expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() - }) + it('should be possible to define a different TData than TQueryFnData using select with queryOptions spread into useQuery', () => { + const options = queryOptions({ + queryKey: ['key'], + queryFn: () => Promise.resolve(1), + }) - it('TData should have undefined in the union when initialData is NOT provided', () => { - const { data } = useQuery({ - queryKey: ['key'], - queryFn: () => { - return { + const query = useQuery({ + ...options, + select: (data) => data > 1, + }) + + expectTypeOf(query.data).toEqualTypeOf() + }) + + it('TData should always be defined when initialData is provided as a function which ALWAYS returns the data', () => { + const { data } = useQuery({ + queryKey: ['key'], + queryFn: () => { + return { + wow: true, + } + }, + initialData: () => ({ wow: true, - } - }, + }), + }) + + expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() }) - expectTypeOf(data).toEqualTypeOf<{ wow: boolean } | undefined>() - }) + it('TData should have undefined in the union when initialData is NOT provided', () => { + const { data } = useQuery({ + queryKey: ['key'], + queryFn: () => { + return { + wow: true, + } + }, + }) - it('TData should have undefined in the union when initialData is provided as a function which can return undefined', () => { - const { data } = useQuery({ - queryKey: ['key'], - queryFn: () => { - return { - wow: true, - } - }, - initialData: () => undefined as { wow: boolean } | undefined, + expectTypeOf(data).toEqualTypeOf<{ wow: boolean } | undefined>() }) - expectTypeOf(data).toEqualTypeOf<{ wow: boolean } | undefined>() - }) + it('TData should have undefined in the union when initialData is provided as a function which can return undefined', () => { + const { data } = useQuery({ + queryKey: ['key'], + queryFn: () => { + return { + wow: true, + } + }, + initialData: () => undefined as { wow: boolean } | undefined, + }) - it('TData should be narrowed after an isSuccess check when initialData is provided as a function which can return undefined', () => { - const { data, isSuccess } = useQuery({ - queryKey: ['key'], - queryFn: () => { - return { - wow: true, - } - }, - initialData: () => undefined as { wow: boolean } | undefined, + expectTypeOf(data).toEqualTypeOf<{ wow: boolean } | undefined>() }) - if (isSuccess) { - expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() - } - }) + it('TData should be narrowed after an isSuccess check when initialData is provided as a function which can return undefined', () => { + const { data, isSuccess } = useQuery({ + queryKey: ['key'], + queryFn: () => { + return { + wow: true, + } + }, + initialData: () => undefined as { wow: boolean } | undefined, + }) - it('data should not have undefined when initialData is provided', () => { - const { data } = useQuery({ - queryKey: ['query-key'], - initialData: 42, + if (isSuccess) { + expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() + } }) - expectTypeOf(data).toEqualTypeOf() + it('data should not have undefined when initialData is provided', () => { + const { data } = useQuery({ + queryKey: ['query-key'], + initialData: 42, + }) + + expectTypeOf(data).toEqualTypeOf() + }) }) - }) - describe('custom hook', () => { - it('should allow custom hooks using UseQueryOptions', () => { - type Data = string + describe('custom hook', () => { + it('should allow custom hooks using UseQueryOptions', () => { + type Data = string - const useCustomQuery = ( - options?: OmitKeyof, 'queryKey' | 'queryFn'>, - ) => { - return useQuery({ - ...options, - queryKey: ['todos-key'], - queryFn: () => Promise.resolve('data'), - }) - } + const useCustomQuery = ( + options?: OmitKeyof, 'queryKey' | 'queryFn'>, + ) => { + return useQuery({ + ...options, + queryKey: ['todos-key'], + queryFn: () => Promise.resolve('data'), + }) + } - const { data } = useCustomQuery() + const { data } = useCustomQuery() - expectTypeOf(data).toEqualTypeOf() + expectTypeOf(data).toEqualTypeOf() + }) }) - }) - describe('structuralSharing', () => { - it('should restrict to same types', () => { - useQuery({ - queryKey: ['key'], - queryFn: () => 5, - structuralSharing: (_oldData, newData) => { - return newData - }, + describe('structuralSharing', () => { + it('should be able to use structuralSharing with unknown types', () => { + // https://github.com/TanStack/query/issues/6525#issuecomment-1938411343 + useQuery({ + queryKey: ['key'], + queryFn: () => 5, + structuralSharing: (oldData, newData) => { + expectTypeOf(oldData).toBeUnknown() + expectTypeOf(newData).toBeUnknown() + return newData + }, + }) }) }) }) diff --git a/packages/react-query/src/__tests__/useQuery.test.tsx b/packages/react-query/src/__tests__/useQuery.test.tsx index 935b0734c1a..0cc6d639fb1 100644 --- a/packages/react-query/src/__tests__/useQuery.test.tsx +++ b/packages/react-query/src/__tests__/useQuery.test.tsx @@ -1,5 +1,5 @@ -import { describe, expect, expectTypeOf, it, test, vi } from 'vitest' -import { act, fireEvent, render, waitFor } from '@testing-library/react' +import { afterEach, beforeEach, describe, expect, it, test, vi } from 'vitest' +import { act, fireEvent, render } from '@testing-library/react' import * as React from 'react' import { ErrorBoundary } from 'react-error-boundary' import { dehydrate, hydrate, skipToken } from '@tanstack/query-core' @@ -14,173 +14,25 @@ import { setActTimeout, sleep, } from './utils' -import type { - DefinedUseQueryResult, - OmitKeyof, - QueryFunction, - UseQueryOptions, - UseQueryResult, -} from '..' +import type { DefinedUseQueryResult, QueryFunction, UseQueryResult } from '..' import type { Mock } from 'vitest' describe('useQuery', () => { - const queryCache = new QueryCache() - const queryClient = createQueryClient({ + let queryCache = new QueryCache() + let queryClient = createQueryClient({ queryCache, }) - it('should return the correct types', () => { - const key = queryKey() - - // @ts-expect-error - function Page() { - // unspecified query function should default to unknown - const noQueryFn = useQuery({ queryKey: key }) - expectTypeOf(noQueryFn.data).toEqualTypeOf() - expectTypeOf(noQueryFn.error).toEqualTypeOf() - - // it should infer the result type from the query function - const fromQueryFn = useQuery({ queryKey: key, queryFn: () => 'test' }) - expectTypeOf(fromQueryFn.data).toEqualTypeOf() - expectTypeOf(fromQueryFn.error).toEqualTypeOf() - expectTypeOf(fromQueryFn.promise).toEqualTypeOf>() - - // it should be possible to specify the result type - const withResult = useQuery({ - queryKey: key, - queryFn: () => 'test', - }) - expectTypeOf(withResult.data).toEqualTypeOf() - expectTypeOf(withResult.error).toEqualTypeOf() - - // it should be possible to specify the error type - const withError = useQuery({ - queryKey: key, - queryFn: () => 'test', - }) - expectTypeOf(withError.data).toEqualTypeOf() - expectTypeOf(withError.error).toEqualTypeOf() - - // it should provide the result type in the configuration - useQuery({ - queryKey: [key], - queryFn: () => Promise.resolve(true), - }) - - // it should be possible to specify a union type as result type - const unionTypeSync = useQuery({ - queryKey: key, - queryFn: () => (Math.random() > 0.5 ? ('a' as const) : ('b' as const)), - }) - expectTypeOf(unionTypeSync.data).toEqualTypeOf<'a' | 'b' | undefined>() - const unionTypeAsync = useQuery<'a' | 'b'>({ - queryKey: key, - queryFn: () => Promise.resolve(Math.random() > 0.5 ? 'a' : 'b'), - }) - expectTypeOf(unionTypeAsync.data).toEqualTypeOf<'a' | 'b' | undefined>() - - // should error when the query function result does not match with the specified type - // @ts-expect-error - useQuery({ queryKey: key, queryFn: () => 'test' }) - - // it should infer the result type from a generic query function - function queryFn(): Promise { - return Promise.resolve({} as T) - } - - const fromGenericQueryFn = useQuery({ - queryKey: key, - queryFn: () => queryFn(), - }) - expectTypeOf(fromGenericQueryFn.data).toEqualTypeOf() - expectTypeOf(fromGenericQueryFn.error).toEqualTypeOf() - - const fromGenericOptionsQueryFn = useQuery({ - queryKey: key, - queryFn: () => queryFn(), - }) - expectTypeOf(fromGenericOptionsQueryFn.data).toEqualTypeOf< - string | undefined - >() - expectTypeOf( - fromGenericOptionsQueryFn.error, - ).toEqualTypeOf() - - type MyData = number - type MyQueryKey = readonly ['my-data', number] - - const getMyDataArrayKey: QueryFunction = ({ - queryKey: [, n], - }) => { - return Promise.resolve(n + 42) - } - - useQuery({ - queryKey: ['my-data', 100], - queryFn: getMyDataArrayKey, - }) - - const getMyDataStringKey: QueryFunction = (context) => { - expectTypeOf(context.queryKey).toEqualTypeOf<['1']>() - return Promise.resolve(Number(context.queryKey[0]) + 42) - } - - useQuery({ - queryKey: ['1'], - queryFn: getMyDataStringKey, - }) + beforeEach(() => { + queryCache = new QueryCache() + queryClient = createQueryClient({ + queryCache, + }) + vi.useFakeTimers() + }) - // it should handle query-functions that return Promise - useQuery({ - queryKey: key, - queryFn: () => fetch('return Promise').then((resp) => resp.json()), - }) - - // handles wrapped queries with custom fetcher passed as inline queryFn - const useWrappedQuery = < - TQueryKey extends [string, Record?], - TQueryFnData, - TError, - TData = TQueryFnData, - >( - qk: TQueryKey, - fetcher: ( - obj: TQueryKey[1], - token: string, - // return type must be wrapped with TQueryFnReturn - ) => Promise, - options?: OmitKeyof< - UseQueryOptions, - 'queryKey' | 'queryFn' | 'initialData' - >, - ) => - useQuery({ - queryKey: qk, - queryFn: () => fetcher(qk[1], 'token'), - ...options, - }) - const testQuery = useWrappedQuery([''], () => Promise.resolve('1')) - expectTypeOf(testQuery.data).toEqualTypeOf() - - // handles wrapped queries with custom fetcher passed directly to useQuery - const useWrappedFuncStyleQuery = < - TQueryKey extends [string, Record?], - TQueryFnData, - TError, - TData = TQueryFnData, - >( - qk: TQueryKey, - fetcher: () => Promise, - options?: OmitKeyof< - UseQueryOptions, - 'queryKey' | 'queryFn' | 'initialData' - >, - ) => useQuery({ queryKey: qk, queryFn: fetcher, ...options }) - const testFuncStyle = useWrappedFuncStyleQuery([''], () => - Promise.resolve(true), - ) - expectTypeOf(testFuncStyle.data).toEqualTypeOf() - } + afterEach(() => { + vi.useRealTimers() }) // See https://github.com/tannerlinsley/react-query/issues/105 @@ -190,10 +42,7 @@ describe('useQuery', () => { function Page() { const { data = 'default' } = useQuery({ queryKey: key, - queryFn: async () => { - await sleep(10) - return 'test' - }, + queryFn: () => sleep(10).then(() => 'test'), }) return ( @@ -205,9 +54,11 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - rendered.getByText('default') + expect(rendered.getByText('default')).toBeInTheDocument() - await waitFor(() => rendered.getByText('test')) + await vi.waitFor(() => + expect(rendered.getByText('test')).toBeInTheDocument(), + ) }) it('should return the correct states for a successful query', async () => { @@ -226,25 +77,19 @@ describe('useQuery', () => { states.push(state) if (state.isPending) { - expectTypeOf(state.data).toEqualTypeOf() - expectTypeOf(state.error).toEqualTypeOf() return pending } if (state.isLoadingError) { - expectTypeOf(state.data).toEqualTypeOf() - expectTypeOf(state.error).toEqualTypeOf() return {state.error.message} } - expectTypeOf(state.data).toEqualTypeOf() - expectTypeOf(state.error).toEqualTypeOf() return {state.data} } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('test')) + await vi.waitFor(() => rendered.getByText('test')) expect(states.length).toEqual(2) @@ -335,7 +180,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Status: error')) + await vi.waitFor(() => rendered.getByText('Status: error')) expect(states[0]).toEqual({ data: undefined, @@ -449,14 +294,16 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - rendered.getByText('data: prefetched') - rendered.getByText('isFetched: true') - rendered.getByText('isFetchedAfterMount: false') + expect(rendered.getByText('data: prefetched')).toBeInTheDocument() + expect(rendered.getByText('isFetched: true')).toBeInTheDocument() + expect(rendered.getByText('isFetchedAfterMount: false')).toBeInTheDocument() - await waitFor(() => { - rendered.getByText('data: new data') - rendered.getByText('isFetched: true') - rendered.getByText('isFetchedAfterMount: true') + await vi.waitFor(() => { + expect(rendered.getByText('data: new data')).toBeInTheDocument() + expect(rendered.getByText('isFetched: true')).toBeInTheDocument() + expect( + rendered.getByText('isFetchedAfterMount: true'), + ).toBeInTheDocument() }) }) @@ -490,7 +337,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(20) + await vi.advanceTimersByTimeAsync(15) // first refetch only, second refetch is ignored expect(fetchCount).toBe(1) }) @@ -525,7 +372,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(20) + await vi.advanceTimersByTimeAsync(15) // first refetch (gets cancelled) and second refetch expect(fetchCount).toBe(2) }) @@ -559,7 +406,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(20) + await vi.advanceTimersByTimeAsync(15) // first refetch will not get cancelled, second one gets skipped expect(fetchCount).toBe(1) }) @@ -578,8 +425,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) - + await vi.advanceTimersByTimeAsync(0) expect(states.length).toBe(2) expect(states[0]).toMatchObject({ data: undefined }) expect(states[1]).toMatchObject({ data: 'data' }) @@ -625,11 +471,11 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await rendered.findByText('data: 1') + await vi.waitFor(() => rendered.findByText('data: 1')) fireEvent.click(rendered.getByRole('button', { name: /toggle/i })) - await rendered.findByText('data: 2') + await vi.waitFor(() => rendered.findByText('data: 2')) expect(states.length).toBe(4) // First load @@ -696,19 +542,16 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('data') }) fireEvent.click(rendered.getByRole('button', { name: 'remove' })) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('data') }) - // required to make sure no additional renders are happening after data is successfully fetched for the second time - await sleep(100) - expect(states.length).toBe(4) // First load expect(states[0]).toMatchObject({ @@ -752,9 +595,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) - - expect(states.length).toBe(2) + await vi.waitFor(() => expect(states.length).toBe(2)) expect(states[0]).toMatchObject({ data: undefined }) expect(states[1]).toMatchObject({ data: 'test' }) }) @@ -777,8 +618,6 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) - expect(states.length).toBe(1) expect(states[0]).toMatchObject({ data: 'prefetched' }) }) @@ -800,7 +639,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('test') }) @@ -826,7 +665,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('test') }) @@ -855,7 +694,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('error') }) @@ -892,55 +731,53 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('error: Select Error')) + await vi.waitFor(() => rendered.getByText('error: Select Error')) expect(runs).toEqual(1) fireEvent.click(rendered.getByRole('button', { name: 'rerender' })) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(runs).toEqual(1) fireEvent.click(rendered.getByRole('button', { name: 'refetch' })) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(runs).toEqual(2) }) it('should track properties and only re-render when a tracked property changes', async () => { const key = queryKey() const states: Array> = [] + let count = 0 function Page() { const state = useQuery({ queryKey: key, queryFn: async () => { await sleep(10) - return 'test' + count++ + return 'test' + count }, }) states.push(state) - const { refetch, data } = state - - React.useEffect(() => { - setActTimeout(() => { - if (data) { - refetch() - } - }, 20) - }, [refetch, data]) - return (
-

{data ?? null}

+

{state.data ?? null}

+
) } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('test')) + await vi.waitFor(() => rendered.getByText('test1')) - expect(states.length).toBe(2) + fireEvent.click(rendered.getByRole('button', { name: /refetch/i })) + + await vi.waitFor(() => rendered.getByText('test2')) + + expect(states.length).toBe(3) expect(states[0]).toMatchObject({ data: undefined }) - expect(states[1]).toMatchObject({ data: 'test' }) + expect(states[1]).toMatchObject({ data: 'test1' }) + expect(states[2]).toMatchObject({ data: 'test2' }) }) it('should always re-render if we are tracking props but not using any', async () => { @@ -966,14 +803,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await waitFor(() => { - expect(renderCount).toBe(2) - }) - - // give it a bit more time to make sure no additional renders are triggered - await sleep(20) - - expect(renderCount).toBe(2) + await vi.waitFor(() => expect(renderCount).toBe(2)) expect(states.length).toBe(2) expect(states[0]).toMatchObject({ data: undefined }) expect(states[1]).toMatchObject({ data: 'test' }) @@ -1007,12 +837,12 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: 1')) + await vi.waitFor(() => rendered.getByText('data: 1')) fireEvent.click(rendered.getByRole('button', { name: /remove/i })) - await sleep(20) + await vi.advanceTimersByTimeAsync(20) fireEvent.click(rendered.getByRole('button', { name: /rerender/i })) - await waitFor(() => rendered.getByText('data: 2')) + await vi.waitFor(() => rendered.getByText('data: 2')) expect(states.length).toBe(4) // Initial @@ -1057,12 +887,12 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: 1')) + await vi.waitFor(() => rendered.getByText('data: 1')) fireEvent.click(rendered.getByRole('button', { name: /remove/i })) - await sleep(50) + await vi.advanceTimersByTimeAsync(50) fireEvent.click(rendered.getByRole('button', { name: /refetch/i })) - await waitFor(() => rendered.getByText('data: 2')) + await vi.waitFor(() => rendered.getByText('data: 2')) expect(states.length).toBe(4) // Initial @@ -1117,12 +947,12 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: false')) - await sleep(20) + await vi.waitFor(() => rendered.getByText('data: false')) + await vi.advanceTimersByTimeAsync(20) fireEvent.click(rendered.getByRole('button', { name: /refetch/i })) - await waitFor(() => rendered.getByText('data: true')) + await vi.waitFor(() => rendered.getByText('data: true')) - await waitFor(() => expect(states.length).toBe(4)) + await vi.waitFor(() => expect(states.length).toBe(4)) const todos = states[2]?.data const todo1 = todos?.[0] @@ -1171,9 +1001,13 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: set')) + await vi.waitFor(() => + expect(rendered.getByText('data: set')).toBeInTheDocument(), + ) fireEvent.click(rendered.getByRole('button', { name: /refetch/i })) - await waitFor(() => rendered.getByText('data: fetched')) + await vi.waitFor(() => + expect(rendered.getByText('data: fetched')).toBeInTheDocument(), + ) }) it('should update query stale state and refetch when invalidated with invalidateQueries', async () => { @@ -1206,15 +1040,21 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => - rendered.getByText('data: 1, isStale: false, isFetching: false'), + await vi.waitFor(() => + expect( + rendered.getByText('data: 1, isStale: false, isFetching: false'), + ).toBeInTheDocument(), ) fireEvent.click(rendered.getByRole('button', { name: /invalidate/i })) - await waitFor(() => - rendered.getByText('data: 1, isStale: true, isFetching: true'), + await vi.waitFor(() => + expect( + rendered.getByText('data: 1, isStale: true, isFetching: true'), + ).toBeInTheDocument(), ) - await waitFor(() => - rendered.getByText('data: 2, isStale: false, isFetching: false'), + await vi.waitFor(() => + expect( + rendered.getByText('data: 2, isStale: false, isFetching: false'), + ).toBeInTheDocument(), ) }) @@ -1247,7 +1087,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(50) + await vi.advanceTimersByTimeAsync(50) expect(states.length).toBe(1) expect(states[0]).toMatchObject({ @@ -1287,8 +1127,6 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(50) - expect(states.length).toBe(1) expect(states[0]).toMatchObject({ data: undefined, @@ -1327,18 +1165,15 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: 0')) + await vi.waitFor(() => rendered.getByText('data: 0')) fireEvent.click(rendered.getByRole('button', { name: /increment/i })) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('count: 1') rendered.getByText('data: undefined') }) - // making sure no additional fetches are triggered - await sleep(50) - expect(states.length).toBe(3) // Fetch query @@ -1389,11 +1224,11 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: 0')) + await vi.waitFor(() => rendered.getByText('data: 0')) fireEvent.click(rendered.getByRole('button', { name: 'setCount' })) - await waitFor(() => rendered.getByText('data: 1')) + await vi.waitFor(() => rendered.getByText('data: 1')) // Initial expect(states[0]).toMatchObject({ @@ -1458,11 +1293,11 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: 0')) + await vi.waitFor(() => rendered.getByText('data: 0')) fireEvent.click(rendered.getByRole('button', { name: 'setCount' })) - await waitFor(() => rendered.getByText('data: 1')) + await vi.waitFor(() => rendered.getByText('data: 1')) // Initial expect(states[0]).toMatchObject({ @@ -1533,13 +1368,13 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: 0')) + await vi.waitFor(() => rendered.getByText('data: 0')) fireEvent.click(rendered.getByRole('button', { name: 'setCount' })) fireEvent.click(rendered.getByRole('button', { name: 'setCount' })) fireEvent.click(rendered.getByRole('button', { name: 'setCount' })) - await waitFor(() => rendered.getByText('data: 3')) + await vi.waitFor(() => rendered.getByText('data: 3')) const allPreviousKeysAreTheFirstQueryKey = keys.every( (k) => JSON.stringify(k) === JSON.stringify([key, 0]), @@ -1581,13 +1416,13 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: 0')) + await vi.waitFor(() => rendered.getByText('data: 0')) fireEvent.click(rendered.getByRole('button', { name: 'setCount' })) fireEvent.click(rendered.getByRole('button', { name: 'setCount' })) fireEvent.click(rendered.getByRole('button', { name: 'setCount' })) - await waitFor(() => rendered.getByText('data: 3')) + await vi.waitFor(() => rendered.getByText('data: 3')) // Initial expect(states[0]).toMatchObject({ data: undefined, @@ -1662,13 +1497,13 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: 0')) + await vi.waitFor(() => rendered.getByText('data: 0')) act(() => rendered.rerender()) - await waitFor(() => rendered.getByText('data: 1')) + await vi.waitFor(() => rendered.getByText('data: 1')) act(() => rendered.rerender()) - await waitFor(() => rendered.getByText('error: Error test')) + await vi.waitFor(() => rendered.getByText('error: Error test')) - await waitFor(() => expect(states.length).toBe(6)) + await vi.waitFor(() => expect(states.length).toBe(6)) // Initial expect(states[0]).toMatchObject({ data: undefined, @@ -1751,13 +1586,13 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('data: 0, count: 0, isFetching: false'), ) fireEvent.click(rendered.getByRole('button', { name: 'inc' })) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('data: 1, count: 1, isFetching: false'), ) @@ -1824,31 +1659,28 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('data: undefined') }) fireEvent.click(rendered.getByRole('button', { name: 'refetch' })) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('data: 0') }) fireEvent.click(rendered.getByRole('button', { name: 'setCount' })) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('data: 0') }) fireEvent.click(rendered.getByRole('button', { name: 'refetch' })) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('data: 1') }) - // making sure no additional renders are triggered - await sleep(20) - expect(states.length).toBe(6) // Disabled query @@ -1901,7 +1733,7 @@ describe('useQuery', () => { queryClient.setQueryData([key, 10], 10) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) function Page() { const [count, setCount] = React.useState(10) @@ -1938,7 +1770,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(100) + await vi.advanceTimersByTimeAsync(100) expect(states.length).toBe(5) @@ -2020,10 +1852,10 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: 1')) + await vi.waitFor(() => rendered.getByText('data: 1')) fireEvent.click(rendered.getByRole('button', { name: /refetch/i })) - await waitFor(() => expect(states.length).toBe(4)) + await vi.waitFor(() => expect(states.length).toBe(4)) expect(states[0]).toMatchObject({ data: undefined, @@ -2045,7 +1877,7 @@ describe('useQuery', () => { const states1: Array> = [] const states2: Array> = [] - await queryClient.prefetchQuery({ + queryClient.prefetchQuery({ queryKey: key, queryFn: async () => { await sleep(10) @@ -2053,7 +1885,7 @@ describe('useQuery', () => { }, }) - await sleep(20) + await vi.advanceTimersByTimeAsync(20) function FirstComponent() { const state = useQuery({ @@ -2094,7 +1926,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(200) + await vi.advanceTimersByTimeAsync(200) expect(states1.length).toBe(4) expect(states2.length).toBe(3) @@ -2157,7 +1989,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(100) + await vi.advanceTimersByTimeAsync(100) expect(states.length).toBe(3) expect(states[0]).toMatchObject({ isStale: true }) @@ -2213,14 +2045,20 @@ describe('useQuery', () => { fireEvent.click(rendered.getByRole('button', { name: /set id/i })) - await waitFor(() => { - rendered.getByText('User fetching status is fetching') + await vi.waitFor(() => { + expect( + rendered.getByText('User fetching status is fetching'), + ).toBeInTheDocument() }) - await waitFor(() => { - rendered.getByText('UserInfo data is {"id":42,"name":"John"}') + await vi.waitFor(() => { + expect( + rendered.getByText('UserInfo data is {"id":42,"name":"John"}'), + ).toBeInTheDocument() }) - rendered.getByText('User fetching status is idle') + expect( + rendered.getByText('User fetching status is idle'), + ).toBeInTheDocument() }) describe('notifyOnChangeProps', () => { @@ -2248,13 +2086,13 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('test') }) fireEvent.click(rendered.getByRole('button', { name: 'refetch' })) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('test') }) @@ -2262,7 +2100,7 @@ describe('useQuery', () => { expect(states[1]).toMatchObject({ data: 'test' }) // make sure no additional renders happen - await sleep(50) + await vi.advanceTimersByTimeAsync(50) expect(states.length).toBe(2) }) it('should not re-render when it should only re-render on data changes and the data did not change', async () => { @@ -2299,14 +2137,14 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('test') }) fireEvent.click(rendered.getByRole('button', { name: 'refetch' })) // sleep is required to make sure no additional renders happen after click - await sleep(20) + await vi.advanceTimersByTimeAsync(20) expect(states.length).toBe(2) expect(states[0]).toMatchObject({ @@ -2356,14 +2194,13 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('test') }) fireEvent.click(rendered.getByRole('button', { name: 'refetch' })) - // sleep is required to make sure no additional renders happen after click - await sleep(20) + await vi.advanceTimersByTimeAsync(20) expect(states.length).toBe(2) expect(states[0]).toMatchObject({ @@ -2432,7 +2269,7 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('fetch counter: 1') }) @@ -2454,8 +2291,7 @@ describe('useQuery', () => { ) fireEvent.click(rendered.getByRole('button', { name: 'refetch' })) - // sleep is required to make sure no additional renders happen after click - await sleep(20) + await vi.advanceTimersByTimeAsync(20) // still expect to only have two re-renders from the initial fetch expect(states.length).toBe(2) @@ -2465,11 +2301,10 @@ describe('useQuery', () => { ) fireEvent.click(rendered.getByRole('button', { name: 'refetch' })) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('fetch counter: 3') }) - // sleep is required to make sure no additional renders happen after click - await sleep(20) + await vi.advanceTimersByTimeAsync(20) expect(states.length).toBe(4) expect(states[2]).toMatchObject({ @@ -2518,10 +2353,10 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - rendered.getByText('First Data: init') - rendered.getByText('Second Data: init') - rendered.getByText('First Status: success') - rendered.getByText('Second Status: success') + expect(rendered.getByText('First Data: init')).toBeInTheDocument() + expect(rendered.getByText('Second Data: init')).toBeInTheDocument() + expect(rendered.getByText('First Status: success')).toBeInTheDocument() + expect(rendered.getByText('Second Status: success')).toBeInTheDocument() }) it('should update query options', () => { @@ -2567,7 +2402,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => { + await vi.waitFor(() => { rendered.getByText('data data') }) @@ -2593,7 +2428,9 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('new')) + await vi.waitFor(() => + expect(rendered.getByText('new')).toBeInTheDocument(), + ) }) // See https://github.com/tannerlinsley/react-query/issues/170 @@ -2625,9 +2462,19 @@ describe('useQuery', () => { // use "act" to wait for state update and prevent console warning - rendered.getByText('First Status: pending, idle') - await waitFor(() => rendered.getByText('Second Status: pending, fetching')) - await waitFor(() => rendered.getByText('Second Status: success, idle')) + expect( + rendered.getByText('First Status: pending, idle'), + ).toBeInTheDocument() + await vi.waitFor(() => + expect( + rendered.getByText('Second Status: pending, fetching'), + ).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect( + rendered.getByText('Second Status: success, idle'), + ).toBeInTheDocument(), + ) }) // See https://github.com/tannerlinsley/react-query/issues/144 @@ -2648,7 +2495,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - rendered.getByText('status: pending') + expect(rendered.getByText('status: pending')).toBeInTheDocument() }) it('should not refetch query on focus when `enabled` is set to `false`', async () => { @@ -2673,7 +2520,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('default')) + await vi.waitFor(() => rendered.getByText('default')) act(() => { window.dispatchEvent(new Event('visibilitychange')) @@ -2700,13 +2547,13 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) act(() => { window.dispatchEvent(new Event('visibilitychange')) }) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(states.length).toBe(2) expect(states[0]).toMatchObject({ data: undefined, isFetching: true }) @@ -2731,13 +2578,13 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) act(() => { window.dispatchEvent(new Event('visibilitychange')) }) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(states.length).toBe(2) expect(states[0]).toMatchObject({ data: undefined, isFetching: true }) @@ -2762,13 +2609,13 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) act(() => { window.dispatchEvent(new Event('visibilitychange')) }) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(states.length).toBe(2) expect(states[0]).toMatchObject({ data: undefined, isFetching: true }) @@ -2803,13 +2650,21 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: 0, isFetching: false')) + await vi.waitFor(() => + expect( + rendered.getByText('data: 0, isFetching: false'), + ).toBeInTheDocument(), + ) act(() => { window.dispatchEvent(new Event('visibilitychange')) }) - await waitFor(() => rendered.getByText('data: 1, isFetching: false')) + await vi.waitFor(() => + expect( + rendered.getByText('data: 1, isFetching: false'), + ).toBeInTheDocument(), + ) }) it('should calculate focus behavior for `refetchOnWindowFocus` depending on function', async () => { @@ -2835,7 +2690,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await rendered.findByText('data: 0') + await vi.waitFor(() => rendered.findByText('data: 0')) expect(states.length).toBe(2) expect(states[0]).toMatchObject({ data: undefined, isFetching: true }) @@ -2845,7 +2700,7 @@ describe('useQuery', () => { window.dispatchEvent(new Event('visibilitychange')) }) - await rendered.findByText('data: 1') + await vi.waitFor(() => rendered.findByText('data: 1')) // refetch should happen expect(states.length).toBe(4) @@ -2857,7 +2712,7 @@ describe('useQuery', () => { window.dispatchEvent(new Event('visibilitychange')) }) - await sleep(20) + await vi.advanceTimersByTimeAsync(20) // no more refetch now expect(states.length).toBe(4) @@ -2885,7 +2740,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(states.length).toBe(2) expect(states[0]).toMatchObject({ @@ -2909,7 +2764,7 @@ describe('useQuery', () => { queryFn: () => 'prefetched', }) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) function Page() { const state = useQuery({ @@ -2924,7 +2779,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(states.length).toBe(2) expect(states[0]).toMatchObject({ @@ -2964,8 +2819,12 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('error')) - await waitFor(() => rendered.getByText('Error test')) + await vi.waitFor(() => + expect(rendered.getByText('error')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('Error test')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -2999,7 +2858,9 @@ describe('useQuery', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) + await vi.waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -3024,9 +2885,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) - - await waitFor(() => expect(queryClient.isFetching()).toBe(0)) + await vi.waitFor(() => expect(queryClient.isFetching()).toBe(0)) expect(result?.data).toBe('data') }) @@ -3058,8 +2917,12 @@ describe('useQuery', () => { , ) - await waitFor(() => rendered.getByText('error')) - await waitFor(() => rendered.getByText('Local Error')) + await vi.waitFor(() => + expect(rendered.getByText('error')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('Local Error')).toBeInTheDocument(), + ) }) it('should throw error instead of setting status when error should be thrown', async () => { @@ -3100,8 +2963,12 @@ describe('useQuery', () => { , ) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('Remote Error')) + await vi.waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('Remote Error')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -3144,14 +3011,26 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('failureCount: 1')) - await waitFor(() => rendered.getByText('failureReason: some error')) + await vi.waitFor(() => + expect(rendered.getByText('failureCount: 1')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect( + rendered.getByText('failureReason: some error'), + ).toBeInTheDocument(), + ) fireEvent.click(rendered.getByRole('button', { name: /hide/i })) - await waitFor(() => rendered.getByRole('button', { name: /show/i })) + await vi.waitFor(() => + expect( + rendered.getByRole('button', { name: /show/i }), + ).toBeInTheDocument(), + ) fireEvent.click(rendered.getByRole('button', { name: /show/i })) - await waitFor(() => rendered.getByText('error: some error')) + await vi.waitFor(() => + expect(rendered.getByText('error: some error')).toBeInTheDocument(), + ) - expect(count).toBe(3) + expect(count).toBe(4) }) it('should restart when observers unmount and remount while waiting for a retry when query was cancelled in between (#3031)', async () => { @@ -3196,13 +3075,25 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('failureCount: 1')) - await waitFor(() => rendered.getByText('failureReason: some error')) + await vi.waitFor(() => + expect(rendered.getByText('failureCount: 1')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect( + rendered.getByText('failureReason: some error'), + ).toBeInTheDocument(), + ) fireEvent.click(rendered.getByRole('button', { name: /hide/i })) fireEvent.click(rendered.getByRole('button', { name: /cancel/i })) - await waitFor(() => rendered.getByRole('button', { name: /show/i })) + await vi.waitFor(() => + expect( + rendered.getByRole('button', { name: /show/i }), + ).toBeInTheDocument(), + ) fireEvent.click(rendered.getByRole('button', { name: /show/i })) - await waitFor(() => rendered.getByText('error: some error')) + await vi.waitFor(() => + expect(rendered.getByText('error: some error')).toBeInTheDocument(), + ) // initial fetch (1), which will be cancelled, followed by new mount(2) + 2 retries = 4 expect(count).toBe(4) @@ -3236,8 +3127,8 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: data')) - await waitFor(() => expect(states.length).toBe(3)) + await vi.waitFor(() => rendered.getByText('data: data')) + await vi.waitFor(() => expect(states.length).toBe(3)) expect(states[0]).toMatchObject({ data: 'prefetched', @@ -3272,7 +3163,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(50) + await vi.advanceTimersByTimeAsync(50) expect(states.length).toBe(2) @@ -3305,7 +3196,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(100) + await vi.advanceTimersByTimeAsync(100) expect(states.length).toBe(2) expect(states[0]).toMatchObject({ @@ -3340,7 +3231,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(100) + await vi.advanceTimersByTimeAsync(100) expect(states.length).toBe(3) expect(states[0]).toMatchObject({ @@ -3378,7 +3269,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(100) + await vi.advanceTimersByTimeAsync(100) expect(states.length).toBe(2) expect(states[0]).toMatchObject({ @@ -3418,7 +3309,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(100) + await vi.advanceTimersByTimeAsync(100) expect(states.length).toBe(2) // Initial @@ -3454,12 +3345,14 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('pending')) - await waitFor(() => rendered.getByText('error')) + await vi.waitFor(() => rendered.getByText('pending')) + await vi.waitFor(() => rendered.getByText('error')) // query should fail `retry + 1` times, since first time isn't a "retry" - await waitFor(() => rendered.getByText('Failed 2 times')) - await waitFor(() => rendered.getByText('Failed because Error test Barrett')) + await vi.waitFor(() => rendered.getByText('Failed 2 times')) + await vi.waitFor(() => + rendered.getByText('Failed because Error test Barrett'), + ) expect(queryFn).toHaveBeenCalledTimes(2) }) @@ -3497,13 +3390,13 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('pending')) - await waitFor(() => rendered.getByText('error')) + await vi.waitFor(() => rendered.getByText('pending')) + await vi.waitFor(() => rendered.getByText('error')) - await waitFor(() => rendered.getByText('Failed 2 times')) - await waitFor(() => rendered.getByText('Failed because NoRetry')) + await vi.waitFor(() => rendered.getByText('Failed 2 times')) + await vi.waitFor(() => rendered.getByText('Failed because NoRetry')) - await waitFor(() => rendered.getByText('NoRetry')) + await vi.waitFor(() => rendered.getByText('NoRetry')) expect(queryFn).toHaveBeenCalledTimes(2) }) @@ -3537,12 +3430,14 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(queryFn).toHaveBeenCalledTimes(1) - await waitFor(() => rendered.getByText('Failed because DelayError: 50ms')) - await waitFor(() => rendered.getByText('Failed 2 times')) + await vi.waitFor(() => + rendered.getByText('Failed because DelayError: 50ms'), + ) + await vi.waitFor(() => rendered.getByText('Failed 2 times')) expect(queryFn).toHaveBeenCalledTimes(2) }) @@ -3580,15 +3475,31 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) // The query should display the first error result - await waitFor(() => rendered.getByText('failureCount 1')) - await waitFor(() => rendered.getByText('failureReason fetching error 1')) - await waitFor(() => rendered.getByText('status pending')) - await waitFor(() => rendered.getByText('error null')) + await vi.waitFor(() => + expect(rendered.getByText('failureCount 1')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect( + rendered.getByText('failureReason fetching error 1'), + ).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('status pending')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('error null')).toBeInTheDocument(), + ) // Check if the query really paused - await sleep(10) - await waitFor(() => rendered.getByText('failureCount 1')) - await waitFor(() => rendered.getByText('failureReason fetching error 1')) + await vi.advanceTimersByTimeAsync(10) + await vi.waitFor(() => + expect(rendered.getByText('failureCount 1')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect( + rendered.getByText('failureReason fetching error 1'), + ).toBeInTheDocument(), + ) act(() => { // reset visibilityState to original value @@ -3597,15 +3508,31 @@ describe('useQuery', () => { }) // Wait for the final result - await waitFor(() => rendered.getByText('failureCount 4')) - await waitFor(() => rendered.getByText('failureReason fetching error 4')) - await waitFor(() => rendered.getByText('status error')) - await waitFor(() => rendered.getByText('error fetching error 4')) + await vi.waitFor(() => + expect(rendered.getByText('failureCount 4')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect( + rendered.getByText('failureReason fetching error 4'), + ).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('status error')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('error fetching error 4')).toBeInTheDocument(), + ) // Check if the query really stopped - await sleep(10) - await waitFor(() => rendered.getByText('failureCount 4')) - await waitFor(() => rendered.getByText('failureReason fetching error 4')) + await vi.advanceTimersByTimeAsync(10) + await vi.waitFor(() => + expect(rendered.getByText('failureCount 4')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect( + rendered.getByText('failureReason fetching error 4'), + ).toBeInTheDocument(), + ) }) it('should fetch on mount when a query was already created with setQueryData', async () => { @@ -3622,7 +3549,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(states.length).toBe(2) expect(states).toMatchObject([ @@ -3667,7 +3594,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await waitFor(() => expect(states.length).toBe(2)) + await vi.waitFor(() => expect(states.length).toBe(2)) act(() => { // reset visibilityState to original value @@ -3675,7 +3602,7 @@ describe('useQuery', () => { window.dispatchEvent(new Event('visibilitychange')) }) - await waitFor(() => expect(states.length).toBe(4)) + await vi.waitFor(() => expect(states.length).toBe(4)) expect(states).toMatchObject([ { @@ -3718,7 +3645,7 @@ describe('useQuery', () => { staleTime: 10, }) - await sleep(11) + await vi.advanceTimersByTimeAsync(10) function Page() { const state = useQuery({ queryKey: key, queryFn }) @@ -3728,7 +3655,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await waitFor(() => expect(states.length).toBe(2)) + await vi.waitFor(() => expect(states.length).toBe(2)) expect(prefetchQueryFn).toHaveBeenCalledTimes(1) expect(queryFn).toHaveBeenCalledTimes(1) @@ -3747,13 +3674,13 @@ describe('useQuery', () => { return 'not yet...' }) - await queryClient.prefetchQuery({ + queryClient.prefetchQuery({ queryKey: key, queryFn: prefetchQueryFn, staleTime: 1000, }) - await sleep(0) + await vi.advanceTimersByTimeAsync(0) function Page() { useQuery({ queryKey: key, queryFn, staleTime: 1000 }) @@ -3762,7 +3689,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(0) + await vi.advanceTimersByTimeAsync(0) expect(prefetchQueryFn).toHaveBeenCalledTimes(1) expect(queryFn).toHaveBeenCalledTimes(0) @@ -3798,10 +3725,18 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('failureCount 2')) - await waitFor(() => rendered.getByText('failureReason error')) - await waitFor(() => rendered.getByText('failureCount 0')) - await waitFor(() => rendered.getByText('failureReason null')) + await vi.waitFor(() => + expect(rendered.getByText('failureCount 2')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('failureReason error')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('failureCount 0')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('failureReason null')).toBeInTheDocument(), + ) }) // See https://github.com/tannerlinsley/react-query/issues/199 @@ -3846,11 +3781,17 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('isPrefetched')) + await vi.waitFor(() => + expect(rendered.getByText('isPrefetched')).toBeInTheDocument(), + ) fireEvent.click(rendered.getByText('setKey')) - await waitFor(() => rendered.getByText('data: prefetched data')) - await waitFor(() => rendered.getByText('data: 1')) + await vi.waitFor(() => + expect(rendered.getByText('data: prefetched data')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('data: 1')).toBeInTheDocument(), + ) expect(count).toBe(1) }) @@ -3879,15 +3820,17 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - rendered.getByText('FetchStatus: idle') - rendered.getByText('Data: no data') + expect(rendered.getByText('FetchStatus: idle')).toBeInTheDocument() + expect(rendered.getByText('Data: no data')).toBeInTheDocument() fireEvent.click(rendered.getByText('fetch')) - await waitFor(() => rendered.getByText('FetchStatus: fetching')) - await waitFor(() => [ - rendered.getByText('FetchStatus: idle'), - rendered.getByText('Data: data'), + await vi.waitFor(() => + expect(rendered.getByText('FetchStatus: fetching')).toBeInTheDocument(), + ) + await vi.waitFor(() => [ + expect(rendered.getByText('FetchStatus: idle')).toBeInTheDocument(), + expect(rendered.getByText('Data: data')).toBeInTheDocument(), ]) }) @@ -3910,8 +3853,8 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: initialData')) - await waitFor(() => rendered.getByText('data: serverData')) + await vi.waitFor(() => rendered.getByText('data: initialData')) + await vi.waitFor(() => rendered.getByText('data: serverData')) expect(results.length).toBe(2) expect(results[0]).toMatchObject({ data: 'initialData', isFetching: true }) @@ -3934,7 +3877,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(results.length).toBe(2) expect(results[0]).toMatchObject({ data: 0, isFetching: true }) @@ -3988,12 +3931,22 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Current Todos, filter: all')) + await vi.waitFor(() => + expect( + rendered.getByText('Current Todos, filter: all'), + ).toBeInTheDocument(), + ) fireEvent.click(rendered.getByRole('button', { name: /high/i })) - await waitFor(() => rendered.getByText('Current Todos, filter: high')) + await vi.waitFor(() => + expect( + rendered.getByText('Current Todos, filter: high'), + ).toBeInTheDocument(), + ) fireEvent.click(rendered.getByRole('button', { name: /all/i })) - await waitFor(() => rendered.getByText('todo B - medium')) + await vi.waitFor(() => + expect(rendered.getByText('todo B - medium')).toBeInTheDocument(), + ) }) // // See https://github.com/tannerlinsley/react-query/issues/214 @@ -4030,16 +3983,16 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => { - rendered.getByText('fetched data') - rendered.getByText('enabled') + await vi.waitFor(() => { + expect(rendered.getByText('fetched data')).toBeInTheDocument() + expect(rendered.getByText('enabled')).toBeInTheDocument() }) fireEvent.click(rendered.getByRole('button', { name: /enable/i })) - await waitFor(() => { - rendered.getByText('fetched data') - rendered.getByText('disabled') + await vi.waitFor(() => { + expect(rendered.getByText('fetched data')).toBeInTheDocument() + expect(rendered.getByText('disabled')).toBeInTheDocument() }) expect(results.length).toBe(3) @@ -4067,7 +4020,7 @@ describe('useQuery', () => { expect(queryFn).not.toHaveBeenCalled() expect(queryCache.find({ queryKey: key })).not.toBeUndefined() - rendered.getByText('fetchStatus: idle') + expect(rendered.getByText('fetchStatus: idle')).toBeInTheDocument() }) // See https://github.com/tannerlinsley/react-query/issues/360 @@ -4092,7 +4045,9 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('status: pending, idle')) + await vi.waitFor(() => + expect(rendered.getByText('status: pending, idle')).toBeInTheDocument(), + ) }) test('should not schedule garbage collection, if gcTimeout is set to `Infinity`', async () => { @@ -4109,7 +4064,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('fetched data')) + await vi.waitFor(() => rendered.getByText('fetched data')) const setTimeoutSpy = vi.spyOn(globalThis.window, 'setTimeout') rendered.unmount() @@ -4131,7 +4086,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('fetched data')) + await vi.waitFor(() => rendered.getByText('fetched data')) const setTimeoutSpy = vi.spyOn(globalThis.window, 'setTimeout') @@ -4181,11 +4136,11 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('status pending')) - await waitFor(() => rendered.getByText('status success')) + await vi.waitFor(() => rendered.getByText('status pending')) + await vi.waitFor(() => rendered.getByText('status success')) fireEvent.click(rendered.getByText('refetch')) - await waitFor(() => rendered.getByText('isFetching true')) - await waitFor(() => rendered.getByText('isFetching false')) + await vi.waitFor(() => rendered.getByText('isFetching true')) + await vi.waitFor(() => rendered.getByText('isFetching false')) expect(queryFn).toHaveBeenCalledTimes(2) expect(memoFn).toHaveBeenCalledTimes(2) }) @@ -4214,9 +4169,15 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) // mount - await waitFor(() => rendered.getByText('count: 0')) - await waitFor(() => rendered.getByText('count: 1')) - await waitFor(() => rendered.getByText('count: 2')) + await vi.waitFor(() => + expect(rendered.getByText('count: 0')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('count: 1')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('count: 2')).toBeInTheDocument(), + ) }) it('should refetch in an interval depending on function result', async () => { @@ -4248,7 +4209,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('count: 2')) + await vi.waitFor(() => rendered.getByText('count: 2')) expect(states.length).toEqual(6) @@ -4302,9 +4263,9 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('count: 1')) + await vi.waitFor(() => rendered.getByText('count: 1')) - await sleep(10) // extra sleep to make sure we're not re-fetching + await vi.advanceTimersByTimeAsync(10) // extra sleep to make sure we're not re-fetching expect(queryFn).toHaveBeenCalledTimes(1) }) @@ -4320,7 +4281,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('')) + await vi.waitFor(() => expect(rendered.getByText('')).toBeInTheDocument()) }) it('should accept an object as query key', async () => { @@ -4334,7 +4295,9 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('[{"a":"a"}]')) + await vi.waitFor(() => + expect(rendered.getByText('[{"a":"a"}]')).toBeInTheDocument(), + ) }) it('should refetch if any query instance becomes enabled', async () => { @@ -4364,7 +4327,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) expect(queryFn).toHaveBeenCalledTimes(0) fireEvent.click(rendered.getByText('enable')) - await waitFor(() => rendered.getByText('data')) + await vi.waitFor(() => rendered.getByText('data')) expect(queryFn).toHaveBeenCalledTimes(1) }) @@ -4391,7 +4354,7 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Data: data')) + await vi.waitFor(() => rendered.getByText('Data: data')) expect(states).toMatchObject([ { @@ -4437,7 +4400,7 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Data: data')) + await vi.waitFor(() => rendered.getByText('Data: data')) expect(states).toMatchObject([ { @@ -4491,7 +4454,7 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Data: 2')) + await vi.waitFor(() => rendered.getByText('Data: 2')) expect(states).toMatchObject([ { @@ -4535,7 +4498,7 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Data: 2')) + await vi.waitFor(() => rendered.getByText('Data: 2')) rendered.rerender() @@ -4593,15 +4556,15 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Data: selected 101')) // 99 + 2 + await vi.waitFor(() => rendered.getByText('Data: selected 101')) // 99 + 2 expect(selectRun).toBe(1) - await waitFor(() => rendered.getByText('Data: selected 2')) // 0 + 2 + await vi.waitFor(() => rendered.getByText('Data: selected 2')) // 0 + 2 expect(selectRun).toBe(2) fireEvent.click(rendered.getByRole('button', { name: /inc/i })) - await waitFor(() => rendered.getByText('Data: selected 3')) // 0 + 3 + await vi.waitFor(() => rendered.getByText('Data: selected 3')) // 0 + 3 expect(selectRun).toBe(3) }) @@ -4639,19 +4602,29 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Data: selected 101')) // 99 + 2 + await vi.waitFor(() => + expect(rendered.getByText('Data: selected 101')).toBeInTheDocument(), + ) // 99 + 2 - await waitFor(() => rendered.getByText('Data: selected 2')) // 0 + 2 + await vi.waitFor(() => + expect(rendered.getByText('Data: selected 2')).toBeInTheDocument(), + ) // 0 + 2 fireEvent.click(rendered.getByRole('button', { name: /inc/i })) - await waitFor(() => rendered.getByText('Data: selected 3')) // 0 + 3 + await vi.waitFor(() => + expect(rendered.getByText('Data: selected 3')).toBeInTheDocument(), + ) // 0 + 3 fireEvent.click(rendered.getByRole('button', { name: /forceUpdate/i })) - await waitFor(() => rendered.getByText('forceValue: 2')) + await vi.waitFor(() => + expect(rendered.getByText('forceValue: 2')).toBeInTheDocument(), + ) // data should still be 3 after an independent re-render - await waitFor(() => rendered.getByText('Data: selected 3')) + await vi.waitFor(() => + expect(rendered.getByText('Data: selected 3')).toBeInTheDocument(), + ) }) it('select should structurally share data', async () => { @@ -4687,13 +4660,13 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Data: [2,3]')) + await vi.waitFor(() => rendered.getByText('Data: [2,3]')) expect(states).toHaveLength(1) fireEvent.click(rendered.getByRole('button', { name: /forceUpdate/i })) - await waitFor(() => rendered.getByText('forceValue: 2')) - await waitFor(() => rendered.getByText('Data: [2,3]')) + await vi.waitFor(() => rendered.getByText('forceValue: 2')) + await vi.waitFor(() => rendered.getByText('Data: [2,3]')) // effect should not be triggered again due to structural sharing expect(states).toHaveLength(1) @@ -4729,7 +4702,7 @@ describe('useQuery', () => { , ) - await waitFor(() => rendered.getByText('off')) + await vi.waitFor(() => rendered.getByText('off')) expect(cancelFn).toHaveBeenCalled() }) @@ -4768,10 +4741,10 @@ describe('useQuery', () => { , ) - await waitFor(() => rendered.getByText('off')) - await sleep(20) + await vi.waitFor(() => rendered.getByText('off')) + await vi.advanceTimersByTimeAsync(20) - await waitFor(() => expect(states).toHaveLength(4)) + await vi.waitFor(() => expect(states).toHaveLength(4)) expect(queryCache.find({ queryKey: [key, 0] })?.state).toMatchObject({ data: 'data 0', @@ -4825,7 +4798,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(100) + await vi.advanceTimersByTimeAsync(100) expect(states.length).toBe(4) // Load query 1 expect(states[0]).toMatchObject({ @@ -4880,12 +4853,12 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: 1')) + await vi.waitFor(() => rendered.getByText('data: 1')) fireEvent.click(rendered.getByRole('button', { name: /reset/i })) - await waitFor(() => expect(states.length).toBe(4)) + await vi.waitFor(() => expect(states.length).toBe(4)) - await waitFor(() => rendered.getByText('data: 2')) + await vi.waitFor(() => rendered.getByText('data: 2')) expect(count).toBe(2) @@ -4954,14 +4927,14 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: null')) + await vi.waitFor(() => rendered.getByText('data: null')) fireEvent.click(rendered.getByRole('button', { name: /refetch/i })) - await waitFor(() => rendered.getByText('data: 1')) + await vi.waitFor(() => rendered.getByText('data: 1')) fireEvent.click(rendered.getByRole('button', { name: /reset/i })) - await waitFor(() => rendered.getByText('data: null')) - await waitFor(() => expect(states.length).toBe(4)) + await vi.waitFor(() => rendered.getByText('data: null')) + await vi.waitFor(() => expect(states.length).toBe(4)) expect(count).toBe(1) @@ -5017,7 +4990,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) expect(renders).toBe(hashes) }) @@ -5039,7 +5012,7 @@ describe('useQuery', () => { renderWithClient(queryClient, ) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) const query = queryClient.getQueryCache().get(queryKeyHashFn(key)) expect(query?.state.data).toBe('test') @@ -5091,12 +5064,12 @@ describe('useQuery', () => { rendered.getByText('status: pending') // // render error state component - await waitFor(() => rendered.getByText('error')) + await vi.waitFor(() => rendered.getByText('error')) expect(queryFn).toBeCalledTimes(1) // change to enabled to false fireEvent.click(rendered.getByLabelText('retry')) - await waitFor(() => rendered.getByText('error')) + await vi.waitFor(() => rendered.getByText('error')) expect(queryFn).toBeCalledTimes(1) // // change to enabled to true @@ -5147,18 +5120,24 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) // initial state check - rendered.getByText('status: pending') + expect(rendered.getByText('status: pending')).toBeInTheDocument() // render error state component - await waitFor(() => rendered.getByText('error')) + await vi.waitFor(() => + expect(rendered.getByText('error')).toBeInTheDocument(), + ) // change to unmount query fireEvent.click(rendered.getByLabelText('change')) - await waitFor(() => rendered.getByText('rendered')) + await vi.waitFor(() => + expect(rendered.getByText('rendered')).toBeInTheDocument(), + ) // change to mount new query fireEvent.click(rendered.getByLabelText('change')) - await waitFor(() => rendered.getByText('error')) + await vi.waitFor(() => + expect(rendered.getByText('error')).toBeInTheDocument(), + ) }) it('should refetch when query key changed when switching between erroneous queries', async () => { @@ -5200,20 +5179,30 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) // initial state check - rendered.getByText('status: fetching') + expect(rendered.getByText('status: fetching')).toBeInTheDocument() // render error state component - await waitFor(() => rendered.getByText('error')) + await vi.waitFor(() => + expect(rendered.getByText('error')).toBeInTheDocument(), + ) // change to mount second query fireEvent.click(rendered.getByLabelText('change')) - await waitFor(() => rendered.getByText('status: fetching')) - await waitFor(() => rendered.getByText('error')) + await vi.waitFor(() => + expect(rendered.getByText('status: fetching')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('error')).toBeInTheDocument(), + ) // change to mount first query again fireEvent.click(rendered.getByLabelText('change')) - await waitFor(() => rendered.getByText('status: fetching')) - await waitFor(() => rendered.getByText('error')) + await vi.waitFor(() => + expect(rendered.getByText('status: fetching')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('error')).toBeInTheDocument(), + ) }) it('should have no error in pending state when refetching after error occurred', async () => { @@ -5255,12 +5244,12 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('error')) + await vi.waitFor(() => rendered.getByText('error')) fireEvent.click(rendered.getByRole('button', { name: 'refetch' })) - await waitFor(() => rendered.getByText('data: 5')) + await vi.waitFor(() => rendered.getByText('data: 5')) - await waitFor(() => expect(states.length).toBe(4)) + await vi.waitFor(() => expect(states.length).toBe(4)) expect(states[0]).toMatchObject({ status: 'pending', @@ -5319,15 +5308,17 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('status: pending, isPaused: true')) + await vi.waitFor(() => + rendered.getByText('status: pending, isPaused: true'), + ) onlineMock.mockReturnValue(true) queryClient.getQueryCache().onOnline() - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: success, isPaused: false'), ) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.getByText('data: data')).toBeInTheDocument() }) @@ -5368,36 +5359,36 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: data1')) + await vi.waitFor(() => rendered.getByText('data: data1')) const onlineMock = mockOnlineManagerIsOnline(false) fireEvent.click(rendered.getByRole('button', { name: /invalidate/i })) - await waitFor(() => + await vi.waitFor(() => rendered.getByText( 'status: success, fetchStatus: paused, failureCount: 0', ), ) - await waitFor(() => rendered.getByText('failureReason: null')) + await vi.waitFor(() => rendered.getByText('failureReason: null')) onlineMock.mockReturnValue(true) queryClient.getQueryCache().onOnline() - await waitFor(() => + await vi.waitFor(() => rendered.getByText( 'status: success, fetchStatus: fetching, failureCount: 0', ), ) - await waitFor(() => rendered.getByText('failureReason: null')) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('failureReason: null')) + await vi.waitFor(() => rendered.getByText( 'status: success, fetchStatus: idle, failureCount: 0', ), ) - await waitFor(() => rendered.getByText('failureReason: null')) + await vi.waitFor(() => rendered.getByText('failureReason: null')) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.getByText('data: data2')).toBeInTheDocument() }) @@ -5435,19 +5426,19 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: data1')) + await vi.waitFor(() => rendered.getByText('data: data1')) const onlineMock = mockOnlineManagerIsOnline(false) fireEvent.click(rendered.getByRole('button', { name: /invalidate/i })) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: success, fetchStatus: paused'), ) window.dispatchEvent(new Event('visibilitychange')) - await sleep(15) + await vi.advanceTimersByTimeAsync(15) - await waitFor(() => + await vi.waitFor(() => expect(rendered.queryByText('data: data2')).not.toBeInTheDocument(), ) expect(count).toBe(1) @@ -5487,16 +5478,16 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: pending, fetchStatus: paused'), ) fireEvent.click(rendered.getByRole('button', { name: /invalidate/i })) - await sleep(15) + await vi.advanceTimersByTimeAsync(15) // invalidation should not trigger a refetch - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: pending, fetchStatus: paused'), ) @@ -5538,19 +5529,19 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: success, fetchStatus: paused'), ) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.getByText('data: initial')).toBeInTheDocument() }) fireEvent.click(rendered.getByRole('button', { name: /invalidate/i })) - await sleep(15) + await vi.advanceTimersByTimeAsync(15) // invalidation should not trigger a refetch - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: success, fetchStatus: paused'), ) @@ -5592,19 +5583,19 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: success, fetchStatus: paused'), ) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.getByText('data: initial')).toBeInTheDocument() }) // triggers one pause fireEvent.click(rendered.getByRole('button', { name: /invalidate/i })) - await sleep(15) + await vi.advanceTimersByTimeAsync(15) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: success, fetchStatus: paused'), ) @@ -5616,10 +5607,10 @@ describe('useQuery', () => { onlineMock.mockReturnValue(true) queryClient.getQueryCache().onOnline() - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: success, fetchStatus: idle'), ) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.getByText('data: data1')).toBeInTheDocument() }) @@ -5657,30 +5648,30 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => + await vi.waitFor(() => rendered.getByText(/status: pending, fetchStatus: fetching/i), ) const onlineMock = mockOnlineManagerIsOnline(false) - await sleep(20) + await vi.advanceTimersByTimeAsync(20) - await waitFor(() => + await vi.waitFor(() => rendered.getByText( 'status: pending, fetchStatus: paused, failureCount: 1', ), ) - await waitFor(() => rendered.getByText('failureReason: failed1')) + await vi.waitFor(() => rendered.getByText('failureReason: failed1')) expect(count).toBe(1) onlineMock.mockReturnValue(true) queryClient.getQueryCache().onOnline() - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: error, fetchStatus: idle, failureCount: 3'), ) - await waitFor(() => rendered.getByText('failureReason: failed3')) + await vi.waitFor(() => rendered.getByText('failureReason: failed3')) expect(count).toBe(3) @@ -5726,7 +5717,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: pending, fetchStatus: paused'), ) @@ -5735,7 +5726,7 @@ describe('useQuery', () => { onlineMock.mockReturnValue(true) queryClient.getQueryCache().onOnline() - await waitFor(() => { + await vi.waitFor(() => { expect(queryClient.getQueryState(key)).toMatchObject({ fetchStatus: 'idle', status: 'success', @@ -5743,7 +5734,7 @@ describe('useQuery', () => { }) // give it a bit more time to make sure queryFn is not called again - await sleep(15) + await vi.advanceTimersByTimeAsync(15) expect(count).toBe(1) onlineMock.mockRestore() @@ -5783,13 +5774,13 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: pending, fetchStatus: paused'), ) fireEvent.click(rendered.getByRole('button', { name: /cancel/i })) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: pending, fetchStatus: idle'), ) @@ -5798,9 +5789,9 @@ describe('useQuery', () => { onlineMock.mockReturnValue(true) queryClient.getQueryCache().onOnline() - await sleep(15) + await vi.advanceTimersByTimeAsync(15) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: pending, fetchStatus: idle'), ) @@ -5851,7 +5842,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: success, fetchStatus: idle'), ) @@ -5859,18 +5850,18 @@ describe('useQuery', () => { fireEvent.click(rendered.getByRole('button', { name: /invalidate/i })) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: success, fetchStatus: paused'), ) fireEvent.click(rendered.getByRole('button', { name: /hide/i })) - await sleep(15) + await vi.advanceTimersByTimeAsync(15) onlineMock.mockReturnValue(true) queryClient.getQueryCache().onOnline() - await sleep(15) + await vi.advanceTimersByTimeAsync(15) expect(queryClient.getQueryState(key)).toMatchObject({ fetchStatus: 'idle', @@ -5913,11 +5904,11 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: success, isPaused: false'), ) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.getByText('data: data 1')).toBeInTheDocument() }) @@ -5957,9 +5948,11 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('status: error, isPaused: false')) + await vi.waitFor(() => + rendered.getByText('status: error, isPaused: false'), + ) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.getByText('error: error 2')).toBeInTheDocument() }) @@ -6002,22 +5995,22 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => + await vi.waitFor(() => rendered.getByText( 'status: pending, fetchStatus: paused, failureCount: 1', ), ) - await waitFor(() => rendered.getByText('failureReason: failed1')) + await vi.waitFor(() => rendered.getByText('failureReason: failed1')) expect(count).toBe(1) onlineMock.mockReturnValue(true) queryClient.getQueryCache().onOnline() - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: error, fetchStatus: idle, failureCount: 3'), ) - await waitFor(() => rendered.getByText('failureReason: failed3')) + await vi.waitFor(() => rendered.getByText('failureReason: failed3')) expect(count).toBe(3) onlineMock.mockRestore() @@ -6044,7 +6037,7 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: data')) + await vi.waitFor(() => rendered.getByText('data: data')) expect( queryClient.getQueryCache().find({ queryKey: key })!.observers.length, @@ -6061,7 +6054,7 @@ describe('useQuery', () => { fireEvent.click(rendered.getByRole('button', { name: 'toggle' })) // background refetch when we re-subscribe - await waitFor(() => expect(queryFn).toHaveBeenCalledTimes(2)) + await vi.waitFor(() => expect(queryFn).toHaveBeenCalledTimes(2)) expect( queryClient.getQueryCache().find({ queryKey: key })!.observers.length, ).toBe(1) @@ -6084,7 +6077,7 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data:')) + await vi.waitFor(() => rendered.getByText('data:')) expect( queryClient.getQueryCache().find({ queryKey: key })!.observers.length, @@ -6116,13 +6109,13 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('no data')) + await vi.waitFor(() => rendered.getByText('no data')) fireEvent.click(rendered.getByRole('button', { name: 'set data' })) - await sleep(10) + await vi.advanceTimersByTimeAsync(10) - await waitFor(() => rendered.getByText('no data')) + await vi.waitFor(() => rendered.getByText('no data')) expect(renders).toBe(1) }) @@ -6153,7 +6146,7 @@ describe('useQuery', () => { await queryClient.prefetchQuery({ queryKey: key, queryFn }) renderWithClient(queryClient, ) - await waitFor(() => expect(states).toHaveLength(1)) + await vi.waitFor(() => expect(states).toHaveLength(1)) expect(states[0]).toMatchObject({ status: 'error', @@ -6185,10 +6178,10 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: data')) + await vi.waitFor(() => rendered.getByText('data: data')) fireEvent.click(rendered.getByRole('button', { name: /setQueryData/i })) - await waitFor(() => rendered.getByText('data: newData')) - await waitFor(() => { + await vi.waitFor(() => rendered.getByText('data: newData')) + await vi.waitFor(() => { expect(rendered.getByText('dataUpdatedAt: 100')).toBeInTheDocument() }) }) @@ -6215,11 +6208,17 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) const fetchBtn = rendered.getByRole('button', { name: 'refetch' }) - await waitFor(() => rendered.getByText('data: 1')) + await vi.waitFor(() => + expect(rendered.getByText('data: 1')).toBeInTheDocument(), + ) fireEvent.click(fetchBtn) - await waitFor(() => rendered.getByText('data: 2')) + await vi.waitFor(() => + expect(rendered.getByText('data: 2')).toBeInTheDocument(), + ) fireEvent.click(fetchBtn) - await waitFor(() => rendered.getByText('data: 3')) + await vi.waitFor(() => + expect(rendered.getByText('data: 3')).toBeInTheDocument(), + ) }) it('should use provided custom queryClient', async () => { @@ -6242,7 +6241,9 @@ describe('useQuery', () => { const rendered = render() - await waitFor(() => rendered.getByText('data: custom client')) + await vi.waitFor(() => + expect(rendered.getByText('data: custom client')).toBeInTheDocument(), + ) }) it('should be notified of updates between create and subscribe', async () => { @@ -6275,8 +6276,12 @@ describe('useQuery', () => { } const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('status: success')) - await waitFor(() => rendered.getByText('data: 1')) + await vi.waitFor(() => + expect(rendered.getByText('status: success')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('data: 1')).toBeInTheDocument(), + ) }) it('should reuse same data object reference when queryKey changes back to some cached data', async () => { const key = queryKey() @@ -6320,22 +6325,22 @@ describe('useQuery', () => { expect(spy).toHaveBeenCalledTimes(1) spy.mockClear() - await waitFor(() => rendered.getByText('Rendered Id: 1')) + await vi.waitFor(() => rendered.getByText('Rendered Id: 1')) expect(spy).toHaveBeenCalledTimes(1) spy.mockClear() fireEvent.click(rendered.getByRole('button', { name: /2/ })) - await waitFor(() => rendered.getByText('Rendered Id: 2')) + await vi.waitFor(() => rendered.getByText('Rendered Id: 2')) expect(spy).toHaveBeenCalledTimes(2) // called with undefined because id changed spy.mockClear() fireEvent.click(rendered.getByRole('button', { name: /1/ })) - await waitFor(() => rendered.getByText('Rendered Id: 1')) + await vi.waitFor(() => rendered.getByText('Rendered Id: 1')) expect(spy).toHaveBeenCalledTimes(1) spy.mockClear() fireEvent.click(rendered.getByRole('button', { name: /2/ })) - await waitFor(() => rendered.getByText('Rendered Id: 2')) + await vi.waitFor(() => rendered.getByText('Rendered Id: 2')) expect(spy).toHaveBeenCalledTimes(1) }) it('should reuse same data object reference when queryKey changes and placeholderData is present', async () => { @@ -6381,24 +6386,24 @@ describe('useQuery', () => { expect(spy).toHaveBeenCalledTimes(1) spy.mockClear() - await waitFor(() => rendered.getByText('Rendered Id: 99')) - await waitFor(() => rendered.getByText('Rendered Id: 1')) + await vi.waitFor(() => rendered.getByText('Rendered Id: 99')) + await vi.waitFor(() => rendered.getByText('Rendered Id: 1')) expect(spy).toHaveBeenCalledTimes(1) spy.mockClear() fireEvent.click(rendered.getByRole('button', { name: /2/ })) - await waitFor(() => rendered.getByText('Rendered Id: 99')) - await waitFor(() => rendered.getByText('Rendered Id: 2')) + await vi.waitFor(() => rendered.getByText('Rendered Id: 99')) + await vi.waitFor(() => rendered.getByText('Rendered Id: 2')) expect(spy).toHaveBeenCalledTimes(2) // called with undefined because id changed spy.mockClear() fireEvent.click(rendered.getByRole('button', { name: /1/ })) - await waitFor(() => rendered.getByText('Rendered Id: 1')) + await vi.waitFor(() => rendered.getByText('Rendered Id: 1')) expect(spy).toHaveBeenCalledTimes(1) spy.mockClear() fireEvent.click(rendered.getByRole('button', { name: /2/ })) - await waitFor(() => rendered.getByText('Rendered Id: 2')) + await vi.waitFor(() => rendered.getByText('Rendered Id: 2')) expect(spy).toHaveBeenCalledTimes(1) }) it('should not cause an infinite render loop when using unstable callback ref', async () => { @@ -6420,7 +6425,9 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Works')) + await vi.waitFor(() => + expect(rendered.getByText('Works')).toBeInTheDocument(), + ) }) it('should keep the previous data when placeholderData is set and cache is used', async () => { @@ -6453,19 +6460,19 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('data: 0')) + await vi.waitFor(() => rendered.getByText('data: 0')) fireEvent.click(rendered.getByRole('button', { name: 'setCount' })) - await waitFor(() => rendered.getByText('data: 1')) + await vi.waitFor(() => rendered.getByText('data: 1')) fireEvent.click(rendered.getByRole('button', { name: 'setCount' })) - await waitFor(() => rendered.getByText('data: 0')) + await vi.waitFor(() => rendered.getByText('data: 0')) fireEvent.click(rendered.getByRole('button', { name: 'setCount' })) - await waitFor(() => rendered.getByText('data: 2')) + await vi.waitFor(() => rendered.getByText('data: 2')) // Initial expect(states[0]).toMatchObject({ @@ -6579,11 +6586,17 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('status: pending')) + await vi.waitFor(() => + expect(rendered.getByText('status: pending')).toBeInTheDocument(), + ) fireEvent.click(rendered.getByRole('button', { name: 'enable' })) - await waitFor(() => rendered.getByText('status: success')) - await waitFor(() => rendered.getByText('data: data')) + await vi.waitFor(() => + expect(rendered.getByText('status: success')).toBeInTheDocument(), + ) + await vi.waitFor(() => + expect(rendered.getByText('data: data')).toBeInTheDocument(), + ) }) it('should allow enabled: true and queryFn: skipToken', async () => { @@ -6610,7 +6623,7 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => + await vi.waitFor(() => rendered.getByText('status: pending, fetchStatus: idle'), ) @@ -6661,12 +6674,12 @@ describe('useQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('status: error, idle')) + await vi.waitFor(() => rendered.getByText('status: error, idle')) fireEvent.click(rendered.getByRole('button', { name: 'toggle' })) fireEvent.click(rendered.getByRole('button', { name: 'toggle' })) - await waitFor(() => rendered.getByText('status: error, idle')) + await vi.waitFor(() => rendered.getByText('status: error, idle')) expect(results).toHaveLength(4) @@ -6761,12 +6774,12 @@ describe('useQuery', () => { const rendered = renderWithClient(clientQueryClient, ) - await waitFor(() => rendered.getByText('data: server')) + await vi.waitFor(() => rendered.getByText('data: server')) expect(count).toBe(0) fireEvent.click(rendered.getByRole('button', { name: 'refetch' })) - await waitFor(() => rendered.getByText('data: client')) + await vi.waitFor(() => rendered.getByText('data: client')) expect(count).toBe(1) }) @@ -6818,8 +6831,8 @@ describe('useQuery', () => { hydrate(clientQueryClient, dehydrated) const rendered = renderWithClient(clientQueryClient, ) - await waitFor(() => rendered.getByText('failure: redacted')) - await waitFor(() => rendered.getByText('data: client')) + await vi.waitFor(() => rendered.getByText('failure: redacted')) + await vi.waitFor(() => rendered.getByText('data: client')) expect(count).toBe(1) const query = clientQueryClient.getQueryCache().find({ queryKey: key }) diff --git a/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test-d.tsx b/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test-d.tsx index d59672fec79..49cdb7939b9 100644 --- a/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test-d.tsx +++ b/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.test-d.tsx @@ -1,4 +1,4 @@ -import { describe, expectTypeOf, it } from 'vitest' +import { assertType, describe, expectTypeOf, it } from 'vitest' import { skipToken } from '@tanstack/query-core' import { useSuspenseInfiniteQuery } from '../useSuspenseInfiniteQuery' import type { InfiniteData } from '@tanstack/query-core' @@ -16,17 +16,21 @@ describe('useSuspenseInfiniteQuery', () => { }) it('should not allow skipToken in queryFn', () => { - useSuspenseInfiniteQuery({ - queryKey: ['key'], - // @ts-expect-error - queryFn: skipToken, - }) + assertType( + useSuspenseInfiniteQuery({ + queryKey: ['key'], + // @ts-expect-error + queryFn: skipToken, + }), + ) - useSuspenseInfiniteQuery({ - queryKey: ['key'], - // @ts-expect-error - queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5), - }) + assertType( + useSuspenseInfiniteQuery({ + queryKey: ['key'], + // @ts-expect-error + queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5), + }), + ) }) it('should not have pending status', () => { @@ -41,33 +45,39 @@ describe('useSuspenseInfiniteQuery', () => { }) it('should not allow placeholderData, enabled or throwOnError props', () => { - useSuspenseInfiniteQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - initialPageParam: 1, - getNextPageParam: () => 1, - // @ts-expect-error TS2345 - placeholderData: 5, - enabled: true, - }) + assertType( + useSuspenseInfiniteQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + initialPageParam: 1, + getNextPageParam: () => 1, + // @ts-expect-error TS2345 + placeholderData: 5, + enabled: true, + }), + ) - useSuspenseInfiniteQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - initialPageParam: 1, - getNextPageParam: () => 1, - // @ts-expect-error TS2345 - enabled: true, - }) + assertType( + useSuspenseInfiniteQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + initialPageParam: 1, + getNextPageParam: () => 1, + // @ts-expect-error TS2345 + enabled: true, + }), + ) - useSuspenseInfiniteQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - initialPageParam: 1, - getNextPageParam: () => 1, - // @ts-expect-error TS2345 - throwOnError: true, - }) + assertType( + useSuspenseInfiniteQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + initialPageParam: 1, + getNextPageParam: () => 1, + // @ts-expect-error TS2345 + throwOnError: true, + }), + ) }) it('should not return isPlaceholderData', () => { @@ -78,7 +88,6 @@ describe('useSuspenseInfiniteQuery', () => { getNextPageParam: () => 1, }) - // @ts-expect-error TS2339 - query.isPlaceholderData + expectTypeOf(query).not.toHaveProperty('isPlaceholderData') }) }) diff --git a/packages/react-query/src/__tests__/useSuspenseQueries.test-d.tsx b/packages/react-query/src/__tests__/useSuspenseQueries.test-d.tsx index 8f3a48c150b..7298a9e594d 100644 --- a/packages/react-query/src/__tests__/useSuspenseQueries.test-d.tsx +++ b/packages/react-query/src/__tests__/useSuspenseQueries.test-d.tsx @@ -1,4 +1,4 @@ -import { describe, expectTypeOf, it } from 'vitest' +import { assertType, describe, expectTypeOf, it } from 'vitest' import { skipToken, useSuspenseQueries } from '..' import { queryOptions } from '../queryOptions' import type { OmitKeyof } from '..' @@ -90,25 +90,29 @@ describe('UseSuspenseQueries config object overload', () => { }) it('should not allow skipToken in queryFn', () => { - useSuspenseQueries({ - queries: [ - { - queryKey: ['key'], - // @ts-expect-error - queryFn: skipToken, - }, - ], - }) - - useSuspenseQueries({ - queries: [ - { - queryKey: ['key'], - // @ts-expect-error - queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5), - }, - ], - }) + assertType( + useSuspenseQueries({ + queries: [ + { + queryKey: ['key'], + // @ts-expect-error + queryFn: skipToken, + }, + ], + }), + ) + + assertType( + useSuspenseQueries({ + queries: [ + { + queryKey: ['key'], + // @ts-expect-error + queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5), + }, + ], + }), + ) }) it('TData should have correct type when conditional skipToken is passed', () => { @@ -206,39 +210,47 @@ describe('UseSuspenseQueries config object overload', () => { }) it('queryOptions with skipToken in queryFn should not work on useSuspenseQueries', () => { - const query1 = queryOptions({ - queryKey: ['key1'], - queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5), - }) - - const query2 = queryOptions({ - queryKey: ['key1'], - queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5), - initialData: 5, - }) - - // @ts-expect-error - useSuspenseQueries({ queries: [query1] }) - // @ts-expect-error - useSuspenseQueries({ queries: [query2] }) + assertType( + useSuspenseQueries({ + queries: [ + // @ts-expect-error + queryOptions({ + queryKey: ['key1'], + queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5), + }), + ], + }), + ) + + assertType( + useSuspenseQueries({ + queries: [ + // @ts-expect-error + queryOptions({ + queryKey: ['key1'], + queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5), + initialData: 5, + }), + ], + }), + ) }) it('should not show type error when using spreaded queryOptions', () => { - function myQueryOptions() { - return queryOptions({ - queryKey: ['key1'], - queryFn: () => 'Query Data', - }) - } - useSuspenseQueries({ - queries: [ - { - ...myQueryOptions(), - select(data: string) { - return data + assertType( + useSuspenseQueries({ + queries: [ + { + ...queryOptions({ + queryKey: ['key1'], + queryFn: () => 'Query Data', + }), + select(data: string) { + return data + }, }, - }, - ], - }) + ], + }), + ) }) }) diff --git a/packages/react-query/src/__tests__/useSuspenseQueries.test.tsx b/packages/react-query/src/__tests__/useSuspenseQueries.test.tsx index 98084c48880..af541cebb6c 100644 --- a/packages/react-query/src/__tests__/useSuspenseQueries.test.tsx +++ b/packages/react-query/src/__tests__/useSuspenseQueries.test.tsx @@ -322,21 +322,27 @@ describe('useSuspenseQueries 2', () => { , ) - await waitFor(() => rendered.getByText('loading')) + await waitFor(() => + expect(rendered.getByText('loading')).toBeInTheDocument(), + ) await waitFor(() => rendered.getByText('Data 0')) // go offline document.dispatchEvent(new CustomEvent('offline')) fireEvent.click(rendered.getByText('fetch')) - await waitFor(() => rendered.getByText('Data 0')) + await waitFor(() => + expect(rendered.getByText('Data 0')).toBeInTheDocument(), + ) // go back online document.dispatchEvent(new CustomEvent('online')) fireEvent.click(rendered.getByText('fetch')) // query should resume - await waitFor(() => rendered.getByText('Data 1')) + await waitFor(() => + expect(rendered.getByText('Data 1')).toBeInTheDocument(), + ) }) it('should throw error when queryKey changes and new query fails', async () => { @@ -426,15 +432,19 @@ describe('useSuspenseQueries 2', () => { , ) - await waitFor(() => rendered.getByText('Loading...')) + await waitFor(() => + expect(rendered.getByText('Loading...')).toBeInTheDocument(), + ) - await waitFor(() => rendered.getByText('data0')) + await waitFor(() => expect(rendered.getByText('data0')).toBeInTheDocument()) fireEvent.click(rendered.getByText('inc')) - await waitFor(() => rendered.getByText('Pending...')) + await waitFor(() => + expect(rendered.getByText('Pending...')).toBeInTheDocument(), + ) - await waitFor(() => rendered.getByText('data1')) + await waitFor(() => expect(rendered.getByText('data1')).toBeInTheDocument()) }) it('should not request old data inside transitions (issue #6486)', async () => { @@ -533,15 +543,19 @@ describe('useSuspenseQueries 2', () => { , ) - await waitFor(() => rendered.getByText('Loading...')) + await waitFor(() => + expect(rendered.getByText('Loading...')).toBeInTheDocument(), + ) - await waitFor(() => rendered.getByText('data0')) + await waitFor(() => expect(rendered.getByText('data0')).toBeInTheDocument()) fireEvent.click(rendered.getByText('inc')) - await waitFor(() => rendered.getByText('Pending...')) + await waitFor(() => + expect(rendered.getByText('Pending...')).toBeInTheDocument(), + ) - await waitFor(() => rendered.getByText('data1')) + await waitFor(() => expect(rendered.getByText('data1')).toBeInTheDocument()) }) it('should show error boundary even with gcTime:0 (#7853)', async () => { diff --git a/packages/react-query/src/__tests__/useSuspenseQuery.test-d.tsx b/packages/react-query/src/__tests__/useSuspenseQuery.test-d.tsx index 847a0f8c380..e78b8a907dd 100644 --- a/packages/react-query/src/__tests__/useSuspenseQuery.test-d.tsx +++ b/packages/react-query/src/__tests__/useSuspenseQuery.test-d.tsx @@ -1,4 +1,4 @@ -import { describe, expectTypeOf, it } from 'vitest' +import { assertType, describe, expectTypeOf, it } from 'vitest' import { skipToken } from '@tanstack/query-core' import { useSuspenseQuery } from '../useSuspenseQuery' @@ -22,50 +22,67 @@ describe('useSuspenseQuery', () => { }) it('should not allow skipToken in queryFn', () => { - useSuspenseQuery({ - queryKey: ['key'], - // @ts-expect-error - queryFn: skipToken, - }) - - useSuspenseQuery({ - queryKey: ['key'], - // @ts-expect-error - queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5), - }) + assertType( + useSuspenseQuery({ + queryKey: ['key'], + // @ts-expect-error + queryFn: skipToken, + }), + ) + assertType( + useSuspenseQuery({ + queryKey: ['key'], + // @ts-expect-error + queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5), + }), + ) }) it('should not allow placeholderData, enabled or throwOnError props', () => { - useSuspenseQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - // @ts-expect-error TS2345 - placeholderData: 5, - enabled: true, - }) - - useSuspenseQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - // @ts-expect-error TS2345 - enabled: true, - }) - - useSuspenseQuery({ - queryKey: ['key'], - queryFn: () => Promise.resolve(5), - // @ts-expect-error TS2345 - throwOnError: true, - }) + assertType( + useSuspenseQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + // @ts-expect-error TS2345 + placeholderData: 5, + enabled: true, + }), + ) + assertType( + useSuspenseQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + // @ts-expect-error TS2345 + enabled: true, + }), + ) + assertType( + useSuspenseQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + // @ts-expect-error TS2345 + throwOnError: true, + }), + ) }) it('should not return isPlaceholderData', () => { + expectTypeOf( + useSuspenseQuery({ + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + }), + ).not.toHaveProperty('isPlaceholderData') + }) + + it('should type-narrow the error field', () => { const query = useSuspenseQuery({ queryKey: ['key'], queryFn: () => Promise.resolve(5), }) - // @ts-expect-error TS2339 - query.isPlaceholderData + if (query.status === 'error') { + expectTypeOf(query.error).toEqualTypeOf() + } }) }) diff --git a/packages/react-query/src/__tests__/useSuspenseQuery.test.tsx b/packages/react-query/src/__tests__/useSuspenseQuery.test.tsx index 64ab60d6ca0..06b8e61d07d 100644 --- a/packages/react-query/src/__tests__/useSuspenseQuery.test.tsx +++ b/packages/react-query/src/__tests__/useSuspenseQuery.test.tsx @@ -315,15 +315,23 @@ describe('useSuspenseQuery', () => { , ) - await waitFor(() => rendered.getByText('Loading...')) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('Loading...')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => expect(rendered.getByText('retry')).toBeInTheDocument()) fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => expect(rendered.getByText('retry')).toBeInTheDocument()) succeed = true fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('rendered')) + await waitFor(() => + expect(rendered.getByText('rendered')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -404,11 +412,19 @@ describe('useSuspenseQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Loading...')) - await waitFor(() => rendered.getByText(`data: ${key1}`)) + await waitFor(() => + expect(rendered.getByText('Loading...')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText(`data: ${key1}`)).toBeInTheDocument(), + ) fireEvent.click(rendered.getByText('switch')) - await waitFor(() => rendered.getByText('Loading...')) - await waitFor(() => rendered.getByText(`data: ${key2}`)) + await waitFor(() => + expect(rendered.getByText('Loading...')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText(`data: ${key2}`)).toBeInTheDocument(), + ) }) it('should retry fetch if the reset error boundary has been reset with global hook', async () => { @@ -462,15 +478,23 @@ describe('useSuspenseQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Loading...')) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('Loading...')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => expect(rendered.getByText('retry')).toBeInTheDocument()) fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('error boundary')) - await waitFor(() => rendered.getByText('retry')) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) + await waitFor(() => expect(rendered.getByText('retry')).toBeInTheDocument()) succeed = true fireEvent.click(rendered.getByText('retry')) - await waitFor(() => rendered.getByText('rendered')) + await waitFor(() => + expect(rendered.getByText('rendered')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -510,8 +534,12 @@ describe('useSuspenseQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Loading...')) - await waitFor(() => rendered.getByText('error boundary')) + await waitFor(() => + expect(rendered.getByText('Loading...')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -553,8 +581,12 @@ describe('useSuspenseQuery', () => { const rendered = renderWithClient(queryClient, ) - await waitFor(() => rendered.getByText('Loading...')) - await waitFor(() => rendered.getByText('error boundary')) + await waitFor(() => + expect(rendered.getByText('Loading...')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('error boundary')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -703,7 +735,7 @@ describe('useSuspenseQuery', () => { it('should render the correct amount of times in Suspense mode when gcTime is set to 0', async () => { const key = queryKey() - let state: UseSuspenseQueryResult | null = null + let state: UseSuspenseQueryResult | null = null let count = 0 let renders = 0 @@ -794,16 +826,22 @@ describe('useSuspenseQuery', () => { const rendered = renderWithClient(queryClient, ) // render suspense fallback (Loading...) - await waitFor(() => rendered.getByText('Loading...')) + await waitFor(() => + expect(rendered.getByText('Loading...')).toBeInTheDocument(), + ) // resolve promise -> render Page (rendered) - await waitFor(() => rendered.getByText('rendered data success')) + await waitFor(() => + expect(rendered.getByText('rendered data success')).toBeInTheDocument(), + ) // change promise result to error succeed = false // refetch fireEvent.click(rendered.getByRole('button', { name: 'refetch' })) // we are now in error state but still have data to show - await waitFor(() => rendered.getByText('rendered data error')) + await waitFor(() => + expect(rendered.getByText('rendered data error')).toBeInTheDocument(), + ) consoleMock.mockRestore() }) @@ -849,12 +887,20 @@ describe('useSuspenseQuery', () => { , ) - await waitFor(() => rendered.getByText('loading')) - await waitFor(() => rendered.getByText('data: 1')) + await waitFor(() => + expect(rendered.getByText('loading')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('data: 1')).toBeInTheDocument(), + ) fireEvent.click(rendered.getByLabelText('toggle')) - await waitFor(() => rendered.getByText('loading')) - await waitFor(() => rendered.getByText('data: 2')) + await waitFor(() => + expect(rendered.getByText('loading')).toBeInTheDocument(), + ) + await waitFor(() => + expect(rendered.getByText('data: 2')).toBeInTheDocument(), + ) }) it('should log an error when skipToken is passed as queryFn', () => { @@ -888,4 +934,35 @@ describe('useSuspenseQuery', () => { ) consoleErrorSpy.mockRestore() }) + it('should properly refresh data when refetchInterval is set', async () => { + const key = queryKey() + let count = 0 + + function Page() { + const state = useSuspenseQuery({ + queryKey: key, + queryFn: async () => { + count++ + await sleep(1) + return count + }, + refetchInterval: 10, + }) + + return
count: {state.data}
+ } + + const rendered = renderWithClient( + queryClient, + + + , + ) + + await waitFor(() => rendered.getByText('count: 1')) + await waitFor(() => rendered.getByText('count: 2')) + await waitFor(() => rendered.getByText('count: 3')) + + expect(count).toBeGreaterThanOrEqual(3) + }) }) diff --git a/packages/react-query/src/__tests__/utils.tsx b/packages/react-query/src/__tests__/utils.tsx index 7e251777688..d3536bf98dc 100644 --- a/packages/react-query/src/__tests__/utils.tsx +++ b/packages/react-query/src/__tests__/utils.tsx @@ -92,5 +92,3 @@ export function setIsServer(isServer: boolean) { }) } } - -export const doNotExecute = (_func: () => void) => true diff --git a/packages/react-query/src/index.ts b/packages/react-query/src/index.ts index 5f372f4195e..521929a5e6e 100644 --- a/packages/react-query/src/index.ts +++ b/packages/react-query/src/index.ts @@ -52,4 +52,4 @@ export { useIsFetching } from './useIsFetching' export { useIsMutating, useMutationState } from './useMutationState' export { useMutation } from './useMutation' export { useInfiniteQuery } from './useInfiniteQuery' -export { useIsRestoring, IsRestoringProvider } from './isRestoring' +export { useIsRestoring, IsRestoringProvider } from './IsRestoringProvider' diff --git a/packages/react-query/src/types.ts b/packages/react-query/src/types.ts index 16094253014..18f632d4066 100644 --- a/packages/react-query/src/types.ts +++ b/packages/react-query/src/types.ts @@ -4,6 +4,7 @@ import type { DefaultError, DefinedInfiniteQueryObserverResult, DefinedQueryObserverResult, + DistributiveOmit, InfiniteQueryObserverOptions, InfiniteQueryObserverResult, MutateFunction, @@ -155,7 +156,7 @@ export type UseQueryResult< export type UseSuspenseQueryResult< TData = unknown, TError = DefaultError, -> = OmitKeyof< +> = DistributiveOmit< DefinedQueryObserverResult, 'isPlaceholderData' | 'promise' > diff --git a/packages/react-query/src/useBaseQuery.ts b/packages/react-query/src/useBaseQuery.ts index ed731e4309a..4ab885da210 100644 --- a/packages/react-query/src/useBaseQuery.ts +++ b/packages/react-query/src/useBaseQuery.ts @@ -9,7 +9,7 @@ import { getHasError, useClearResetErrorBoundary, } from './errorBoundaryUtils' -import { useIsRestoring } from './isRestoring' +import { useIsRestoring } from './IsRestoringProvider' import { ensureSuspenseTimers, fetchOptimistic, diff --git a/packages/react-query/src/useQueries.ts b/packages/react-query/src/useQueries.ts index a3b23128979..5e580a8120d 100644 --- a/packages/react-query/src/useQueries.ts +++ b/packages/react-query/src/useQueries.ts @@ -7,7 +7,7 @@ import { notifyManager, } from '@tanstack/query-core' import { useQueryClient } from './QueryClientProvider' -import { useIsRestoring } from './isRestoring' +import { useIsRestoring } from './IsRestoringProvider' import { useQueryErrorResetBoundary } from './QueryErrorResetBoundary' import { ensurePreventErrorBoundaryRetry, diff --git a/packages/solid-query-devtools/eslint.config.js b/packages/solid-query-devtools/eslint.config.js index df75435c7e1..7ccaf501775 100644 --- a/packages/solid-query-devtools/eslint.config.js +++ b/packages/solid-query-devtools/eslint.config.js @@ -1,5 +1,15 @@ // @ts-check +import vitest from '@vitest/eslint-plugin' import rootConfig from './root.eslint.config.js' -export default [...rootConfig] +export default [ + ...rootConfig, + { + plugins: { vitest }, + rules: { + ...vitest.configs.recommended.rules, + 'vitest/expect-expect': 'warn', + }, + }, +] diff --git a/packages/solid-query-devtools/package.json b/packages/solid-query-devtools/package.json index 6b3e82c2527..b4c6482a249 100644 --- a/packages/solid-query-devtools/package.json +++ b/packages/solid-query-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/solid-query-devtools", - "version": "5.74.6", + "version": "5.75.4", "description": "Developer tools to interact with and visualize the TanStack/solid-query Query cache", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/solid-query-persist-client/eslint.config.js b/packages/solid-query-persist-client/eslint.config.js index df75435c7e1..7ccaf501775 100644 --- a/packages/solid-query-persist-client/eslint.config.js +++ b/packages/solid-query-persist-client/eslint.config.js @@ -1,5 +1,15 @@ // @ts-check +import vitest from '@vitest/eslint-plugin' import rootConfig from './root.eslint.config.js' -export default [...rootConfig] +export default [ + ...rootConfig, + { + plugins: { vitest }, + rules: { + ...vitest.configs.recommended.rules, + 'vitest/expect-expect': 'warn', + }, + }, +] diff --git a/packages/solid-query-persist-client/package.json b/packages/solid-query-persist-client/package.json index eee8187b74a..cce717dc3f1 100644 --- a/packages/solid-query-persist-client/package.json +++ b/packages/solid-query-persist-client/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/solid-query-persist-client", - "version": "5.74.6", + "version": "5.75.4", "description": "Solid.js bindings to work with persisters in TanStack/solid-query", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/solid-query/eslint.config.js b/packages/solid-query/eslint.config.js index df75435c7e1..7ccaf501775 100644 --- a/packages/solid-query/eslint.config.js +++ b/packages/solid-query/eslint.config.js @@ -1,5 +1,15 @@ // @ts-check +import vitest from '@vitest/eslint-plugin' import rootConfig from './root.eslint.config.js' -export default [...rootConfig] +export default [ + ...rootConfig, + { + plugins: { vitest }, + rules: { + ...vitest.configs.recommended.rules, + 'vitest/expect-expect': 'warn', + }, + }, +] diff --git a/packages/solid-query/package.json b/packages/solid-query/package.json index c8b3acd820d..e57bec74a6e 100644 --- a/packages/solid-query/package.json +++ b/packages/solid-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/solid-query", - "version": "5.74.4", + "version": "5.75.4", "description": "Primitives for managing, caching and syncing asynchronous and remote data in Solid", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/solid-query/src/__tests__/useMutation.test.tsx b/packages/solid-query/src/__tests__/useMutation.test.tsx index 4c23bf383e7..d1d4a8a579b 100644 --- a/packages/solid-query/src/__tests__/useMutation.test.tsx +++ b/packages/solid-query/src/__tests__/useMutation.test.tsx @@ -1,11 +1,11 @@ -import { describe, expect, it, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { ErrorBoundary, createEffect, createRenderEffect, createSignal, } from 'solid-js' -import { fireEvent, render, waitFor } from '@solidjs/testing-library' +import { fireEvent, render } from '@solidjs/testing-library' import { MutationCache, QueryCache, QueryClientProvider, useMutation } from '..' import { createQueryClient, @@ -17,6 +17,14 @@ import { import type { UseMutationResult } from '../types' describe('useMutation', () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + const queryCache = new QueryCache() const mutationCache = new MutationCache() const queryClient = createQueryClient({ queryCache, mutationCache }) @@ -46,15 +54,14 @@ describe('useMutation', () => { fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.getByRole('heading').textContent).toBe('mutation') }) fireEvent.click(rendered.getByRole('button', { name: /reset/i })) - await waitFor(() => { - expect(rendered.getByRole('heading').textContent).toBe('empty') - }) + await vi.waitFor(() => {}) + expect(rendered.getByRole('heading').textContent).toBe('empty') }) it('should be able to reset `error`', async () => { @@ -86,13 +93,11 @@ describe('useMutation', () => { )) - await waitFor(() => { - expect(rendered.queryByRole('heading')).toBeNull() - }) + expect(rendered.queryByRole('heading')).toBeNull() fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.getByRole('heading').textContent).toBe( 'Expected mock error. All is well!', ) @@ -100,7 +105,7 @@ describe('useMutation', () => { fireEvent.click(rendered.getByRole('button', { name: /reset/i })) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.queryByRole('heading')).toBeNull() }) @@ -150,11 +155,11 @@ describe('useMutation', () => { fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.getByRole('heading').textContent).toBe('3') }) - await waitFor(() => { + await vi.waitFor(() => { expect(onSuccessMock).toHaveBeenCalledTimes(3) }) @@ -162,7 +167,7 @@ describe('useMutation', () => { expect(onSuccessMock).toHaveBeenCalledWith(2) expect(onSuccessMock).toHaveBeenCalledWith(3) - await waitFor(() => { + await vi.waitFor(() => { expect(onSettledMock).toHaveBeenCalledTimes(3) }) @@ -177,14 +182,11 @@ describe('useMutation', () => { const mutateFn = vi.fn<(value: Value) => Promise>() - mutateFn.mockImplementationOnce(() => { - return Promise.reject(new Error('Error test Jonas')) - }) + mutateFn.mockImplementationOnce(() => + Promise.reject(new Error('Error test Jonas')), + ) - mutateFn.mockImplementation(async (value) => { - await sleep(10) - return Promise.resolve(value) - }) + mutateFn.mockImplementation((value) => sleep(10).then(() => value)) function Page() { const mutation = useMutation(() => ({ @@ -215,20 +217,22 @@ describe('useMutation', () => { )) - await waitFor(() => rendered.getByText('Data')) + rendered.getByText('Data') fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => rendered.getByText('Data')) - await waitFor(() => rendered.getByText('Status error')) - await waitFor(() => rendered.getByText('Failed 1 times')) - await waitFor(() => rendered.getByText('Failed because Error test Jonas')) + rendered.getByText('Data') + await vi.waitFor(() => rendered.getByText('Status error')) + await vi.waitFor(() => rendered.getByText('Failed 1 times')) + await vi.waitFor(() => + rendered.getByText('Failed because Error test Jonas'), + ) fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => rendered.getByText('Status pending')) - await waitFor(() => rendered.getByText('Status success')) - await waitFor(() => rendered.getByText('Data 2')) - await waitFor(() => rendered.getByText('Failed 0 times')) - await waitFor(() => rendered.getByText('Failed because null')) + await vi.waitFor(() => rendered.getByText('Status pending')) + await vi.waitFor(() => rendered.getByText('Status success')) + await vi.waitFor(() => rendered.getByText('Data 2')) + await vi.waitFor(() => rendered.getByText('Failed 0 times')) + await vi.waitFor(() => rendered.getByText('Failed because null')) }) it('should be able to call `onError` and `onSettled` after each failed mutate', async () => { @@ -280,11 +284,11 @@ describe('useMutation', () => { fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.getByRole('heading').textContent).toBe('3') }) - await waitFor(() => { + await vi.waitFor(() => { expect(onErrorMock).toHaveBeenCalledTimes(3) }) expect(onErrorMock).toHaveBeenCalledWith( @@ -297,7 +301,7 @@ describe('useMutation', () => { 'Expected mock error. All is well! 3', ) - await waitFor(() => { + await vi.waitFor(() => { expect(onSettledMock).toHaveBeenCalledTimes(3) }) expect(onSettledMock).toHaveBeenCalledWith( @@ -351,7 +355,7 @@ describe('useMutation', () => { )) - await sleep(100) + await vi.advanceTimersByTimeAsync(10) expect(callbacks).toEqual([ 'useMutation.onSuccess', @@ -367,7 +371,7 @@ describe('useMutation', () => { function Page() { const mutation = useMutation(() => ({ - mutationFn: async (_text: string) => Promise.reject(new Error('oops')), + mutationFn: (_text: string) => Promise.reject(new Error('oops')), onError: () => { callbacks.push('useMutation.onError') @@ -404,7 +408,7 @@ describe('useMutation', () => { )) - await sleep(100) + await vi.advanceTimersByTimeAsync(10) expect(callbacks).toEqual([ 'useMutation.onError', @@ -419,10 +423,7 @@ describe('useMutation', () => { const key = queryKey() queryClient.setMutationDefaults(key, { - mutationFn: async (text: string) => { - await sleep(10) - return text - }, + mutationFn: (text: string) => sleep(10).then(() => text), }) const states: Array> = [] @@ -452,7 +453,7 @@ describe('useMutation', () => { )) - await sleep(100) + await vi.advanceTimersByTimeAsync(20) expect(states.length).toBe(3) expect(states[0]).toMatchObject({ data: undefined, isPending: false }) @@ -489,7 +490,7 @@ describe('useMutation', () => { )) - await sleep(100) + await vi.advanceTimersByTimeAsync(20) expect(count).toBe(2) }) @@ -529,34 +530,27 @@ describe('useMutation', () => { )) - await waitFor(() => { - expect( - rendered.getByText('error: null, status: idle, isPaused: false'), - ).toBeInTheDocument() - }) + expect( + rendered.getByText('error: null, status: idle, isPaused: false'), + ).toBeInTheDocument() window.dispatchEvent(new Event('offline')) fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) - await waitFor(() => { - expect( - rendered.getByText('error: null, status: pending, isPaused: true'), - ).toBeInTheDocument() - }) + expect( + rendered.getByText('error: null, status: pending, isPaused: true'), + ).toBeInTheDocument() expect(count).toBe(0) onlineMock.mockRestore() window.dispatchEvent(new Event('online')) - await sleep(100) - - await waitFor(() => { - expect( - rendered.getByText('error: oops, status: error, isPaused: false'), - ).toBeInTheDocument() - }) + await vi.advanceTimersByTimeAsync(5) + expect( + rendered.getByText('error: oops, status: error, isPaused: false'), + ).toBeInTheDocument() expect(count).toBe(2) }) @@ -607,6 +601,7 @@ describe('useMutation', () => { onlineMock.mockRestore() window.dispatchEvent(new Event('online')) + await vi.advanceTimersByTimeAsync(10) await rendered.findByText('data: 1, status: success, isPaused: false') expect(onMutate).toHaveBeenCalledTimes(1) @@ -661,6 +656,7 @@ describe('useMutation', () => { onlineMock.mockReturnValue(true) window.dispatchEvent(new Event('online')) + await vi.advanceTimersByTimeAsync(10) await rendered.findByText('data: 1, status: success, isPaused: false') onlineMock.mockRestore() @@ -707,7 +703,7 @@ describe('useMutation', () => { )) - await sleep(50) + await vi.advanceTimersByTimeAsync(16) expect(states.length).toBe(4) expect(states[0]).toMatchObject({ @@ -738,7 +734,7 @@ describe('useMutation', () => { onlineMock.mockRestore() window.dispatchEvent(new Event('online')) - await sleep(50) + await vi.advanceTimersByTimeAsync(1) expect(states.length).toBe(6) expect(states[4]).toMatchObject({ @@ -818,7 +814,7 @@ describe('useMutation', () => { fireEvent.click(rendered.getByText('mutate')) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.queryByText('error')).not.toBeNull() }) @@ -868,13 +864,13 @@ describe('useMutation', () => { // first error goes to component fireEvent.click(rendered.getByText('mutate')) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.queryByText('mock error')).not.toBeNull() }) // second error goes to boundary fireEvent.click(rendered.getByText('mutate')) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.queryByText('error boundary')).not.toBeNull() }) @@ -930,7 +926,7 @@ describe('useMutation', () => { fireEvent.click(rendered.getByText('succeed')) fireEvent.click(rendered.getByText('error')) - await waitFor(() => { + await vi.waitFor(() => { expect(rendered.queryByText('successTest')).not.toBeNull() expect(rendered.queryByText('errorTest')).not.toBeNull() }) @@ -1003,7 +999,7 @@ describe('useMutation', () => { fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) fireEvent.click(rendered.getByRole('button', { name: /hide/i })) - await waitFor(() => { + await vi.waitFor(() => { expect( queryClient.getMutationCache().findAll({ mutationKey: mutationKey }), ).toHaveLength(0) @@ -1065,6 +1061,7 @@ describe('useMutation', () => { fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) fireEvent.click(rendered.getByRole('button', { name: /mutate/i })) + await vi.advanceTimersByTimeAsync(10) await rendered.findByText('data: result2, status: success') expect(count).toBe(2) @@ -1114,6 +1111,7 @@ describe('useMutation', () => { rendered.getByRole('button', { name: /mutate/i }).click() + await vi.advanceTimersByTimeAsync(10) await rendered.findByText('status: error') expect(onError).toHaveBeenCalledWith(error, 'todo', undefined) @@ -1154,6 +1152,7 @@ describe('useMutation', () => { rendered.getByRole('button', { name: /mutate/i }).click() + await vi.advanceTimersByTimeAsync(10) await rendered.findByText('error: mutateFnError, status: error') }) @@ -1194,6 +1193,7 @@ describe('useMutation', () => { rendered.getByRole('button', { name: /mutate/i }).click() + await vi.advanceTimersByTimeAsync(10) await rendered.findByText('error: mutateFnError, status: error') expect(onError).toHaveBeenCalledWith(mutateFnError, 'todo', undefined) diff --git a/packages/solid-query/src/__tests__/useQueryOptions.test-d.tsx b/packages/solid-query/src/__tests__/useQueryOptions.test-d.tsx index e4aee2be375..d0f4d60446d 100644 --- a/packages/solid-query/src/__tests__/useQueryOptions.test-d.tsx +++ b/packages/solid-query/src/__tests__/useQueryOptions.test-d.tsx @@ -8,8 +8,6 @@ import type { UndefinedInitialDataInfiniteOptions, } from '../infiniteQueryOptions' -const doNotRun = (_callback: () => void) => {} - describe('infiniteQueryOptions', () => { it('should infer defined types', () => { const options = infiniteQueryOptions({ @@ -23,27 +21,25 @@ describe('infiniteQueryOptions', () => { initialPageParam: 0, }) - doNotRun(() => { - expectTypeOf(useInfiniteQuery(() => options).data).toEqualTypeOf< - InfiniteData<{ wow: boolean }, unknown> - >() + expectTypeOf(useInfiniteQuery(() => options).data).toEqualTypeOf< + InfiniteData<{ wow: boolean }, unknown> + >() - expectTypeOf(options).toMatchTypeOf< - ReturnType< - DefinedInitialDataInfiniteOptions< - { wow: boolean }, - Error, - InfiniteData<{ wow: boolean }, unknown>, - Array, - number | undefined - > + expectTypeOf(options).toMatchTypeOf< + ReturnType< + DefinedInitialDataInfiniteOptions< + { wow: boolean }, + Error, + InfiniteData<{ wow: boolean }, unknown>, + Array, + number | undefined > - >() + > + >() - expectTypeOf(options.queryKey[dataTagSymbol]).toEqualTypeOf< - InfiniteData<{ wow: boolean }> - >() - }) + expectTypeOf(options.queryKey[dataTagSymbol]).toEqualTypeOf< + InfiniteData<{ wow: boolean }> + >() }) it('should work without defined types', () => { @@ -54,28 +50,26 @@ describe('infiniteQueryOptions', () => { initialPageParam: 0, }) - doNotRun(() => { - expectTypeOf(() => useInfiniteQuery(() => options).data).toEqualTypeOf< - () => InfiniteData<{ wow: boolean }, unknown> | undefined - >() + expectTypeOf(() => useInfiniteQuery(() => options).data).toEqualTypeOf< + () => InfiniteData<{ wow: boolean }, unknown> | undefined + >() - expectTypeOf(options).toMatchTypeOf< - ReturnType< - UndefinedInitialDataInfiniteOptions< - { wow: boolean }, - Error, - InfiniteData<{ wow: boolean }, unknown>, - Array, - number - > + expectTypeOf(options).toMatchTypeOf< + ReturnType< + UndefinedInitialDataInfiniteOptions< + { wow: boolean }, + Error, + InfiniteData<{ wow: boolean }, unknown>, + Array, + number > - >() + > + >() - expectTypeOf(options.queryKey[dataTagSymbol]).toEqualTypeOf< - InfiniteData<{ - wow: boolean - }> - >() - }) + expectTypeOf(options.queryKey[dataTagSymbol]).toEqualTypeOf< + InfiniteData<{ + wow: boolean + }> + >() }) }) diff --git a/packages/svelte-query-devtools/eslint.config.js b/packages/svelte-query-devtools/eslint.config.js index f31c5e878b4..b40d00982ab 100644 --- a/packages/svelte-query-devtools/eslint.config.js +++ b/packages/svelte-query-devtools/eslint.config.js @@ -1,5 +1,6 @@ // @ts-check +import vitest from '@vitest/eslint-plugin' import pluginSvelte from 'eslint-plugin-svelte' import rootConfig from './root.eslint.config.js' @@ -13,4 +14,11 @@ export default [ 'svelte/valid-compile': 'off', }, }, + { + plugins: { vitest }, + rules: { + ...vitest.configs.recommended.rules, + 'vitest/expect-expect': 'warn', + }, + }, ] diff --git a/packages/svelte-query-devtools/package.json b/packages/svelte-query-devtools/package.json index e3fc929cf5b..7addc6a1310 100644 --- a/packages/svelte-query-devtools/package.json +++ b/packages/svelte-query-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/svelte-query-devtools", - "version": "5.74.6", + "version": "5.75.4", "description": "Developer tools to interact with and visualize the TanStack/svelte-query cache", "author": "Lachlan Collins", "license": "MIT", diff --git a/packages/svelte-query-persist-client/eslint.config.js b/packages/svelte-query-persist-client/eslint.config.js index f31c5e878b4..b40d00982ab 100644 --- a/packages/svelte-query-persist-client/eslint.config.js +++ b/packages/svelte-query-persist-client/eslint.config.js @@ -1,5 +1,6 @@ // @ts-check +import vitest from '@vitest/eslint-plugin' import pluginSvelte from 'eslint-plugin-svelte' import rootConfig from './root.eslint.config.js' @@ -13,4 +14,11 @@ export default [ 'svelte/valid-compile': 'off', }, }, + { + plugins: { vitest }, + rules: { + ...vitest.configs.recommended.rules, + 'vitest/expect-expect': 'warn', + }, + }, ] diff --git a/packages/svelte-query-persist-client/package.json b/packages/svelte-query-persist-client/package.json index 1d7148ce547..b6da280db5b 100644 --- a/packages/svelte-query-persist-client/package.json +++ b/packages/svelte-query-persist-client/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/svelte-query-persist-client", - "version": "5.74.6", + "version": "5.75.4", "description": "Svelte bindings to work with persisters in TanStack/svelte-query", "author": "Lachlan Collins", "license": "MIT", diff --git a/packages/svelte-query/eslint.config.js b/packages/svelte-query/eslint.config.js index f31c5e878b4..b40d00982ab 100644 --- a/packages/svelte-query/eslint.config.js +++ b/packages/svelte-query/eslint.config.js @@ -1,5 +1,6 @@ // @ts-check +import vitest from '@vitest/eslint-plugin' import pluginSvelte from 'eslint-plugin-svelte' import rootConfig from './root.eslint.config.js' @@ -13,4 +14,11 @@ export default [ 'svelte/valid-compile': 'off', }, }, + { + plugins: { vitest }, + rules: { + ...vitest.configs.recommended.rules, + 'vitest/expect-expect': 'warn', + }, + }, ] diff --git a/packages/svelte-query/package.json b/packages/svelte-query/package.json index e0b1ea07dd6..f32a6cd9ae2 100644 --- a/packages/svelte-query/package.json +++ b/packages/svelte-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/svelte-query", - "version": "5.74.4", + "version": "5.75.4", "description": "Primitives for managing, caching and syncing asynchronous and remote data in Svelte", "author": "Lachlan Collins", "license": "MIT", diff --git a/packages/vue-query-devtools/eslint.config.js b/packages/vue-query-devtools/eslint.config.js index 6cd1d47ba72..0810a2d674c 100644 --- a/packages/vue-query-devtools/eslint.config.js +++ b/packages/vue-query-devtools/eslint.config.js @@ -1,7 +1,18 @@ // @ts-check +import vitest from '@vitest/eslint-plugin' // @ts-expect-error import pluginVue from 'eslint-plugin-vue' import rootConfig from './root.eslint.config.js' -export default [...rootConfig, ...pluginVue.configs['flat/base']] +export default [ + ...rootConfig, + ...pluginVue.configs['flat/base'], + { + plugins: { vitest }, + rules: { + ...vitest.configs.recommended.rules, + 'vitest/expect-expect': 'warn', + }, + }, +] diff --git a/packages/vue-query-devtools/package.json b/packages/vue-query-devtools/package.json index c5e6a5a0dd1..8bfd71c7065 100644 --- a/packages/vue-query-devtools/package.json +++ b/packages/vue-query-devtools/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/vue-query-devtools", - "version": "5.74.6", + "version": "5.75.4", "description": "Developer tools to interact with and visualize the TanStack/vue-query cache", "author": "tannerlinsley", "license": "MIT", diff --git a/packages/vue-query/eslint.config.js b/packages/vue-query/eslint.config.js index 6cd1d47ba72..0810a2d674c 100644 --- a/packages/vue-query/eslint.config.js +++ b/packages/vue-query/eslint.config.js @@ -1,7 +1,18 @@ // @ts-check +import vitest from '@vitest/eslint-plugin' // @ts-expect-error import pluginVue from 'eslint-plugin-vue' import rootConfig from './root.eslint.config.js' -export default [...rootConfig, ...pluginVue.configs['flat/base']] +export default [ + ...rootConfig, + ...pluginVue.configs['flat/base'], + { + plugins: { vitest }, + rules: { + ...vitest.configs.recommended.rules, + 'vitest/expect-expect': 'warn', + }, + }, +] diff --git a/packages/vue-query/package.json b/packages/vue-query/package.json index 1bd7dbda820..1c3126dafdb 100644 --- a/packages/vue-query/package.json +++ b/packages/vue-query/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/vue-query", - "version": "5.74.6", + "version": "5.75.4", "description": "Hooks for managing, caching and syncing asynchronous and remote data in Vue", "author": "Damian Osipiuk", "license": "MIT", diff --git a/packages/vue-query/src/__tests__/queryOptions.test-d.ts b/packages/vue-query/src/__tests__/queryOptions.test-d.ts index 8ee93aadcab..c40d606e862 100644 --- a/packages/vue-query/src/__tests__/queryOptions.test-d.ts +++ b/packages/vue-query/src/__tests__/queryOptions.test-d.ts @@ -122,4 +122,92 @@ describe('queryOptions', () => { expectTypeOf(data).toEqualTypeOf>() expectTypeOf(data2).toEqualTypeOf>() }) + + it('TData should always be defined when initialData is provided as a function which ALWAYS returns the data', () => { + const { data } = reactive( + useQuery( + queryOptions({ + queryKey: ['key'], + queryFn: () => { + return { + wow: true, + } + }, + initialData: () => ({ + wow: true, + }), + }), + ), + ) + + expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() + }) + + it('TData should have undefined in the union when initialData is NOT provided', () => { + const { data } = reactive( + useQuery( + queryOptions({ + queryKey: ['key'], + queryFn: () => { + return { + wow: true, + } + }, + }), + ), + ) + + expectTypeOf(data).toEqualTypeOf<{ wow: boolean } | undefined>() + }) + + it('TData should have undefined in the union when initialData is provided as a function which can return undefined', () => { + const { data } = reactive( + useQuery( + queryOptions({ + queryKey: ['key'], + queryFn: () => { + return { + wow: true, + } + }, + initialData: () => undefined as { wow: boolean } | undefined, + }), + ), + ) + + expectTypeOf(data).toEqualTypeOf<{ wow: boolean } | undefined>() + }) + + it('TData should be narrowed after an isSuccess check when initialData is provided as a function which can return undefined', () => { + const { data, isSuccess } = reactive( + useQuery( + queryOptions({ + queryKey: ['key'], + queryFn: () => { + return { + wow: true, + } + }, + initialData: () => undefined as { wow: boolean } | undefined, + }), + ), + ) + + if (isSuccess) { + expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() + } + }) + + it('data should not have undefined when initialData is provided', () => { + const { data } = reactive( + useQuery( + queryOptions({ + queryKey: ['query-key'], + initialData: 42, + }), + ), + ) + + expectTypeOf(data).toEqualTypeOf() + }) }) diff --git a/packages/vue-query/src/__tests__/useQuery.test-d.ts b/packages/vue-query/src/__tests__/useQuery.test-d.ts index a02ee4b638c..84437f8fc19 100644 --- a/packages/vue-query/src/__tests__/useQuery.test-d.ts +++ b/packages/vue-query/src/__tests__/useQuery.test-d.ts @@ -125,6 +125,17 @@ describe('useQuery', () => { expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() } }) + + it('data should not have undefined when initialData is provided', () => { + const { data } = reactive( + useQuery({ + queryKey: ['query-key'], + initialData: 42, + }), + ) + + expectTypeOf(data).toEqualTypeOf() + }) }) describe('custom composable', () => { @@ -150,11 +161,14 @@ describe('useQuery', () => { }) describe('structuralSharing', () => { - it('should restrict to same types', () => { + it('should be able to use structuralSharing with unknown types', () => { + // https://github.com/TanStack/query/issues/6525#issuecomment-1938411343 useQuery({ queryKey: ['key'], queryFn: () => 5, - structuralSharing: (_oldData, newData) => { + structuralSharing: (oldData, newData) => { + expectTypeOf(oldData).toBeUnknown() + expectTypeOf(newData).toBeUnknown() return newData }, }) diff --git a/packages/vue-query/src/queryOptions.ts b/packages/vue-query/src/queryOptions.ts index 558756c44f7..4681080f8ca 100644 --- a/packages/vue-query/src/queryOptions.ts +++ b/packages/vue-query/src/queryOptions.ts @@ -10,8 +10,8 @@ export function queryOptions< TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( - options: UndefinedInitialQueryOptions, -): UndefinedInitialQueryOptions & { + options: DefinedInitialQueryOptions, +): DefinedInitialQueryOptions & { queryKey: DataTag } @@ -21,8 +21,8 @@ export function queryOptions< TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( - options: DefinedInitialQueryOptions, -): DefinedInitialQueryOptions & { + options: UndefinedInitialQueryOptions, +): UndefinedInitialQueryOptions & { queryKey: DataTag } diff --git a/packages/vue-query/src/types.ts b/packages/vue-query/src/types.ts index a0c9fbaf5de..afabb55ea39 100644 --- a/packages/vue-query/src/types.ts +++ b/packages/vue-query/src/types.ts @@ -55,10 +55,6 @@ export type DeepUnwrapRef = T extends UnwrapLeaf } : UnwrapRef -export type DistributiveOmit = T extends any - ? Omit - : never - export interface DefaultOptions { queries?: OmitKeyof, 'queryKey'> & { /** diff --git a/packages/vue-query/src/useMutation.ts b/packages/vue-query/src/useMutation.ts index c8f490b3f99..62c207b1eac 100644 --- a/packages/vue-query/src/useMutation.ts +++ b/packages/vue-query/src/useMutation.ts @@ -15,12 +15,13 @@ import { useQueryClient } from './useQueryClient' import type { ToRefs } from 'vue-demi' import type { DefaultError, + DistributiveOmit, MutateFunction, MutateOptions, MutationObserverOptions, MutationObserverResult, } from '@tanstack/query-core' -import type { DistributiveOmit, MaybeRefDeep } from './types' +import type { MaybeRefDeep } from './types' import type { QueryClient } from './queryClient' type MutationResult = DistributiveOmit< diff --git a/packages/vue-query/src/useQuery.ts b/packages/vue-query/src/useQuery.ts index a27258c2aaa..fd60dee2ee5 100644 --- a/packages/vue-query/src/useQuery.ts +++ b/packages/vue-query/src/useQuery.ts @@ -3,6 +3,7 @@ import { useBaseQuery } from './useBaseQuery' import type { DefaultError, DefinedQueryObserverResult, + InitialDataFunction, QueryKey, QueryObserverOptions, } from '@tanstack/query-core' @@ -64,7 +65,10 @@ export type UndefinedInitialQueryOptions< TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = UseQueryOptions & { - initialData?: undefined + initialData?: + | undefined + | InitialDataFunction> + | NonUndefinedGuard } export type DefinedInitialQueryOptions< @@ -95,9 +99,9 @@ export function useQuery< TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( - options: UndefinedInitialQueryOptions, + options: DefinedInitialQueryOptions, queryClient?: QueryClient, -): UseQueryReturnType +): UseQueryDefinedReturnType export function useQuery< TQueryFnData = unknown, @@ -105,9 +109,9 @@ export function useQuery< TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( - options: DefinedInitialQueryOptions, + options: UndefinedInitialQueryOptions, queryClient?: QueryClient, -): UseQueryDefinedReturnType +): UseQueryReturnType export function useQuery< TQueryFnData = unknown, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9bd065902ce..0b36d7c6ae6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,13 +45,13 @@ importers: version: 1.21.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.8.3) '@tanstack/config': specifier: ^0.14.2 - version: 0.14.2(@types/node@22.14.1)(esbuild@0.25.2)(eslint@9.15.0(jiti@2.4.2))(rollup@4.39.0)(typescript@5.8.3)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 0.14.2(@types/node@22.15.3)(esbuild@0.25.3)(eslint@9.15.0(jiti@2.4.2))(rollup@4.40.1)(typescript@5.8.3)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@testing-library/jest-dom': specifier: ^6.6.3 version: 6.6.3 '@types/node': specifier: ^22.9.3 - version: 22.14.1 + version: 22.15.3 '@types/react': specifier: ^19.0.1 version: 19.0.1 @@ -60,10 +60,10 @@ importers: version: 19.0.2(@types/react@19.0.1) '@vitest/coverage-istanbul': specifier: ^3.1.1 - version: 3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@vitest/eslint-plugin': specifier: ^1.1.36 - version: 1.1.36(@typescript-eslint/utils@8.18.1(eslint@9.15.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.15.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 1.1.36(@typescript-eslint/utils@8.18.1(eslint@9.15.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.15.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) cpy-cli: specifier: ^5.0.0 version: 5.0.0 @@ -81,7 +81,7 @@ importers: version: 25.0.1 knip: specifier: ^5.50.2 - version: 5.50.2(@types/node@22.14.1)(typescript@5.8.3) + version: 5.50.2(@types/node@22.15.3)(typescript@5.8.3) nx: specifier: 20.7.2 version: 20.7.2 @@ -108,7 +108,7 @@ importers: version: 1.0.0 tsup: specifier: ^8.4.0 - version: 8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.14.1))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1) + version: 8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.15.3))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1) typescript: specifier: 5.8.3 version: 5.8.3 @@ -138,10 +138,10 @@ importers: version: typescript@5.7.2 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) vitest: specifier: ^3.1.1 - version: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 3.1.1(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/angular/auto-refetching: dependencies: @@ -175,10 +175,10 @@ importers: devDependencies: '@angular/build': specifier: ^19.2.5 - version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) '@angular/cli': specifier: ^19.2.5 - version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + version: 19.2.5(@types/node@22.15.3)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^19.2.4 version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) @@ -218,10 +218,10 @@ importers: devDependencies: '@angular/build': specifier: ^19.2.5 - version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) '@angular/cli': specifier: ^19.2.5 - version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + version: 19.2.5(@types/node@22.15.3)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^19.2.4 version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) @@ -267,10 +267,10 @@ importers: devDependencies: '@angular/build': specifier: ^19.2.5 - version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) '@angular/cli': specifier: ^19.2.5 - version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + version: 19.2.5(@types/node@22.15.3)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^19.2.4 version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) @@ -316,10 +316,10 @@ importers: devDependencies: '@angular/build': specifier: ^19.2.5 - version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) '@angular/cli': specifier: ^19.2.5 - version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + version: 19.2.5(@types/node@22.15.3)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^19.2.4 version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) @@ -359,10 +359,10 @@ importers: devDependencies: '@angular/build': specifier: ^19.2.5 - version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) '@angular/cli': specifier: ^19.2.5 - version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + version: 19.2.5(@types/node@22.15.3)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^19.2.4 version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) @@ -405,10 +405,10 @@ importers: devDependencies: '@angular/build': specifier: ^19.2.5 - version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) '@angular/cli': specifier: ^19.2.5 - version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + version: 19.2.5(@types/node@22.15.3)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^19.2.4 version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) @@ -448,10 +448,10 @@ importers: devDependencies: '@angular/build': specifier: ^19.2.5 - version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) '@angular/cli': specifier: ^19.2.5 - version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + version: 19.2.5(@types/node@22.15.3)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^19.2.4 version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) @@ -494,10 +494,10 @@ importers: devDependencies: '@angular/build': specifier: ^19.2.5 - version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) '@angular/cli': specifier: ^19.2.5 - version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + version: 19.2.5(@types/node@22.15.3)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^19.2.4 version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) @@ -540,10 +540,10 @@ importers: devDependencies: '@angular/build': specifier: ^19.2.5 - version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) '@angular/cli': specifier: ^19.2.5 - version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + version: 19.2.5(@types/node@22.15.3)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^19.2.4 version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) @@ -586,10 +586,10 @@ importers: devDependencies: '@angular/build': specifier: ^19.2.5 - version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) '@angular/cli': specifier: ^19.2.5 - version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + version: 19.2.5(@types/node@22.15.3)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^19.2.4 version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) @@ -629,10 +629,10 @@ importers: devDependencies: '@angular/build': specifier: ^19.2.5 - version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) '@angular/cli': specifier: ^19.2.5 - version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + version: 19.2.5(@types/node@22.15.3)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^19.2.4 version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) @@ -669,13 +669,13 @@ importers: version: 19.0.2(@types/react@19.0.1) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/auto-refetching: dependencies: @@ -686,8 +686,8 @@ importers: specifier: workspace:* version: link:../../../packages/react-query-devtools next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) + specifier: ^15.3.1 + version: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) react: specifier: ^18.2.0 version: 18.3.1 @@ -737,13 +737,13 @@ importers: version: 19.0.2(@types/react@19.0.1) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/basic-graphql-request: dependencies: @@ -768,10 +768,10 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/chat: dependencies: @@ -790,10 +790,10 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.0.14 - version: 4.0.14(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.0.14(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) tailwindcss: specifier: ^4.0.14 version: 4.0.14 @@ -802,7 +802,7 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/default-query-function: dependencies: @@ -821,13 +821,13 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/devtools-panel: dependencies: @@ -846,13 +846,13 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/eslint-legacy: dependencies: @@ -886,13 +886,13 @@ importers: version: 19.0.2(@types/react@19.0.1) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/infinite-query-with-max-pages: dependencies: @@ -903,8 +903,8 @@ importers: specifier: workspace:* version: link:../../../packages/react-query-devtools next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) + specifier: ^15.3.1 + version: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) react: specifier: ^18.2.0 version: 18.3.1 @@ -931,8 +931,8 @@ importers: specifier: workspace:* version: link:../../../packages/react-query-devtools next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) + specifier: ^15.3.1 + version: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) react: specifier: ^18.2.0 version: 18.3.1 @@ -962,8 +962,8 @@ importers: specifier: workspace:* version: link:../../../packages/react-query-devtools next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) + specifier: ^15.3.1 + version: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) react: specifier: ^18.2.0 version: 18.3.1 @@ -990,8 +990,8 @@ importers: specifier: workspace:* version: link:../../../packages/react-query-devtools next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0) + specifier: ^15.3.1 + version: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -1021,8 +1021,8 @@ importers: specifier: workspace:* version: link:../../../packages/react-query-next-experimental next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) + specifier: ^15.3.1 + version: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) react: specifier: ^18.2.0 version: 18.3.1 @@ -1056,7 +1056,7 @@ importers: version: link:../../../packages/react-query-persist-client msw: specifier: ^2.6.6 - version: 2.6.6(@types/node@22.14.1)(typescript@5.8.3) + version: 2.6.6(@types/node@22.15.3)(typescript@5.8.3) react: specifier: ^19.0.0 version: 19.0.0 @@ -1069,13 +1069,13 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/optimistic-updates-cache: dependencies: @@ -1086,8 +1086,8 @@ importers: specifier: workspace:* version: link:../../../packages/react-query-devtools next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) + specifier: ^15.3.1 + version: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) react: specifier: ^18.2.0 version: 18.3.1 @@ -1114,8 +1114,8 @@ importers: specifier: workspace:* version: link:../../../packages/react-query-devtools next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) + specifier: ^15.3.1 + version: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) react: specifier: ^18.2.0 version: 18.3.1 @@ -1142,8 +1142,8 @@ importers: specifier: workspace:* version: link:../../../packages/react-query-devtools next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) + specifier: ^15.3.1 + version: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) react: specifier: ^18.2.0 version: 18.3.1 @@ -1178,13 +1178,13 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/prefetching: dependencies: @@ -1195,8 +1195,8 @@ importers: specifier: workspace:* version: link:../../../packages/react-query-devtools next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) + specifier: ^15.3.1 + version: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) react: specifier: ^18.2.0 version: 18.3.1 @@ -1224,7 +1224,7 @@ importers: version: 6.1.18(react-native@0.76.3(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@react-native-community/cli-server-api@13.6.9(encoding@0.1.13))(@types/react@19.0.1)(encoding@0.1.13)(react@19.0.0))(react@19.0.0) '@react-navigation/stack': specifier: ^6.4.1 - version: 6.4.1(e9c097e00fee89f3cf54c317dda4adb5) + version: 6.4.1(44i6xs33lapt7cl2pkawmwjtru) '@tanstack/react-query': specifier: workspace:* version: link:../../../packages/react-query @@ -1319,13 +1319,13 @@ importers: version: 1.2.3 '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/rick-morty: dependencies: @@ -1362,13 +1362,13 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/shadow-dom: dependencies: @@ -1393,13 +1393,13 @@ importers: version: 19.0.2(@types/react@19.0.1) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/simple: dependencies: @@ -1418,13 +1418,13 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/star-wars: dependencies: @@ -1461,13 +1461,13 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/react/suspense: dependencies: @@ -1492,13 +1492,13 @@ importers: devDependencies: '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/solid/astro: dependencies: @@ -1507,16 +1507,16 @@ importers: version: 0.9.4(prettier@3.5.3)(typescript@5.8.3) '@astrojs/node': specifier: ^9.1.3 - version: 9.1.3(astro@5.5.6(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.39.0)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1)) + version: 9.1.3(astro@5.5.6(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.40.1)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1)) '@astrojs/solid-js': specifier: ^5.0.7 - version: 5.0.7(@testing-library/jest-dom@6.6.3)(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(solid-js@1.9.5)(terser@5.39.0)(yaml@2.6.1) + version: 5.0.7(@testing-library/jest-dom@6.6.3)(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(solid-js@1.9.5)(terser@5.39.0)(yaml@2.6.1) '@astrojs/tailwind': specifier: ^6.0.2 - version: 6.0.2(astro@5.5.6(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.39.0)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1))(tailwindcss@3.4.7) + version: 6.0.2(astro@5.5.6(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.40.1)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1))(tailwindcss@3.4.7) '@astrojs/vercel': specifier: ^8.1.3 - version: 8.1.3(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(astro@5.5.6(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.39.0)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1))(encoding@0.1.13)(next@15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0))(react@19.0.0)(rollup@4.39.0)(svelte@5.26.1)(vue@3.4.35(typescript@5.8.3)) + version: 8.1.3(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(astro@5.5.6(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.40.1)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1))(encoding@0.1.13)(next@15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0))(react@19.0.0)(rollup@4.40.1)(svelte@5.26.1)(vue@3.4.35(typescript@5.8.3)) '@tanstack/solid-query': specifier: workspace:* version: link:../../../packages/solid-query @@ -1525,7 +1525,7 @@ importers: version: link:../../../packages/solid-query-devtools astro: specifier: ^5.5.6 - version: 5.5.6(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.39.0)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + version: 5.5.6(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.40.1)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) solid-js: specifier: ^1.9.5 version: 1.9.5 @@ -1553,10 +1553,10 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) vite-plugin-solid: specifier: ^2.11.6 - version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) examples/solid/basic-graphql-request: dependencies: @@ -1581,10 +1581,10 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) vite-plugin-solid: specifier: ^2.11.6 - version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) examples/solid/default-query-function: dependencies: @@ -1603,10 +1603,10 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) vite-plugin-solid: specifier: ^2.11.6 - version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) examples/solid/simple: dependencies: @@ -1628,10 +1628,10 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) vite-plugin-solid: specifier: ^2.11.6 - version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) examples/solid/solid-start-streaming: dependencies: @@ -1643,7 +1643,7 @@ importers: version: 0.15.3(solid-js@1.9.5) '@solidjs/start': specifier: ^1.1.3 - version: 1.1.3(@testing-library/jest-dom@6.6.3)(@types/node@22.14.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(solid-js@1.9.5)(terser@5.39.0)(vinxi@0.5.3(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(yaml@2.6.1) + version: 1.1.3(@testing-library/jest-dom@6.6.3)(@types/node@22.15.3)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(solid-js@1.9.5)(terser@5.39.0)(vinxi@0.5.3(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(yaml@2.6.1) '@tanstack/solid-query': specifier: workspace:* version: link:../../../packages/solid-query @@ -1655,7 +1655,7 @@ importers: version: 1.9.5 vinxi: specifier: ^0.5.3 - version: 0.5.3(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 0.5.3(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/svelte/auto-refetching: dependencies: @@ -1668,13 +1668,13 @@ importers: devDependencies: '@sveltejs/adapter-auto': specifier: ^6.0.0 - version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) + version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) '@sveltejs/kit': specifier: ^2.20.5 - version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) svelte: specifier: ^5.26.1 version: 5.26.1 @@ -1686,7 +1686,7 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/svelte/basic: dependencies: @@ -1705,13 +1705,13 @@ importers: devDependencies: '@sveltejs/adapter-auto': specifier: ^6.0.0 - version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) + version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) '@sveltejs/kit': specifier: ^2.20.5 - version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) svelte: specifier: ^5.26.1 version: 5.26.1 @@ -1723,7 +1723,7 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/svelte/load-more-infinite-scroll: dependencies: @@ -1736,13 +1736,13 @@ importers: devDependencies: '@sveltejs/adapter-auto': specifier: ^6.0.0 - version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) + version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) '@sveltejs/kit': specifier: ^2.20.5 - version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) svelte: specifier: ^5.26.1 version: 5.26.1 @@ -1754,7 +1754,7 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/svelte/optimistic-updates: dependencies: @@ -1767,13 +1767,13 @@ importers: devDependencies: '@sveltejs/adapter-auto': specifier: ^6.0.0 - version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) + version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) '@sveltejs/kit': specifier: ^2.20.5 - version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) svelte: specifier: ^5.26.1 version: 5.26.1 @@ -1785,7 +1785,7 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/svelte/playground: dependencies: @@ -1798,13 +1798,13 @@ importers: devDependencies: '@sveltejs/adapter-auto': specifier: ^6.0.0 - version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) + version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) '@sveltejs/kit': specifier: ^2.20.5 - version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) svelte: specifier: ^5.26.1 version: 5.26.1 @@ -1816,7 +1816,7 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/svelte/simple: dependencies: @@ -1829,7 +1829,7 @@ importers: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@tsconfig/svelte': specifier: ^5.0.4 version: 5.0.4 @@ -1844,7 +1844,7 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/svelte/ssr: dependencies: @@ -1857,13 +1857,13 @@ importers: devDependencies: '@sveltejs/adapter-auto': specifier: ^6.0.0 - version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) + version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) '@sveltejs/kit': specifier: ^2.20.5 - version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) svelte: specifier: ^5.26.1 version: 5.26.1 @@ -1875,7 +1875,7 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/svelte/star-wars: dependencies: @@ -1888,13 +1888,13 @@ importers: devDependencies: '@sveltejs/adapter-auto': specifier: ^6.0.0 - version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) + version: 6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))) '@sveltejs/kit': specifier: ^2.20.5 - version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.21(postcss@8.5.3) @@ -1915,7 +1915,7 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/vue/basic: dependencies: @@ -1931,13 +1931,13 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.2.1 - version: 5.2.1(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) + version: 5.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/vue/dependent-queries: dependencies: @@ -1950,13 +1950,13 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.2.1 - version: 5.2.1(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) + version: 5.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/vue/persister: dependencies: @@ -1981,13 +1981,13 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.2.1 - version: 5.2.1(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) + version: 5.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) examples/vue/simple: dependencies: @@ -2003,13 +2003,13 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.2.1 - version: 5.2.1(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) + version: 5.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) integrations/angular-cli-19: dependencies: @@ -2043,10 +2043,10 @@ importers: devDependencies: '@angular-devkit/build-angular': specifier: ^19.2.5 - version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(webpack@5.98.0(esbuild@0.25.1)))(jiti@2.4.2)(lightningcss@1.29.2)(tailwindcss@4.0.14)(typescript@5.8.3)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1))(yaml@2.6.1) + version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(webpack@5.98.0(esbuild@0.25.1)))(jiti@2.4.2)(lightningcss@1.29.2)(tailwindcss@4.0.14)(typescript@5.8.3)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1))(yaml@2.6.1) '@angular/cli': specifier: ^19.2.5 - version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3) + version: 19.2.5(@types/node@22.15.3)(chokidar@4.0.3) '@angular/compiler-cli': specifier: ^19.2.4 version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) @@ -2063,8 +2063,8 @@ importers: specifier: workspace:* version: link:../../packages/react-query-devtools next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) + specifier: ^14.2.28 + version: 14.2.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0) react: specifier: ^18.2.0 version: 18.3.1 @@ -2091,8 +2091,8 @@ importers: specifier: workspace:* version: link:../../packages/react-query-devtools next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0) + specifier: ^15.3.1 + version: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0) react: specifier: ^19.0.0 version: 19.0.0 @@ -2120,7 +2120,7 @@ importers: version: link:../../packages/react-query-devtools '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) react: specifier: ^19.0.0 version: 19.0.0 @@ -2129,7 +2129,7 @@ importers: version: 19.0.0(react@19.0.0) vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) integrations/react-webpack-4: dependencies: @@ -2203,7 +2203,7 @@ importers: version: 5.6.3(webpack@5.98.0) webpack: specifier: ^5.96.1 - version: 5.98.0(esbuild@0.25.2)(webpack-cli@5.1.4) + version: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack@5.98.0) @@ -2221,16 +2221,16 @@ importers: version: 1.9.5 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) vite-plugin-solid: specifier: ^2.11.6 - version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) integrations/svelte-vite: devDependencies: '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@tanstack/svelte-query': specifier: workspace:* version: link:../../packages/svelte-query @@ -2242,7 +2242,7 @@ importers: version: 5.26.1 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) integrations/vue-vite: dependencies: @@ -2255,13 +2255,13 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.2.1 - version: 5.2.1(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) + version: 5.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) typescript: specifier: 5.8.3 version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) vue-tsc: specifier: ^2.2.8 version: 2.2.8(typescript@5.8.3) @@ -2400,6 +2400,12 @@ importers: specifier: ^7.0.0 version: 7.0.0 devDependencies: + '@testing-library/react': + specifier: ^16.1.0 + version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.2(@types/react@19.0.1))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) npm-run-all2: specifier: ^5.0.0 version: 5.0.2 @@ -2459,10 +2465,10 @@ importers: version: 2.2.1 tsup-preset-solid: specifier: ^2.2.0 - version: 2.2.0(esbuild@0.25.2)(solid-js@1.9.5)(tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.14.1))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1)) + version: 2.2.0(esbuild@0.25.3)(solid-js@1.9.5)(tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.15.3))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1)) vite-plugin-solid: specifier: ^2.11.6 - version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) packages/query-persist-client-core: dependencies: @@ -2510,7 +2516,7 @@ importers: version: 19.0.2(@types/react@19.0.1) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) eslint-plugin-react-compiler: specifier: 19.0.0-beta-df7b47d-20241124 version: 19.0.0-beta-df7b47d-20241124(eslint@9.15.0(jiti@2.4.2)) @@ -2544,7 +2550,7 @@ importers: version: 19.0.1 '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) npm-run-all2: specifier: ^5.0.0 version: 5.0.2 @@ -2562,10 +2568,10 @@ importers: version: 19.0.1 '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) next: - specifier: ^15.1.2 - version: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0) + specifier: ^15.3.1 + version: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0) npm-run-all2: specifier: ^5.0.0 version: 5.0.2 @@ -2590,7 +2596,7 @@ importers: version: 19.0.1 '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) npm-run-all2: specifier: ^5.0.0 version: 5.0.2 @@ -2615,10 +2621,10 @@ importers: version: 1.9.5 tsup-preset-solid: specifier: ^2.2.0 - version: 2.2.0(esbuild@0.25.2)(solid-js@1.9.5)(tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.14.1))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1)) + version: 2.2.0(esbuild@0.25.3)(solid-js@1.9.5)(tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.15.3))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1)) vite-plugin-solid: specifier: ^2.11.6 - version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) packages/solid-query-devtools: dependencies: @@ -2637,10 +2643,10 @@ importers: version: 1.9.5 tsup-preset-solid: specifier: ^2.2.0 - version: 2.2.0(esbuild@0.25.2)(solid-js@1.9.5)(tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.14.1))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1)) + version: 2.2.0(esbuild@0.25.3)(solid-js@1.9.5)(tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.15.3))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1)) vite-plugin-solid: specifier: ^2.11.6 - version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) packages/solid-query-persist-client: dependencies: @@ -2662,10 +2668,10 @@ importers: version: 1.9.5 tsup-preset-solid: specifier: ^2.2.0 - version: 2.2.0(esbuild@0.25.2)(solid-js@1.9.5)(tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.14.1))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1)) + version: 2.2.0(esbuild@0.25.3)(solid-js@1.9.5)(tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.15.3))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1)) vite-plugin-solid: specifier: ^2.11.6 - version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) packages/svelte-query: dependencies: @@ -2678,10 +2684,10 @@ importers: version: 2.3.10(svelte@5.26.1)(typescript@5.8.3) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@testing-library/svelte': specifier: ^5.2.6 - version: 5.2.6(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.2.6(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) eslint-plugin-svelte: specifier: ^2.46.0 version: 2.46.0(eslint@9.15.0(jiti@2.4.2))(svelte@5.26.1) @@ -2706,7 +2712,7 @@ importers: version: 2.3.10(svelte@5.26.1)(typescript@5.8.3) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@tanstack/svelte-query': specifier: workspace:* version: link:../svelte-query @@ -2731,13 +2737,13 @@ importers: version: 2.3.10(svelte@5.26.1)(typescript@5.8.3) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@tanstack/svelte-query': specifier: workspace:* version: link:../svelte-query '@testing-library/svelte': specifier: ^5.2.6 - version: 5.2.6(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + version: 5.2.6(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) eslint-plugin-svelte: specifier: ^2.46.0 version: 2.46.0(eslint@9.15.0(jiti@2.4.2))(svelte@5.26.1) @@ -2765,7 +2771,7 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.2.1 - version: 5.2.1(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) + version: 5.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) '@vue/composition-api': specifier: 1.7.2 version: 1.7.2(vue@3.4.35(typescript@5.8.3)) @@ -2793,7 +2799,7 @@ importers: version: link:../vue-query '@vitejs/plugin-vue': specifier: ^5.2.1 - version: 5.2.1(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) + version: 5.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3)) eslint-plugin-vue: specifier: ^9.27.0 version: 9.27.0(eslint@9.15.0(jiti@2.4.2)) @@ -2802,7 +2808,7 @@ importers: version: 5.8.3 vite: specifier: ^6.2.4 - version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + version: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) vue: specifier: ^3.4.27 version: 3.4.35(typescript@5.8.3) @@ -3109,6 +3115,10 @@ packages: resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.26.8': resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} engines: {node: '>=6.9.0'} @@ -3125,8 +3135,8 @@ packages: resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.0': - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.25.9': @@ -3176,8 +3186,8 @@ packages: resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.26.5': - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.25.9': @@ -3200,12 +3210,12 @@ packages: resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.25.9': @@ -3224,8 +3234,8 @@ packages: resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.0': - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + '@babel/parser@7.27.1': + resolution: {integrity: sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -3364,8 +3374,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.25.9': - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -3412,8 +3422,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.25.9': - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -3821,16 +3831,16 @@ packages: resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.0': - resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} + '@babel/template@7.27.1': + resolution: {integrity: sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.0': - resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} + '@babel/traverse@7.27.1': + resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.0': - resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + '@babel/types@7.27.1': + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} engines: {node: '>=6.9.0'} '@bundled-es-modules/cookie@2.0.1': @@ -4128,6 +4138,9 @@ packages: '@emnapi/runtime@1.2.0': resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + '@emnapi/runtime@1.4.3': + resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + '@emnapi/wasi-threads@1.0.1': resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} @@ -4207,8 +4220,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.2': - resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} + '@esbuild/aix-ppc64@0.25.3': + resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -4231,8 +4244,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.2': - resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} + '@esbuild/android-arm64@0.25.3': + resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -4255,8 +4268,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.2': - resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} + '@esbuild/android-arm@0.25.3': + resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -4279,8 +4292,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.2': - resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} + '@esbuild/android-x64@0.25.3': + resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -4303,8 +4316,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.2': - resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} + '@esbuild/darwin-arm64@0.25.3': + resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -4327,8 +4340,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.2': - resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} + '@esbuild/darwin-x64@0.25.3': + resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -4351,8 +4364,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.2': - resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} + '@esbuild/freebsd-arm64@0.25.3': + resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -4375,8 +4388,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.2': - resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} + '@esbuild/freebsd-x64@0.25.3': + resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -4399,8 +4412,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.2': - resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} + '@esbuild/linux-arm64@0.25.3': + resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -4423,8 +4436,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.2': - resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} + '@esbuild/linux-arm@0.25.3': + resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -4447,8 +4460,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.2': - resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} + '@esbuild/linux-ia32@0.25.3': + resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -4471,8 +4484,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.2': - resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} + '@esbuild/linux-loong64@0.25.3': + resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -4495,8 +4508,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.2': - resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} + '@esbuild/linux-mips64el@0.25.3': + resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -4519,8 +4532,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.2': - resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} + '@esbuild/linux-ppc64@0.25.3': + resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -4543,8 +4556,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.2': - resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} + '@esbuild/linux-riscv64@0.25.3': + resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -4567,8 +4580,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.2': - resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} + '@esbuild/linux-s390x@0.25.3': + resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -4591,8 +4604,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.2': - resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} + '@esbuild/linux-x64@0.25.3': + resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -4609,8 +4622,8 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.2': - resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} + '@esbuild/netbsd-arm64@0.25.3': + resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -4633,8 +4646,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.2': - resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} + '@esbuild/netbsd-x64@0.25.3': + resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -4651,8 +4664,8 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.2': - resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} + '@esbuild/openbsd-arm64@0.25.3': + resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -4675,8 +4688,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.2': - resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} + '@esbuild/openbsd-x64@0.25.3': + resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -4699,8 +4712,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.2': - resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} + '@esbuild/sunos-x64@0.25.3': + resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -4723,8 +4736,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.2': - resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} + '@esbuild/win32-arm64@0.25.3': + resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -4747,8 +4760,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.2': - resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} + '@esbuild/win32-ia32@0.25.3': + resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -4771,8 +4784,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.2': - resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} + '@esbuild/win32-x64@0.25.3': + resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -4962,105 +4975,215 @@ packages: cpu: [arm64] os: [darwin] + '@img/sharp-darwin-arm64@0.34.1': + resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + '@img/sharp-darwin-x64@0.33.5': resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] + '@img/sharp-darwin-x64@0.34.1': + resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.0.4': resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} cpu: [arm64] os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.1.0': + resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==} + cpu: [arm64] + os: [darwin] + '@img/sharp-libvips-darwin-x64@1.0.4': resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} cpu: [x64] os: [darwin] + '@img/sharp-libvips-darwin-x64@1.1.0': + resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==} + cpu: [x64] + os: [darwin] + '@img/sharp-libvips-linux-arm64@1.0.4': resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] + '@img/sharp-libvips-linux-arm64@1.1.0': + resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==} + cpu: [arm64] + os: [linux] + '@img/sharp-libvips-linux-arm@1.0.5': resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] + '@img/sharp-libvips-linux-arm@1.1.0': + resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.1.0': + resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==} + cpu: [ppc64] + os: [linux] + '@img/sharp-libvips-linux-s390x@1.0.4': resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] + '@img/sharp-libvips-linux-s390x@1.1.0': + resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==} + cpu: [s390x] + os: [linux] + '@img/sharp-libvips-linux-x64@1.0.4': resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] + '@img/sharp-libvips-linux-x64@1.1.0': + resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==} + cpu: [x64] + os: [linux] + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] + '@img/sharp-libvips-linuxmusl-arm64@1.1.0': + resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==} + cpu: [arm64] + os: [linux] + '@img/sharp-libvips-linuxmusl-x64@1.0.4': resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] + '@img/sharp-libvips-linuxmusl-x64@1.1.0': + resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==} + cpu: [x64] + os: [linux] + '@img/sharp-linux-arm64@0.33.5': resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + '@img/sharp-linux-arm64@0.34.1': + resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + '@img/sharp-linux-arm@0.33.5': resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + '@img/sharp-linux-arm@0.34.1': + resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + '@img/sharp-linux-s390x@0.33.5': resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + '@img/sharp-linux-s390x@0.34.1': + resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + '@img/sharp-linux-x64@0.33.5': resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + '@img/sharp-linux-x64@0.34.1': + resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + '@img/sharp-linuxmusl-arm64@0.33.5': resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + '@img/sharp-linuxmusl-arm64@0.34.1': + resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + '@img/sharp-linuxmusl-x64@0.33.5': resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + '@img/sharp-linuxmusl-x64@0.34.1': + resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + '@img/sharp-wasm32@0.33.5': resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] + '@img/sharp-wasm32@0.34.1': + resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + '@img/sharp-win32-ia32@0.33.5': resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] + '@img/sharp-win32-ia32@0.34.1': + resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + '@img/sharp-win32-x64@0.33.5': resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] + '@img/sharp-win32-x64@0.34.1': + resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@inquirer/checkbox@4.1.4': resolution: {integrity: sha512-d30576EZdApjAMceijXA5jDzRQHT/MygbC+J8I7EqA6f/FRpYxlRtRJbHF8gHeWYeSdOuTEJqonn7QLB1ELezA==} engines: {node: '>=18'} @@ -5623,53 +5746,110 @@ packages: resolution: {integrity: sha512-z6okREyK8in0486a22Oro0k+YsuyEjDXJt46FpgeOgXqKJ9ElM8QPll0iuLBkpbH33ENiNbIPLd1cuClRQnhiw==} engines: {node: '>=18.0.0'} - '@next/env@15.1.2': - resolution: {integrity: sha512-Hm3jIGsoUl6RLB1vzY+dZeqb+/kWPZ+h34yiWxW0dV87l8Im/eMOwpOA+a0L78U0HM04syEjXuRlCozqpwuojQ==} + '@next/env@14.2.28': + resolution: {integrity: sha512-PAmWhJfJQlP+kxZwCjrVd9QnR5x0R3u0mTXTiZDgSd4h5LdXmjxCCWbN9kq6hkZBOax8Rm3xDW5HagWyJuT37g==} + + '@next/env@15.3.1': + resolution: {integrity: sha512-cwK27QdzrMblHSn9DZRV+DQscHXRuJv6MydlJRpFSqJWZrTYMLzKDeyueJNN9MGd8NNiUKzDQADAf+dMLXX7YQ==} + + '@next/swc-darwin-arm64@14.2.28': + resolution: {integrity: sha512-kzGChl9setxYWpk3H6fTZXXPFFjg7urptLq5o5ZgYezCrqlemKttwMT5iFyx/p1e/JeglTwDFRtb923gTJ3R1w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] - '@next/swc-darwin-arm64@15.1.2': - resolution: {integrity: sha512-b9TN7q+j5/7+rGLhFAVZiKJGIASuo8tWvInGfAd8wsULjB1uNGRCj1z1WZwwPWzVQbIKWFYqc+9L7W09qwt52w==} + '@next/swc-darwin-arm64@15.3.1': + resolution: {integrity: sha512-hjDw4f4/nla+6wysBL07z52Gs55Gttp5Bsk5/8AncQLJoisvTBP0pRIBK/B16/KqQyH+uN4Ww8KkcAqJODYH3w==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.1.2': - resolution: {integrity: sha512-caR62jNDUCU+qobStO6YJ05p9E+LR0EoXh1EEmyU69cYydsAy7drMcOlUlRtQihM6K6QfvNwJuLhsHcCzNpqtA==} + '@next/swc-darwin-x64@14.2.28': + resolution: {integrity: sha512-z6FXYHDJlFOzVEOiiJ/4NG8aLCeayZdcRSMjPDysW297Up6r22xw6Ea9AOwQqbNsth8JNgIK8EkWz2IDwaLQcw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-darwin-x64@15.3.1': + resolution: {integrity: sha512-q+aw+cJ2ooVYdCEqZVk+T4Ni10jF6Fo5DfpEV51OupMaV5XL6pf3GCzrk6kSSZBsMKZtVC1Zm/xaNBFpA6bJ2g==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.1.2': - resolution: {integrity: sha512-fHHXBusURjBmN6VBUtu6/5s7cCeEkuGAb/ZZiGHBLVBXMBy4D5QpM8P33Or8JD1nlOjm/ZT9sEE5HouQ0F+hUA==} + '@next/swc-linux-arm64-gnu@14.2.28': + resolution: {integrity: sha512-9ARHLEQXhAilNJ7rgQX8xs9aH3yJSj888ssSjJLeldiZKR4D7N08MfMqljk77fAwZsWwsrp8ohHsMvurvv9liQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-gnu@15.3.1': + resolution: {integrity: sha512-wBQ+jGUI3N0QZyWmmvRHjXjTWFy8o+zPFLSOyAyGFI94oJi+kK/LIZFJXeykvgXUk1NLDAEFDZw/NVINhdk9FQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@14.2.28': + resolution: {integrity: sha512-p6gvatI1nX41KCizEe6JkF0FS/cEEF0u23vKDpl+WhPe/fCTBeGkEBh7iW2cUM0rvquPVwPWdiUR6Ebr/kQWxQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.1.2': - resolution: {integrity: sha512-9CF1Pnivij7+M3G74lxr+e9h6o2YNIe7QtExWq1KUK4hsOLTBv6FJikEwCaC3NeYTflzrm69E5UfwEAbV2U9/g==} + '@next/swc-linux-arm64-musl@15.3.1': + resolution: {integrity: sha512-IIxXEXRti/AulO9lWRHiCpUUR8AR/ZYLPALgiIg/9ENzMzLn3l0NSxVdva7R/VDcuSEBo0eGVCe3evSIHNz0Hg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.1.2': - resolution: {integrity: sha512-tINV7WmcTUf4oM/eN3Yuu/f8jQ5C6AkueZPKeALs/qfdfX57eNv4Ij7rt0SA6iZ8+fMobVfcFVv664Op0caCCg==} + '@next/swc-linux-x64-gnu@14.2.28': + resolution: {integrity: sha512-nsiSnz2wO6GwMAX2o0iucONlVL7dNgKUqt/mDTATGO2NY59EO/ZKnKEr80BJFhuA5UC1KZOMblJHWZoqIJddpA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-gnu@15.3.1': + resolution: {integrity: sha512-bfI4AMhySJbyXQIKH5rmLJ5/BP7bPwuxauTvVEiJ/ADoddaA9fgyNNCcsbu9SlqfHDoZmfI6g2EjzLwbsVTr5A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@14.2.28': + resolution: {integrity: sha512-+IuGQKoI3abrXFqx7GtlvNOpeExUH1mTIqCrh1LGFf8DnlUcTmOOCApEnPJUSLrSbzOdsF2ho2KhnQoO0I1RDw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.1.2': - resolution: {integrity: sha512-jf2IseC4WRsGkzeUw/cK3wci9pxR53GlLAt30+y+B+2qAQxMw6WAC3QrANIKxkcoPU3JFh/10uFfmoMDF9JXKg==} + '@next/swc-linux-x64-musl@15.3.1': + resolution: {integrity: sha512-FeAbR7FYMWR+Z+M5iSGytVryKHiAsc0x3Nc3J+FD5NVbD5Mqz7fTSy8CYliXinn7T26nDMbpExRUI/4ekTvoiA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.1.2': - resolution: {integrity: sha512-wvg7MlfnaociP7k8lxLX4s2iBJm4BrNiNFhVUY+Yur5yhAJHfkS8qPPeDEUH8rQiY0PX3u/P7Q/wcg6Mv6GSAA==} + '@next/swc-win32-arm64-msvc@14.2.28': + resolution: {integrity: sha512-l61WZ3nevt4BAnGksUVFKy2uJP5DPz2E0Ma/Oklvo3sGj9sw3q7vBWONFRgz+ICiHpW5mV+mBrkB3XEubMrKaA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-arm64-msvc@15.3.1': + resolution: {integrity: sha512-yP7FueWjphQEPpJQ2oKmshk/ppOt+0/bB8JC8svPUZNy0Pi3KbPx2Llkzv1p8CoQa+D2wknINlJpHf3vtChVBw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.1.2': - resolution: {integrity: sha512-D3cNA8NoT3aWISWmo7HF5Eyko/0OdOO+VagkoJuiTk7pyX3P/b+n8XA/MYvyR+xSVcbKn68B1rY9fgqjNISqzQ==} + '@next/swc-win32-ia32-msvc@14.2.28': + resolution: {integrity: sha512-+Kcp1T3jHZnJ9v9VTJ/yf1t/xmtFAc/Sge4v7mVc1z+NYfYzisi8kJ9AsY8itbgq+WgEwMtOpiLLJsUy2qnXZw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@next/swc-win32-x64-msvc@14.2.28': + resolution: {integrity: sha512-1gCmpvyhz7DkB1srRItJTnmR2UwQPAUXXIg9r0/56g3O8etGmwlX68skKXJOp9EejW3hhv7nSQUJ2raFiz4MoA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@next/swc-win32-x64-msvc@15.3.1': + resolution: {integrity: sha512-3PMvF2zRJAifcRNni9uMk/gulWfWS+qVI/pagd+4yLF5bcXPZPPH2xlYRYOsUjmCJOXSTAC2PjRzbhsRzR2fDQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -6129,8 +6309,8 @@ packages: cpu: [arm] os: [android] - '@rollup/rollup-android-arm-eabi@4.39.0': - resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==} + '@rollup/rollup-android-arm-eabi@4.40.1': + resolution: {integrity: sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==} cpu: [arm] os: [android] @@ -6139,8 +6319,8 @@ packages: cpu: [arm64] os: [android] - '@rollup/rollup-android-arm64@4.39.0': - resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==} + '@rollup/rollup-android-arm64@4.40.1': + resolution: {integrity: sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==} cpu: [arm64] os: [android] @@ -6149,8 +6329,8 @@ packages: cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-arm64@4.39.0': - resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==} + '@rollup/rollup-darwin-arm64@4.40.1': + resolution: {integrity: sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==} cpu: [arm64] os: [darwin] @@ -6159,8 +6339,8 @@ packages: cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.39.0': - resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==} + '@rollup/rollup-darwin-x64@4.40.1': + resolution: {integrity: sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==} cpu: [x64] os: [darwin] @@ -6169,8 +6349,8 @@ packages: cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.39.0': - resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==} + '@rollup/rollup-freebsd-arm64@4.40.1': + resolution: {integrity: sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==} cpu: [arm64] os: [freebsd] @@ -6179,8 +6359,8 @@ packages: cpu: [x64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.39.0': - resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==} + '@rollup/rollup-freebsd-x64@4.40.1': + resolution: {integrity: sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==} cpu: [x64] os: [freebsd] @@ -6189,8 +6369,8 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-gnueabihf@4.39.0': - resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==} + '@rollup/rollup-linux-arm-gnueabihf@4.40.1': + resolution: {integrity: sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==} cpu: [arm] os: [linux] @@ -6199,8 +6379,8 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.39.0': - resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==} + '@rollup/rollup-linux-arm-musleabihf@4.40.1': + resolution: {integrity: sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==} cpu: [arm] os: [linux] @@ -6209,8 +6389,8 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.39.0': - resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==} + '@rollup/rollup-linux-arm64-gnu@4.40.1': + resolution: {integrity: sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==} cpu: [arm64] os: [linux] @@ -6219,8 +6399,8 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.39.0': - resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==} + '@rollup/rollup-linux-arm64-musl@4.40.1': + resolution: {integrity: sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==} cpu: [arm64] os: [linux] @@ -6229,8 +6409,8 @@ packages: cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.39.0': - resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==} + '@rollup/rollup-linux-loongarch64-gnu@4.40.1': + resolution: {integrity: sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==} cpu: [loong64] os: [linux] @@ -6239,8 +6419,8 @@ packages: cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': - resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': + resolution: {integrity: sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==} cpu: [ppc64] os: [linux] @@ -6249,13 +6429,13 @@ packages: cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.39.0': - resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==} + '@rollup/rollup-linux-riscv64-gnu@4.40.1': + resolution: {integrity: sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.39.0': - resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==} + '@rollup/rollup-linux-riscv64-musl@4.40.1': + resolution: {integrity: sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==} cpu: [riscv64] os: [linux] @@ -6264,8 +6444,8 @@ packages: cpu: [s390x] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.39.0': - resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==} + '@rollup/rollup-linux-s390x-gnu@4.40.1': + resolution: {integrity: sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==} cpu: [s390x] os: [linux] @@ -6274,8 +6454,8 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.39.0': - resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==} + '@rollup/rollup-linux-x64-gnu@4.40.1': + resolution: {integrity: sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==} cpu: [x64] os: [linux] @@ -6284,8 +6464,8 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.39.0': - resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==} + '@rollup/rollup-linux-x64-musl@4.40.1': + resolution: {integrity: sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==} cpu: [x64] os: [linux] @@ -6294,8 +6474,8 @@ packages: cpu: [arm64] os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.39.0': - resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==} + '@rollup/rollup-win32-arm64-msvc@4.40.1': + resolution: {integrity: sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==} cpu: [arm64] os: [win32] @@ -6304,8 +6484,8 @@ packages: cpu: [ia32] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.39.0': - resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==} + '@rollup/rollup-win32-ia32-msvc@4.40.1': + resolution: {integrity: sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==} cpu: [ia32] os: [win32] @@ -6314,8 +6494,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.39.0': - resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==} + '@rollup/rollup-win32-x64-msvc@4.40.1': + resolution: {integrity: sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==} cpu: [x64] os: [win32] @@ -6600,6 +6780,9 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@swc/helpers@0.5.5': + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + '@tailwindcss/node@4.0.14': resolution: {integrity: sha512-Ux9NbFkKWYE4rfUFz6M5JFLs/GEYP6ysxT8uSyPn6aTbh2K3xDE1zz++eVK4Vwx799fzMF8CID9sdHn4j/Ab8w==} @@ -6891,8 +7074,8 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@22.14.1': - resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==} + '@types/node@22.15.3': + resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -9243,8 +9426,8 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.25.2: - resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} + esbuild@0.25.3: + resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==} engines: {node: '>=18'} hasBin: true @@ -9666,8 +9849,8 @@ packages: fbjs@3.0.5: resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - fdir@6.4.3: - resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + fdir@6.4.4: + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -12010,8 +12193,26 @@ packages: nested-error-stacks@2.1.1: resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} - next@15.1.2: - resolution: {integrity: sha512-nLJDV7peNy+0oHlmY2JZjzMfJ8Aj0/dd3jCwSZS8ZiO5nkQfcZRqDrRN3U5rJtqVTQneIOGZzb6LCNrk7trMCQ==} + next@14.2.28: + resolution: {integrity: sha512-QLEIP/kYXynIxtcKB6vNjtWLVs3Y4Sb+EClTC/CSVzdLD1gIuItccpu/n1lhmduffI32iPGEK2cLLxxt28qgYA==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + + next@15.3.1: + resolution: {integrity: sha512-8+dDV0xNLOgHlyBxP1GwHGVaNXsmp+2NhZEYrXr24GWLHtt27YrBPbPuHvzlhi7kZNYjeJNR93IF5zfFu5UL0g==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -13553,8 +13754,8 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.39.0: - resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==} + rollup@4.40.1: + resolution: {integrity: sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -13780,6 +13981,10 @@ packages: resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.34.1: + resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -14231,6 +14436,19 @@ packages: structured-headers@0.4.1: resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} + styled-jsx@5.1.1: + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} @@ -14482,8 +14700,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.12: - resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} tinypool@1.0.2: @@ -15259,8 +15477,8 @@ packages: yaml: optional: true - vite@6.2.6: - resolution: {integrity: sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==} + vite@6.3.4: + resolution: {integrity: sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -16005,13 +16223,13 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-devkit/build-angular@19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(webpack@5.98.0(esbuild@0.25.1)))(jiti@2.4.2)(lightningcss@1.29.2)(tailwindcss@4.0.14)(typescript@5.8.3)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1))(yaml@2.6.1)': + '@angular-devkit/build-angular@19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(html-webpack-plugin@5.6.3(webpack@5.98.0(esbuild@0.25.1)))(jiti@2.4.2)(lightningcss@1.29.2)(tailwindcss@4.0.14)(typescript@5.8.3)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1))(yaml@2.6.1)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1902.5(chokidar@4.0.3) '@angular-devkit/build-webpack': 0.1902.5(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.25.1)))(webpack@5.98.0(esbuild@0.25.1)) '@angular-devkit/core': 19.2.5(chokidar@4.0.3) - '@angular/build': 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.2)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + '@angular/build': 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.2)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) '@angular/compiler-cli': 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3) '@babel/core': 7.26.10 '@babel/generator': 7.26.10 @@ -16024,7 +16242,7 @@ snapshots: '@babel/runtime': 7.26.10 '@discoveryjs/json-ext': 0.6.3 '@ngtools/webpack': 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.98.0(esbuild@0.25.1)) - '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1)) + '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1)) ansi-colors: 4.1.3 autoprefixer: 10.4.20(postcss@8.5.2) babel-loader: 9.2.1(@babel/core@7.26.10)(webpack@5.98.0(esbuild@0.25.1)) @@ -16125,7 +16343,7 @@ snapshots: '@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0) tslib: 2.8.1 - '@angular/build@19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.2)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1)': + '@angular/build@19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.2)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1902.5(chokidar@4.0.3) @@ -16135,8 +16353,8 @@ snapshots: '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-split-export-declaration': 7.24.7 '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) - '@inquirer/confirm': 5.1.6(@types/node@22.14.1) - '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.2.3(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1)) + '@inquirer/confirm': 5.1.6(@types/node@22.15.3) + '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.2.3(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1)) beasties: 0.2.0 browserslist: 4.24.4 esbuild: 0.25.1 @@ -16154,7 +16372,7 @@ snapshots: semver: 7.7.1 source-map-support: 0.5.21 typescript: 5.8.3 - vite: 6.2.3(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.2.3(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1) watchpack: 2.4.2 optionalDependencies: less: 4.2.2 @@ -16174,7 +16392,7 @@ snapshots: - tsx - yaml - '@angular/build@19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1)': + '@angular/build@19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.15.3)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1)': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.1902.5(chokidar@4.0.3) @@ -16184,8 +16402,8 @@ snapshots: '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-split-export-declaration': 7.24.7 '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) - '@inquirer/confirm': 5.1.6(@types/node@22.14.1) - '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.2.3(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1)) + '@inquirer/confirm': 5.1.6(@types/node@22.15.3) + '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.2.3(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1)) beasties: 0.2.0 browserslist: 4.24.4 esbuild: 0.25.1 @@ -16203,7 +16421,7 @@ snapshots: semver: 7.7.1 source-map-support: 0.5.21 typescript: 5.8.3 - vite: 6.2.3(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.2.3(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1) watchpack: 2.4.2 optionalDependencies: less: 4.2.2 @@ -16223,13 +16441,13 @@ snapshots: - tsx - yaml - '@angular/cli@19.2.5(@types/node@22.14.1)(chokidar@4.0.3)': + '@angular/cli@19.2.5(@types/node@22.15.3)(chokidar@4.0.3)': dependencies: '@angular-devkit/architect': 0.1902.5(chokidar@4.0.3) '@angular-devkit/core': 19.2.5(chokidar@4.0.3) '@angular-devkit/schematics': 19.2.5(chokidar@4.0.3) - '@inquirer/prompts': 7.3.2(@types/node@22.14.1) - '@listr2/prompt-adapter-inquirer': 2.0.18(@inquirer/prompts@7.3.2(@types/node@22.14.1)) + '@inquirer/prompts': 7.3.2(@types/node@22.15.3) + '@listr2/prompt-adapter-inquirer': 2.0.18(@inquirer/prompts@7.3.2(@types/node@22.15.3)) '@schematics/angular': 19.2.5(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 ini: 5.0.0 @@ -16396,10 +16614,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/node@9.1.3(astro@5.5.6(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.39.0)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1))': + '@astrojs/node@9.1.3(astro@5.5.6(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.40.1)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1))': dependencies: '@astrojs/internal-helpers': 0.6.1 - astro: 5.5.6(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.39.0)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + astro: 5.5.6(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.40.1)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) send: 1.2.0 server-destroy: 1.0.1 transitivePeerDependencies: @@ -16409,11 +16627,11 @@ snapshots: dependencies: prismjs: 1.29.0 - '@astrojs/solid-js@5.0.7(@testing-library/jest-dom@6.6.3)(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(solid-js@1.9.5)(terser@5.39.0)(yaml@2.6.1)': + '@astrojs/solid-js@5.0.7(@testing-library/jest-dom@6.6.3)(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(solid-js@1.9.5)(terser@5.39.0)(yaml@2.6.1)': dependencies: solid-js: 1.9.5 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - vite-plugin-solid: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite-plugin-solid: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) transitivePeerDependencies: - '@testing-library/jest-dom' - '@types/node' @@ -16429,9 +16647,9 @@ snapshots: - tsx - yaml - '@astrojs/tailwind@6.0.2(astro@5.5.6(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.39.0)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1))(tailwindcss@3.4.7)': + '@astrojs/tailwind@6.0.2(astro@5.5.6(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.40.1)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1))(tailwindcss@3.4.7)': dependencies: - astro: 5.5.6(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.39.0)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + astro: 5.5.6(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.40.1)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) autoprefixer: 10.4.21(postcss@8.5.3) postcss: 8.5.3 postcss-load-config: 4.0.2(postcss@8.5.3) @@ -16451,16 +16669,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/vercel@8.1.3(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(astro@5.5.6(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.39.0)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1))(encoding@0.1.13)(next@15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0))(react@19.0.0)(rollup@4.39.0)(svelte@5.26.1)(vue@3.4.35(typescript@5.8.3))': + '@astrojs/vercel@8.1.3(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(astro@5.5.6(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.40.1)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1))(encoding@0.1.13)(next@15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0))(react@19.0.0)(rollup@4.40.1)(svelte@5.26.1)(vue@3.4.35(typescript@5.8.3))': dependencies: '@astrojs/internal-helpers': 0.6.1 - '@vercel/analytics': 1.5.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(next@15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0))(react@19.0.0)(svelte@5.26.1)(vue@3.4.35(typescript@5.8.3)) + '@vercel/analytics': 1.5.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(next@15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0))(react@19.0.0)(svelte@5.26.1)(vue@3.4.35(typescript@5.8.3)) '@vercel/edge': 1.2.1 - '@vercel/nft': 0.29.2(encoding@0.1.13)(rollup@4.39.0) + '@vercel/nft': 0.29.2(encoding@0.1.13)(rollup@4.40.1) '@vercel/routing-utils': 5.0.4 - astro: 5.5.6(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.39.0)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) - esbuild: 0.25.2 - tinyglobby: 0.2.12 + astro: 5.5.6(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.40.1)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1) + esbuild: 0.25.3 + tinyglobby: 0.2.13 transitivePeerDependencies: - '@remix-run/react' - '@sveltejs/kit' @@ -16483,7 +16701,13 @@ snapshots: '@babel/code-frame@7.26.2': dependencies: - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 js-tokens: 4.0.0 picocolors: 1.1.1 @@ -16492,15 +16716,15 @@ snapshots: '@babel/core@7.26.10': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 '@babel/helper-compilation-targets': 7.26.5 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) '@babel/helpers': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.1 + '@babel/template': 7.27.1 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 convert-source-map: 2.0.0 debug: 4.4.0 gensync: 1.0.0-beta.2 @@ -16512,15 +16736,15 @@ snapshots: '@babel/core@7.26.9': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 '@babel/helper-compilation-targets': 7.26.5 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) '@babel/helpers': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.1 + '@babel/template': 7.27.1 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 convert-source-map: 2.0.0 debug: 4.4.0 gensync: 1.0.0-beta.2 @@ -16531,23 +16755,23 @@ snapshots: '@babel/generator@7.26.10': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 - '@babel/generator@7.27.0': + '@babel/generator@7.27.1': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 '@babel/helper-compilation-targets@7.26.5': dependencies: @@ -16565,7 +16789,7 @@ snapshots: '@babel/helper-optimise-call-expression': 7.25.9 '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.10) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.27.0 + '@babel/traverse': 7.27.1 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -16581,7 +16805,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.0 lodash.debounce: 4.0.8 resolve: 1.22.10 @@ -16590,19 +16814,19 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.18.6': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 transitivePeerDependencies: - supports-color @@ -16610,8 +16834,8 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 transitivePeerDependencies: - supports-color @@ -16619,23 +16843,23 @@ snapshots: dependencies: '@babel/core': 7.26.9 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 - '@babel/helper-plugin-utils@7.26.5': {} + '@babel/helper-plugin-utils@7.27.1': {} '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.27.0 + '@babel/traverse': 7.27.1 transitivePeerDependencies: - supports-color @@ -16644,73 +16868,73 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.27.0 + '@babel/traverse': 7.27.1 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 transitivePeerDependencies: - supports-color '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 - '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-identifier@7.27.1': {} '@babel/helper-validator-option@7.25.9': {} '@babel/helper-wrap-function@7.25.9': dependencies: - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/template': 7.27.1 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 transitivePeerDependencies: - supports-color '@babel/helpers@7.27.0': dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 + '@babel/template': 7.27.1 + '@babel/types': 7.27.1 '@babel/highlight@7.25.7': dependencies: - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-validator-identifier': 7.27.1 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/parser@7.27.0': + '@babel/parser@7.27.1': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.27.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.1 transitivePeerDependencies: - supports-color '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) transitivePeerDependencies: @@ -16719,8 +16943,8 @@ snapshots: '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.27.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.1 transitivePeerDependencies: - supports-color @@ -16728,7 +16952,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -16736,7 +16960,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.26.10) transitivePeerDependencies: - supports-color @@ -16744,19 +16968,19 @@ snapshots: '@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.26.10) '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) transitivePeerDependencies: @@ -16769,130 +16993,130 @@ snapshots: '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-async-generator-functions@7.26.8(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/traverse': 7.27.0 + '@babel/traverse': 7.27.1 transitivePeerDependencies: - supports-color @@ -16900,7 +17124,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) transitivePeerDependencies: - supports-color @@ -16908,18 +17132,18 @@ snapshots: '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -16927,7 +17151,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -16936,9 +17160,9 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.10) - '@babel/traverse': 7.27.0 + '@babel/traverse': 7.27.1 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -16946,56 +17170,56 @@ snapshots: '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/template': 7.27.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.1 '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.26.10) '@babel/plugin-transform-for-of@7.26.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color @@ -17004,36 +17228,36 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.27.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.1 transitivePeerDependencies: - supports-color '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -17041,7 +17265,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -17049,9 +17273,9 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 transitivePeerDependencies: - supports-color @@ -17059,7 +17283,7 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -17067,34 +17291,34 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.10) transitivePeerDependencies: - supports-color @@ -17102,12 +17326,12 @@ snapshots: '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color @@ -17115,13 +17339,13 @@ snapshots: '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -17130,19 +17354,19 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.10)': dependencies: @@ -17154,21 +17378,21 @@ snapshots: '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/types': 7.27.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.26.10) + '@babel/types': 7.27.1 transitivePeerDependencies: - supports-color @@ -17176,30 +17400,30 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 regenerator-transform: 0.15.2 '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-runtime@7.26.10(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.10) babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.10) @@ -17210,12 +17434,12 @@ snapshots: '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color @@ -17223,58 +17447,58 @@ snapshots: '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-template-literals@7.26.8(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-typeof-symbol@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.26.10) transitivePeerDependencies: - supports-color '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/preset-env@7.26.9(@babel/core@7.26.10)': dependencies: '@babel/compat-data': 7.26.8 '@babel/core': 7.26.10 '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.10) '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.10) @@ -17347,21 +17571,21 @@ snapshots: '@babel/preset-flow@7.24.7(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.26.10) '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/types': 7.27.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.27.1 esutils: 2.0.3 '@babel/preset-react@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.10) @@ -17373,9 +17597,9 @@ snapshots: '@babel/preset-typescript@7.24.7(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.26.10) '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.26.10) transitivePeerDependencies: @@ -17398,28 +17622,28 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.27.0': + '@babel/template@7.27.1': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 - '@babel/traverse@7.27.0': + '@babel/traverse@7.27.1': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/template': 7.27.1 + '@babel/types': 7.27.1 debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.27.0': + '@babel/types@7.27.1': dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 '@bundled-es-modules/cookie@2.0.1': dependencies: @@ -17716,6 +17940,11 @@ snapshots: dependencies: tslib: 2.8.1 + '@emnapi/runtime@1.4.3': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.0.1': dependencies: tslib: 2.8.1 @@ -17818,7 +18047,7 @@ snapshots: '@esbuild/aix-ppc64@0.25.1': optional: true - '@esbuild/aix-ppc64@0.25.2': + '@esbuild/aix-ppc64@0.25.3': optional: true '@esbuild/android-arm64@0.20.2': @@ -17830,7 +18059,7 @@ snapshots: '@esbuild/android-arm64@0.25.1': optional: true - '@esbuild/android-arm64@0.25.2': + '@esbuild/android-arm64@0.25.3': optional: true '@esbuild/android-arm@0.20.2': @@ -17842,7 +18071,7 @@ snapshots: '@esbuild/android-arm@0.25.1': optional: true - '@esbuild/android-arm@0.25.2': + '@esbuild/android-arm@0.25.3': optional: true '@esbuild/android-x64@0.20.2': @@ -17854,7 +18083,7 @@ snapshots: '@esbuild/android-x64@0.25.1': optional: true - '@esbuild/android-x64@0.25.2': + '@esbuild/android-x64@0.25.3': optional: true '@esbuild/darwin-arm64@0.20.2': @@ -17866,7 +18095,7 @@ snapshots: '@esbuild/darwin-arm64@0.25.1': optional: true - '@esbuild/darwin-arm64@0.25.2': + '@esbuild/darwin-arm64@0.25.3': optional: true '@esbuild/darwin-x64@0.20.2': @@ -17878,7 +18107,7 @@ snapshots: '@esbuild/darwin-x64@0.25.1': optional: true - '@esbuild/darwin-x64@0.25.2': + '@esbuild/darwin-x64@0.25.3': optional: true '@esbuild/freebsd-arm64@0.20.2': @@ -17890,7 +18119,7 @@ snapshots: '@esbuild/freebsd-arm64@0.25.1': optional: true - '@esbuild/freebsd-arm64@0.25.2': + '@esbuild/freebsd-arm64@0.25.3': optional: true '@esbuild/freebsd-x64@0.20.2': @@ -17902,7 +18131,7 @@ snapshots: '@esbuild/freebsd-x64@0.25.1': optional: true - '@esbuild/freebsd-x64@0.25.2': + '@esbuild/freebsd-x64@0.25.3': optional: true '@esbuild/linux-arm64@0.20.2': @@ -17914,7 +18143,7 @@ snapshots: '@esbuild/linux-arm64@0.25.1': optional: true - '@esbuild/linux-arm64@0.25.2': + '@esbuild/linux-arm64@0.25.3': optional: true '@esbuild/linux-arm@0.20.2': @@ -17926,7 +18155,7 @@ snapshots: '@esbuild/linux-arm@0.25.1': optional: true - '@esbuild/linux-arm@0.25.2': + '@esbuild/linux-arm@0.25.3': optional: true '@esbuild/linux-ia32@0.20.2': @@ -17938,7 +18167,7 @@ snapshots: '@esbuild/linux-ia32@0.25.1': optional: true - '@esbuild/linux-ia32@0.25.2': + '@esbuild/linux-ia32@0.25.3': optional: true '@esbuild/linux-loong64@0.20.2': @@ -17950,7 +18179,7 @@ snapshots: '@esbuild/linux-loong64@0.25.1': optional: true - '@esbuild/linux-loong64@0.25.2': + '@esbuild/linux-loong64@0.25.3': optional: true '@esbuild/linux-mips64el@0.20.2': @@ -17962,7 +18191,7 @@ snapshots: '@esbuild/linux-mips64el@0.25.1': optional: true - '@esbuild/linux-mips64el@0.25.2': + '@esbuild/linux-mips64el@0.25.3': optional: true '@esbuild/linux-ppc64@0.20.2': @@ -17974,7 +18203,7 @@ snapshots: '@esbuild/linux-ppc64@0.25.1': optional: true - '@esbuild/linux-ppc64@0.25.2': + '@esbuild/linux-ppc64@0.25.3': optional: true '@esbuild/linux-riscv64@0.20.2': @@ -17986,7 +18215,7 @@ snapshots: '@esbuild/linux-riscv64@0.25.1': optional: true - '@esbuild/linux-riscv64@0.25.2': + '@esbuild/linux-riscv64@0.25.3': optional: true '@esbuild/linux-s390x@0.20.2': @@ -17998,7 +18227,7 @@ snapshots: '@esbuild/linux-s390x@0.25.1': optional: true - '@esbuild/linux-s390x@0.25.2': + '@esbuild/linux-s390x@0.25.3': optional: true '@esbuild/linux-x64@0.20.2': @@ -18010,7 +18239,7 @@ snapshots: '@esbuild/linux-x64@0.25.1': optional: true - '@esbuild/linux-x64@0.25.2': + '@esbuild/linux-x64@0.25.3': optional: true '@esbuild/netbsd-arm64@0.24.2': @@ -18019,7 +18248,7 @@ snapshots: '@esbuild/netbsd-arm64@0.25.1': optional: true - '@esbuild/netbsd-arm64@0.25.2': + '@esbuild/netbsd-arm64@0.25.3': optional: true '@esbuild/netbsd-x64@0.20.2': @@ -18031,7 +18260,7 @@ snapshots: '@esbuild/netbsd-x64@0.25.1': optional: true - '@esbuild/netbsd-x64@0.25.2': + '@esbuild/netbsd-x64@0.25.3': optional: true '@esbuild/openbsd-arm64@0.24.2': @@ -18040,7 +18269,7 @@ snapshots: '@esbuild/openbsd-arm64@0.25.1': optional: true - '@esbuild/openbsd-arm64@0.25.2': + '@esbuild/openbsd-arm64@0.25.3': optional: true '@esbuild/openbsd-x64@0.20.2': @@ -18052,7 +18281,7 @@ snapshots: '@esbuild/openbsd-x64@0.25.1': optional: true - '@esbuild/openbsd-x64@0.25.2': + '@esbuild/openbsd-x64@0.25.3': optional: true '@esbuild/sunos-x64@0.20.2': @@ -18064,7 +18293,7 @@ snapshots: '@esbuild/sunos-x64@0.25.1': optional: true - '@esbuild/sunos-x64@0.25.2': + '@esbuild/sunos-x64@0.25.3': optional: true '@esbuild/win32-arm64@0.20.2': @@ -18076,7 +18305,7 @@ snapshots: '@esbuild/win32-arm64@0.25.1': optional: true - '@esbuild/win32-arm64@0.25.2': + '@esbuild/win32-arm64@0.25.3': optional: true '@esbuild/win32-ia32@0.20.2': @@ -18088,7 +18317,7 @@ snapshots: '@esbuild/win32-ia32@0.25.1': optional: true - '@esbuild/win32-ia32@0.25.2': + '@esbuild/win32-ia32@0.25.3': optional: true '@esbuild/win32-x64@0.20.2': @@ -18100,7 +18329,7 @@ snapshots: '@esbuild/win32-x64@0.25.1': optional: true - '@esbuild/win32-x64@0.25.2': + '@esbuild/win32-x64@0.25.3': optional: true '@eslint-community/eslint-utils@4.4.1(eslint@9.15.0(jiti@2.4.2))': @@ -18455,9 +18684,9 @@ snapshots: '@expo/metro-config@0.19.4': dependencies: '@babel/core': 7.26.10 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 '@expo/config': 10.0.5 '@expo/env': 0.4.0 '@expo/json-file': 9.0.0 @@ -18585,104 +18814,182 @@ snapshots: '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true + '@img/sharp-darwin-arm64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.1.0 + optional: true + '@img/sharp-darwin-x64@0.33.5': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true + '@img/sharp-darwin-x64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.1.0 + optional: true + '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true + '@img/sharp-libvips-darwin-arm64@1.1.0': + optional: true + '@img/sharp-libvips-darwin-x64@1.0.4': optional: true + '@img/sharp-libvips-darwin-x64@1.1.0': + optional: true + '@img/sharp-libvips-linux-arm64@1.0.4': optional: true + '@img/sharp-libvips-linux-arm64@1.1.0': + optional: true + '@img/sharp-libvips-linux-arm@1.0.5': optional: true + '@img/sharp-libvips-linux-arm@1.1.0': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.1.0': + optional: true + '@img/sharp-libvips-linux-s390x@1.0.4': optional: true + '@img/sharp-libvips-linux-s390x@1.1.0': + optional: true + '@img/sharp-libvips-linux-x64@1.0.4': optional: true + '@img/sharp-libvips-linux-x64@1.1.0': + optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.1.0': + optional: true + '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true + '@img/sharp-libvips-linuxmusl-x64@1.1.0': + optional: true + '@img/sharp-linux-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true + '@img/sharp-linux-arm64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.1.0 + optional: true + '@img/sharp-linux-arm@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.0.5 optional: true + '@img/sharp-linux-arm@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.1.0 + optional: true + '@img/sharp-linux-s390x@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.0.4 optional: true + '@img/sharp-linux-s390x@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.1.0 + optional: true + '@img/sharp-linux-x64@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.0.4 optional: true + '@img/sharp-linux-x64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.1.0 + optional: true + '@img/sharp-linuxmusl-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true + '@img/sharp-linuxmusl-arm64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 + optional: true + '@img/sharp-linuxmusl-x64@0.33.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true + '@img/sharp-linuxmusl-x64@0.34.1': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.1.0 + optional: true + '@img/sharp-wasm32@0.33.5': dependencies: '@emnapi/runtime': 1.2.0 optional: true + '@img/sharp-wasm32@0.34.1': + dependencies: + '@emnapi/runtime': 1.4.3 + optional: true + '@img/sharp-win32-ia32@0.33.5': optional: true + '@img/sharp-win32-ia32@0.34.1': + optional: true + '@img/sharp-win32-x64@0.33.5': optional: true - '@inquirer/checkbox@4.1.4(@types/node@22.14.1)': + '@img/sharp-win32-x64@0.34.1': + optional: true + + '@inquirer/checkbox@4.1.4(@types/node@22.15.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.14.1) + '@inquirer/core': 10.1.9(@types/node@22.15.3) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@22.14.1) + '@inquirer/type': 3.0.5(@types/node@22.15.3) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 - '@inquirer/confirm@5.1.6(@types/node@22.14.1)': + '@inquirer/confirm@5.1.6(@types/node@22.15.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.14.1) - '@inquirer/type': 3.0.5(@types/node@22.14.1) + '@inquirer/core': 10.1.9(@types/node@22.15.3) + '@inquirer/type': 3.0.5(@types/node@22.15.3) optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 - '@inquirer/confirm@5.1.8(@types/node@22.14.1)': + '@inquirer/confirm@5.1.8(@types/node@22.15.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.14.1) - '@inquirer/type': 3.0.5(@types/node@22.14.1) + '@inquirer/core': 10.1.9(@types/node@22.15.3) + '@inquirer/type': 3.0.5(@types/node@22.15.3) optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 - '@inquirer/core@10.1.9(@types/node@22.14.1)': + '@inquirer/core@10.1.9(@types/node@22.15.3)': dependencies: '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@22.14.1) + '@inquirer/type': 3.0.5(@types/node@22.15.3) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -18690,97 +18997,97 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 - '@inquirer/editor@4.2.9(@types/node@22.14.1)': + '@inquirer/editor@4.2.9(@types/node@22.15.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.14.1) - '@inquirer/type': 3.0.5(@types/node@22.14.1) + '@inquirer/core': 10.1.9(@types/node@22.15.3) + '@inquirer/type': 3.0.5(@types/node@22.15.3) external-editor: 3.1.0 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 - '@inquirer/expand@4.0.11(@types/node@22.14.1)': + '@inquirer/expand@4.0.11(@types/node@22.15.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.14.1) - '@inquirer/type': 3.0.5(@types/node@22.14.1) + '@inquirer/core': 10.1.9(@types/node@22.15.3) + '@inquirer/type': 3.0.5(@types/node@22.15.3) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@inquirer/figures@1.0.11': {} - '@inquirer/input@4.1.8(@types/node@22.14.1)': + '@inquirer/input@4.1.8(@types/node@22.15.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.14.1) - '@inquirer/type': 3.0.5(@types/node@22.14.1) + '@inquirer/core': 10.1.9(@types/node@22.15.3) + '@inquirer/type': 3.0.5(@types/node@22.15.3) optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 - '@inquirer/number@3.0.11(@types/node@22.14.1)': + '@inquirer/number@3.0.11(@types/node@22.15.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.14.1) - '@inquirer/type': 3.0.5(@types/node@22.14.1) + '@inquirer/core': 10.1.9(@types/node@22.15.3) + '@inquirer/type': 3.0.5(@types/node@22.15.3) optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 - '@inquirer/password@4.0.11(@types/node@22.14.1)': + '@inquirer/password@4.0.11(@types/node@22.15.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.14.1) - '@inquirer/type': 3.0.5(@types/node@22.14.1) + '@inquirer/core': 10.1.9(@types/node@22.15.3) + '@inquirer/type': 3.0.5(@types/node@22.15.3) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 22.14.1 - - '@inquirer/prompts@7.3.2(@types/node@22.14.1)': - dependencies: - '@inquirer/checkbox': 4.1.4(@types/node@22.14.1) - '@inquirer/confirm': 5.1.8(@types/node@22.14.1) - '@inquirer/editor': 4.2.9(@types/node@22.14.1) - '@inquirer/expand': 4.0.11(@types/node@22.14.1) - '@inquirer/input': 4.1.8(@types/node@22.14.1) - '@inquirer/number': 3.0.11(@types/node@22.14.1) - '@inquirer/password': 4.0.11(@types/node@22.14.1) - '@inquirer/rawlist': 4.0.11(@types/node@22.14.1) - '@inquirer/search': 3.0.11(@types/node@22.14.1) - '@inquirer/select': 4.1.0(@types/node@22.14.1) + '@types/node': 22.15.3 + + '@inquirer/prompts@7.3.2(@types/node@22.15.3)': + dependencies: + '@inquirer/checkbox': 4.1.4(@types/node@22.15.3) + '@inquirer/confirm': 5.1.8(@types/node@22.15.3) + '@inquirer/editor': 4.2.9(@types/node@22.15.3) + '@inquirer/expand': 4.0.11(@types/node@22.15.3) + '@inquirer/input': 4.1.8(@types/node@22.15.3) + '@inquirer/number': 3.0.11(@types/node@22.15.3) + '@inquirer/password': 4.0.11(@types/node@22.15.3) + '@inquirer/rawlist': 4.0.11(@types/node@22.15.3) + '@inquirer/search': 3.0.11(@types/node@22.15.3) + '@inquirer/select': 4.1.0(@types/node@22.15.3) optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 - '@inquirer/rawlist@4.0.11(@types/node@22.14.1)': + '@inquirer/rawlist@4.0.11(@types/node@22.15.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.14.1) - '@inquirer/type': 3.0.5(@types/node@22.14.1) + '@inquirer/core': 10.1.9(@types/node@22.15.3) + '@inquirer/type': 3.0.5(@types/node@22.15.3) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 - '@inquirer/search@3.0.11(@types/node@22.14.1)': + '@inquirer/search@3.0.11(@types/node@22.15.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.14.1) + '@inquirer/core': 10.1.9(@types/node@22.15.3) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@22.14.1) + '@inquirer/type': 3.0.5(@types/node@22.15.3) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 - '@inquirer/select@4.1.0(@types/node@22.14.1)': + '@inquirer/select@4.1.0(@types/node@22.15.3)': dependencies: - '@inquirer/core': 10.1.9(@types/node@22.14.1) + '@inquirer/core': 10.1.9(@types/node@22.15.3) '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.5(@types/node@22.14.1) + '@inquirer/type': 3.0.5(@types/node@22.15.3) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@inquirer/type@1.5.5': dependencies: mute-stream: 1.0.0 - '@inquirer/type@3.0.5(@types/node@22.14.1)': + '@inquirer/type@3.0.5(@types/node@22.15.3)': optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@internationalized/date@3.5.5': dependencies: @@ -18825,7 +19132,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.14.1 + '@types/node': 22.15.3 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -18843,7 +19150,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.14.1 + '@types/node': 22.15.3 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -18885,7 +19192,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/yargs': 15.0.19 chalk: 4.1.2 optional: true @@ -18895,7 +19202,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -18974,9 +19281,9 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.3.2(@types/node@22.14.1))': + '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.3.2(@types/node@22.15.3))': dependencies: - '@inquirer/prompts': 7.3.2(@types/node@22.14.1) + '@inquirer/prompts': 7.3.2(@types/node@22.15.3) '@inquirer/type': 1.5.5 '@lmdb/lmdb-darwin-arm64@3.2.6': @@ -19010,32 +19317,32 @@ snapshots: - encoding - supports-color - '@microsoft/api-extractor-model@7.29.4(@types/node@22.14.1)': + '@microsoft/api-extractor-model@7.29.4(@types/node@22.15.3)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.5.1(@types/node@22.14.1) + '@rushstack/node-core-library': 5.5.1(@types/node@22.15.3) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor-model@7.30.1(@types/node@22.14.1)': + '@microsoft/api-extractor-model@7.30.1(@types/node@22.15.3)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.10.1(@types/node@22.14.1) + '@rushstack/node-core-library': 5.10.1(@types/node@22.15.3) transitivePeerDependencies: - '@types/node' optional: true - '@microsoft/api-extractor@7.47.4(@types/node@22.14.1)': + '@microsoft/api-extractor@7.47.4(@types/node@22.15.3)': dependencies: - '@microsoft/api-extractor-model': 7.29.4(@types/node@22.14.1) + '@microsoft/api-extractor-model': 7.29.4(@types/node@22.15.3) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.5.1(@types/node@22.14.1) + '@rushstack/node-core-library': 5.5.1(@types/node@22.15.3) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.13.3(@types/node@22.14.1) - '@rushstack/ts-command-line': 4.22.3(@types/node@22.14.1) + '@rushstack/terminal': 0.13.3(@types/node@22.15.3) + '@rushstack/ts-command-line': 4.22.3(@types/node@22.15.3) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.10 @@ -19045,15 +19352,15 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.48.1(@types/node@22.14.1)': + '@microsoft/api-extractor@7.48.1(@types/node@22.15.3)': dependencies: - '@microsoft/api-extractor-model': 7.30.1(@types/node@22.14.1) + '@microsoft/api-extractor-model': 7.30.1(@types/node@22.15.3) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.10.1(@types/node@22.14.1) + '@rushstack/node-core-library': 5.10.1(@types/node@22.15.3) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.14.4(@types/node@22.14.1) - '@rushstack/ts-command-line': 4.23.2(@types/node@22.14.1) + '@rushstack/terminal': 0.14.4(@types/node@22.15.3) + '@rushstack/ts-command-line': 4.23.2(@types/node@22.15.3) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.10 @@ -19280,30 +19587,59 @@ snapshots: '@netlify/serverless-functions-api@1.36.0': {} - '@next/env@15.1.2': {} + '@next/env@14.2.28': {} + + '@next/env@15.3.1': {} + + '@next/swc-darwin-arm64@14.2.28': + optional: true + + '@next/swc-darwin-arm64@15.3.1': + optional: true + + '@next/swc-darwin-x64@14.2.28': + optional: true + + '@next/swc-darwin-x64@15.3.1': + optional: true + + '@next/swc-linux-arm64-gnu@14.2.28': + optional: true + + '@next/swc-linux-arm64-gnu@15.3.1': + optional: true + + '@next/swc-linux-arm64-musl@14.2.28': + optional: true + + '@next/swc-linux-arm64-musl@15.3.1': + optional: true + + '@next/swc-linux-x64-gnu@14.2.28': + optional: true - '@next/swc-darwin-arm64@15.1.2': + '@next/swc-linux-x64-gnu@15.3.1': optional: true - '@next/swc-darwin-x64@15.1.2': + '@next/swc-linux-x64-musl@14.2.28': optional: true - '@next/swc-linux-arm64-gnu@15.1.2': + '@next/swc-linux-x64-musl@15.3.1': optional: true - '@next/swc-linux-arm64-musl@15.1.2': + '@next/swc-win32-arm64-msvc@14.2.28': optional: true - '@next/swc-linux-x64-gnu@15.1.2': + '@next/swc-win32-arm64-msvc@15.3.1': optional: true - '@next/swc-linux-x64-musl@15.1.2': + '@next/swc-win32-ia32-msvc@14.2.28': optional: true - '@next/swc-win32-arm64-msvc@15.1.2': + '@next/swc-win32-x64-msvc@14.2.28': optional: true - '@next/swc-win32-x64-msvc@15.1.2': + '@next/swc-win32-x64-msvc@15.3.1': optional: true '@ngtools/webpack@19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.98.0(esbuild@0.25.1))': @@ -19634,7 +19970,7 @@ snapshots: '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.26.10) '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) - '@babel/template': 7.27.0 + '@babel/template': 7.27.1 '@react-native/babel-plugin-codegen': 0.76.3(@babel/preset-env@7.26.9(@babel/core@7.26.10)) babel-plugin-syntax-hermes-parser: 0.25.1 babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.10) @@ -19645,7 +19981,7 @@ snapshots: '@react-native/codegen@0.76.3(@babel/preset-env@7.26.9(@babel/core@7.26.10))': dependencies: - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.1 '@babel/preset-env': 7.26.9(@babel/core@7.26.10) glob: 7.2.3 hermes-parser: 0.23.1 @@ -19757,7 +20093,7 @@ snapshots: dependencies: nanoid: 3.3.8 - '@react-navigation/stack@6.4.1(e9c097e00fee89f3cf54c317dda4adb5)': + '@react-navigation/stack@6.4.1(44i6xs33lapt7cl2pkawmwjtru)': dependencies: '@react-navigation/elements': 1.3.31(@react-navigation/native@6.1.18(react-native@0.76.3(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@react-native-community/cli-server-api@13.6.9(encoding@0.1.13))(@types/react@19.0.1)(encoding@0.1.13)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@react-native-community/cli-server-api@13.6.9(encoding@0.1.13))(@types/react@19.0.1)(encoding@0.1.13)(react@19.0.0))(react@19.0.0))(react-native@0.76.3(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@react-native-community/cli-server-api@13.6.9(encoding@0.1.13))(@types/react@19.0.1)(encoding@0.1.13)(react@19.0.0))(react@19.0.0) '@react-navigation/native': 6.1.18(react-native@0.76.3(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@react-native-community/cli-server-api@13.6.9(encoding@0.1.13))(@types/react@19.0.1)(encoding@0.1.13)(react@19.0.0))(react@19.0.0) @@ -19771,187 +20107,187 @@ snapshots: '@remix-run/router@1.18.0': {} - '@rollup/plugin-alias@5.1.1(rollup@4.39.0)': + '@rollup/plugin-alias@5.1.1(rollup@4.40.1)': optionalDependencies: - rollup: 4.39.0 + rollup: 4.40.1 - '@rollup/plugin-commonjs@28.0.3(rollup@4.39.0)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.40.1)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.39.0) + '@rollup/pluginutils': 5.1.4(rollup@4.40.1) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.4.3(picomatch@4.0.2) + fdir: 6.4.4(picomatch@4.0.2) is-reference: 1.2.1 magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 4.39.0 + rollup: 4.40.1 - '@rollup/plugin-inject@5.0.5(rollup@4.39.0)': + '@rollup/plugin-inject@5.0.5(rollup@4.40.1)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.39.0) + '@rollup/pluginutils': 5.1.4(rollup@4.40.1) estree-walker: 2.0.2 magic-string: 0.30.17 optionalDependencies: - rollup: 4.39.0 + rollup: 4.40.1 - '@rollup/plugin-json@6.1.0(rollup@4.39.0)': + '@rollup/plugin-json@6.1.0(rollup@4.40.1)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.39.0) + '@rollup/pluginutils': 5.1.4(rollup@4.40.1) optionalDependencies: - rollup: 4.39.0 + rollup: 4.40.1 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.39.0)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.40.1)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.39.0) + '@rollup/pluginutils': 5.1.4(rollup@4.40.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.39.0 + rollup: 4.40.1 - '@rollup/plugin-replace@6.0.2(rollup@4.39.0)': + '@rollup/plugin-replace@6.0.2(rollup@4.40.1)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.39.0) + '@rollup/pluginutils': 5.1.4(rollup@4.40.1) magic-string: 0.30.17 optionalDependencies: - rollup: 4.39.0 + rollup: 4.40.1 - '@rollup/plugin-terser@0.4.4(rollup@4.39.0)': + '@rollup/plugin-terser@0.4.4(rollup@4.40.1)': dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 terser: 5.39.0 optionalDependencies: - rollup: 4.39.0 + rollup: 4.40.1 - '@rollup/pluginutils@5.1.4(rollup@4.39.0)': + '@rollup/pluginutils@5.1.4(rollup@4.40.1)': dependencies: '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.39.0 + rollup: 4.40.1 '@rollup/rollup-android-arm-eabi@4.34.8': optional: true - '@rollup/rollup-android-arm-eabi@4.39.0': + '@rollup/rollup-android-arm-eabi@4.40.1': optional: true '@rollup/rollup-android-arm64@4.34.8': optional: true - '@rollup/rollup-android-arm64@4.39.0': + '@rollup/rollup-android-arm64@4.40.1': optional: true '@rollup/rollup-darwin-arm64@4.34.8': optional: true - '@rollup/rollup-darwin-arm64@4.39.0': + '@rollup/rollup-darwin-arm64@4.40.1': optional: true '@rollup/rollup-darwin-x64@4.34.8': optional: true - '@rollup/rollup-darwin-x64@4.39.0': + '@rollup/rollup-darwin-x64@4.40.1': optional: true '@rollup/rollup-freebsd-arm64@4.34.8': optional: true - '@rollup/rollup-freebsd-arm64@4.39.0': + '@rollup/rollup-freebsd-arm64@4.40.1': optional: true '@rollup/rollup-freebsd-x64@4.34.8': optional: true - '@rollup/rollup-freebsd-x64@4.39.0': + '@rollup/rollup-freebsd-x64@4.40.1': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.34.8': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.39.0': + '@rollup/rollup-linux-arm-gnueabihf@4.40.1': optional: true '@rollup/rollup-linux-arm-musleabihf@4.34.8': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.39.0': + '@rollup/rollup-linux-arm-musleabihf@4.40.1': optional: true '@rollup/rollup-linux-arm64-gnu@4.34.8': optional: true - '@rollup/rollup-linux-arm64-gnu@4.39.0': + '@rollup/rollup-linux-arm64-gnu@4.40.1': optional: true '@rollup/rollup-linux-arm64-musl@4.34.8': optional: true - '@rollup/rollup-linux-arm64-musl@4.39.0': + '@rollup/rollup-linux-arm64-musl@4.40.1': optional: true '@rollup/rollup-linux-loongarch64-gnu@4.34.8': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.39.0': + '@rollup/rollup-linux-loongarch64-gnu@4.40.1': optional: true '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.39.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': optional: true '@rollup/rollup-linux-riscv64-gnu@4.34.8': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.39.0': + '@rollup/rollup-linux-riscv64-gnu@4.40.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.39.0': + '@rollup/rollup-linux-riscv64-musl@4.40.1': optional: true '@rollup/rollup-linux-s390x-gnu@4.34.8': optional: true - '@rollup/rollup-linux-s390x-gnu@4.39.0': + '@rollup/rollup-linux-s390x-gnu@4.40.1': optional: true '@rollup/rollup-linux-x64-gnu@4.34.8': optional: true - '@rollup/rollup-linux-x64-gnu@4.39.0': + '@rollup/rollup-linux-x64-gnu@4.40.1': optional: true '@rollup/rollup-linux-x64-musl@4.34.8': optional: true - '@rollup/rollup-linux-x64-musl@4.39.0': + '@rollup/rollup-linux-x64-musl@4.40.1': optional: true '@rollup/rollup-win32-arm64-msvc@4.34.8': optional: true - '@rollup/rollup-win32-arm64-msvc@4.39.0': + '@rollup/rollup-win32-arm64-msvc@4.40.1': optional: true '@rollup/rollup-win32-ia32-msvc@4.34.8': optional: true - '@rollup/rollup-win32-ia32-msvc@4.39.0': + '@rollup/rollup-win32-ia32-msvc@4.40.1': optional: true '@rollup/rollup-win32-x64-msvc@4.34.8': optional: true - '@rollup/rollup-win32-x64-msvc@4.39.0': + '@rollup/rollup-win32-x64-msvc@4.40.1': optional: true - '@rushstack/node-core-library@5.10.1(@types/node@22.14.1)': + '@rushstack/node-core-library@5.10.1(@types/node@22.15.3)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -19962,10 +20298,10 @@ snapshots: resolve: 1.22.10 semver: 7.5.4 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 optional: true - '@rushstack/node-core-library@5.5.1(@types/node@22.14.1)': + '@rushstack/node-core-library@5.5.1(@types/node@22.15.3)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -19976,40 +20312,40 @@ snapshots: resolve: 1.22.10 semver: 7.5.4 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.10 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.13.3(@types/node@22.14.1)': + '@rushstack/terminal@0.13.3(@types/node@22.15.3)': dependencies: - '@rushstack/node-core-library': 5.5.1(@types/node@22.14.1) + '@rushstack/node-core-library': 5.5.1(@types/node@22.15.3) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 - '@rushstack/terminal@0.14.4(@types/node@22.14.1)': + '@rushstack/terminal@0.14.4(@types/node@22.15.3)': dependencies: - '@rushstack/node-core-library': 5.10.1(@types/node@22.14.1) + '@rushstack/node-core-library': 5.10.1(@types/node@22.15.3) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 optional: true - '@rushstack/ts-command-line@4.22.3(@types/node@22.14.1)': + '@rushstack/ts-command-line@4.22.3(@types/node@22.15.3)': dependencies: - '@rushstack/terminal': 0.13.3(@types/node@22.14.1) + '@rushstack/terminal': 0.13.3(@types/node@22.15.3) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' - '@rushstack/ts-command-line@4.23.2(@types/node@22.14.1)': + '@rushstack/ts-command-line@4.23.2(@types/node@22.15.3)': dependencies: - '@rushstack/terminal': 0.14.4(@types/node@22.14.1) + '@rushstack/terminal': 0.14.4(@types/node@22.15.3) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -20222,11 +20558,11 @@ snapshots: dependencies: solid-js: 1.9.5 - '@solidjs/start@1.1.3(@testing-library/jest-dom@6.6.3)(@types/node@22.14.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(solid-js@1.9.5)(terser@5.39.0)(vinxi@0.5.3(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(yaml@2.6.1)': + '@solidjs/start@1.1.3(@testing-library/jest-dom@6.6.3)(@types/node@22.15.3)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(solid-js@1.9.5)(terser@5.39.0)(vinxi@0.5.3(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(yaml@2.6.1)': dependencies: - '@tanstack/server-functions-plugin': 1.114.32(@types/node@22.14.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - '@vinxi/plugin-directives': 0.5.0(vinxi@0.5.3(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) - '@vinxi/server-components': 0.5.0(vinxi@0.5.3(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + '@tanstack/server-functions-plugin': 1.114.32(@types/node@22.15.3)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + '@vinxi/plugin-directives': 0.5.0(vinxi@0.5.3(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + '@vinxi/server-components': 0.5.0(vinxi@0.5.3(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) defu: 6.1.4 error-stack-parser: 2.1.4 html-to-image: 1.11.11 @@ -20236,9 +20572,9 @@ snapshots: shiki: 1.29.2 source-map-js: 1.2.1 terracotta: 1.0.5(solid-js@1.9.5) - tinyglobby: 0.2.12 - vinxi: 0.5.3(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - vite-plugin-solid: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + tinyglobby: 0.2.13 + vinxi: 0.5.3(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite-plugin-solid: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) transitivePeerDependencies: - '@testing-library/jest-dom' - '@types/node' @@ -20276,14 +20612,14 @@ snapshots: dependencies: acorn: 8.14.1 - '@sveltejs/adapter-auto@6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))': + '@sveltejs/adapter-auto@6.0.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))': dependencies: - '@sveltejs/kit': 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + '@sveltejs/kit': 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) import-meta-resolve: 4.1.0 - '@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': + '@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.1 @@ -20296,7 +20632,7 @@ snapshots: set-cookie-parser: 2.7.1 sirv: 3.0.0 svelte: 5.26.1 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) '@sveltejs/package@2.3.10(svelte@5.26.1)(typescript@5.8.3)': dependencies: @@ -20309,25 +20645,25 @@ snapshots: transitivePeerDependencies: - typescript - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) debug: 4.4.0 svelte: 5.26.1 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) debug: 4.4.0 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.26.1 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - vitefu: 1.0.6(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vitefu: 1.0.6(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) transitivePeerDependencies: - supports-color @@ -20337,6 +20673,11 @@ snapshots: dependencies: tslib: 2.8.1 + '@swc/helpers@0.5.5': + dependencies: + '@swc/counter': 0.1.3 + tslib: 2.8.1 + '@tailwindcss/node@4.0.14': dependencies: enhanced-resolve: 5.18.1 @@ -20390,22 +20731,22 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.0.14 '@tailwindcss/oxide-win32-x64-msvc': 4.0.14 - '@tailwindcss/vite@4.0.14(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': + '@tailwindcss/vite@4.0.14(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: '@tailwindcss/node': 4.0.14 '@tailwindcss/oxide': 4.0.14 lightningcss: 1.29.2 tailwindcss: 4.0.14 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - '@tanstack/config@0.14.2(@types/node@22.14.1)(esbuild@0.25.2)(eslint@9.15.0(jiti@2.4.2))(rollup@4.39.0)(typescript@5.8.3)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': + '@tanstack/config@0.14.2(@types/node@22.15.3)(esbuild@0.25.3)(eslint@9.15.0(jiti@2.4.2))(rollup@4.40.1)(typescript@5.8.3)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: '@commitlint/parse': 19.5.0 '@eslint/js': 9.17.0 '@stylistic/eslint-plugin-js': 2.11.0(eslint@9.15.0(jiti@2.4.2)) commander: 12.1.0 current-git-branch: 1.1.0 - esbuild-register: 3.6.0(esbuild@0.25.2) + esbuild-register: 3.6.0(esbuild@0.25.3) eslint-plugin-import-x: 4.6.1(eslint@9.15.0(jiti@2.4.2))(typescript@5.8.3) eslint-plugin-n: 17.14.0(eslint@9.15.0(jiti@2.4.2)) globals: 15.14.0 @@ -20413,7 +20754,7 @@ snapshots: jsonfile: 6.1.0 liftoff: 5.0.0 minimist: 1.2.8 - rollup-plugin-preserve-directives: 0.4.0(rollup@4.39.0) + rollup-plugin-preserve-directives: 0.4.0(rollup@4.40.1) semver: 7.7.1 simple-git: 3.27.0 typedoc: 0.27.5(typescript@5.8.3) @@ -20421,9 +20762,9 @@ snapshots: typedoc-plugin-markdown: 4.3.3(typedoc@0.27.5(typescript@5.8.3)) typescript-eslint: 8.18.1(eslint@9.15.0(jiti@2.4.2))(typescript@5.8.3) v8flags: 4.0.1 - vite-plugin-dts: 4.0.3(@types/node@22.14.1)(rollup@4.39.0)(typescript@5.8.3)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) - vite-plugin-externalize-deps: 0.8.0(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) - vite-tsconfig-paths: 5.1.4(typescript@5.8.3)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + vite-plugin-dts: 4.0.3(@types/node@22.15.3)(rollup@4.40.1)(typescript@5.8.3)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + vite-plugin-externalize-deps: 0.8.0(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + vite-tsconfig-paths: 5.1.4(typescript@5.8.3)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) transitivePeerDependencies: - '@types/node' - esbuild @@ -20433,20 +20774,20 @@ snapshots: - typescript - vite - '@tanstack/directive-functions-plugin@1.114.32(@types/node@22.14.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)': + '@tanstack/directive-functions-plugin@1.114.32(@types/node@22.15.3)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.26.10 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.26.10) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.26.10) + '@babel/template': 7.27.1 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 '@tanstack/router-utils': 1.114.29 babel-dead-code-elimination: 1.0.10 dedent: 1.5.3(babel-plugin-macros@3.1.0) tiny-invariant: 1.3.3 - vite: 6.1.3(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.1.3(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -20475,21 +20816,21 @@ snapshots: '@tanstack/router-utils@1.114.29': dependencies: - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.1 ansis: 3.17.0 diff: 7.0.0 - '@tanstack/server-functions-plugin@1.114.32(@types/node@22.14.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)': + '@tanstack/server-functions-plugin@1.114.32(@types/node@22.15.3)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.26.10 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - '@tanstack/directive-functions-plugin': 1.114.32(@types/node@22.14.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.26.10) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.26.10) + '@babel/template': 7.27.1 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + '@tanstack/directive-functions-plugin': 1.114.32(@types/node@22.15.3)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) babel-dead-code-elimination: 1.0.10 dedent: 1.5.3(babel-plugin-macros@3.1.0) tiny-invariant: 1.3.3 @@ -20520,7 +20861,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 '@babel/runtime': 7.26.10 '@types/aria-query': 5.0.4 aria-query: 5.3.0 @@ -20567,13 +20908,13 @@ snapshots: '@types/react': 19.0.1 '@types/react-dom': 19.0.2(@types/react@19.0.1) - '@testing-library/svelte@5.2.6(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': + '@testing-library/svelte@5.2.6(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: '@testing-library/dom': 10.4.0 svelte: 5.26.1 optionalDependencies: - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) '@tsconfig/svelte@5.0.4': {} @@ -20594,48 +20935,48 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/braces@3.0.4': {} '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.5 - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/connect@3.4.38': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/cookie@0.6.0': {} @@ -20661,7 +21002,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -20675,7 +21016,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/hammerjs@2.0.45': {} @@ -20691,7 +21032,7 @@ snapshots: '@types/http-proxy@1.17.15': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/istanbul-lib-coverage@2.0.6': {} @@ -20728,9 +21069,9 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 - '@types/node@22.14.1': + '@types/node@22.15.3': dependencies: undici-types: 6.21.0 @@ -20763,7 +21104,7 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/serve-index@1.9.4': dependencies: @@ -20772,12 +21113,12 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/send': 0.17.4 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/sort-by@1.2.3': {} @@ -20799,13 +21140,13 @@ snapshots: '@types/webpack-sources@3.2.3': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/source-list-map': 0.1.6 source-map: 0.7.4 '@types/webpack@4.41.38': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/tapable': 1.0.12 '@types/uglify-js': 3.17.5 '@types/webpack-sources': 3.2.3 @@ -20814,7 +21155,7 @@ snapshots: '@types/ws@8.5.13': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 '@types/yargs-parser@21.0.3': {} @@ -20931,20 +21272,20 @@ snapshots: '@urql/core': 5.0.8(graphql@16.9.0) wonka: 6.3.4 - '@vercel/analytics@1.5.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(next@15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0))(react@19.0.0)(svelte@5.26.1)(vue@3.4.35(typescript@5.8.3))': + '@vercel/analytics@1.5.0(@sveltejs/kit@2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(next@15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0))(react@19.0.0)(svelte@5.26.1)(vue@3.4.35(typescript@5.8.3))': optionalDependencies: - '@sveltejs/kit': 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) - next: 15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0) + '@sveltejs/kit': 2.20.5(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)))(svelte@5.26.1)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + next: 15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0) react: 19.0.0 svelte: 5.26.1 vue: 3.4.35(typescript@5.8.3) '@vercel/edge@1.2.1': {} - '@vercel/nft@0.29.2(encoding@0.1.13)(rollup@4.39.0)': + '@vercel/nft@0.29.2(encoding@0.1.13)(rollup@4.40.1)': dependencies: '@mapbox/node-pre-gyp': 2.0.0(encoding@0.1.13) - '@rollup/pluginutils': 5.1.4(rollup@4.39.0) + '@rollup/pluginutils': 5.1.4(rollup@4.40.1) acorn: 8.14.1 acorn-import-attributes: 1.9.5(acorn@8.14.1) async-sema: 3.1.1 @@ -20987,9 +21328,9 @@ snapshots: untun: 0.1.3 uqr: 0.1.2 - '@vinxi/plugin-directives@0.5.0(vinxi@0.5.3(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': + '@vinxi/plugin-directives@0.5.0(vinxi@0.5.3(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.1 acorn: 8.14.1 acorn-jsx: 5.3.2(acorn@8.14.1) acorn-loose: 8.4.0 @@ -20998,44 +21339,44 @@ snapshots: magicast: 0.2.11 recast: 0.23.11 tslib: 2.8.1 - vinxi: 0.5.3(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vinxi: 0.5.3(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - '@vinxi/server-components@0.5.0(vinxi@0.5.3(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': + '@vinxi/server-components@0.5.0(vinxi@0.5.3(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: - '@vinxi/plugin-directives': 0.5.0(vinxi@0.5.3(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + '@vinxi/plugin-directives': 0.5.0(vinxi@0.5.3(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) acorn: 8.14.1 acorn-loose: 8.4.0 acorn-typescript: 1.4.13(acorn@8.14.1) astring: 1.8.6 magicast: 0.2.11 recast: 0.23.11 - vinxi: 0.5.3(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vinxi: 0.5.3(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - '@vitejs/plugin-basic-ssl@1.2.0(vite@6.2.3(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1))': + '@vitejs/plugin-basic-ssl@1.2.0(vite@6.2.3(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: - vite: 6.2.3(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.2.3(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1) - '@vitejs/plugin-basic-ssl@1.2.0(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1))': + '@vitejs/plugin-basic-ssl@1.2.0(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1) - '@vitejs/plugin-react@4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': + '@vitejs/plugin-react@4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.2.1(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3))': + '@vitejs/plugin-vue@5.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))(vue@3.4.35(typescript@5.8.3))': dependencies: - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) vue: 3.4.35(typescript@5.8.3) - '@vitest/coverage-istanbul@3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': + '@vitest/coverage-istanbul@3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: '@istanbuljs/schema': 0.1.3 debug: 4.4.0 @@ -21047,17 +21388,17 @@ snapshots: magicast: 0.3.5 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color - '@vitest/eslint-plugin@1.1.36(@typescript-eslint/utils@8.18.1(eslint@9.15.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.15.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': + '@vitest/eslint-plugin@1.1.36(@typescript-eslint/utils@8.18.1(eslint@9.15.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.15.0(jiti@2.4.2))(typescript@5.8.3)(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: '@typescript-eslint/utils': 8.18.1(eslint@9.15.0(jiti@2.4.2))(typescript@5.8.3) eslint: 9.15.0(jiti@2.4.2) optionalDependencies: typescript: 5.8.3 - vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) '@vitest/expect@3.1.1': dependencies: @@ -21066,14 +21407,14 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.1(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': + '@vitest/mocker@3.1.1(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1))': dependencies: '@vitest/spy': 3.1.1 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - msw: 2.6.6(@types/node@22.14.1)(typescript@5.8.3) - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + msw: 2.6.6(@types/node@22.15.3)(typescript@5.8.3) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) '@vitest/pretty-format@3.1.1': dependencies: @@ -21152,7 +21493,7 @@ snapshots: '@vue/compiler-core@3.4.35': dependencies: - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.1 '@vue/shared': 3.4.35 entities: 4.5.0 estree-walker: 2.0.2 @@ -21160,7 +21501,7 @@ snapshots: '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.1 '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 @@ -21178,7 +21519,7 @@ snapshots: '@vue/compiler-sfc@2.7.16': dependencies: - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.1 postcss: 8.5.3 source-map: 0.6.1 optionalDependencies: @@ -21186,7 +21527,7 @@ snapshots: '@vue/compiler-sfc@3.4.35': dependencies: - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.1 '@vue/compiler-core': 3.4.35 '@vue/compiler-dom': 3.4.35 '@vue/compiler-ssr': 3.4.35 @@ -21438,7 +21779,7 @@ snapshots: '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.98.0)': dependencies: - webpack: 5.98.0(esbuild@0.25.2)(webpack-cli@5.1.4) + webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.98.0) '@webpack-cli/info@1.5.0(webpack-cli@4.10.0)': @@ -21448,7 +21789,7 @@ snapshots: '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.98.0)': dependencies: - webpack: 5.98.0(esbuild@0.25.2)(webpack-cli@5.1.4) + webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.98.0) '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)': @@ -21457,7 +21798,7 @@ snapshots: '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.98.0)': dependencies: - webpack: 5.98.0(esbuild@0.25.2)(webpack-cli@5.1.4) + webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.98.0) '@xmldom/xmldom@0.7.13': {} @@ -21772,14 +22113,14 @@ snapshots: astring@1.8.6: {} - astro@5.5.6(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.39.0)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1): + astro@5.5.6(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(rollup@4.40.1)(sass@1.86.0)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1): dependencies: '@astrojs/compiler': 2.11.0 '@astrojs/internal-helpers': 0.6.1 '@astrojs/markdown-remark': 6.3.1 '@astrojs/telemetry': 3.2.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.4(rollup@4.39.0) + '@rollup/pluginutils': 5.1.4(rollup@4.40.1) acorn: 8.14.1 aria-query: 5.3.2 axobject-query: 4.1.0 @@ -21796,7 +22137,7 @@ snapshots: dlv: 1.1.3 dset: 3.1.4 es-module-lexer: 1.6.0 - esbuild: 0.25.2 + esbuild: 0.25.3 estree-walker: 3.0.3 flattie: 1.1.1 github-slugger: 2.0.0 @@ -21817,14 +22158,14 @@ snapshots: semver: 7.7.1 shiki: 3.2.1 tinyexec: 0.3.2 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 tsconfck: 3.1.5(typescript@5.8.3) ultrahtml: 1.5.3 unist-util-visit: 5.0.0 unstorage: 1.15.0(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0) vfile: 6.0.3 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - vitefu: 1.0.6(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vitefu: 1.0.6(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.1 @@ -21925,9 +22266,9 @@ snapshots: babel-dead-code-elimination@1.0.10: dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.1 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 transitivePeerDependencies: - supports-color @@ -21965,13 +22306,13 @@ snapshots: '@babel/core': 7.26.10 find-cache-dir: 4.0.0 schema-utils: 4.3.0 - webpack: 5.98.0(esbuild@0.25.2)(webpack-cli@5.1.4) + webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) babel-plugin-add-module-exports@0.2.1: {} babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-plugin-utils': 7.27.1 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -21981,8 +22322,8 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 + '@babel/template': 7.27.1 + '@babel/types': 7.27.1 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 @@ -21990,8 +22331,8 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/types': 7.27.0 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.26.10) + '@babel/types': 7.27.1 html-entities: 2.3.3 validate-html-nesting: 1.2.2 @@ -22348,9 +22689,9 @@ snapshots: dependencies: run-applescript: 7.0.0 - bundle-require@5.1.0(esbuild@0.25.2): + bundle-require@5.1.0(esbuild@0.25.3): dependencies: - esbuild: 0.25.2 + esbuild: 0.25.3 load-tsconfig: 0.2.5 busboy@1.6.0: @@ -22565,7 +22906,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -22576,7 +22917,7 @@ snapshots: chromium-edge-launcher@0.2.0: dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -23602,20 +23943,20 @@ snapshots: esbuild-plugin-file-path-extensions@2.1.4: {} - esbuild-plugin-solid@0.5.0(esbuild@0.25.2)(solid-js@1.9.5): + esbuild-plugin-solid@0.5.0(esbuild@0.25.3)(solid-js@1.9.5): dependencies: '@babel/core': 7.26.10 '@babel/preset-typescript': 7.24.7(@babel/core@7.26.10) babel-preset-solid: 1.8.19(@babel/core@7.26.10) - esbuild: 0.25.2 + esbuild: 0.25.3 solid-js: 1.9.5 transitivePeerDependencies: - supports-color - esbuild-register@3.6.0(esbuild@0.25.2): + esbuild-register@3.6.0(esbuild@0.25.3): dependencies: debug: 4.4.0 - esbuild: 0.25.2 + esbuild: 0.25.3 transitivePeerDependencies: - supports-color @@ -23703,33 +24044,33 @@ snapshots: '@esbuild/win32-ia32': 0.25.1 '@esbuild/win32-x64': 0.25.1 - esbuild@0.25.2: + esbuild@0.25.3: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.2 - '@esbuild/android-arm': 0.25.2 - '@esbuild/android-arm64': 0.25.2 - '@esbuild/android-x64': 0.25.2 - '@esbuild/darwin-arm64': 0.25.2 - '@esbuild/darwin-x64': 0.25.2 - '@esbuild/freebsd-arm64': 0.25.2 - '@esbuild/freebsd-x64': 0.25.2 - '@esbuild/linux-arm': 0.25.2 - '@esbuild/linux-arm64': 0.25.2 - '@esbuild/linux-ia32': 0.25.2 - '@esbuild/linux-loong64': 0.25.2 - '@esbuild/linux-mips64el': 0.25.2 - '@esbuild/linux-ppc64': 0.25.2 - '@esbuild/linux-riscv64': 0.25.2 - '@esbuild/linux-s390x': 0.25.2 - '@esbuild/linux-x64': 0.25.2 - '@esbuild/netbsd-arm64': 0.25.2 - '@esbuild/netbsd-x64': 0.25.2 - '@esbuild/openbsd-arm64': 0.25.2 - '@esbuild/openbsd-x64': 0.25.2 - '@esbuild/sunos-x64': 0.25.2 - '@esbuild/win32-arm64': 0.25.2 - '@esbuild/win32-ia32': 0.25.2 - '@esbuild/win32-x64': 0.25.2 + '@esbuild/aix-ppc64': 0.25.3 + '@esbuild/android-arm': 0.25.3 + '@esbuild/android-arm64': 0.25.3 + '@esbuild/android-x64': 0.25.3 + '@esbuild/darwin-arm64': 0.25.3 + '@esbuild/darwin-x64': 0.25.3 + '@esbuild/freebsd-arm64': 0.25.3 + '@esbuild/freebsd-x64': 0.25.3 + '@esbuild/linux-arm': 0.25.3 + '@esbuild/linux-arm64': 0.25.3 + '@esbuild/linux-ia32': 0.25.3 + '@esbuild/linux-loong64': 0.25.3 + '@esbuild/linux-mips64el': 0.25.3 + '@esbuild/linux-ppc64': 0.25.3 + '@esbuild/linux-riscv64': 0.25.3 + '@esbuild/linux-s390x': 0.25.3 + '@esbuild/linux-x64': 0.25.3 + '@esbuild/netbsd-arm64': 0.25.3 + '@esbuild/netbsd-x64': 0.25.3 + '@esbuild/openbsd-arm64': 0.25.3 + '@esbuild/openbsd-x64': 0.25.3 + '@esbuild/sunos-x64': 0.25.3 + '@esbuild/win32-arm64': 0.25.3 + '@esbuild/win32-ia32': 0.25.3 + '@esbuild/win32-x64': 0.25.3 escalade@3.2.0: {} @@ -23815,7 +24156,7 @@ snapshots: eslint-plugin-react-compiler@19.0.0-beta-df7b47d-20241124(eslint@9.15.0(jiti@2.4.2)): dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.1 '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) eslint: 9.15.0(jiti@2.4.2) hermes-parser: 0.25.1 @@ -24392,7 +24733,7 @@ snapshots: transitivePeerDependencies: - encoding - fdir@6.4.3(picomatch@4.0.2): + fdir@6.4.4(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -25137,7 +25478,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.2)(webpack-cli@5.1.4) + webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) htmlparser2@6.1.0: dependencies: @@ -25613,7 +25954,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -25623,7 +25964,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.1 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.1 @@ -25667,7 +26008,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.14.1 + '@types/node': 22.15.3 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -25677,7 +26018,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.14.1 + '@types/node': 22.15.3 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -25698,7 +26039,7 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -25711,7 +26052,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.14.1 + '@types/node': 22.15.3 jest-util: 29.7.0 jest-regex-util@29.6.3: {} @@ -25719,10 +26060,10 @@ snapshots: jest-snapshot@29.7.0: dependencies: '@babel/core': 7.26.10 - '@babel/generator': 7.27.0 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) - '@babel/types': 7.27.0 + '@babel/generator': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.26.10) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.26.10) + '@babel/types': 7.27.1 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 @@ -25744,7 +26085,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.14.1 + '@types/node': 22.15.3 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -25761,13 +26102,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -25808,7 +26149,7 @@ snapshots: jscodeshift@0.14.0(@babel/preset-env@7.26.9(@babel/core@7.26.10)): dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.1 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.10) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.10) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.10) @@ -25833,7 +26174,7 @@ snapshots: jscodeshift@17.3.0(@babel/preset-env@7.26.9(@babel/core@7.26.10)): dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.27.0 + '@babel/parser': 7.27.1 '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) @@ -25999,10 +26340,10 @@ snapshots: klona@2.0.6: {} - knip@5.50.2(@types/node@22.14.1)(typescript@5.8.3): + knip@5.50.2(@types/node@22.15.3)(typescript@5.8.3): dependencies: '@nodelib/fs.walk': 1.2.8 - '@types/node': 22.14.1 + '@types/node': 22.15.3 easy-table: 1.2.0 enhanced-resolve: 5.18.1 fast-glob: 3.3.3 @@ -26357,14 +26698,14 @@ snapshots: magicast@0.2.11: dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 recast: 0.23.11 magicast@0.3.5: dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 source-map-js: 1.2.1 make-dir@2.1.0: @@ -26704,9 +27045,9 @@ snapshots: metro-source-map@0.81.0: dependencies: - '@babel/traverse': 7.27.0 - '@babel/traverse--for-generate-function-map': '@babel/traverse@7.27.0' - '@babel/types': 7.27.0 + '@babel/traverse': 7.27.1 + '@babel/traverse--for-generate-function-map': '@babel/traverse@7.27.1' + '@babel/types': 7.27.1 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.81.0 @@ -26732,9 +27073,9 @@ snapshots: metro-transform-plugins@0.81.0: dependencies: '@babel/core': 7.26.10 - '@babel/generator': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 + '@babel/generator': 7.27.1 + '@babel/template': 7.27.1 + '@babel/traverse': 7.27.1 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -26743,9 +27084,9 @@ snapshots: metro-transform-worker@0.81.0: dependencies: '@babel/core': 7.26.10 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/types': 7.27.1 flow-enums-runtime: 0.0.6 metro: 0.81.0 metro-babel-transformer: 0.81.0 @@ -26762,13 +27103,13 @@ snapshots: metro@0.81.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 '@babel/core': 7.26.10 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.1 + '@babel/template': 7.27.1 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -27212,12 +27553,12 @@ snapshots: msgpackr-extract: 3.0.3 optional: true - msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3): + msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.8(@types/node@22.14.1) + '@inquirer/confirm': 5.1.8(@types/node@22.15.3) '@mswjs/interceptors': 0.37.1 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 @@ -27307,9 +27648,35 @@ snapshots: nested-error-stacks@2.1.1: {} - next@15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0): + next@14.2.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0): + dependencies: + '@next/env': 14.2.28 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001707 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.1(react@18.3.1) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.28 + '@next/swc-darwin-x64': 14.2.28 + '@next/swc-linux-arm64-gnu': 14.2.28 + '@next/swc-linux-arm64-musl': 14.2.28 + '@next/swc-linux-x64-gnu': 14.2.28 + '@next/swc-linux-x64-musl': 14.2.28 + '@next/swc-win32-arm64-msvc': 14.2.28 + '@next/swc-win32-ia32-msvc': 14.2.28 + '@next/swc-win32-x64-msvc': 14.2.28 + sass: 1.86.0 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + next@15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.86.0): dependencies: - '@next/env': 15.1.2 + '@next/env': 15.3.1 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 @@ -27319,24 +27686,24 @@ snapshots: react-dom: 18.3.1(react@18.3.1) styled-jsx: 5.1.6(react@18.3.1) optionalDependencies: - '@next/swc-darwin-arm64': 15.1.2 - '@next/swc-darwin-x64': 15.1.2 - '@next/swc-linux-arm64-gnu': 15.1.2 - '@next/swc-linux-arm64-musl': 15.1.2 - '@next/swc-linux-x64-gnu': 15.1.2 - '@next/swc-linux-x64-musl': 15.1.2 - '@next/swc-win32-arm64-msvc': 15.1.2 - '@next/swc-win32-x64-msvc': 15.1.2 + '@next/swc-darwin-arm64': 15.3.1 + '@next/swc-darwin-x64': 15.3.1 + '@next/swc-linux-arm64-gnu': 15.3.1 + '@next/swc-linux-arm64-musl': 15.3.1 + '@next/swc-linux-x64-gnu': 15.3.1 + '@next/swc-linux-x64-musl': 15.3.1 + '@next/swc-win32-arm64-msvc': 15.3.1 + '@next/swc-win32-x64-msvc': 15.3.1 babel-plugin-react-compiler: 0.0.0 sass: 1.86.0 - sharp: 0.33.5 + sharp: 0.34.1 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.1.2(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0): + next@15.3.1(babel-plugin-react-compiler@0.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.0): dependencies: - '@next/env': 15.1.2 + '@next/env': 15.3.1 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 @@ -27346,17 +27713,17 @@ snapshots: react-dom: 19.0.0(react@19.0.0) styled-jsx: 5.1.6(react@19.0.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.1.2 - '@next/swc-darwin-x64': 15.1.2 - '@next/swc-linux-arm64-gnu': 15.1.2 - '@next/swc-linux-arm64-musl': 15.1.2 - '@next/swc-linux-x64-gnu': 15.1.2 - '@next/swc-linux-x64-musl': 15.1.2 - '@next/swc-win32-arm64-msvc': 15.1.2 - '@next/swc-win32-x64-msvc': 15.1.2 + '@next/swc-darwin-arm64': 15.3.1 + '@next/swc-darwin-x64': 15.3.1 + '@next/swc-linux-arm64-gnu': 15.3.1 + '@next/swc-linux-arm64-musl': 15.3.1 + '@next/swc-linux-x64-gnu': 15.3.1 + '@next/swc-linux-x64-musl': 15.3.1 + '@next/swc-win32-arm64-msvc': 15.3.1 + '@next/swc-win32-x64-msvc': 15.3.1 babel-plugin-react-compiler: 0.0.0 sass: 1.86.0 - sharp: 0.33.5 + sharp: 0.34.1 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -27367,14 +27734,14 @@ snapshots: dependencies: '@cloudflare/kv-asset-handler': 0.4.0 '@netlify/functions': 3.0.4 - '@rollup/plugin-alias': 5.1.1(rollup@4.39.0) - '@rollup/plugin-commonjs': 28.0.3(rollup@4.39.0) - '@rollup/plugin-inject': 5.0.5(rollup@4.39.0) - '@rollup/plugin-json': 6.1.0(rollup@4.39.0) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.39.0) - '@rollup/plugin-replace': 6.0.2(rollup@4.39.0) - '@rollup/plugin-terser': 0.4.4(rollup@4.39.0) - '@vercel/nft': 0.29.2(encoding@0.1.13)(rollup@4.39.0) + '@rollup/plugin-alias': 5.1.1(rollup@4.40.1) + '@rollup/plugin-commonjs': 28.0.3(rollup@4.40.1) + '@rollup/plugin-inject': 5.0.5(rollup@4.40.1) + '@rollup/plugin-json': 6.1.0(rollup@4.40.1) + '@rollup/plugin-node-resolve': 16.0.1(rollup@4.40.1) + '@rollup/plugin-replace': 6.0.2(rollup@4.40.1) + '@rollup/plugin-terser': 0.4.4(rollup@4.40.1) + '@vercel/nft': 0.29.2(encoding@0.1.13)(rollup@4.40.1) archiver: 7.0.1 c12: 3.0.2(magicast@0.3.5) chokidar: 4.0.3 @@ -27389,7 +27756,7 @@ snapshots: defu: 6.1.4 destr: 2.0.3 dot-prop: 9.0.0 - esbuild: 0.25.2 + esbuild: 0.25.3 escape-string-regexp: 5.0.0 etag: 1.8.1 exsolve: 1.0.4 @@ -27416,8 +27783,8 @@ snapshots: pkg-types: 2.1.0 pretty-bytes: 6.1.1 radix3: 1.1.2 - rollup: 4.39.0 - rollup-plugin-visualizer: 5.14.0(rollup@4.39.0) + rollup: 4.40.1 + rollup-plugin-visualizer: 5.14.0(rollup@4.40.1) scule: 1.3.0 semver: 7.7.1 serve-placeholder: 2.0.2 @@ -28078,7 +28445,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.2 + '@babel/code-frame': 7.27.1 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -29167,20 +29534,20 @@ snapshots: hash-base: 3.1.0 inherits: 2.0.4 - rollup-plugin-preserve-directives@0.4.0(rollup@4.39.0): + rollup-plugin-preserve-directives@0.4.0(rollup@4.40.1): dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.39.0) + '@rollup/pluginutils': 5.1.4(rollup@4.40.1) magic-string: 0.30.17 - rollup: 4.39.0 + rollup: 4.40.1 - rollup-plugin-visualizer@5.14.0(rollup@4.39.0): + rollup-plugin-visualizer@5.14.0(rollup@4.40.1): dependencies: open: 8.4.2 picomatch: 4.0.2 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rollup: 4.39.0 + rollup: 4.40.1 rollup@4.34.8: dependencies: @@ -29207,30 +29574,30 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.34.8 fsevents: 2.3.3 - rollup@4.39.0: + rollup@4.40.1: dependencies: '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.39.0 - '@rollup/rollup-android-arm64': 4.39.0 - '@rollup/rollup-darwin-arm64': 4.39.0 - '@rollup/rollup-darwin-x64': 4.39.0 - '@rollup/rollup-freebsd-arm64': 4.39.0 - '@rollup/rollup-freebsd-x64': 4.39.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.39.0 - '@rollup/rollup-linux-arm-musleabihf': 4.39.0 - '@rollup/rollup-linux-arm64-gnu': 4.39.0 - '@rollup/rollup-linux-arm64-musl': 4.39.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.39.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0 - '@rollup/rollup-linux-riscv64-gnu': 4.39.0 - '@rollup/rollup-linux-riscv64-musl': 4.39.0 - '@rollup/rollup-linux-s390x-gnu': 4.39.0 - '@rollup/rollup-linux-x64-gnu': 4.39.0 - '@rollup/rollup-linux-x64-musl': 4.39.0 - '@rollup/rollup-win32-arm64-msvc': 4.39.0 - '@rollup/rollup-win32-ia32-msvc': 4.39.0 - '@rollup/rollup-win32-x64-msvc': 4.39.0 + '@rollup/rollup-android-arm-eabi': 4.40.1 + '@rollup/rollup-android-arm64': 4.40.1 + '@rollup/rollup-darwin-arm64': 4.40.1 + '@rollup/rollup-darwin-x64': 4.40.1 + '@rollup/rollup-freebsd-arm64': 4.40.1 + '@rollup/rollup-freebsd-x64': 4.40.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.1 + '@rollup/rollup-linux-arm-musleabihf': 4.40.1 + '@rollup/rollup-linux-arm64-gnu': 4.40.1 + '@rollup/rollup-linux-arm64-musl': 4.40.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.1 + '@rollup/rollup-linux-riscv64-gnu': 4.40.1 + '@rollup/rollup-linux-riscv64-musl': 4.40.1 + '@rollup/rollup-linux-s390x-gnu': 4.40.1 + '@rollup/rollup-linux-x64-gnu': 4.40.1 + '@rollup/rollup-linux-x64-musl': 4.40.1 + '@rollup/rollup-win32-arm64-msvc': 4.40.1 + '@rollup/rollup-win32-ia32-msvc': 4.40.1 + '@rollup/rollup-win32-x64-msvc': 4.40.1 fsevents: 2.3.3 rooks@8.0.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): @@ -29532,6 +29899,34 @@ snapshots: '@img/sharp-win32-x64': 0.33.5 optional: true + sharp@0.34.1: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.7.1 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.1 + '@img/sharp-darwin-x64': 0.34.1 + '@img/sharp-libvips-darwin-arm64': 1.1.0 + '@img/sharp-libvips-darwin-x64': 1.1.0 + '@img/sharp-libvips-linux-arm': 1.1.0 + '@img/sharp-libvips-linux-arm64': 1.1.0 + '@img/sharp-libvips-linux-ppc64': 1.1.0 + '@img/sharp-libvips-linux-s390x': 1.1.0 + '@img/sharp-libvips-linux-x64': 1.1.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 + '@img/sharp-libvips-linuxmusl-x64': 1.1.0 + '@img/sharp-linux-arm': 0.34.1 + '@img/sharp-linux-arm64': 0.34.1 + '@img/sharp-linux-s390x': 0.34.1 + '@img/sharp-linux-x64': 0.34.1 + '@img/sharp-linuxmusl-arm64': 0.34.1 + '@img/sharp-linuxmusl-x64': 0.34.1 + '@img/sharp-wasm32': 0.34.1 + '@img/sharp-win32-ia32': 0.34.1 + '@img/sharp-win32-x64': 0.34.1 + optional: true + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -29737,9 +30132,9 @@ snapshots: solid-refresh@0.6.3(solid-js@1.9.5): dependencies: - '@babel/generator': 7.27.0 + '@babel/generator': 7.27.1 '@babel/helper-module-imports': 7.25.9 - '@babel/types': 7.27.0 + '@babel/types': 7.27.1 solid-js: 1.9.5 transitivePeerDependencies: - supports-color @@ -30020,6 +30415,11 @@ snapshots: structured-headers@0.4.1: {} + styled-jsx@5.1.1(react@18.3.1): + dependencies: + client-only: 0.0.1 + react: 18.3.1 + styled-jsx@5.1.6(react@18.3.1): dependencies: client-only: 0.0.1 @@ -30085,7 +30485,7 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 4.0.3 - fdir: 6.4.3(picomatch@4.0.2) + fdir: 6.4.4(picomatch@4.0.2) picocolors: 1.1.1 sade: 1.8.1 svelte: 5.26.1 @@ -30240,7 +30640,7 @@ snapshots: webpack-sources: 1.4.3 worker-farm: 1.7.0 - terser-webpack-plugin@5.3.11(esbuild@0.25.2)(webpack@5.98.0(esbuild@0.25.1)): + terser-webpack-plugin@5.3.11(esbuild@0.25.3)(webpack@5.98.0(esbuild@0.25.1)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 @@ -30249,18 +30649,18 @@ snapshots: terser: 5.39.0 webpack: 5.98.0(esbuild@0.25.1) optionalDependencies: - esbuild: 0.25.2 + esbuild: 0.25.3 - terser-webpack-plugin@5.3.11(esbuild@0.25.2)(webpack@5.98.0): + terser-webpack-plugin@5.3.11(esbuild@0.25.3)(webpack@5.98.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.98.0(esbuild@0.25.2)(webpack-cli@5.1.4) + webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) optionalDependencies: - esbuild: 0.25.2 + esbuild: 0.25.3 terser@4.8.1: dependencies: @@ -30329,9 +30729,9 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.12: + tinyglobby@0.2.13: dependencies: - fdir: 6.4.3(picomatch@4.0.2) + fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 tinypool@1.0.2: {} @@ -30438,35 +30838,35 @@ snapshots: tslib@2.8.1: {} - tsup-preset-solid@2.2.0(esbuild@0.25.2)(solid-js@1.9.5)(tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.14.1))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1)): + tsup-preset-solid@2.2.0(esbuild@0.25.3)(solid-js@1.9.5)(tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.15.3))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1)): dependencies: - esbuild-plugin-solid: 0.5.0(esbuild@0.25.2)(solid-js@1.9.5) - tsup: 8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.14.1))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1) + esbuild-plugin-solid: 0.5.0(esbuild@0.25.3)(solid-js@1.9.5) + tsup: 8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.15.3))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1) transitivePeerDependencies: - esbuild - solid-js - supports-color - tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.14.1))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1): + tsup@8.4.0(@microsoft/api-extractor@7.48.1(@types/node@22.15.3))(jiti@2.4.2)(postcss@8.5.3)(typescript@5.8.3)(yaml@2.6.1): dependencies: - bundle-require: 5.1.0(esbuild@0.25.2) + bundle-require: 5.1.0(esbuild@0.25.3) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.0 - esbuild: 0.25.2 + esbuild: 0.25.3 joycon: 3.1.1 picocolors: 1.1.1 postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.3)(yaml@2.6.1) resolve-from: 5.0.0 - rollup: 4.39.0 + rollup: 4.40.1 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.2 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 tree-kill: 1.2.2 optionalDependencies: - '@microsoft/api-extractor': 7.48.1(@types/node@22.14.1) + '@microsoft/api-extractor': 7.48.1(@types/node@22.15.3) postcss: 8.5.3 typescript: 5.8.3 transitivePeerDependencies: @@ -30688,7 +31088,7 @@ snapshots: pkg-types: 2.1.0 scule: 1.3.0 strip-literal: 3.0.0 - tinyglobby: 0.2.12 + tinyglobby: 0.2.13 unplugin: 2.2.2 unplugin-utils: 0.2.4 @@ -30939,11 +31339,11 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vinxi@0.5.3(@types/node@22.14.1)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1): + vinxi@0.5.3(@types/node@22.15.3)(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1): dependencies: '@babel/core': 7.26.10 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.26.10) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.26.10) '@types/micromatch': 4.0.9 '@vinxi/listhen': 1.5.6 boxen: 7.1.1 @@ -30973,7 +31373,7 @@ snapshots: unctx: 2.4.1 unenv: 1.10.0 unstorage: 1.15.0(db0@0.3.1)(idb-keyval@6.2.1)(ioredis@5.6.0) - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) zod: 3.24.2 transitivePeerDependencies: - '@azure/app-configuration' @@ -31017,13 +31417,13 @@ snapshots: - xml2js - yaml - vite-node@3.1.1(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1): + vite-node@3.1.1(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) transitivePeerDependencies: - '@types/node' - jiti @@ -31038,10 +31438,10 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.0.3(@types/node@22.14.1)(rollup@4.39.0)(typescript@5.8.3)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)): + vite-plugin-dts@4.0.3(@types/node@22.15.3)(rollup@4.40.1)(typescript@5.8.3)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)): dependencies: - '@microsoft/api-extractor': 7.47.4(@types/node@22.14.1) - '@rollup/pluginutils': 5.1.4(rollup@4.39.0) + '@microsoft/api-extractor': 7.47.4(@types/node@22.15.3) + '@rollup/pluginutils': 5.1.4(rollup@4.40.1) '@volar/typescript': 2.4.12 '@vue/language-core': 2.0.29(typescript@5.8.3) compare-versions: 6.1.1 @@ -31052,17 +31452,17 @@ snapshots: typescript: 5.8.3 vue-tsc: 2.0.29(typescript@5.8.3) optionalDependencies: - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-externalize-deps@0.8.0(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)): + vite-plugin-externalize-deps@0.8.0(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)): dependencies: - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)): + vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)): dependencies: '@babel/core': 7.26.10 '@types/babel__core': 7.20.5 @@ -31070,31 +31470,31 @@ snapshots: merge-anything: 5.1.7 solid-js: 1.9.5 solid-refresh: 0.6.3(solid-js@1.9.5) - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - vitefu: 1.0.6(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vitefu: 1.0.6(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) optionalDependencies: '@testing-library/jest-dom': 6.6.3 transitivePeerDependencies: - supports-color - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)): dependencies: debug: 4.4.0 globrex: 0.1.2 tsconfck: 3.1.5(typescript@5.8.3) optionalDependencies: - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color - typescript - vite@6.1.3(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1): + vite@6.1.3(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1): dependencies: esbuild: 0.24.2 postcss: 8.5.3 - rollup: 4.39.0 + rollup: 4.40.1 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 fsevents: 2.3.3 jiti: 2.4.2 less: 4.2.2 @@ -31103,13 +31503,13 @@ snapshots: terser: 5.39.0 yaml: 2.6.1 - vite@6.2.3(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1): + vite@6.2.3(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1): dependencies: - esbuild: 0.25.2 + esbuild: 0.25.3 postcss: 8.5.3 - rollup: 4.39.0 + rollup: 4.40.1 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 fsevents: 2.3.3 jiti: 2.4.2 less: 4.2.2 @@ -31118,13 +31518,16 @@ snapshots: terser: 5.39.0 yaml: 2.6.1 - vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1): + vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.6.1): dependencies: - esbuild: 0.25.2 + esbuild: 0.25.3 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 postcss: 8.5.3 - rollup: 4.39.0 + rollup: 4.40.1 + tinyglobby: 0.2.13 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 fsevents: 2.3.3 jiti: 2.4.2 less: 4.2.2 @@ -31133,13 +31536,16 @@ snapshots: terser: 5.39.0 yaml: 2.6.1 - vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1): + vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1): dependencies: - esbuild: 0.25.2 + esbuild: 0.25.3 + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 postcss: 8.5.3 - rollup: 4.39.0 + rollup: 4.40.1 + tinyglobby: 0.2.13 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.15.3 fsevents: 2.3.3 jiti: 2.4.2 less: 4.2.2 @@ -31148,14 +31554,14 @@ snapshots: terser: 5.39.0 yaml: 2.6.1 - vitefu@1.0.6(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)): + vitefu@1.0.6(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)): optionalDependencies: - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1): + vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.15.3)(jiti@2.4.2)(jsdom@25.0.1)(less@4.2.2)(lightningcss@1.29.2)(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1): dependencies: '@vitest/expect': 3.1.1 - '@vitest/mocker': 3.1.1(msw@2.6.6(@types/node@22.14.1)(typescript@5.8.3))(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) + '@vitest/mocker': 3.1.1(msw@2.6.6(@types/node@22.15.3)(typescript@5.8.3))(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1)) '@vitest/pretty-format': 3.1.1 '@vitest/runner': 3.1.1 '@vitest/snapshot': 3.1.1 @@ -31171,12 +31577,12 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) - vite-node: 3.1.1(@types/node@22.14.1)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) + vite-node: 3.1.1(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.86.0)(terser@5.39.0)(yaml@2.6.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 22.14.1 + '@types/node': 22.15.3 jsdom: 25.0.1 transitivePeerDependencies: - jiti @@ -31442,7 +31848,7 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.98.0(esbuild@0.25.2)(webpack-cli@5.1.4) + webpack: 5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4) webpack-merge: 5.10.0 webpack-dev-middleware@7.4.2(webpack@5.98.0(esbuild@0.25.1)): @@ -31573,7 +31979,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(esbuild@0.25.2)(webpack@5.98.0(esbuild@0.25.1)) + terser-webpack-plugin: 5.3.11(esbuild@0.25.3)(webpack@5.98.0(esbuild@0.25.1)) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -31581,7 +31987,7 @@ snapshots: - esbuild - uglify-js - webpack@5.98.0(esbuild@0.25.2)(webpack-cli@5.1.4): + webpack@5.98.0(esbuild@0.25.3)(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -31603,7 +32009,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(esbuild@0.25.2)(webpack@5.98.0) + terser-webpack-plugin: 5.3.11(esbuild@0.25.3)(webpack@5.98.0) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: