From b77d59022a00021ebbcb2407bc9ad1b6d023ecc6 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 20 Jan 2023 17:23:53 +0000 Subject: [PATCH 1/7] fix: match params for edge runtime --- demos/default/pages/edge/[id].js | 23 ++ package-lock.json | 327 ++++++++++++++++-- packages/runtime/src/helpers/edge.ts | 2 + packages/runtime/src/templates/edge/bundle.js | 3 +- .../src/templates/edge/function-runtime.ts | 3 +- 5 files changed, 324 insertions(+), 34 deletions(-) create mode 100644 demos/default/pages/edge/[id].js diff --git a/demos/default/pages/edge/[id].js b/demos/default/pages/edge/[id].js new file mode 100644 index 0000000000..ac9566d239 --- /dev/null +++ b/demos/default/pages/edge/[id].js @@ -0,0 +1,23 @@ +export const config = { + runtime: 'experimental-edge', +} + +export default function Page(props) { + return ( + <> +

/edge/[id]

+

{JSON.stringify(props)}

+ + ) +} + +export function getServerSideProps({ req, params, query }) { + return { + props: { + url: req.url, + query, + params, + now: Date.now(), + }, + } +} diff --git a/package-lock.json b/package-lock.json index a61f93c645..49db9b54a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5609,13 +5609,13 @@ "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "devOptional": true + "dev": true }, "node_modules/@types/react": { "version": "18.0.26", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", - "devOptional": true, + "dev": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -5641,7 +5641,7 @@ "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "devOptional": true + "dev": true }, "node_modules/@types/semver": { "version": "7.3.13", @@ -9423,7 +9423,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", - "devOptional": true + "dev": true }, "node_modules/custom-routes": { "resolved": "demos/custom-routes", @@ -13782,7 +13782,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "devOptional": true + "dev": true }, "node_modules/import-fresh": { "version": "3.3.0", @@ -21482,7 +21482,7 @@ "version": "1.56.2", "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.2.tgz", "integrity": "sha512-ciEJhnyCRwzlBCB+h5cCPM6ie/6f8HrhZMQOf5vlU60Y1bI1rx5Zb0vlDZvaycHsg/MqFfF1Eq2eokAa32iw8w==", - "devOptional": true, + "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -24609,6 +24609,201 @@ "engines": { "node": ">=10" } + }, + "node_modules/@next/swc-android-arm-eabi": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.0.7.tgz", + "integrity": "sha512-QTEamOK/LCwBf05GZ261rULMbZEpE3TYdjHlXfznV+nXwTztzkBNFXwP67gv2wW44BROzgi/vrR9H8oP+J5jxg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-android-arm64": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.0.7.tgz", + "integrity": "sha512-wcy2H0Tl9ME8vKy2GnJZ7Mybwys+43F/Eh2Pvph7mSDpMbYBJ6iA0zeY62iYYXxlZhnAID3+h79FUqUEakkClw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.0.7.tgz", + "integrity": "sha512-F/mU7csN1/J2cqXJPMgTQ6MwAbc1pJ6sp6W+X0z5JEY4IFDzxKd3wRc3pCiNF7j8xW381JlNpWxhjCctnNmfaw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.7.tgz", + "integrity": "sha512-636AuRQynCPnIPRVzcCk5B7OMq9XjaYam2T0HeWUCE6y7EqEO3kxiuZ4QmN81T7A6Ydb+JnivYrLelHXmgdj6A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-freebsd-x64": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.0.7.tgz", + "integrity": "sha512-92XAMzNgQazowZ9t7uZmHRA5VdBl/SwEdrf5UybdfRovsxB4r3+yJWEvFaqYpSEp0gwndbwLokJdpz7OwFdL3Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm-gnueabihf": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.0.7.tgz", + "integrity": "sha512-3r1CWl5P6I5n5Yxip8EXv/Rfu2Cp6wVmIOpvmczyUR82j+bcMkwPAcUjNkG/vMCagS4xV7NElrcdGb39iFmfLg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.0.7.tgz", + "integrity": "sha512-RXo8tt6ppiwyS6hpDw3JdAjKcdVewsefxnxk9xOH4mRhMyq9V2lQx0e24X/dRiZqkx3jnWReR2WRrUlgN1UkSQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.0.7.tgz", + "integrity": "sha512-RWpnW+bmfXyxyY7iARbueYDGuIF+BEp3etLeYh/RUNHb9PhOHLDgJOG8haGSykud3a6CcyBI8hEjqOhoObaDpw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.0.7.tgz", + "integrity": "sha512-/ygUIiMMTYnbKlFs5Ba9J5k/tNxFWy8eI1bBF8UuMTvV8QJHl/aLDiA5dwsei2kk99/cu3eay62JnJXkSk3RSQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.0.7.tgz", + "integrity": "sha512-dLzr6AL77USJN0ejgx5AS8O8SbFlbYTzs0XwAWag4oQpUG2p3ARvxwQgYQ0Z+6EP0zIRZ/XfLkN/mhsyi3m4PA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.0.7.tgz", + "integrity": "sha512-+vFIVa82AwqFkpFClKT+n73fGxrhAZ2u1u3mDYEBdxO6c9U4Pj3S5tZFsGFK9kLT/bFvf/eeVOICSLCC7MSgJQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.0.7.tgz", + "integrity": "sha512-RNLXIhp+assD39dQY9oHhDxw+/qSJRARKhOFsHfOtf8yEfCHqcKkn3X/L+ih60ntaEqK294y1WkMk6ylotsxwA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.7.tgz", + "integrity": "sha512-kvdnlLcrnEq72ZP0lqe2Z5NqvB9N5uSCvtXJ0PhKvNncWWd0fEG9Ec9erXgwCmVlM2ytw41k9/uuQ+SVw4Pihw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } } }, "dependencies": { @@ -28517,13 +28712,13 @@ "version": "15.7.5", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "devOptional": true + "dev": true }, "@types/react": { "version": "18.0.26", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", - "devOptional": true, + "dev": true, "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -28549,7 +28744,7 @@ "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "devOptional": true + "dev": true }, "@types/semver": { "version": "7.3.13", @@ -28864,8 +29059,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "acorn-walk": { "version": "7.2.0", @@ -28922,8 +29116,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==", - "dev": true, - "requires": {} + "dev": true }, "ansi-align": { "version": "3.0.1", @@ -30911,8 +31104,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.2.0.tgz", "integrity": "sha512-NkANeMnaHrlaSSlpKGyvn2R4rqUDeE/9E5YHx+b4nwo0R8dZyAqcih8/gxpCZvqWP9Vf6xuLpMSzSgdVEIM78g==", - "dev": true, - "requires": {} + "dev": true }, "cp-file": { "version": "10.0.0", @@ -31435,7 +31627,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", - "devOptional": true + "dev": true }, "custom-routes": { "version": "file:demos/custom-routes", @@ -32598,15 +32790,13 @@ "version": "8.5.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "requires": {} + "dev": true }, "eslint-config-standard": { "version": "17.0.0", "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", - "dev": true, - "requires": {} + "dev": true }, "eslint-formatter-codeframe": { "version": "7.32.1", @@ -33052,8 +33242,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", - "dev": true, - "requires": {} + "dev": true }, "eslint-plugin-react": { "version": "7.31.10", @@ -33111,8 +33300,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "requires": {} + "dev": true }, "eslint-plugin-unicorn": { "version": "43.0.2", @@ -34731,7 +34919,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "devOptional": true + "dev": true }, "import-fresh": { "version": "3.3.0", @@ -35902,8 +36090,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} + "dev": true }, "jest-regex-util": { "version": "27.5.1", @@ -40503,7 +40690,7 @@ "version": "1.56.2", "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.2.tgz", "integrity": "sha512-ciEJhnyCRwzlBCB+h5cCPM6ie/6f8HrhZMQOf5vlU60Y1bI1rx5Zb0vlDZvaycHsg/MqFfF1Eq2eokAa32iw8w==", - "devOptional": true, + "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -42225,8 +42412,7 @@ "ws": { "version": "8.11.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "requires": {} + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==" } } }, @@ -42731,8 +42917,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} + "dev": true }, "xdg-basedir": { "version": "4.0.0", @@ -42888,6 +43073,84 @@ "compress-commons": "^4.1.0", "readable-stream": "^3.6.0" } + }, + "@next/swc-android-arm-eabi": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.0.7.tgz", + "integrity": "sha512-QTEamOK/LCwBf05GZ261rULMbZEpE3TYdjHlXfznV+nXwTztzkBNFXwP67gv2wW44BROzgi/vrR9H8oP+J5jxg==", + "optional": true + }, + "@next/swc-android-arm64": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.0.7.tgz", + "integrity": "sha512-wcy2H0Tl9ME8vKy2GnJZ7Mybwys+43F/Eh2Pvph7mSDpMbYBJ6iA0zeY62iYYXxlZhnAID3+h79FUqUEakkClw==", + "optional": true + }, + "@next/swc-darwin-arm64": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.0.7.tgz", + "integrity": "sha512-F/mU7csN1/J2cqXJPMgTQ6MwAbc1pJ6sp6W+X0z5JEY4IFDzxKd3wRc3pCiNF7j8xW381JlNpWxhjCctnNmfaw==", + "optional": true + }, + "@next/swc-darwin-x64": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.7.tgz", + "integrity": "sha512-636AuRQynCPnIPRVzcCk5B7OMq9XjaYam2T0HeWUCE6y7EqEO3kxiuZ4QmN81T7A6Ydb+JnivYrLelHXmgdj6A==", + "optional": true + }, + "@next/swc-freebsd-x64": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.0.7.tgz", + "integrity": "sha512-92XAMzNgQazowZ9t7uZmHRA5VdBl/SwEdrf5UybdfRovsxB4r3+yJWEvFaqYpSEp0gwndbwLokJdpz7OwFdL3Q==", + "optional": true + }, + "@next/swc-linux-arm-gnueabihf": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.0.7.tgz", + "integrity": "sha512-3r1CWl5P6I5n5Yxip8EXv/Rfu2Cp6wVmIOpvmczyUR82j+bcMkwPAcUjNkG/vMCagS4xV7NElrcdGb39iFmfLg==", + "optional": true + }, + "@next/swc-linux-arm64-gnu": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.0.7.tgz", + "integrity": "sha512-RXo8tt6ppiwyS6hpDw3JdAjKcdVewsefxnxk9xOH4mRhMyq9V2lQx0e24X/dRiZqkx3jnWReR2WRrUlgN1UkSQ==", + "optional": true + }, + "@next/swc-linux-arm64-musl": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.0.7.tgz", + "integrity": "sha512-RWpnW+bmfXyxyY7iARbueYDGuIF+BEp3etLeYh/RUNHb9PhOHLDgJOG8haGSykud3a6CcyBI8hEjqOhoObaDpw==", + "optional": true + }, + "@next/swc-linux-x64-gnu": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.0.7.tgz", + "integrity": "sha512-/ygUIiMMTYnbKlFs5Ba9J5k/tNxFWy8eI1bBF8UuMTvV8QJHl/aLDiA5dwsei2kk99/cu3eay62JnJXkSk3RSQ==", + "optional": true + }, + "@next/swc-linux-x64-musl": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.0.7.tgz", + "integrity": "sha512-dLzr6AL77USJN0ejgx5AS8O8SbFlbYTzs0XwAWag4oQpUG2p3ARvxwQgYQ0Z+6EP0zIRZ/XfLkN/mhsyi3m4PA==", + "optional": true + }, + "@next/swc-win32-arm64-msvc": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.0.7.tgz", + "integrity": "sha512-+vFIVa82AwqFkpFClKT+n73fGxrhAZ2u1u3mDYEBdxO6c9U4Pj3S5tZFsGFK9kLT/bFvf/eeVOICSLCC7MSgJQ==", + "optional": true + }, + "@next/swc-win32-ia32-msvc": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.0.7.tgz", + "integrity": "sha512-RNLXIhp+assD39dQY9oHhDxw+/qSJRARKhOFsHfOtf8yEfCHqcKkn3X/L+ih60ntaEqK294y1WkMk6ylotsxwA==", + "optional": true + }, + "@next/swc-win32-x64-msvc": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.7.tgz", + "integrity": "sha512-kvdnlLcrnEq72ZP0lqe2Z5NqvB9N5uSCvtXJ0PhKvNncWWd0fEG9Ec9erXgwCmVlM2ytw41k9/uuQ+SVw4Pihw==", + "optional": true } } } diff --git a/packages/runtime/src/helpers/edge.ts b/packages/runtime/src/helpers/edge.ts index 7b0e2bbd5f..3d07490126 100644 --- a/packages/runtime/src/helpers/edge.ts +++ b/packages/runtime/src/helpers/edge.ts @@ -153,6 +153,8 @@ const getMiddlewareBundle = async ({ const { publish } = netlifyConfig.build const chunks: Array = [preamble] + chunks.push(`export const _DEFINITION = ${JSON.stringify(edgeFunctionDefinition)}`) + if ('wasm' in edgeFunctionDefinition) { for (const { name, filePath } of edgeFunctionDefinition.wasm) { const wasm = await fs.readFile(join(publish, filePath)) diff --git a/packages/runtime/src/templates/edge/bundle.js b/packages/runtime/src/templates/edge/bundle.js index 757d42d69f..a5108e00fb 100644 --- a/packages/runtime/src/templates/edge/bundle.js +++ b/packages/runtime/src/templates/edge/bundle.js @@ -1,7 +1,8 @@ /** * This placeholder is replaced with the compiled Next.js bundle at build time * @param {Object} props - * @param {import("./runtime.ts").RequestData} props.request + * @param {import("./function-runtime.ts").RequestData} props.request * @returns {Promise} */ export default async ({ request }) => {} +export const _DEFINITION = { env: [], files: [], page: 'placeholder', name: 'pages_placeholder', matchers: [] } diff --git a/packages/runtime/src/templates/edge/function-runtime.ts b/packages/runtime/src/templates/edge/function-runtime.ts index 9d8513d904..066e40ba8c 100644 --- a/packages/runtime/src/templates/edge/function-runtime.ts +++ b/packages/runtime/src/templates/edge/function-runtime.ts @@ -1,6 +1,6 @@ import type { Context } from 'https://edge.netlify.com' // Available at build time -import edgeFunction from './bundle.js' +import { _DEFINITION as edgeFunctionDefinition, default as edgeFunction } from './bundle.js' import { buildNextRequest, buildResponse, redirectTrailingSlash } from '../edge-shared/utils.ts' import nextConfig from '../edge-shared/nextConfig.json' assert { type: 'json' } @@ -11,6 +11,7 @@ const handler = async (req: Request, context: Context) => { return redirect } const request = buildNextRequest(req, context, nextConfig) + request.headers['x-matched-path'] ||= edgeFunctionDefinition.page try { const result = await edgeFunction({ request }) return buildResponse({ result, request: req, context }) From 01366412eb3c14804abf722f1ddd335edcf2d45d Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 20 Jan 2023 17:26:17 +0000 Subject: [PATCH 2/7] chore: re-enable test --- .../edge-render-getserversideprops/app/next.config.js | 0 .../edge-render-getserversideprops/app/pages/[id].js | 0 .../edge-render-getserversideprops/app/pages/index.js | 0 .../edge-render-getserversideprops/index.test.ts | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename test/e2e/{disabled-tests => tests}/edge-render-getserversideprops/app/next.config.js (100%) rename test/e2e/{disabled-tests => tests}/edge-render-getserversideprops/app/pages/[id].js (100%) rename test/e2e/{disabled-tests => tests}/edge-render-getserversideprops/app/pages/index.js (100%) rename test/e2e/{disabled-tests => tests}/edge-render-getserversideprops/index.test.ts (100%) diff --git a/test/e2e/disabled-tests/edge-render-getserversideprops/app/next.config.js b/test/e2e/tests/edge-render-getserversideprops/app/next.config.js similarity index 100% rename from test/e2e/disabled-tests/edge-render-getserversideprops/app/next.config.js rename to test/e2e/tests/edge-render-getserversideprops/app/next.config.js diff --git a/test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/[id].js b/test/e2e/tests/edge-render-getserversideprops/app/pages/[id].js similarity index 100% rename from test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/[id].js rename to test/e2e/tests/edge-render-getserversideprops/app/pages/[id].js diff --git a/test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/index.js b/test/e2e/tests/edge-render-getserversideprops/app/pages/index.js similarity index 100% rename from test/e2e/disabled-tests/edge-render-getserversideprops/app/pages/index.js rename to test/e2e/tests/edge-render-getserversideprops/app/pages/index.js diff --git a/test/e2e/disabled-tests/edge-render-getserversideprops/index.test.ts b/test/e2e/tests/edge-render-getserversideprops/index.test.ts similarity index 100% rename from test/e2e/disabled-tests/edge-render-getserversideprops/index.test.ts rename to test/e2e/tests/edge-render-getserversideprops/index.test.ts From 4c7affb4438806aa276816329c4552ff1db8d54f Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 20 Jan 2023 17:45:03 +0000 Subject: [PATCH 3/7] chore: snapidoo --- test/__snapshots__/index.spec.js.snap | 41 +++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/test/__snapshots__/index.spec.js.snap b/test/__snapshots__/index.spec.js.snap index 8854f5699a..d02c62092b 100644 --- a/test/__snapshots__/index.spec.js.snap +++ b/test/__snapshots__/index.spec.js.snap @@ -28,6 +28,7 @@ Array [ ".next/server/pages/api/shows/[...params].js", ".next/server/pages/api/shows/[id].js", ".next/server/pages/deep/import.js", + ".next/server/pages/edge/[id].js", ".next/server/pages/getServerSideProps/[id].js", ".next/server/pages/getServerSideProps/all/[[...slug]].js", ".next/server/pages/getServerSideProps/file.js", @@ -122,6 +123,7 @@ exports.resolvePages = () => { require.resolve('../../../.next/server/pages/api/shows/[...params].js') require.resolve('../../../.next/server/pages/api/shows/[id].js') require.resolve('../../../.next/server/pages/deep/import.js') + require.resolve('../../../.next/server/pages/edge/[id].js') require.resolve('../../../.next/server/pages/getServerSideProps/[id].js') require.resolve('../../../.next/server/pages/getServerSideProps/all/[[...slug]].js') require.resolve('../../../.next/server/pages/getServerSideProps/file.js') @@ -180,6 +182,7 @@ exports.resolvePages = () => { require.resolve('../../../.next/server/pages/api/shows/[...params].js') require.resolve('../../../.next/server/pages/api/shows/[id].js') require.resolve('../../../.next/server/pages/deep/import.js') + require.resolve('../../../.next/server/pages/edge/[id].js') require.resolve('../../../.next/server/pages/getServerSideProps/[id].js') require.resolve('../../../.next/server/pages/getServerSideProps/all/[[...slug]].js') require.resolve('../../../.next/server/pages/getServerSideProps/file.js') @@ -238,6 +241,7 @@ exports.resolvePages = () => { require.resolve('../../../web/.next/server/pages/api/shows/[...params].js') require.resolve('../../../web/.next/server/pages/api/shows/[id].js') require.resolve('../../../web/.next/server/pages/deep/import.js') + require.resolve('../../../web/.next/server/pages/edge/[id].js') require.resolve('../../../web/.next/server/pages/getServerSideProps/[id].js') require.resolve('../../../web/.next/server/pages/getServerSideProps/all/[[...slug]].js') require.resolve('../../../web/.next/server/pages/getServerSideProps/file.js') @@ -296,6 +300,7 @@ exports.resolvePages = () => { require.resolve('../../../web/.next/server/pages/api/shows/[...params].js') require.resolve('../../../web/.next/server/pages/api/shows/[id].js') require.resolve('../../../web/.next/server/pages/deep/import.js') + require.resolve('../../../web/.next/server/pages/edge/[id].js') require.resolve('../../../web/.next/server/pages/getServerSideProps/[id].js') require.resolve('../../../web/.next/server/pages/getServerSideProps/all/[[...slug]].js') require.resolve('../../../web/.next/server/pages/getServerSideProps/file.js') @@ -671,6 +676,12 @@ Array [ "status": 200, "to": "/.netlify/functions/___netlify-handler", }, + Object { + "force": false, + "from": "/_next/data/build-id/en/edge/:id.json", + "status": 200, + "to": "/.netlify/functions/___netlify-handler", + }, Object { "force": false, "from": "/_next/data/build-id/en/env.json", @@ -911,6 +922,12 @@ Array [ "status": 200, "to": "/.netlify/functions/___netlify-handler", }, + Object { + "force": false, + "from": "/_next/data/build-id/es/edge/:id.json", + "status": 200, + "to": "/.netlify/functions/___netlify-handler", + }, Object { "force": false, "from": "/_next/data/build-id/es/env.json", @@ -1109,6 +1126,12 @@ Array [ "status": 200, "to": "/.netlify/functions/___netlify-handler", }, + Object { + "force": false, + "from": "/_next/data/build-id/fr/edge/:id.json", + "status": 200, + "to": "/.netlify/functions/___netlify-handler", + }, Object { "force": false, "from": "/_next/data/build-id/fr/env.json", @@ -1443,6 +1466,12 @@ Array [ "status": 200, "to": "/.netlify/functions/___netlify-handler", }, + Object { + "force": false, + "from": "/edge/:id", + "status": 200, + "to": "/.netlify/functions/___netlify-handler", + }, Object { "force": false, "from": "/env", @@ -1503,6 +1532,12 @@ Array [ "status": 200, "to": "/.netlify/functions/___netlify-handler", }, + Object { + "force": false, + "from": "/es/edge/:id", + "status": 200, + "to": "/.netlify/functions/___netlify-handler", + }, Object { "force": false, "from": "/es/env", @@ -1731,6 +1766,12 @@ Array [ "status": 200, "to": "/.netlify/functions/___netlify-handler", }, + Object { + "force": false, + "from": "/fr/edge/:id", + "status": 200, + "to": "/.netlify/functions/___netlify-handler", + }, Object { "force": false, "from": "/fr/env", From 9d454393b7483527527cc6c863824625ca6e14c6 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 20 Jan 2023 17:48:44 +0000 Subject: [PATCH 4/7] chore: disable rewrite tests --- .../app/next.config.js | 0 .../app/pages/[id].js | 0 .../app/pages/index.js | 0 .../index.test.ts | 38 +++++++------------ 4 files changed, 13 insertions(+), 25 deletions(-) rename test/e2e/{tests => modified-tests}/edge-render-getserversideprops/app/next.config.js (100%) rename test/e2e/{tests => modified-tests}/edge-render-getserversideprops/app/pages/[id].js (100%) rename test/e2e/{tests => modified-tests}/edge-render-getserversideprops/app/pages/index.js (100%) rename test/e2e/{tests => modified-tests}/edge-render-getserversideprops/index.test.ts (80%) diff --git a/test/e2e/tests/edge-render-getserversideprops/app/next.config.js b/test/e2e/modified-tests/edge-render-getserversideprops/app/next.config.js similarity index 100% rename from test/e2e/tests/edge-render-getserversideprops/app/next.config.js rename to test/e2e/modified-tests/edge-render-getserversideprops/app/next.config.js diff --git a/test/e2e/tests/edge-render-getserversideprops/app/pages/[id].js b/test/e2e/modified-tests/edge-render-getserversideprops/app/pages/[id].js similarity index 100% rename from test/e2e/tests/edge-render-getserversideprops/app/pages/[id].js rename to test/e2e/modified-tests/edge-render-getserversideprops/app/pages/[id].js diff --git a/test/e2e/tests/edge-render-getserversideprops/app/pages/index.js b/test/e2e/modified-tests/edge-render-getserversideprops/app/pages/index.js similarity index 100% rename from test/e2e/tests/edge-render-getserversideprops/app/pages/index.js rename to test/e2e/modified-tests/edge-render-getserversideprops/app/pages/index.js diff --git a/test/e2e/tests/edge-render-getserversideprops/index.test.ts b/test/e2e/modified-tests/edge-render-getserversideprops/index.test.ts similarity index 80% rename from test/e2e/tests/edge-render-getserversideprops/index.test.ts rename to test/e2e/modified-tests/edge-render-getserversideprops/index.test.ts index c3ea23aca7..ff41df1c5f 100644 --- a/test/e2e/tests/edge-render-getserversideprops/index.test.ts +++ b/test/e2e/modified-tests/edge-render-getserversideprops/index.test.ts @@ -4,6 +4,7 @@ import { fetchViaHTTP, normalizeRegEx, renderViaHTTP } from 'next-test-utils' import cheerio from 'cheerio' import { join } from 'path' import escapeStringRegexp from 'escape-string-regexp' +const usuallySkip = process.env.RUN_SKIPPED_TESTS ? it : it.skip describe('edge-render-getserversideprops', () => { let next: NextInstance @@ -36,7 +37,7 @@ describe('edge-render-getserversideprops', () => { expect(props.url).toBe('/123?hello=world') }) - it('should have correct query/params on rewrite', async () => { + usuallySkip('should have correct query/params on rewrite', async () => { const html = await renderViaHTTP(next.url, '/rewrite-me', { hello: 'world', }) @@ -48,7 +49,7 @@ describe('edge-render-getserversideprops', () => { expect(props.url).toBe('/rewrite-me?hello=world') }) - it('should have correct query/params on dynamic rewrite', async () => { + usuallySkip('should have correct query/params on dynamic rewrite', async () => { const html = await renderViaHTTP(next.url, '/rewrite-me-dynamic', { hello: 'world', }) @@ -61,16 +62,11 @@ describe('edge-render-getserversideprops', () => { }) it('should respond to _next/data for index correctly', async () => { - const res = await fetchViaHTTP( - next.url, - `/_next/data/${next.buildId}/index.json`, - undefined, - { - headers: { - 'x-nextjs-data': '1', - }, - } - ) + const res = await fetchViaHTTP(next.url, `/_next/data/${next.buildId}/index.json`, undefined, { + headers: { + 'x-nextjs-data': '1', + }, + }) expect(res.status).toBe(200) const { pageProps: props } = await res.json() expect(props.query).toEqual({}) @@ -86,7 +82,7 @@ describe('edge-render-getserversideprops', () => { headers: { 'x-nextjs-data': '1', }, - } + }, ) expect(res.status).toBe(200) const { pageProps: props } = await res.json() @@ -96,9 +92,7 @@ describe('edge-render-getserversideprops', () => { if ((global as any).isNextStart) { it('should have data routes in routes-manifest', async () => { - const manifest = JSON.parse( - await next.readFile('.next/routes-manifest.json') - ) + const manifest = JSON.parse(await next.readFile('.next/routes-manifest.json')) for (const route of manifest.dataRoutes) { route.dataRouteRegex = normalizeRegEx(route.dataRouteRegex) @@ -106,18 +100,12 @@ describe('edge-render-getserversideprops', () => { expect(manifest.dataRoutes).toEqual([ { - dataRouteRegex: normalizeRegEx( - `^/_next/data/${escapeStringRegexp(next.buildId)}/index.json$` - ), + dataRouteRegex: normalizeRegEx(`^/_next/data/${escapeStringRegexp(next.buildId)}/index.json$`), page: '/', }, { - dataRouteRegex: normalizeRegEx( - `^/_next/data/${escapeStringRegexp(next.buildId)}/([^/]+?)\\.json$` - ), - namedDataRouteRegex: `^/_next/data/${escapeStringRegexp( - next.buildId - )}/(?[^/]+?)\\.json$`, + dataRouteRegex: normalizeRegEx(`^/_next/data/${escapeStringRegexp(next.buildId)}/([^/]+?)\\.json$`), + namedDataRouteRegex: `^/_next/data/${escapeStringRegexp(next.buildId)}/(?[^/]+?)\\.json$`, page: '/[id]', routeKeys: { id: 'id', From 1d868c72707be22846deae1a841a26ee63024224 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 25 Jan 2023 17:27:45 +0000 Subject: [PATCH 5/7] chore: enable more tests --- test/e2e/app-dir/app-static.test.ts | 8 +++----- test/e2e/next-test-lib/next-test-utils.js | 4 +++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/test/e2e/app-dir/app-static.test.ts b/test/e2e/app-dir/app-static.test.ts index a6dfabcee0..f3467f9d58 100644 --- a/test/e2e/app-dir/app-static.test.ts +++ b/test/e2e/app-dir/app-static.test.ts @@ -220,7 +220,7 @@ describe('app-dir static/dynamic handling', () => { } }) - usuallySkip('should honor dynamic = "force-static" correctly (lazy)', async () => { + it('should honor dynamic = "force-static" correctly (lazy)', async () => { const res = await fetchViaHTTP(next.url, '/force-static/random') expect(res.status).toBe(200) @@ -241,8 +241,7 @@ describe('app-dir static/dynamic handling', () => { expect(firstTime).toBe($2('#now').text()) } }) - // NTL Skip - it.skip('should handle dynamicParams: false correctly', async () => { + it('should handle dynamicParams: false correctly', async () => { const validParams = ['tim', 'seb', 'styfle'] for (const param of validParams) { @@ -315,8 +314,7 @@ describe('app-dir static/dynamic handling', () => { expect($('#page').text()).toBe('/blog/[author]/[slug]') } }) - // NTL Skip - it.skip('should navigate to static path correctly', async () => { + it('should navigate to static path correctly', async () => { const browser = await webdriver(next.url, '/blog/tim') await browser.eval('window.beforeNav = 1') diff --git a/test/e2e/next-test-lib/next-test-utils.js b/test/e2e/next-test-lib/next-test-utils.js index d9a63b3595..f8632fd020 100644 --- a/test/e2e/next-test-lib/next-test-utils.js +++ b/test/e2e/next-test-lib/next-test-utils.js @@ -128,7 +128,9 @@ export function renderViaHTTP(appPort, pathname, query, opts) { export async function fetchViaHTTP(appPort, pathname, query = undefined, opts = undefined, useUndici = false) { const url = `${pathname}${typeof query === 'string' ? query : query ? `?${qs.stringify(query)}` : ''}` const fetch = useUndici ? undiciFetch : nodeFetch - return fetch(getFullUrl(appPort, url), opts) + const fullUrl = getFullUrl(appPort, url) + console.log(`Fetching url: ${fullUrl}`) + return fetch(fullUrl, opts) } export function runNextCommand(argv, options = {}) { From b29c636b1402e9d0c1cc600a620cc7584f288b18 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 26 Jan 2023 10:37:40 +0000 Subject: [PATCH 6/7] fix: match ef data routes --- package-lock.json | 279 +-------------------------- packages/runtime/src/helpers/edge.ts | 13 ++ 2 files changed, 16 insertions(+), 276 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4bd4b46892..ee5b5fd57d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5615,7 +5615,7 @@ "version": "18.0.27", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz", "integrity": "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==", - "devOptional": true, + "dev": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -24555,7 +24555,7 @@ }, "packages/runtime": { "name": "@netlify/plugin-nextjs", - "version": "4.30.1", + "version": "4.30.2", "license": "MIT", "dependencies": { "@netlify/esbuild": "0.14.39", @@ -24609,201 +24609,6 @@ "engines": { "node": ">=10" } - }, - "node_modules/@next/swc-android-arm-eabi": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.0.7.tgz", - "integrity": "sha512-QTEamOK/LCwBf05GZ261rULMbZEpE3TYdjHlXfznV+nXwTztzkBNFXwP67gv2wW44BROzgi/vrR9H8oP+J5jxg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-android-arm64": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.0.7.tgz", - "integrity": "sha512-wcy2H0Tl9ME8vKy2GnJZ7Mybwys+43F/Eh2Pvph7mSDpMbYBJ6iA0zeY62iYYXxlZhnAID3+h79FUqUEakkClw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.0.7.tgz", - "integrity": "sha512-F/mU7csN1/J2cqXJPMgTQ6MwAbc1pJ6sp6W+X0z5JEY4IFDzxKd3wRc3pCiNF7j8xW381JlNpWxhjCctnNmfaw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.7.tgz", - "integrity": "sha512-636AuRQynCPnIPRVzcCk5B7OMq9XjaYam2T0HeWUCE6y7EqEO3kxiuZ4QmN81T7A6Ydb+JnivYrLelHXmgdj6A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-freebsd-x64": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.0.7.tgz", - "integrity": "sha512-92XAMzNgQazowZ9t7uZmHRA5VdBl/SwEdrf5UybdfRovsxB4r3+yJWEvFaqYpSEp0gwndbwLokJdpz7OwFdL3Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm-gnueabihf": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.0.7.tgz", - "integrity": "sha512-3r1CWl5P6I5n5Yxip8EXv/Rfu2Cp6wVmIOpvmczyUR82j+bcMkwPAcUjNkG/vMCagS4xV7NElrcdGb39iFmfLg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.0.7.tgz", - "integrity": "sha512-RXo8tt6ppiwyS6hpDw3JdAjKcdVewsefxnxk9xOH4mRhMyq9V2lQx0e24X/dRiZqkx3jnWReR2WRrUlgN1UkSQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.0.7.tgz", - "integrity": "sha512-RWpnW+bmfXyxyY7iARbueYDGuIF+BEp3etLeYh/RUNHb9PhOHLDgJOG8haGSykud3a6CcyBI8hEjqOhoObaDpw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.0.7.tgz", - "integrity": "sha512-/ygUIiMMTYnbKlFs5Ba9J5k/tNxFWy8eI1bBF8UuMTvV8QJHl/aLDiA5dwsei2kk99/cu3eay62JnJXkSk3RSQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.0.7.tgz", - "integrity": "sha512-dLzr6AL77USJN0ejgx5AS8O8SbFlbYTzs0XwAWag4oQpUG2p3ARvxwQgYQ0Z+6EP0zIRZ/XfLkN/mhsyi3m4PA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.0.7.tgz", - "integrity": "sha512-+vFIVa82AwqFkpFClKT+n73fGxrhAZ2u1u3mDYEBdxO6c9U4Pj3S5tZFsGFK9kLT/bFvf/eeVOICSLCC7MSgJQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.0.7.tgz", - "integrity": "sha512-RNLXIhp+assD39dQY9oHhDxw+/qSJRARKhOFsHfOtf8yEfCHqcKkn3X/L+ih60ntaEqK294y1WkMk6ylotsxwA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.7.tgz", - "integrity": "sha512-kvdnlLcrnEq72ZP0lqe2Z5NqvB9N5uSCvtXJ0PhKvNncWWd0fEG9Ec9erXgwCmVlM2ytw41k9/uuQ+SVw4Pihw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } } }, "dependencies": { @@ -28718,7 +28523,7 @@ "version": "18.0.27", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz", "integrity": "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==", - "devOptional": true, + "dev": true, "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -43073,84 +42878,6 @@ "compress-commons": "^4.1.0", "readable-stream": "^3.6.0" } - }, - "@next/swc-android-arm-eabi": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.0.7.tgz", - "integrity": "sha512-QTEamOK/LCwBf05GZ261rULMbZEpE3TYdjHlXfznV+nXwTztzkBNFXwP67gv2wW44BROzgi/vrR9H8oP+J5jxg==", - "optional": true - }, - "@next/swc-android-arm64": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.0.7.tgz", - "integrity": "sha512-wcy2H0Tl9ME8vKy2GnJZ7Mybwys+43F/Eh2Pvph7mSDpMbYBJ6iA0zeY62iYYXxlZhnAID3+h79FUqUEakkClw==", - "optional": true - }, - "@next/swc-darwin-arm64": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.0.7.tgz", - "integrity": "sha512-F/mU7csN1/J2cqXJPMgTQ6MwAbc1pJ6sp6W+X0z5JEY4IFDzxKd3wRc3pCiNF7j8xW381JlNpWxhjCctnNmfaw==", - "optional": true - }, - "@next/swc-darwin-x64": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.7.tgz", - "integrity": "sha512-636AuRQynCPnIPRVzcCk5B7OMq9XjaYam2T0HeWUCE6y7EqEO3kxiuZ4QmN81T7A6Ydb+JnivYrLelHXmgdj6A==", - "optional": true - }, - "@next/swc-freebsd-x64": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.0.7.tgz", - "integrity": "sha512-92XAMzNgQazowZ9t7uZmHRA5VdBl/SwEdrf5UybdfRovsxB4r3+yJWEvFaqYpSEp0gwndbwLokJdpz7OwFdL3Q==", - "optional": true - }, - "@next/swc-linux-arm-gnueabihf": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.0.7.tgz", - "integrity": "sha512-3r1CWl5P6I5n5Yxip8EXv/Rfu2Cp6wVmIOpvmczyUR82j+bcMkwPAcUjNkG/vMCagS4xV7NElrcdGb39iFmfLg==", - "optional": true - }, - "@next/swc-linux-arm64-gnu": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.0.7.tgz", - "integrity": "sha512-RXo8tt6ppiwyS6hpDw3JdAjKcdVewsefxnxk9xOH4mRhMyq9V2lQx0e24X/dRiZqkx3jnWReR2WRrUlgN1UkSQ==", - "optional": true - }, - "@next/swc-linux-arm64-musl": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.0.7.tgz", - "integrity": "sha512-RWpnW+bmfXyxyY7iARbueYDGuIF+BEp3etLeYh/RUNHb9PhOHLDgJOG8haGSykud3a6CcyBI8hEjqOhoObaDpw==", - "optional": true - }, - "@next/swc-linux-x64-gnu": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.0.7.tgz", - "integrity": "sha512-/ygUIiMMTYnbKlFs5Ba9J5k/tNxFWy8eI1bBF8UuMTvV8QJHl/aLDiA5dwsei2kk99/cu3eay62JnJXkSk3RSQ==", - "optional": true - }, - "@next/swc-linux-x64-musl": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.0.7.tgz", - "integrity": "sha512-dLzr6AL77USJN0ejgx5AS8O8SbFlbYTzs0XwAWag4oQpUG2p3ARvxwQgYQ0Z+6EP0zIRZ/XfLkN/mhsyi3m4PA==", - "optional": true - }, - "@next/swc-win32-arm64-msvc": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.0.7.tgz", - "integrity": "sha512-+vFIVa82AwqFkpFClKT+n73fGxrhAZ2u1u3mDYEBdxO6c9U4Pj3S5tZFsGFK9kLT/bFvf/eeVOICSLCC7MSgJQ==", - "optional": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.0.7.tgz", - "integrity": "sha512-RNLXIhp+assD39dQY9oHhDxw+/qSJRARKhOFsHfOtf8yEfCHqcKkn3X/L+ih60ntaEqK294y1WkMk6ylotsxwA==", - "optional": true - }, - "@next/swc-win32-x64-msvc": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.7.tgz", - "integrity": "sha512-kvdnlLcrnEq72ZP0lqe2Z5NqvB9N5uSCvtXJ0PhKvNncWWd0fEG9Ec9erXgwCmVlM2ytw41k9/uuQ+SVw4Pihw==", - "optional": true } } } diff --git a/packages/runtime/src/helpers/edge.ts b/packages/runtime/src/helpers/edge.ts index 65e87eb7e3..d890057487 100644 --- a/packages/runtime/src/helpers/edge.ts +++ b/packages/runtime/src/helpers/edge.ts @@ -472,6 +472,10 @@ export const writeEdgeFunctions = async ({ ]), ) + const dataRoutesMap = new Map( + [...(routesManifest.dataRoutes || [])].map((route) => [route.page, route.dataRouteRegex]), + ) + for (const edgeFunctionDefinition of Object.values(middlewareManifest.functions)) { usesEdge = true const functionName = sanitizeName(edgeFunctionDefinition.name) @@ -493,6 +497,15 @@ export const writeEdgeFunctions = async ({ // cache: "manual" is currently experimental, so we restrict it to sites that use experimental appDir cache: usesAppDir ? 'manual' : undefined, }) + const dataRoute = dataRoutesMap.get(edgeFunctionDefinition.page) + if (dataRoute) { + manifest.functions.push({ + function: functionName, + name: edgeFunctionDefinition.name, + pattern: dataRoute, + cache: usesAppDir ? 'manual' : undefined, + }) + } } } if (usesEdge) { From 0b9dbb3233098c1f1cb7ec180c1c96c422c8d972 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 26 Jan 2023 15:01:52 +0000 Subject: [PATCH 7/7] chore: add comments --- packages/runtime/src/helpers/edge.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/runtime/src/helpers/edge.ts b/packages/runtime/src/helpers/edge.ts index d890057487..65b8441c37 100644 --- a/packages/runtime/src/helpers/edge.ts +++ b/packages/runtime/src/helpers/edge.ts @@ -461,17 +461,19 @@ export const writeEdgeFunctions = async ({ ...matchers.map((matcher) => middlewareMatcherToEdgeFunctionDefinition(matcher, functionName)), ) } + // Functions (i.e. not middleware, but edge SSR and API routes) if (typeof middlewareManifest.functions === 'object') { // When using the app dir, we also need to check if the EF matches a page const appPathRoutesManifest = await loadAppPathRoutesManifest(netlifyConfig) + // A map of all route pages to their page regex. This is used for pages dir and appDir. const pageRegexMap = new Map( [...(routesManifest.dynamicRoutes || []), ...(routesManifest.staticRoutes || [])].map((route) => [ route.page, route.regex, ]), ) - + // Create a map of pages-dir routes to their data route regex (appDir uses the same route as the HTML) const dataRoutesMap = new Map( [...(routesManifest.dataRoutes || [])].map((route) => [route.page, route.dataRouteRegex]), ) @@ -497,6 +499,7 @@ export const writeEdgeFunctions = async ({ // cache: "manual" is currently experimental, so we restrict it to sites that use experimental appDir cache: usesAppDir ? 'manual' : undefined, }) + // pages-dir page routes also have a data route. If there's a match, add an entry mapping that to the function too const dataRoute = dataRoutesMap.get(edgeFunctionDefinition.page) if (dataRoute) { manifest.functions.push({