From e11c30e4f57f7bdb699c6563a7c9de67dfee87d1 Mon Sep 17 00:00:00 2001 From: Christian Fehmer Date: Mon, 26 Oct 2026 09:51:40 +0100 Subject: [PATCH 1/3] chore: update @tanstack/solid-db, query-db-collection and solid-query to latest --- frontend/package.json | 6 +- frontend/src/ts/ape/server-configuration.ts | 2 +- frontend/src/ts/collections/ape-keys.ts | 16 +-- frontend/src/ts/collections/connections.ts | 16 +-- frontend/src/ts/collections/custom-themes.ts | 12 +-- frontend/src/ts/collections/inbox.ts | 8 +- frontend/src/ts/collections/presets.ts | 12 +-- .../ts/collections/result-filter-presets.ts | 8 +- frontend/src/ts/collections/results.ts | 21 ++-- frontend/src/ts/collections/tags.ts | 32 +++--- .../pages/leaderboard/LeaderboardPage.tsx | 16 +-- .../pages/profile/ProfileSearchPage.tsx | 2 +- frontend/src/ts/router/routes.ts | 36 ++++--- pnpm-lock.yaml | 97 +++++++------------ 14 files changed, 137 insertions(+), 147 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index a538922ba713..7b62ddf2fae7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -39,11 +39,11 @@ "@solid-primitives/transition-group": "1.1.2", "@solidjs/meta": "0.29.4", "@tanstack/pacer-lite": "0.2.2", - "@tanstack/query-db-collection": "1.0.40", - "@tanstack/solid-db": "0.2.22", + "@tanstack/query-db-collection": "1.4.8", + "@tanstack/solid-db": "0.3.12", "@tanstack/solid-form": "1.33.0", "@tanstack/solid-hotkeys": "0.10.0", - "@tanstack/solid-query": "5.101.0", + "@tanstack/solid-query": "5.104.5", "@tanstack/solid-router": "1.170.38", "@tanstack/solid-table": "8.21.3", "@ts-rest/core": "3.52.1", diff --git a/frontend/src/ts/ape/server-configuration.ts b/frontend/src/ts/ape/server-configuration.ts index c63100950238..9cf6319a1b26 100644 --- a/frontend/src/ts/ape/server-configuration.ts +++ b/frontend/src/ts/ape/server-configuration.ts @@ -19,7 +19,7 @@ export function get(): Configuration | undefined { export async function sync(): Promise { try { - await queryClient.fetchQuery(getServerConfigurationQueryOptions()); + await queryClient.query(getServerConfigurationQueryOptions()); resolve(true); } catch (e) { reject(e); diff --git a/frontend/src/ts/collections/ape-keys.ts b/frontend/src/ts/collections/ape-keys.ts index f99cfa084e31..a4ebff64ef86 100644 --- a/frontend/src/ts/collections/ape-keys.ts +++ b/frontend/src/ts/collections/ape-keys.ts @@ -108,7 +108,7 @@ const actions = { name: replaceUnderscoresWithSpaces(name), }; - apeKeysCollection.utils.writeInsert(newKey); + await apeKeysCollection.utils.writeInsert(newKey); setLastGeneratedApeKey(response.body.data.apeKey); }, @@ -129,7 +129,7 @@ const actions = { throw new Error(`Failed to update key: ${response.body.message}`); } - apeKeysCollection.utils.writeUpdate({ _id: apeKeyId, enabled }); + await apeKeysCollection.utils.writeUpdate({ _id: apeKeyId, enabled }); showSuccessNotification(`Key ${enabled ? "active" : "inactive"}`); }, @@ -150,7 +150,7 @@ const actions = { throw new Error(`Failed to update key: ${response.body.message}`); } - apeKeysCollection.utils.writeUpdate({ + await apeKeysCollection.utils.writeUpdate({ _id: apeKeyId, name: replaceUnderscoresWithSpaces(name), }); @@ -166,7 +166,7 @@ const actions = { throw new Error(`Failed to delete key: ${response.body.message}`); } - apeKeysCollection.utils.writeDelete(apeKeyId); + await apeKeysCollection.utils.writeDelete(apeKeyId); }, }), }; @@ -175,26 +175,26 @@ export async function insertApeKey( params: ActionType["insertKey"], ): Promise { const transaction = actions.insertKey(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function updateApeKeyEnabled( params: ActionType["setEnabled"], ): Promise { const transaction = actions.setEnabled(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function renameApeKey( params: ActionType["rename"], ): Promise { const transaction = actions.rename(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function removeApeKey( params: ActionType["remove"], ): Promise { const transaction = actions.remove(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } diff --git a/frontend/src/ts/collections/connections.ts b/frontend/src/ts/collections/connections.ts index 841df6f21384..9fc6322f5228 100644 --- a/frontend/src/ts/collections/connections.ts +++ b/frontend/src/ts/collections/connections.ts @@ -122,7 +122,7 @@ const actions = { `Failed to accept connection: ${response.body.message}`, ); } - connectionsCollection.utils.writeUpdate({ + await connectionsCollection.utils.writeUpdate({ _id: id, status: "accepted", }); @@ -142,7 +142,7 @@ const actions = { if (response.status !== 200) { throw new Error(`Failed to block connection: ${response.body.message}`); } - connectionsCollection.utils.writeUpdate({ + await connectionsCollection.utils.writeUpdate({ _id: id, status: "blocked", }); @@ -159,7 +159,7 @@ const actions = { `Failed to reject connection: ${response.body.message}`, ); } - connectionsCollection.utils.writeDelete(id); + await connectionsCollection.utils.writeDelete(id); await invalidateFriendsList(); }, @@ -180,7 +180,7 @@ const actions = { const response = await Ape.connections.create({ body: { receiverName } }); if (response.status === 200) { - connectionsCollection.utils.writeInsert(response.body.data); + await connectionsCollection.utils.writeInsert(response.body.data); showNoticeNotification(`Request sent to ${receiverName}`); } else { throw new Error(`Failed to add connection: ${response.body.message}`); @@ -204,28 +204,28 @@ export async function acceptConnection( params: ActionType["acceptConnection"], ): Promise { const transaction = actions.acceptConnection(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function rejectConnection( params: ActionType["rejectConnection"], ): Promise { const transaction = actions.rejectConnection(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function blockConnection( params: ActionType["blockConnection"], ): Promise { const transaction = actions.blockConnection(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function addConnection( params: ActionType["addConnection"], ): Promise { const transaction = actions.addConnection(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export function hasConnection( diff --git a/frontend/src/ts/collections/custom-themes.ts b/frontend/src/ts/collections/custom-themes.ts index 79467d8befd4..1d1538d887d7 100644 --- a/frontend/src/ts/collections/custom-themes.ts +++ b/frontend/src/ts/collections/custom-themes.ts @@ -84,7 +84,7 @@ const actions = { throw new Error("Failed to add custom theme: No data returned"); } - customThemesCollection.utils.writeInsert({ + await customThemesCollection.utils.writeInsert({ _id: response.body.data._id, name, colors, @@ -108,7 +108,7 @@ const actions = { ); } - customThemesCollection.utils.writeUpdate({ + await customThemesCollection.utils.writeUpdate({ _id: themeId, name, colors, @@ -128,7 +128,7 @@ const actions = { `Failed to delete custom theme: ${response.body.message}`, ); } - customThemesCollection.utils.writeDelete(themeId); + await customThemesCollection.utils.writeDelete(themeId); }, }), }; @@ -149,21 +149,21 @@ export async function addCustomTheme( params: ActionType["addCustomTheme"], ): Promise { const transaction = actions.addCustomTheme(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function editCustomTheme( params: ActionType["editCustomTheme"], ): Promise { const transaction = actions.editCustomTheme(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function deleteCustomTheme( params: ActionType["deleteCustomTheme"], ): Promise { const transaction = actions.deleteCustomTheme(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } /** diff --git a/frontend/src/ts/collections/inbox.ts b/frontend/src/ts/collections/inbox.ts index 812d6a95452e..45bd97a599b3 100644 --- a/frontend/src/ts/collections/inbox.ts +++ b/frontend/src/ts/collections/inbox.ts @@ -163,12 +163,12 @@ async function flushPendingChanges({ throw new Error(`Error updating user inbox: ${response.body.message}`); } - inboxCollection.utils.writeBatch(() => { - updatedStatus.deleted?.forEach((deleted) => - inboxCollection.utils.writeDelete(deleted.id), + await inboxCollection.utils.writeBatch(() => { + updatedStatus.deleted?.forEach( + (deleted) => void inboxCollection.utils.writeDelete(deleted.id), ); updatedStatus.read?.forEach((read) => { - inboxCollection.utils.writeUpdate(read); + void inboxCollection.utils.writeUpdate(read); }); }); diff --git a/frontend/src/ts/collections/presets.ts b/frontend/src/ts/collections/presets.ts index e803098f0a99..664c692205db 100644 --- a/frontend/src/ts/collections/presets.ts +++ b/frontend/src/ts/collections/presets.ts @@ -100,7 +100,7 @@ const actions = { settingGroups, }; - presetsCollection.utils.writeInsert(newPreset); + await presetsCollection.utils.writeInsert(newPreset); }, }), editPreset: createOptimisticAction({ @@ -138,7 +138,7 @@ const actions = { } // if this is missing getPreset is out of sync - presetsCollection.utils.writeUpdate({ + await presetsCollection.utils.writeUpdate({ _id: presetId, name: name.replace(/_/g, " "), ...(config !== undefined && { config }), @@ -157,7 +157,7 @@ const actions = { if (response.status !== 200) { throw new Error(`Failed to delete preset: ${response.body.message}`); } - presetsCollection.utils.writeDelete(presetId); + await presetsCollection.utils.writeDelete(presetId); }, }), }; @@ -181,21 +181,21 @@ export async function addPreset( params: ActionType["addPreset"], ): Promise { const transaction = actions.addPreset(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function editPreset( params: ActionType["editPreset"], ): Promise { const transaction = actions.editPreset(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function deletePreset( params: ActionType["deletePreset"], ): Promise { const transaction = actions.deletePreset(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } /** diff --git a/frontend/src/ts/collections/result-filter-presets.ts b/frontend/src/ts/collections/result-filter-presets.ts index 5aad875f992d..72a2336ca663 100644 --- a/frontend/src/ts/collections/result-filter-presets.ts +++ b/frontend/src/ts/collections/result-filter-presets.ts @@ -90,7 +90,7 @@ const actions = { name, }; - resultFilterPresetsCollection.utils.writeInsert(newPreset); + await resultFilterPresetsCollection.utils.writeInsert(newPreset); }, }), deleteResultFilterPreset: createOptimisticAction< @@ -110,7 +110,7 @@ const actions = { ); } - resultFilterPresetsCollection.utils.writeDelete(presetId); + await resultFilterPresetsCollection.utils.writeDelete(presetId); }, }), }; @@ -119,12 +119,12 @@ export async function insertResultFilterPreset( params: ActionType["insertResultFilterPreset"], ): Promise { const transaction = actions.insertResultFilterPreset(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function deleteResultFilterPreset( params: ActionType["deleteResultFilterPreset"], ): Promise { const transaction = actions.deleteResultFilterPreset(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } diff --git a/frontend/src/ts/collections/results.ts b/frontend/src/ts/collections/results.ts index d33e5c71e20f..16ad4e92fdb8 100644 --- a/frontend/src/ts/collections/results.ts +++ b/frontend/src/ts/collections/results.ts @@ -319,7 +319,7 @@ const actions = { ); }); - resultsCollection.utils.writeUpdate({ + await resultsCollection.utils.writeUpdate({ _id: resultId, tags: newTagIds, }); @@ -329,7 +329,7 @@ const actions = { }), insertLocalResult: createOptimisticAction({ onMutate: ({ result }) => { - resultsCollection.utils.writeInsert(normalizeResult(result)); + void resultsCollection.utils.writeInsert(normalizeResult(result)); }, mutationFn: async () => { //we don't sync the changes back to the backend here, it is done already @@ -341,7 +341,7 @@ const actions = { for (const result of [...resultsCollection.values()].filter((it) => it.tags.includes(tagId), )) { - resultsCollection.utils.writeUpdate({ + void resultsCollection.utils.writeUpdate({ ...result, tags: result.tags.filter((it) => it !== tagId), }); @@ -401,7 +401,7 @@ export async function updateTags( } const transaction = actions.updateTags(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function insertLocalResult( @@ -412,7 +412,7 @@ export async function insertLocalResult( return; } const transaction = actions.insertLocalResult(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function deleteLocalTag( @@ -423,7 +423,7 @@ export async function deleteLocalTag( return; } const transaction = actions.deleteLocalTag(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } // oxlint-disable-next-line typescript/explicit-function-return-type @@ -612,7 +612,7 @@ export function useUserAverage10LiveQuery(options: { const activeTagsQuery = useActiveTagsLiveQuery(); - return useLiveQuery((q) => { + const average = useLiveQuery((q) => { //disable query if (!isAuthenticated()) return undefined; if (!options.isEnabled()) return undefined; @@ -629,6 +629,13 @@ export function useUserAverage10LiveQuery(options: { .select(({ last10 }) => ({ wpm: avg(last10.wpm), acc: avg(last10.acc) })) .findOne(); }); + + //a single-result live query represents its empty state as an empty array + return createMemo(() => { + const row = average(); + if (row === undefined || Array.isArray(row)) return undefined; + return row; + }); } export async function getUserAverage10Once( diff --git a/frontend/src/ts/collections/tags.ts b/frontend/src/ts/collections/tags.ts index 9855b8545ef3..7ed0110b56c7 100644 --- a/frontend/src/ts/collections/tags.ts +++ b/frontend/src/ts/collections/tags.ts @@ -150,7 +150,7 @@ const actions = { active: false, }; - tagsCollection.utils.writeInsert(newTag); + await tagsCollection.utils.writeInsert(newTag); updateTagsInFilterStorage( [...tagsCollection.values()] .filter((it) => !isTempId(it._id)) @@ -172,7 +172,7 @@ const actions = { throw new Error(`Failed to update tag: ${response.body.message}`); } - tagsCollection.utils.writeUpdate({ + await tagsCollection.utils.writeUpdate({ _id: tagId, name: newName.replace(/_/g, " "), }); @@ -198,7 +198,7 @@ const actions = { throw new Error(`Failed to clear tag PBs: ${response.body.message}`); } - tagsCollection.utils.writeUpdate({ + await tagsCollection.utils.writeUpdate({ _id: tagId, personalBests: { time: {}, @@ -221,7 +221,7 @@ const actions = { if (response.status !== 200) { throw new Error(`Failed to delete tag: ${response.body.message}`); } - tagsCollection.utils.writeDelete(tagId); + await tagsCollection.utils.writeDelete(tagId); updateTagsInFilterStorage( [...tagsCollection.values()].map((it) => it._id), ); @@ -231,7 +231,7 @@ const actions = { onMutate: ({ tagId, noSave }) => { const tag = tagsCollection.get(tagId); if (tag === undefined) return; - tagsCollection.utils.writeUpdate({ ...tag, active: !tag.active }); + void tagsCollection.utils.writeUpdate({ ...tag, active: !tag.active }); if (!noSave) saveActiveToLocalStorage(); }, mutationFn: async () => { @@ -242,7 +242,7 @@ const actions = { onMutate: ({ tagId, active, noSave }) => { const tag = tagsCollection.get(tagId); if (tag === undefined) return; - tagsCollection.utils.writeUpdate({ ...tag, active }); + void tagsCollection.utils.writeUpdate({ ...tag, active }); if (!noSave) saveActiveToLocalStorage(); }, mutationFn: async () => { @@ -251,10 +251,10 @@ const actions = { }), clearActiveTags: createOptimisticAction({ onMutate: ({ noSave }) => { - tagsCollection.utils.writeBatch(() => { + void tagsCollection.utils.writeBatch(() => { tagsCollection.forEach((tag) => { if (tag.active) { - tagsCollection.utils.writeUpdate({ ...tag, active: false }); + void tagsCollection.utils.writeUpdate({ ...tag, active: false }); } }); }); @@ -276,49 +276,49 @@ export async function insertTag( params: ActionType["insertTag"], ): Promise { const transaction = actions.insertTag(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function updateTagName( params: ActionType["updateTagName"], ): Promise { const transaction = actions.updateTagName(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function clearTagPBs( params: ActionType["clearTagPBs"], ): Promise { const transaction = actions.clearTagPBs(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function deleteTag( params: ActionType["deleteTag"], ): Promise { const transaction = actions.deleteTag(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function toggleTagActive( params: ActionType["toggleTagActive"], ): Promise { const transaction = actions.toggleTagActive(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function setTagActive( params: ActionType["setTagActive"], ): Promise { const transaction = actions.setTagActive(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } export async function clearActiveTags( params: ActionType["clearActiveTags"] = {}, ): Promise { const transaction = actions.clearActiveTags(params); - await transaction.isPersisted.promise; + await transaction.when("settled"); } function getTags(): TagItem[] { @@ -478,7 +478,7 @@ export function saveLocalTagPB( // using utils.writeUpdate instead of collection.update because we dont need to send this to the API // the result saving already updates the tag pb in the db - tagsCollection.utils.writeUpdate(tag); + void tagsCollection.utils.writeUpdate(tag); } export function reconcileLocalTagPB( diff --git a/frontend/src/ts/components/pages/leaderboard/LeaderboardPage.tsx b/frontend/src/ts/components/pages/leaderboard/LeaderboardPage.tsx index 2735701c7512..c339431b19de 100644 --- a/frontend/src/ts/components/pages/leaderboard/LeaderboardPage.tsx +++ b/frontend/src/ts/components/pages/leaderboard/LeaderboardPage.tsx @@ -1,4 +1,4 @@ -import { useQuery } from "@tanstack/solid-query"; +import { noop, useQuery } from "@tanstack/solid-query"; import { createEffect, createSignal, @@ -51,12 +51,14 @@ export function LeaderboardPage(): JSXElement { //prefetch next page createEffect(() => { - void queryClient.prefetchQuery( - getLeaderboardQueryOptions({ - ...getSelection(), - page: getPage() + 1, - }), - ); + void queryClient + .query({ + ...getLeaderboardQueryOptions({ + ...getSelection(), + page: getPage() + 1, + }), + }) + .catch(noop); }); //go to the last page if the current page is past it diff --git a/frontend/src/ts/components/pages/profile/ProfileSearchPage.tsx b/frontend/src/ts/components/pages/profile/ProfileSearchPage.tsx index de268815b911..43a09b56d297 100644 --- a/frontend/src/ts/components/pages/profile/ProfileSearchPage.tsx +++ b/frontend/src/ts/components/pages/profile/ProfileSearchPage.tsx @@ -63,7 +63,7 @@ export function ProfileSearchPage(): JSXElement { onChangeAsyncDebounceMs: 1000, onChangeAsync: async (field) => { try { - const result = await queryClient.fetchQuery( + const result = await queryClient.query( getUserProfile(field.value), ); return result !== null ? undefined : "Unknown user"; diff --git a/frontend/src/ts/router/routes.ts b/frontend/src/ts/router/routes.ts index a80d2bb62d02..76f81aaa690c 100644 --- a/frontend/src/ts/router/routes.ts +++ b/frontend/src/ts/router/routes.ts @@ -1,6 +1,6 @@ // The route tree: every page with its guards and loaders -import type { QueryClient } from "@tanstack/solid-query"; +import { noop, type QueryClient } from "@tanstack/solid-query"; import { createRootRouteWithContext, createRoute, @@ -240,12 +240,17 @@ const leaderboards = createRoute({ // background data: start the fetches, the page shows its section loaders loader: ({ context: { queryClient, auth }, deps }) => { const selection = toSelection(deps); - void queryClient.prefetchQuery(getServerConfigurationQueryOptions()); - void queryClient.prefetchQuery( - getLeaderboardQueryOptions({ ...selection, page: (deps.page ?? 1) - 1 }), - ); + void queryClient.query(getServerConfigurationQueryOptions()).catch(noop); + void queryClient + .query( + getLeaderboardQueryOptions({ + ...selection, + page: (deps.page ?? 1) - 1, + }), + ) + .catch(noop); if (auth.isSignedIn()) { - void queryClient.prefetchQuery(getRankQueryOptions(selection)); + void queryClient.query(getRankQueryOptions(selection)).catch(noop); } }, }); @@ -257,10 +262,10 @@ const about = createRoute({ component: createRouterPage(AboutPage), // background data: start the fetches, the page shows its section loaders loader: ({ context: { queryClient } }) => { - void queryClient.prefetchQuery(getContributorsQueryOptions()); - void queryClient.prefetchQuery(getSupportersQueryOptions()); - void queryClient.prefetchQuery(getTypingStatsQueryOptions()); - void queryClient.prefetchQuery(getSpeedHistogramQueryOptions()); + void queryClient.query(getContributorsQueryOptions()).catch(noop); + void queryClient.query(getSupportersQueryOptions()).catch(noop); + void queryClient.query(getTypingStatsQueryOptions()).catch(noop); + void queryClient.query(getSpeedHistogramQueryOptions()).catch(noop); }, }); @@ -280,7 +285,7 @@ const login = createRoute({ beforeLoad: ({ context }) => signedOutOnly(context.auth), // background data: start the fetch, the page shows its section loaders loader: ({ context: { queryClient } }) => { - void queryClient.prefetchQuery(getServerConfigurationQueryOptions()); + void queryClient.query(getServerConfigurationQueryOptions()).catch(noop); }, }); @@ -341,7 +346,7 @@ const profile = createRoute({ component: createRouterPage(ProfilePage), // background data: start the fetch, the page shows its section loaders loader: ({ context: { queryClient }, params }) => { - void queryClient.prefetchQuery(getUserProfile(params.uidOrName)); + void queryClient.query(getUserProfile(params.uidOrName)).catch(noop); }, }); @@ -368,9 +373,10 @@ const friends = createRoute({ loader: async (loader) => { await runRouteLoadingStep(loader, async () => { await Promise.all([ - loader.context.queryClient.ensureQueryData( - getServerConfigurationQueryOptions(), - ), + loader.context.queryClient.query({ + ...getServerConfigurationQueryOptions(), + staleTime: "static", + }), waitForConnectionsReady(), ]); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b0cc32539f9a..8ae24f0060fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -325,11 +325,11 @@ importers: specifier: 0.2.2 version: 0.2.2 '@tanstack/query-db-collection': - specifier: 1.0.40 - version: 1.0.40(@tanstack/query-core@5.101.0)(typescript@7.0.2) + specifier: 1.4.8 + version: 1.4.8(@tanstack/query-core@5.104.5)(typescript@7.0.2) '@tanstack/solid-db': - specifier: 0.2.22 - version: 0.2.22(solid-js@1.9.13)(typescript@7.0.2) + specifier: 0.3.12 + version: 0.3.12(solid-js@1.9.13)(typescript@7.0.2) '@tanstack/solid-form': specifier: 1.33.0 version: 1.33.0(solid-js@1.9.13) @@ -337,8 +337,8 @@ importers: specifier: 0.10.0 version: 0.10.0(solid-js@1.9.13) '@tanstack/solid-query': - specifier: 5.101.0 - version: 5.101.0(solid-js@1.9.13) + specifier: 5.104.5 + version: 5.104.5(solid-js@1.9.13) '@tanstack/solid-router': specifier: 1.170.38 version: 1.170.38(solid-js@1.9.13) @@ -453,7 +453,7 @@ importers: version: 0.7.0(@tanstack/hotkeys@0.8.0)(@types/react@19.2.14)(csstype@3.2.3)(react@18.3.1)(solid-js@1.9.13) '@tanstack/solid-query-devtools': specifier: 5.101.0 - version: 5.101.0(@tanstack/solid-query@5.101.0(solid-js@1.9.13))(solid-js@1.9.13) + version: 5.101.0(@tanstack/solid-query@5.104.5(solid-js@1.9.13))(solid-js@1.9.13) '@testing-library/dom': specifier: 10.4.1 version: 10.4.1 @@ -2696,12 +2696,6 @@ packages: cpu: [x64] os: [win32] - '@napi-rs/wasm-runtime@1.1.2': - resolution: {integrity: sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - '@napi-rs/wasm-runtime@1.2.5': resolution: {integrity: sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==} engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} @@ -2865,12 +2859,14 @@ packages: '@opentelemetry/sdk-trace-base@2.0.1': resolution: {integrity: sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ==} engines: {node: ^18.19.0 || >=20.6.0} + deprecated: Use @opentelemetry/sdk-trace package peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' '@opentelemetry/sdk-trace-node@2.0.1': resolution: {integrity: sha512-UhdbPF19pMpBtCWYP5lHbTogLWx9N0EBxtdagvkn5YtsAnCBZzL7SjktG+ZmupRgifsHMjwUaCCaVmqGfSADmA==} engines: {node: ^18.19.0 || >=20.6.0} + deprecated: Use @opentelemetry/sdk-trace package peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -4528,13 +4524,13 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 || ^7 || ^8 - '@tanstack/db-ivm@0.1.18': - resolution: {integrity: sha512-+pZJiRKdoKRM5Epq9T7otD9ZJl82pRFauo7LKuJGrarjVKQ7r+QQlPe3kGdN9LEKSnuNGIWjX9OOY4M8kH4eLw==} + '@tanstack/db-ivm@0.2.0': + resolution: {integrity: sha512-AuMuGzVdWR5qzJPRYajmrUp95vMo0duvMZ0zBjMOvaI9rkh2GHZWCsJ/p7s81UN4Lep6HHJjahnYUF+XVL0+AQ==} peerDependencies: typescript: '>=4.7' - '@tanstack/db@0.6.8': - resolution: {integrity: sha512-1dzwxYH7jizvpOzVsVmxZ8dGwMPDaA+YcinEmAszoUYF7mgSL0RiIiGHFBAc0WyVvHES7vSHg6x0WslX8C+TTQ==} + '@tanstack/db@0.15.2': + resolution: {integrity: sha512-s7CR8kOgkF1oPEGyKWItWHsg7U3hhQQu+k9CPjjAWwS6wzWVvjCbHbu/xnJvO1aPe7v3SBwo1tf6CMyKjNPNxg==} peerDependencies: typescript: '>=4.7' @@ -4620,13 +4616,13 @@ packages: resolution: {integrity: sha512-eQ1MyLKCHyXiH7NbdmB80W77OhiMgGBUb+qDx/8WMGbwg5Lf/NlfD0TfNYAqY77i8V3AxoDoYdICrQE5ADw4Yw==} engines: {node: '>=18'} - '@tanstack/query-core@5.101.0': - resolution: {integrity: sha512-cQetA74EB+seWySv1TTKr828TnP0u39m6LykwDXIo84SNortpDkp30TMEjkqtYCNP9c40uT/iwl6MLiufEt0Ow==} + '@tanstack/query-core@5.104.5': + resolution: {integrity: sha512-Q94gI8Opd+CbdVNOdj8ZCyV8WqLYitrDq1t96Xc8WZT6lY0r5iRnJLXYDxMex7EEf2v+mXvn4FcjaBKSxXZQ9A==} - '@tanstack/query-db-collection@1.0.40': - resolution: {integrity: sha512-93iWTBvNwLmhH4L7BL66Khr/pan2pXbdXa0uRtjThW5KRvwBCH13E5CM0PVd1QO9EcrSM+HcNg3MLUPR0EJGPg==} + '@tanstack/query-db-collection@1.4.8': + resolution: {integrity: sha512-ysoX+BSYt6fbp0dPb/+vIe7wLlhPVXP0GKUP1sJ9FnbP2FkgxOzPzk2JDQsqlJweFl7P3z4kNViAyREJfbfc4w==} peerDependencies: - '@tanstack/query-core': ^5.0.0 + '@tanstack/query-core': ^5.90.15 typescript: '>=4.7' '@tanstack/query-devtools@5.101.0': @@ -4636,8 +4632,8 @@ packages: resolution: {integrity: sha512-X+19pGuuLVPvvAvPYw9v/+ktRk5cCll8AtfpBpOhDRmVgUMrfqze0467xtq8YRVVs/mmo5rVtWn/7Tp32RDBKw==} engines: {node: '>=20.19'} - '@tanstack/solid-db@0.2.22': - resolution: {integrity: sha512-q+Q8eFgPR7aREdJ9tjoHVN95gHhJwiw9eRWwlMOSsCWhYSN6Jm+yTSgWWbHq0rJOPOy1t1NQE7hMuXjH5WLbsA==} + '@tanstack/solid-db@0.3.12': + resolution: {integrity: sha512-Ln+3dLGJiATU0c5IvcRc69NU13paEUKanGoF/IQcZCv3KraIL3vPNRhBl/0vbHYNySrIkxcPjpUwi/HYXk6FqQ==} peerDependencies: solid-js: '>=1.9.0' @@ -4670,8 +4666,8 @@ packages: '@tanstack/solid-query': ^5.101.0 solid-js: ^1.6.0 - '@tanstack/solid-query@5.101.0': - resolution: {integrity: sha512-XoPWynbaWquvSisMvUirakfD9OmLas1cOwt1gBDUTn8HC2CVkZm+O/jBgEa5SL5LrY6vxmWjzzskhXkywLfymw==} + '@tanstack/solid-query@5.104.5': + resolution: {integrity: sha512-O0YK8SSV5rxE7Q6sZcOo8bFCpQwf/vY7QKsGHKlQYibXS3sVYavj+xwpZK+BGCBw9Mi8OivaFQcV6/QDA/ovCw==} peerDependencies: solid-js: ^1.6.0 @@ -4803,9 +4799,6 @@ packages: cpu: [arm64] os: [win32] - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@tybys/wasm-util@0.10.4': resolution: {integrity: sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==} @@ -10676,9 +10669,6 @@ packages: sort-any@2.0.0: resolution: {integrity: sha512-T9JoiDewQEmWcnmPn/s9h/PH9t3d/LSWi0RgVmXSuDYeZXTZOZ1/wrK2PHaptuR1VXe3clLLt0pD6sgVOwjNEA==} - sorted-btree@1.8.1: - resolution: {integrity: sha512-395+XIP+wqNn3USkFSrNz7G3Ss/MXlZEqesxvzCRFwL14h6e8LukDHdLBePn5pwbm5OQ9vGu8mDyz2lLDIqamQ==} - source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -14301,13 +14291,6 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true - '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)': - dependencies: - '@emnapi/core': 1.11.0 - '@emnapi/runtime': 1.11.0 - '@tybys/wasm-util': 0.10.1 - optional: true - '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)': dependencies: '@emnapi/core': 1.11.0 @@ -15013,7 +14996,7 @@ snapshots: '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)': dependencies: - '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0) + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -15760,16 +15743,15 @@ snapshots: tailwindcss: 4.3.2 vite: 8.0.5(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)(@types/node@24.9.1)(esbuild@0.27.7)(jiti@2.7.0)(sass@1.70.0)(terser@5.49.1)(tsx@4.21.0)(yaml@2.8.3) - '@tanstack/db-ivm@0.1.18(typescript@7.0.2)': + '@tanstack/db-ivm@0.2.0(typescript@7.0.2)': dependencies: fractional-indexing: 3.2.0 - sorted-btree: 1.8.1 typescript: 7.0.2 - '@tanstack/db@0.6.8(typescript@7.0.2)': + '@tanstack/db@0.15.2(typescript@7.0.2)': dependencies: '@standard-schema/spec': 1.1.0 - '@tanstack/db-ivm': 0.1.18(typescript@7.0.2) + '@tanstack/db-ivm': 0.2.0(typescript@7.0.2) '@tanstack/pacer-lite': 0.2.2 typescript: 7.0.2 @@ -15858,13 +15840,13 @@ snapshots: '@tanstack/pacer-lite@0.2.2': {} - '@tanstack/query-core@5.101.0': {} + '@tanstack/query-core@5.104.5': {} - '@tanstack/query-db-collection@1.0.40(@tanstack/query-core@5.101.0)(typescript@7.0.2)': + '@tanstack/query-db-collection@1.4.8(@tanstack/query-core@5.104.5)(typescript@7.0.2)': dependencies: '@standard-schema/spec': 1.1.0 - '@tanstack/db': 0.6.8(typescript@7.0.2) - '@tanstack/query-core': 5.101.0 + '@tanstack/db': 0.15.2(typescript@7.0.2) + '@tanstack/query-core': 5.104.5 typescript: 7.0.2 '@tanstack/query-devtools@5.101.0': {} @@ -15876,10 +15858,10 @@ snapshots: seroval: 1.6.8 seroval-plugins: 1.6.8(seroval@1.6.8) - '@tanstack/solid-db@0.2.22(solid-js@1.9.13)(typescript@7.0.2)': + '@tanstack/solid-db@0.3.12(solid-js@1.9.13)(typescript@7.0.2)': dependencies: '@solid-primitives/map': 0.7.3(solid-js@1.9.13) - '@tanstack/db': 0.6.8(typescript@7.0.2) + '@tanstack/db': 0.15.2(typescript@7.0.2) solid-js: 1.9.13 transitivePeerDependencies: - typescript @@ -15918,15 +15900,15 @@ snapshots: '@tanstack/solid-store': 0.11.0(solid-js@1.9.13) solid-js: 1.9.13 - '@tanstack/solid-query-devtools@5.101.0(@tanstack/solid-query@5.101.0(solid-js@1.9.13))(solid-js@1.9.13)': + '@tanstack/solid-query-devtools@5.101.0(@tanstack/solid-query@5.104.5(solid-js@1.9.13))(solid-js@1.9.13)': dependencies: '@tanstack/query-devtools': 5.101.0 - '@tanstack/solid-query': 5.101.0(solid-js@1.9.13) + '@tanstack/solid-query': 5.104.5(solid-js@1.9.13) solid-js: 1.9.13 - '@tanstack/solid-query@5.101.0(solid-js@1.9.13)': + '@tanstack/solid-query@5.104.5(solid-js@1.9.13)': dependencies: - '@tanstack/query-core': 5.101.0 + '@tanstack/query-core': 5.104.5 solid-js: 1.9.13 '@tanstack/solid-router@1.170.38(solid-js@1.9.13)': @@ -16043,11 +16025,6 @@ snapshots: '@turbo/windows-arm64@2.9.14': optional: true - '@tybys/wasm-util@0.10.1': - dependencies: - tslib: 2.8.1 - optional: true - '@tybys/wasm-util@0.10.4': dependencies: tslib: 2.8.1 @@ -22999,8 +22976,6 @@ snapshots: dependencies: lodash: 4.17.21 - sorted-btree@1.8.1: {} - source-map-js@1.2.1: {} source-map-support@0.5.21: From c3b27c72e01cec9f6f4c097ee8c342ab6193f818 Mon Sep 17 00:00:00 2001 From: Christian Fehmer Date: Mon, 26 Oct 2026 10:01:22 +0100 Subject: [PATCH 2/3] chore: update @tanstack/solid-devtools and solid-query-devtools to latest --- frontend/package.json | 4 +- pnpm-lock.yaml | 383 ++++++++++++++++++++++++++++++++++++++---- 2 files changed, 356 insertions(+), 31 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 7b62ddf2fae7..7006781653e9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -81,9 +81,9 @@ "@solidjs/testing-library": "0.8.10", "@tailwindcss/vite": "4.3.2", "@tanstack/eslint-plugin-query": "5.101.0", - "@tanstack/solid-devtools": "0.8.5", + "@tanstack/solid-devtools": "0.8.13", "@tanstack/solid-hotkeys-devtools": "0.7.0", - "@tanstack/solid-query-devtools": "5.101.0", + "@tanstack/solid-query-devtools": "5.104.5", "@testing-library/dom": "10.4.1", "@testing-library/jest-dom": "6.9.1", "@testing-library/user-event": "14.6.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8ae24f0060fe..61afb70361d5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -446,14 +446,14 @@ importers: specifier: 5.101.0 version: 5.101.0(eslint@9.39.1(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@7.0.2) '@tanstack/solid-devtools': - specifier: 0.8.5 - version: 0.8.5(csstype@3.2.3)(solid-js@1.9.13) + specifier: 0.8.13 + version: 0.8.13(csstype@3.2.3)(solid-js@1.9.13) '@tanstack/solid-hotkeys-devtools': specifier: 0.7.0 version: 0.7.0(@tanstack/hotkeys@0.8.0)(@types/react@19.2.14)(csstype@3.2.3)(react@18.3.1)(solid-js@1.9.13) '@tanstack/solid-query-devtools': - specifier: 5.101.0 - version: 5.101.0(@tanstack/solid-query@5.104.5(solid-js@1.9.13))(solid-js@1.9.13) + specifier: 5.104.5 + version: 5.104.5(@tanstack/solid-query@5.104.5(solid-js@1.9.13))(csstype@3.2.3)(solid-js@1.9.13) '@testing-library/dom': specifier: 10.4.1 version: 10.4.1 @@ -1662,6 +1662,11 @@ packages: conventional-commits-parser: optional: true + '@corvu/utils@0.4.2': + resolution: {integrity: sha512-Ox2kYyxy7NoXdKWdHeDEjZxClwzO4SKM8plAaVwmAJPxHMqA0rLOoAsa+hBDwRLpctf+ZRnAd/ykguuJidnaTA==} + peerDependencies: + solid-js: ^1.8 + '@csstools/color-helpers@5.1.0': resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} @@ -2401,6 +2406,15 @@ packages: '@firebase/webchannel-wrapper@1.0.6': resolution: {integrity: sha512-Vr/Mqu79dMwGRAyGbJ4uN4+BtXB3/mRTdzetD1daWNeG8QaWuzhhbG77GltO5c0yYmYls8i250iX73624GJd7Q==} + '@floating-ui/core@1.8.0': + resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} + + '@floating-ui/dom@1.8.0': + resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} + + '@floating-ui/utils@0.2.12': + resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} + '@fortawesome/fontawesome-free@5.15.4': resolution: {integrity: sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==} engines: {node: '>=6'} @@ -2587,6 +2601,9 @@ packages: resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==} engines: {node: '>=10.13.0'} + '@internationalized/number@3.6.9': + resolution: {integrity: sha512-GgWy2caO/+hV9sT/oCTWGHvbjmJMPT9kkXzoKRLnkEq7adghhR7UprhvY9sXrKfrp3NcDfhF6QQHXR1KfQbB8g==} + '@ioredis/commands@1.2.0': resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} @@ -2638,6 +2655,16 @@ packages: '@keyv/serialize@1.1.1': resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + '@kobalte/core@0.13.14': + resolution: {integrity: sha512-SBVB1lnvYbYt2x3t7fG0lo5fGLEbHQ6PII3NDPva8vD5e2v53On84ZVQiuIk0XI/55R4GQhden7Yem+R/XR8uQ==} + peerDependencies: + solid-js: ^1.9.8 + + '@kobalte/utils@0.9.2': + resolution: {integrity: sha512-jRVXr+zsVHxzDXRoh+CDeXzvCsFJ6uiHhqqNQ26Cw9ZsZ3D6nqPUBt1gGVtj2ZPmRL3a9Uk1v8D1aJ8/I12Dow==} + peerDependencies: + solid-js: ^1.8.8 + '@kwsites/file-exists@1.1.1': resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} @@ -2706,6 +2733,15 @@ packages: '@neoconfetti/react@1.0.0': resolution: {integrity: sha512-klcSooChXXOzIm+SE5IISIAn3bYzYfPjbX7D7HoqZL84oAfgREeSg5vSIaSFH+DaGzzvImTyWe1OyrJ67vik4A==} + '@neodrag/core@3.0.0-next.11': + resolution: {integrity: sha512-3WQWxyrbxiaK9zS5JU2wJsW2gpoQlZBXVghduBh61JpqaeE0T0cte8R0qYK2RuJo3J2TYQYqxO19CpG/C1i5eg==} + + '@neodrag/solid@3.0.0-next.11': + resolution: {integrity: sha512-vCBIn/pimjWMQ6vhTS2/O1XNAwzVtc4eUhdbQ91WykbZWWqQ5NocDXt/1OdYrEkeRzJcpCv8wEz5PnMkgKP81Q==} + peerDependencies: + '@neodrag/core': 3.0.0-next.11 + solid-js: ^1.0.0 + '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} @@ -4141,6 +4177,11 @@ packages: peerDependencies: solid-js: ^1.6.12 + '@solid-primitives/event-listener@2.4.6': + resolution: {integrity: sha512-5I0YJcTVYIWoMmgBSROBZGcz+ymhew/pGTg2dHW74BUjFKsV8Li4bOZYl0YAGP4mHw5o4UBd9/BEesqBci3wxw==} + peerDependencies: + solid-js: ^1.6.12 + '@solid-primitives/jsx-tokenizer@1.1.3': resolution: {integrity: sha512-Ma8g7SACdU3FMPkMGgNa4MosAkxL5WyThchMnABtw/oh1VJ+ADQ63BcFAjtdlPCSH2+84Iu00OWechJ1/2jIWg==} peerDependencies: @@ -4156,6 +4197,11 @@ packages: peerDependencies: solid-js: ^1.6.12 + '@solid-primitives/map@0.4.13': + resolution: {integrity: sha512-B1zyFbsiTQvqPr+cuPCXO72sRuczG9Swncqk5P74NCGw1VE8qa/Ry9GlfI1e/VdeQYHjan+XkbE3rO2GW/qKew==} + peerDependencies: + solid-js: ^1.6.12 + '@solid-primitives/map@0.7.3': resolution: {integrity: sha512-2Ach52ANEWYUKFtlrKWljrCtAHJwXnfNEvNfQwA+80nS/Bdw9fSumWQiRJNoDQLN0k5iEggWRBHd6vC/uqYKcA==} peerDependencies: @@ -4196,11 +4242,21 @@ packages: peerDependencies: solid-js: ^1.6.12 + '@solid-primitives/resize-observer@2.2.0': + resolution: {integrity: sha512-9Fuu/EWBeGj+atGHRJp70HKhdfalmpjwxY8a32NZixdLNmfCJ45AfhLQNr6uOzETbbiMx4iCKlTrJ8KZCHC2Ww==} + peerDependencies: + solid-js: ^1.6.12 + '@solid-primitives/rootless@1.5.3': resolution: {integrity: sha512-N8cIDAHbWcLahNRLr0knAAQvXyEdEMoAZvIMZKmhNb1mlx9e2UOv9BRD5YNwQUJwbNoYVhhLwFOEOcVXFx0HqA==} peerDependencies: solid-js: ^1.6.12 + '@solid-primitives/rootless@1.5.4': + resolution: {integrity: sha512-TOIZa1VUfVJ+9nkCcRajw3U4t9vBOP1HxX1WHNTbXq32mXwlqTvUnC4CRIilohcryBkT9u2ZkhUDSHRTaGp55g==} + peerDependencies: + solid-js: ^1.6.12 + '@solid-primitives/scheduled@1.5.3': resolution: {integrity: sha512-oNwLE6E6lxJAWrc8QXuwM0k2oU1BnANnkChwMw82aK1j3+mWGJkG1IFe5gCwbV+afYmjI76t9JJV3md/8tLw+g==} peerDependencies: @@ -4211,6 +4267,16 @@ packages: peerDependencies: solid-js: ^1.6.12 + '@solid-primitives/static-store@0.1.4': + resolution: {integrity: sha512-LgtVaVBtB7EbmS4+M0b8xY5Iq6pUWXBsIC4VgtrFKDGDdyCaDt88sHk0fUlx1Enxm/XZnZyLXJABRoa39RjJqA==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/storage@1.3.11': + resolution: {integrity: sha512-PpQWR3TaTxHIJFbI9ZssYTM4Aa67g1vJIgps4TPhcXzHqqomrPAIveFC2FG7SDQoi9YQia8FVBjigELziJpfIg==} + peerDependencies: + solid-js: ^1.6.12 + '@solid-primitives/styles@0.1.3': resolution: {integrity: sha512-7YdA21prMeCX+oOF/1RAn02+cGz/pG4dyPWtHBC2H8aZvnC7IfThBt80mP+TioejrdfE7Lc54Uh18f7Pig+gRQ==} peerDependencies: @@ -4241,6 +4307,11 @@ packages: peerDependencies: solid-js: ^1.6.12 + '@solid-primitives/utils@6.4.1': + resolution: {integrity: sha512-ISSB5QX1qP2ynrheIpYwc4oKR5Ny4siNuUyf1qZniy+Il+p/PtDB0QK1Dnle8noiHpwRD3gpPdubOC3qI/Zamg==} + peerDependencies: + solid-js: ^1.6.12 + '@solidjs/meta@0.29.4': resolution: {integrity: sha512-zdIWBGpR9zGx1p1bzIPqF5Gs+Ks/BH8R6fWhmUa/dcK1L2rUC8BAcZJzNRYBQv74kScf1TSOs0EY//Vd/I0V8g==} peerDependencies: @@ -4336,6 +4407,9 @@ packages: '@types/react-dom': optional: true + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + '@tailwindcss/node@4.2.1': resolution: {integrity: sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==} @@ -4534,12 +4608,12 @@ packages: peerDependencies: typescript: '>=4.7' - '@tanstack/devtools-client@0.0.6': - resolution: {integrity: sha512-f85ZJXJnDIFOoykG/BFIixuAevJovCvJF391LPs6YjBAPhGYC50NWlx1y4iF/UmK5/cCMx+/JqI5SBOz7FanQQ==} + '@tanstack/devtools-client@0.0.8': + resolution: {integrity: sha512-cG3iZkGWCwN330bLBKa8+9r4Of2AXNoz2zUqcsy/4XsD3105ghVBx78cGyvJj9fSclNomPxoqAnDGXXhg1WLvA==} engines: {node: '>=18'} - '@tanstack/devtools-event-bus@0.4.1': - resolution: {integrity: sha512-cNnJ89Q021Zf883rlbBTfsaxTfi2r73/qejGtyTa7ksErF3hyDyAq1aTbo5crK9dAL7zSHh9viKY1BtMls1QOA==} + '@tanstack/devtools-event-bus@0.4.3': + resolution: {integrity: sha512-NeegBt5/n2E5q4DbrXHqECBq42+kDi6JBOp8/+RNqkIE+P4hJpbM36kGyjnGQFMWOoku31qhMyX9/48VuTTdmg==} engines: {node: '>=18'} '@tanstack/devtools-event-client@0.4.3': @@ -4547,12 +4621,23 @@ packages: engines: {node: '>=18'} hasBin: true + '@tanstack/devtools-event-client@0.5.0': + resolution: {integrity: sha512-H+OH3zC6Vhu/K0NaVfQKknEKawc/+2PT+D3SB3Ox0V8SiMlTo0abbmH2rH0721R2aNYbjdMXA1oENOd8E2UVoA==} + engines: {node: '>=18'} + hasBin: true + '@tanstack/devtools-ui@0.5.2': resolution: {integrity: sha512-GtaMk8kaGZ9ZdR8Pu5RAfcse/ZrxzH/xsAIFtHMapLs2VMqSPFfb1NvIDO1MAAfUcub8Ix8XKQEP0uYSPzoFKw==} engines: {node: '>=18'} peerDependencies: solid-js: '>=1.9.7' + '@tanstack/devtools-ui@0.7.1': + resolution: {integrity: sha512-3xQ/ezZ2qVNszhjpCN2N3jn7uHc2J1PMgcyjHzH4XZBt9xAQyMMcPNoR2cd7rzReyxWoJpZUWiDBmOJiCtLj9A==} + engines: {node: '>=18'} + peerDependencies: + solid-js: '>=1.9.7' + '@tanstack/devtools-utils@0.4.0': resolution: {integrity: sha512-KsGzYhA8L/fCNgyyMyoUy+TKtx+DjNbzWwqH6wXL48Llzo7kvV9RynYJlaO8Qkzwm+NdHXSgsljQNjQ3CKPpZA==} engines: {node: '>=18'} @@ -4575,8 +4660,8 @@ packages: vue: optional: true - '@tanstack/devtools@0.12.2': - resolution: {integrity: sha512-Xdl8pLzoDUvXaclQ0poY36WAPx0jEHk8vqUFd8FYFUm1BMshtB7RnTgD1HE9jCAXODxqw9I0gXBiUZLK3o3+Bw==} + '@tanstack/devtools@0.15.0': + resolution: {integrity: sha512-KyS7Qi82Eq9yG8C+uae3ikAPb+D5rfzVhvOOjXVAHZ/64s6TWJlDWpREw1FrHIYZaI7paErpsExSSKlF5BKA/A==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -4608,6 +4693,10 @@ packages: resolution: {integrity: sha512-vqH7X9nb0MTJ/O08++dB5bP9jgj4+BIPOUu/U+6myG86lDsirZSVSobpq5UQpE7nBuk62i8eIYeOhd+OMl/UrA==} engines: {node: '>=18'} + '@tanstack/match-sorter-utils@9.2.6': + resolution: {integrity: sha512-DIpUSOhPfQ7u/qfUi/Wgm0wBO56MyBYXGvnlI0NcauDRPqdBUlAZZjW2Dxm92m+k1UWVhKw8YJ4f47+75Aujyw==} + engines: {node: '>=20'} + '@tanstack/pacer-lite@0.1.1': resolution: {integrity: sha512-y/xtNPNt/YeyoVxE/JCx+T7yjEzpezmbb+toK8DDD1P4m7Kzs5YR956+7OKexG3f8aXgC3rLZl7b1V+yNUSy5w==} engines: {node: '>=18'} @@ -4625,8 +4714,8 @@ packages: '@tanstack/query-core': ^5.90.15 typescript: '>=4.7' - '@tanstack/query-devtools@5.101.0': - resolution: {integrity: sha512-MVqw17k08RQtGGLEL654+dX/btbX9p/8WjkznO//zusLTMaObxi3Q+MoFwGVkC9K3tqjn8qrrNhJevXx4fJTeQ==} + '@tanstack/query-devtools@5.104.5': + resolution: {integrity: sha512-BLVEw4lFF7aIRsfqGvI50SSR9oN46/EmlygC+3h5TUdI+fL8GnMQialL3H92TbYi7J1b/hYlUGnckBT2uG5h8w==} '@tanstack/router-core@1.171.34': resolution: {integrity: sha512-X+19pGuuLVPvvAvPYw9v/+ktRk5cCll8AtfpBpOhDRmVgUMrfqze0467xtq8YRVVs/mmo5rVtWn/7Tp32RDBKw==} @@ -4637,8 +4726,8 @@ packages: peerDependencies: solid-js: '>=1.9.0' - '@tanstack/solid-devtools@0.8.5': - resolution: {integrity: sha512-nWvLVjO5Grwf1zyZezcF2mwJKAHiz8PhQM+wHy28Isi4alPmAo41dPlbadZu0uRnvoUi/PUX1BLseOKjnja36A==} + '@tanstack/solid-devtools@0.8.13': + resolution: {integrity: sha512-B16MvCadUxE43ZMyxaPeE6FBbpTXlsnKBZDl9lp6o75s9EeiGdJ1KaB8L+EYx7wFdbFad+779M3Y3n7bc5H02g==} engines: {node: '>=18'} peerDependencies: solid-js: '>=1.9.7' @@ -4660,10 +4749,10 @@ packages: peerDependencies: solid-js: '>=1.7.0' - '@tanstack/solid-query-devtools@5.101.0': - resolution: {integrity: sha512-NmvpZpflSQsViGeVu4wMO+C+1Y3x/54aJJprNaZTr7ulVNszp7j9HVnTjR2/nm0suRjs3lMWdcw70xxrakEM8w==} + '@tanstack/solid-query-devtools@5.104.5': + resolution: {integrity: sha512-LsG7pfftMPmpAcbwhMuuCTkfZC4EfQ1QXf0gXlWdZ7upiZ612VGv4hWtnNyz+sJHNFZjtvAqfTnjmJovUaPIdw==} peerDependencies: - '@tanstack/solid-query': ^5.101.0 + '@tanstack/solid-query': ^5.104.5 solid-js: ^1.6.0 '@tanstack/solid-query@5.104.5': @@ -6374,6 +6463,10 @@ packages: resolution: {integrity: sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==} engines: {node: '>= 0.8'} + copy-anything@4.1.5: + resolution: {integrity: sha512-vePst2VLTSqPglW7Q98VwFpGiGpOHTyXIo81MO5VyLecA5zMbZw/P/V1vmwD1jksa2iJpn/YkDrJ3XhTfzUyhQ==} + engines: {node: '>=18'} + core-js-compat@3.49.0: resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} @@ -10658,11 +10751,30 @@ packages: solid-js@1.9.13: resolution: {integrity: sha512-6hJeJMOcEX8ktqjpDoJZEmld3ijvcvWBDtiXBm7f4332SiFN66QeAQI1REQshvyUoISsSeJ4PHDauKYbwao9JQ==} + solid-js@1.9.17: + resolution: {integrity: sha512-4GAmLOWPfNV8H9Jfn2LSFTpNEG6jiOKPiwd5lnLGQtehHaX6l3TOLzJqQ7mqwB/3k1Yy3zyumFVopmc/tm34ow==} + + solid-presence@0.2.0: + resolution: {integrity: sha512-YM92o+jvpzX3XGaD4rLYmq/Kc2ZVh47GSCLEufHBFQQIurvZTs8SoGJxO8BJGNDxBKdcS8F3dYhW1SDXp4BNjA==} + peerDependencies: + solid-js: ^1.8 + + solid-prevent-scroll@0.1.11: + resolution: {integrity: sha512-2PComVCDHaQN/5t7ogEqUYeHasritZKXZ8Sb/VLkl0Web8o9YhEwOo8LSujJEahvMlYCNyKt0zRJeHldOAeWZg==} + peerDependencies: + solid-js: ^1.8 + solid-refresh@0.6.3: resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} peerDependencies: solid-js: ^1.3 + solid-transition-group@0.2.3: + resolution: {integrity: sha512-iB72c9N5Kz9ykRqIXl0lQohOau4t0dhel9kjwFvx81UZJbVwaChMuBuyhiZmK24b8aKEK0w3uFM96ZxzcyZGdg==} + engines: {node: '>=18.0.0', pnpm: '>=8.6.0'} + peerDependencies: + solid-js: ^1.6.12 + sonic-boom@1.4.1: resolution: {integrity: sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==} @@ -10995,6 +11107,10 @@ packages: resolution: {integrity: sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==} engines: {node: '>=14.18.0'} + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + superstatic@9.0.3: resolution: {integrity: sha512-e/tmW0bsnQ/33ivK6y3CapJT0Ovy4pk/ohNPGhIAGU2oasoNLRQ1cv6enua09NU9w6Y0H/fBu07cjzuiWvLXxw==} engines: {node: ^14.18.0 || >=16.4.0} @@ -13163,6 +13279,11 @@ snapshots: conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.2.1 + '@corvu/utils@0.4.2(solid-js@1.9.17)': + dependencies: + '@floating-ui/dom': 1.8.0 + solid-js: 1.9.17 + '@csstools/color-helpers@5.1.0': {} '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': @@ -13883,6 +14004,17 @@ snapshots: '@firebase/webchannel-wrapper@1.0.6': {} + '@floating-ui/core@1.8.0': + dependencies: + '@floating-ui/utils': 0.2.12 + + '@floating-ui/dom@1.8.0': + dependencies: + '@floating-ui/core': 1.8.0 + '@floating-ui/utils': 0.2.12 + + '@floating-ui/utils@0.2.12': {} + '@fortawesome/fontawesome-free@5.15.4': {} '@google-cloud/cloud-sql-connector@1.3.3(encoding@0.1.13)(supports-color@10.2.2)': @@ -14178,6 +14310,10 @@ snapshots: '@hutson/parse-repository-url@5.0.0': {} + '@internationalized/number@3.6.9': + dependencies: + '@swc/helpers': 0.5.23 + '@ioredis/commands@1.2.0': {} '@isaacs/cliui@8.0.2': @@ -14234,6 +14370,28 @@ snapshots: '@keyv/serialize@1.1.1': {} + '@kobalte/core@0.13.14(solid-js@1.9.17)': + dependencies: + '@floating-ui/dom': 1.8.0 + '@internationalized/number': 3.6.9 + '@kobalte/utils': 0.9.2(solid-js@1.9.17) + '@solid-primitives/props': 3.2.3(solid-js@1.9.17) + '@solid-primitives/resize-observer': 2.1.5(solid-js@1.9.17) + solid-js: 1.9.17 + solid-presence: 0.2.0(solid-js@1.9.17) + solid-prevent-scroll: 0.1.11(solid-js@1.9.17) + + '@kobalte/utils@0.9.2(solid-js@1.9.17)': + dependencies: + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.17) + '@solid-primitives/keyed': 1.5.3(solid-js@1.9.17) + '@solid-primitives/map': 0.4.13(solid-js@1.9.17) + '@solid-primitives/media': 2.3.5(solid-js@1.9.17) + '@solid-primitives/props': 3.2.3(solid-js@1.9.17) + '@solid-primitives/refs': 1.1.3(solid-js@1.9.17) + '@solid-primitives/utils': 6.4.0(solid-js@1.9.17) + solid-js: 1.9.17 + '@kwsites/file-exists@1.1.1(supports-color@10.2.2)': dependencies: debug: 4.4.3(supports-color@10.2.2) @@ -14307,6 +14465,13 @@ snapshots: '@neoconfetti/react@1.0.0': {} + '@neodrag/core@3.0.0-next.11': {} + + '@neodrag/solid@3.0.0-next.11(@neodrag/core@3.0.0-next.11)(solid-js@1.9.13)': + dependencies: + '@neodrag/core': 3.0.0-next.11 + solid-js: 1.9.13 + '@noble/hashes@1.8.0': {} '@nodelib/fs.scandir@2.1.5': @@ -15423,6 +15588,16 @@ snapshots: '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) solid-js: 1.9.13 + '@solid-primitives/event-listener@2.4.5(solid-js@1.9.17)': + dependencies: + '@solid-primitives/utils': 6.4.0(solid-js@1.9.17) + solid-js: 1.9.17 + + '@solid-primitives/event-listener@2.4.6(solid-js@1.9.17)': + dependencies: + '@solid-primitives/utils': 6.4.1(solid-js@1.9.17) + solid-js: 1.9.17 + '@solid-primitives/jsx-tokenizer@1.1.3(solid-js@1.9.13)': dependencies: '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) @@ -15439,6 +15614,15 @@ snapshots: dependencies: solid-js: 1.9.13 + '@solid-primitives/keyed@1.5.3(solid-js@1.9.17)': + dependencies: + solid-js: 1.9.17 + + '@solid-primitives/map@0.4.13(solid-js@1.9.17)': + dependencies: + '@solid-primitives/trigger': 1.2.3(solid-js@1.9.17) + solid-js: 1.9.17 + '@solid-primitives/map@0.7.3(solid-js@1.9.13)': dependencies: '@solid-primitives/trigger': 1.2.3(solid-js@1.9.13) @@ -15452,6 +15636,14 @@ snapshots: '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) solid-js: 1.9.13 + '@solid-primitives/media@2.3.5(solid-js@1.9.17)': + dependencies: + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.17) + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.17) + '@solid-primitives/static-store': 0.1.3(solid-js@1.9.17) + '@solid-primitives/utils': 6.4.0(solid-js@1.9.17) + solid-js: 1.9.17 + '@solid-primitives/memo@1.4.5(solid-js@1.9.13)': dependencies: '@solid-primitives/scheduled': 1.5.3(solid-js@1.9.13) @@ -15471,6 +15663,11 @@ snapshots: '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) solid-js: 1.9.13 + '@solid-primitives/props@3.2.3(solid-js@1.9.17)': + dependencies: + '@solid-primitives/utils': 6.4.0(solid-js@1.9.17) + solid-js: 1.9.17 + '@solid-primitives/range@0.2.4(solid-js@1.9.13)': dependencies: '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) @@ -15481,6 +15678,11 @@ snapshots: '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) solid-js: 1.9.13 + '@solid-primitives/refs@1.1.3(solid-js@1.9.17)': + dependencies: + '@solid-primitives/utils': 6.4.0(solid-js@1.9.17) + solid-js: 1.9.17 + '@solid-primitives/resize-observer@2.1.5(solid-js@1.9.13)': dependencies: '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) @@ -15489,11 +15691,37 @@ snapshots: '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) solid-js: 1.9.13 + '@solid-primitives/resize-observer@2.1.5(solid-js@1.9.17)': + dependencies: + '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.17) + '@solid-primitives/rootless': 1.5.3(solid-js@1.9.17) + '@solid-primitives/static-store': 0.1.3(solid-js@1.9.17) + '@solid-primitives/utils': 6.4.0(solid-js@1.9.17) + solid-js: 1.9.17 + + '@solid-primitives/resize-observer@2.2.0(solid-js@1.9.17)': + dependencies: + '@solid-primitives/event-listener': 2.4.6(solid-js@1.9.17) + '@solid-primitives/rootless': 1.5.4(solid-js@1.9.17) + '@solid-primitives/static-store': 0.1.4(solid-js@1.9.17) + '@solid-primitives/utils': 6.4.1(solid-js@1.9.17) + solid-js: 1.9.17 + '@solid-primitives/rootless@1.5.3(solid-js@1.9.13)': dependencies: '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) solid-js: 1.9.13 + '@solid-primitives/rootless@1.5.3(solid-js@1.9.17)': + dependencies: + '@solid-primitives/utils': 6.4.0(solid-js@1.9.17) + solid-js: 1.9.17 + + '@solid-primitives/rootless@1.5.4(solid-js@1.9.17)': + dependencies: + '@solid-primitives/utils': 6.4.1(solid-js@1.9.17) + solid-js: 1.9.17 + '@solid-primitives/scheduled@1.5.3(solid-js@1.9.13)': dependencies: solid-js: 1.9.13 @@ -15503,6 +15731,21 @@ snapshots: '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) solid-js: 1.9.13 + '@solid-primitives/static-store@0.1.3(solid-js@1.9.17)': + dependencies: + '@solid-primitives/utils': 6.4.0(solid-js@1.9.17) + solid-js: 1.9.17 + + '@solid-primitives/static-store@0.1.4(solid-js@1.9.17)': + dependencies: + '@solid-primitives/utils': 6.4.1(solid-js@1.9.17) + solid-js: 1.9.17 + + '@solid-primitives/storage@1.3.11(solid-js@1.9.17)': + dependencies: + '@solid-primitives/utils': 6.4.0(solid-js@1.9.17) + solid-js: 1.9.17 + '@solid-primitives/styles@0.1.3(solid-js@1.9.13)': dependencies: '@solid-primitives/rootless': 1.5.3(solid-js@1.9.13) @@ -15517,11 +15760,20 @@ snapshots: dependencies: solid-js: 1.9.13 + '@solid-primitives/transition-group@1.1.2(solid-js@1.9.17)': + dependencies: + solid-js: 1.9.17 + '@solid-primitives/trigger@1.2.3(solid-js@1.9.13)': dependencies: '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) solid-js: 1.9.13 + '@solid-primitives/trigger@1.2.3(solid-js@1.9.17)': + dependencies: + '@solid-primitives/utils': 6.4.0(solid-js@1.9.17) + solid-js: 1.9.17 + '@solid-primitives/utils@6.3.2(solid-js@1.9.13)': dependencies: solid-js: 1.9.13 @@ -15530,6 +15782,14 @@ snapshots: dependencies: solid-js: 1.9.13 + '@solid-primitives/utils@6.4.0(solid-js@1.9.17)': + dependencies: + solid-js: 1.9.17 + + '@solid-primitives/utils@6.4.1(solid-js@1.9.17)': + dependencies: + solid-js: 1.9.17 + '@solidjs/meta@0.29.4(solid-js@1.9.13)': dependencies: solid-js: 1.9.13 @@ -15607,6 +15867,10 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 + '@swc/helpers@0.5.23': + dependencies: + tslib: 2.8.1 + '@tailwindcss/node@4.2.1': dependencies: '@jridgewell/remapping': 2.3.5 @@ -15755,11 +16019,11 @@ snapshots: '@tanstack/pacer-lite': 0.2.2 typescript: 7.0.2 - '@tanstack/devtools-client@0.0.6': + '@tanstack/devtools-client@0.0.8': dependencies: - '@tanstack/devtools-event-client': 0.4.3 + '@tanstack/devtools-event-client': 0.5.0 - '@tanstack/devtools-event-bus@0.4.1': + '@tanstack/devtools-event-bus@0.4.3': dependencies: ws: 8.21.3 transitivePeerDependencies: @@ -15768,6 +16032,8 @@ snapshots: '@tanstack/devtools-event-client@0.4.3': {} + '@tanstack/devtools-event-client@0.5.0': {} + '@tanstack/devtools-ui@0.5.2(csstype@3.2.3)(solid-js@1.9.13)': dependencies: clsx: 2.1.1 @@ -15777,20 +16043,31 @@ snapshots: transitivePeerDependencies: - csstype + '@tanstack/devtools-ui@0.7.1(csstype@3.2.3)(solid-js@1.9.13)': + dependencies: + clsx: 2.1.1 + dayjs: 1.11.21 + goober: 2.1.19(csstype@3.2.3) + solid-js: 1.9.13 + transitivePeerDependencies: + - csstype + '@tanstack/devtools-utils@0.4.0(@types/react@19.2.14)(react@18.3.1)(solid-js@1.9.13)': optionalDependencies: '@types/react': 19.2.14 react: 18.3.1 solid-js: 1.9.13 - '@tanstack/devtools@0.12.2(csstype@3.2.3)(solid-js@1.9.13)': + '@tanstack/devtools@0.15.0(csstype@3.2.3)(solid-js@1.9.13)': dependencies: + '@neodrag/core': 3.0.0-next.11 + '@neodrag/solid': 3.0.0-next.11(@neodrag/core@3.0.0-next.11)(solid-js@1.9.13) '@solid-primitives/event-listener': 2.4.5(solid-js@1.9.13) '@solid-primitives/keyboard': 1.3.5(solid-js@1.9.13) '@solid-primitives/resize-observer': 2.1.5(solid-js@1.9.13) - '@tanstack/devtools-client': 0.0.6 - '@tanstack/devtools-event-bus': 0.4.1 - '@tanstack/devtools-ui': 0.5.2(csstype@3.2.3)(solid-js@1.9.13) + '@tanstack/devtools-client': 0.0.8 + '@tanstack/devtools-event-bus': 0.4.3 + '@tanstack/devtools-ui': 0.7.1(csstype@3.2.3)(solid-js@1.9.13) clsx: 2.1.1 goober: 2.1.19(csstype@3.2.3) solid-js: 1.9.13 @@ -15836,6 +16113,10 @@ snapshots: dependencies: '@tanstack/store': 0.11.0 + '@tanstack/match-sorter-utils@9.2.6': + dependencies: + remove-accents: 0.5.0 + '@tanstack/pacer-lite@0.1.1': {} '@tanstack/pacer-lite@0.2.2': {} @@ -15849,7 +16130,21 @@ snapshots: '@tanstack/query-core': 5.104.5 typescript: 7.0.2 - '@tanstack/query-devtools@5.101.0': {} + '@tanstack/query-devtools@5.104.5(csstype@3.2.3)': + dependencies: + '@kobalte/core': 0.13.14(solid-js@1.9.17) + '@solid-primitives/keyed': 1.5.3(solid-js@1.9.17) + '@solid-primitives/resize-observer': 2.2.0(solid-js@1.9.17) + '@solid-primitives/storage': 1.3.11(solid-js@1.9.17) + '@tanstack/match-sorter-utils': 9.2.6 + '@tanstack/query-core': 5.104.5 + clsx: 2.1.1 + goober: 2.1.19(csstype@3.2.3) + solid-js: 1.9.17 + solid-transition-group: 0.2.3(solid-js@1.9.17) + superjson: 2.2.6 + transitivePeerDependencies: + - csstype '@tanstack/router-core@1.171.34': dependencies: @@ -15866,9 +16161,9 @@ snapshots: transitivePeerDependencies: - typescript - '@tanstack/solid-devtools@0.8.5(csstype@3.2.3)(solid-js@1.9.13)': + '@tanstack/solid-devtools@0.8.13(csstype@3.2.3)(solid-js@1.9.13)': dependencies: - '@tanstack/devtools': 0.12.2(csstype@3.2.3)(solid-js@1.9.13) + '@tanstack/devtools': 0.15.0(csstype@3.2.3)(solid-js@1.9.13) solid-js: 1.9.13 transitivePeerDependencies: - bufferutil @@ -15900,11 +16195,13 @@ snapshots: '@tanstack/solid-store': 0.11.0(solid-js@1.9.13) solid-js: 1.9.13 - '@tanstack/solid-query-devtools@5.101.0(@tanstack/solid-query@5.104.5(solid-js@1.9.13))(solid-js@1.9.13)': + '@tanstack/solid-query-devtools@5.104.5(@tanstack/solid-query@5.104.5(solid-js@1.9.13))(csstype@3.2.3)(solid-js@1.9.13)': dependencies: - '@tanstack/query-devtools': 5.101.0 + '@tanstack/query-devtools': 5.104.5(csstype@3.2.3) '@tanstack/solid-query': 5.104.5(solid-js@1.9.13) solid-js: 1.9.13 + transitivePeerDependencies: + - csstype '@tanstack/solid-query@5.104.5(solid-js@1.9.13)': dependencies: @@ -17821,6 +18118,8 @@ snapshots: depd: 2.0.0 keygrip: 1.1.0 + copy-anything@4.1.5: {} + core-js-compat@3.49.0: dependencies: browserslist: 4.28.5 @@ -22958,6 +23257,22 @@ snapshots: seroval: 1.5.4 seroval-plugins: 1.5.4(seroval@1.5.4) + solid-js@1.9.17: + dependencies: + csstype: 3.2.3 + seroval: 1.6.8 + seroval-plugins: 1.6.8(seroval@1.6.8) + + solid-presence@0.2.0(solid-js@1.9.17): + dependencies: + '@corvu/utils': 0.4.2(solid-js@1.9.17) + solid-js: 1.9.17 + + solid-prevent-scroll@0.1.11(solid-js@1.9.17): + dependencies: + '@corvu/utils': 0.4.2(solid-js@1.9.17) + solid-js: 1.9.17 + solid-refresh@0.6.3(solid-js@1.9.13)(supports-color@10.2.2): dependencies: '@babel/generator': 7.29.8 @@ -22967,6 +23282,12 @@ snapshots: transitivePeerDependencies: - supports-color + solid-transition-group@0.2.3(solid-js@1.9.17): + dependencies: + '@solid-primitives/refs': 1.1.3(solid-js@1.9.17) + '@solid-primitives/transition-group': 1.1.2(solid-js@1.9.17) + solid-js: 1.9.17 + sonic-boom@1.4.1: dependencies: atomic-sleep: 1.0.0 @@ -23379,6 +23700,10 @@ snapshots: transitivePeerDependencies: - supports-color + superjson@2.2.6: + dependencies: + copy-anything: 4.1.5 + superstatic@9.0.3(encoding@0.1.13)(supports-color@10.2.2): dependencies: basic-auth-connect: 1.0.0 From de9dc57ce2e4dbc3332b1c99e33fbf57b931e6bc Mon Sep 17 00:00:00 2001 From: Christian Fehmer Date: Mon, 26 Oct 2026 10:36:01 +0100 Subject: [PATCH 3/3] chore: remove applyIdWorkaround, fixed in tanstack/db #1524 --- frontend/src/ts/collections/ape-keys.ts | 20 +++++++++---------- frontend/src/ts/collections/connections.ts | 4 ++-- frontend/src/ts/collections/custom-themes.ts | 4 ++-- frontend/src/ts/collections/presets.ts | 12 +++++------ .../ts/collections/result-filter-presets.ts | 12 +++++------ frontend/src/ts/collections/results.ts | 7 +++---- frontend/src/ts/collections/tags.ts | 14 ++++++------- frontend/src/ts/collections/utils/misc.ts | 9 --------- 8 files changed, 32 insertions(+), 50 deletions(-) diff --git a/frontend/src/ts/collections/ape-keys.ts b/frontend/src/ts/collections/ape-keys.ts index a4ebff64ef86..702b79bb2a54 100644 --- a/frontend/src/ts/collections/ape-keys.ts +++ b/frontend/src/ts/collections/ape-keys.ts @@ -12,7 +12,7 @@ import { setApeKeysDenied, setLastGeneratedApeKey, } from "../states/account-settings"; -import { applyIdWorkaround, tempId } from "./utils/misc"; +import { tempId } from "./utils/misc"; import { ApeKey } from "@monkeytype/schemas/ape-keys"; import { showSuccessNotification } from "../states/notifications"; import { @@ -58,16 +58,14 @@ const apeKeysCollection = createCollection( throw new Error(`Error fetching ape keys: ${response.body.message}`); } - const dataArray = typedEntries(response.body.data) - .map( - ([_id, data]) => - ({ - ...data, - _id, - name: replaceUnderscoresWithSpaces(data.name), - }) satisfies ApeKeyEntry, - ) - .map(applyIdWorkaround); + const dataArray = typedEntries(response.body.data).map( + ([_id, data]) => + ({ + ...data, + _id, + name: replaceUnderscoresWithSpaces(data.name), + }) satisfies ApeKeyEntry, + ); return dataArray; }, diff --git a/frontend/src/ts/collections/connections.ts b/frontend/src/ts/collections/connections.ts index 9fc6322f5228..db31ae6d8ce9 100644 --- a/frontend/src/ts/collections/connections.ts +++ b/frontend/src/ts/collections/connections.ts @@ -10,7 +10,7 @@ import { baseKey } from "../queries/utils/keys"; import { queryCollectionOptions } from "@tanstack/query-db-collection"; import { queryClient } from "../queries"; import Ape from "../ape"; -import { applyIdWorkaround, tempId } from "./utils/misc"; +import { tempId } from "./utils/misc"; import { getUserId, isAuthenticated } from "../states/core"; import { @@ -47,7 +47,7 @@ const connectionsCollection = createCollection( throw new Error(`Error fetching connections:${response.body.message}`); } - return response.body.data.map(applyIdWorkaround); + return response.body.data; }, }), ); diff --git a/frontend/src/ts/collections/custom-themes.ts b/frontend/src/ts/collections/custom-themes.ts index 1d1538d887d7..704a899d3913 100644 --- a/frontend/src/ts/collections/custom-themes.ts +++ b/frontend/src/ts/collections/custom-themes.ts @@ -8,7 +8,7 @@ import { import Ape from "../ape"; import { queryClient } from "../queries"; import { baseKey } from "../queries/utils/keys"; -import { applyIdWorkaround, tempId } from "./utils/misc"; +import { tempId } from "./utils/misc"; import { isAuthenticated } from "../states/core"; export type CustomThemeItem = CustomTheme; @@ -43,7 +43,7 @@ const customThemesCollection = createCollection( `Error fetching custom themes: ${response.body.message}`, ); } - return response.body.data.map(applyIdWorkaround); + return response.body.data; }, }), ); diff --git a/frontend/src/ts/collections/presets.ts b/frontend/src/ts/collections/presets.ts index 664c692205db..424f72e2ba3a 100644 --- a/frontend/src/ts/collections/presets.ts +++ b/frontend/src/ts/collections/presets.ts @@ -9,7 +9,7 @@ import Ape from "../ape"; import { queryClient } from "../queries"; import { baseKey } from "../queries/utils/keys"; import { ConfigGroupName } from "@monkeytype/schemas/configs"; -import { applyIdWorkaround, tempId } from "./utils/misc"; +import { tempId } from "./utils/misc"; import { isAuthenticated } from "../states/core"; import { replaceUnderscoresWithSpaces } from "../utils/strings"; @@ -44,12 +44,10 @@ const presetsCollection = createCollection( throw new Error(`Error fetching presets:${response.body.message}`); } - return response.body.data - .map((it) => ({ - ...it, - name: replaceUnderscoresWithSpaces(it.name), - })) - .map(applyIdWorkaround); + return response.body.data.map((it) => ({ + ...it, + name: replaceUnderscoresWithSpaces(it.name), + })); }, }), ); diff --git a/frontend/src/ts/collections/result-filter-presets.ts b/frontend/src/ts/collections/result-filter-presets.ts index 72a2336ca663..ddc3a9958e37 100644 --- a/frontend/src/ts/collections/result-filter-presets.ts +++ b/frontend/src/ts/collections/result-filter-presets.ts @@ -12,7 +12,7 @@ import { replaceSpacesWithUnderscores, replaceUnderscoresWithSpaces, } from "../utils/strings"; -import { applyIdWorkaround, tempId } from "./utils/misc"; +import { tempId } from "./utils/misc"; import { fetchUserFromApi } from "../ape/user"; import { isAuthenticated } from "../states/core"; @@ -32,12 +32,10 @@ const resultFilterPresetsCollection = createCollection( const userData = await fetchUserFromApi(); if (userData === undefined) return []; - return (userData.resultFilterPresets ?? []) - .map((it) => ({ - ...it, - name: replaceUnderscoresWithSpaces(it.name), - })) - .map(applyIdWorkaround); + return (userData.resultFilterPresets ?? []).map((it) => ({ + ...it, + name: replaceUnderscoresWithSpaces(it.name), + })); }, }), ); diff --git a/frontend/src/ts/collections/results.ts b/frontend/src/ts/collections/results.ts index 16ad4e92fdb8..36e1fcc4b739 100644 --- a/frontend/src/ts/collections/results.ts +++ b/frontend/src/ts/collections/results.ts @@ -41,7 +41,6 @@ import { isDownloaded, waitForDownload, } from "./utils/blocking-download"; -import { applyIdWorkaround } from "./utils/misc"; import { getConfig } from "../config/store"; import { getMode2 } from "../utils/misc"; import { getCurrentQuote } from "../states/test"; @@ -241,9 +240,9 @@ const resultsCollection = createCollection( throw new Error(`Error fetching results:${response.body.message}`); } - const results = response.body.data - .map((result) => normalizeResult(result, knownTagIds)) - .map(applyIdWorkaround); + const results = response.body.data.map((result) => + normalizeResult(result, knownTagIds), + ); if (getLastResult() === undefined && results.length > 0) { const lastResult = results.reduce((acc, cur) => diff --git a/frontend/src/ts/collections/tags.ts b/frontend/src/ts/collections/tags.ts index 7ed0110b56c7..605dd7440411 100644 --- a/frontend/src/ts/collections/tags.ts +++ b/frontend/src/ts/collections/tags.ts @@ -22,7 +22,7 @@ import { } from "@monkeytype/schemas/shared"; import { Difficulty } from "@monkeytype/schemas/configs"; import { Language } from "@monkeytype/schemas/languages"; -import { applyIdWorkaround, isTempId, tempId } from "./utils/misc"; +import { isTempId, tempId } from "./utils/misc"; import { fetchUserFromApi } from "../ape/user"; import { updateTagsInFilterStorage } from "../states/result-filters"; import { isAuthenticated } from "../states/core"; @@ -47,13 +47,11 @@ const tagsCollection = createCollection( if (userData === undefined) return []; - const results = (userData.tags ?? []) - .map((tag) => ({ - ...tag, - name: tag.name.replace(/_/g, " "), - active: activeIds.includes(tag._id), - })) - .map(applyIdWorkaround); + const results = (userData.tags ?? []).map((tag) => ({ + ...tag, + name: tag.name.replace(/_/g, " "), + active: activeIds.includes(tag._id), + })); updateTagsInFilterStorage(results.map((it) => it._id) ?? []); return results; diff --git a/frontend/src/ts/collections/utils/misc.ts b/frontend/src/ts/collections/utils/misc.ts index 1340b46e3a15..7ec9b0f91dfc 100644 --- a/frontend/src/ts/collections/utils/misc.ts +++ b/frontend/src/ts/collections/utils/misc.ts @@ -7,12 +7,3 @@ export function tempId(): string { export function isTempId(id: string): boolean { return id.startsWith(tempIdPrefix); } - -/** - * temp. workaround for https://github.com/TanStack/db/issues/1524 - */ -export function applyIdWorkaround(item: T): T { - //@ts-expect-error this is fine - item.id = item._id; - return item; -}