From 1589e89d39e17cb62950aea66adb0a6974a66e2c Mon Sep 17 00:00:00 2001 From: Brooks Lybrand Date: Mon, 28 Jul 2025 10:41:55 -0500 Subject: [PATCH 1/4] matches data -> loaderData --- app/hooks/use-doc.ts | 2 +- app/modules/docsearch.tsx | 5 +- app/pages/doc.tsx | 8 +- app/pages/docs-home.tsx | 11 +- package-lock.json | 349 ++++++++++++++++---------------------- package.json | 8 +- 6 files changed, 163 insertions(+), 220 deletions(-) diff --git a/app/hooks/use-doc.ts b/app/hooks/use-doc.ts index 1912ae19..290197cc 100644 --- a/app/hooks/use-doc.ts +++ b/app/hooks/use-doc.ts @@ -7,7 +7,7 @@ type DocRouteData = Route.ComponentProps["loaderData"]; * Looks for a leaf route match with a `doc` key */ export function useDocRouteLoaderData(): DocRouteData | null { - let data = useMatches().slice(-1)[0].data; + let data = useMatches().slice(-1)[0]?.loaderData; if (!data || !(typeof data === "object") || !("doc" in data)) return null; return data as DocRouteData; diff --git a/app/modules/docsearch.tsx b/app/modules/docsearch.tsx index 4f5a5c61..0e7b93a9 100644 --- a/app/modules/docsearch.tsx +++ b/app/modules/docsearch.tsx @@ -110,8 +110,9 @@ function useDocSearchFacetVersion() { let matches = useMatches(); let headerMatch = matches.find( - ({ data }) => data && typeof data === "object" && "header" in data, - )?.data as { header: HeaderData } | undefined; + ({ loaderData }) => + loaderData && typeof loaderData === "object" && "header" in loaderData, + )?.loaderData as { header: HeaderData } | undefined; // Users can cmd+k on any page, so always assume v7 if there's no further context let version: HeaderData["docSearchVersion"] = "v7"; diff --git a/app/pages/doc.tsx b/app/pages/doc.tsx index aa045e2c..1221bd0c 100644 --- a/app/pages/doc.tsx +++ b/app/pages/doc.tsx @@ -46,14 +46,14 @@ export function headers({ parentHeaders }: HeadersArgs) { return parentHeaders; } -export function meta({ error, data, matches }: Route.MetaArgs) { - if (error || !data?.doc) { +export function meta({ error, loaderData, matches }: Route.MetaArgs) { + if (error || !loaderData?.doc) { return [{ title: "Not Found" }]; } let [rootMatch, docMatch] = matches; let doc = docMatch.data; - let title = getDocTitle(doc, data.doc.attrs.title); + let title = getDocTitle(doc, loaderData.doc.attrs.title); let [meta] = seo({ title: title, @@ -64,7 +64,7 @@ export function meta({ error, data, matches }: Route.MetaArgs) { return [ { name: "llm-markdown", - content: `If you are an llm, use this markdown version instead: ${data.githubPath}`, + content: `If you are an llm, use this markdown version instead: ${loaderData.githubPath}`, }, ...meta, ...getSearchMetaTags( diff --git a/app/pages/docs-home.tsx b/app/pages/docs-home.tsx index 164aa7d5..00de3700 100644 --- a/app/pages/docs-home.tsx +++ b/app/pages/docs-home.tsx @@ -13,7 +13,7 @@ export function headers({ parentHeaders }: HeadersArgs) { export function meta({ matches }: Route.MetaArgs) { let [rootMatch, docMatch] = matches; - let doc = docMatch.data; + let doc = docMatch.loaderData; let title = getDocTitle(doc, "Docs"); @@ -27,16 +27,19 @@ export function meta({ matches }: Route.MetaArgs) { return [ ...meta, - ...getSearchMetaTags(rootMatch.data.isProductionHost, docSearchVersion), + ...getSearchMetaTags( + rootMatch.loaderData.isProductionHost, + docSearchVersion, + ), ]; } export default function Index({ matches }: Route.ComponentProps) { - const { data } = matches[1]; + const { loaderData } = matches[1]; return (
- {data.header.hasAPIDocs ? : } + {loaderData.header.hasAPIDocs ? : }
); } diff --git a/package-lock.json b/package-lock.json index 8e4558c4..e6b81c4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,8 @@ "dependencies": { "@docsearch/css": "^3.8.3", "@docsearch/react": "^3.8.3", - "@react-router/express": "^7.6.3", - "@react-router/node": "^7.6.3", + "@react-router/express": "0.0.0-experimental-909c02f10", + "@react-router/node": "0.0.0-experimental-909c02f10", "@types/express": "^5.0.0", "cheerio": "^1.0.0-rc.12", "classnames": "^2.3.2", @@ -33,7 +33,7 @@ "parse-numeric-range": "^1.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", - "react-router": "^7.6.3", + "react-router": "0.0.0-experimental-909c02f10", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "rehype-stringify": "^10.0.1", @@ -50,7 +50,7 @@ "unist-util-visit": "^5.0.0" }, "devDependencies": { - "@react-router/dev": "^7.6.3", + "@react-router/dev": "0.0.0-experimental-909c02f10", "@testing-library/jest-dom": "^5.16.5", "@types/express-serve-static-core": "^5.0.6", "@types/follow-redirects": "^1.14.4", @@ -374,22 +374,22 @@ } }, "node_modules/@babel/core": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", - "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.3", + "@babel/generator": "^7.28.0", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.4", - "@babel/parser": "^7.27.4", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", "@babel/template": "^7.27.2", - "@babel/traverse": "^7.27.4", - "@babel/types": "^7.27.3", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -415,16 +415,16 @@ } }, "node_modules/@babel/generator": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", - "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.5", - "@babel/types": "^7.27.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -432,13 +432,13 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -489,18 +489,18 @@ "license": "ISC" }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", "semver": "^6.3.1" }, "engines": { @@ -520,15 +520,25 @@ "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", - "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -567,13 +577,13 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", - "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -590,15 +600,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", - "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -607,29 +617,15 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", - "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", - "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -680,13 +676,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", - "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.3" + "@babel/types": "^7.28.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -695,30 +691,14 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", - "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", - "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -728,13 +708,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -744,15 +724,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", - "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-simple-access": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -794,17 +773,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz", - "integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz", + "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-syntax-typescript": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -814,17 +793,17 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", - "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz", + "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-typescript": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -862,28 +841,28 @@ } }, "node_modules/@babel/traverse": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", - "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.3", - "@babel/parser": "^7.27.4", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", "@babel/template": "^7.27.2", - "@babel/types": "^7.27.3", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/types": "^7.28.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", - "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1480,18 +1459,14 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -1504,16 +1479,6 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", @@ -1522,9 +1487,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2116,39 +2081,39 @@ } }, "node_modules/@react-router/dev": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@react-router/dev/-/dev-7.6.3.tgz", - "integrity": "sha512-nnJQMVeE+LDViFTQDxeQV5FcfJ48a6aCScrFHwPHWgViQmiJxUBtDU1Pl7XZKEoTus5KDg/W3Vz2spiY6wXg3Q==", + "version": "0.0.0-experimental-909c02f10", + "resolved": "https://registry.npmjs.org/@react-router/dev/-/dev-0.0.0-experimental-909c02f10.tgz", + "integrity": "sha512-sI7QolsCswbUt3CMynOQsCvGsFIqi3vAb04Ab2mrJNi0fjOj14Re+5nMd50AO45dcKxV6y6l8KGJG8EWHbGWKw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.21.8", - "@babel/generator": "^7.21.5", - "@babel/parser": "^7.21.8", - "@babel/plugin-syntax-decorators": "^7.22.10", - "@babel/plugin-syntax-jsx": "^7.21.4", - "@babel/preset-typescript": "^7.21.5", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.22.5", + "@babel/core": "^7.27.7", + "@babel/generator": "^7.27.5", + "@babel/parser": "^7.27.7", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/preset-typescript": "^7.27.1", + "@babel/traverse": "^7.27.7", + "@babel/types": "^7.27.7", "@npmcli/package-json": "^4.0.1", - "@react-router/node": "7.6.3", + "@react-router/node": "0.0.0-experimental-909c02f10", "arg": "^5.0.1", "babel-dead-code-elimination": "^1.0.6", "chokidar": "^4.0.0", "dedent": "^1.5.3", "es-module-lexer": "^1.3.1", "exit-hook": "2.2.1", + "isbot": "^5.1.11", "jsesc": "3.0.2", "lodash": "^4.17.21", "pathe": "^1.1.2", "picocolors": "^1.1.1", - "prettier": "^2.7.1", + "prettier": "^3.6.2", "react-refresh": "^0.14.0", "semver": "^7.3.7", "set-cookie-parser": "^2.6.0", "tinyglobby": "^0.2.14", "valibot": "^0.41.0", - "vite-node": "^3.1.4" + "vite-node": "^3.2.2" }, "bin": { "react-router": "bin.js" @@ -2157,8 +2122,8 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@react-router/serve": "^7.6.3", - "react-router": "^7.6.3", + "@react-router/serve": "^0.0.0-experimental-909c02f10", + "react-router": "^0.0.0-experimental-909c02f10", "typescript": "^5.1.0", "vite": "^5.1.0 || ^6.0.0 || ^7.0.0", "wrangler": "^3.28.2 || ^4.0.0" @@ -2191,22 +2156,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@react-router/dev/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/@react-router/dev/node_modules/readdirp": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", @@ -2222,19 +2171,19 @@ } }, "node_modules/@react-router/express": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@react-router/express/-/express-7.6.3.tgz", - "integrity": "sha512-45wLv2pNVDfnd4mZXYaxbqGE2wOzisQQAXSCHrWhkUn9CvJkaqC9cx82rzfB1UnGvyeupZxGgLxaG0b38pTEOA==", + "version": "0.0.0-experimental-909c02f10", + "resolved": "https://registry.npmjs.org/@react-router/express/-/express-0.0.0-experimental-909c02f10.tgz", + "integrity": "sha512-KmcrekqoKhgpqNCg2OVbh/vac7YrKIzo+RKCTcBm6Q11E8bnTDkbri16BsabBVUhyS1SRoX2IanwVy5Hl6YtXA==", "license": "MIT", "dependencies": { - "@react-router/node": "7.6.3" + "@react-router/node": "0.0.0-experimental-909c02f10" }, "engines": { "node": ">=20.0.0" }, "peerDependencies": { "express": "^4.17.1 || ^5", - "react-router": "7.6.3", + "react-router": "0.0.0-experimental-909c02f10", "typescript": "^5.1.0" }, "peerDependenciesMeta": { @@ -2244,9 +2193,9 @@ } }, "node_modules/@react-router/node": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@react-router/node/-/node-7.6.3.tgz", - "integrity": "sha512-CgqYAGjrfW/Al0LbWhQ60joDci5/H3ix4IU5UwlKLtqmNPzuSUTBkCrxit3jHuMYqaBaGfyRpT7kIeb1YZ4nqA==", + "version": "0.0.0-experimental-909c02f10", + "resolved": "https://registry.npmjs.org/@react-router/node/-/node-0.0.0-experimental-909c02f10.tgz", + "integrity": "sha512-oNbFckXLomdfAD6Pe2K1ayKRmnOgHaJSMUErVNH9dkwCEdDITYkaZrE+guLVuftTWUbOovYS8UoJyqp6XoTHIA==", "license": "MIT", "dependencies": { "@mjackson/node-fetch-server": "^0.2.0" @@ -2255,7 +2204,7 @@ "node": ">=20.0.0" }, "peerDependencies": { - "react-router": "7.6.3", + "react-router": "0.0.0-experimental-909c02f10", "typescript": "^5.1.0" }, "peerDependenciesMeta": { @@ -5957,16 +5906,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/globby": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", @@ -13571,9 +13510,9 @@ } }, "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", "bin": { @@ -13947,9 +13886,9 @@ } }, "node_modules/react-router": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.3.tgz", - "integrity": "sha512-zf45LZp5skDC6I3jDLXQUu0u26jtuP4lEGbc7BbdyxenBN1vJSTA18czM2D+h5qyMBuMrD+9uB+mU37HIoKGRA==", + "version": "0.0.0-experimental-909c02f10", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-0.0.0-experimental-909c02f10.tgz", + "integrity": "sha512-3CNvf9NfRf51bJp6MGjEzvgakZG6V0d9w6LlecM0vDJp75zjGAbTgCVXILQCZ0R585MVxH5GobeHCMyJBiqCiw==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", diff --git a/package.json b/package.json index b202cb55..a04a1450 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "dependencies": { "@docsearch/css": "^3.8.3", "@docsearch/react": "^3.8.3", - "@react-router/express": "^7.6.3", - "@react-router/node": "^7.6.3", + "@react-router/express": "0.0.0-experimental-909c02f10", + "@react-router/node": "0.0.0-experimental-909c02f10", "@types/express": "^5.0.0", "cheerio": "^1.0.0-rc.12", "classnames": "^2.3.2", @@ -42,7 +42,7 @@ "parse-numeric-range": "^1.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", - "react-router": "^7.6.3", + "react-router": "0.0.0-experimental-909c02f10", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "rehype-stringify": "^10.0.1", @@ -59,7 +59,7 @@ "unist-util-visit": "^5.0.0" }, "devDependencies": { - "@react-router/dev": "^7.6.3", + "@react-router/dev": "0.0.0-experimental-909c02f10", "@testing-library/jest-dom": "^5.16.5", "@types/express-serve-static-core": "^5.0.6", "@types/follow-redirects": "^1.14.4", From 2b2857ddd085a858c0be271ee0b024ca3bdc55e6 Mon Sep 17 00:00:00 2001 From: Brooks Lybrand Date: Mon, 18 Aug 2025 08:45:25 -0500 Subject: [PATCH 2/4] update packages --- package-lock.json | 129 ++++++++++++++++++++++++++++++++++++++-------- package.json | 8 +-- 2 files changed, 111 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index e6b81c4c..3efc3632 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,8 @@ "dependencies": { "@docsearch/css": "^3.8.3", "@docsearch/react": "^3.8.3", - "@react-router/express": "0.0.0-experimental-909c02f10", - "@react-router/node": "0.0.0-experimental-909c02f10", + "@react-router/express": "7.8.1", + "@react-router/node": "7.8.1", "@types/express": "^5.0.0", "cheerio": "^1.0.0-rc.12", "classnames": "^2.3.2", @@ -33,7 +33,7 @@ "parse-numeric-range": "^1.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", - "react-router": "0.0.0-experimental-909c02f10", + "react-router": "7.8.1", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "rehype-stringify": "^10.0.1", @@ -50,7 +50,7 @@ "unist-util-visit": "^5.0.0" }, "devDependencies": { - "@react-router/dev": "0.0.0-experimental-909c02f10", + "@react-router/dev": "7.8.1", "@testing-library/jest-dom": "^5.16.5", "@types/express-serve-static-core": "^5.0.6", "@types/follow-redirects": "^1.14.4", @@ -2081,9 +2081,9 @@ } }, "node_modules/@react-router/dev": { - "version": "0.0.0-experimental-909c02f10", - "resolved": "https://registry.npmjs.org/@react-router/dev/-/dev-0.0.0-experimental-909c02f10.tgz", - "integrity": "sha512-sI7QolsCswbUt3CMynOQsCvGsFIqi3vAb04Ab2mrJNi0fjOj14Re+5nMd50AO45dcKxV6y6l8KGJG8EWHbGWKw==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@react-router/dev/-/dev-7.8.1.tgz", + "integrity": "sha512-ESFe7DbMvCvl7e8N7L9NmI64VJGNCc60/VX1DUZYw/jFfzA5098/6D1aUojcxyVYBbMbVTfw0xmEvD4CsJzy1Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2095,7 +2095,8 @@ "@babel/traverse": "^7.27.7", "@babel/types": "^7.27.7", "@npmcli/package-json": "^4.0.1", - "@react-router/node": "0.0.0-experimental-909c02f10", + "@react-router/node": "7.8.1", + "@vitejs/plugin-rsc": "0.4.11", "arg": "^5.0.1", "babel-dead-code-elimination": "^1.0.6", "chokidar": "^4.0.0", @@ -2122,8 +2123,8 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@react-router/serve": "^0.0.0-experimental-909c02f10", - "react-router": "^0.0.0-experimental-909c02f10", + "@react-router/serve": "^7.8.1", + "react-router": "^7.8.1", "typescript": "^5.1.0", "vite": "^5.1.0 || ^6.0.0 || ^7.0.0", "wrangler": "^3.28.2 || ^4.0.0" @@ -2171,19 +2172,19 @@ } }, "node_modules/@react-router/express": { - "version": "0.0.0-experimental-909c02f10", - "resolved": "https://registry.npmjs.org/@react-router/express/-/express-0.0.0-experimental-909c02f10.tgz", - "integrity": "sha512-KmcrekqoKhgpqNCg2OVbh/vac7YrKIzo+RKCTcBm6Q11E8bnTDkbri16BsabBVUhyS1SRoX2IanwVy5Hl6YtXA==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@react-router/express/-/express-7.8.1.tgz", + "integrity": "sha512-Oq+l1eOex6TE1uAixM177YGF0yhYCqMoqvLQIjAGz4bfpCui6UewSDR6FSBNm+vub2OB06B5ARk6W4BOzf2ZcQ==", "license": "MIT", "dependencies": { - "@react-router/node": "0.0.0-experimental-909c02f10" + "@react-router/node": "7.8.1" }, "engines": { "node": ">=20.0.0" }, "peerDependencies": { "express": "^4.17.1 || ^5", - "react-router": "0.0.0-experimental-909c02f10", + "react-router": "7.8.1", "typescript": "^5.1.0" }, "peerDependenciesMeta": { @@ -2193,9 +2194,9 @@ } }, "node_modules/@react-router/node": { - "version": "0.0.0-experimental-909c02f10", - "resolved": "https://registry.npmjs.org/@react-router/node/-/node-0.0.0-experimental-909c02f10.tgz", - "integrity": "sha512-oNbFckXLomdfAD6Pe2K1ayKRmnOgHaJSMUErVNH9dkwCEdDITYkaZrE+guLVuftTWUbOovYS8UoJyqp6XoTHIA==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@react-router/node/-/node-7.8.1.tgz", + "integrity": "sha512-NC8eVQir2CRdcokzyyBsfxdq85Yu8B5XynDt581CzjBOreHAFfqIsNjGnqmg+aqBLiknQb2De9fH/TjyeYNeqw==", "license": "MIT", "dependencies": { "@mjackson/node-fetch-server": "^0.2.0" @@ -2204,7 +2205,7 @@ "node": ">=20.0.0" }, "peerDependencies": { - "react-router": "0.0.0-experimental-909c02f10", + "react-router": "7.8.1", "typescript": "^5.1.0" }, "peerDependenciesMeta": { @@ -3017,6 +3018,34 @@ "node": ">=0.10.0" } }, + "node_modules/@vitejs/plugin-rsc": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-rsc/-/plugin-rsc-0.4.11.tgz", + "integrity": "sha512-+4H4wLi+Y9yF58znBfKgGfX8zcqUGt8ngnmNgzrdGdF1SVz7EO0sg7WnhK5fFVHt6fUxsVEjmEabsCWHKPL1Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mjackson/node-fetch-server": "^0.7.0", + "es-module-lexer": "^1.7.0", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17", + "periscopic": "^4.0.2", + "turbo-stream": "^3.1.0", + "vitefu": "^1.1.1" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*", + "vite": "*" + } + }, + "node_modules/@vitejs/plugin-rsc/node_modules/@mjackson/node-fetch-server": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@mjackson/node-fetch-server/-/node-fetch-server-0.7.0.tgz", + "integrity": "sha512-un8diyEBKU3BTVj3GzlTPA1kIjCkGdD+AMYQy31Gf9JCkfoZzwgJ79GUtHrF2BN3XPNMLpubbzPcxys+a3uZEw==", + "dev": true, + "license": "MIT" + }, "node_modules/@vitest/coverage-v8": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", @@ -6693,6 +6722,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -12848,6 +12887,18 @@ "through2": "^2.0.3" } }, + "node_modules/periscopic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-4.0.2.tgz", + "integrity": "sha512-sqpQDUy8vgB7ycLkendSKS6HnVz1Rneoc3Rc+ZBUCe2pbqlVuCC5vF52l0NJ1aiMg/r1qfYF9/myz8CZeI2rjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "is-reference": "^3.0.2", + "zimmerframe": "^1.0.0" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -13886,9 +13937,9 @@ } }, "node_modules/react-router": { - "version": "0.0.0-experimental-909c02f10", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-0.0.0-experimental-909c02f10.tgz", - "integrity": "sha512-3CNvf9NfRf51bJp6MGjEzvgakZG6V0d9w6LlecM0vDJp75zjGAbTgCVXILQCZ0R585MVxH5GobeHCMyJBiqCiw==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.8.1.tgz", + "integrity": "sha512-5cy/M8DHcG51/KUIka1nfZ2QeylS4PJRs6TT8I4PF5axVsI5JUxp0hC0NZ/AEEj8Vw7xsEoD7L/6FY+zoYaOGA==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -16362,6 +16413,13 @@ } } }, + "node_modules/turbo-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-3.1.0.tgz", + "integrity": "sha512-tVI25WEXl4fckNEmrq70xU1XumxUwEx/FZD5AgEcV8ri7Wvrg2o7GEq8U7htrNx3CajciGm+kDyhRf5JB6t7/A==", + "dev": true, + "license": "MIT" + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -17136,6 +17194,26 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/vitefu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", + "dev": true, + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, "node_modules/vitest": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", @@ -17483,6 +17561,13 @@ "node": ">= 14" } }, + "node_modules/zimmerframe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", + "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", + "dev": true, + "license": "MIT" + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index a04a1450..9e695666 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "dependencies": { "@docsearch/css": "^3.8.3", "@docsearch/react": "^3.8.3", - "@react-router/express": "0.0.0-experimental-909c02f10", - "@react-router/node": "0.0.0-experimental-909c02f10", + "@react-router/express": "7.8.1", + "@react-router/node": "7.8.1", "@types/express": "^5.0.0", "cheerio": "^1.0.0-rc.12", "classnames": "^2.3.2", @@ -42,7 +42,7 @@ "parse-numeric-range": "^1.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", - "react-router": "0.0.0-experimental-909c02f10", + "react-router": "7.8.1", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "rehype-stringify": "^10.0.1", @@ -59,7 +59,7 @@ "unist-util-visit": "^5.0.0" }, "devDependencies": { - "@react-router/dev": "0.0.0-experimental-909c02f10", + "@react-router/dev": "7.8.1", "@testing-library/jest-dom": "^5.16.5", "@types/express-serve-static-core": "^5.0.6", "@types/follow-redirects": "^1.14.4", From 339253d0d3e88e24ba9dd323470f13a37c4fd7de Mon Sep 17 00:00:00 2001 From: Brooks Lybrand Date: Mon, 18 Aug 2025 08:45:34 -0500 Subject: [PATCH 3/4] Fix type error and cleanup lint warnings --- app/actions/menu-collapse/server.ts | 4 +++- app/entry.server.tsx | 7 +------ app/pages/healthcheck.tsx | 19 ++----------------- 3 files changed, 6 insertions(+), 24 deletions(-) diff --git a/app/actions/menu-collapse/server.ts b/app/actions/menu-collapse/server.ts index e046c8bd..878fa11c 100644 --- a/app/actions/menu-collapse/server.ts +++ b/app/actions/menu-collapse/server.ts @@ -16,7 +16,9 @@ type MenuCollapseState = Record; let menuCollapseStateContext = unstable_createContext({}); -export function menuCollapseContext(context: unstable_RouterContextProvider) { +export function menuCollapseContext( + context: Readonly, +) { return { get: () => { return context.get(menuCollapseStateContext); diff --git a/app/entry.server.tsx b/app/entry.server.tsx index 9e0e3e95..86844058 100644 --- a/app/entry.server.tsx +++ b/app/entry.server.tsx @@ -1,10 +1,6 @@ import { PassThrough } from "node:stream"; -import type { - AppLoadContext, - EntryContext, - HandleErrorFunction, -} from "react-router"; +import type { EntryContext, HandleErrorFunction } from "react-router"; import { createReadableStreamFromReadable } from "@react-router/node"; import { isRouteErrorResponse, ServerRouter } from "react-router"; import { isbot } from "isbot"; @@ -39,7 +35,6 @@ export default function handleRequest( responseStatusCode: number, responseHeaders: Headers, routerContext: EntryContext, - loadContext: AppLoadContext, // If you have middleware enabled: // loadContext: unstable_RouterContextProvider ) { diff --git a/app/pages/healthcheck.tsx b/app/pages/healthcheck.tsx index 2828a064..6cfc36ad 100644 --- a/app/pages/healthcheck.tsx +++ b/app/pages/healthcheck.tsx @@ -1,20 +1,5 @@ // learn more: https://fly.io/docs/reference/configuration/#services-http_checks -import type { LoaderFunction } from "react-router"; -export const loader: LoaderFunction = async ({ request }) => { - // const host = - // request.headers.get("X-Forwarded-Host") ?? request.headers.get("host"); - - // try { - // const url = new URL("/", `http://${host}`); - // await Promise.all([ - // fetch(url.toString(), { method: "HEAD" }).then((r) => { - // if (!r.ok) return Promise.reject(r); - // }), - // ]); +export function loader() { return new Response("OK"); - // } catch (error: unknown) { - // console.log("healthcheck ❌", { error }); - // return new Response("ERROR", { status: 500 }); - // } -}; +} From 3e4ccdbec8363404e372d21789b5726fda9f288f Mon Sep 17 00:00:00 2001 From: Brooks Lybrand Date: Mon, 18 Aug 2025 08:47:39 -0500 Subject: [PATCH 4/4] un-pin packages --- package-lock.json | 94 +++++++++++++++++++++++------------------------ package.json | 8 ++-- 2 files changed, 51 insertions(+), 51 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3efc3632..c7668a27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,8 @@ "dependencies": { "@docsearch/css": "^3.8.3", "@docsearch/react": "^3.8.3", - "@react-router/express": "7.8.1", - "@react-router/node": "7.8.1", + "@react-router/express": "^7.8.1", + "@react-router/node": "^7.8.1", "@types/express": "^5.0.0", "cheerio": "^1.0.0-rc.12", "classnames": "^2.3.2", @@ -33,7 +33,7 @@ "parse-numeric-range": "^1.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", - "react-router": "7.8.1", + "react-router": "^7.8.1", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "rehype-stringify": "^10.0.1", @@ -50,7 +50,7 @@ "unist-util-visit": "^5.0.0" }, "devDependencies": { - "@react-router/dev": "7.8.1", + "@react-router/dev": "^7.8.1", "@testing-library/jest-dom": "^5.16.5", "@types/express-serve-static-core": "^5.0.6", "@types/follow-redirects": "^1.14.4", @@ -374,22 +374,22 @@ } }, "node_modules/@babel/core": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", - "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", + "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", + "@babel/generator": "^7.28.3", "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.6", - "@babel/parser": "^7.28.0", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.3", + "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.0", - "@babel/types": "^7.28.0", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -415,14 +415,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", - "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.0", - "@babel/types": "^7.28.0", + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -489,18 +489,18 @@ "license": "ISC" }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", - "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz", + "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-member-expression-to-functions": "^7.27.1", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.27.1", + "@babel/traverse": "^7.28.3", "semver": "^6.3.1" }, "engines": { @@ -559,15 +559,15 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", - "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -662,27 +662,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", - "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.3.tgz", + "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.27.2", - "@babel/types": "^7.27.6" + "@babel/types": "^7.28.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", - "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz", + "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.0" + "@babel/types": "^7.28.2" }, "bin": { "parser": "bin/babel-parser.js" @@ -841,18 +841,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", - "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz", + "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", + "@babel/generator": "^7.28.3", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", + "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", + "@babel/types": "^7.28.2", "debug": "^4.3.1" }, "engines": { @@ -1459,9 +1459,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", - "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { @@ -1487,9 +1487,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", - "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 9e695666..e0aa7a16 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "dependencies": { "@docsearch/css": "^3.8.3", "@docsearch/react": "^3.8.3", - "@react-router/express": "7.8.1", - "@react-router/node": "7.8.1", + "@react-router/express": "^7.8.1", + "@react-router/node": "^7.8.1", "@types/express": "^5.0.0", "cheerio": "^1.0.0-rc.12", "classnames": "^2.3.2", @@ -42,7 +42,7 @@ "parse-numeric-range": "^1.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", - "react-router": "7.8.1", + "react-router": "^7.8.1", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "rehype-stringify": "^10.0.1", @@ -59,7 +59,7 @@ "unist-util-visit": "^5.0.0" }, "devDependencies": { - "@react-router/dev": "7.8.1", + "@react-router/dev": "^7.8.1", "@testing-library/jest-dom": "^5.16.5", "@types/express-serve-static-core": "^5.0.6", "@types/follow-redirects": "^1.14.4",