diff --git a/package-lock.json b/package-lock.json index cb8c14b1a0..085527f418 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,8 +24,8 @@ "@mui/material": "5.15.17", "@mui/x-data-grid": "6.19.11", "@react-hook/resize-observer": "1.2.6", - "@tanstack/react-query": "4.36.1", - "@tanstack/react-query-devtools": "4.36.1", + "@tanstack/react-query": "5.40.0", + "@tanstack/react-query-devtools": "5.40.0", "@types/react-lazy-load-image-component": "1.6.4", "abortcontroller-polyfill": "1.7.5", "blurhash": "2.0.5", @@ -4619,73 +4619,53 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@tanstack/match-sorter-utils": { - "version": "8.8.4", - "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.8.4.tgz", - "integrity": "sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw==", - "dependencies": { - "remove-accents": "0.4.2" - }, - "engines": { - "node": ">=12" - }, + "node_modules/@tanstack/query-core": { + "version": "5.40.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.40.0.tgz", + "integrity": "sha512-eD8K8jsOIq0Z5u/QbvOmfvKKE/XC39jA7yv4hgpl/1SRiU+J8QCIwgM/mEHuunQsL87dcvnHqSVLmf9pD4CiaA==", "funding": { "type": "github", - "url": "https://github.com/sponsors/kentcdodds" + "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@tanstack/query-core": { - "version": "4.36.1", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.36.1.tgz", - "integrity": "sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==", + "node_modules/@tanstack/query-devtools": { + "version": "5.37.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.37.1.tgz", + "integrity": "sha512-XcG4IIHIv0YQKrexTqo2zogQWR1Sz672tX2KsfE9kzB+9zhx44vRKH5si4WDILE1PIWQpStFs/NnrDQrBAUQpg==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/react-query": { - "version": "4.36.1", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.36.1.tgz", - "integrity": "sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==", + "version": "5.40.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.40.0.tgz", + "integrity": "sha512-iv/W0Axc4aXhFzkrByToE1JQqayxTPNotCoSCnarR/A1vDIHaoKpg7FTIfP3Ev2mbKn1yrxq0ZKYUdLEJxs6Tg==", "dependencies": { - "@tanstack/query-core": "4.36.1", - "use-sync-external-store": "^1.2.0" + "@tanstack/query-core": "5.40.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-native": "*" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } + "react": "^18.0.0" } }, "node_modules/@tanstack/react-query-devtools": { - "version": "4.36.1", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-4.36.1.tgz", - "integrity": "sha512-WYku83CKP3OevnYSG8Y/QO9g0rT75v1om5IvcWUwiUZJ4LanYGLVCZ8TdFG5jfsq4Ej/lu2wwDAULEUnRIMBSw==", + "version": "5.40.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.40.0.tgz", + "integrity": "sha512-JoQOQj/LKaHoHVMAh73R0pc4lIAHiZMV8L4DGHsTSvHcKi22LZmSC9aYBY9oMkqGpFtKmbspwrUIn55+czNSbA==", "dependencies": { - "@tanstack/match-sorter-utils": "^8.7.0", - "superjson": "^1.10.0", - "use-sync-external-store": "^1.2.0" + "@tanstack/query-devtools": "5.37.1" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "@tanstack/react-query": "^4.36.1", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@tanstack/react-query": "^5.40.0", + "react": "^18 || ^19" } }, "node_modules/@trysound/sax": { @@ -7423,20 +7403,6 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, - "node_modules/copy-anything": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "dependencies": { - "is-what": "^4.1.8" - }, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -12775,17 +12741,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-what": { - "version": "4.1.13", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.13.tgz", - "integrity": "sha512-Aoe8pT24sWzyoO0S2PTDyutGp9l7qYHyFtzYlC8hMLshyqV/minljBANT4f2hiS5OxnWvcKMiA5io+VaLMJ1oA==", - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, "node_modules/is-whitespace-character": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", @@ -17701,11 +17656,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remove-accents": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", - "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" - }, "node_modules/renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", @@ -21452,17 +21402,6 @@ "node": ">=6" } }, - "node_modules/superjson": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-1.12.3.tgz", - "integrity": "sha512-0j+U70KUtP8+roVPbwfqkyQI7lBt7ETnuA7KXbTDX3mCKiD/4fXs2ldKSMdt0MCfpTwiMxo20yFU3vu6ewETpQ==", - "dependencies": { - "copy-anything": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -22738,14 +22677,6 @@ "node": ">=0.10.0" } }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/usehooks-ts": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-3.1.0.tgz", @@ -26898,36 +26829,30 @@ "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", "dev": true }, - "@tanstack/match-sorter-utils": { - "version": "8.8.4", - "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.8.4.tgz", - "integrity": "sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw==", - "requires": { - "remove-accents": "0.4.2" - } - }, "@tanstack/query-core": { - "version": "4.36.1", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.36.1.tgz", - "integrity": "sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==" + "version": "5.40.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.40.0.tgz", + "integrity": "sha512-eD8K8jsOIq0Z5u/QbvOmfvKKE/XC39jA7yv4hgpl/1SRiU+J8QCIwgM/mEHuunQsL87dcvnHqSVLmf9pD4CiaA==" + }, + "@tanstack/query-devtools": { + "version": "5.37.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.37.1.tgz", + "integrity": "sha512-XcG4IIHIv0YQKrexTqo2zogQWR1Sz672tX2KsfE9kzB+9zhx44vRKH5si4WDILE1PIWQpStFs/NnrDQrBAUQpg==" }, "@tanstack/react-query": { - "version": "4.36.1", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.36.1.tgz", - "integrity": "sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==", + "version": "5.40.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.40.0.tgz", + "integrity": "sha512-iv/W0Axc4aXhFzkrByToE1JQqayxTPNotCoSCnarR/A1vDIHaoKpg7FTIfP3Ev2mbKn1yrxq0ZKYUdLEJxs6Tg==", "requires": { - "@tanstack/query-core": "4.36.1", - "use-sync-external-store": "^1.2.0" + "@tanstack/query-core": "5.40.0" } }, "@tanstack/react-query-devtools": { - "version": "4.36.1", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-4.36.1.tgz", - "integrity": "sha512-WYku83CKP3OevnYSG8Y/QO9g0rT75v1om5IvcWUwiUZJ4LanYGLVCZ8TdFG5jfsq4Ej/lu2wwDAULEUnRIMBSw==", + "version": "5.40.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.40.0.tgz", + "integrity": "sha512-JoQOQj/LKaHoHVMAh73R0pc4lIAHiZMV8L4DGHsTSvHcKi22LZmSC9aYBY9oMkqGpFtKmbspwrUIn55+czNSbA==", "requires": { - "@tanstack/match-sorter-utils": "^8.7.0", - "superjson": "^1.10.0", - "use-sync-external-store": "^1.2.0" + "@tanstack/query-devtools": "5.37.1" } }, "@trysound/sax": { @@ -29032,14 +28957,6 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, - "copy-anything": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "requires": { - "is-what": "^4.1.8" - } - }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -32872,11 +32789,6 @@ "get-intrinsic": "^1.1.1" } }, - "is-what": { - "version": "4.1.13", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.13.tgz", - "integrity": "sha512-Aoe8pT24sWzyoO0S2PTDyutGp9l7qYHyFtzYlC8hMLshyqV/minljBANT4f2hiS5OxnWvcKMiA5io+VaLMJ1oA==" - }, "is-whitespace-character": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", @@ -36291,11 +36203,6 @@ "mdast-util-to-markdown": "^0.6.0" } }, - "remove-accents": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", - "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" - }, "renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", @@ -39162,14 +39069,6 @@ } } }, - "superjson": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-1.12.3.tgz", - "integrity": "sha512-0j+U70KUtP8+roVPbwfqkyQI7lBt7ETnuA7KXbTDX3mCKiD/4fXs2ldKSMdt0MCfpTwiMxo20yFU3vu6ewETpQ==", - "requires": { - "copy-anything": "^3.0.2" - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -40085,12 +39984,6 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, - "use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "requires": {} - }, "usehooks-ts": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-3.1.0.tgz", diff --git a/package.json b/package.json index f9c6b5af89..fa5ba4b88a 100644 --- a/package.json +++ b/package.json @@ -85,8 +85,8 @@ "@mui/material": "5.15.17", "@mui/x-data-grid": "6.19.11", "@react-hook/resize-observer": "1.2.6", - "@tanstack/react-query": "4.36.1", - "@tanstack/react-query-devtools": "4.36.1", + "@tanstack/react-query": "5.40.0", + "@tanstack/react-query-devtools": "5.40.0", "@types/react-lazy-load-image-component": "1.6.4", "abortcontroller-polyfill": "1.7.5", "blurhash": "2.0.5", diff --git a/src/apps/experimental/components/library/ItemsView.tsx b/src/apps/experimental/components/library/ItemsView.tsx index de9d0c6d6f..e2aa480cc0 100644 --- a/src/apps/experimental/components/library/ItemsView.tsx +++ b/src/apps/experimental/components/library/ItemsView.tsx @@ -72,7 +72,7 @@ const ItemsView: FC = ({ const { isLoading, data: itemsResult, - isPreviousData, + isPlaceholderData, refetch } = useGetItemsViewByType( viewType, @@ -228,7 +228,7 @@ const ItemsView: FC = ({ )} @@ -312,7 +312,7 @@ const ItemsView: FC = ({ diff --git a/src/apps/experimental/components/library/Pagination.tsx b/src/apps/experimental/components/library/Pagination.tsx index 1e6a2ab261..513c96b2a3 100644 --- a/src/apps/experimental/components/library/Pagination.tsx +++ b/src/apps/experimental/components/library/Pagination.tsx @@ -13,14 +13,14 @@ interface PaginationProps { libraryViewSettings: LibraryViewSettings; setLibraryViewSettings: React.Dispatch>; totalRecordCount: number; - isPreviousData: boolean + isPlaceholderData: boolean } const Pagination: FC = ({ libraryViewSettings, setLibraryViewSettings, totalRecordCount, - isPreviousData + isPlaceholderData }) => { const limit = userSettings.libraryPageSize(undefined); const startIndex = libraryViewSettings.StartIndex ?? 0; @@ -65,7 +65,7 @@ const Pagination: FC = ({ @@ -74,7 +74,7 @@ const Pagination: FC = ({ = totalRecordCount || isPreviousData } + disabled={startIndex + limit >= totalRecordCount || isPlaceholderData } onClick={onNextPageClick} > diff --git a/src/hooks/useFetchItems.ts b/src/hooks/useFetchItems.ts index 710b8863a6..86f531194e 100644 --- a/src/hooks/useFetchItems.ts +++ b/src/hooks/useFetchItems.ts @@ -1,5 +1,7 @@ -import { AxiosRequestConfig } from 'axios'; -import type { BaseItemDto, ItemsApiGetItemsRequest, PlaylistsApiMoveItemRequest, TimerInfoDto } from '@jellyfin/sdk/lib/generated-client'; +import type { AxiosRequestConfig } from 'axios'; +import type { ItemsApiGetItemsRequest, PlaylistsApiMoveItemRequest } from '@jellyfin/sdk/lib/generated-client'; +import type { BaseItemDto } from '@jellyfin/sdk/lib/generated-client/models/base-item-dto'; +import type { TimerInfoDto } from '@jellyfin/sdk/lib/generated-client/models/timer-info-dto'; import type { BaseItemKind } from '@jellyfin/sdk/lib/generated-client/models/base-item-kind'; import { ImageType } from '@jellyfin/sdk/lib/generated-client/models/image-type'; import { ItemFields } from '@jellyfin/sdk/lib/generated-client/models/item-fields'; @@ -17,16 +19,16 @@ import { getUserLibraryApi } from '@jellyfin/sdk/lib/utils/api/user-library-api' import { getPlaylistsApi } from '@jellyfin/sdk/lib/utils/api/playlists-api'; import { getLiveTvApi } from '@jellyfin/sdk/lib/utils/api/live-tv-api'; import { getPlaystateApi } from '@jellyfin/sdk/lib/utils/api/playstate-api'; -import { useMutation, useQuery } from '@tanstack/react-query'; +import { keepPreviousData, useMutation, useQuery } from '@tanstack/react-query'; import datetime from 'scripts/datetime'; import globalize from 'scripts/globalize'; -import { JellyfinApiContext, useApi } from './useApi'; +import { type JellyfinApiContext, useApi } from './useApi'; import { getAlphaPickerQuery, getFieldsQuery, getFiltersQuery, getLimitQuery } from 'utils/items'; import { getProgramSections, getSuggestionSections } from 'utils/sections'; -import { LibraryViewSettings, ParentId } from 'types/library'; +import type { LibraryViewSettings, ParentId } from 'types/library'; +import { type Section, type SectionType, SectionApiMethod } from 'types/sections'; import { LibraryTab } from 'types/libraryTab'; -import { Section, SectionApiMethod, SectionType } from 'types/sections'; const fetchGetItems = async ( currentApi: JellyfinApiContext, @@ -59,7 +61,7 @@ export const useGetItems = (parametersOptions: ItemsApiGetItemsRequest) => { ], queryFn: ({ signal }) => fetchGetItems(currentApi, parametersOptions, { signal }), - cacheTime: parametersOptions.sortBy?.includes(ItemSortBy.Random) ? 0 : undefined + gcTime: parametersOptions.sortBy?.includes(ItemSortBy.Random) ? 0 : undefined }); }; @@ -363,7 +365,7 @@ export const useGetItemsViewByType = ( { signal } ), refetchOnWindowFocus: false, - keepPreviousData : true, + placeholderData : keepPreviousData, enabled: [ LibraryTab.Movies, diff --git a/src/hooks/useItem.ts b/src/hooks/useItem.ts index ab72e1928f..14af8b545a 100644 --- a/src/hooks/useItem.ts +++ b/src/hooks/useItem.ts @@ -1,10 +1,8 @@ import type { Api } from '@jellyfin/sdk/lib/api'; import { getUserLibraryApi } from '@jellyfin/sdk/lib/utils/api/user-library-api'; -import { useQuery } from '@tanstack/react-query'; +import { queryOptions, useQuery } from '@tanstack/react-query'; import type { AxiosRequestConfig } from 'axios'; -import { queryOptions } from 'utils/query/queryOptions'; - import { useApi } from './useApi'; const fetchItem = async ( diff --git a/src/hooks/useSystemInfo.ts b/src/hooks/useSystemInfo.ts index fda74f1439..9fed3dd3f6 100644 --- a/src/hooks/useSystemInfo.ts +++ b/src/hooks/useSystemInfo.ts @@ -1,10 +1,9 @@ -import { useQuery } from '@tanstack/react-query'; +import { queryOptions, useQuery } from '@tanstack/react-query'; import type { Api } from '@jellyfin/sdk'; import { getSystemApi } from '@jellyfin/sdk/lib/utils/api/system-api'; import type { AxiosRequestConfig } from 'axios'; import { useApi } from './useApi'; -import { queryOptions } from 'utils/query/queryOptions'; const fetchSystemInfo = async ( api?: Api, diff --git a/src/hooks/useUserViews.ts b/src/hooks/useUserViews.ts index c6cd2e1375..77fbd4d60a 100644 --- a/src/hooks/useUserViews.ts +++ b/src/hooks/useUserViews.ts @@ -1,11 +1,9 @@ import type { Api } from '@jellyfin/sdk/lib/api'; import type { UserViewsApiGetUserViewsRequest } from '@jellyfin/sdk/lib/generated-client/api/user-views-api'; import { getUserViewsApi } from '@jellyfin/sdk/lib/utils/api/user-views-api'; -import { useQuery } from '@tanstack/react-query'; +import { queryOptions, useQuery } from '@tanstack/react-query'; import type { AxiosRequestConfig } from 'axios'; -import { queryOptions } from 'utils/query/queryOptions'; - import { useApi } from './useApi'; const fetchUserViews = async ( diff --git a/src/utils/query/queryOptions.ts b/src/utils/query/queryOptions.ts deleted file mode 100644 index 3af7d9efc6..0000000000 --- a/src/utils/query/queryOptions.ts +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) 2021-2024 Tanner Linsley -// -// This software is released under the MIT License. -// https://opensource.org/licenses/MIT - -/** - * Backport of the `queryOptions` utility function for react-query v4. - * Upgrading to v5 requires React 18. - */ - -import type { QueryKey, UseQueryOptions } from '@tanstack/react-query'; - -export type UndefinedInitialDataOptions< - TQueryFnData = unknown, - TError = unknown, - TData = TQueryFnData, - TQueryKey extends QueryKey = QueryKey, -> = UseQueryOptions & { - initialData?: undefined -}; - -type NonUndefinedGuard = T extends undefined ? never : T; - -export type DefinedInitialDataOptions< - TQueryFnData = unknown, - TError = unknown, - TData = TQueryFnData, - TQueryKey extends QueryKey = QueryKey, -> = UseQueryOptions & { - initialData: - | NonUndefinedGuard - | (() => NonUndefinedGuard) -}; - -export function queryOptions< - TQueryFnData = unknown, - TError = unknown, - TData = TQueryFnData, - TQueryKey extends QueryKey = QueryKey, ->( - options: UndefinedInitialDataOptions, -): UndefinedInitialDataOptions & { - queryKey: TQueryKey -}; - -export function queryOptions< - TQueryFnData = unknown, - TError = unknown, - TData = TQueryFnData, - TQueryKey extends QueryKey = QueryKey, ->( - options: DefinedInitialDataOptions, -): DefinedInitialDataOptions & { - queryKey: TQueryKey -}; - -export function queryOptions(options: unknown) { - return options; -} diff --git a/webpack.common.js b/webpack.common.js index e7e5446c7e..81e2e0e276 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -180,19 +180,16 @@ const config = { path.resolve(__dirname, 'node_modules/@react-hook/passive-layout-effect'), path.resolve(__dirname, 'node_modules/@react-hook/resize-observer'), path.resolve(__dirname, 'node_modules/@remix-run/router'), - path.resolve(__dirname, 'node_modules/@tanstack/match-sorter-utils'), path.resolve(__dirname, 'node_modules/@tanstack/query-core'), path.resolve(__dirname, 'node_modules/@tanstack/react-query'), path.resolve(__dirname, 'node_modules/@uupaa/dynamic-import-polyfill'), path.resolve(__dirname, 'node_modules/axios'), path.resolve(__dirname, 'node_modules/blurhash'), path.resolve(__dirname, 'node_modules/compare-versions'), - path.resolve(__dirname, 'node_modules/copy-anything'), path.resolve(__dirname, 'node_modules/date-fns'), path.resolve(__dirname, 'node_modules/dom7'), path.resolve(__dirname, 'node_modules/epubjs'), path.resolve(__dirname, 'node_modules/flv.js'), - path.resolve(__dirname, 'node_modules/is-what'), path.resolve(__dirname, 'node_modules/libarchive.js'), path.resolve(__dirname, 'node_modules/linkify-it'), path.resolve(__dirname, 'node_modules/markdown-it'),