diff --git a/integration-test/playwright/src/cc-dynamic.test.ts b/integration-test/playwright/src/cc-dynamic.test.ts
index 6ca5eb57..f0a46092 100644
--- a/integration-test/playwright/src/cc-dynamic.test.ts
+++ b/integration-test/playwright/src/cc-dynamic.test.ts
@@ -199,9 +199,29 @@ test.describe("CC dynamic", () => {
expect(await page.getByText("loading...").count()).toBe(6);
// deferred chunk came in
await expect(page.getByText("cuteness overload")).toBeVisible();
+ expect(await page.getByText("Queried in SSR environment").count()).toBe(7);
+ expect(await page.getByText("loading...").count()).toBe(0);
+ });
+
+ test("client loader", { tag: ["@react-router"] }, async ({ page }) => {
+ await page.goto(`${base}/clientLoader`, {
+ waitUntil: "commit",
+ });
+
+ // main data already there
+ await expect(page.getByText("Soft Warm Apollo Beanie")).toBeVisible();
+ expect(await page.getByText("Queried in browser environment").count()).toBe(
+ 1
+ );
+ // deferred chunks still loading
+ expect(await page.getByText("loading...").count()).toBe(6);
+ // deferred chunk came in
+ await expect(page.getByText("cuteness overload")).toBeVisible();
await new Promise((resolve) => setTimeout(resolve, 500));
- expect(await page.getByText("Queried in SSR environment").count()).toBe(7);
+ expect(await page.getByText("Queried in browser environment").count()).toBe(
+ 7
+ );
expect(await page.getByText("loading...").count()).toBe(0);
});
});
diff --git a/integration-test/react-router/app/apollo.ts b/integration-test/react-router/app/apollo.ts
index eea30ada..ca3e58e8 100644
--- a/integration-test/react-router/app/apollo.ts
+++ b/integration-test/react-router/app/apollo.ts
@@ -22,4 +22,5 @@ export const makeClient = (request?: Request) => {
link,
});
};
+
export const apolloLoader = createApolloLoaderHandler(makeClient);
diff --git a/integration-test/react-router/app/entry.client.tsx b/integration-test/react-router/app/entry.client.tsx
index 34777a8f..cfb44f7a 100644
--- a/integration-test/react-router/app/entry.client.tsx
+++ b/integration-test/react-router/app/entry.client.tsx
@@ -3,6 +3,7 @@ import { hydrateRoot } from "react-dom/client";
import { HydratedRouter } from "react-router/dom";
import { makeClient } from "./apollo";
import { ApolloProvider } from "@apollo/client/react/index.js";
+import { initializeApolloContext } from "@apollo/client-integration-react-router";
startTransition(() => {
const client = makeClient();
@@ -10,7 +11,15 @@ startTransition(() => {
document,
-
+ {
+ const context = new Map();
+ // set other context values here
+ return initializeApolloContext(client, context);
+ }}
+ />
+ {/* if you have no other context values, as a shortcut */}
+ {/* initializeApolloContext(client)} /> */}
);
diff --git a/integration-test/react-router/app/routes/clientLoader.tsx b/integration-test/react-router/app/routes/clientLoader.tsx
new file mode 100644
index 00000000..91db1311
--- /dev/null
+++ b/integration-test/react-router/app/routes/clientLoader.tsx
@@ -0,0 +1,74 @@
+import type { Route } from "./+types/clientLoader";
+import {
+ useApolloClient,
+ useQueryRefHandlers,
+ useReadQuery,
+} from "@apollo/client/react/index.js";
+import {} from "~/apollo";
+import { DEFERRED_QUERY } from "@integration-test/shared/queries";
+import { useTransition } from "react";
+import { apolloContext } from "@apollo/client-integration-react-router";
+
+export async function clientLoader({ context }: Route.LoaderArgs) {
+ const { preloadQuery } = context.get(apolloContext);
+ const queryRef = preloadQuery(DEFERRED_QUERY, {
+ variables: { delayDeferred: 1000 },
+ });
+
+ await new Promise((resolve) => setTimeout(resolve, 300));
+
+ return {
+ queryRef,
+ };
+}
+
+export default function WithClientLoader({ loaderData }: Route.ComponentProps) {
+ const { queryRef } = loaderData;
+
+ const { refetch } = useQueryRefHandlers(queryRef);
+ const [refetching, startTransition] = useTransition();
+ const { data } = useReadQuery(queryRef);
+ const client = useApolloClient();
+
+ return (
+ <>
+
+ Queried in {data.env} environment
+
+ >
+ );
+}
diff --git a/integration-test/react-router/package.json b/integration-test/react-router/package.json
index d0cba06d..55cda8ec 100644
--- a/integration-test/react-router/package.json
+++ b/integration-test/react-router/package.json
@@ -14,18 +14,18 @@
"@apollo/client": "^3.13.4",
"@apollo/client-integration-react-router": "workspace:^",
"@integration-test/shared": "workspace:^",
- "@react-router/fs-routes": "^7.2.0-pre.3",
- "@react-router/node": "^7.2.0-pre.3",
- "@react-router/serve": "^7.2.0-pre.3",
+ "@react-router/fs-routes": "^7.3.0",
+ "@react-router/node": "^7.3.0",
+ "@react-router/serve": "^7.3.0",
"@vercel/react-router": "^1.0.2",
"graphql": "*",
"isbot": "^5.1.17",
"react": "^19.0.0",
"react-dom": "^19.0.0",
- "react-router": "^7.2.0-pre.3"
+ "react-router": "^7.3.0"
},
"devDependencies": {
- "@react-router/dev": "^7.2.0-pre.3",
+ "@react-router/dev": "^7.3.0",
"@tailwindcss/vite": "^4.0.0",
"@types/node": "^20",
"@types/react": "^19.0.1",
diff --git a/integration-test/react-router/react-router.config.ts b/integration-test/react-router/react-router.config.ts
index fc433a55..84edca21 100644
--- a/integration-test/react-router/react-router.config.ts
+++ b/integration-test/react-router/react-router.config.ts
@@ -7,9 +7,19 @@ if (process.env.VERCEL) {
presets.push(vercelPreset());
}
+declare module "react-router" {
+ interface Future {
+ unstable_middleware: true; // 👈 Enable middleware types
+ }
+}
+
export default {
// Config options...
// Server-side render by default, to enable SPA mode set this to `false`
ssr: true,
presets,
+ future: {
+ // https://reactrouter.com/start/changelog#middleware-unstable
+ unstable_middleware: true,
+ },
} satisfies Config;
diff --git a/packages/react-router/package.json b/packages/react-router/package.json
index b0ebd820..500fe744 100644
--- a/packages/react-router/package.json
+++ b/packages/react-router/package.json
@@ -79,7 +79,7 @@
"publint": "0.2.7",
"react": "^19.0.0",
"react-dom": "*",
- "react-router": "^7.2.0-pre.3",
+ "react-router": "^7.3.0",
"rimraf": "5.0.5",
"tsup": "8.0.2",
"typescript": "5.4.5",
@@ -88,7 +88,7 @@
"peerDependencies": {
"@apollo/client": "^3.13.0",
"react": "^19",
- "react-router": "^7.2.0-pre.3"
+ "react-router": "^7.3.0"
},
"dependencies": {
"@apollo/client-react-streaming": "0.12.0-alpha.3",
diff --git a/packages/react-router/src/index.ts b/packages/react-router/src/index.ts
index 15c9e897..f9c152b6 100644
--- a/packages/react-router/src/index.ts
+++ b/packages/react-router/src/index.ts
@@ -1,3 +1,7 @@
export { ApolloClient } from "./ApolloClient.js";
export { ApolloHydrationHelper } from "./ApolloHydrationHelper.js";
-export { createApolloLoaderHandler } from "./preloader.js";
+export {
+ apolloContext,
+ createApolloLoaderHandler,
+ initializeApolloContext,
+} from "./preloader.js";
diff --git a/packages/react-router/src/preloader.tsx b/packages/react-router/src/preloader.tsx
index a60726cf..e180f2ea 100644
--- a/packages/react-router/src/preloader.tsx
+++ b/packages/react-router/src/preloader.tsx
@@ -13,22 +13,31 @@ import {
} from "@apollo/client-react-streaming";
import type { Promiscade } from "promiscade";
import { promiscadeToReadableStream, streamToPromiscade } from "promiscade";
-import type { unstable_SerializesTo } from "react-router";
+import {
+ unstable_createContext,
+ type unstable_InitialContext,
+ type unstable_SerializesTo,
+} from "react-router";
import type { JsonString } from "@apollo/client-react-streaming/stream-utils";
+import {
+ createQueryPreloader,
+ type PreloadQueryFunction,
+} from "@apollo/client/react/index.js";
+
type MarkedForSerialization =
T extends TransportedQueryRef
? unstable_SerializesTo>
: { [K in keyof T]: MarkedForSerialization };
+export type ApolloContext = {
+ preloadQuery: PreloadTransportedQueryFunction;
+};
+
type ApolloLoader = >() => <
ReturnValue,
>(
- loader: (
- args: LoaderArgs & {
- preloadQuery: PreloadTransportedQueryFunction;
- }
- ) => ReturnValue
+ loader: (args: LoaderArgs & ApolloContext) => ReturnValue
) => (args: LoaderArgs) => MarkedForSerialization;
export function createApolloLoaderHandler(
@@ -47,6 +56,20 @@ export function createApolloLoaderHandler(
};
}
+export const apolloContext = unstable_createContext<{
+ client: ApolloClient;
+ preloadQuery: PreloadQueryFunction;
+}>();
+
+export function initializeApolloContext(
+ client: ApolloClient,
+ contextMap: unstable_InitialContext = new Map()
+) {
+ const preloader = createQueryPreloader(client);
+ contextMap.set(apolloContext, { client, preloadQuery: preloader });
+ return contextMap;
+}
+
// currently, `turbo-stream` cannot stream a `ReadableStream`.
// until https://github.com/jacob-ebey/turbo-stream/pull/51
// is merged or similar functionality is added, we need to
diff --git a/yarn.lock b/yarn.lock
index 6d163c4f..eb4c18dc 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -256,7 +256,7 @@ __metadata:
publint: "npm:0.2.7"
react: "npm:^19.0.0"
react-dom: "npm:*"
- react-router: "npm:^7.2.0-pre.3"
+ react-router: "npm:^7.3.0"
rimraf: "npm:5.0.5"
tsup: "npm:8.0.2"
typescript: "npm:5.4.5"
@@ -264,7 +264,7 @@ __metadata:
peerDependencies:
"@apollo/client": ^3.13.0
react: ^19
- react-router: ^7.2.0-pre.3
+ react-router: ^7.3.0
languageName: unknown
linkType: soft
@@ -6792,10 +6792,10 @@ __metadata:
"@apollo/client": "npm:^3.13.4"
"@apollo/client-integration-react-router": "workspace:^"
"@integration-test/shared": "workspace:^"
- "@react-router/dev": "npm:^7.2.0-pre.3"
- "@react-router/fs-routes": "npm:^7.2.0-pre.3"
- "@react-router/node": "npm:^7.2.0-pre.3"
- "@react-router/serve": "npm:^7.2.0-pre.3"
+ "@react-router/dev": "npm:^7.3.0"
+ "@react-router/fs-routes": "npm:^7.3.0"
+ "@react-router/node": "npm:^7.3.0"
+ "@react-router/serve": "npm:^7.3.0"
"@tailwindcss/vite": "npm:^4.0.0"
"@types/node": "npm:^20"
"@types/react": "npm:^19.0.1"
@@ -6805,7 +6805,7 @@ __metadata:
isbot: "npm:^5.1.17"
react: "npm:^19.0.0"
react-dom: "npm:^19.0.0"
- react-router: "npm:^7.2.0-pre.3"
+ react-router: "npm:^7.3.0"
react-router-devtools: "npm:^1.1.0"
tailwindcss: "npm:^4.0.0"
typescript: "npm:^5.7.2"
@@ -8543,9 +8543,9 @@ __metadata:
languageName: node
linkType: hard
-"@react-router/dev@npm:^7.2.0-pre.3":
- version: 7.2.0-pre.3
- resolution: "@react-router/dev@npm:7.2.0-pre.3"
+"@react-router/dev@npm:^7.3.0":
+ version: 7.3.0
+ resolution: "@react-router/dev@npm:7.3.0"
dependencies:
"@babel/core": "npm:^7.21.8"
"@babel/generator": "npm:^7.21.5"
@@ -8556,7 +8556,7 @@ __metadata:
"@babel/traverse": "npm:^7.23.2"
"@babel/types": "npm:^7.22.5"
"@npmcli/package-json": "npm:^4.0.1"
- "@react-router/node": "npm:7.2.0-pre.3"
+ "@react-router/node": "npm:7.3.0"
arg: "npm:^5.0.1"
babel-dead-code-elimination: "npm:^1.0.6"
chokidar: "npm:^4.0.0"
@@ -8564,12 +8564,10 @@ __metadata:
es-module-lexer: "npm:^1.3.1"
exit-hook: "npm:2.2.1"
fs-extra: "npm:^10.0.0"
- gunzip-maybe: "npm:^1.4.2"
jsesc: "npm:3.0.2"
lodash: "npm:^4.17.21"
pathe: "npm:^1.1.2"
picocolors: "npm:^1.1.1"
- picomatch: "npm:^2.3.1"
prettier: "npm:^2.7.1"
react-refresh: "npm:^0.14.0"
semver: "npm:^7.3.7"
@@ -8577,8 +8575,8 @@ __metadata:
valibot: "npm:^0.41.0"
vite-node: "npm:3.0.0-beta.2"
peerDependencies:
- "@react-router/serve": ^7.2.0-pre.3
- react-router: ^7.2.0-pre.3
+ "@react-router/serve": ^7.3.0
+ react-router: ^7.3.0
typescript: ^5.1.0
vite: ^5.1.0 || ^6.0.0
wrangler: ^3.28.2
@@ -8591,75 +8589,75 @@ __metadata:
optional: true
bin:
react-router: bin.js
- checksum: 10/98a9cc39811235474b350e6e1f9c1a0767ec90689e9de44ace6da78c66ecf92262bb4e1b8dda27049e8871ba53c91da1ddb956ce9e4ada40c523947a9a8346b3
+ checksum: 10/361d1a2f6eeb67297b3d000846256f09e2f870d10fa044758b6341539ab672c5f618e190aa5f61603882914543b0935c23ff27eec768d1f0d815ee9f0dfc2818
languageName: node
linkType: hard
-"@react-router/express@npm:7.2.0-pre.3":
- version: 7.2.0-pre.3
- resolution: "@react-router/express@npm:7.2.0-pre.3"
+"@react-router/express@npm:7.3.0":
+ version: 7.3.0
+ resolution: "@react-router/express@npm:7.3.0"
dependencies:
- "@react-router/node": "npm:7.2.0-pre.3"
+ "@react-router/node": "npm:7.3.0"
peerDependencies:
- express: ^4.17.1
- react-router: 7.2.0-pre.3
+ express: ^4.17.1 || ^5
+ react-router: 7.3.0
typescript: ^5.1.0
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10/e0f203097a22a6fc80463dad6cebb309a12daffb8c75cf1515ceb02ccc81075e46e4c5bf208e958f62827a994ff322e6b9fd35dfc3a94e38aeaa8abf8fc0e70a
+ checksum: 10/00cbf2079c6bfc398e201bb902bd20f865177edb103d5dfc24ebece4781da9ebc7ca663a2f845b925e9edebc467b391131e043df22768343c40744246a41ba73
languageName: node
linkType: hard
-"@react-router/fs-routes@npm:^7.2.0-pre.3":
- version: 7.2.0-pre.3
- resolution: "@react-router/fs-routes@npm:7.2.0-pre.3"
+"@react-router/fs-routes@npm:^7.3.0":
+ version: 7.3.0
+ resolution: "@react-router/fs-routes@npm:7.3.0"
dependencies:
minimatch: "npm:^9.0.0"
peerDependencies:
- "@react-router/dev": ^7.2.0-pre.3
+ "@react-router/dev": ^7.3.0
typescript: ^5.1.0
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10/a11c4e2a8cf8ef6c68a66179e865e185c2c5a7bfb5afd6b849ac4d43c4fab937691fcd625b5f999da90f683462f587040108a241565f00d0cb3622e0b302b935
+ checksum: 10/545a719ffc3d5522a1d09cba83d60afcd3a25ac4f8b48bd0bc6929b34191cc5561dfdceb26f54d8466fba5c2c9ac284dba2d244181f5f66c784aa3508327f50f
languageName: node
linkType: hard
-"@react-router/node@npm:7.2.0-pre.3, @react-router/node@npm:^7.2.0-pre.3":
- version: 7.2.0-pre.3
- resolution: "@react-router/node@npm:7.2.0-pre.3"
+"@react-router/node@npm:7.3.0, @react-router/node@npm:^7.3.0":
+ version: 7.3.0
+ resolution: "@react-router/node@npm:7.3.0"
dependencies:
"@mjackson/node-fetch-server": "npm:^0.2.0"
source-map-support: "npm:^0.5.21"
stream-slice: "npm:^0.1.2"
undici: "npm:^6.19.2"
peerDependencies:
- react-router: 7.2.0-pre.3
+ react-router: 7.3.0
typescript: ^5.1.0
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10/82139f928daa27affa629500d964500aca69750b0dc9f92abf118997da464925f4b628ecffc1948f2780e26f33694e9bc8782e642736b474e00ccd34f25a8592
+ checksum: 10/4b7336017bf07e7c4b053b2700725186dd607732dfd488de136e84fcebfe936250de7a841a87068eba9ee093d2e1fbd2fbd101d29d68d43a4bad639f84e8982f
languageName: node
linkType: hard
-"@react-router/serve@npm:^7.2.0-pre.3":
- version: 7.2.0-pre.3
- resolution: "@react-router/serve@npm:7.2.0-pre.3"
+"@react-router/serve@npm:^7.3.0":
+ version: 7.3.0
+ resolution: "@react-router/serve@npm:7.3.0"
dependencies:
- "@react-router/express": "npm:7.2.0-pre.3"
- "@react-router/node": "npm:7.2.0-pre.3"
+ "@react-router/express": "npm:7.3.0"
+ "@react-router/node": "npm:7.3.0"
compression: "npm:^1.7.4"
express: "npm:^4.19.2"
get-port: "npm:5.1.1"
morgan: "npm:^1.10.0"
source-map-support: "npm:^0.5.21"
peerDependencies:
- react-router: 7.2.0-pre.3
+ react-router: 7.3.0
bin:
react-router-serve: bin.js
- checksum: 10/212cddc84d90e2d4431dd222a8d66ce683062f374e8ea17ea7f2dd33b68c9077d2836fe945b423c012b4fb41fc3b9e699d2e28531ab3136223409f1dcab818e5
+ checksum: 10/c29211dbeb5f053c1579263039c39e9755dd5925745b579b5ddb70110db607f5bfc435a9d4d82585bb686e1de068a7481ac06ae2731122f889fa61267a5b73d2
languageName: node
linkType: hard
@@ -11111,8 +11109,8 @@ __metadata:
linkType: hard
"@vercel/react-router@npm:^1.0.2":
- version: 1.0.2
- resolution: "@vercel/react-router@npm:1.0.2"
+ version: 1.1.0
+ resolution: "@vercel/react-router@npm:1.1.0"
dependencies:
"@vercel/static-config": "npm:3.0.0"
ts-morph: "npm:12.0.0"
@@ -11122,7 +11120,7 @@ __metadata:
isbot: 5
react: ">=18"
react-dom: ">=18"
- checksum: 10/5f7e60adb6f84473603d37e61572f24395490bce19ff0fe2fb240fa97a8be77c9e4da27ad9f45bc053d9c87f63d2068ca93027fc2014f0ac6ee0659c2e111628
+ checksum: 10/d04ff10f34595b3c47f467585fc39ce233a4ec58d64f8f56dc6242cefe222d6a7ea91ad414bf70998d2b7de6ce0bd3019fde5c6dd05612e0aa9e2bc5b5329aae
languageName: node
linkType: hard
@@ -13226,15 +13224,6 @@ __metadata:
languageName: node
linkType: hard
-"browserify-zlib@npm:^0.1.4":
- version: 0.1.4
- resolution: "browserify-zlib@npm:0.1.4"
- dependencies:
- pako: "npm:~0.2.0"
- checksum: 10/cd506a1ef9c3280f6537a17ed1352ef7738b66fef0a15a655dc3a43edc34be6ee78c5838427146ae1fcd4801fc06d2ab203614d0f8c4df8b5a091cf0134b9a80
- languageName: node
- linkType: hard
-
"browserslist@npm:^4.21.10, browserslist@npm:^4.24.3":
version: 4.24.4
resolution: "browserslist@npm:4.24.4"
@@ -15273,18 +15262,6 @@ __metadata:
languageName: node
linkType: hard
-"duplexify@npm:^3.5.0, duplexify@npm:^3.6.0":
- version: 3.7.1
- resolution: "duplexify@npm:3.7.1"
- dependencies:
- end-of-stream: "npm:^1.0.0"
- inherits: "npm:^2.0.1"
- readable-stream: "npm:^2.0.0"
- stream-shift: "npm:^1.0.0"
- checksum: 10/7799984d178fb57e11c43f5f172a10f795322ec85ff664c2a98d2c2de6deeb9d7a30b810f83923dcd7ebe0f1786724b8aee2b62ca4577522141f93d6d48fb31c
- languageName: node
- linkType: hard
-
"eastasianwidth@npm:^0.2.0":
version: 0.2.0
resolution: "eastasianwidth@npm:0.2.0"
@@ -15391,7 +15368,7 @@ __metadata:
languageName: node
linkType: hard
-"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1":
+"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1":
version: 1.4.4
resolution: "end-of-stream@npm:1.4.4"
dependencies:
@@ -18070,22 +18047,6 @@ __metadata:
languageName: node
linkType: hard
-"gunzip-maybe@npm:^1.4.2":
- version: 1.4.2
- resolution: "gunzip-maybe@npm:1.4.2"
- dependencies:
- browserify-zlib: "npm:^0.1.4"
- is-deflate: "npm:^1.0.0"
- is-gzip: "npm:^1.0.0"
- peek-stream: "npm:^1.1.0"
- pumpify: "npm:^1.3.3"
- through2: "npm:^2.0.3"
- bin:
- gunzip-maybe: bin.js
- checksum: 10/82a4eadb617e50ac63cb88b3c1ebef0f85de702c0c2031c5d9c0575837e1eef7c94fa4ad69ca4aec2dc3d939c89054ec07c91c233648433058efa7d44354d456
- languageName: node
- linkType: hard
-
"gzip-size@npm:^6.0.0":
version: 6.0.0
resolution: "gzip-size@npm:6.0.0"
@@ -18936,13 +18897,6 @@ __metadata:
languageName: node
linkType: hard
-"is-deflate@npm:^1.0.0":
- version: 1.0.0
- resolution: "is-deflate@npm:1.0.0"
- checksum: 10/c2f9f2d3db79ac50c5586697d1e69a55282a2b0cc5e437b3c470dd47f24e40b6216dcd7e024511e21381607bf57afa019343e3bd0e08a119032818b596004262
- languageName: node
- linkType: hard
-
"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1":
version: 2.2.1
resolution: "is-docker@npm:2.2.1"
@@ -19009,13 +18963,6 @@ __metadata:
languageName: node
linkType: hard
-"is-gzip@npm:^1.0.0":
- version: 1.0.0
- resolution: "is-gzip@npm:1.0.0"
- checksum: 10/0d28931c1f445fa29c900cf9f48e06e9d1d477a3bf7bd7332e7ce68f1333ccd8cb381de2f0f62a9a262d9c0912608a9a71b4a40e788e201b3dbd67072bb20d86
- languageName: node
- linkType: hard
-
"is-inside-container@npm:^1.0.0":
version: 1.0.0
resolution: "is-inside-container@npm:1.0.0"
@@ -22426,13 +22373,6 @@ __metadata:
languageName: node
linkType: hard
-"pako@npm:~0.2.0":
- version: 0.2.9
- resolution: "pako@npm:0.2.9"
- checksum: 10/627c6842e90af0b3a9ee47345bd66485a589aff9514266f4fa9318557ad819c46fedf97510f2cef9b6224c57913777966a05cb46caf6a9b31177a5401a06fe15
- languageName: node
- linkType: hard
-
"param-case@npm:^3.0.4":
version: 3.0.4
resolution: "param-case@npm:3.0.4"
@@ -22697,17 +22637,6 @@ __metadata:
languageName: node
linkType: hard
-"peek-stream@npm:^1.1.0":
- version: 1.1.3
- resolution: "peek-stream@npm:1.1.3"
- dependencies:
- buffer-from: "npm:^1.0.0"
- duplexify: "npm:^3.5.0"
- through2: "npm:^2.0.3"
- checksum: 10/a0e09d6d1a8a01158a3334f20d6b1cdd91747eba24eb06a1d742eefb620385593121a76d4378cc81f77cdce6a66df0575a41041b1189c510254aec91878afc99
- languageName: node
- linkType: hard
-
"perfect-debounce@npm:^1.0.0":
version: 1.0.0
resolution: "perfect-debounce@npm:1.0.0"
@@ -23118,16 +23047,6 @@ __metadata:
languageName: node
linkType: hard
-"pump@npm:^2.0.0":
- version: 2.0.1
- resolution: "pump@npm:2.0.1"
- dependencies:
- end-of-stream: "npm:^1.1.0"
- once: "npm:^1.3.1"
- checksum: 10/e9f26a17be00810bff37ad0171edb35f58b242487b0444f92fb7d78bc7d61442fa9b9c5bd93a43fd8fd8ddd3cc75f1221f5e04c790f42907e5baab7cf5e2b931
- languageName: node
- linkType: hard
-
"pump@npm:^3.0.0":
version: 3.0.2
resolution: "pump@npm:3.0.2"
@@ -23138,17 +23057,6 @@ __metadata:
languageName: node
linkType: hard
-"pumpify@npm:^1.3.3":
- version: 1.5.1
- resolution: "pumpify@npm:1.5.1"
- dependencies:
- duplexify: "npm:^3.6.0"
- inherits: "npm:^2.0.3"
- pump: "npm:^2.0.0"
- checksum: 10/5d11a99f320dc2a052610399bac6d03db0a23bc23b23aa2a7d0adf879da3065a55134b975db66dc46bc79f54af3dd575d8119113a0a5b311a00580e1f053896b
- languageName: node
- linkType: hard
-
"punycode@npm:^1.3.2":
version: 1.4.1
resolution: "punycode@npm:1.4.1"
@@ -23620,9 +23528,9 @@ __metadata:
languageName: node
linkType: hard
-"react-router@npm:^7.2.0-pre.3":
- version: 7.2.0-pre.3
- resolution: "react-router@npm:7.2.0-pre.3"
+"react-router@npm:^7.3.0":
+ version: 7.3.0
+ resolution: "react-router@npm:7.3.0"
dependencies:
"@types/cookie": "npm:^0.6.0"
cookie: "npm:^1.0.1"
@@ -23634,7 +23542,7 @@ __metadata:
peerDependenciesMeta:
react-dom:
optional: true
- checksum: 10/15494f1be3780a82c5728e489be5fdf93b45c404b6683e597340e12177a2eba81f341d359e1d1459a726aaa7d78db94e3cbcf587340c392f561b73fc837a6cb9
+ checksum: 10/f7694785f95b989e55c0ae058c36c5f523e318109aea26f4e1567a3c50dcbff769417c54451d976990c507f83499bfe7bc4ec9bea52b2fabab4e6da57d21b231
languageName: node
linkType: hard
@@ -23727,7 +23635,7 @@ __metadata:
languageName: node
linkType: hard
-"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.5, readable-stream@npm:^2.2.2, readable-stream@npm:~2.3.6":
+"readable-stream@npm:^2.0.5, readable-stream@npm:^2.2.2":
version: 2.3.8
resolution: "readable-stream@npm:2.3.8"
dependencies:
@@ -25325,13 +25233,6 @@ __metadata:
languageName: node
linkType: hard
-"stream-shift@npm:^1.0.0":
- version: 1.0.3
- resolution: "stream-shift@npm:1.0.3"
- checksum: 10/a24c0a3f66a8f9024bd1d579a533a53be283b4475d4e6b4b3211b964031447bdf6532dd1f3c2b0ad66752554391b7c62bd7ca4559193381f766534e723d50242
- languageName: node
- linkType: hard
-
"stream-slice@npm:^0.1.2":
version: 0.1.2
resolution: "stream-slice@npm:0.1.2"
@@ -25983,16 +25884,6 @@ __metadata:
languageName: node
linkType: hard
-"through2@npm:^2.0.3":
- version: 2.0.5
- resolution: "through2@npm:2.0.5"
- dependencies:
- readable-stream: "npm:~2.3.6"
- xtend: "npm:~4.0.1"
- checksum: 10/cd71f7dcdc7a8204fea003a14a433ef99384b7d4e31f5497e1f9f622b3cf3be3691f908455f98723bdc80922a53af7fa10c3b7abbe51c6fd3d536dbc7850e2c4
- languageName: node
- linkType: hard
-
"through@npm:^2.3.6, through@npm:^2.3.8":
version: 2.3.8
resolution: "through@npm:2.3.8"
@@ -28177,13 +28068,6 @@ __metadata:
languageName: node
linkType: hard
-"xtend@npm:~4.0.1":
- version: 4.0.2
- resolution: "xtend@npm:4.0.2"
- checksum: 10/ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a
- languageName: node
- linkType: hard
-
"y18n@npm:^4.0.0":
version: 4.0.3
resolution: "y18n@npm:4.0.3"