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,
+ },
+ }),
+ ],
});