From e2e35a1a6e43bf6928d11dd3f9e33e03b9fb05a9 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 4 Dec 2024 14:29:33 +0100 Subject: [PATCH 1/9] Upgrade --- .vscode/settings.json | 3 + app/realtime/player.ts | 38 +++++++ app/realtime/room.ts | 20 ++++ app/root.tsx | 11 +- app/routes/rooms.$roomId.tsx | 190 ++++++++++++++--------------------- package.json | 1 + pnpm-lock.yaml | 18 ++++ 7 files changed, 166 insertions(+), 115 deletions(-) create mode 100644 app/realtime/player.ts create mode 100644 app/realtime/room.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 00b93fb..fb52593 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -39,5 +39,8 @@ "Readme*": "AUTHORS, Authors, BACKERS*, Backers*, CHANGELOG*, CITATION*, CODEOWNERS, CODE_OF_CONDUCT*, CONTRIBUTING*, CONTRIBUTORS, COPYING*, CREDITS, Changelog*, Citation*, Code_Of_Conduct*, Codeowners, Contributing*, Contributors, Copying*, Credits, GOVERNANCE.MD, Governance.md, HISTORY.MD, History.md, LICENSE*, License*, MAINTAINERS, Maintainers, README-*, README_*, RELEASE_NOTES*, ROADMAP.MD, Readme-*, Readme_*, Release_Notes*, Roadmap.md, SECURITY.MD, SPONSORS*, Security.md, Sponsors*, authors, backers*, changelog*, citation*, code_of_conduct*, codeowners, contributing*, contributors, copying*, credits, governance.md, history.md, license*, maintainers, readme-*, readme_*, release_notes*, roadmap.md, security.md, sponsors*", "README*": "AUTHORS, Authors, BACKERS*, Backers*, CHANGELOG*, CITATION*, CODEOWNERS, CODE_OF_CONDUCT*, CONTRIBUTING*, CONTRIBUTORS, COPYING*, CREDITS, Changelog*, Citation*, Code_Of_Conduct*, Codeowners, Contributing*, Contributors, Copying*, Credits, GOVERNANCE.MD, Governance.md, HISTORY.MD, History.md, LICENSE*, License*, MAINTAINERS, Maintainers, README-*, README_*, RELEASE_NOTES*, ROADMAP.MD, Readme-*, Readme_*, Release_Notes*, Roadmap.md, SECURITY.MD, SPONSORS*, Security.md, Sponsors*, authors, backers*, changelog*, citation*, code_of_conduct*, codeowners, contributing*, contributors, copying*, credits, governance.md, history.md, license*, maintainers, readme-*, readme_*, release_notes*, roadmap.md, security.md, sponsors*", "Dockerfile": "*.dockerfile, .devcontainer.*, .dockerignore, captain-definition, compose.*, docker-compose.*, dockerfile*" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "biomejs.biome" } } diff --git a/app/realtime/player.ts b/app/realtime/player.ts new file mode 100644 index 0000000..fdf622c --- /dev/null +++ b/app/realtime/player.ts @@ -0,0 +1,38 @@ +import type { RealtimeMessage } from "@supabase/supabase-js" +import { queryClient } from "~/root" +import type { RoomLoaderData } from "~/routes/rooms.$roomId" + +export const handlePlayerUpdate = + (roomId: string, serverLoader: () => Promise) => + async (payload: RealtimeMessage["payload"]) => { + const newItem = payload.new as { + player_id: string + isActive: boolean + score: number + id: string + scrollPosition: { + x: number + y: number + } + } +// biome-ignore lint/style/noNonNullAssertion: This will be there +const data = queryClient.getQueryData(["room", roomId])! + if (!data.players.find((p) => p.playerId === newItem.player_id)) { + const data = await serverLoader() + queryClient.setQueryData(["room", roomId], data) + } + queryClient.setQueryData(["room", roomId], { + ...data, + players: data.players.map((player) => { + if (player.playerId === newItem.player_id) { + return { + ...player, + isActive: newItem.isActive, + score: newItem.score, + scrollPosition: newItem.scrollPosition, + } + } + return player + }), + }) + } diff --git a/app/realtime/room.ts b/app/realtime/room.ts new file mode 100644 index 0000000..cdbe190 --- /dev/null +++ b/app/realtime/room.ts @@ -0,0 +1,20 @@ +import type { RealtimeMessage } from "@supabase/supabase-js" +import { queryClient } from "~/root" +import type { RoomLoaderData } from "~/routes/rooms.$roomId" + +export const handleRoomUpdate = (roomId: string) => (payload: RealtimeMessage["payload"]) => { + const newRoomInfo = payload.new + // biome-ignore lint/style/noNonNullAssertion: This will be there + const data = queryClient.getQueryData(["room", roomId])! + if(payload.new.id !== data.room.id) return + queryClient.setQueryData(["room", data.room.id], { + ...data, + room: { + ...data.room, + ...newRoomInfo, + flippedIndices: newRoomInfo.flippedIndices ?? data.room.flippedIndices, + matchedPairs: newRoomInfo.matchedPairs ?? data.room.matchedPairs, + currentTurn: newRoomInfo.current_turn, + }, + }) +} diff --git a/app/root.tsx b/app/root.tsx index 2772926..b40bcd4 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -1,3 +1,7 @@ +import { + QueryClient, + QueryClientProvider, +} from '@tanstack/react-query' import { useTranslation } from "react-i18next" import { Form, @@ -16,7 +20,8 @@ import type { Route } from "./+types/root" import { getUserFromRequest } from "./queries/user.server" import { commitServerSession, getServerSession } from "./session.server" import tailwindcss from "./tailwind.css?url" - +// Create a client +export const queryClient = new QueryClient() export async function loader({ context, request }: Route.LoaderArgs) { const { lang, clientEnv } = context const player = await getUserFromRequest(request) @@ -75,7 +80,9 @@ export const Layout = ({ children }: { children: React.ReactNode }) => { - {children} + + {children} + diff --git a/app/routes/rooms.$roomId.tsx b/app/routes/rooms.$roomId.tsx index 7ec20fe..75de386 100644 --- a/app/routes/rooms.$roomId.tsx +++ b/app/routes/rooms.$roomId.tsx @@ -1,11 +1,14 @@ +import { useQuery } from "@tanstack/react-query" import { QRCodeSVG } from "qrcode.react" -import { useEffect, useState } from "react" -import { type LoaderFunctionArgs, redirect, useRevalidator, useSubmit } from "react-router" +import { type LoaderFunctionArgs, redirect, useSubmit } from "react-router" import { Grid } from "~/components/game/Grid" import { Leaderboard } from "~/components/game/Leaderboard" import { VictoryScreen } from "~/components/game/VictoryScreen" import { db } from "~/db.server" import { getUserFromRequest } from "~/queries/user.server" +import { handlePlayerUpdate } from "~/realtime/player" +import { handleRoomUpdate } from "~/realtime/room" +import { queryClient } from "~/root" import { supabase } from "~/utils/supabase" import type { Route } from "./+types/rooms.$roomId" @@ -51,6 +54,10 @@ export async function loader({ params, request }: LoaderFunctionArgs) { return { room, players: room.activePlayers, cards: room.cards, user, qrCode } } +export type RoomLoaderData = Awaited> +export type Player = Awaited>["players"][0] +export type Room = Awaited>["room"] + export const action = async ({ request }: Route.ActionArgs) => { const formData = await request.formData() const playerId = formData.get("playerId") as string | null @@ -70,25 +77,44 @@ export const action = async ({ request }: Route.ActionArgs) => { return redirect("/") } -export type Player = Awaited>["players"][0] -export type Room = Awaited>["room"] +export const clientLoader = async ({ serverLoader, params }: Route.ClientLoaderArgs) => { + // Try to get the data from the cache + const cachedData = queryClient.getQueryData(["room", params.roomId]) + // Either used the cached data or fetch it from the server + const data = cachedData ?? (await serverLoader()) + // Don't set the data if it's already there + if (!cachedData) { + queryClient.setQueryData(["room", params.roomId], data) + } + // Subscribe to real-time updates on the room + supabase + .channel("rooms") + .on("postgres_changes", { event: "*", schema: "public", table: "rooms" }, handleRoomUpdate(params.roomId)) + .subscribe() + // Subscribe to real-time updates on the active players + supabase + .channel("active_players") + .on( + "postgres_changes", + { event: "*", schema: "public", table: "active_players" }, + handlePlayerUpdate(params.roomId, serverLoader) + ) + .subscribe() + return data +} -export default function Room({ loaderData }: Route.ComponentProps) { - const { room, players, cards, user, qrCode } = loaderData - const [activeRoom, setActiveRoom] = useState(room) - const [activePlayers, setActivePlayers] = useState(players) - const showVictory = activeRoom.status === "complete" - const submit = useSubmit() - useEffect(() => { - setActiveRoom(room) - }, [room]) +clientLoader.hydrate = true - useEffect(() => { - setActivePlayers(players) - }, [players]) +export default function Room({ loaderData, params }: Route.ComponentProps) { + const { room, cards, user, qrCode } = loaderData + const submit = useSubmit() + const { data } = useQuery({ queryKey: ["room", params.roomId] }) + if (!data) return
Loading...
+ const activeRoom = data.room + const activePlayers = data.players + const showVictory = activeRoom.status === "complete" - const { revalidate } = useRevalidator() - const markAsInactive = () => { + const leaveGame = () => { const formData = new FormData() const activePlayer = activePlayers.find((p) => p.playerId === user.id) if (!activePlayer) return @@ -96,113 +122,51 @@ export default function Room({ loaderData }: Route.ComponentProps) { formData.append("playerId", user.id) submit(formData, { method: "POST" }) } - // Subscribe to real-time updates - useEffect(() => { - const roomSubscription = supabase - .channel("rooms") - .on("postgres_changes", { event: "*", schema: "public", table: "rooms" }, (payload) => { - const newItem = payload.new as { - id: string - created_at: Date - gridSize: number - status: string - created_by: string - current_turn: string | null - winnerId: string | null - matchedPairs: string[] - flippedIndices: number[] - cards: string[] - name: string - } - setActiveRoom({ - ...room, - ...newItem, - flippedIndices: newItem.flippedIndices ?? room.flippedIndices, - matchedPairs: newItem.matchedPairs ?? room.matchedPairs, - currentTurn: newItem.current_turn, - }) - }) - .subscribe() - - const playerSubscription = supabase - .channel("active_players") - .on("postgres_changes", { event: "*", schema: "public", table: "active_players" }, (payload) => { - const newItem = payload.new as { - player_id: string - isActive: boolean - score: number - id: string - scrollPosition: { - x: number - y: number - } - } - - if (!activePlayers.find((p) => p.playerId === newItem.player_id)) { - revalidate() - } - setActivePlayers( - activePlayers.map((player) => { - if (player.playerId === newItem.player_id) { - return { - ...player, - isActive: newItem.isActive, - score: newItem.score, - scrollPosition: newItem.scrollPosition, - } - } - return player - }) - ) - - //revalidate() - }) - .subscribe() - - return () => { - roomSubscription.unsubscribe() - playerSubscription.unsubscribe() - } - }, [revalidate, activePlayers, room]) - + // Update room data + const updateRoom = async (data: Partial) => { + await supabase.from("rooms").update(data).eq("id", activeRoom.id) + } + const updatePlayer = async (data: Partial) => { + await supabase.from("active_players").update(data).eq("room_id", activeRoom.id).eq("player_id", user.id) + } // Handle card clicks const handleCardClick = async (index: number) => { + // Don't do anything if there are already two flipped cards if (activeRoom.flippedIndices.length === 2) return + // Add the clicked card to the flipped indices const newFlippedIndices = [...activeRoom.flippedIndices, index] - await supabase - .from("rooms") - .update({ flippedIndices: [...newFlippedIndices] }) - .eq("id", room.id) + // Update the room with the new flipped indices so everyone can see the change + await updateRoom({ flippedIndices: [...newFlippedIndices] }) + // Check if it's a match if two cards are flipped if (activeRoom.flippedIndices.length === 1) { + // Check if the two cards are the same const isMatch = cards[activeRoom.flippedIndices[0]] === cards[index] const currentPlayerIndex = activePlayers.findIndex((p) => p.player?.name === activeRoom.currentTurn) const currentPlayer = activePlayers[currentPlayerIndex] + // If it's a match, update the player's score and the room's status if (isMatch) { const newMatchedPairs = [...activeRoom.matchedPairs, cards[index]] - const isFinished = newMatchedPairs.length === room.gridSize * 2 - await supabase - .from("active_players") - .update({ score: currentPlayer.score + 1 }) - .eq("room_id", room.id) - .eq("player_id", user.id) - await supabase - .from("rooms") - .update({ matchedPairs: newMatchedPairs, status: isFinished ? "complete" : "waiting" }) - .eq("id", room.id) - if (isFinished) { - return - } + // Check if the game is finished and update the room and the player + const isFinished = newMatchedPairs.length === activeRoom.gridSize * 2 + // Update the player's score + await updatePlayer({ score: currentPlayer.score + 1 }) + // Update the room's status and matched pairs + await updateRoom({ matchedPairs: newMatchedPairs, status: isFinished ? "complete" : "waiting" }) + // Revert the flipped cards so the game can go on + setTimeout(async () => { + await updateRoom({ flippedIndices: [] }) + }, 1000) + // Exit early so that we don't go into the setTimeout below + return } setTimeout(async () => { - await supabase.from("rooms").update({ flippedIndices: [] }).eq("id", room.id) - const nextPlayer = activePlayers[currentPlayerIndex + 1] - if (nextPlayer === undefined) { - await supabase.from("rooms").update({ current_turn: activePlayers[0].player?.name }).eq("id", room.id) - } else { - await supabase.from("rooms").update({ current_turn: nextPlayer.player?.name }).eq("id", room.id) - } + // Move to the next player + await updateRoom({ + flippedIndices: [], + current_turn: !nextPlayer ? activePlayers[0].player?.name : nextPlayer.player?.name, + }) }, 1000) } } @@ -215,7 +179,7 @@ export default function Room({ loaderData }: Route.ComponentProps) {

{activeRoom.name} -

@@ -224,7 +188,7 @@ export default function Room({ loaderData }: Route.ComponentProps) {
- size={activeRoom.gridSize as any} + size={room.gridSize as any} cards={cards} flippedIndices={activeRoom.flippedIndices} matchedPairs={activeRoom.matchedPairs} diff --git a/package.json b/package.json index 4305953..31d98d8 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@prisma/client": "6.0.0", "@react-router/node": "7.0.1", "@supabase/supabase-js": "2.39.3", + "@tanstack/react-query": "5.62.2", "clsx": "2.1.1", "hono": "4.6.12", "i18next": "23.15.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aef01f6..fcb822e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: '@supabase/supabase-js': specifier: 2.39.3 version: 2.39.3 + '@tanstack/react-query': + specifier: 5.62.2 + version: 5.62.2(react@18.3.1) clsx: specifier: 2.1.1 version: 2.1.1 @@ -1423,6 +1426,14 @@ packages: '@supabase/supabase-js@2.39.3': resolution: {integrity: sha512-NoltJSaJNKDJNutO5sJPAAi5RIWrn1z2XH+ig1+cHDojT6BTN7TvZPNa3Kq3gFQWfO5H1N9El/bCTZJ3iFW2kQ==} + '@tanstack/query-core@5.62.2': + resolution: {integrity: sha512-LcwVcC5qpsDpHcqlXUUL5o9SaOBwhNkGeV+B06s0GBoyBr8FqXPuXT29XzYXR36lchhnerp6XO+CWc84/vh7Zg==} + + '@tanstack/react-query@5.62.2': + resolution: {integrity: sha512-fkTpKKfwTJtVPKVR+ag7YqFgG/7TRVVPzduPAUF9zRCiiA8Wu305u+KJl8rCrh98Qce77vzIakvtUyzWLtaPGA==} + peerDependencies: + react: ^18 || ^19 + '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} @@ -4462,6 +4473,13 @@ snapshots: - bufferutil - utf-8-validate + '@tanstack/query-core@5.62.2': {} + + '@tanstack/react-query@5.62.2(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.62.2 + react: 18.3.1 + '@types/cookie@0.6.0': {} '@types/d3-hierarchy@1.1.11': {} From ef2afc97ad293fe50536d9dab6b3603a97f2c813 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 4 Dec 2024 14:32:32 +0100 Subject: [PATCH 2/9] Upgrade --- app/realtime/player.ts | 7 +++---- app/realtime/room.ts | 2 +- app/root.tsx | 9 ++------- knip.json | 18 ++++-------------- package.json | 2 +- vite.config.ts | 4 ++-- 6 files changed, 13 insertions(+), 29 deletions(-) diff --git a/app/realtime/player.ts b/app/realtime/player.ts index fdf622c..6a8f576 100644 --- a/app/realtime/player.ts +++ b/app/realtime/player.ts @@ -3,8 +3,7 @@ import { queryClient } from "~/root" import type { RoomLoaderData } from "~/routes/rooms.$roomId" export const handlePlayerUpdate = - (roomId: string, serverLoader: () => Promise) => - async (payload: RealtimeMessage["payload"]) => { + (roomId: string, serverLoader: () => Promise) => async (payload: RealtimeMessage["payload"]) => { const newItem = payload.new as { player_id: string isActive: boolean @@ -15,8 +14,8 @@ export const handlePlayerUpdate = y: number } } -// biome-ignore lint/style/noNonNullAssertion: This will be there -const data = queryClient.getQueryData(["room", roomId])! + // biome-ignore lint/style/noNonNullAssertion: This will be there + const data = queryClient.getQueryData(["room", roomId])! if (!data.players.find((p) => p.playerId === newItem.player_id)) { const data = await serverLoader() queryClient.setQueryData(["room", roomId], data) diff --git a/app/realtime/room.ts b/app/realtime/room.ts index cdbe190..8406724 100644 --- a/app/realtime/room.ts +++ b/app/realtime/room.ts @@ -6,7 +6,7 @@ export const handleRoomUpdate = (roomId: string) => (payload: RealtimeMessage["p const newRoomInfo = payload.new // biome-ignore lint/style/noNonNullAssertion: This will be there const data = queryClient.getQueryData(["room", roomId])! - if(payload.new.id !== data.room.id) return + if (payload.new.id !== data.room.id) return queryClient.setQueryData(["room", data.room.id], { ...data, room: { diff --git a/app/root.tsx b/app/root.tsx index b40bcd4..ff5c830 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -1,7 +1,4 @@ -import { - QueryClient, - QueryClientProvider, -} from '@tanstack/react-query' +import { QueryClient, QueryClientProvider } from "@tanstack/react-query" import { useTranslation } from "react-i18next" import { Form, @@ -80,9 +77,7 @@ export const Layout = ({ children }: { children: React.ReactNode }) => { - - {children} - + {children} diff --git a/knip.json b/knip.json index a81aae4..ee4b0b1 100644 --- a/knip.json +++ b/knip.json @@ -1,18 +1,8 @@ { "$schema": "https://unpkg.com/knip@5/schema.json", - "entry": [ - "scripts/*.{ts,js}", - "app/routes.ts", - "vite.config.ts", - "app/server/*.ts" - ], + "entry": ["scripts/*.{ts,js}", "app/routes.ts", "vite.config.ts", "app/server/*.ts"], "remix": true, "lefthook": true, - "project": [ - "**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}", - "vite.config.ts" - ], - "ignore": [ - "app/library/icon/icons/types.ts" - ] -} \ No newline at end of file + "project": ["**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}", "vite.config.ts"], + "ignore": ["app/library/icon/icons/types.ts"] +} diff --git a/package.json b/package.json index 31d98d8..dfb54ac 100644 --- a/package.json +++ b/package.json @@ -86,4 +86,4 @@ "node": ">=22.11.0", "pnpm": ">=9.14.2" } -} \ No newline at end of file +} diff --git a/vite.config.ts b/vite.config.ts index 99269ab..afcba90 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -10,9 +10,9 @@ export default defineConfig({ reactRouterDevTools(), reactRouter(), reactRouterHonoServer({ - dev:{ + dev: { exclude: [/^\/(resources)\/.+/], - } + }, }), tsconfigPaths(), iconsSpritesheet({ From 906e17886f836f74c66abee3faf3735c4ee16934 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 4 Dec 2024 18:02:42 +0100 Subject: [PATCH 3/9] unsubscribe from channels, register new players joining in --- app/realtime/player.ts | 3 ++- app/routes/rooms.$roomId.tsx | 23 ++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/realtime/player.ts b/app/realtime/player.ts index 6a8f576..f479e5b 100644 --- a/app/realtime/player.ts +++ b/app/realtime/player.ts @@ -18,7 +18,8 @@ export const handlePlayerUpdate = const data = queryClient.getQueryData(["room", roomId])! if (!data.players.find((p) => p.playerId === newItem.player_id)) { const data = await serverLoader() - queryClient.setQueryData(["room", roomId], data) + + return queryClient.setQueryData(["room", roomId], data) } queryClient.setQueryData(["room", roomId], { ...data, diff --git a/app/routes/rooms.$roomId.tsx b/app/routes/rooms.$roomId.tsx index 75de386..05f7eae 100644 --- a/app/routes/rooms.$roomId.tsx +++ b/app/routes/rooms.$roomId.tsx @@ -1,5 +1,6 @@ import { useQuery } from "@tanstack/react-query" import { QRCodeSVG } from "qrcode.react" +import { useEffect } from "react" import { type LoaderFunctionArgs, redirect, useSubmit } from "react-router" import { Grid } from "~/components/game/Grid" import { Leaderboard } from "~/components/game/Leaderboard" @@ -87,12 +88,12 @@ export const clientLoader = async ({ serverLoader, params }: Route.ClientLoaderA queryClient.setQueryData(["room", params.roomId], data) } // Subscribe to real-time updates on the room - supabase + const roomSubscription = supabase .channel("rooms") .on("postgres_changes", { event: "*", schema: "public", table: "rooms" }, handleRoomUpdate(params.roomId)) .subscribe() // Subscribe to real-time updates on the active players - supabase + const playerSubscription = supabase .channel("active_players") .on( "postgres_changes", @@ -100,7 +101,15 @@ export const clientLoader = async ({ serverLoader, params }: Route.ClientLoaderA handlePlayerUpdate(params.roomId, serverLoader) ) .subscribe() - return data + + const unsubscribe = () => { + roomSubscription.unsubscribe() + playerSubscription.unsubscribe() + } + return { + ...data, + unsubscribe, + } } clientLoader.hydrate = true @@ -109,6 +118,14 @@ export default function Room({ loaderData, params }: Route.ComponentProps) { const { room, cards, user, qrCode } = loaderData const submit = useSubmit() const { data } = useQuery({ queryKey: ["room", params.roomId] }) + // Close the channels when the user leaves the page + useEffect(() => { + return () => { + if ("unsubscribe" in loaderData) { + loaderData.unsubscribe() + } + } + }, [loaderData]) if (!data) return
Loading...
const activeRoom = data.room const activePlayers = data.players From 6db2bfbb217418b0d5fd0c361de5e55004071483 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 4 Dec 2024 18:03:16 +0100 Subject: [PATCH 4/9] fix --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dd00c89..361cc7c 100644 --- a/package.json +++ b/package.json @@ -90,4 +90,4 @@ "pnpm": ">=9.14.2" }, "packageManager": "pnpm@9.14.2" -} \ No newline at end of file +} From 36569c3746daf07e1e0ddb52f3bd41e145e5a5c7 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 4 Dec 2024 18:04:02 +0100 Subject: [PATCH 5/9] fix --- .github/workflows/ci.yml | 3 +-- app/components/game/PlayerCursors.tsx | 23 ----------------------- 2 files changed, 1 insertion(+), 25 deletions(-) delete mode 100644 app/components/game/PlayerCursors.tsx diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9a2ca63..71ec9dd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,8 +37,7 @@ jobs: node-version-file: "package.json" cache: "pnpm" - run: pnpm install --prefer-offline --frozen-lockfile - #- run: pnpm run typecheck - - run: echo "Type Checks are disabled ✅" + - run: pnpm run typecheck vitest: needs: typecheck diff --git a/app/components/game/PlayerCursors.tsx b/app/components/game/PlayerCursors.tsx deleted file mode 100644 index 3aa9cfa..0000000 --- a/app/components/game/PlayerCursors.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import type { Player } from "~/routes/rooms.$roomId" - -export function PlayerCursors({ players }: { players: Player[] }) { - return ( - <> - {players.map( - (player) => - player.isActive && ( -
-
{player.player?.name}
-
- ) - )} - - ) -} From 19d0676455a05c9f924913ce31fcd2a1e04a9305 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 4 Dec 2024 18:06:30 +0100 Subject: [PATCH 6/9] fix --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 361cc7c..016784f 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "test": "vitest run", "test:ui": "vitest --ui --api 9527", "test:cov": "vitest run --coverage", - "typecheck": "tsc", + "typecheck": "react-router typegen && tsc", "validate": "pnpm run check && pnpm run typecheck && pnpm run test && pnpm run check:unused", "check": "biome check .", "check:fix": "biome check --fix .", @@ -90,4 +90,4 @@ "pnpm": ">=9.14.2" }, "packageManager": "pnpm@9.14.2" -} +} \ No newline at end of file From 91781bf96d5e3dd8eee8c259ea4f4c9d19b5e371 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 4 Dec 2024 18:11:38 +0100 Subject: [PATCH 7/9] fix --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 016784f..b6976aa 100644 --- a/package.json +++ b/package.json @@ -90,4 +90,4 @@ "pnpm": ">=9.14.2" }, "packageManager": "pnpm@9.14.2" -} \ No newline at end of file +} From ae5cc6c7d32ad2d5d2e443748c9cc51080690b97 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 4 Dec 2024 19:30:23 +0100 Subject: [PATCH 8/9] Added using for cleanup --- .babelrc | 4 + app/routes/_index.tsx | 3 +- app/routes/rooms.$roomId.tsx | 46 +++--- package.json | 6 +- pnpm-lock.yaml | 283 +++++++++++++++++++++++++++++++++++ tsconfig.json | 4 +- vite.config.ts | 7 + 7 files changed, 326 insertions(+), 27 deletions(-) create mode 100644 .babelrc diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..8788ef9 --- /dev/null +++ b/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@babel/preset-typescript"], + "plugins": ["@babel/plugin-proposal-explicit-resource-management"] +} \ No newline at end of file diff --git a/app/routes/_index.tsx b/app/routes/_index.tsx index 2122f27..e964f29 100644 --- a/app/routes/_index.tsx +++ b/app/routes/_index.tsx @@ -4,6 +4,7 @@ import { z } from "zod" import { db } from "~/db.server" import { getUserFromRequest } from "~/queries/user.server" import { generateEmojiPairs } from "~/utils/emoji" +import { supabase } from "~/utils/supabase" import type { Route } from "./+types/_index" export async function loader() { @@ -82,7 +83,7 @@ export async function action({ request }: Route.ActionArgs) { } export default function Index() { const { rooms } = useLoaderData() - + console.log(supabase.getChannels()) return (
diff --git a/app/routes/rooms.$roomId.tsx b/app/routes/rooms.$roomId.tsx index 05f7eae..8e18610 100644 --- a/app/routes/rooms.$roomId.tsx +++ b/app/routes/rooms.$roomId.tsx @@ -1,6 +1,5 @@ import { useQuery } from "@tanstack/react-query" import { QRCodeSVG } from "qrcode.react" -import { useEffect } from "react" import { type LoaderFunctionArgs, redirect, useSubmit } from "react-router" import { Grid } from "~/components/game/Grid" import { Leaderboard } from "~/components/game/Leaderboard" @@ -78,19 +77,11 @@ export const action = async ({ request }: Route.ActionArgs) => { return redirect("/") } -export const clientLoader = async ({ serverLoader, params }: Route.ClientLoaderArgs) => { - // Try to get the data from the cache - const cachedData = queryClient.getQueryData(["room", params.roomId]) - // Either used the cached data or fetch it from the server - const data = cachedData ?? (await serverLoader()) - // Don't set the data if it's already there - if (!cachedData) { - queryClient.setQueryData(["room", params.roomId], data) - } +const realtime = (roomId: string, serverLoader: any) => { // Subscribe to real-time updates on the room const roomSubscription = supabase .channel("rooms") - .on("postgres_changes", { event: "*", schema: "public", table: "rooms" }, handleRoomUpdate(params.roomId)) + .on("postgres_changes", { event: "*", schema: "public", table: "rooms" }, handleRoomUpdate(roomId)) .subscribe() // Subscribe to real-time updates on the active players const playerSubscription = supabase @@ -98,17 +89,31 @@ export const clientLoader = async ({ serverLoader, params }: Route.ClientLoaderA .on( "postgres_changes", { event: "*", schema: "public", table: "active_players" }, - handlePlayerUpdate(params.roomId, serverLoader) + handlePlayerUpdate(roomId, serverLoader) ) .subscribe() + return { + [Symbol.dispose]() { + playerSubscription.unsubscribe() + roomSubscription.unsubscribe() + }, + } +} - const unsubscribe = () => { - roomSubscription.unsubscribe() - playerSubscription.unsubscribe() +export const clientLoader = async ({ serverLoader, params }: Route.ClientLoaderArgs) => { + // Try to get the data from the cache + const cachedData = queryClient.getQueryData(["room", params.roomId]) + // Either used the cached data or fetch it from the server + const data = cachedData ?? (await serverLoader()) + // Don't set the data if it's already there + if (!cachedData) { + queryClient.setQueryData(["room", params.roomId], data) } + + using a = realtime(params.roomId, serverLoader) + return { ...data, - unsubscribe, } } @@ -118,14 +123,7 @@ export default function Room({ loaderData, params }: Route.ComponentProps) { const { room, cards, user, qrCode } = loaderData const submit = useSubmit() const { data } = useQuery({ queryKey: ["room", params.roomId] }) - // Close the channels when the user leaves the page - useEffect(() => { - return () => { - if ("unsubscribe" in loaderData) { - loaderData.unsubscribe() - } - } - }, [loaderData]) + if (!data) return
Loading...
const activeRoom = data.room const activePlayers = data.players diff --git a/package.json b/package.json index b6976aa..1d6d70b 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,8 @@ "zod": "3.23.8" }, "devDependencies": { + "@babel/plugin-proposal-explicit-resource-management": "7.25.9", + "@babel/preset-typescript": "7.26.0", "@biomejs/biome": "1.9.4", "@dotenvx/dotenvx": "1.24.5", "@react-router/dev": "7.0.1", @@ -81,7 +83,9 @@ "tsx": "4.19.2", "typescript": "5.6.3", "vite": "5.4.11", + "vite-plugin-babel": "1.3.0", "vite-plugin-icons-spritesheet": "2.2.1", + "vite-plugin-inspect": "0.8.0", "vite-tsconfig-paths": "5.1.3", "vitest": "2.1.5" }, @@ -90,4 +94,4 @@ "pnpm": ">=9.14.2" }, "packageManager": "pnpm@9.14.2" -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 86368c4..66e6f09 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,6 +75,12 @@ importers: specifier: 3.23.8 version: 3.23.8 devDependencies: + '@babel/plugin-proposal-explicit-resource-management': + specifier: 7.25.9 + version: 7.25.9(@babel/core@7.26.0) + '@babel/preset-typescript': + specifier: 7.26.0 + version: 7.26.0(@babel/core@7.26.0) '@biomejs/biome': specifier: 1.9.4 version: 1.9.4 @@ -144,9 +150,15 @@ importers: vite: specifier: 5.4.11 version: 5.4.11(@types/node@22.9.1) + vite-plugin-babel: + specifier: 1.3.0 + version: 1.3.0(@babel/core@7.26.0)(vite@5.4.11(@types/node@22.9.1)) vite-plugin-icons-spritesheet: specifier: 2.2.1 version: 2.2.1(vite@5.4.11(@types/node@22.9.1)) + vite-plugin-inspect: + specifier: 0.8.0 + version: 0.8.0(rollup@4.27.4)(vite@5.4.11(@types/node@22.9.1)) vite-tsconfig-paths: specifier: 5.1.3 version: 5.1.3(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.1)) @@ -164,6 +176,9 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} @@ -251,6 +266,12 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-proposal-explicit-resource-management@7.25.9': + resolution: {integrity: sha512-EbtfSvb6s4lZwef1nH52nw4DTUAvHY6bl1mbLgEHUkR6L8j4WY70mM/InB8Ozgdlok/7etbiSW+Wc88ZebZAKQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-decorators@7.25.9': resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} engines: {node: '>=6.9.0'} @@ -1294,6 +1315,15 @@ packages: typescript: optional: true + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.27.4': resolution: {integrity: sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==} cpu: [arm] @@ -1591,6 +1621,10 @@ packages: resolution: {integrity: sha512-1iF6Ey2qxDkm6bPgKcoXUmwFDpoRi5IgwefQDDQBRLxlZAAYwcULoQ2IdBArXZuSsuL7AT+KvZI9xZVLeUZPRg==} hasBin: true + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -1598,6 +1632,10 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -1616,6 +1654,10 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -1826,9 +1868,21 @@ packages: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} + default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + + default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -1910,6 +1964,9 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-stack-parser-es@0.1.5: + resolution: {integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==} + es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} @@ -1931,6 +1988,9 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -1938,6 +1998,10 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} + execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + exit-hook@2.2.1: resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} engines: {node: '>=6'} @@ -2003,6 +2067,10 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -2090,6 +2158,10 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + i18next-browser-languagedetector@8.0.0: resolution: {integrity: sha512-zhXdJXTTCoG39QsrOCiOabnWj2jecouOqbchu3EfhtSHxIB5Uugnm9JaizenOy39h7ne3+fLikIjeW88+rgszw==} @@ -2135,6 +2207,16 @@ packages: is-deflate@1.0.0: resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -2151,6 +2233,11 @@ packages: resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} engines: {node: '>=0.10.0'} + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2159,6 +2246,14 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -2360,6 +2455,10 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + minimatch@9.0.1: resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} engines: {node: '>=16 || 14 >=14.17'} @@ -2436,6 +2535,10 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -2458,6 +2561,14 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} @@ -2484,6 +2595,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -2819,6 +2934,10 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -2858,6 +2977,10 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + sirv@3.0.0: resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} engines: {node: '>=18'} @@ -2935,6 +3058,10 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + strip-json-comments@5.0.1: resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} engines: {node: '>=14.16'} @@ -3010,6 +3137,10 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} + titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -3064,6 +3195,10 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true @@ -3126,11 +3261,27 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-plugin-babel@1.3.0: + resolution: {integrity: sha512-C5WKX0UwvQKH8WD2GiyWUjI62UBfLbfUhiLexnIm4asLdENX5ymrRipFlBnGeVxoOaYgTL5dh5KW6YDGpWsR8A==} + peerDependencies: + '@babel/core': ^7.0.0 + vite: ^2.7.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + vite-plugin-icons-spritesheet@2.2.1: resolution: {integrity: sha512-j/sGGQfPgPp802TgbYLspry8fk6w13CXIaDlGgn4jUcRILpNWWcFb7vXrGVrF4cNkHfwcDXf69+RvdYv6ijeIw==} peerDependencies: vite: '>=5.2.0' + vite-plugin-inspect@0.8.0: + resolution: {integrity: sha512-6Ijifcb/dWYSZoTlkYaJmLfnsi3tR19qB706CV7D4mG6PBgBx4e5cGmICaxAFwlF9yJv6MeMwmNlXa4exA9DQw==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + vite-tsconfig-paths@5.1.3: resolution: {integrity: sha512-0bz+PDlLpGfP2CigeSKL9NFTF1KtXkeHGZSSaGQSuPZH77GhoiQaA8IjYgOaynSuwlDTolSUEU0ErVvju3NURg==} peerDependencies: @@ -3300,6 +3451,8 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@antfu/utils@0.7.10': {} + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -3428,6 +3581,11 @@ snapshots: dependencies: '@babel/types': 7.26.0 + '@babel/plugin-proposal-explicit-resource-management@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -4362,6 +4520,14 @@ snapshots: optionalDependencies: typescript: 5.6.3 + '@rollup/pluginutils@5.1.3(rollup@4.27.4)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.27.4 + '@rollup/rollup-android-arm-eabi@4.27.4': optional: true @@ -4664,10 +4830,16 @@ snapshots: html: 1.0.0 js-beautify: 1.15.1 + big-integer@1.6.52: {} + binary-extensions@2.3.0: {} boolbase@1.0.0: {} + bplist-parser@0.2.0: + dependencies: + big-integer: 1.6.52 + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 @@ -4689,6 +4861,10 @@ snapshots: buffer-from@1.1.2: {} + bundle-name@3.0.0: + dependencies: + run-applescript: 5.0.0 + cac@6.7.14: {} callsites@3.1.0: {} @@ -4867,11 +5043,25 @@ snapshots: deep-eql@5.0.2: {} + default-browser-id@3.0.0: + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + + default-browser@4.0.0: + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + defaults@1.0.4: dependencies: clone: 1.0.4 optional: true + define-lazy-prop@3.0.0: {} + dequal@2.0.3: {} detect-node-es@1.1.0: {} @@ -4958,6 +5148,8 @@ snapshots: dependencies: is-arrayish: 0.2.1 + error-stack-parser-es@0.1.5: {} + es-module-lexer@1.5.4: {} esbuild@0.21.5: @@ -5017,6 +5209,8 @@ snapshots: escape-string-regexp@4.0.0: {} + estree-walker@2.0.2: {} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.6 @@ -5033,6 +5227,18 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 + execa@7.2.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + exit-hook@2.2.1: {} expect-type@1.1.0: {} @@ -5085,6 +5291,12 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + fsevents@2.3.3: optional: true @@ -5164,6 +5376,8 @@ snapshots: human-signals@2.1.0: {} + human-signals@4.3.1: {} + i18next-browser-languagedetector@8.0.0: dependencies: '@babel/runtime': 7.26.0 @@ -5203,6 +5417,10 @@ snapshots: is-deflate@1.0.0: {} + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -5213,10 +5431,20 @@ snapshots: is-gzip@1.0.0: {} + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-number@7.0.0: {} is-stream@2.0.1: {} + is-stream@3.0.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + isarray@1.0.0: {} isbot@5.1.17: {} @@ -5401,6 +5629,8 @@ snapshots: mimic-fn@2.1.0: {} + mimic-fn@4.0.0: {} + minimatch@9.0.1: dependencies: brace-expansion: 2.0.1 @@ -5473,6 +5703,10 @@ snapshots: dependencies: path-key: 3.1.1 + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -5491,6 +5725,17 @@ snapshots: dependencies: mimic-fn: 2.1.0 + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + open@9.1.0: + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + p-map@4.0.0: dependencies: aggregate-error: 3.1.0 @@ -5514,6 +5759,8 @@ snapshots: path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} path-scurry@1.11.1: @@ -5870,6 +6117,10 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.27.4 fsevents: 2.3.3 + run-applescript@5.0.0: + dependencies: + execa: 5.1.1 + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -5898,6 +6149,12 @@ snapshots: signal-exit@4.1.0: {} + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + sirv@3.0.0: dependencies: '@polka/url': 1.0.0-next.28 @@ -5969,6 +6226,8 @@ snapshots: strip-final-newline@2.0.0: {} + strip-final-newline@3.0.0: {} + strip-json-comments@5.0.1: {} stylis@4.2.0: {} @@ -6058,6 +6317,8 @@ snapshots: tinyspy@3.0.2: {} + titleize@3.0.0: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -6093,6 +6354,8 @@ snapshots: universalify@2.0.1: {} + untildify@4.0.0: {} + update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: browserslist: 4.24.2 @@ -6167,6 +6430,11 @@ snapshots: - supports-color - terser + vite-plugin-babel@1.3.0(@babel/core@7.26.0)(vite@5.4.11(@types/node@22.9.1)): + dependencies: + '@babel/core': 7.26.0 + vite: 5.4.11(@types/node@22.9.1) + vite-plugin-icons-spritesheet@2.2.1(vite@5.4.11(@types/node@22.9.1)): dependencies: '@biomejs/js-api': 0.6.2(@biomejs/wasm-nodejs@1.9.4) @@ -6180,6 +6448,21 @@ snapshots: - '@biomejs/wasm-bundler' - '@biomejs/wasm-web' + vite-plugin-inspect@0.8.0(rollup@4.27.4)(vite@5.4.11(@types/node@22.9.1)): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.3(rollup@4.27.4) + debug: 4.3.7 + error-stack-parser-es: 0.1.5 + fs-extra: 11.2.0 + open: 9.1.0 + picocolors: 1.1.1 + sirv: 2.0.4 + vite: 5.4.11(@types/node@22.9.1) + transitivePeerDependencies: + - rollup + - supports-color + vite-tsconfig-paths@5.1.3(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.1)): dependencies: debug: 4.3.7 diff --git a/tsconfig.json b/tsconfig.json index 8b8dc5d..5859385 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ "include": ["env.d.ts", "**/*.ts", "**/*.tsx", "**/**/.server/**/*.ts", ".react-router/types/**/*"], "compilerOptions": { "types": ["vitest/globals"], - "lib": ["DOM", "DOM.Iterable", "ES2023"], + "lib": ["DOM", "DOM.Iterable", "ES2023", "ESNext.Disposable"], "isolatedModules": true, "esModuleInterop": true, "jsx": "react-jsx", @@ -22,5 +22,7 @@ "plugins": [{ "name": "@react-router/dev" }], // Vite takes care of building everything, not tsc. "noEmit": true + } + } diff --git a/vite.config.ts b/vite.config.ts index afcba90..e144ade 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,11 +2,18 @@ import { reactRouter } from "@react-router/dev/vite" import { reactRouterDevTools } from "react-router-devtools" import { reactRouterHonoServer } from "react-router-hono-server/dev" import { defineConfig } from "vite" +import babel from "vite-plugin-babel" import { iconsSpritesheet } from "vite-plugin-icons-spritesheet" +import inspect from "vite-plugin-inspect" import tsconfigPaths from "vite-tsconfig-paths" export default defineConfig({ plugins: [ + inspect(), + babel({ + include: ["./app/**/*"], + filter: name => name.endsWith("tsx"), + }), reactRouterDevTools(), reactRouter(), reactRouterHonoServer({ From b6de09c4e5e8047efd032f59797a12c9ba82e070 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 4 Dec 2024 20:51:14 +0100 Subject: [PATCH 9/9] fix --- .babelrc | 4 +- app/routes/_index.tsx | 3 +- app/routes/rooms.$roomId.tsx | 4 +- package.json | 7 +- pnpm-lock.yaml | 531 ++++++++++++++++++----------------- tsconfig.json | 2 - vite.config.ts | 4 +- 7 files changed, 279 insertions(+), 276 deletions(-) diff --git a/.babelrc b/.babelrc index 8788ef9..275e061 100644 --- a/.babelrc +++ b/.babelrc @@ -1,4 +1,4 @@ { "presets": ["@babel/preset-typescript"], - "plugins": ["@babel/plugin-proposal-explicit-resource-management"] -} \ No newline at end of file + "plugins": ["@babel/plugin-proposal-explicit-resource-management", "babel-plugin-react-compiler"] +} diff --git a/app/routes/_index.tsx b/app/routes/_index.tsx index e964f29..2122f27 100644 --- a/app/routes/_index.tsx +++ b/app/routes/_index.tsx @@ -4,7 +4,6 @@ import { z } from "zod" import { db } from "~/db.server" import { getUserFromRequest } from "~/queries/user.server" import { generateEmojiPairs } from "~/utils/emoji" -import { supabase } from "~/utils/supabase" import type { Route } from "./+types/_index" export async function loader() { @@ -83,7 +82,7 @@ export async function action({ request }: Route.ActionArgs) { } export default function Index() { const { rooms } = useLoaderData() - console.log(supabase.getChannels()) + return (
diff --git a/app/routes/rooms.$roomId.tsx b/app/routes/rooms.$roomId.tsx index 8e18610..3f38625 100644 --- a/app/routes/rooms.$roomId.tsx +++ b/app/routes/rooms.$roomId.tsx @@ -77,6 +77,7 @@ export const action = async ({ request }: Route.ActionArgs) => { return redirect("/") } +// biome-ignore lint/suspicious/noExplicitAny: const realtime = (roomId: string, serverLoader: any) => { // Subscribe to real-time updates on the room const roomSubscription = supabase @@ -93,6 +94,7 @@ const realtime = (roomId: string, serverLoader: any) => { ) .subscribe() return { + test: "", [Symbol.dispose]() { playerSubscription.unsubscribe() roomSubscription.unsubscribe() @@ -110,7 +112,7 @@ export const clientLoader = async ({ serverLoader, params }: Route.ClientLoaderA queryClient.setQueryData(["room", params.roomId], data) } - using a = realtime(params.roomId, serverLoader) + using _a = realtime(params.roomId, serverLoader) return { ...data, diff --git a/package.json b/package.json index 1d6d70b..9398c9b 100644 --- a/package.json +++ b/package.json @@ -47,8 +47,8 @@ "isbot": "5.1.17", "pretty-cache-header": "1.0.0", "qrcode.react": "4.1.0", - "react": "18.3.1", - "react-dom": "18.3.1", + "react": "19.0.0-beta-26f2496093-20240514", + "react-dom": "19.0.0-beta-26f2496093-20240514", "react-i18next": "15.1.1", "react-router": "7.0.1", "react-router-hono-server": "2.0.0", @@ -71,6 +71,7 @@ "@vitest/coverage-v8": "2.1.5", "@vitest/ui": "2.1.5", "autoprefixer": "10.4.20", + "babel-plugin-react-compiler": "19.0.0-beta-df7b47d-20241124", "chalk": "5.3.0", "happy-dom": "15.11.6", "knip": "5.37.2", @@ -94,4 +95,4 @@ "pnpm": ">=9.14.2" }, "packageManager": "pnpm@9.14.2" -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 66e6f09..4176a50 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,13 +16,13 @@ importers: version: 6.0.1(prisma@6.0.1) '@react-router/node': specifier: 7.0.1 - version: 7.0.1(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3) + version: 7.0.1(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(typescript@5.6.3) '@supabase/supabase-js': specifier: 2.39.3 version: 2.39.3 '@tanstack/react-query': specifier: 5.62.2 - version: 5.62.2(react@18.3.1) + version: 5.62.2(react@19.0.0-beta-26f2496093-20240514) clsx: specifier: 2.1.1 version: 2.1.1 @@ -46,28 +46,28 @@ importers: version: 1.0.0 qrcode.react: specifier: 4.1.0 - version: 4.1.0(react@18.3.1) + version: 4.1.0(react@19.0.0-beta-26f2496093-20240514) react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0-beta-26f2496093-20240514 + version: 19.0.0-beta-26f2496093-20240514 react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0-beta-26f2496093-20240514 + version: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) react-i18next: specifier: 15.1.1 - version: 15.1.1(i18next@23.15.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 15.1.1(i18next@23.15.2)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) react-router: specifier: 7.0.1 - version: 7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) react-router-hono-server: specifier: 2.0.0 - version: 2.0.0(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.11(@types/node@22.9.1)) + version: 2.0.0(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(vite@5.4.11(@types/node@22.9.1)) remix-hono: specifier: 0.0.16 - version: 0.0.16(i18next@23.15.2)(remix-i18next@7.0.0(i18next@23.15.2)(react-i18next@15.1.1(i18next@23.15.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(zod@3.23.8) + version: 0.0.16(i18next@23.15.2)(remix-i18next@7.0.0(i18next@23.15.2)(react-i18next@15.1.1(i18next@23.15.2)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(typescript@5.6.3)(zod@3.23.8) remix-i18next: specifier: 7.0.0 - version: 7.0.0(i18next@23.15.2)(react-i18next@15.1.1(i18next@23.15.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 7.0.0(i18next@23.15.2)(react-i18next@15.1.1(i18next@23.15.2)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) tailwind-merge: specifier: 2.5.4 version: 2.5.4 @@ -89,10 +89,10 @@ importers: version: 1.24.5 '@react-router/dev': specifier: 7.0.1 - version: 7.0.1(@types/node@22.9.1)(babel-plugin-macros@3.1.0)(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.1)) + version: 7.0.1(@types/node@22.9.1)(babel-plugin-macros@3.1.0)(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.1)) '@react-router/fs-routes': specifier: 7.0.1 - version: 7.0.1(@react-router/dev@7.0.1(@types/node@22.9.1)(babel-plugin-macros@3.1.0)(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.1)))(typescript@5.6.3) + version: 7.0.1(@react-router/dev@7.0.1(@types/node@22.9.1)(babel-plugin-macros@3.1.0)(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.1)))(typescript@5.6.3) '@types/node': specifier: 22.9.1 version: 22.9.1 @@ -114,6 +114,9 @@ importers: autoprefixer: specifier: 10.4.20 version: 10.4.20(postcss@8.4.49) + babel-plugin-react-compiler: + specifier: 19.0.0-beta-df7b47d-20241124 + version: 19.0.0-beta-df7b47d-20241124 chalk: specifier: 5.3.0 version: 5.3.0 @@ -137,7 +140,7 @@ importers: version: 1.3.0 react-router-devtools: specifier: 1.0.3 - version: 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@22.9.1)) + version: 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(vite@5.4.11(@types/node@22.9.1)) tailwindcss: specifier: 3.4.15 version: 3.4.15 @@ -1614,6 +1617,9 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} + babel-plugin-react-compiler@19.0.0-beta-df7b47d-20241124: + resolution: {integrity: sha512-93iSASR20HNsotcOTQ+KPL0zpgfRFVWL86AtXpmHp995HuMVnC9femd8Winr3GxkPEh8lEOyaw3nqY4q2HUm5w==} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2759,10 +2765,10 @@ packages: react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 react-dom: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + react-dom@19.0.0-beta-26f2496093-20240514: + resolution: {integrity: sha512-UvQ+K1l3DFQ34LDgfFSNuUGi9EC+yfE9tS6MdpNTd5fx7qC7KLfepfC/KpxWMQZ7JfE3axD4ZO6H4cBSpAZpqw==} peerDependencies: - react: ^18.3.1 + react: 19.0.0-beta-26f2496093-20240514 react-hotkeys-hook@4.6.1: resolution: {integrity: sha512-XlZpbKUj9tkfgPgT9gA+1p7Ey6vFIZHttUjPqpTdyT5nqQ8mHL7elxvSbaC+dpSiHUSmr21Ya1mDxBZG3aje4Q==} @@ -2855,8 +2861,8 @@ packages: react: '>=16.14.0' react-dom: '>=16.14.0' - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + react@19.0.0-beta-26f2496093-20240514: + resolution: {integrity: sha512-ZsU/WjNZ6GfzMWsq2DcGjElpV9it8JmETHm9mAJuOJNhuJcWJxt8ltCJabONFRpDFq1A/DP0d0KFj9CTJVM4VA==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -2944,8 +2950,8 @@ packages: safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.25.0-beta-26f2496093-20240514: + resolution: {integrity: sha512-vDwOytLHFnA3SW2B1lNcbO+/qKVyLCX+KLpm+tRGNDsXpyxzRgkIaYGWmX+S70AJGchUHCtuqQ50GFeFgDbXUw==} semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -3702,14 +3708,14 @@ snapshots: '@biomejs/wasm-nodejs@1.9.4': {} - '@bkrem/react-transition-group@1.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@bkrem/react-transition-group@1.3.3(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: chain-function: 1.0.1 dom-helpers: 3.4.0 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) react-lifecycles-compat: 3.0.4 warning: 3.0.0 @@ -3937,11 +3943,11 @@ snapshots: '@floating-ui/core': 1.6.8 '@floating-ui/utils': 0.2.8 - '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react-dom@2.1.2(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@floating-ui/dom': 1.6.12 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) '@floating-ui/utils@0.2.8': {} @@ -4091,348 +4097,348 @@ snapshots: '@radix-ui/primitive@1.1.0': {} - '@radix-ui/react-accordion@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-accordion@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collapsible': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-collapsible': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-collapsible@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collapsible@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-context@1.0.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-context@1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-context@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-context@1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-context@1.1.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-context@1.1.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-direction@1.0.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-direction@1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-direction@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-direction@1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-id@1.0.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-id@1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-id@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-id@1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-popper@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-popper@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.12)(react@18.3.1) + '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) '@radix-ui/rect': 1.0.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-portal@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-presence@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-presence@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-select@1.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-select@1.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.0.2(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.5(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) + react-remove-scroll: 2.5.5(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-slot@1.0.2(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-slot@1.0.2(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-slot@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-slot@1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-use-previous@1.0.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-previous@1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-use-rect@1.0.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-rect@1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 '@radix-ui/rect': 1.0.1 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-use-size@1.0.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-size@1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: '@types/react': 18.3.12 - '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@babel/runtime': 7.26.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 @@ -4441,7 +4447,7 @@ snapshots: dependencies: '@babel/runtime': 7.26.0 - '@react-router/dev@7.0.1(@types/node@22.9.1)(babel-plugin-macros@3.1.0)(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.1))': + '@react-router/dev@7.0.1(@types/node@22.9.1)(babel-plugin-macros@3.1.0)(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.1))': dependencies: '@babel/core': 7.26.0 '@babel/generator': 7.26.2 @@ -4452,7 +4458,7 @@ snapshots: '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 '@npmcli/package-json': 4.0.1 - '@react-router/node': 7.0.1(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3) + '@react-router/node': 7.0.1(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(typescript@5.6.3) arg: 5.0.2 babel-dead-code-elimination: 1.0.6 chokidar: 4.0.1 @@ -4468,7 +4474,7 @@ snapshots: picomatch: 2.3.1 prettier: 2.8.8 react-refresh: 0.14.2 - react-router: 7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router: 7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) semver: 7.6.3 set-cookie-parser: 2.7.1 valibot: 0.41.0(typescript@5.6.3) @@ -4489,17 +4495,17 @@ snapshots: - supports-color - terser - '@react-router/fs-routes@7.0.1(@react-router/dev@7.0.1(@types/node@22.9.1)(babel-plugin-macros@3.1.0)(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.1)))(typescript@5.6.3)': + '@react-router/fs-routes@7.0.1(@react-router/dev@7.0.1(@types/node@22.9.1)(babel-plugin-macros@3.1.0)(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.1)))(typescript@5.6.3)': dependencies: - '@react-router/dev': 7.0.1(@types/node@22.9.1)(babel-plugin-macros@3.1.0)(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.1)) + '@react-router/dev': 7.0.1(@types/node@22.9.1)(babel-plugin-macros@3.1.0)(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(typescript@5.6.3)(vite@5.4.11(@types/node@22.9.1)) minimatch: 9.0.5 optionalDependencies: typescript: 5.6.3 - '@react-router/node@7.0.1(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)': + '@react-router/node@7.0.1(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(typescript@5.6.3)': dependencies: '@mjackson/node-fetch-server': 0.2.0 - react-router: 7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router: 7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) source-map-support: 0.5.21 stream-slice: 0.1.2 undici: 6.21.0 @@ -4641,10 +4647,10 @@ snapshots: '@tanstack/query-core@5.62.2': {} - '@tanstack/react-query@5.62.2(react@18.3.1)': + '@tanstack/react-query@5.62.2(react@19.0.0-beta-26f2496093-20240514)': dependencies: '@tanstack/query-core': 5.62.2 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 '@types/cookie@0.6.0': {} @@ -4822,6 +4828,10 @@ snapshots: cosmiconfig: 7.1.0 resolve: 1.22.8 + babel-plugin-react-compiler@19.0.0-beta-df7b47d-20241124: + dependencies: + '@babel/types': 7.26.0 + balanced-match@1.0.2: {} beautify@0.0.8: @@ -5278,12 +5288,12 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@11.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + framer-motion@11.12.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514): dependencies: tslib: 2.8.1 optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) fs-extra@10.1.0: dependencies: @@ -5883,15 +5893,15 @@ snapshots: inherits: 2.0.4 pump: 2.0.1 - qrcode.react@4.1.0(react@18.3.1): + qrcode.react@4.1.0(react@19.0.0-beta-26f2496093-20240514): dependencies: - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 queue-microtask@1.2.3: {} - react-d3-tree@3.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-d3-tree@3.6.2(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514): dependencies: - '@bkrem/react-transition-group': 1.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@bkrem/react-transition-group': 1.3.3(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) '@types/d3-hierarchy': 1.1.11 clone: 2.1.2 d3-hierarchy: 1.1.9 @@ -5899,41 +5909,40 @@ snapshots: d3-shape: 1.3.7 d3-zoom: 3.0.0 dequal: 2.0.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) uuid: 8.3.2 - react-diff-viewer-continued@3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-diff-viewer-continued@3.4.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514): dependencies: '@emotion/css': 11.13.5 classnames: 2.5.1 diff: 5.2.0 memoize-one: 6.0.0 prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) transitivePeerDependencies: - supports-color - react-dom@18.3.1(react@18.3.1): + react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514): dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 + react: 19.0.0-beta-26f2496093-20240514 + scheduler: 0.25.0-beta-26f2496093-20240514 - react-hotkeys-hook@4.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-hotkeys-hook@4.6.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514): dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) - react-i18next@15.1.1(i18next@23.15.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-i18next@15.1.1(i18next@23.15.2)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514): dependencies: '@babel/runtime': 7.26.0 html-parse-stringify: 3.0.1 i18next: 23.15.2 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 optionalDependencies: - react-dom: 18.3.1(react@18.3.1) + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) react-is@16.13.1: {} @@ -5941,46 +5950,46 @@ snapshots: react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.6(@types/react@18.3.12)(react@18.3.1): + react-remove-scroll-bar@2.3.6(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514): dependencies: - react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0-beta-26f2496093-20240514 + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.12 - react-remove-scroll@2.5.5(@types/react@18.3.12)(react@18.3.1): + react-remove-scroll@2.5.5(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514): dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0-beta-26f2496093-20240514 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) tslib: 2.8.1 - use-callback-ref: 1.3.2(@types/react@18.3.12)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.12)(react@18.3.1) + use-callback-ref: 1.3.2(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) + use-sidecar: 1.1.2(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514) optionalDependencies: '@types/react': 18.3.12 - react-router-devtools@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@22.9.1)): + react-router-devtools@1.0.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(vite@5.4.11(@types/node@22.9.1)): dependencies: '@babel/core': 7.26.0 '@babel/generator': 7.26.2 '@babel/parser': 7.26.2 '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 - '@radix-ui/react-accordion': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-accordion': 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + '@radix-ui/react-select': 1.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) beautify: 0.0.8 chalk: 5.3.0 clsx: 2.1.1 date-fns: 4.1.0 - framer-motion: 11.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-d3-tree: 3.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-diff-viewer-continued: 3.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-dom: 18.3.1(react@18.3.1) - react-hotkeys-hook: 4.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-router: 7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-tooltip: 5.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + framer-motion: 11.12.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + react: 19.0.0-beta-26f2496093-20240514 + react-d3-tree: 3.6.2(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + react-diff-viewer-continued: 3.4.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) + react-hotkeys-hook: 4.6.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + react-router: 7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + react-tooltip: 5.28.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) vite: 5.4.11(@types/node@22.9.1) optionalDependencies: '@rollup/rollup-linux-x64-gnu': 4.27.4 @@ -5990,47 +5999,45 @@ snapshots: - '@types/react-dom' - supports-color - react-router-hono-server@2.0.0(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@5.4.11(@types/node@22.9.1)): + react-router-hono-server@2.0.0(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(vite@5.4.11(@types/node@22.9.1)): dependencies: '@drizzle-team/brocli': 0.11.0 '@hono/node-server': 1.13.7(hono@4.6.12) '@hono/vite-dev-server': 0.17.0(hono@4.6.12) hono: 4.6.12 - react-router: 7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-router: 7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) vite: 5.4.11(@types/node@22.9.1) transitivePeerDependencies: - miniflare - wrangler - react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514): dependencies: '@types/cookie': 0.6.0 cookie: 1.0.2 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 set-cookie-parser: 2.7.1 turbo-stream: 2.4.0 optionalDependencies: - react-dom: 18.3.1(react@18.3.1) + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) - react-style-singleton@2.2.1(@types/react@18.3.12)(react@18.3.1): + react-style-singleton@2.2.1(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.12 - react-tooltip@5.28.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-tooltip@5.28.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514): dependencies: '@floating-ui/dom': 1.6.12 classnames: 2.5.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0-beta-26f2496093-20240514 + react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) - react@18.3.1: - dependencies: - loose-envify: 1.4.0 + react@19.0.0-beta-26f2496093-20240514: {} read-cache@1.0.0: dependencies: @@ -6058,24 +6065,24 @@ snapshots: regenerator-runtime@0.14.1: {} - remix-hono@0.0.16(i18next@23.15.2)(remix-i18next@7.0.0(i18next@23.15.2)(react-i18next@15.1.1(i18next@23.15.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(zod@3.23.8): + remix-hono@0.0.16(i18next@23.15.2)(remix-i18next@7.0.0(i18next@23.15.2)(react-i18next@15.1.1(i18next@23.15.2)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(typescript@5.6.3)(zod@3.23.8): dependencies: '@remix-run/server-runtime': 2.15.0(typescript@5.6.3) hono: 4.6.12 pretty-cache-header: 1.0.0 optionalDependencies: i18next: 23.15.2 - remix-i18next: 7.0.0(i18next@23.15.2)(react-i18next@15.1.1(i18next@23.15.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + remix-i18next: 7.0.0(i18next@23.15.2)(react-i18next@15.1.1(i18next@23.15.2)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) zod: 3.23.8 transitivePeerDependencies: - typescript - remix-i18next@7.0.0(i18next@23.15.2)(react-i18next@15.1.1(i18next@23.15.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-router@7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): + remix-i18next@7.0.0(i18next@23.15.2)(react-i18next@15.1.1(i18next@23.15.2)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(react-router@7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514): dependencies: i18next: 23.15.2 - react: 18.3.1 - react-i18next: 15.1.1(i18next@23.15.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-router: 7.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: 19.0.0-beta-26f2496093-20240514 + react-i18next: 15.1.1(i18next@23.15.2)(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + react-router: 7.0.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) resolve-from@4.0.0: {} @@ -6127,9 +6134,7 @@ snapshots: safe-buffer@5.1.2: {} - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 + scheduler@0.25.0-beta-26f2496093-20240514: {} semver@6.3.1: {} @@ -6364,17 +6369,17 @@ snapshots: url-pattern@1.0.3: {} - use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): + use-callback-ref@1.3.2(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514): dependencies: - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.12 - use-sidecar@1.1.2(@types/react@18.3.12)(react@18.3.1): + use-sidecar@1.1.2(@types/react@18.3.12)(react@19.0.0-beta-26f2496093-20240514): dependencies: detect-node-es: 1.1.0 - react: 18.3.1 + react: 19.0.0-beta-26f2496093-20240514 tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.12 diff --git a/tsconfig.json b/tsconfig.json index 5859385..14e549a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,7 +22,5 @@ "plugins": [{ "name": "@react-router/dev" }], // Vite takes care of building everything, not tsc. "noEmit": true - } - } diff --git a/vite.config.ts b/vite.config.ts index e144ade..1bc8758 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,15 +4,13 @@ import { reactRouterHonoServer } from "react-router-hono-server/dev" import { defineConfig } from "vite" import babel from "vite-plugin-babel" import { iconsSpritesheet } from "vite-plugin-icons-spritesheet" -import inspect from "vite-plugin-inspect" import tsconfigPaths from "vite-tsconfig-paths" export default defineConfig({ plugins: [ - inspect(), babel({ include: ["./app/**/*"], - filter: name => name.endsWith("tsx"), + filter: (name) => name.endsWith("tsx"), }), reactRouterDevTools(), reactRouter(),