From a59b12ad1279c64dd7a9581ac3da311e66982963 Mon Sep 17 00:00:00 2001 From: Thomas Dekiere Date: Sat, 23 Nov 2024 22:32:43 +0100 Subject: [PATCH] Upgrade from Remix v2 to React Router v7 --- bun.lockb | Bin 125069 -> 76202 bytes package.json | 8 ++------ src/lib/authenticator.test.ts | 8 ++++++-- src/lib/authenticator.ts | 2 +- src/lib/strategy.ts | 6 +++--- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/bun.lockb b/bun.lockb index 30c521b19bdbdcc994c5c16aa4f63512c05b9752..7cd8d59b7154cbca044cf435a73f844c800eac9d 100755 GIT binary patch delta 14981 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 diff --git a/package.json b/package.json index 724aa6a..8635f82 100644 --- a/package.json +++ b/package.json @@ -38,17 +38,13 @@ "uuid": "^11.0.2" }, "peerDependencies": { - "@remix-run/react": "^1.0.0 || ^2.0.0", - "@remix-run/server-runtime": "^1.0.0 || ^2.0.0" + "react-router": "^7.0.0" }, "devDependencies": { "@arethetypeswrong/cli": "^0.17.0", "@babel/preset-react": "^7.13.13", "@biomejs/biome": "^1.8.3", - "@remix-run/node": "^2.0.1", - "@remix-run/react": "^2.0.1", - "@remix-run/serve": "^2.0.1", - "@remix-run/server-runtime": "^2.0.1", + "react-router": "^7.0.1", "@total-typescript/tsconfig": "^1.0.4", "@types/bun": "^1.1.6", "@types/react": "^18.2.20", diff --git a/src/lib/authenticator.test.ts b/src/lib/authenticator.test.ts index 21d69a8..a05fad7 100644 --- a/src/lib/authenticator.test.ts +++ b/src/lib/authenticator.test.ts @@ -1,6 +1,10 @@ import { beforeEach, describe, expect, mock, test } from "bun:test"; -import { createCookieSessionStorage } from "@remix-run/node"; -import { SessionStorage, redirect } from "@remix-run/server-runtime"; +import { + SessionStorage, + createCookieSessionStorage, + redirect, +} from "react-router"; + import { AuthenticateOptions, Authenticator, diff --git a/src/lib/authenticator.ts b/src/lib/authenticator.ts index f510397..c63f485 100644 --- a/src/lib/authenticator.ts +++ b/src/lib/authenticator.ts @@ -3,7 +3,7 @@ import { type SessionStorage, isSession, redirect, -} from "@remix-run/server-runtime"; +} from "react-router"; import { type AuthenticateOptions, Strategy } from "./strategy.js"; export type AuthenticateCallback = (user: User) => Promise; diff --git a/src/lib/strategy.ts b/src/lib/strategy.ts index 062ac99..2d2033e 100644 --- a/src/lib/strategy.ts +++ b/src/lib/strategy.ts @@ -1,9 +1,9 @@ import { type AppLoadContext, type SessionStorage, - json, + data, redirect, -} from "@remix-run/server-runtime"; +} from "react-router"; import { AuthorizationError } from "./error.js"; /** @@ -123,7 +123,7 @@ export abstract class Strategy { // if a failureRedirect is not set, we throw a 401 Response or an error if (!options.failureRedirect) { if (options.throwOnError) throw new AuthorizationError(message, cause); - throw json<{ message: string }>({ message }, 401); + throw data<{ message: string }>({ message }, 401); } let session = await sessionStorage.getSession(