diff --git a/.changeset/loud-toys-serve.md b/.changeset/loud-toys-serve.md new file mode 100644 index 0000000..050be86 --- /dev/null +++ b/.changeset/loud-toys-serve.md @@ -0,0 +1,5 @@ +--- +'@mfng/core': patch +--- + +Use a simple replacement for `React.cache` diff --git a/apps/aws-app/package.json b/apps/aws-app/package.json index 540a444..467461b 100644 --- a/apps/aws-app/package.json +++ b/apps/aws-app/package.json @@ -18,16 +18,16 @@ "dependencies": { "@mfng/core": "*", "@mfng/shared-app": "*", - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405" + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508" }, "devDependencies": { "@hono/node-server": "^1.8.2", "@mfng/webpack-rsc": "*", "@swc/core": "^1.3.22", "@types/aws-lambda": "^8.10.136", - "@types/react": "^18.2.75", - "@types/react-dom": "^18.2.24", + "@types/react": "^18.3.2", + "@types/react-dom": "^18.3.0", "autoprefixer": "^10.4.14", "aws-cdk": "^2.132.1", "aws-cdk-lib": "^2.132.1", diff --git a/apps/cloudflare-app/package.json b/apps/cloudflare-app/package.json index 0ed828b..eb9f989 100644 --- a/apps/cloudflare-app/package.json +++ b/apps/cloudflare-app/package.json @@ -18,8 +18,8 @@ "dependencies": { "@mfng/core": "*", "@mfng/shared-app": "*", - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405" + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508" }, "devDependencies": { "@cloudflare/workers-types": "^4.20240222.0", @@ -28,8 +28,8 @@ "@swc/core": "^1.3.22", "@swc/jest": "^0.2.24", "@types/jest": "^29.4.0", - "@types/react": "^18.2.75", - "@types/react-dom": "^18.2.24", + "@types/react": "^18.3.2", + "@types/react-dom": "^18.3.0", "autoprefixer": "^10.4.14", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.7.3", @@ -38,7 +38,7 @@ "mini-css-extract-plugin": "^2.7.5", "postcss": "^8.4.21", "postcss-loader": "^7.0.2", - "react-server-dom-webpack": "0.0.0-experimental-e3ebcd54b-20240405", + "react-server-dom-webpack": "0.0.0-experimental-04b058868c-20240508", "resolve-typescript-plugin": "^2.0.0", "source-map-loader": "^4.0.1", "swc-loader": "^0.2.3", diff --git a/apps/shared-app/package.json b/apps/shared-app/package.json index 36ecddf..3c13ac3 100644 --- a/apps/shared-app/package.json +++ b/apps/shared-app/package.json @@ -26,15 +26,15 @@ "clsx": "^1.2.1", "countries-list": "^2.6.1", "fuse.js": "^6.6.2", - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405", + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508", "react-markdown": "^8.0.5", "server-only": "^0.0.1", "zod": "^3.21.4" }, "devDependencies": { - "@types/react": "^18.2.75", - "@types/react-dom": "^18.2.24", + "@types/react": "^18.3.2", + "@types/react-dom": "^18.3.0", "tailwindcss": "^3.2.7" } } diff --git a/apps/vercel-app/package.json b/apps/vercel-app/package.json index a35c36e..87cee91 100644 --- a/apps/vercel-app/package.json +++ b/apps/vercel-app/package.json @@ -22,16 +22,16 @@ "@mfng/core": "*", "@mfng/shared-app": "*", "@vercel/analytics": "^0.1.11", - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405", + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508", "web-vitals": "^3.3.1" }, "devDependencies": { "@hono/node-server": "^1.8.2", "@mfng/webpack-rsc": "*", "@swc/core": "^1.3.22", - "@types/react": "^18.2.75", - "@types/react-dom": "^18.2.24", + "@types/react": "^18.3.2", + "@types/react-dom": "^18.3.0", "autoprefixer": "^10.4.14", "chokidar": "^3.6.0", "copy-webpack-plugin": "^11.0.0", diff --git a/package-lock.json b/package-lock.json index efb4705..e374ef8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,7 @@ "eslint-plugin-markdown": "^3.0.1", "prettier": "^2.8.7", "prettier-plugin-tailwindcss": "^0.2.4", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405", + "react-dom": "0.0.0-experimental-04b058868c-20240508", "rimraf": "^4.4.1", "turbo": "^1.8.8", "typescript": "^5.2.2" @@ -42,16 +42,16 @@ "dependencies": { "@mfng/core": "*", "@mfng/shared-app": "*", - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405" + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508" }, "devDependencies": { "@hono/node-server": "^1.8.2", "@mfng/webpack-rsc": "*", "@swc/core": "^1.3.22", "@types/aws-lambda": "^8.10.136", - "@types/react": "^18.2.75", - "@types/react-dom": "^18.2.24", + "@types/react": "^18.3.2", + "@types/react-dom": "^18.3.0", "autoprefixer": "^10.4.14", "aws-cdk": "^2.132.1", "aws-cdk-lib": "^2.132.1", @@ -81,8 +81,8 @@ "dependencies": { "@mfng/core": "*", "@mfng/shared-app": "*", - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405" + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508" }, "devDependencies": { "@cloudflare/workers-types": "^4.20240222.0", @@ -91,8 +91,8 @@ "@swc/core": "^1.3.22", "@swc/jest": "^0.2.24", "@types/jest": "^29.4.0", - "@types/react": "^18.2.75", - "@types/react-dom": "^18.2.24", + "@types/react": "^18.3.2", + "@types/react-dom": "^18.3.0", "autoprefixer": "^10.4.14", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.7.3", @@ -101,7 +101,7 @@ "mini-css-extract-plugin": "^2.7.5", "postcss": "^8.4.21", "postcss-loader": "^7.0.2", - "react-server-dom-webpack": "0.0.0-experimental-e3ebcd54b-20240405", + "react-server-dom-webpack": "0.0.0-experimental-04b058868c-20240508", "resolve-typescript-plugin": "^2.0.0", "source-map-loader": "^4.0.1", "swc-loader": "^0.2.3", @@ -122,15 +122,15 @@ "clsx": "^1.2.1", "countries-list": "^2.6.1", "fuse.js": "^6.6.2", - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405", + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508", "react-markdown": "^8.0.5", "server-only": "^0.0.1", "zod": "^3.21.4" }, "devDependencies": { - "@types/react": "^18.2.75", - "@types/react-dom": "^18.2.24", + "@types/react": "^18.3.2", + "@types/react-dom": "^18.3.0", "tailwindcss": "^3.2.7" } }, @@ -142,16 +142,16 @@ "@mfng/core": "*", "@mfng/shared-app": "*", "@vercel/analytics": "^0.1.11", - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405", + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508", "web-vitals": "^3.3.1" }, "devDependencies": { "@hono/node-server": "^1.8.2", "@mfng/webpack-rsc": "*", "@swc/core": "^1.3.22", - "@types/react": "^18.2.75", - "@types/react-dom": "^18.2.24", + "@types/react": "^18.3.2", + "@types/react-dom": "^18.3.0", "autoprefixer": "^10.4.14", "chokidar": "^3.6.0", "copy-webpack-plugin": "^11.0.0", @@ -584,15 +584,6 @@ "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.2.tgz", "integrity": "sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==" }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -2353,9 +2344,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", - "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -2490,13 +2481,10 @@ } }, "node_modules/@changesets/apply-release-plan/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -2528,13 +2516,10 @@ } }, "node_modules/@changesets/assemble-release-plan/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -2707,13 +2692,10 @@ } }, "node_modules/@changesets/cli/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -2894,13 +2876,10 @@ } }, "node_modules/@changesets/get-dependents-graph/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -4959,9 +4938,9 @@ } }, "node_modules/@remix-run/dev/node_modules/yaml": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", - "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", "dev": true, "bin": { "yaml": "bin.mjs" @@ -5607,9 +5586,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "20.12.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz", - "integrity": "sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==", + "version": "20.12.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz", + "integrity": "sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -5639,9 +5618,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "node_modules/@types/react": { - "version": "18.2.75", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.75.tgz", - "integrity": "sha512-+DNnF7yc5y0bHkBTiLKqXFe+L4B3nvOphiMY3tuA5X10esmjqk7smyBZzbGTy2vsiy/Bnzj8yFIBL8xhRacoOg==", + "version": "18.3.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.2.tgz", + "integrity": "sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -5649,9 +5628,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.24", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.24.tgz", - "integrity": "sha512-cN6upcKd8zkGy4HU9F1+/s98Hrp6D4MOcippK4PoE8OZRngohHZpbJn1GsaDLz87MqvHNoT13nHvNqM9ocRHZg==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "dev": true, "dependencies": { "@types/react": "*" @@ -5734,13 +5713,10 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -5861,13 +5837,10 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -5901,13 +5874,10 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -6816,15 +6786,15 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -10712,13 +10682,10 @@ } }, "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -15951,17 +15918,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -17490,28 +17457,28 @@ } }, "node_modules/react": { - "version": "0.0.0-experimental-e3ebcd54b-20240405", - "resolved": "https://registry.npmjs.org/react/-/react-0.0.0-experimental-e3ebcd54b-20240405.tgz", - "integrity": "sha512-JlE1/jOLzhl0Nd+blmAeUno8t0io1hzawUuIWLNFRHgrxcUxyNkhlSwKhOfxtF73xylYNgJJHmXWGXdZB9tqxg==", + "version": "0.0.0-experimental-04b058868c-20240508", + "resolved": "https://registry.npmjs.org/react/-/react-0.0.0-experimental-04b058868c-20240508.tgz", + "integrity": "sha512-Sw5C323J4jyhwnJM1C3DflomFdvsi6OFn6ygokaUeWjEyUxpzyzXCunfm4hE9PsE/IYqQFMWQY8ZtlTv5eQBHA==", "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "0.0.0-experimental-e3ebcd54b-20240405", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.0.0-experimental-e3ebcd54b-20240405.tgz", - "integrity": "sha512-6d+Qy92j0IZv1CcOvIiPbhs+3BSEeztH39wSTJ0kurexlg+bhgfCw2+qLbo3djLzfo9KeMoojcCnaMqwRPOtoA==", + "version": "0.0.0-experimental-04b058868c-20240508", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.0.0-experimental-04b058868c-20240508.tgz", + "integrity": "sha512-Lln68q2EH1Gjy01IwAsSWmf4bvrH7FFJc5stnTX4TOj4IEfeRxdQgQtSO1c2G065TGe6hua01lDewGifSktT9w==", "dependencies": { - "scheduler": "0.0.0-experimental-e3ebcd54b-20240405" + "scheduler": "0.0.0-experimental-04b058868c-20240508" }, "peerDependencies": { - "react": "0.0.0-experimental-e3ebcd54b-20240405" + "react": "0.0.0-experimental-04b058868c-20240508" } }, "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, "node_modules/react-markdown": { "version": "8.0.5", @@ -17553,9 +17520,9 @@ } }, "node_modules/react-server-dom-webpack": { - "version": "0.0.0-experimental-e3ebcd54b-20240405", - "resolved": "https://registry.npmjs.org/react-server-dom-webpack/-/react-server-dom-webpack-0.0.0-experimental-e3ebcd54b-20240405.tgz", - "integrity": "sha512-46scerVHcSzT+ih/zZ/tsHFmjvFLCw4ytSJbVpg23CzWcTZvhL4p+4XviL/UY94QrzQDZG1DxHM/QbUo9E1Xxw==", + "version": "0.0.0-experimental-04b058868c-20240508", + "resolved": "https://registry.npmjs.org/react-server-dom-webpack/-/react-server-dom-webpack-0.0.0-experimental-04b058868c-20240508.tgz", + "integrity": "sha512-Y5A/BcgBTHfLovk0od9Fyt+44li9U2H8I5q16TmDnVNnXfntM4L9RdjPgI/T2AOsSmByBJ2Nw1Iwco7k425fnQ==", "dev": true, "dependencies": { "acorn-loose": "^8.3.0", @@ -17565,8 +17532,8 @@ "node": ">=0.10.0" }, "peerDependencies": { - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405", + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508", "webpack": "^5.59.0" } }, @@ -18411,9 +18378,9 @@ "dev": true }, "node_modules/scheduler": { - "version": "0.0.0-experimental-e3ebcd54b-20240405", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.0.0-experimental-e3ebcd54b-20240405.tgz", - "integrity": "sha512-VUTAH8poyVzJcxNB20aN+bTUk2tjgykf3Ie1vgdK6AZKcmK3IpFSyueZ5ZwIQlWj31dpEpBcAmKSLz7b69t63A==" + "version": "0.0.0-experimental-04b058868c-20240508", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.0.0-experimental-04b058868c-20240508.tgz", + "integrity": "sha512-9CYaAmpRK3c2NLiKf48q4pqG2MifEqG1R1lgYTTowMzpeBXyKAamB0CDpvbsdGeXSyLnvdLC3hrMzrbfpuXIfw==" }, "node_modules/schema-utils": { "version": "4.2.0", @@ -18435,15 +18402,15 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -21921,9 +21888,9 @@ "dev": true }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -22501,9 +22468,9 @@ } }, "node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, "engines": { "node": ">=10.0.0" @@ -22778,11 +22745,11 @@ }, "devDependencies": { "@types/htmlescape": "^1.1.1", - "@types/react": "^18.2.75", - "@types/react-dom": "^18.2.24", - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405", - "react-server-dom-webpack": "0.0.0-experimental-e3ebcd54b-20240405" + "@types/react": "^18.3.2", + "@types/react-dom": "^18.3.0", + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508", + "react-server-dom-webpack": "0.0.0-experimental-04b058868c-20240508" }, "peerDependencies": { "react": "*", @@ -22814,9 +22781,9 @@ "jest-config": "^29.5.0", "memory-fs": "^0.5.0", "prettier": "^2.8.7", - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405", - "react-server-dom-webpack": "0.0.0-experimental-e3ebcd54b-20240405", + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508", + "react-server-dom-webpack": "0.0.0-experimental-04b058868c-20240508", "webpack": "^5.75.0" }, "peerDependencies": { diff --git a/package.json b/package.json index 563edba..4f86235 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "eslint-plugin-markdown": "^3.0.1", "prettier": "^2.8.7", "prettier-plugin-tailwindcss": "^0.2.4", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405", + "react-dom": "0.0.0-experimental-04b058868c-20240508", "rimraf": "^4.4.1", "turbo": "^1.8.8", "typescript": "^5.2.2" diff --git a/packages/core/package.json b/packages/core/package.json index 7c852bc..a5c51b6 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -47,11 +47,11 @@ }, "devDependencies": { "@types/htmlescape": "^1.1.1", - "@types/react": "^18.2.75", - "@types/react-dom": "^18.2.24", - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405", - "react-server-dom-webpack": "0.0.0-experimental-e3ebcd54b-20240405" + "@types/react": "^18.3.2", + "@types/react-dom": "^18.3.0", + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508", + "react-server-dom-webpack": "0.0.0-experimental-04b058868c-20240508" }, "peerDependencies": { "react": "*", diff --git a/packages/core/src/client/create-simple-promise-cache.ts b/packages/core/src/client/create-simple-promise-cache.ts new file mode 100644 index 0000000..1d73c68 --- /dev/null +++ b/packages/core/src/client/create-simple-promise-cache.ts @@ -0,0 +1,21 @@ +export function createSimplePromiseCache( + fn: (key: string) => Promise, + initialEntries?: [string, Promise][], +): (key: string) => Promise { + const cache = new Map>(initialEntries); + + // eslint-disable-next-line @typescript-eslint/promise-function-async + return (key) => { + const cachedPromise = cache.get(key); + + if (cachedPromise) { + return cachedPromise; + } + + const promise = fn(key); + + cache.set(key, promise); + + return promise; + }; +} diff --git a/packages/core/src/client/hydrate-app.tsx b/packages/core/src/client/hydrate-app.tsx index d18a338..6c389d3 100644 --- a/packages/core/src/client/hydrate-app.tsx +++ b/packages/core/src/client/hydrate-app.tsx @@ -3,6 +3,7 @@ import type {ReactFormState} from 'react-dom/client'; import ReactDOMClient from 'react-dom/client'; import ReactServerDOMClient from 'react-server-dom-webpack/client.browser'; import {callServer} from './call-server.js'; +import {createSimplePromiseCache} from './create-simple-promise-cache.js'; import {createUrlPath} from './router-location-utils.js'; import {Router} from './router.js'; @@ -20,20 +21,17 @@ export async function hydrateApp(): Promise { const initialUrlPath = createUrlPath(document.location); - const fetchRoot = React.cache(async function fetchRoot( - urlPath: string, - ): Promise { - if (urlPath === initialUrlPath) { - return initialRoot; - } + const fetchRoot = createSimplePromiseCache( + async function fetchRoot(urlPath: string): Promise { + const {root} = await ReactServerDOMClient.createFromFetch( + fetch(urlPath, {headers: {accept: `text/x-component`}}), + {callServer}, + ); - const {root} = await ReactServerDOMClient.createFromFetch( - fetch(urlPath, {headers: {accept: `text/x-component`}}), - {callServer}, - ); - - return root; - }); + return root; + }, + [[initialUrlPath, Promise.resolve(initialRoot)]], + ); React.startTransition(() => { ReactDOMClient.hydrateRoot( diff --git a/packages/webpack-rsc/package.json b/packages/webpack-rsc/package.json index 9215275..17408e2 100644 --- a/packages/webpack-rsc/package.json +++ b/packages/webpack-rsc/package.json @@ -43,9 +43,9 @@ "jest-config": "^29.5.0", "memory-fs": "^0.5.0", "prettier": "^2.8.7", - "react": "0.0.0-experimental-e3ebcd54b-20240405", - "react-dom": "0.0.0-experimental-e3ebcd54b-20240405", - "react-server-dom-webpack": "0.0.0-experimental-e3ebcd54b-20240405", + "react": "0.0.0-experimental-04b058868c-20240508", + "react-dom": "0.0.0-experimental-04b058868c-20240508", + "react-server-dom-webpack": "0.0.0-experimental-04b058868c-20240508", "webpack": "^5.75.0" }, "peerDependencies": { diff --git a/packages/webpack-rsc/src/webpack-rsc-server-plugin.test.ts b/packages/webpack-rsc/src/webpack-rsc-server-plugin.test.ts index 2537a69..36c1c47 100644 --- a/packages/webpack-rsc/src/webpack-rsc-server-plugin.test.ts +++ b/packages/webpack-rsc/src/webpack-rsc-server-plugin.test.ts @@ -308,23 +308,23 @@ async function serverFunctionPassedFromServer() { var n = r(324), o = r(240); const i = (0, n.registerClientReference)( - ((a = "ClientComponentWithServerAction"), + ((s = "ClientComponentWithServerAction"), () => { throw new Error( - \`Attempted to call $\{a}() from the server but $\{a} is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\` + \`Attempted to call \${s}() from the server but \${s} is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\` ); }), "src/__fixtures__/client-component-with-server-action.js#ClientComponentWithServerAction", "ClientComponentWithServerAction" ); - var a, - s = r(871); + var s, + a = r(871); async function u() { return Promise.resolve("server-function-with-inline-directive"); } function c() { return o.createElement(i, { - action1: s.serverFunctionPassedFromServer, + action1: a.serverFunctionPassedFromServer, action2: u, }); }