diff --git a/app/components/form.test.tsx b/app/components/form.test.tsx index 5572ae1..4c1f213 100644 --- a/app/components/form.test.tsx +++ b/app/components/form.test.tsx @@ -1,6 +1,8 @@ import "@testing-library/jest-dom/vitest" -import { render, screen } from "@mcansh/remix-testing-library" -import { describe, it, expect, vi } from "vitest" +import { fireEvent, render, screen } from "@mcansh/remix-testing-library" +import { fromPartial } from "@total-typescript/shoehorn" +import type { Handle } from "remix/component" +import { afterEach, beforeEach, describe, it, expect, vi } from "vitest" import { GuessForm } from "./form" @@ -15,8 +17,24 @@ vi.mock("../routes", () => ({ })) describe("GuessForm", () => { + let handle: Handle + + beforeEach(() => { + handle = fromPartial({ + update: vi.fn(async () => {}), + }) + }) + + beforeEach(() => { + window.sessionStorage.clear() + }) + + afterEach(() => { + vi.useRealTimers() + }) + it.skip("renders 5 letter inputs", () => { - let Component = GuessForm() + let Component = GuessForm(handle) render(Component({ currentGuess: 0 })) let inputs = screen.getAllByRole("textbox") @@ -24,7 +42,7 @@ describe("GuessForm", () => { }) it("renders inputs with correct labels", () => { - let Component = GuessForm() + let Component = GuessForm(handle) render(Component({ currentGuess: 0 })) for (let i = 1; i <= 5; i++) { @@ -33,7 +51,7 @@ describe("GuessForm", () => { }) it("renders form with correct attributes", () => { - let Component = GuessForm() + let Component = GuessForm(handle) let { container } = render(Component({ currentGuess: 0 })) let form = container.querySelector("form") @@ -44,7 +62,7 @@ describe("GuessForm", () => { }) it("renders cheat input when cheat prop is true", () => { - let Component = GuessForm() + let Component = GuessForm(handle) let { container } = render(Component({ currentGuess: 0, cheat: true })) let form = container.querySelector("form") @@ -54,7 +72,7 @@ describe("GuessForm", () => { }) it("does not render cheat input when cheat prop is false", () => { - let Component = GuessForm() + let Component = GuessForm(handle) let { container } = render(Component({ currentGuess: 0, cheat: false })) let form = container.querySelector("form") @@ -63,7 +81,7 @@ describe("GuessForm", () => { }) it("does not render cheat input when cheat prop is undefined", () => { - let Component = GuessForm() + let Component = GuessForm(handle) let { container } = render(Component({ currentGuess: 0 })) let form = container.querySelector("form") @@ -72,7 +90,7 @@ describe("GuessForm", () => { }) it("passes error message to letter inputs", () => { - let Component = GuessForm() + let Component = GuessForm(handle) let { container } = render(Component({ currentGuess: 0, error: "invalid word" })) let form = container.querySelector("form") @@ -84,7 +102,7 @@ describe("GuessForm", () => { }) it("first input has auto focus", () => { - let Component = GuessForm() + let Component = GuessForm(handle) let { container } = render(Component({ currentGuess: 0 })) let form = container.querySelector("form") @@ -94,7 +112,7 @@ describe("GuessForm", () => { }) it("has correct input attributes", () => { - let Component = GuessForm() + let Component = GuessForm(handle) let { container } = render(Component({ currentGuess: 0 })) let form = container.querySelector("form") @@ -104,4 +122,45 @@ describe("GuessForm", () => { expect(input).toHaveAttribute("pattern", "[a-zA-Z]{1}") expect(input).toHaveAttribute("maxLength", "1") }) + + it("enables cheat when typing c-h-e-a-t sequence within 2 seconds", async () => { + vi.useFakeTimers() + let Component = GuessForm(handle) + render(Component({ currentGuess: 0 })) + + let input = screen.getByRole("textbox", { name: "letter 1" }) + expect(input).toBeInTheDocument() + + for (let letter of "cheat") { + fireEvent.keyDown(input, { key: letter }) + vi.advanceTimersByTime(300) + } + + vi.runAllTimers() + let cheatInput = await screen.findByDisplayValue("true") + expect(cheatInput).toHaveAttribute("name", "cheat") + expect(window.sessionStorage.getItem("wordle-cheat-enabled")).toBe("true") + }) + + it("does not enable cheat when c-h-e-a-t sequence takes more than 2 seconds", () => { + vi.useFakeTimers() + let Component = GuessForm(handle) + let { container } = render(Component({ currentGuess: 0 })) + + let form = container.querySelector("form") + let input = form?.querySelector('input[name="letter"]') + expect(input).toBeInTheDocument() + + fireEvent.keyDown(input!, { key: "c" }) + vi.advanceTimersByTime(2_100) + for (let letter of "heat") { + fireEvent.keyDown(input!, { key: letter }) + vi.advanceTimersByTime(100) + } + vi.runAllTimers() + + let cheatInput = form?.querySelector('input[name="cheat"]') + expect(cheatInput).not.toBeInTheDocument() + expect(window.sessionStorage.getItem("wordle-cheat-enabled")).toBeNull() + }) }) diff --git a/app/components/form.tsx b/app/components/form.tsx index 270aa85..c7a3552 100644 --- a/app/components/form.tsx +++ b/app/components/form.tsx @@ -1,13 +1,22 @@ "use client" +import type { Handle } from "remix/component" import { on, keysEvents } from "remix/component" -import { LETTER_INPUTS } from "#app/constants.ts" +import { CHEAT_SESSION_KEY, LETTER_INPUTS } from "#app/constants.ts" import { routes } from "#app/routes.ts" import { LetterInput } from "./letter-input" -export function GuessForm() { +const CHEAT_CODE = "cheat" +const CHEAT_WINDOW_MS = 2_000 + +export function GuessForm(handle: Handle) { + let cheatEnabled = false + let cheatBuffer = "" + let cheatStartedAt = 0 + let hydrated = false + return ({ currentGuess, cheat, @@ -17,6 +26,19 @@ export function GuessForm() { error?: string cheat?: boolean }) => { + if (!hydrated) { + hydrated = true + cheatEnabled = cheat === true + if (typeof window !== "undefined") { + cheatEnabled = + cheatEnabled || window.sessionStorage.getItem(CHEAT_SESSION_KEY) === "true" + } + } + + if (cheat && !cheatEnabled) { + cheatEnabled = true + } + return (
{ + let target = event.target + if (!(target instanceof HTMLInputElement)) return + if (!/^[a-zA-Z]$/.test(event.key)) return + + let now = Date.now() + let letter = event.key.toLowerCase() + if (cheatBuffer === "" || now - cheatStartedAt > CHEAT_WINDOW_MS) { + cheatBuffer = letter + cheatStartedAt = now + } else { + cheatBuffer += letter + } + + if (!CHEAT_CODE.startsWith(cheatBuffer)) { + if (letter === CHEAT_CODE[0]) { + cheatBuffer = letter + cheatStartedAt = now + } else { + cheatBuffer = "" + cheatStartedAt = 0 + } + return + } + + if (cheatBuffer === CHEAT_CODE && now - cheatStartedAt <= CHEAT_WINDOW_MS) { + cheatBuffer = "" + cheatStartedAt = 0 + if (!cheatEnabled) { + cheatEnabled = true + if (typeof window !== "undefined") { + window.sessionStorage.setItem(CHEAT_SESSION_KEY, "true") + } + await handle.update() + } + } + }), ]} > - {cheat ? : null} + {cheatEnabled ? : null} {LETTER_INPUTS.map((index) => ( ))} diff --git a/app/components/keyboard.test.tsx b/app/components/keyboard.test.tsx new file mode 100644 index 0000000..c4006fe --- /dev/null +++ b/app/components/keyboard.test.tsx @@ -0,0 +1,31 @@ +import "@testing-library/jest-dom/vitest" +import { render, screen } from "@mcansh/remix-testing-library" +import { describe, expect, it } from "vitest" + +import { LetterState } from "#app/utils/game.ts" + +import { Keyboard } from "./keyboard" + +describe("Keyboard", () => { + it("renders all keyboard letters as buttons", () => { + let Component = Keyboard() + render( + Component({ + board: [ + [ + { letter: "q", state: LetterState.Blank }, + { letter: "w", state: LetterState.Match }, + ], + [{ letter: "a", state: LetterState.Present }], + [{ letter: "z", state: LetterState.Miss }], + ], + }), + ) + + let letters = ["q", "w", "a", "z"] + for (let letter of letters) { + let button = screen.getByRole("button", { name: `keyboard letter ${letter}` }) + expect(button).toHaveTextContent(letter) + } + }) +}) diff --git a/app/components/keyboard.tsx b/app/components/keyboard.tsx index 72ac8bd..68fe100 100644 --- a/app/components/keyboard.tsx +++ b/app/components/keyboard.tsx @@ -15,13 +15,15 @@ export function Keyboard() { > {row.map((letter) => { return ( -
{letter.letter} -
+ ) })} diff --git a/app/constants.ts b/app/constants.ts index 72cbb98..e71b85e 100644 --- a/app/constants.ts +++ b/app/constants.ts @@ -2,3 +2,4 @@ export const WORD_LENGTH = 5 export const LETTER_INPUTS = [...Array(WORD_LENGTH).keys()] export const TOTAL_GUESSES = 6 export const REVEAL_WORD = "cheat" +export const CHEAT_SESSION_KEY = "wordle-cheat-enabled" diff --git a/app/controllers/home/controller.tsx b/app/controllers/home/controller.tsx index fd4af29..2ec2e85 100644 --- a/app/controllers/home/controller.tsx +++ b/app/controllers/home/controller.tsx @@ -3,7 +3,7 @@ import type { Controller } from "remix/fetch-router" import { redirect } from "remix/response/redirect" import { Session } from "remix/session" -import { REVEAL_WORD, WORD_LENGTH } from "#app/constants.ts" +import { CHEAT_SESSION_KEY, WORD_LENGTH } from "#app/constants.ts" import { getReturnToQuery, requireAuth } from "#app/middleware/auth.ts" import { createGuess, getFullBoard, getTodaysGame, isGameComplete } from "#app/models/game.ts" import { routes } from "#app/routes.ts" @@ -65,7 +65,11 @@ export const home = { session.flash("error", error) } - return redirect(routes.home.index.href(undefined, data.value.cheat ? { cheat: "true" } : {})) + if (data.value.cheat) { + session.set(CHEAT_SESSION_KEY, true) + } + + return redirect(routes.home.index.href()) }, async index(context) { @@ -81,7 +85,7 @@ export const home = { let showModal = isGameComplete(game.status) - let showWord = showModal || context.url.searchParams.has(REVEAL_WORD) ? board.word : undefined + let showWord = showModal || session.get(CHEAT_SESSION_KEY) === true ? board.word : undefined let errorMessage = session.get("error") || undefined diff --git a/package.json b/package.json index 3668b1e..09d59ad 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@prisma/adapter-pg": "catalog:", "@prisma/client": "catalog:", "@standard-schema/spec": "catalog:", + "@total-typescript/shoehorn": "catalog:", "bcryptjs": "catalog:", "bullmq": "catalog:", "clsx": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f05a90a..f84271a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,6 +48,9 @@ catalogs: '@testing-library/user-event': specifier: ^14.6.1 version: 14.6.1 + '@total-typescript/shoehorn': + specifier: 0.1.2 + version: 0.1.2 '@total-typescript/tsconfig': specifier: ^1.0.4 version: 1.0.4 @@ -117,6 +120,9 @@ importers: '@standard-schema/spec': specifier: 'catalog:' version: 1.1.0 + '@total-typescript/shoehorn': + specifier: 'catalog:' + version: 0.1.2 bcryptjs: specifier: 'catalog:' version: 3.0.3 @@ -138,7 +144,7 @@ importers: devDependencies: '@mcansh/remix-testing-library': specifier: 'catalog:' - version: 0.0.1(@remix-run/component@0.6.0) + version: 0.0.1(@remix-run/component@0.7.0) '@mcansh/vite-plugin-remix': specifier: 'catalog:' version: 0.0.1(@voidzero-dev/vite-plus-core@0.1.19(@types/node@25.5.2)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.2)) @@ -1065,167 +1071,167 @@ packages: engines: {node: '>=22'} hasBin: true - '@remix-run/assert@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/assert': - resolution: {path: packages/assert, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.0.0 + '@remix-run/assert@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/assert': + resolution: {path: packages/assert, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.1.0 - '@remix-run/async-context-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/async-context-middleware': - resolution: {path: packages/async-context-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.2.0 + '@remix-run/async-context-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/async-context-middleware': + resolution: {path: packages/async-context-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.2.1 - '@remix-run/auth-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/auth-middleware': - resolution: {path: packages/auth-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.1.0 + '@remix-run/auth-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/auth-middleware': + resolution: {path: packages/auth-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.1.1 - '@remix-run/auth@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/auth': - resolution: {path: packages/auth, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.1.0 + '@remix-run/auth@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/auth': + resolution: {path: packages/auth, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.1.1 '@remix-run/cli@https://codeload.github.com/remix-run/remix/tar.gz/8058e8dc635ea5168e1fbd5e44d3b34bc5ecc700#path:packages/cli': resolution: {path: packages/cli, tarball: https://codeload.github.com/remix-run/remix/tar.gz/8058e8dc635ea5168e1fbd5e44d3b34bc5ecc700} version: 0.0.0 hasBin: true - '@remix-run/component@0.6.0': - resolution: {integrity: sha512-hmIUdPnBtONeOH8bbLuOVGSgFD/MAUNvpH0Xwgo27GByBIjQhOm25Tt9R04HQslDhHAzwNVnWeQkr3j9eyXYhQ==} + '@remix-run/component@0.7.0': + resolution: {integrity: sha512-yiJlRP9rMaQC/m/AoByhMgG9GE8Q/1DQpzcjqZJom/C1aBggzPrfhTw/8id7Xar07SGyWpOwKCvAqnYUOUZ7RQ==} - '@remix-run/component@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/component': - resolution: {path: packages/component, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.6.0 + '@remix-run/component@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/component': + resolution: {path: packages/component, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.7.0 - '@remix-run/compression-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/compression-middleware': - resolution: {path: packages/compression-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.1.4 + '@remix-run/compression-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/compression-middleware': + resolution: {path: packages/compression-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.1.5 - '@remix-run/cookie@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/cookie': - resolution: {path: packages/cookie, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/cookie@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/cookie': + resolution: {path: packages/cookie, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.5.1 - '@remix-run/cop-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/cop-middleware': - resolution: {path: packages/cop-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.1.0 + '@remix-run/cop-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/cop-middleware': + resolution: {path: packages/cop-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.1.1 - '@remix-run/cors-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/cors-middleware': - resolution: {path: packages/cors-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.1.0 + '@remix-run/cors-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/cors-middleware': + resolution: {path: packages/cors-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.1.1 - '@remix-run/csrf-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/csrf-middleware': - resolution: {path: packages/csrf-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.1.0 + '@remix-run/csrf-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/csrf-middleware': + resolution: {path: packages/csrf-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.1.1 - '@remix-run/data-schema@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-schema': - resolution: {path: packages/data-schema, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/data-schema@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-schema': + resolution: {path: packages/data-schema, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.2.0 - '@remix-run/data-table-mysql@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table-mysql': - resolution: {path: packages/data-table-mysql, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.2.0 + '@remix-run/data-table-mysql@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table-mysql': + resolution: {path: packages/data-table-mysql, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.3.0 peerDependencies: mysql2: ^3.15.3 peerDependenciesMeta: mysql2: optional: true - '@remix-run/data-table-postgres@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table-postgres': - resolution: {path: packages/data-table-postgres, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.2.0 + '@remix-run/data-table-postgres@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table-postgres': + resolution: {path: packages/data-table-postgres, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.3.0 peerDependencies: pg: ^8.16.3 peerDependenciesMeta: pg: optional: true - '@remix-run/data-table-sqlite@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table-sqlite': - resolution: {path: packages/data-table-sqlite, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.2.0 + '@remix-run/data-table-sqlite@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table-sqlite': + resolution: {path: packages/data-table-sqlite, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.3.0 peerDependencies: better-sqlite3: ^12.4.1 peerDependenciesMeta: better-sqlite3: optional: true - '@remix-run/data-table@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table': - resolution: {path: packages/data-table, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/data-table@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table': + resolution: {path: packages/data-table, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.2.0 - '@remix-run/fetch-proxy@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-proxy': - resolution: {path: packages/fetch-proxy, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/fetch-proxy@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-proxy': + resolution: {path: packages/fetch-proxy, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.7.1 - '@remix-run/fetch-router@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router': - resolution: {path: packages/fetch-router, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.18.0 + '@remix-run/fetch-router@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router': + resolution: {path: packages/fetch-router, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.18.1 - '@remix-run/file-storage-s3@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/file-storage-s3': - resolution: {path: packages/file-storage-s3, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/file-storage-s3@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/file-storage-s3': + resolution: {path: packages/file-storage-s3, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.1.0 - '@remix-run/file-storage@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/file-storage': - resolution: {path: packages/file-storage, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/file-storage@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/file-storage': + resolution: {path: packages/file-storage, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.13.3 - '@remix-run/form-data-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/form-data-middleware': - resolution: {path: packages/form-data-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.2.0 + '@remix-run/form-data-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/form-data-middleware': + resolution: {path: packages/form-data-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.2.1 - '@remix-run/form-data-parser@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/form-data-parser': - resolution: {path: packages/form-data-parser, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/form-data-parser@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/form-data-parser': + resolution: {path: packages/form-data-parser, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.16.0 - '@remix-run/fs@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fs': - resolution: {path: packages/fs, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/fs@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fs': + resolution: {path: packages/fs, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.4.2 - '@remix-run/headers@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/headers': - resolution: {path: packages/headers, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/headers@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/headers': + resolution: {path: packages/headers, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.19.0 - '@remix-run/html-template@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/html-template': - resolution: {path: packages/html-template, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/html-template@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/html-template': + resolution: {path: packages/html-template, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.3.0 - '@remix-run/lazy-file@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/lazy-file': - resolution: {path: packages/lazy-file, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/lazy-file@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/lazy-file': + resolution: {path: packages/lazy-file, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 5.0.2 - '@remix-run/logger-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/logger-middleware': - resolution: {path: packages/logger-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.1.4 - - '@remix-run/method-override-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/method-override-middleware': - resolution: {path: packages/method-override-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/logger-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/logger-middleware': + resolution: {path: packages/logger-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.1.5 - '@remix-run/mime@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/mime': - resolution: {path: packages/mime, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/method-override-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/method-override-middleware': + resolution: {path: packages/method-override-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.1.6 + + '@remix-run/mime@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/mime': + resolution: {path: packages/mime, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.4.0 - '@remix-run/multipart-parser@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/multipart-parser': - resolution: {path: packages/multipart-parser, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/multipart-parser@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/multipart-parser': + resolution: {path: packages/multipart-parser, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.15.0 - '@remix-run/node-fetch-server@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/node-fetch-server': - resolution: {path: packages/node-fetch-server, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/node-fetch-server@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/node-fetch-server': + resolution: {path: packages/node-fetch-server, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.13.0 - '@remix-run/response@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/response': - resolution: {path: packages/response, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/response@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/response': + resolution: {path: packages/response, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.3.2 - '@remix-run/route-pattern@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/route-pattern': - resolution: {path: packages/route-pattern, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.20.0 + '@remix-run/route-pattern@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/route-pattern': + resolution: {path: packages/route-pattern, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.20.1 - '@remix-run/session-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session-middleware': - resolution: {path: packages/session-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.2.0 + '@remix-run/session-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session-middleware': + resolution: {path: packages/session-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.2.1 - '@remix-run/session-storage-memcache@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session-storage-memcache': - resolution: {path: packages/session-storage-memcache, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/session-storage-memcache@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session-storage-memcache': + resolution: {path: packages/session-storage-memcache, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.1.0 - '@remix-run/session-storage-redis@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session-storage-redis': - resolution: {path: packages/session-storage-redis, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/session-storage-redis@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session-storage-redis': + resolution: {path: packages/session-storage-redis, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.1.0 peerDependencies: redis: ^5.10.0 @@ -1233,25 +1239,25 @@ packages: redis: optional: true - '@remix-run/session@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session': - resolution: {path: packages/session, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/session@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session': + resolution: {path: packages/session, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.4.1 - '@remix-run/static-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/static-middleware': - resolution: {path: packages/static-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.4.5 + '@remix-run/static-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/static-middleware': + resolution: {path: packages/static-middleware, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.4.6 '@remix-run/tar-parser@https://codeload.github.com/remix-run/remix/tar.gz/8058e8dc635ea5168e1fbd5e44d3b34bc5ecc700#path:packages/tar-parser': resolution: {path: packages/tar-parser, tarball: https://codeload.github.com/remix-run/remix/tar.gz/8058e8dc635ea5168e1fbd5e44d3b34bc5ecc700} version: 0.7.0 - '@remix-run/tar-parser@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/tar-parser': - resolution: {path: packages/tar-parser, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} + '@remix-run/tar-parser@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/tar-parser': + resolution: {path: packages/tar-parser, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} version: 0.7.0 - '@remix-run/test@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/test': - resolution: {path: packages/test, tarball: https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc} - version: 0.0.0 + '@remix-run/test@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/test': + resolution: {path: packages/test, tarball: https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4} + version: 0.1.0 hasBin: true peerDependencies: playwright: ^1.59.0 @@ -1373,6 +1379,9 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' + '@total-typescript/shoehorn@0.1.2': + resolution: {integrity: sha512-p7nNZbOZIofpDNyP0u1BctFbjxD44Qc+oO5jufgQdFdGIXJLc33QRloJpq7k5T59CTgLWfQSUxsuqLcmeurYRw==} + '@total-typescript/tsconfig@1.0.4': resolution: {integrity: sha512-fO4ctMPGz1kOFOQ4RCPBRBfMy3gDn+pegUfrGyUFRMv/Rd0ZM3/SHH3hFCYG4u6bPLG8OlmOGcBLDexvyr3A5w==} @@ -3446,9 +3455,9 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - '@mcansh/remix-testing-library@0.0.1(@remix-run/component@0.6.0)': + '@mcansh/remix-testing-library@0.0.1(@remix-run/component@0.7.0)': dependencies: - '@remix-run/component': 0.6.0 + '@remix-run/component': 0.7.0 '@testing-library/dom': 10.4.1 pretty-dom: 1.0.0 @@ -3849,178 +3858,178 @@ snapshots: transitivePeerDependencies: - supports-color - '@remix-run/assert@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/assert': {} + '@remix-run/assert@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/assert': {} - '@remix-run/async-context-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/async-context-middleware': + '@remix-run/async-context-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/async-context-middleware': dependencies: - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router - '@remix-run/auth-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/auth-middleware': + '@remix-run/auth-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/auth-middleware': dependencies: - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router - '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router + '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session - '@remix-run/auth@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/auth': + '@remix-run/auth@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/auth': dependencies: - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router - '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router + '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session '@remix-run/cli@https://codeload.github.com/remix-run/remix/tar.gz/8058e8dc635ea5168e1fbd5e44d3b34bc5ecc700#path:packages/cli': dependencies: '@remix-run/tar-parser': https://codeload.github.com/remix-run/remix/tar.gz/8058e8dc635ea5168e1fbd5e44d3b34bc5ecc700#path:packages/tar-parser semver: 7.7.4 - '@remix-run/component@0.6.0': + '@remix-run/component@0.7.0': dependencies: '@types/dom-navigation': 1.0.7 - '@remix-run/component@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/component': + '@remix-run/component@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/component': dependencies: '@types/dom-navigation': 1.0.7 - '@remix-run/compression-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/compression-middleware': + '@remix-run/compression-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/compression-middleware': dependencies: - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router - '@remix-run/mime': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/mime - '@remix-run/response': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/response + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router + '@remix-run/mime': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/mime + '@remix-run/response': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/response - '@remix-run/cookie@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/cookie': + '@remix-run/cookie@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/cookie': dependencies: - '@remix-run/headers': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/headers + '@remix-run/headers': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/headers - '@remix-run/cop-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/cop-middleware': + '@remix-run/cop-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/cop-middleware': dependencies: - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router - '@remix-run/cors-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/cors-middleware': + '@remix-run/cors-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/cors-middleware': dependencies: - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router - '@remix-run/headers': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/headers + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router + '@remix-run/headers': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/headers - '@remix-run/csrf-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/csrf-middleware': + '@remix-run/csrf-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/csrf-middleware': dependencies: - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router - '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router + '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session - '@remix-run/data-schema@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-schema': + '@remix-run/data-schema@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-schema': dependencies: '@standard-schema/spec': 1.1.0 - '@remix-run/data-table-mysql@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table-mysql(mysql2@3.15.3)': + '@remix-run/data-table-mysql@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table-mysql(mysql2@3.15.3)': dependencies: - '@remix-run/data-table': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table + '@remix-run/data-table': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table optionalDependencies: mysql2: 3.15.3 - '@remix-run/data-table-postgres@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table-postgres(pg@8.20.0)': + '@remix-run/data-table-postgres@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table-postgres(pg@8.20.0)': dependencies: - '@remix-run/data-table': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table + '@remix-run/data-table': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table optionalDependencies: pg: 8.20.0 - '@remix-run/data-table-sqlite@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table-sqlite': + '@remix-run/data-table-sqlite@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table-sqlite': dependencies: - '@remix-run/data-table': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table + '@remix-run/data-table': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table - '@remix-run/data-table@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table': {} + '@remix-run/data-table@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table': {} - '@remix-run/fetch-proxy@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-proxy': + '@remix-run/fetch-proxy@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-proxy': dependencies: - '@remix-run/headers': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/headers + '@remix-run/headers': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/headers - '@remix-run/fetch-router@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router': + '@remix-run/fetch-router@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router': dependencies: - '@remix-run/route-pattern': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/route-pattern + '@remix-run/route-pattern': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/route-pattern - '@remix-run/file-storage-s3@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/file-storage-s3': + '@remix-run/file-storage-s3@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/file-storage-s3': dependencies: - '@remix-run/file-storage': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/file-storage + '@remix-run/file-storage': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/file-storage aws4fetch: 1.0.20 - '@remix-run/file-storage@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/file-storage': + '@remix-run/file-storage@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/file-storage': dependencies: - '@remix-run/fs': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fs - '@remix-run/lazy-file': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/lazy-file + '@remix-run/fs': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fs + '@remix-run/lazy-file': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/lazy-file - '@remix-run/form-data-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/form-data-middleware': + '@remix-run/form-data-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/form-data-middleware': dependencies: - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router - '@remix-run/form-data-parser': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/form-data-parser + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router + '@remix-run/form-data-parser': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/form-data-parser - '@remix-run/form-data-parser@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/form-data-parser': + '@remix-run/form-data-parser@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/form-data-parser': dependencies: - '@remix-run/multipart-parser': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/multipart-parser + '@remix-run/multipart-parser': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/multipart-parser - '@remix-run/fs@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fs': + '@remix-run/fs@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fs': dependencies: - '@remix-run/lazy-file': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/lazy-file - '@remix-run/mime': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/mime + '@remix-run/lazy-file': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/lazy-file + '@remix-run/mime': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/mime - '@remix-run/headers@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/headers': {} + '@remix-run/headers@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/headers': {} - '@remix-run/html-template@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/html-template': {} + '@remix-run/html-template@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/html-template': {} - '@remix-run/lazy-file@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/lazy-file': + '@remix-run/lazy-file@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/lazy-file': dependencies: - '@remix-run/mime': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/mime + '@remix-run/mime': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/mime - '@remix-run/logger-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/logger-middleware': + '@remix-run/logger-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/logger-middleware': dependencies: - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router - '@remix-run/method-override-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/method-override-middleware': + '@remix-run/method-override-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/method-override-middleware': dependencies: - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router - '@remix-run/mime@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/mime': {} + '@remix-run/mime@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/mime': {} - '@remix-run/multipart-parser@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/multipart-parser': + '@remix-run/multipart-parser@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/multipart-parser': dependencies: - '@remix-run/headers': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/headers + '@remix-run/headers': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/headers - '@remix-run/node-fetch-server@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/node-fetch-server': {} + '@remix-run/node-fetch-server@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/node-fetch-server': {} - '@remix-run/response@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/response': + '@remix-run/response@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/response': dependencies: - '@remix-run/headers': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/headers - '@remix-run/html-template': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/html-template - '@remix-run/mime': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/mime + '@remix-run/headers': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/headers + '@remix-run/html-template': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/html-template + '@remix-run/mime': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/mime - '@remix-run/route-pattern@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/route-pattern': {} + '@remix-run/route-pattern@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/route-pattern': {} - '@remix-run/session-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session-middleware': + '@remix-run/session-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session-middleware': dependencies: - '@remix-run/cookie': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/cookie - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router - '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session + '@remix-run/cookie': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/cookie + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router + '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session - '@remix-run/session-storage-memcache@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session-storage-memcache': + '@remix-run/session-storage-memcache@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session-storage-memcache': dependencies: - '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session + '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session - '@remix-run/session-storage-redis@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session-storage-redis': + '@remix-run/session-storage-redis@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session-storage-redis': dependencies: - '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session + '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session - '@remix-run/session@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session': {} + '@remix-run/session@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session': {} - '@remix-run/static-middleware@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/static-middleware': + '@remix-run/static-middleware@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/static-middleware': dependencies: - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router - '@remix-run/fs': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fs - '@remix-run/html-template': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/html-template - '@remix-run/mime': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/mime - '@remix-run/response': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/response + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router + '@remix-run/fs': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fs + '@remix-run/html-template': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/html-template + '@remix-run/mime': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/mime + '@remix-run/response': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/response '@remix-run/tar-parser@https://codeload.github.com/remix-run/remix/tar.gz/8058e8dc635ea5168e1fbd5e44d3b34bc5ecc700#path:packages/tar-parser': {} - '@remix-run/tar-parser@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/tar-parser': {} + '@remix-run/tar-parser@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/tar-parser': {} - '@remix-run/test@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/test': + '@remix-run/test@https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/test': dependencies: - '@remix-run/component': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/component - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router - '@remix-run/node-fetch-server': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/node-fetch-server + '@remix-run/component': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/component + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router + '@remix-run/node-fetch-server': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/node-fetch-server tsx: 4.21.0 '@rolldown/pluginutils@1.0.0-beta.55': {} @@ -4119,6 +4128,8 @@ snapshots: dependencies: '@testing-library/dom': 10.4.1 + '@total-typescript/shoehorn@0.1.2': {} + '@total-typescript/tsconfig@1.0.4': {} '@types/aria-query@5.0.4': {} @@ -5587,45 +5598,45 @@ snapshots: remix@https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/remix(mysql2@3.15.3)(pg@8.20.0): dependencies: - '@remix-run/assert': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/assert - '@remix-run/async-context-middleware': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/async-context-middleware - '@remix-run/auth': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/auth - '@remix-run/auth-middleware': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/auth-middleware - '@remix-run/component': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/component - '@remix-run/compression-middleware': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/compression-middleware - '@remix-run/cookie': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/cookie - '@remix-run/cop-middleware': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/cop-middleware - '@remix-run/cors-middleware': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/cors-middleware - '@remix-run/csrf-middleware': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/csrf-middleware - '@remix-run/data-schema': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-schema - '@remix-run/data-table': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table - '@remix-run/data-table-mysql': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table-mysql(mysql2@3.15.3) - '@remix-run/data-table-postgres': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table-postgres(pg@8.20.0) - '@remix-run/data-table-sqlite': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/data-table-sqlite - '@remix-run/fetch-proxy': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-proxy - '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fetch-router - '@remix-run/file-storage': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/file-storage - '@remix-run/file-storage-s3': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/file-storage-s3 - '@remix-run/form-data-middleware': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/form-data-middleware - '@remix-run/form-data-parser': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/form-data-parser - '@remix-run/fs': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/fs - '@remix-run/headers': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/headers - '@remix-run/html-template': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/html-template - '@remix-run/lazy-file': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/lazy-file - '@remix-run/logger-middleware': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/logger-middleware - '@remix-run/method-override-middleware': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/method-override-middleware - '@remix-run/mime': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/mime - '@remix-run/multipart-parser': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/multipart-parser - '@remix-run/node-fetch-server': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/node-fetch-server - '@remix-run/response': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/response - '@remix-run/route-pattern': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/route-pattern - '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session - '@remix-run/session-middleware': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session-middleware - '@remix-run/session-storage-memcache': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session-storage-memcache - '@remix-run/session-storage-redis': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/session-storage-redis - '@remix-run/static-middleware': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/static-middleware - '@remix-run/tar-parser': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/tar-parser - '@remix-run/test': https://codeload.github.com/remix-run/remix/tar.gz/ccafabbb1c6a20bf0b013c63cd3af76a3194abdc#path:packages/test + '@remix-run/assert': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/assert + '@remix-run/async-context-middleware': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/async-context-middleware + '@remix-run/auth': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/auth + '@remix-run/auth-middleware': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/auth-middleware + '@remix-run/component': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/component + '@remix-run/compression-middleware': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/compression-middleware + '@remix-run/cookie': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/cookie + '@remix-run/cop-middleware': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/cop-middleware + '@remix-run/cors-middleware': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/cors-middleware + '@remix-run/csrf-middleware': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/csrf-middleware + '@remix-run/data-schema': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-schema + '@remix-run/data-table': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table + '@remix-run/data-table-mysql': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table-mysql(mysql2@3.15.3) + '@remix-run/data-table-postgres': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table-postgres(pg@8.20.0) + '@remix-run/data-table-sqlite': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/data-table-sqlite + '@remix-run/fetch-proxy': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-proxy + '@remix-run/fetch-router': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fetch-router + '@remix-run/file-storage': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/file-storage + '@remix-run/file-storage-s3': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/file-storage-s3 + '@remix-run/form-data-middleware': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/form-data-middleware + '@remix-run/form-data-parser': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/form-data-parser + '@remix-run/fs': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/fs + '@remix-run/headers': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/headers + '@remix-run/html-template': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/html-template + '@remix-run/lazy-file': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/lazy-file + '@remix-run/logger-middleware': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/logger-middleware + '@remix-run/method-override-middleware': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/method-override-middleware + '@remix-run/mime': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/mime + '@remix-run/multipart-parser': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/multipart-parser + '@remix-run/node-fetch-server': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/node-fetch-server + '@remix-run/response': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/response + '@remix-run/route-pattern': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/route-pattern + '@remix-run/session': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session + '@remix-run/session-middleware': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session-middleware + '@remix-run/session-storage-memcache': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session-storage-memcache + '@remix-run/session-storage-redis': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/session-storage-redis + '@remix-run/static-middleware': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/static-middleware + '@remix-run/tar-parser': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/tar-parser + '@remix-run/test': https://codeload.github.com/remix-run/remix/tar.gz/f6eccf67550df17c9ce67dccd7defe120444d2b4#path:packages/test transitivePeerDependencies: - better-sqlite3 - mysql2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 19f8752..deb77ac 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -60,6 +60,7 @@ catalog: "@tailwindcss/vite": ^4.2.2 "@testing-library/jest-dom": ^6.9.1 "@testing-library/user-event": ^14.6.1 + '@total-typescript/shoehorn': 0.1.2 "@total-typescript/tsconfig": ^1.0.4 "@types/node": ^25.5.2 "@vitest/coverage-v8": ^4.1.4