Skip to content

Commit 79205e7

Browse files
committed
feat: update types for server file middleware
Signed-off-by: Logan McAnsh <logan@mcan.sh>
1 parent a11883a commit 79205e7

File tree

14 files changed

+113
-77
lines changed

14 files changed

+113
-77
lines changed

examples/react-router/app/root.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,20 @@
11
import { Links, Meta, Outlet, Scripts, ScrollRestoration } from "react-router";
2-
import type { LinksFunction } from "react-router";
3-
2+
import type { LinksFunction, unstable_MiddlewareFunction } from "react-router";
43
import "./app.css";
4+
import type { Route } from "./+types/root";
5+
import { adapterContext } from "../context";
6+
7+
export function loader({ context }: Route.LoaderArgs) {
8+
console.log({ context: context.get(adapterContext) });
9+
}
10+
11+
export const unstable_middleware: unstable_MiddlewareFunction[] = [
12+
async ({ context }) => {
13+
const adapterContextValue = context.get(adapterContext);
14+
console.log({ adapterContextValue });
15+
context.set(adapterContext, { session: "updated" });
16+
},
17+
];
518

619
export const links: LinksFunction = () => [
720
{ rel: "preconnect", href: "https://fonts.googleapis.com" },

examples/react-router/context.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { unstable_createContext } from "react-router";
2+
3+
type AdapterContextType = {
4+
session: string;
5+
};
6+
7+
let initialValue = {
8+
session: "lol default value",
9+
} satisfies AdapterContextType;
10+
11+
export const adapterContext =
12+
unstable_createContext<AdapterContextType>(initialValue);

examples/react-router/package.json

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,31 @@
44
"sideEffects": false,
55
"type": "module",
66
"scripts": {
7-
"dev": "cross-env NODE_ENV=development node --require dotenv/config --watch-path ./server.js ./server.js",
7+
"dev": "cross-env NODE_ENV=development node --require dotenv/config --watch-path ./server.ts ./server.ts",
88
"build": "react-router build",
9-
"start": "cross-env NODE_ENV=production node ./server.js",
9+
"start": "cross-env NODE_ENV=production node ./server.ts",
1010
"typecheck": "react-router typegen && tsc"
1111
},
1212
"dependencies": {
1313
"@mcansh/remix-fastify": "^4.0.8",
14-
"@react-router/node": "7.1.5",
15-
"@react-router/serve": "7.1.5",
14+
"@react-router/node": "7.4.1",
15+
"@react-router/serve": "7.4.1",
1616
"chalk": "^5.3.0",
1717
"cross-env": "^7.0.3",
1818
"fastify": "^5.2.1",
1919
"get-port": "^7.1.0",
2020
"isbot": "^5.1.21",
2121
"react": "^18.3.1",
2222
"react-dom": "^18.3.1",
23-
"react-router": "7.1.5",
23+
"react-router": "7.4.1",
2424
"source-map-support": "^0.5.21"
2525
},
2626
"devDependencies": {
27-
"@react-router/dev": "7.1.5",
27+
"@react-router/dev": "7.4.1",
2828
"@total-typescript/tsconfig": "^1.0.4",
2929
"@types/react": "^18.3.12",
3030
"@types/react-dom": "^18.3.1",
31+
"@types/source-map-support": "^0.5.10",
3132
"autoprefixer": "^10.4.20",
3233
"dotenv": "^16.4.5",
3334
"postcss": "^8.4.49",
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import type { Config } from "@react-router/dev/config";
2+
3+
declare module "react-router" {
4+
interface Future {
5+
unstable_middleware: true;
6+
}
7+
}
8+
9+
export default {
10+
ssr: true,
11+
future: {
12+
unstable_middleware: true,
13+
unstable_optimizeDeps: true,
14+
unstable_splitRouteModules: true,
15+
unstable_viteEnvironmentApi: true,
16+
},
17+
} satisfies Config;

examples/react-router/server.js renamed to examples/react-router/server.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,24 @@ import { reactRouterFastify } from "@mcansh/remix-fastify/react-router";
33
import { fastify } from "fastify";
44
import sourceMapSupport from "source-map-support";
55
import getPort, { portNumbers } from "get-port";
6+
import {
7+
unstable_createContext,
8+
type unstable_InitialContext,
9+
type unstable_RouterContext,
10+
} from "react-router";
11+
import { adapterContext } from "./context.ts";
612

713
sourceMapSupport.install();
814

915
let app = fastify();
1016

11-
await app.register(reactRouterFastify);
17+
await app.register(reactRouterFastify, {
18+
getLoadContext(_request): unstable_InitialContext {
19+
const map = new Map<unstable_RouterContext, unknown>();
20+
map.set(adapterContext, { session: "" });
21+
return map;
22+
},
23+
});
1224

1325
const desiredPort = Number(process.env.PORT) || 3000;
1426
const portToUse = await getPort({

examples/react-router/vite.config.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,5 @@ import tsconfigPaths from "vite-tsconfig-paths";
33
import { defineConfig } from "vite";
44

55
export default defineConfig({
6-
plugins: [
7-
reactRouter({
8-
// Server-side render by default, to enable SPA mode set this to `false`
9-
ssr: true,
10-
}),
11-
tsconfigPaths(),
12-
],
6+
plugins: [reactRouter(), tsconfigPaths()],
137
});

packages/remix-fastify/middleware.cjs

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/remix-fastify/middleware.d.cts

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/remix-fastify/middleware.d.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/remix-fastify/middleware.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)