diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..165d6cf0 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +force=true \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 57929e48..b36a2d88 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ FROM base as deps WORKDIR /remixapp -ADD package.json package-lock.json ./ +ADD package.json package-lock.json .npmrc ./ RUN npm install --include=dev # Setup production node_modules @@ -24,7 +24,7 @@ FROM base as production-deps WORKDIR /remixapp COPY --from=deps /remixapp/node_modules /remixapp/node_modules -ADD package.json package-lock.json ./ +ADD package.json package-lock.json .npmrc ./ RUN npm prune --omit=dev # Build the app diff --git a/app/entry.client.tsx b/app/entry.client.tsx deleted file mode 100644 index 04918d07..00000000 --- a/app/entry.client.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import * as React from "react"; -import { hydrateRoot } from "react-dom/client"; -import { RemixBrowser } from "@remix-run/react"; - -setTimeout(() => { - React.startTransition(() => { - hydrateRoot( - document, - - - , - ); - }); -}, 10); diff --git a/app/entry.server.tsx b/app/entry.server.tsx deleted file mode 100644 index c06a3e3d..00000000 --- a/app/entry.server.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import type { HandleDocumentRequestFunction } from "@remix-run/node"; -import { RemixServer } from "@remix-run/react"; -import { renderToString } from "react-dom/server"; - -let handleDocumentRequest: HandleDocumentRequestFunction = async ( - request, - responseStatusCode, - responseHeaders, - remixContext, -) => { - const markup = renderToString( - , - ); - - responseHeaders.set("Content-Type", "text/html"); - - return new Response("" + markup, { - status: responseStatusCode, - headers: responseHeaders, - }); -}; - -export default handleDocumentRequest; diff --git a/package-lock.json b/package-lock.json index 7a46dcae..066b1131 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,9 +10,9 @@ "dependencies": { "@docsearch/css": "^3.5.2", "@docsearch/react": "^3.5.2", - "@remix-run/express": "^2.8.0", - "@remix-run/node": "^2.8.0", - "@remix-run/react": "^2.8.0", + "@remix-run/express": "0.0.0-experimental-9989381a2", + "@remix-run/node": "0.0.0-experimental-9989381a2", + "@remix-run/react": "0.0.0-experimental-9989381a2", "@remix-run/v1-meta": "0.1.3", "@tailwindcss/aspect-ratio": "^0.4.2", "cheerio": "^1.0.0-rc.12", @@ -31,6 +31,7 @@ "front-matter": "^4.0.2", "gray-matter": "^4.0.3", "gunzip-maybe": "^1.4.2", + "isbot": "^4", "iso-639-1": "^3.1.0", "lru-cache": "^10.1.0", "luxon": "^3.4.4", @@ -48,7 +49,7 @@ "remark-html": "^16.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.0", - "remix": "^2.8.0", + "remix": "0.0.0-experimental-9989381a2", "satori": "^0.10.11", "semver": "^7.5.4", "shiki": "^0.14.7", @@ -65,8 +66,8 @@ "zod": "^3.22.4" }, "devDependencies": { - "@remix-run/dev": "^2.8.0", - "@remix-run/eslint-config": "^2.8.0", + "@remix-run/dev": "0.0.0-experimental-9989381a2", + "@remix-run/eslint-config": "0.0.0-experimental-9989381a2", "@testing-library/jest-dom": "^6.2.0", "@types/follow-redirects": "^1.14.4", "@types/gunzip-maybe": "^1.4.2", @@ -2823,9 +2824,9 @@ } }, "node_modules/@remix-run/dev": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-2.8.0.tgz", - "integrity": "sha512-kZtmK/7vKk7QV8CGCyC9Or3wP7EwL4rOJS9vObmTRAPv8mLyznR8bJxeNVWA7ICnCGejF8s2X3abVJrkEMiFlg==", + "version": "0.0.0-experimental-9989381a2", + "resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-0.0.0-experimental-9989381a2.tgz", + "integrity": "sha512-0t1xjlhB9ZoqhH/eJXsFMbtEZmUPy5ECV2RdKSUBNH+JosNSTbsSMARzZ1KeyBUB5GyScaG9nIhjpfbKWQl4kQ==", "dev": true, "dependencies": { "@babel/core": "^7.21.8", @@ -2838,9 +2839,9 @@ "@babel/types": "^7.22.5", "@mdx-js/mdx": "^2.3.0", "@npmcli/package-json": "^4.0.1", - "@remix-run/node": "2.8.0", - "@remix-run/router": "1.15.2", - "@remix-run/server-runtime": "2.8.0", + "@remix-run/node": "0.0.0-experimental-9989381a2", + "@remix-run/router": "0.0.0-experimental-c7dd3d3a", + "@remix-run/server-runtime": "0.0.0-experimental-9989381a2", "@types/mdx": "^2.0.5", "@vanilla-extract/integration": "^6.2.0", "arg": "^5.0.1", @@ -2889,7 +2890,8 @@ "node": ">=18.0.0" }, "peerDependencies": { - "@remix-run/serve": "^2.8.0", + "@remix-run/react": "^0.0.0-experimental-9989381a2", + "@remix-run/serve": "^0.0.0-experimental-9989381a2", "typescript": "^5.1.0", "vite": "^5.1.0", "wrangler": "^3.28.2" @@ -2909,6 +2911,50 @@ } } }, + "node_modules/@remix-run/dev/node_modules/@remix-run/router": { + "version": "0.0.0-experimental-c7dd3d3a", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-0.0.0-experimental-c7dd3d3a.tgz", + "integrity": "sha512-reXnySaRGlEl6cOgF7fSQvIRzyRFUjGsez0kHQk0ok6Z3Y7n1PVTCKNhooSfOI1hBOi0c9cIMurhoTgjYXyxHw==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@remix-run/dev/node_modules/@remix-run/server-runtime": { + "version": "0.0.0-experimental-9989381a2", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-0.0.0-experimental-9989381a2.tgz", + "integrity": "sha512-dwZxKlQ6WJHeoBRBm9GkR46GcKU8AEqJPss3Fjjgl0cWRWVcg07n8Mo1jXIaNPZg8oohsBzy5p+dHNXeYQs/0g==", + "dev": true, + "dependencies": { + "@remix-run/router": "0.0.0-experimental-c7dd3d3a", + "@types/cookie": "^0.6.0", + "@web3-storage/multipart-parser": "^1.0.0", + "cookie": "^0.6.0", + "set-cookie-parser": "^2.4.8", + "source-map": "^0.7.3", + "turbo-stream": "^2.0.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@remix-run/dev/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/@remix-run/dev/node_modules/prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", @@ -2925,9 +2971,9 @@ } }, "node_modules/@remix-run/eslint-config": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-2.8.0.tgz", - "integrity": "sha512-4y5TxhWbivKT2g8d2wciWSns6KhuvJPXoLuuBa2v3At20LxqWdyqErZfPHPrecXHjl/vJpSAGOGXAU1WuS39kg==", + "version": "0.0.0-experimental-9989381a2", + "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-0.0.0-experimental-9989381a2.tgz", + "integrity": "sha512-9tEqG7anJvYOgQWN6J54zGzSqsra4ag4Yp7pvBpMzueIsh17817rSumgwc5pJieVoOuGhwtN3JNuCjl3Faa+Qw==", "dev": true, "dependencies": { "@babel/core": "^7.21.8", @@ -2962,11 +3008,11 @@ } }, "node_modules/@remix-run/express": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@remix-run/express/-/express-2.8.0.tgz", - "integrity": "sha512-15qnPt+vrvv66pvdcRiodNF5I5Rot07HoKjVlrXYSO4KbSg9WTE0jCPX0rFStD4QNTa2hIl8YftPlmZXjFxQoQ==", + "version": "0.0.0-experimental-9989381a2", + "resolved": "https://registry.npmjs.org/@remix-run/express/-/express-0.0.0-experimental-9989381a2.tgz", + "integrity": "sha512-3RFBGytWHmyFnfTncXvzBhQ42HxQn7RQKXklRbrrrnT4prOYPWwddiPbCkY+bE+VlMV7dE1xOMhK+BqMfALMFQ==", "dependencies": { - "@remix-run/node": "2.8.0" + "@remix-run/node": "0.0.0-experimental-9989381a2" }, "engines": { "node": ">=18.0.0" @@ -2982,11 +3028,11 @@ } }, "node_modules/@remix-run/node": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.8.0.tgz", - "integrity": "sha512-UGAckayyhw14v70O1Lcf75Nr/ipLOG5e20tMiMee96sCXWaHGHpv9VbAVoDXiVKqI3sw4dJarNc0qo794zwAbg==", + "version": "0.0.0-experimental-9989381a2", + "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-0.0.0-experimental-9989381a2.tgz", + "integrity": "sha512-MuVUoK2fkLgRYKqPFdZ6UdmQElYn1FS3riUSGEfqyyO+QlqKhMlGTdTTXt/GDlEEoITJPncN6VZrbcDPsWx4lw==", "dependencies": { - "@remix-run/server-runtime": "2.8.0", + "@remix-run/server-runtime": "0.0.0-experimental-9989381a2", "@remix-run/web-fetch": "^4.4.2", "@remix-run/web-file": "^3.1.0", "@remix-run/web-stream": "^1.1.0", @@ -3007,15 +3053,57 @@ } } }, + "node_modules/@remix-run/node/node_modules/@remix-run/router": { + "version": "0.0.0-experimental-c7dd3d3a", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-0.0.0-experimental-c7dd3d3a.tgz", + "integrity": "sha512-reXnySaRGlEl6cOgF7fSQvIRzyRFUjGsez0kHQk0ok6Z3Y7n1PVTCKNhooSfOI1hBOi0c9cIMurhoTgjYXyxHw==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@remix-run/node/node_modules/@remix-run/server-runtime": { + "version": "0.0.0-experimental-9989381a2", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-0.0.0-experimental-9989381a2.tgz", + "integrity": "sha512-dwZxKlQ6WJHeoBRBm9GkR46GcKU8AEqJPss3Fjjgl0cWRWVcg07n8Mo1jXIaNPZg8oohsBzy5p+dHNXeYQs/0g==", + "dependencies": { + "@remix-run/router": "0.0.0-experimental-c7dd3d3a", + "@types/cookie": "^0.6.0", + "@web3-storage/multipart-parser": "^1.0.0", + "cookie": "^0.6.0", + "set-cookie-parser": "^2.4.8", + "source-map": "^0.7.3", + "turbo-stream": "^2.0.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@remix-run/node/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/@remix-run/react": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-2.8.0.tgz", - "integrity": "sha512-QDbdAFOPssVGIlT1Klp/GiS6Sbkmwn9e2tJXXtPwchLCePGCnIlJXtBe/jokFBwcG8ce+oTRzSVmJ75kEEahZA==", + "version": "0.0.0-experimental-9989381a2", + "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-0.0.0-experimental-9989381a2.tgz", + "integrity": "sha512-8yYhampJPY4KEzDi/vjSTn9CywFfmYj6TEaptN5xCmxhO7AAVG0tKG0qVgmBahCyjQ9LLtHj2DofNPe7LLKpdw==", "dependencies": { - "@remix-run/router": "1.15.2", - "@remix-run/server-runtime": "2.8.0", - "react-router": "6.22.2", - "react-router-dom": "6.22.2" + "@remix-run/router": "0.0.0-experimental-c7dd3d3a", + "@remix-run/server-runtime": "0.0.0-experimental-9989381a2", + "react-router": "0.0.0-experimental-c7dd3d3a", + "react-router-dom": "0.0.0-experimental-c7dd3d3a", + "turbo-stream": "^2.0.0" }, "engines": { "node": ">=18.0.0" @@ -3031,10 +3119,52 @@ } } }, + "node_modules/@remix-run/react/node_modules/@remix-run/router": { + "version": "0.0.0-experimental-c7dd3d3a", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-0.0.0-experimental-c7dd3d3a.tgz", + "integrity": "sha512-reXnySaRGlEl6cOgF7fSQvIRzyRFUjGsez0kHQk0ok6Z3Y7n1PVTCKNhooSfOI1hBOi0c9cIMurhoTgjYXyxHw==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@remix-run/react/node_modules/@remix-run/server-runtime": { + "version": "0.0.0-experimental-9989381a2", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-0.0.0-experimental-9989381a2.tgz", + "integrity": "sha512-dwZxKlQ6WJHeoBRBm9GkR46GcKU8AEqJPss3Fjjgl0cWRWVcg07n8Mo1jXIaNPZg8oohsBzy5p+dHNXeYQs/0g==", + "dependencies": { + "@remix-run/router": "0.0.0-experimental-c7dd3d3a", + "@types/cookie": "^0.6.0", + "@web3-storage/multipart-parser": "^1.0.0", + "cookie": "^0.6.0", + "set-cookie-parser": "^2.4.8", + "source-map": "^0.7.3", + "turbo-stream": "^2.0.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "typescript": "^5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@remix-run/react/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/@remix-run/router": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.2.tgz", "integrity": "sha512-+Rnav+CaoTE5QJc4Jcwh5toUpnVLKYbpU6Ys0zqbakqbaLQHeglLVHPfxOiQqdNmUy5C2lXz5dwC6tQNX2JW2Q==", + "peer": true, "engines": { "node": ">=14.0.0" } @@ -3043,6 +3173,7 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.8.0.tgz", "integrity": "sha512-bb6rRefxEqA1fHGUo2i2s1uMztYqQlxupVCVsAs+sUkzTXtORJW+b0oFIKf5yWyaarBJ4zeLyoPsAMBqVX8P3w==", + "peer": true, "dependencies": { "@remix-run/router": "1.15.2", "@types/cookie": "^0.6.0", @@ -3067,6 +3198,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -9845,6 +9977,14 @@ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, + "node_modules/isbot": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/isbot/-/isbot-4.4.0.tgz", + "integrity": "sha512-8ZvOWUA68kyJO4hHJdWjyreq7TYNWTS9y15IzeqVdKxR9pPr3P/3r9AHcoIv9M0Rllkao5qWz2v1lmcyKIVCzQ==", + "engines": { + "node": ">=18" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -17304,11 +17444,11 @@ } }, "node_modules/react-router": { - "version": "6.22.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.2.tgz", - "integrity": "sha512-YD3Dzprzpcq+tBMHBS822tCjnWD3iIZbTeSXMY9LPSG541EfoBGyZ3bS25KEnaZjLcmQpw2AVLkFyfgXY8uvcw==", + "version": "0.0.0-experimental-c7dd3d3a", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-0.0.0-experimental-c7dd3d3a.tgz", + "integrity": "sha512-biSo7Pmedzrm9DXjC3ScIwCWVt3qVAutf51hJ/POxfcRYvhgi9ENNGHLjpqabBH4oI5IwI53Vh0w7pKOdadC9A==", "dependencies": { - "@remix-run/router": "1.15.2" + "@remix-run/router": "0.0.0-experimental-c7dd3d3a" }, "engines": { "node": ">=14.0.0" @@ -17318,12 +17458,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.22.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.2.tgz", - "integrity": "sha512-WgqxD2qySEIBPZ3w0sHH+PUAiamDeszls9tzqMPBDA1YYVucTBXLU7+gtRfcSnhe92A3glPnvSxK2dhNoAVOIQ==", + "version": "0.0.0-experimental-c7dd3d3a", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-0.0.0-experimental-c7dd3d3a.tgz", + "integrity": "sha512-pp1l8sk4Rc9vLucHgHU4B2LUL/4e6iwD7ipDGgfc9a08eNVowxaDJXkbtyYE10lpjaZZkXF1DFkdHfGrKeXWQw==", "dependencies": { - "@remix-run/router": "1.15.2", - "react-router": "6.22.2" + "@remix-run/router": "0.0.0-experimental-c7dd3d3a", + "react-router": "0.0.0-experimental-c7dd3d3a" }, "engines": { "node": ">=14.0.0" @@ -17333,6 +17473,22 @@ "react-dom": ">=16.8" } }, + "node_modules/react-router-dom/node_modules/@remix-run/router": { + "version": "0.0.0-experimental-c7dd3d3a", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-0.0.0-experimental-c7dd3d3a.tgz", + "integrity": "sha512-reXnySaRGlEl6cOgF7fSQvIRzyRFUjGsez0kHQk0ok6Z3Y7n1PVTCKNhooSfOI1hBOi0c9cIMurhoTgjYXyxHw==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/react-router/node_modules/@remix-run/router": { + "version": "0.0.0-experimental-c7dd3d3a", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-0.0.0-experimental-c7dd3d3a.tgz", + "integrity": "sha512-reXnySaRGlEl6cOgF7fSQvIRzyRFUjGsez0kHQk0ok6Z3Y7n1PVTCKNhooSfOI1hBOi0c9cIMurhoTgjYXyxHw==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -18431,9 +18587,9 @@ } }, "node_modules/remix": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/remix/-/remix-2.8.0.tgz", - "integrity": "sha512-N+tp+1LdddBy7IRM/3WvbT824UKa6gylQTbt/AhjNAlreKxI6oEr+2KH6HtfPBqVD9aKUo7eUj5qNfmxSCXXgw==", + "version": "0.0.0-experimental-9989381a2", + "resolved": "https://registry.npmjs.org/remix/-/remix-0.0.0-experimental-9989381a2.tgz", + "integrity": "sha512-5Q0LkDDqArhWrGjyDrwB22h82imOE2O+aAWw54QJzOthLj9yTygl7Mmbofs9omEAmenTz77XN6E6aee9azN63Q==", "engines": { "node": ">=18.0.0" } @@ -19995,6 +20151,11 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/turbo-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.0.0.tgz", + "integrity": "sha512-h0dfgRJAoiEh2hdFCoEuOSApsUfnw87gmNuziVS/mYycuBSCTeqpdanypMlHci6CvZibF7b9kvSpbeC7/r2/KA==" + }, "node_modules/tween-functions": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz", diff --git a/package.json b/package.json index 71065c9d..893ddbf1 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,9 @@ "dependencies": { "@docsearch/css": "^3.5.2", "@docsearch/react": "^3.5.2", - "@remix-run/express": "^2.8.0", - "@remix-run/node": "^2.8.0", - "@remix-run/react": "^2.8.0", + "@remix-run/express": "0.0.0-experimental-9989381a2", + "@remix-run/node": "0.0.0-experimental-9989381a2", + "@remix-run/react": "0.0.0-experimental-9989381a2", "@remix-run/v1-meta": "0.1.3", "@tailwindcss/aspect-ratio": "^0.4.2", "cheerio": "^1.0.0-rc.12", @@ -43,6 +43,7 @@ "front-matter": "^4.0.2", "gray-matter": "^4.0.3", "gunzip-maybe": "^1.4.2", + "isbot": "^4", "iso-639-1": "^3.1.0", "lru-cache": "^10.1.0", "luxon": "^3.4.4", @@ -60,7 +61,7 @@ "remark-html": "^16.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.0", - "remix": "^2.8.0", + "remix": "0.0.0-experimental-9989381a2", "satori": "^0.10.11", "semver": "^7.5.4", "shiki": "^0.14.7", @@ -77,8 +78,8 @@ "zod": "^3.22.4" }, "devDependencies": { - "@remix-run/dev": "^2.8.0", - "@remix-run/eslint-config": "^2.8.0", + "@remix-run/dev": "0.0.0-experimental-9989381a2", + "@remix-run/eslint-config": "0.0.0-experimental-9989381a2", "@testing-library/jest-dom": "^6.2.0", "@types/follow-redirects": "^1.14.4", "@types/gunzip-maybe": "^1.4.2", diff --git a/vite.config.mts b/vite.config.mts index bb9044b2..a7c73a54 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -7,5 +7,14 @@ export default defineConfig({ ssr: { noExternal: ["@docsearch/react"], }, - plugins: [tsconfigPaths(), splitVendorChunkPlugin(), arraybuffer(), remix()], + plugins: [ + tsconfigPaths(), + splitVendorChunkPlugin(), + arraybuffer(), + remix({ + future: { + unstable_singleFetch: true, + }, + }), + ], });