From 9eb35f283f253afda9f68721ab47551bb320cab6 Mon Sep 17 00:00:00 2001 From: rphlmr Date: Sat, 23 Nov 2024 12:34:37 +0100 Subject: [PATCH] migrate to react-router --- src/cloudflare.ts | 8 ++++---- src/handler.ts | 6 +++--- src/i18next.ts | 15 +++++++-------- src/session.ts | 10 +++------- test/cloudflare.test.ts | 12 +++++++----- test/handler.test.ts | 9 ++------- test/session.test.ts | 14 +++++++------- 7 files changed, 33 insertions(+), 41 deletions(-) diff --git a/src/cloudflare.ts b/src/cloudflare.ts index 122775a..1d336c4 100644 --- a/src/cloudflare.ts +++ b/src/cloudflare.ts @@ -1,13 +1,13 @@ import type { Context } from "hono"; +import { createWorkersKVSessionStorage } from "@react-router/cloudflare"; +import { createMiddleware } from "hono/factory"; +import { cacheHeader } from "pretty-cache-header"; import { CookieOptions, SessionData, - createWorkersKVSessionStorage, createCookieSessionStorage, -} from "@remix-run/cloudflare"; -import { createMiddleware } from "hono/factory"; -import { cacheHeader } from "pretty-cache-header"; +} from "react-router"; import { session } from "./session.js"; diff --git a/src/handler.ts b/src/handler.ts index ddcc66e..092350c 100644 --- a/src/handler.ts +++ b/src/handler.ts @@ -1,8 +1,8 @@ -import type { AppLoadContext, ServerBuild } from "@remix-run/server-runtime"; import type { Context } from "hono"; +import type { AppLoadContext, ServerBuild } from "react-router"; -import { createRequestHandler } from "@remix-run/server-runtime"; import { createMiddleware } from "hono/factory"; +import { createRequestHandler } from "react-router"; export interface RemixMiddlewareOptions { build: ServerBuild; @@ -25,4 +25,4 @@ export function remix({ }); } -export { createRequestHandler } from "@remix-run/server-runtime"; +export { createRequestHandler } from "react-router"; diff --git a/src/i18next.ts b/src/i18next.ts index 3c5efbe..c070a35 100644 --- a/src/i18next.ts +++ b/src/i18next.ts @@ -2,12 +2,12 @@ import type { Context } from "hono"; import type { RemixI18NextOption } from "remix-i18next/server"; import { createMiddleware } from "hono/factory"; -import { Namespace, TFunction } from "i18next"; +import { FlatNamespace, TFunction } from "i18next"; import { RemixI18Next } from "remix-i18next/server"; -const i18nSymbol = Symbol(); -const LocaleSymbol = Symbol(); -const TSymbol = Symbol(); +const i18nSymbol = Symbol().toString(); +const LocaleSymbol = Symbol().toString(); +const TSymbol = Symbol().toString(); export function i18next(options: RemixI18NextOption | RemixI18Next) { return createMiddleware(async (c, next) => { @@ -46,10 +46,9 @@ i18next.getLocale = function getLocale(c: Context) { return locale; }; -i18next.getFixedT = function getFixedT( - c: Context, - { namespace }: { namespace?: Ns } = {}, -) { +i18next.getFixedT = function getFixedT< + Ns extends FlatNamespace = "translation", +>(c: Context, { namespace }: { namespace?: Ns } = {}) { // If `namespace` is set, we return a new `t` function that is bound to the // given namespace. Otherwise, we return the default `t` function. if (namespace) { diff --git a/src/session.ts b/src/session.ts index 63018b3..9bd7a4e 100644 --- a/src/session.ts +++ b/src/session.ts @@ -1,14 +1,10 @@ -import type { - Session, - SessionData, - SessionStorage, -} from "@remix-run/server-runtime"; import type { Context } from "hono"; +import type { Session, SessionData, SessionStorage } from "react-router"; import { createMiddleware } from "hono/factory"; -const sessionStorageSymbol = Symbol(); -const sessionSymbol = Symbol(); +const sessionStorageSymbol = Symbol().toString(); +const sessionSymbol = Symbol().toString(); export function session(options: { autoCommit?: boolean; diff --git a/test/cloudflare.test.ts b/test/cloudflare.test.ts index 74ba66d..05d7626 100644 --- a/test/cloudflare.test.ts +++ b/test/cloudflare.test.ts @@ -1,9 +1,7 @@ -import { - createCookieSessionStorage, - createWorkersKVSessionStorage, -} from "@remix-run/cloudflare"; +import { createWorkersKVSessionStorage } from "@react-router/cloudflare"; import { Context } from "hono"; import { createMiddleware } from "hono/factory"; +import { createCookieSessionStorage } from "react-router"; import { describe, test, expect, vi, beforeEach, afterAll } from "vitest"; import { @@ -13,9 +11,13 @@ import { } from "../src/cloudflare"; import { session } from "../src/session"; -vi.mock("@remix-run/cloudflare", () => { +vi.mock("@react-router/cloudflare", () => { return { createWorkersKVSessionStorage: vi.fn(), + }; +}); +vi.mock("react-router", () => { + return { createCookieSessionStorage: vi.fn(), }; }); diff --git a/test/handler.test.ts b/test/handler.test.ts index 2f7c7ed..c28f640 100644 --- a/test/handler.test.ts +++ b/test/handler.test.ts @@ -1,4 +1,4 @@ -import type { ServerBuild } from "@remix-run/server-runtime"; +import type { ServerBuild } from "react-router"; import { Hono } from "hono"; import { describe, test, expect, vi, beforeEach, afterAll } from "vitest"; @@ -29,11 +29,7 @@ const build = { default: () => new Response("body"), }, }, - future: { - v3_fetcherPersist: true, - v3_relativeSplatPath: true, - v3_throwAbortReason: true, - }, + future: {}, publicPath: "/", routes: { root: { @@ -45,7 +41,6 @@ const build = { }, }, isSpaMode: false, - mode: "production", } satisfies ServerBuild; describe(remix.name, () => { diff --git a/test/session.test.ts b/test/session.test.ts index 5632814..057fd4d 100644 --- a/test/session.test.ts +++ b/test/session.test.ts @@ -1,10 +1,10 @@ -import { createCookieSessionStorage } from "@remix-run/cloudflare"; import { Context } from "hono"; +import { createCookieSessionStorage } from "react-router"; import { describe, test, expect, vi, beforeEach, afterAll } from "vitest"; import { getSession, getSessionStorage, session } from "../src/session"; -vi.mock("@remix-run/node", () => { +vi.mock("@react-router/node", () => { return { createCookieSessionStorage: vi.fn(), }; @@ -64,7 +64,7 @@ describe(session.name, () => { expect(createSessionStorage).toHaveBeenCalledOnce(); expect(c.set).toHaveBeenNthCalledWith( 1, - expect.any(Symbol), + expect.any(String), sessionStorage, ); expect(next).toHaveBeenCalledOnce(); @@ -84,7 +84,7 @@ describe(session.name, () => { expect(createSessionStorage).toHaveBeenCalledOnce(); expect(c.set).toHaveBeenNthCalledWith( 1, - expect.any(Symbol), + expect.any(String), sessionStorage, ); expect(spy.getSession).toHaveBeenCalledOnce(); @@ -93,7 +93,7 @@ describe(session.name, () => { expect(c.set).toHaveBeenNthCalledWith( 2, - expect.any(Symbol), + expect.any(String), sessionInContext, ); expect(next).toHaveBeenCalledOnce(); @@ -121,7 +121,7 @@ describe(getSessionStorage.name, () => { "A session middleware was not set.", ); - expect(c.get).toHaveBeenCalledWith(expect.any(Symbol)); + expect(c.get).toHaveBeenCalledWith(expect.any(String)); }); test("returns session storage", async () => { @@ -147,7 +147,7 @@ describe(getSession.name, () => { "A session middleware was not set.", ); - expect(c.get).toHaveBeenCalledWith(expect.any(Symbol)); + expect(c.get).toHaveBeenCalledWith(expect.any(String)); }); test("returns session", async () => {