Compare commits

...

15 Commits

Author SHA1 Message Date
Vercel Release Bot
cfc1bb180b Version Packages (#10384)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-08-24 13:56:29 -05:00
Trek Glowacki
f06776468f [cli] Remove mri package (#10389)
`vc secrets` appears to be mostly deprecated but this was a fairly straightforward change that lets us drop `mri` today. Tested pretty extensively locally.
2023-08-24 18:05:11 +00:00
Kiko Beats
597a8a8176 upgrade edge-runtime (#10385) 2023-08-24 16:52:49 +02:00
Kiko Beats
3f6d99470d [node] use undici instead of node-fetch (#10387) 2023-08-24 10:06:33 +02:00
JJ Kasper
4422326865 Add handling to leverage RSC prefetch outputs (#10390)
Implements handling for the RSC prefetch outputs when available that
were added in https://github.com/vercel/next.js/pull/54403
2023-08-23 22:26:58 -07:00
Zack Tanner
09446a8fe8 [next] fix RSC matching behavior & 404 status code on fallback: false (#10388)
Fixes two separate issues for the Next builder:

- `pages` routes unexpectedly matching to RSC routes when prefetching from `app`. This update will attempt to match the route with the corresponding `pages` entry rather than falling back to a catch-all RSC
  - Fixes https://github.com/vercel/next.js/issues/53776
- `fallback: false` returning a successful status code when underlying page as a param (e.g. `/blog/[slug]` would 200 but `/blog/non-existent` would 404)
  - [slack x-ref](https://vercel.slack.com/archives/C03S8ED1DKM/p1692817762403579)
2023-08-23 22:30:33 +00:00
Vercel Release Bot
37e93a91a8 [remix] Update @remix-run/dev to v1.19.3 (#10381)
This auto-generated PR updates `@remix-run/dev` to version 1.19.3.
2023-08-22 20:49:48 +00:00
Trek Glowacki
eec6e47232 [cli] Update dns commands to new structure (#10379)
Before:
<img width="795" alt="CleanShot 2023-08-22 at 10 46 34@2x" src="https://github.com/vercel/vercel/assets/9736/456faef8-6335-46ac-89ae-5ce13db4568e">


After:
<img width="815" alt="CleanShot 2023-08-22 at 10 48 04@2x" src="https://github.com/vercel/vercel/assets/9736/e78a9cc5-d9e9-4079-bd4a-81cd68917127">
2023-08-22 20:24:19 +00:00
Vercel Release Bot
3a0cfce669 Version Packages (#10375)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-08-22 14:43:00 -05:00
Maz
ae4a9535c1 [cli] Add --git-branch to pull command help output (#10382)
Improves the help for pull command by adding --git-branch to the output.
2023-08-22 12:27:29 -07:00
Sean Massa
c615423a0b [frameworks] move some devDependencies to dependencies (#10380)
Because `frameworks` isn't bundled with `ncc`, we need the runtime dependencies to exist in the `dependencies` section of `package.json`.
2023-08-22 17:31:19 +00:00
Steven
96f99c7147 [error-utils] fix files in package.json to use dist (#10378)
These packages were publishing unnecessary files to npm so we can reduce to only the `dist` directory.

- Example: https://unpkg.com/browse/@vercel/error-utils@2.0.0/
- Docs: https://docs.npmjs.com/cli/v9/configuring-npm/package-json#files
2023-08-22 17:04:57 +00:00
Trek Glowacki
8f318d44cb Migrate certs to new command structure (#10377)
Co-authored-by: Trek Glowacki <trek.glowacki@vercel.com>
2023-08-22 10:33:36 -05:00
Vercel Release Bot
ade5e4ea0a [examples][tests] Upgrade Next.js to version 13.4.19 (#10373)
This auto-generated PR updates 3 packages to Next.js version 13.4.19
2023-08-21 23:55:07 +00:00
Trek Glowacki
87dee36ef9 [cli] Update new --help structure to support subcommands (#10372)
Before:
<img width="727" alt="CleanShot 2023-08-21 at 11 07 25@2x" src="https://github.com/vercel/vercel/assets/9736/1ff4b5b8-75e3-4fcb-b44a-7172e7612ecc">

After:
<img width="759" alt="CleanShot 2023-08-21 at 11 13 21@2x" src="https://github.com/vercel/vercel/assets/9736/acdd954a-6137-4535-8fbb-db025491156b">

Some notes re: "Before"

* We've dropped wrapping required args in `<>` some time ago.
* The command name for alias is optional (default is `set`) but was incorrectly still listed as required.
2023-08-21 21:31:02 +00:00
65 changed files with 1171 additions and 526 deletions

7
api/CHANGELOG.md Normal file
View File

@@ -0,0 +1,7 @@
# api
## 0.0.1
### Patch Changes
- fix RSC matching behavior & 404 status code on `fallback: false` ([#10388](https://github.com/vercel/vercel/pull/10388))

View File

@@ -1,7 +1,7 @@
{ {
"name": "api", "name": "api",
"private": true, "private": true,
"version": "0.0.0", "version": "0.0.1",
"description": "API for the vercel/vercel repo", "description": "API for the vercel/vercel repo",
"main": "index.js", "main": "index.js",
"scripts": {}, "scripts": {},

View File

@@ -8,13 +8,13 @@
"name": "nextjs", "name": "nextjs",
"version": "0.1.0", "version": "0.1.0",
"dependencies": { "dependencies": {
"@types/node": "20.5.0", "@types/node": "20.5.1",
"@types/react": "18.2.20", "@types/react": "18.2.20",
"@types/react-dom": "18.2.7", "@types/react-dom": "18.2.7",
"autoprefixer": "10.4.15", "autoprefixer": "10.4.15",
"eslint": "8.47.0", "eslint": "8.47.0",
"eslint-config-next": "13.4.18", "eslint-config-next": "13.4.19",
"next": "13.4.18", "next": "13.4.19",
"postcss": "8.4.28", "postcss": "8.4.28",
"react": "18.2.0", "react": "18.2.0",
"react-dom": "18.2.0", "react-dom": "18.2.0",
@@ -178,22 +178,22 @@
} }
}, },
"node_modules/@next/env": { "node_modules/@next/env": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.18.tgz", "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.19.tgz",
"integrity": "sha512-ZUG5Y/KSSerggdeD2LIYgiYziKTuSE9oE2RnW8bhNw6WunA8MrVfrWaCDTYSx/UG8qzPpSF+BiZNiHUiALxCdA==" "integrity": "sha512-FsAT5x0jF2kkhNkKkukhsyYOrRqtSxrEhfliniIq0bwWbuXLgyt3Gv0Ml+b91XwjwArmuP7NxCiGd++GGKdNMQ=="
}, },
"node_modules/@next/eslint-plugin-next": { "node_modules/@next/eslint-plugin-next": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.18.tgz", "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.19.tgz",
"integrity": "sha512-GlOmUjZYYTjKl782mKk5a0bYEmKaouGaxPhi6t9yDILqrppU7JTIyONzLKQPszRXDCVZge0NFd4gwRs1ARZsMg==", "integrity": "sha512-N/O+zGb6wZQdwu6atMZHbR7T9Np5SUFUjZqCbj0sXm+MwQO35M8TazVB4otm87GkXYs2l6OPwARd3/PUWhZBVQ==",
"dependencies": { "dependencies": {
"glob": "7.1.7" "glob": "7.1.7"
} }
}, },
"node_modules/@next/swc-darwin-arm64": { "node_modules/@next/swc-darwin-arm64": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.18.tgz", "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.19.tgz",
"integrity": "sha512-d/73jvZe7dNTjLugDsIIy2AdQrwE2dFC9/QRr7yHmFm8mS5EiIHeDKzaqIsv9+JXKD9ZB1i/c0x7+F0PlKo1vQ==", "integrity": "sha512-vv1qrjXeGbuF2mOkhkdxMDtv9np7W4mcBtaDnHU+yJG+bBwa6rYsYSCI/9Xm5+TuF5SbZbrWO6G1NfTh1TMjvQ==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -206,9 +206,9 @@
} }
}, },
"node_modules/@next/swc-darwin-x64": { "node_modules/@next/swc-darwin-x64": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.18.tgz", "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.19.tgz",
"integrity": "sha512-PwfvxgxG5rvUJppF02IdVAVx4HTtbZrS/Nz9qHfYfeFOQ9a+PijL8Xr9BJ21jiIS+dPQjwzvpsOdsC+DOrlzhg==", "integrity": "sha512-jyzO6wwYhx6F+7gD8ddZfuqO4TtpJdw3wyOduR4fxTUCm3aLw7YmHGYNjS0xRSYGAkLpBkH1E0RcelyId6lNsw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -221,9 +221,9 @@
} }
}, },
"node_modules/@next/swc-linux-arm64-gnu": { "node_modules/@next/swc-linux-arm64-gnu": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.18.tgz", "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.19.tgz",
"integrity": "sha512-Nayn6yFeox9wKaRTLaWRvO3DjB8xEM3BnXu7QnQeZb0AgD484XmdxK13TYZW4jdNy3VJ5OyYIpL4mhkgWEVq/A==", "integrity": "sha512-vdlnIlaAEh6H+G6HrKZB9c2zJKnpPVKnA6LBwjwT2BTjxI7e0Hx30+FoWCgi50e+YO49p6oPOtesP9mXDRiiUg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -236,9 +236,9 @@
} }
}, },
"node_modules/@next/swc-linux-arm64-musl": { "node_modules/@next/swc-linux-arm64-musl": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.18.tgz", "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.19.tgz",
"integrity": "sha512-sQzJ5DFPvGlKjI97R17v2RxKJYYzHw4lJZ4xhK6wvyYJYYcn9JfIMyKCvLtfLgpU1tOUcbkmx7i8XC28sB1BsQ==", "integrity": "sha512-aU0HkH2XPgxqrbNRBFb3si9Ahu/CpaR5RPmN2s9GiM9qJCiBBlZtRTiEca+DC+xRPyCThTtWYgxjWHgU7ZkyvA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -251,9 +251,9 @@
} }
}, },
"node_modules/@next/swc-linux-x64-gnu": { "node_modules/@next/swc-linux-x64-gnu": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.18.tgz", "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.19.tgz",
"integrity": "sha512-zqCLvGdz+T0V+set8zRHbkl3PQq0quUp5Dtuj1yGw0N9htp3beL1RVyhfSusbgxT82TRTXJe94IREgM8iYq6wg==", "integrity": "sha512-htwOEagMa/CXNykFFeAHHvMJeqZfNQEoQvHfsA4wgg5QqGNqD5soeCer4oGlCol6NGUxknrQO6VEustcv+Md+g==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -266,9 +266,9 @@
} }
}, },
"node_modules/@next/swc-linux-x64-musl": { "node_modules/@next/swc-linux-x64-musl": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.18.tgz", "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.19.tgz",
"integrity": "sha512-V/+dWy32eo3iiWkro+0M4/vNp1anGrVzNp90teVKG5tl5t5qNGc/qWOgmgTG8JhowdJAxj7+fp+WltrcezqsDA==", "integrity": "sha512-4Gj4vvtbK1JH8ApWTT214b3GwUh9EKKQjY41hH/t+u55Knxi/0wesMzwQRhppK6Ddalhu0TEttbiJ+wRcoEj5Q==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -281,9 +281,9 @@
} }
}, },
"node_modules/@next/swc-win32-arm64-msvc": { "node_modules/@next/swc-win32-arm64-msvc": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.18.tgz", "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.19.tgz",
"integrity": "sha512-anytZjyD1tAgfA/crOrVcUlm0yrSNKYKpg53NQ+Y83nAungrghBthZZiA1/QvmIs1Igu0Rqw/O6hqCOH63o8pw==", "integrity": "sha512-bUfDevQK4NsIAHXs3/JNgnvEY+LRyneDN788W2NYiRIIzmILjba7LaQTfihuFawZDhRtkYCv3JDC3B4TwnmRJw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -296,9 +296,9 @@
} }
}, },
"node_modules/@next/swc-win32-ia32-msvc": { "node_modules/@next/swc-win32-ia32-msvc": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.18.tgz", "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.19.tgz",
"integrity": "sha512-lgsZDjbU0FQQH2pDSYeKIbVX9g8dqA7fUtgcAcwbj4eEuVW/K41rKFQceMM1kt0ktVUZ4uF2qOHsgebOWpDJIw==", "integrity": "sha512-Y5kikILFAr81LYIFaw6j/NrOtmiM4Sf3GtOc0pn50ez2GCkr+oejYuKGcwAwq3jiTKuzF6OF4iT2INPoxRycEA==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
@@ -311,9 +311,9 @@
} }
}, },
"node_modules/@next/swc-win32-x64-msvc": { "node_modules/@next/swc-win32-x64-msvc": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.18.tgz", "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.19.tgz",
"integrity": "sha512-cS72bVNqICglP/uEzqNy26lfRH30zf4AbqnnhPhe+UxRg6d+OTtRQpFX7C4xtBP09FKA+MSSflNVkrn2ZfaWrA==", "integrity": "sha512-YzA78jBDXMYiINdPdJJwGgPNT3YqBNNGhsthsDoWHL9p24tEJn9ViQf/ZqTbwSpX/RrkPupLfuuTH2sf73JBAw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -376,9 +376,9 @@
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "20.5.0", "version": "20.5.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.0.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz",
"integrity": "sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==" "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg=="
}, },
"node_modules/@types/prop-types": { "node_modules/@types/prop-types": {
"version": "15.7.5", "version": "15.7.5",
@@ -1112,9 +1112,9 @@
} }
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.4.495", "version": "1.4.496",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.495.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.496.tgz",
"integrity": "sha512-mwknuemBZnoOCths4GtpU/SDuVMp3uQHKa2UNJT9/aVD6WVRjGpXOxRGX7lm6ILIenTdGXPSTCTDaWos5tEU8Q==" "integrity": "sha512-qeXC3Zbykq44RCrBa4kr8v/dWzYJA8rAwpyh9Qd+NKWoJfjG5vvJqy9XOJ9H4P/lqulZBCgUWAYi+FeK5AuJ8g=="
}, },
"node_modules/emoji-regex": { "node_modules/emoji-regex": {
"version": "9.2.2", "version": "9.2.2",
@@ -1316,11 +1316,11 @@
} }
}, },
"node_modules/eslint-config-next": { "node_modules/eslint-config-next": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.4.18.tgz", "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.4.19.tgz",
"integrity": "sha512-G15CYbsIHwV6Fzoly5SXo/Mj3pNqNkOzbf+wQcPod3LgVNviWVYlb9czjdiREXHq2VF6oV79Kv0Wunguj6RMEw==", "integrity": "sha512-WE8367sqMnjhWHvR5OivmfwENRQ1ixfNE9hZwQqNCsd+iM3KnuMc1V8Pt6ytgjxjf23D+xbesADv9x3xaKfT3g==",
"dependencies": { "dependencies": {
"@next/eslint-plugin-next": "13.4.18", "@next/eslint-plugin-next": "13.4.19",
"@rushstack/eslint-patch": "^1.1.3", "@rushstack/eslint-patch": "^1.1.3",
"@typescript-eslint/parser": "^5.4.2 || ^6.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0",
"eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-node": "^0.3.6",
@@ -1407,9 +1407,9 @@
} }
}, },
"node_modules/eslint-plugin-import": { "node_modules/eslint-plugin-import": {
"version": "2.28.0", "version": "2.28.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.0.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz",
"integrity": "sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==", "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==",
"dependencies": { "dependencies": {
"array-includes": "^3.1.6", "array-includes": "^3.1.6",
"array.prototype.findlastindex": "^1.2.2", "array.prototype.findlastindex": "^1.2.2",
@@ -1420,13 +1420,12 @@
"eslint-import-resolver-node": "^0.3.7", "eslint-import-resolver-node": "^0.3.7",
"eslint-module-utils": "^2.8.0", "eslint-module-utils": "^2.8.0",
"has": "^1.0.3", "has": "^1.0.3",
"is-core-module": "^2.12.1", "is-core-module": "^2.13.0",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
"minimatch": "^3.1.2", "minimatch": "^3.1.2",
"object.fromentries": "^2.0.6", "object.fromentries": "^2.0.6",
"object.groupby": "^1.0.0", "object.groupby": "^1.0.0",
"object.values": "^1.1.6", "object.values": "^1.1.6",
"resolve": "^1.22.3",
"semver": "^6.3.1", "semver": "^6.3.1",
"tsconfig-paths": "^3.14.2" "tsconfig-paths": "^3.14.2"
}, },
@@ -2425,9 +2424,9 @@
} }
}, },
"node_modules/jiti": { "node_modules/jiti": {
"version": "1.19.1", "version": "1.19.3",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.3.tgz",
"integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", "integrity": "sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==",
"bin": { "bin": {
"jiti": "bin/jiti.js" "jiti": "bin/jiti.js"
} }
@@ -2639,11 +2638,11 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
}, },
"node_modules/next": { "node_modules/next": {
"version": "13.4.18", "version": "13.4.19",
"resolved": "https://registry.npmjs.org/next/-/next-13.4.18.tgz", "resolved": "https://registry.npmjs.org/next/-/next-13.4.19.tgz",
"integrity": "sha512-V/IIFA/znYYnOFlZQegrlhlWRpyIuCLXLGuH6pzCjwyxThNBZl4ItqoE3ffUyYY9f0X6XIQ2dX6UUBpNVSKZ8A==", "integrity": "sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==",
"dependencies": { "dependencies": {
"@next/env": "13.4.18", "@next/env": "13.4.19",
"@swc/helpers": "0.5.1", "@swc/helpers": "0.5.1",
"busboy": "1.6.0", "busboy": "1.6.0",
"caniuse-lite": "^1.0.30001406", "caniuse-lite": "^1.0.30001406",
@@ -2659,15 +2658,15 @@
"node": ">=16.8.0" "node": ">=16.8.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"@next/swc-darwin-arm64": "13.4.18", "@next/swc-darwin-arm64": "13.4.19",
"@next/swc-darwin-x64": "13.4.18", "@next/swc-darwin-x64": "13.4.19",
"@next/swc-linux-arm64-gnu": "13.4.18", "@next/swc-linux-arm64-gnu": "13.4.19",
"@next/swc-linux-arm64-musl": "13.4.18", "@next/swc-linux-arm64-musl": "13.4.19",
"@next/swc-linux-x64-gnu": "13.4.18", "@next/swc-linux-x64-gnu": "13.4.19",
"@next/swc-linux-x64-musl": "13.4.18", "@next/swc-linux-x64-musl": "13.4.19",
"@next/swc-win32-arm64-msvc": "13.4.18", "@next/swc-win32-arm64-msvc": "13.4.19",
"@next/swc-win32-ia32-msvc": "13.4.18", "@next/swc-win32-ia32-msvc": "13.4.19",
"@next/swc-win32-x64-msvc": "13.4.18" "@next/swc-win32-x64-msvc": "13.4.19"
}, },
"peerDependencies": { "peerDependencies": {
"@opentelemetry/api": "^1.1.0", "@opentelemetry/api": "^1.1.0",
@@ -3672,9 +3671,9 @@
} }
}, },
"node_modules/ts-api-utils": { "node_modules/ts-api-utils": {
"version": "1.0.1", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.2.tgz",
"integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", "integrity": "sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==",
"engines": { "engines": {
"node": ">=16.13.0" "node": ">=16.13.0"
}, },
@@ -3699,9 +3698,9 @@
} }
}, },
"node_modules/tslib": { "node_modules/tslib": {
"version": "2.6.1", "version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
"integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
}, },
"node_modules/type-check": { "node_modules/type-check": {
"version": "0.4.0", "version": "0.4.0",

View File

@@ -9,13 +9,13 @@
"lint": "next lint" "lint": "next lint"
}, },
"dependencies": { "dependencies": {
"@types/node": "20.5.0", "@types/node": "20.5.1",
"@types/react": "18.2.20", "@types/react": "18.2.20",
"@types/react-dom": "18.2.7", "@types/react-dom": "18.2.7",
"autoprefixer": "10.4.15", "autoprefixer": "10.4.15",
"eslint": "8.47.0", "eslint": "8.47.0",
"eslint-config-next": "13.4.18", "eslint-config-next": "13.4.19",
"next": "13.4.18", "next": "13.4.19",
"postcss": "8.4.28", "postcss": "8.4.28",
"react": "18.2.0", "react": "18.2.0",
"react-dom": "18.2.0", "react-dom": "18.2.0",

View File

@@ -9,6 +9,6 @@
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "27.4.1", "@types/jest": "27.4.1",
"@vercel/frameworks": "2.0.0" "@vercel/frameworks": "2.0.1"
} }
} }

View File

@@ -4,6 +4,9 @@
"version": "1.0.4", "version": "1.0.4",
"types": "dist/index.d.ts", "types": "dist/index.d.ts",
"main": "dist/index.js", "main": "dist/index.js",
"files": [
"dist"
],
"scripts": { "scripts": {
"build": "tsc -p tsconfig.json" "build": "tsc -p tsconfig.json"
}, },

View File

@@ -5,7 +5,7 @@
"types": "dist/index.d.ts", "types": "dist/index.d.ts",
"main": "dist/index.js", "main": "dist/index.js",
"files": [ "files": [
"dist/*" "dist"
], ],
"scripts": { "scripts": {
"build": "tsc", "build": "tsc",

View File

@@ -4,6 +4,9 @@
"version": "1.0.7", "version": "1.0.7",
"types": "index.d.ts", "types": "index.d.ts",
"main": "index.d.ts", "main": "index.d.ts",
"files": [
"*.d.ts"
],
"dependencies": { "dependencies": {
"@types/node": "14.14.31", "@types/node": "14.14.31",
"@vercel-internals/constants": "1.0.4", "@vercel-internals/constants": "1.0.4",

View File

@@ -32,7 +32,7 @@
"@types/node-fetch": "^2.1.6", "@types/node-fetch": "^2.1.6",
"@types/semver": "6.0.0", "@types/semver": "6.0.0",
"@types/yazl": "2.4.2", "@types/yazl": "2.4.2",
"@vercel/error-utils": "2.0.0", "@vercel/error-utils": "2.0.1",
"@vercel/ncc": "0.24.0", "@vercel/ncc": "0.24.0",
"aggregate-error": "3.0.1", "aggregate-error": "3.0.1",
"async-retry": "1.2.3", "async-retry": "1.2.3",

View File

@@ -1,5 +1,35 @@
# vercel # vercel
## 32.0.2
### Patch Changes
- Remove use of mri preferring use of arg package ([#10389](https://github.com/vercel/vercel/pull/10389))
- upgrade edge-runtime ([#10385](https://github.com/vercel/vercel/pull/10385))
- Update dns commands to new structure ([#10379](https://github.com/vercel/vercel/pull/10379))
- Updated dependencies [[`09446a8fe`](https://github.com/vercel/vercel/commit/09446a8fe8b8201dbe3ead3ca645ef0aa1833b6b), [`597a8a817`](https://github.com/vercel/vercel/commit/597a8a81764c39e70c65b98e78bf4c3827a779a7), [`442232686`](https://github.com/vercel/vercel/commit/44223268651f1bbd5c6f2b0b315239685dd5716e), [`3f6d99470`](https://github.com/vercel/vercel/commit/3f6d99470db86681e006d66507f32afcea086b41), [`37e93a91a`](https://github.com/vercel/vercel/commit/37e93a91a8659934eac7f5cd441b310511bf5646)]:
- @vercel/next@4.0.1
- @vercel/node@3.0.2
- @vercel/remix-builder@2.0.1
- @vercel/static-build@2.0.2
## 32.0.1
### Patch Changes
- Add `--git-branch` to pull command help output ([#10382](https://github.com/vercel/vercel/pull/10382))
- Update new help structure to support subcommands ([#10372](https://github.com/vercel/vercel/pull/10372))
- Migrate certs command to new structure ([#10377](https://github.com/vercel/vercel/pull/10377))
- Updated dependencies []:
- @vercel/static-build@2.0.1
- @vercel/node@3.0.1
## 32.0.0 ## 32.0.0
### Major Changes ### Major Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "vercel", "name": "vercel",
"version": "32.0.0", "version": "32.0.2",
"preferGlobal": true, "preferGlobal": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"description": "The command-line interface for Vercel", "description": "The command-line interface for Vercel",
@@ -34,17 +34,17 @@
"@vercel/build-utils": "7.0.0", "@vercel/build-utils": "7.0.0",
"@vercel/go": "3.0.0", "@vercel/go": "3.0.0",
"@vercel/hydrogen": "1.0.0", "@vercel/hydrogen": "1.0.0",
"@vercel/next": "4.0.0", "@vercel/next": "4.0.1",
"@vercel/node": "3.0.0", "@vercel/node": "3.0.2",
"@vercel/python": "4.0.0", "@vercel/python": "4.0.0",
"@vercel/redwood": "2.0.0", "@vercel/redwood": "2.0.0",
"@vercel/remix-builder": "2.0.0", "@vercel/remix-builder": "2.0.1",
"@vercel/ruby": "2.0.0", "@vercel/ruby": "2.0.0",
"@vercel/static-build": "2.0.0" "@vercel/static-build": "2.0.2"
}, },
"devDependencies": { "devDependencies": {
"@alex_neo/jest-expect-message": "1.0.5", "@alex_neo/jest-expect-message": "1.0.5",
"@edge-runtime/node-utils": "2.1.0", "@edge-runtime/node-utils": "2.2.0",
"@next/env": "11.1.2", "@next/env": "11.1.2",
"@sentry/node": "5.5.0", "@sentry/node": "5.5.0",
"@sindresorhus/slugify": "0.11.0", "@sindresorhus/slugify": "0.11.0",
@@ -67,7 +67,6 @@
"@types/load-json-file": "2.0.7", "@types/load-json-file": "2.0.7",
"@types/mime-types": "2.1.0", "@types/mime-types": "2.1.0",
"@types/minimatch": "3.0.3", "@types/minimatch": "3.0.3",
"@types/mri": "1.1.0",
"@types/ms": "0.7.30", "@types/ms": "0.7.30",
"@types/node": "14.18.33", "@types/node": "14.18.33",
"@types/node-fetch": "2.5.10", "@types/node-fetch": "2.5.10",
@@ -88,9 +87,9 @@
"@vercel-internals/get-package-json": "1.0.0", "@vercel-internals/get-package-json": "1.0.0",
"@vercel-internals/types": "1.0.7", "@vercel-internals/types": "1.0.7",
"@vercel/client": "13.0.0", "@vercel/client": "13.0.0",
"@vercel/error-utils": "2.0.0", "@vercel/error-utils": "2.0.1",
"@vercel/frameworks": "2.0.0", "@vercel/frameworks": "2.0.1",
"@vercel/fs-detectors": "5.0.0", "@vercel/fs-detectors": "5.0.1",
"@vercel/fun": "1.0.4", "@vercel/fun": "1.0.4",
"@vercel/ncc": "0.24.0", "@vercel/ncc": "0.24.0",
"@vercel/routing-utils": "3.0.0", "@vercel/routing-utils": "3.0.0",
@@ -141,7 +140,6 @@
"load-json-file": "3.0.0", "load-json-file": "3.0.0",
"mime-types": "2.1.24", "mime-types": "2.1.24",
"minimatch": "3.1.2", "minimatch": "3.1.2",
"mri": "1.1.5",
"ms": "2.1.2", "ms": "2.1.2",
"node-fetch": "2.6.7", "node-fetch": "2.6.7",
"npm-package-arg": "6.1.0", "npm-package-arg": "6.1.0",

View File

@@ -0,0 +1,93 @@
import { Command } from '../help';
import { packageName } from '../../util/pkg-name';
export const aliasCommand: Command = {
name: 'alias',
description: 'Interact with deployment aliases.',
arguments: [
{
name: 'command',
required: false,
},
],
subcommands: [
{
name: 'ls',
description: 'Show all aliases.',
arguments: [],
options: [],
examples: [],
},
{
name: 'set',
description: 'Create a new alias',
arguments: [
{
name: 'deployment',
required: true,
},
{
name: 'alias',
required: true,
},
],
options: [],
examples: [],
},
{
name: 'rm',
description: 'Remove an alias using its hostname.',
arguments: [
{
name: 'alias',
required: true,
},
],
options: [],
examples: [],
},
],
options: [
{
name: 'next',
description: 'Show next page of results',
argument: 'MS',
shorthand: 'n',
type: 'string',
deprecated: false,
multi: false,
},
{
name: 'yes',
description: 'Skip the confirmation prompt when removing an alias',
shorthand: 'y',
type: 'boolean',
deprecated: false,
multi: false,
},
{
name: 'limit',
shorthand: 'n',
description:
'Number of results to return per page (default: 20, max: 100)',
argument: 'NUMBER',
type: 'string',
deprecated: false,
multi: false,
},
],
examples: [
{
name: 'Add a new alias to `my-api.vercel.app`',
value: `${packageName} alias set api-ownv3nc9f8.vercel.app my-api.vercel.app`,
},
{
name: 'Custom domains work as alias targets',
value: `${packageName} alias set api-ownv3nc9f8.vercel.app my-api.com`,
},
{
name: 'The subcommand `set` is the default and can be skipped. Protocols in the URLs are unneeded and ignored',
value: `${packageName} alias api-ownv3nc9f8.vercel.app my-api.com`,
},
],
};

View File

@@ -1,73 +1,12 @@
import chalk from 'chalk';
import { handleError } from '../../util/error'; import { handleError } from '../../util/error';
import Client from '../../util/client'; import Client from '../../util/client';
import getArgs from '../../util/get-args'; import getArgs from '../../util/get-args';
import getSubcommand from '../../util/get-subcommand'; import getSubcommand from '../../util/get-subcommand';
import { packageName, logo } from '../../util/pkg-name'; import { help } from '../help';
import ls from './ls'; import ls from './ls';
import rm from './rm'; import rm from './rm';
import set from './set'; import set from './set';
import { aliasCommand } from './command';
const help = () => {
console.log(`
${chalk.bold(`${logo} ${packageName} alias`)} [options] <command>
${chalk.dim('Commands:')}
ls Show all aliases
set <deployment> <alias> Create a new alias
rm <alias> Remove an alias using its hostname
${chalk.dim('Options:')}
-h, --help Output usage information
-A ${chalk.bold.underline('FILE')}, --local-config=${chalk.bold.underline(
'FILE'
)} Path to the local ${'`vercel.json`'} file
-Q ${chalk.bold.underline('DIR')}, --global-config=${chalk.bold.underline(
'DIR'
)} Path to the global ${'`.vercel`'} directory
-d, --debug Debug mode [off]
--no-color No color mode [off]
-t ${chalk.bold.underline('TOKEN')}, --token=${chalk.bold.underline(
'TOKEN'
)} Login token
-S, --scope Set a custom scope
-N, --next Show next page of results
-y, --yes Skip the confirmation prompt when removing an alias
--limit=${chalk.bold.underline(
'VALUE'
)} Number of results to return per page (default: 20, max: 100)
${chalk.dim('Examples:')}
${chalk.gray('')} Add a new alias to ${chalk.underline('my-api.vercel.app')}
${chalk.cyan(
`$ ${packageName} alias set ${chalk.underline(
'api-ownv3nc9f8.vercel.app'
)} ${chalk.underline('my-api.vercel.app')}`
)}
Custom domains work as alias targets
${chalk.cyan(
`$ ${packageName} alias set ${chalk.underline(
'api-ownv3nc9f8.vercel.app'
)} ${chalk.underline('my-api.com')}`
)}
${chalk.dim('')} The subcommand ${chalk.dim(
'`set`'
)} is the default and can be skipped.
${chalk.dim('')} ${chalk.dim(
'Protocols'
)} in the URLs are unneeded and ignored.
`);
};
const COMMAND_CONFIG = { const COMMAND_CONFIG = {
default: ['set'], default: ['set'],
@@ -76,7 +15,7 @@ const COMMAND_CONFIG = {
set: ['set'], set: ['set'],
}; };
export default async function main(client: Client) { export default async function alias(client: Client) {
let argv; let argv;
try { try {
@@ -94,7 +33,7 @@ export default async function main(client: Client) {
} }
if (argv['--help']) { if (argv['--help']) {
help(); client.output.print(help(aliasCommand, { columns: client.stderr.columns }));
return 2; return 2;
} }

View File

@@ -0,0 +1,116 @@
import { Command } from '../help';
import { packageName } from '../../util/pkg-name';
export const certsCommand: Command = {
name: 'certs',
description:
'Interact with SSL certificates. This command is intended for advanced use only. By default, Vercel manages your certificates automatically.',
arguments: [
{
name: 'command',
required: false,
},
],
subcommands: [
{
name: 'ls',
description: 'Show all available certificates',
arguments: [],
options: [],
examples: [],
},
{
name: 'issue',
description: ' Issue a new certificate for a domain',
arguments: [
{
name: 'cn',
required: true,
},
],
options: [],
examples: [],
},
{
name: 'rm',
description: 'Remove a certificate by id',
arguments: [
{
name: 'id',
required: true,
},
],
options: [],
examples: [],
},
],
options: [
{
name: 'challenge-only',
description: 'Only show challenges needed to issue a cert',
shorthand: null,
type: 'string',
deprecated: false,
multi: false,
},
{
name: 'crt',
description: 'Certificate file',
argument: 'FILE',
shorthand: null,
type: 'string',
deprecated: false,
multi: false,
},
{
name: 'key',
description: 'Certificate key file',
argument: 'FILE',
shorthand: null,
type: 'string',
deprecated: false,
multi: false,
},
{
name: 'ca',
description: 'CA certificate chain file',
argument: 'FILE',
shorthand: null,
type: 'string',
deprecated: false,
multi: false,
},
{
name: 'limit',
description:
'Number of results to return per page (default: 20, max: 100)',
argument: 'VALUE',
shorthand: null,
type: 'string',
deprecated: false,
multi: false,
},
{
name: 'next',
description: 'Show next page of results',
shorthand: 'n',
type: 'string',
deprecated: false,
multi: false,
},
],
examples: [
{
name: 'Generate a certificate with the cnames "acme.com" and "www.acme.com"`',
value: `${packageName} certs issue acme.com www.acme.com`,
},
{
name: 'Remove a certificate',
value: `${packageName} certs rm id`,
},
{
name: 'Paginate results, where `1584722256178` is the time in milliseconds since the UNIX epoch.',
value: `${packageName} certs ls --next 1584722256178`,
},
],
};

View File

@@ -1,5 +1,3 @@
import chalk from 'chalk';
// @ts-ignore // @ts-ignore
import { handleError } from '../../util/error'; import { handleError } from '../../util/error';
@@ -10,69 +8,9 @@ import add from './add';
import issue from './issue'; import issue from './issue';
import ls from './ls'; import ls from './ls';
import rm from './rm'; import rm from './rm';
import { certsCommand } from './command';
import { help } from '../help';
import Client from '../../util/client'; import Client from '../../util/client';
import { packageName, logo } from '../../util/pkg-name';
const help = () => {
console.log(`
${chalk.bold(`${logo} ${packageName} certs`)} [options] <command>
${chalk.yellow('NOTE:')} This command is intended for advanced use only.
By default, Vercel manages your certificates automatically.
${chalk.dim('Commands:')}
ls Show all available certificates
issue <cn> [<cn>] Issue a new certificate for a domain
rm <id> Remove a certificate by id
${chalk.dim('Options:')}
-h, --help Output usage information
-A ${chalk.bold.underline('FILE')}, --local-config=${chalk.bold.underline(
'FILE'
)} Path to the local ${'`vercel.json`'} file
-Q ${chalk.bold.underline('DIR')}, --global-config=${chalk.bold.underline(
'DIR'
)} Path to the global ${'`.vercel`'} directory
-d, --debug Debug mode [off]
--no-color No color mode [off]
-t ${chalk.bold.underline('TOKEN')}, --token=${chalk.bold.underline(
'TOKEN'
)} Login token
-S, --scope Set a custom scope
--challenge-only Only show challenges needed to issue a cert
--crt ${chalk.bold.underline('FILE')} Certificate file
--key ${chalk.bold.underline(
'FILE'
)} Certificate key file
--ca ${chalk.bold.underline(
'FILE'
)} CA certificate chain file
-N, --next Show next page of results
--limit=${chalk.bold.underline(
'VALUE'
)} Number of results to return per page (default: 20, max: 100)
${chalk.dim('Examples:')}
${chalk.gray(
''
)} Generate a certificate with the cnames "acme.com" and "www.acme.com"
${chalk.cyan(`$ ${packageName} certs issue acme.com www.acme.com`)}
${chalk.gray('')} Remove a certificate
${chalk.cyan(`$ ${packageName} certs rm id`)}
${chalk.gray('')} Paginate results, where ${chalk.dim(
'`1584722256178`'
)} is the time in milliseconds since the UNIX epoch.
${chalk.cyan(`$ ${packageName} certs ls --next 1584722256178`)}
`);
};
const COMMAND_CONFIG = { const COMMAND_CONFIG = {
add: ['add'], add: ['add'],
@@ -103,7 +41,7 @@ export default async function main(client: Client) {
} }
if (argv['--help']) { if (argv['--help']) {
help(); client.output.print(help(certsCommand, { columns: client.stderr.columns }));
return 2; return 2;
} }
@@ -123,7 +61,9 @@ export default async function main(client: Client) {
return 1; return 1;
default: default:
output.error('Please specify a valid subcommand: ls | issue | rm'); output.error('Please specify a valid subcommand: ls | issue | rm');
help(); client.output.print(
help(certsCommand, { columns: client.stderr.columns })
);
return 2; return 2;
} }
} }

View File

@@ -0,0 +1,136 @@
import { Command } from '../help';
import { packageName } from '../../util/pkg-name';
export const dnsCommand: Command = {
name: 'dns',
description: 'Interact with DNS entries for a project.',
arguments: [
{
name: 'command',
required: true,
},
],
subcommands: [
{
name: 'import',
description: 'Import a DNS zone file (see below for examples)',
arguments: [
{
name: 'domain',
required: true,
},
{
name: 'zonefile',
required: true,
},
],
options: [],
examples: [],
},
{
name: 'ls',
description: 'List all DNS entries for a domain',
arguments: [
{
name: 'domain',
required: true,
},
],
options: [],
examples: [],
},
{
name: 'add',
description: 'Add a new DNS entry (see below for examples)',
arguments: [
{
name: 'details',
required: true,
},
{
name: 'alias',
required: true,
},
],
options: [],
examples: [],
},
{
name: 'rm',
description: 'Remove a DNS entry using its ID',
arguments: [
{
name: 'id',
required: true,
},
],
options: [],
examples: [],
},
],
options: [
{
name: 'next',
description: 'Show next page of results',
argument: 'MS',
shorthand: 'n',
type: 'string',
deprecated: false,
multi: false,
},
{
name: 'limit',
shorthand: 'n',
description:
'Number of results to return per page (default: 20, max: 100)',
argument: 'NUMBER',
type: 'string',
deprecated: false,
multi: false,
},
],
examples: [
{
name: 'Add an A record for a subdomain',
value: [
`${packageName} dns add <DOMAIN> <SUBDOMAIN> <A | AAAA | ALIAS | CNAME | TXT> <VALUE>`,
`${packageName} dns add zeit.rocks api A 198.51.100.100`,
],
},
{
name: 'Add an MX record (@ as a name refers to the domain)',
value: [
`${packageName} dns add <DOMAIN> '@' MX <RECORD VALUE> <PRIORITY>`,
`${packageName} dns add zeit.rocks '@' MX mail.zeit.rocks 10`,
],
},
{
name: 'Add an SRV record',
value: [
`${packageName} dns add <DOMAIN> <NAME> SRV <PRIORITY> <WEIGHT> <PORT> <TARGET>`,
`${packageName} dns add zeit.rocks '@' SRV 10 0 389 zeit.party`,
],
},
{
name: 'Add a CAA record',
value: [
`${packageName} dns add <DOMAIN> <NAME> CAA '<FLAGS> <TAG> "<VALUE>"'`,
`${packageName} dns add zeit.rocks '@' CAA '0 issue "example.com"'`,
],
},
{
name: 'Import a Zone file',
value: [
`${packageName} dns import <DOMAIN> <FILE>`,
`${packageName} dns import zeit.rocks ./zonefile.txt`,
],
},
{
name: 'Paginate results, where `1584722256178` is the time in milliseconds since the UNIX epoch.',
value: [
`${packageName} dns ls --next 1584722256178`,
`${packageName} dns ls zeit.rocks --next 1584722256178`,
],
},
],
};

View File

@@ -1,96 +1,14 @@
import chalk from 'chalk';
import Client from '../../util/client'; import Client from '../../util/client';
import getArgs from '../../util/get-args'; import getArgs from '../../util/get-args';
import getSubcommand from '../../util/get-subcommand'; import getSubcommand from '../../util/get-subcommand';
import handleError from '../../util/handle-error'; import handleError from '../../util/handle-error';
import { packageName, logo } from '../../util/pkg-name';
import add from './add'; import add from './add';
import importZone from './import'; import importZone from './import';
import ls from './ls'; import ls from './ls';
import rm from './rm'; import rm from './rm';
import { dnsCommand } from './command';
const help = () => { import { help } from '../help';
console.log(`
${chalk.bold(`${logo} ${packageName} dns`)} [options] <command>
${chalk.dim('Commands:')}
add [details] Add a new DNS entry (see below for examples)
import [domain] [zonefile] Import a DNS zone file (see below for examples)
rm [id] Remove a DNS entry using its ID
ls [domain] List all DNS entries for a domain
${chalk.dim('Options:')}
-h, --help Output usage information
-A ${chalk.bold.underline('FILE')}, --local-config=${chalk.bold.underline(
'FILE'
)} Path to the local ${'`vercel.json`'} file
-Q ${chalk.bold.underline('DIR')}, --global-config=${chalk.bold.underline(
'DIR'
)} Path to the global ${'`.vercel`'} directory
-d, --debug Debug mode [off]
--no-color No color mode [off]
-t ${chalk.bold.underline('TOKEN')}, --token=${chalk.bold.underline(
'TOKEN'
)} Login token
-S, --scope Set a custom scope
-N, --next Show next page of results
--limit=${chalk.bold.underline(
'VALUE'
)} Number of results to return per page (default: 20, max: 100)
${chalk.dim('Examples:')}
${chalk.gray('')} Add an A record for a subdomain
${chalk.cyan(
`$ ${packageName} dns add <DOMAIN> <SUBDOMAIN> <A | AAAA | ALIAS | CNAME | TXT> <VALUE>`
)}
${chalk.cyan(`$ ${packageName} dns add zeit.rocks api A 198.51.100.100`)}
${chalk.gray('')} Add an MX record (@ as a name refers to the domain)
${chalk.cyan(
`$ ${packageName} dns add <DOMAIN> '@' MX <RECORD VALUE> <PRIORITY>`
)}
${chalk.cyan(
`$ ${packageName} dns add zeit.rocks '@' MX mail.zeit.rocks 10`
)}
${chalk.gray('')} Add an SRV record
${chalk.cyan(
`$ ${packageName} dns add <DOMAIN> <NAME> SRV <PRIORITY> <WEIGHT> <PORT> <TARGET>`
)}
${chalk.cyan(
`$ ${packageName} dns add zeit.rocks '@' SRV 10 0 389 zeit.party`
)}
${chalk.gray('')} Add a CAA record
${chalk.cyan(
`$ ${packageName} dns add <DOMAIN> <NAME> CAA '<FLAGS> <TAG> "<VALUE>"'`
)}
${chalk.cyan(
`$ ${packageName} dns add zeit.rocks '@' CAA '0 issue "example.com"'`
)}
${chalk.gray('')} Import a Zone file
${chalk.cyan(`$ ${packageName} dns import <DOMAIN> <FILE>`)}
${chalk.cyan(`$ ${packageName} dns import zeit.rocks ./zonefile.txt`)}
${chalk.gray('')} Paginate results, where ${chalk.dim(
'`1584722256178`'
)} is the time in milliseconds since the UNIX epoch.
${chalk.cyan(`$ ${packageName} dns ls --next 1584722256178`)}
${chalk.cyan(`$ ${packageName} dns ls zeit.rocks --next 1584722256178`)}
`);
};
const COMMAND_CONFIG = { const COMMAND_CONFIG = {
add: ['add'], add: ['add'],
@@ -99,7 +17,7 @@ const COMMAND_CONFIG = {
rm: ['rm', 'remove'], rm: ['rm', 'remove'],
}; };
export default async function main(client: Client) { export default async function dns(client: Client) {
let argv; let argv;
try { try {
@@ -114,7 +32,7 @@ export default async function main(client: Client) {
} }
if (argv['--help']) { if (argv['--help']) {
help(); client.output.print(help(dnsCommand, { columns: client.stderr.columns }));
return 2; return 2;
} }

View File

@@ -26,6 +26,7 @@ export interface Command {
name: string; name: string;
description: string; description: string;
arguments: CommandArgument[]; arguments: CommandArgument[];
subcommands?: Command[];
options: CommandOption[]; options: CommandOption[];
examples: CommandExample[]; examples: CommandExample[];
} }
@@ -280,6 +281,66 @@ export function buildCommandOptionLines(
].join(''); ].join('');
} }
export function buildSubcommandLines(
subcommands: Command[] | undefined,
options: BuildHelpOutputOptions
) {
if (!subcommands) {
return null;
}
// word wrapping requires the wrapped cell to have a fixed width.
// We need to track cell sizes to ensure the final column of cells is
// equal to the remainder of unused horizontal space.
let maxWidthOfUnwrappedColumns = 0;
const rows: (string | undefined | _CellOptions)[][] = [];
for (const command of subcommands) {
const nameCell = `${INDENT}${command.name}`;
let argsCell = INDENT;
argsCell += command.arguments
.map(arg => {
return arg.required ? arg.name : `[${arg.name}]`;
})
.join(' ');
argsCell += INDENT;
const widthOfUnwrappedColumns = nameCell.length + argsCell.length;
maxWidthOfUnwrappedColumns = Math.max(
widthOfUnwrappedColumns,
maxWidthOfUnwrappedColumns
);
rows.push([
nameCell,
argsCell,
{
content: command.description,
wordWrap: true,
},
]);
}
const finalColumnWidth = options.columns - maxWidthOfUnwrappedColumns;
const table = new Table(
Object.assign({}, tableOptions, {
colWidths: [null, null, finalColumnWidth],
})
);
table.push(...rows);
return [
`${INDENT}${chalk.dim('Commands')}:`,
NEWLINE,
NEWLINE,
table.toString(),
NEWLINE,
NEWLINE,
].join('');
}
export function buildCommandExampleLines(command: Command) { export function buildCommandExampleLines(command: Command) {
const outputArray: string[] = [`${INDENT}${chalk.dim('Examples:')}`, '']; const outputArray: string[] = [`${INDENT}${chalk.dim('Examples:')}`, ''];
for (const example of command.examples) { for (const example of command.examples) {
@@ -324,6 +385,7 @@ export function buildHelpOutput(
'', '',
buildCommandSynopsisLine(command), buildCommandSynopsisLine(command),
buildDescriptionLine(command, options), buildDescriptionLine(command, options),
buildSubcommandLines(command.subcommands, options),
buildCommandOptionLines(command.options, options, 'Options'), buildCommandOptionLines(command.options, options, 'Options'),
buildCommandOptionLines(globalCommandOptions, options, 'Global Options'), buildCommandOptionLines(globalCommandOptions, options, 'Global Options'),
buildCommandExampleLines(command), buildCommandExampleLines(command),

View File

@@ -22,6 +22,16 @@ export const pullCommand: Command = {
deprecated: false, deprecated: false,
multi: false, multi: false,
}, },
{
name: 'git-branch',
description:
'Specify the Git branch to pull specific Environment Variables for',
argument: 'branch',
shorthand: null,
type: 'string',
deprecated: false,
multi: false,
},
{ {
name: 'yes', name: 'yes',
description: description:
@@ -45,6 +55,10 @@ export const pullCommand: Command = {
name: 'Pull for a specific environment', name: 'Pull for a specific environment',
value: `${packageName} pull --environment=${getEnvTargetPlaceholder()}`, value: `${packageName} pull --environment=${getEnvTargetPlaceholder()}`,
}, },
{
name: 'Pull for a preview feature branch',
value: `${packageName} pull --environment=preview --git-branch=feature-branch`,
},
{ {
name: 'If you want to download environment variables to a specific file, use `vercel env pull` instead', name: 'If you want to download environment variables to a specific file, use `vercel env pull` instead',
value: `${packageName} env pull`, value: `${packageName} env pull`,

View File

@@ -1,6 +1,5 @@
import chalk from 'chalk'; import chalk from 'chalk';
import table from 'text-table'; import table from 'text-table';
import mri from 'mri';
import ms from 'ms'; import ms from 'ms';
import strlen from '../util/strlen.ts'; import strlen from '../util/strlen.ts';
import { handleError, error } from '../util/error'; import { handleError, error } from '../util/error';
@@ -9,8 +8,8 @@ import exit from '../util/exit';
import getScope from '../util/get-scope.ts'; import getScope from '../util/get-scope.ts';
import confirm from '../util/input/confirm'; import confirm from '../util/input/confirm';
import getCommandFlags from '../util/get-command-flags'; import getCommandFlags from '../util/get-command-flags';
import getPrefixedFlags from '../util/get-prefixed-flags';
import { packageName, getCommandName, logo } from '../util/pkg-name.ts'; import { packageName, getCommandName, logo } from '../util/pkg-name.ts';
import getArgs from '../util/get-args';
const help = () => { const help = () => {
console.log(` console.log(`
@@ -81,14 +80,12 @@ let subcommand;
let nextTimestamp; let nextTimestamp;
const main = async client => { const main = async client => {
argv = mri(client.argv.slice(2), { argv = getArgs(client.argv.slice(2), {
boolean: ['help', 'debug', 'yes'], '--yes': Boolean,
alias: { '--next': Number,
help: 'h', '--test-warning': Boolean,
debug: 'd', '-y': '--yes',
yes: 'y', '-N': '--next',
next: 'N',
},
}); });
argv._ = argv._.slice(1); argv._ = argv._.slice(1);
@@ -134,7 +131,8 @@ async function run({ output, contextName, currentTeam, client }) {
const secrets = new NowSecrets({ client, currentTeam }); const secrets = new NowSecrets({ client, currentTeam });
const args = argv._.slice(1); const args = argv._.slice(1);
const start = Date.now(); const start = Date.now();
const { 'test-warning': testWarningFlag } = argv; const { '--test-warning': testWarningFlag } = argv;
const commandName = getCommandName('secret ' + subcommand); const commandName = getCommandName('secret ' + subcommand);
if (subcommand === 'ls' || subcommand === 'list') { if (subcommand === 'ls' || subcommand === 'list') {
@@ -190,14 +188,7 @@ async function run({ output, contextName, currentTeam, client }) {
} }
if (pagination && pagination.count === 20) { if (pagination && pagination.count === 20) {
const prefixedArgs = getPrefixedFlags(argv); const flags = getCommandFlags(argv, ['_', '--next', '-N', '-d', '-y']);
const flags = getCommandFlags(prefixedArgs, [
'_',
'--next',
'-N',
'-d',
'-y',
]);
const nextCmd = `secrets ${subcommand}${flags} --next ${pagination.next}`; const nextCmd = `secrets ${subcommand}${flags} --next ${pagination.next}`;
output.log(`To display the next page run ${getCommandName(nextCmd)}`); output.log(`To display the next page run ${getCommandName(nextCmd)}`);
} }
@@ -225,7 +216,7 @@ async function run({ output, contextName, currentTeam, client }) {
if (theSecret) { if (theSecret) {
const yes = const yes =
argv.yes || argv['--yes'] ||
(await readConfirmation(client, output, theSecret, contextName)); (await readConfirmation(client, output, theSecret, contextName));
if (!yes) { if (!yes) {
output.print(`Canceled. Secret not deleted.\n`); output.print(`Canceled. Secret not deleted.\n`);

View File

@@ -2,7 +2,6 @@ import chars from '../../util/output/chars';
import table from '../../util/output/table'; import table from '../../util/output/table';
import getUser from '../../util/get-user'; import getUser from '../../util/get-user';
import getTeams from '../../util/teams/get-teams'; import getTeams from '../../util/teams/get-teams';
import getPrefixedFlags from '../../util/get-prefixed-flags';
import { packageName } from '../../util/pkg-name'; import { packageName } from '../../util/pkg-name';
import getCommandFlags from '../../util/get-command-flags'; import getCommandFlags from '../../util/get-command-flags';
import cmd from '../../util/output/cmd'; import cmd from '../../util/output/cmd';
@@ -81,8 +80,7 @@ export default async function list(client: Client): Promise<number> {
); );
if (pagination?.count === 20) { if (pagination?.count === 20) {
const prefixedArgs = getPrefixedFlags(argv); const flags = getCommandFlags(argv, ['_', '--next', '-N', '-d']);
const flags = getCommandFlags(prefixedArgs, ['_', '--next', '-N', '-d']);
const nextCmd = `${packageName} teams ls${flags} --next ${pagination.next}`; const nextCmd = `${packageName} teams ls${flags} --next ${pagination.next}`;
console.log(); // empty line console.log(); // empty line
output.log(`To display the next page run ${cmd(nextCmd)}`); output.log(`To display the next page run ${cmd(nextCmd)}`);

View File

@@ -1,26 +0,0 @@
/**
* This function adds a prefix `-` or `--` to the flags
* passed from the command line, because the package `mri`
* used to extract the args removes them for some reason.
*/
export default function getPrefixedFlags(args: { [key in string]: any }) {
const prefixedArgs: {
[key in string]: any;
} = {};
for (const arg in args) {
if (arg === '_') {
prefixedArgs[arg] = args[arg];
} else {
let prefix = '-';
// Full form flags need two dashes, whereas one letter
// flags need only one.
if (arg.length > 1) {
prefix = '--';
}
prefixedArgs[`${prefix}${arg}`] = args[arg];
}
}
return prefixedArgs;
}

View File

@@ -1,5 +1,11 @@
# @vercel/edge # @vercel/edge
## 1.0.1
### Patch Changes
- upgrade edge-runtime ([#10385](https://github.com/vercel/vercel/pull/10385))
## 1.0.0 ## 1.0.0
### Major Changes ### Major Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/edge", "name": "@vercel/edge",
"version": "1.0.0", "version": "1.0.1",
"license": "Apache-2.0", "license": "Apache-2.0",
"main": "dist/index.js", "main": "dist/index.js",
"module": "dist/index.mjs", "module": "dist/index.mjs",
@@ -21,7 +21,7 @@
"build:docs": "typedoc && node scripts/fix-links.js && prettier --write docs/**/*.md docs/*.md" "build:docs": "typedoc && node scripts/fix-links.js && prettier --write docs/**/*.md docs/*.md"
}, },
"devDependencies": { "devDependencies": {
"@edge-runtime/jest-environment": "2.2.3", "@edge-runtime/jest-environment": "2.3.0",
"@types/jest": "27.4.1", "@types/jest": "27.4.1",
"jest-junit": "16.0.0", "jest-junit": "16.0.0",
"ts-node": "8.9.1", "ts-node": "8.9.1",

View File

@@ -1,5 +1,11 @@
# @vercel/error-utils # @vercel/error-utils
## 2.0.1
### Patch Changes
- fix `files` in package.json to use `dist` ([#10378](https://github.com/vercel/vercel/pull/10378))
## 2.0.0 ## 2.0.0
### Major Changes ### Major Changes

View File

@@ -1,9 +1,12 @@
{ {
"name": "@vercel/error-utils", "name": "@vercel/error-utils",
"version": "2.0.0", "version": "2.0.1",
"description": "A collection of error utilities for vercel/vercel", "description": "A collection of error utilities for vercel/vercel",
"main": "dist/index.js", "main": "dist/index.js",
"types": "dist/index.d.ts", "types": "dist/index.d.ts",
"files": [
"dist"
],
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/vercel/vercel.git", "url": "https://github.com/vercel/vercel.git",

View File

@@ -1,5 +1,14 @@
# @vercel/frameworks # @vercel/frameworks
## 2.0.1
### Patch Changes
- move some frameworks deps to dependencies ([#10380](https://github.com/vercel/vercel/pull/10380))
- Updated dependencies [[`96f99c714`](https://github.com/vercel/vercel/commit/96f99c714715651b85eb7a03f58ecc9e1316d156)]:
- @vercel/error-utils@2.0.1
## 2.0.0 ## 2.0.0
### Major Changes ### Major Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/frameworks", "name": "@vercel/frameworks",
"version": "2.0.0", "version": "2.0.1",
"main": "./dist/frameworks.js", "main": "./dist/frameworks.js",
"types": "./dist/frameworks.d.ts", "types": "./dist/frameworks.d.ts",
"files": [ "files": [
@@ -19,14 +19,14 @@
}, },
"dependencies": { "dependencies": {
"@iarna/toml": "2.2.3", "@iarna/toml": "2.2.3",
"js-yaml": "3.13.1" "js-yaml": "3.13.1",
"@vercel/error-utils": "2.0.1"
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "27.4.1", "@types/jest": "27.4.1",
"@types/js-yaml": "3.12.1", "@types/js-yaml": "3.12.1",
"@types/node": "14.18.33", "@types/node": "14.18.33",
"@types/node-fetch": "2.5.8", "@types/node-fetch": "2.5.8",
"@vercel/error-utils": "2.0.0",
"@vercel/routing-utils": "3.0.0", "@vercel/routing-utils": "3.0.0",
"ajv": "6.12.2", "ajv": "6.12.2",
"jest-junit": "16.0.0", "jest-junit": "16.0.0",

View File

@@ -1,5 +1,13 @@
# @vercel/fs-detectors # @vercel/fs-detectors
## 5.0.1
### Patch Changes
- Updated dependencies [[`c615423a0`](https://github.com/vercel/vercel/commit/c615423a0b60ed64bf5e0e10bbc4ca997c31bd60), [`96f99c714`](https://github.com/vercel/vercel/commit/96f99c714715651b85eb7a03f58ecc9e1316d156)]:
- @vercel/frameworks@2.0.1
- @vercel/error-utils@2.0.1
## 5.0.0 ## 5.0.0
### Major Changes ### Major Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/fs-detectors", "name": "@vercel/fs-detectors",
"version": "5.0.0", "version": "5.0.1",
"description": "Vercel filesystem detectors", "description": "Vercel filesystem detectors",
"main": "./dist/index.js", "main": "./dist/index.js",
"types": "./dist/index.d.ts", "types": "./dist/index.d.ts",
@@ -20,8 +20,8 @@
"test-e2e": "pnpm test test/integration.test.ts" "test-e2e": "pnpm test test/integration.test.ts"
}, },
"dependencies": { "dependencies": {
"@vercel/error-utils": "2.0.0", "@vercel/error-utils": "2.0.1",
"@vercel/frameworks": "2.0.0", "@vercel/frameworks": "2.0.1",
"@vercel/routing-utils": "3.0.0", "@vercel/routing-utils": "3.0.0",
"glob": "8.0.3", "glob": "8.0.3",
"js-yaml": "4.1.0", "js-yaml": "4.1.0",

View File

@@ -1,5 +1,19 @@
# @vercel/gatsby-plugin-vercel-builder # @vercel/gatsby-plugin-vercel-builder
## 2.0.2
### Patch Changes
- Updated dependencies [[`597a8a817`](https://github.com/vercel/vercel/commit/597a8a81764c39e70c65b98e78bf4c3827a779a7), [`3f6d99470`](https://github.com/vercel/vercel/commit/3f6d99470db86681e006d66507f32afcea086b41)]:
- @vercel/node@3.0.2
## 2.0.1
### Patch Changes
- Updated dependencies []:
- @vercel/node@3.0.1
## 2.0.0 ## 2.0.0
### Major Changes ### Major Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/gatsby-plugin-vercel-builder", "name": "@vercel/gatsby-plugin-vercel-builder",
"version": "2.0.0", "version": "2.0.2",
"main": "dist/index.js", "main": "dist/index.js",
"files": [ "files": [
"dist", "dist",
@@ -21,7 +21,7 @@
"dependencies": { "dependencies": {
"@sinclair/typebox": "0.25.24", "@sinclair/typebox": "0.25.24",
"@vercel/build-utils": "7.0.0", "@vercel/build-utils": "7.0.0",
"@vercel/node": "3.0.0", "@vercel/node": "3.0.2",
"@vercel/routing-utils": "3.0.0", "@vercel/routing-utils": "3.0.0",
"esbuild": "0.14.47", "esbuild": "0.14.47",
"etag": "1.8.1", "etag": "1.8.1",

View File

@@ -1,5 +1,13 @@
# @vercel/next # @vercel/next
## 4.0.1
### Patch Changes
- fix RSC matching behavior & 404 status code on `fallback: false` ([#10388](https://github.com/vercel/vercel/pull/10388))
- Add handling to leverage RSC prefetch outputs ([#10390](https://github.com/vercel/vercel/pull/10390))
## 4.0.0 ## 4.0.0
### Major Changes ### Major Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/next", "name": "@vercel/next",
"version": "4.0.0", "version": "4.0.1",
"license": "Apache-2.0", "license": "Apache-2.0",
"main": "./dist/index", "main": "./dist/index",
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/next-js", "homepage": "https://vercel.com/docs/runtimes#official-runtimes/next-js",

View File

@@ -168,12 +168,15 @@ export async function serverBuild({
} }
} }
const APP_PREFETCH_SUFFIX = '.prefetch.rsc';
let appRscPrefetches: UnwrapPromise<ReturnType<typeof glob>> = {};
let appBuildTraces: UnwrapPromise<ReturnType<typeof glob>> = {}; let appBuildTraces: UnwrapPromise<ReturnType<typeof glob>> = {};
let appDir: string | null = null; let appDir: string | null = null;
if (appPathRoutesManifest) { if (appPathRoutesManifest) {
appDir = path.join(pagesDir, '../app'); appDir = path.join(pagesDir, '../app');
appBuildTraces = await glob('**/*.js.nft.json', appDir); appBuildTraces = await glob('**/*.js.nft.json', appDir);
appRscPrefetches = await glob(`**/*${APP_PREFETCH_SUFFIX}`, appDir);
} }
const isCorrectNotFoundRoutes = semver.gte( const isCorrectNotFoundRoutes = semver.gte(
@@ -1225,6 +1228,7 @@ export async function serverBuild({
} }
const rscHeader = routesManifest.rsc?.header?.toLowerCase() || '__rsc__'; const rscHeader = routesManifest.rsc?.header?.toLowerCase() || '__rsc__';
const rscPrefetchHeader = routesManifest.rsc?.prefetchHeader?.toLowerCase();
const rscVaryHeader = const rscVaryHeader =
routesManifest?.rsc?.varyHeader || routesManifest?.rsc?.varyHeader ||
'RSC, Next-Router-State-Tree, Next-Router-Prefetch'; 'RSC, Next-Router-State-Tree, Next-Router-Prefetch';
@@ -1236,6 +1240,7 @@ export async function serverBuild({
output: { output: {
...publicDirectoryFiles, ...publicDirectoryFiles,
...lambdas, ...lambdas,
...appRscPrefetches,
// Prerenders may override Lambdas -- this is an intentional behavior. // Prerenders may override Lambdas -- this is an intentional behavior.
...prerenders, ...prerenders,
...staticPages, ...staticPages,
@@ -1475,6 +1480,49 @@ export async function serverBuild({
...(appDir ...(appDir
? [ ? [
...(rscPrefetchHeader
? [
{
src: `^${path.posix.join('/', entryDirectory, '/')}`,
has: [
{
type: 'header',
key: rscPrefetchHeader,
},
],
dest: path.posix.join(
'/',
entryDirectory,
'/index.prefetch.rsc'
),
headers: { vary: rscVaryHeader },
continue: true,
override: true,
},
{
src: `^${path.posix.join(
'/',
entryDirectory,
'/((?!.+\\.rsc).+?)(?:/)?$'
)}`,
has: [
{
type: 'header',
key: rscPrefetchHeader,
},
],
dest: path.posix.join(
'/',
entryDirectory,
`/$1${APP_PREFETCH_SUFFIX}`
),
headers: { vary: rscVaryHeader },
continue: true,
override: true,
},
]
: []),
{ {
src: `^${path.posix.join('/', entryDirectory, '/')}`, src: `^${path.posix.join('/', entryDirectory, '/')}`,
has: [ has: [
@@ -1539,10 +1587,98 @@ export async function serverBuild({
] ]
: []), : []),
...(rscPrefetchHeader
? [
{
src: path.posix.join(
'/',
entryDirectory,
`/index${APP_PREFETCH_SUFFIX}`
),
dest: path.posix.join('/', entryDirectory, '/index.rsc'),
has: [
{
type: 'header',
key: rscPrefetchHeader,
},
],
continue: true,
override: true,
},
{
src: `^${path.posix.join(
'/',
entryDirectory,
`/(.+?)${APP_PREFETCH_SUFFIX}(?:/)?$`
)}`,
dest: path.posix.join('/', entryDirectory, '/$1.rsc'),
has: [
{
type: 'header',
key: rscPrefetchHeader,
},
],
continue: true,
override: true,
},
]
: []),
...(appDir
? [
// check routes that end in `.rsc` to see if a page with the resulting name (sans-.rsc) exists in the filesystem
// if so, we want to match that page instead. (This matters when prefetching a pages route while on an appdir route)
{
src: `^${path.posix.join('/', entryDirectory, '/(.*)\\.rsc$')}`,
dest: path.posix.join('/', entryDirectory, '/$1'),
has: [
{
type: 'header',
key: rscHeader,
},
],
...(rscPrefetchHeader
? {
missing: [
{
type: 'header',
key: rscPrefetchHeader,
},
],
}
: {}),
check: true,
} as Route,
]
: []),
// These need to come before handle: miss or else they are grouped // These need to come before handle: miss or else they are grouped
// with that routing section // with that routing section
...afterFilesRewrites, ...afterFilesRewrites,
...(appDir
? [
// rewrite route back to `.rsc`, but skip checking fs
{
src: `^${path.posix.join(
'/',
entryDirectory,
'/((?!.+\\.rsc).+?)(?:/)?$'
)}`,
has: [
{
type: 'header',
key: rscHeader,
},
],
dest: path.posix.join('/', entryDirectory, '/$1.rsc'),
headers: { vary: rscVaryHeader },
continue: true,
override: true,
},
]
: []),
// make sure 404 page is used when a directory is matched without // make sure 404 page is used when a directory is matched without
// an index page // an index page
{ handle: 'resource' }, { handle: 'resource' },

View File

@@ -236,6 +236,7 @@ type RoutesManifestOld = {
rsc?: { rsc?: {
header: string; header: string;
varyHeader: string; varyHeader: string;
prefetchHeader?: string;
contentTypeHeader: string; contentTypeHeader: string;
}; };
skipMiddlewareUrlNormalize?: boolean; skipMiddlewareUrlNormalize?: boolean;
@@ -2002,6 +2003,10 @@ export const onPrerenderRoute =
), ),
}); });
if (isOmittedOrNotFound) {
initialStatus = 404;
}
if (isAppPathRoute) { if (isAppPathRoute) {
// for literal index routes we need to append an additional /index // for literal index routes we need to append an additional /index
// due to the proxy's normalizing for /index routes // due to the proxy's normalizing for /index routes

View File

@@ -0,0 +1,7 @@
export default function CatchAllPage() {
return (
<div>
<h1>CatchAllPage</h1>
</div>
);
}

View File

@@ -0,0 +1,8 @@
export default function RootLayout({ children }) {
return (
<html>
<head />
<body>{children}</body>
</html>
)
}

View File

@@ -0,0 +1,7 @@
export default function Home() {
return (
<div>
<h1>Home</h1>
</div>
);
}

View File

@@ -0,0 +1,12 @@
/* eslint-env jest */
const path = require('path');
const { deployAndTest } = require('../../utils');
const ctx = {};
describe(`${__dirname.split(path.sep).pop()}`, () => {
it('should deploy and pass probe checks', async () => {
const info = await deployAndTest(__dirname);
Object.assign(ctx, info);
});
});

View File

@@ -0,0 +1 @@
module.exports = {};

View File

@@ -0,0 +1,8 @@
{
"dependencies": {
"next": "canary",
"react": "experimental",
"react-dom": "experimental"
},
"ignoreNextjsUpdates": true
}

View File

@@ -0,0 +1,7 @@
export default function About() {
return (
<div>
<h1>About Page</h1>
</div>
);
}

View File

@@ -0,0 +1,30 @@
{
"probes": [
{
"path": "/en",
"status": 200,
"mustContain": "Home"
},
{
"path": "/en/about",
"status": 200,
"mustContain": "About Page"
},
{
"path": "/en/about",
"status": 200,
"headers": {
"RSC": "1"
},
"mustContain": "<html"
},
{
"path": "/en/foobar",
"status": 200,
"headers": {
"RSC": "1"
},
"mustNotContain": "<html"
}
]
}

View File

@@ -1,3 +1,5 @@
export const dynamic = 'force-dynamic'
export default function ClientPage() { export default function ClientPage() {
return ( return (
<> <>

View File

@@ -37,6 +37,16 @@
"mustContain": ":{", "mustContain": ":{",
"mustNotContain": "<html" "mustNotContain": "<html"
}, },
{
"path": "/dynamic/category-1/id-1",
"status": 200,
"headers": {
"RSC": "1",
"Next-Router-Prefetch": "1"
},
"mustContain": ":",
"mustNotContain": "<html"
},
{ {
"path": "/ssg", "path": "/ssg",
"status": 200, "status": 200,
@@ -45,6 +55,25 @@
"vary": "RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Url" "vary": "RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Url"
} }
}, },
{
"path": "/client-nested",
"status": 200,
"mustContain": ":",
"mustNotContain": "<html",
"headers": {
"Next-Router-Prefetch": "1",
"RSC": "1"
}
},
{
"path": "/client-nested",
"status": 200,
"mustContain": "hello",
"mustNotContain": "<html",
"headers": {
"RSC": "1"
}
},
{ {
"path": "/ssg", "path": "/ssg",
"status": 200, "status": 200,
@@ -57,6 +86,19 @@
"mustContain": ":{", "mustContain": ":{",
"mustNotContain": "<html" "mustNotContain": "<html"
}, },
{
"path": "/ssg",
"status": 200,
"responseHeaders": {
"vary": "RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Url"
},
"headers": {
"RSC": "1",
"Next-Router-Prefetch": "1"
},
"mustContain": ":{",
"mustNotContain": "<html"
},
{ {
"path": "/ssg?override=1", "path": "/ssg?override=1",
"status": 307, "status": 307,

View File

@@ -0,0 +1,12 @@
/* eslint-env jest */
const path = require('path');
const { deployAndTest } = require('../../utils');
const ctx = {};
describe(`${__dirname.split(path.sep).pop()}`, () => {
it('should deploy and pass probe checks', async () => {
const info = await deployAndTest(__dirname);
Object.assign(ctx, info);
});
});

View File

@@ -0,0 +1 @@
module.exports = {};

View File

@@ -0,0 +1,13 @@
{
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
},
"dependencies": {
"next": "canary",
"react": "latest",
"react-dom": "latest"
},
"ignoreNextjsUpdates": true
}

View File

@@ -0,0 +1,3 @@
export default function handler(req, res) {
res.status(200).json({ name: 'John Doe' });
}

View File

@@ -0,0 +1,24 @@
export default function Page(props) {
return (
<>
<p id="page">blog slug</p>
<p id="slug">{props.slug}</p>
</>
);
}
export function getStaticProps({ params }) {
const result =
params?.slug === 'awesome'
? { props: { slug: params?.slug } }
: { notFound: true };
return result;
}
export function getStaticPaths() {
return {
paths: [{ params: { slug: 'awesome' } }],
fallback: false,
};
}

View File

@@ -0,0 +1,19 @@
{
"probes": [
{
"path": "/blog/awesome",
"status": 200,
"mustContain": "blog slug"
},
{
"path": "/blog/does-not-exist",
"status": 404,
"mustContain": "This page could not be found"
},
{
"path": "/blog/[slug]",
"status": 404,
"mustContain": "This page could not be found"
}
]
}

View File

@@ -1,5 +1,20 @@
# @vercel/node # @vercel/node
## 3.0.2
### Patch Changes
- upgrade edge-runtime ([#10385](https://github.com/vercel/vercel/pull/10385))
- use `undici` instead of `node-fetch` ([#10387](https://github.com/vercel/vercel/pull/10387))
## 3.0.1
### Patch Changes
- Updated dependencies [[`96f99c714`](https://github.com/vercel/vercel/commit/96f99c714715651b85eb7a03f58ecc9e1316d156)]:
- @vercel/error-utils@2.0.1
## 3.0.0 ## 3.0.0
### Major Changes ### Major Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/node", "name": "@vercel/node",
"version": "3.0.0", "version": "3.0.2",
"license": "Apache-2.0", "license": "Apache-2.0",
"main": "./dist/index", "main": "./dist/index",
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/node-js", "homepage": "https://vercel.com/docs/runtimes#official-runtimes/node-js",
@@ -19,24 +19,24 @@
"dist" "dist"
], ],
"dependencies": { "dependencies": {
"@edge-runtime/node-utils": "2.0.3", "@edge-runtime/node-utils": "2.2.0",
"@edge-runtime/primitives": "2.1.2", "@edge-runtime/primitives": "3.1.0",
"@edge-runtime/vm": "3.0.1", "@edge-runtime/vm": "3.1.0",
"@types/node": "14.18.33", "@types/node": "14.18.33",
"@types/node-fetch": "2.6.3",
"@vercel/build-utils": "7.0.0", "@vercel/build-utils": "7.0.0",
"@vercel/error-utils": "2.0.0", "@vercel/error-utils": "2.0.1",
"@vercel/static-config": "3.0.0", "@vercel/static-config": "3.0.0",
"async-listen": "3.0.0", "async-listen": "3.0.0",
"content-type": "1.0.5", "content-type": "1.0.5",
"edge-runtime": "2.4.4", "edge-runtime": "2.5.0",
"esbuild": "0.14.47", "esbuild": "0.14.47",
"exit-hook": "2.2.1", "exit-hook": "2.2.1",
"node-fetch": "2.6.9", "node-fetch": "2.6.9",
"path-to-regexp": "6.2.1", "path-to-regexp": "6.2.1",
"ts-morph": "12.0.0", "ts-morph": "12.0.0",
"ts-node": "10.9.1", "ts-node": "10.9.1",
"typescript": "4.9.5" "typescript": "4.9.5",
"undici": "5.23.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "7.5.0", "@babel/core": "7.5.0",

View File

@@ -6,13 +6,14 @@ if (!entrypoint) {
} }
import { join } from 'path'; import { join } from 'path';
import type { Headers } from 'node-fetch'; import type { Headers } from 'undici';
import type { VercelProxyResponse } from './types.js'; import type { VercelProxyResponse } from './types.js';
import { Config } from '@vercel/build-utils'; import { Config } from '@vercel/build-utils';
import { createEdgeEventHandler } from './edge-functions/edge-handler.mjs'; import { createEdgeEventHandler } from './edge-functions/edge-handler.mjs';
import { createServer, IncomingMessage, ServerResponse } from 'http'; import { createServer, IncomingMessage, ServerResponse } from 'http';
import { createServerlessEventHandler } from './serverless-functions/serverless-handler.mjs'; import { createServerlessEventHandler } from './serverless-functions/serverless-handler.mjs';
import { isEdgeRuntime, logError, validateConfiguredRuntime } from './utils.js'; import { isEdgeRuntime, logError, validateConfiguredRuntime } from './utils.js';
import { toToReadable } from '@edge-runtime/node-utils';
import { getConfig } from '@vercel/static-config'; import { getConfig } from '@vercel/static-config';
import { Project } from 'ts-morph'; import { Project } from 'ts-morph';
import { listen } from 'async-listen'; import { listen } from 'async-listen';
@@ -104,18 +105,20 @@ async function onDevRequest(
const { headers, body, status } = await handleEvent(req); const { headers, body, status } = await handleEvent(req);
res.statusCode = status; res.statusCode = status;
for (const [key, value] of headers as unknown as Headers) { for (const [key, value] of headers as Headers) {
// node-fetch does not support headers.getSetCookie(), so we need to if (value !== undefined)
// manually set the raw value which can be an array of strings res.setHeader(
if (value !== undefined) { key,
res.setHeader(key, key === 'set-cookie' ? headers.raw()[key] : value); key === 'set-cookie' ? headers.getSetCookie() : value
} );
} }
if (body instanceof Buffer) { if (body === null) {
res.end();
} else if (body instanceof Buffer) {
res.end(body); res.end(body);
} else { } else {
body.pipe(res); toToReadable(body).pipe(res);
} }
} catch (error: any) { } catch (error: any) {
res.statusCode = 500; res.statusCode = 500;

View File

@@ -4,13 +4,13 @@ import {
NodeCompatBindings, NodeCompatBindings,
} from './edge-node-compat-plugin.mjs'; } from './edge-node-compat-plugin.mjs';
import { EdgeRuntime, runServer } from 'edge-runtime'; import { EdgeRuntime, runServer } from 'edge-runtime';
import fetch, { Headers } from 'node-fetch'; import { fetch, Headers } from 'undici';
import { isError } from '@vercel/error-utils'; import { isError } from '@vercel/error-utils';
import { readFileSync } from 'fs'; import { readFileSync } from 'fs';
import { serializeBody, entrypointToOutputPath, logError } from '../utils.js'; import { serializeBody, entrypointToOutputPath, logError } from '../utils.js';
import esbuild from 'esbuild'; import esbuild from 'esbuild';
import exitHook from 'exit-hook'; import exitHook from 'exit-hook';
import type { HeadersInit } from 'node-fetch'; import type { HeadersInit } from 'undici';
import type { VercelProxyResponse } from '../types.js'; import type { VercelProxyResponse } from '../types.js';
import type { IncomingMessage } from 'http'; import type { IncomingMessage } from 'http';
import { fileURLToPath } from 'url'; import { fileURLToPath } from 'url';
@@ -196,7 +196,6 @@ export async function createEdgeEventHandler(
if (body !== undefined) headers.set('content-length', String(body.length)); if (body !== undefined) headers.set('content-length', String(body.length));
const url = new URL(request.url ?? '/', server.url); const url = new URL(request.url ?? '/', server.url);
// @ts-expect-error
const response = await fetch(url, { const response = await fetch(url, {
body, body,
headers, headers,

View File

@@ -26,6 +26,7 @@ const webHandlerToNodeHandler = buildToNodeHandler(
{ {
Headers, Headers,
ReadableStream, ReadableStream,
// @ts-expect-error Property 'duplex' is missing in type 'Request'
Request: class extends Request { Request: class extends Request {
constructor(input: RequestInfo | URL, init?: RequestInit | undefined) { constructor(input: RequestInfo | URL, init?: RequestInit | undefined) {
super(input, addDuplexToInit(init)); super(input, addDuplexToInit(init));

View File

@@ -1,9 +1,8 @@
import { addHelpers } from './helpers.js'; import { addHelpers } from './helpers.js';
import { createServer } from 'http'; import { createServer } from 'http';
import { serializeBody } from '../utils.js'; import { serializeBody } from '../utils.js';
import { streamToBuffer } from '@vercel/build-utils';
import exitHook from 'exit-hook'; import exitHook from 'exit-hook';
import fetch from 'node-fetch'; import { Headers, fetch } from 'undici';
import { listen } from 'async-listen'; import { listen } from 'async-listen';
import { isAbsolute } from 'path'; import { isAbsolute } from 'path';
import { pathToFileURL } from 'url'; import { pathToFileURL } from 'url';
@@ -104,10 +103,10 @@ export async function createServerlessEventHandler(
return async function (request: IncomingMessage) { return async function (request: IncomingMessage) {
const url = new URL(request.url ?? '/', server.url); const url = new URL(request.url ?? '/', server.url);
// @ts-expect-error
const response = await fetch(url, { const response = await fetch(url, {
body: await serializeBody(request), body: await serializeBody(request),
compress: !isStreaming, compress: !isStreaming,
// @ts-expect-error
headers: { headers: {
...request.headers, ...request.headers,
host: request.headers['x-forwarded-host'], host: request.headers['x-forwarded-host'],
@@ -116,28 +115,33 @@ export async function createServerlessEventHandler(
redirect: 'manual', redirect: 'manual',
}); });
let body; let body: Buffer | null = null;
let headers: Headers = response.headers;
if (isStreaming) { if (isStreaming) {
body = response.body; body = response.body;
} else { } else {
body = await streamToBuffer(response.body); body = Buffer.from(await response.arrayBuffer());
const contentEncoding = response.headers.get('content-encoding'); const contentEncoding = response.headers.get('content-encoding');
if (contentEncoding) { if (contentEncoding) {
body = compress(body, contentEncoding); body = compress(body, contentEncoding);
response.headers.set('content-length', Buffer.byteLength(body)); const clonedHeaders = [];
console.log(response.headers.entries());
for (const [key, value] of response.headers.entries()) {
if (key !== 'transfer-encoding') {
// transfer-encoding is only for streaming response
clonedHeaders.push([key, value]);
}
}
clonedHeaders.push(['content-length', String(Buffer.byteLength(body))]);
headers = new Headers(clonedHeaders);
} }
/**
* `transfer-encoding` is related to streaming chunks.
* Since we are buffering the response.body, it should be stripped.
*/
response.headers.delete('transfer-encoding');
} }
return { return {
status: response.status, status: response.status,
headers: response.headers, headers,
body, body,
encoding: 'utf8', encoding: 'utf8',
}; };

View File

@@ -1,5 +1,5 @@
import { ServerResponse, IncomingMessage } from 'http'; import { ServerResponse, IncomingMessage } from 'http';
import type { Headers } from 'node-fetch'; import type { Headers } from 'undici';
export type VercelRequestCookies = { [key: string]: string }; export type VercelRequestCookies = { [key: string]: string };
export type VercelRequestQuery = { [key: string]: string | string[] }; export type VercelRequestQuery = { [key: string]: string | string[] };
@@ -44,6 +44,6 @@ export type NowApiHandler = VercelApiHandler;
export interface VercelProxyResponse { export interface VercelProxyResponse {
status: number; status: number;
headers: Headers; headers: Headers;
body: Buffer | NodeJS.ReadableStream; body: ReadableStream<Uint8Array> | Buffer | null;
encoding: BufferEncoding; encoding: BufferEncoding;
} }

View File

@@ -1,6 +1,6 @@
import { forkDevServer, readMessage } from '../../src/fork-dev-server'; import { forkDevServer, readMessage } from '../../src/fork-dev-server';
import { resolve, extname } from 'path'; import { resolve, extname } from 'path';
import fetch from 'node-fetch'; import { fetch } from 'undici';
import { createServer } from 'http'; import { createServer } from 'http';
import { listen } from 'async-listen'; import { listen } from 'async-listen';
import zlib from 'zlib'; import zlib from 'zlib';
@@ -302,7 +302,7 @@ test('allow setting multiple cookies with same name', async () => {
text: 'Hello, world!', text: 'Hello, world!',
}); });
expect(response.headers.raw()['set-cookie']).toEqual(['a=x', 'b=y', 'c=z']); expect(response.headers.getSetCookie()).toEqual(['a=x', 'b=y', 'c=z']);
} finally { } finally {
child.kill(9); child.kill(9);
} }

View File

@@ -1,5 +1,11 @@
# @vercel/remix-builder # @vercel/remix-builder
## 2.0.1
### Patch Changes
- Update `@remix-run/dev` fork to v1.19.3 ([#10381](https://github.com/vercel/vercel/pull/10381))
## 2.0.0 ## 2.0.0
### Major Changes ### Major Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/remix-builder", "name": "@vercel/remix-builder",
"version": "2.0.0", "version": "2.0.1",
"license": "Apache-2.0", "license": "Apache-2.0",
"main": "./dist/index.js", "main": "./dist/index.js",
"homepage": "https://vercel.com/docs", "homepage": "https://vercel.com/docs",
@@ -28,7 +28,7 @@
"ts-morph": "12.0.0" "ts-morph": "12.0.0"
}, },
"devDependencies": { "devDependencies": {
"@remix-run/dev": "npm:@vercel/remix-run-dev@1.19.2", "@remix-run/dev": "npm:@vercel/remix-run-dev@1.19.3",
"@types/jest": "27.5.1", "@types/jest": "27.5.1",
"@types/node": "14.18.33", "@types/node": "14.18.33",
"@types/semver": "7.3.13", "@types/semver": "7.3.13",

View File

@@ -1,5 +1,19 @@
# @vercel/static-build # @vercel/static-build
## 2.0.2
### Patch Changes
- Updated dependencies []:
- @vercel/gatsby-plugin-vercel-builder@2.0.2
## 2.0.1
### Patch Changes
- Updated dependencies []:
- @vercel/gatsby-plugin-vercel-builder@2.0.1
## 2.0.0 ## 2.0.0
### Major Changes ### Major Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/static-build", "name": "@vercel/static-build",
"version": "2.0.0", "version": "2.0.2",
"license": "Apache-2.0", "license": "Apache-2.0",
"main": "./dist/index", "main": "./dist/index",
"homepage": "https://vercel.com/docs/build-step", "homepage": "https://vercel.com/docs/build-step",
@@ -20,7 +20,7 @@
}, },
"dependencies": { "dependencies": {
"@vercel/gatsby-plugin-vercel-analytics": "1.0.10", "@vercel/gatsby-plugin-vercel-analytics": "1.0.10",
"@vercel/gatsby-plugin-vercel-builder": "2.0.0" "@vercel/gatsby-plugin-vercel-builder": "2.0.2"
}, },
"devDependencies": { "devDependencies": {
"@types/aws-lambda": "8.10.64", "@types/aws-lambda": "8.10.64",
@@ -33,9 +33,9 @@
"@types/promise-timeout": "1.3.0", "@types/promise-timeout": "1.3.0",
"@types/semver": "7.3.13", "@types/semver": "7.3.13",
"@vercel/build-utils": "7.0.0", "@vercel/build-utils": "7.0.0",
"@vercel/error-utils": "2.0.0", "@vercel/error-utils": "2.0.1",
"@vercel/frameworks": "2.0.0", "@vercel/frameworks": "2.0.1",
"@vercel/fs-detectors": "5.0.0", "@vercel/fs-detectors": "5.0.1",
"@vercel/ncc": "0.24.0", "@vercel/ncc": "0.24.0",
"@vercel/routing-utils": "3.0.0", "@vercel/routing-utils": "3.0.0",
"@vercel/static-config": "3.0.0", "@vercel/static-config": "3.0.0",

217
pnpm-lock.yaml generated
View File

@@ -129,7 +129,7 @@ importers:
specifier: 27.4.1 specifier: 27.4.1
version: 27.4.1 version: 27.4.1
'@vercel/frameworks': '@vercel/frameworks':
specifier: 2.0.0 specifier: 2.0.1
version: link:../packages/frameworks version: link:../packages/frameworks
internals/constants: internals/constants:
@@ -247,7 +247,7 @@ importers:
specifier: 2.4.2 specifier: 2.4.2
version: 2.4.2 version: 2.4.2
'@vercel/error-utils': '@vercel/error-utils':
specifier: 2.0.0 specifier: 2.0.1
version: link:../error-utils version: link:../error-utils
'@vercel/ncc': '@vercel/ncc':
specifier: 0.24.0 specifier: 0.24.0
@@ -319,10 +319,10 @@ importers:
specifier: 1.0.0 specifier: 1.0.0
version: link:../hydrogen version: link:../hydrogen
'@vercel/next': '@vercel/next':
specifier: 4.0.0 specifier: 4.0.1
version: link:../next version: link:../next
'@vercel/node': '@vercel/node':
specifier: 3.0.0 specifier: 3.0.2
version: link:../node version: link:../node
'@vercel/python': '@vercel/python':
specifier: 4.0.0 specifier: 4.0.0
@@ -331,21 +331,21 @@ importers:
specifier: 2.0.0 specifier: 2.0.0
version: link:../redwood version: link:../redwood
'@vercel/remix-builder': '@vercel/remix-builder':
specifier: 2.0.0 specifier: 2.0.1
version: link:../remix version: link:../remix
'@vercel/ruby': '@vercel/ruby':
specifier: 2.0.0 specifier: 2.0.0
version: link:../ruby version: link:../ruby
'@vercel/static-build': '@vercel/static-build':
specifier: 2.0.0 specifier: 2.0.2
version: link:../static-build version: link:../static-build
devDependencies: devDependencies:
'@alex_neo/jest-expect-message': '@alex_neo/jest-expect-message':
specifier: 1.0.5 specifier: 1.0.5
version: 1.0.5 version: 1.0.5
'@edge-runtime/node-utils': '@edge-runtime/node-utils':
specifier: 2.1.0 specifier: 2.2.0
version: 2.1.0 version: 2.2.0
'@next/env': '@next/env':
specifier: 11.1.2 specifier: 11.1.2
version: 11.1.2 version: 11.1.2
@@ -412,9 +412,6 @@ importers:
'@types/minimatch': '@types/minimatch':
specifier: 3.0.3 specifier: 3.0.3
version: 3.0.3 version: 3.0.3
'@types/mri':
specifier: 1.1.0
version: 1.1.0
'@types/ms': '@types/ms':
specifier: 0.7.30 specifier: 0.7.30
version: 0.7.30 version: 0.7.30
@@ -476,13 +473,13 @@ importers:
specifier: 13.0.0 specifier: 13.0.0
version: link:../client version: link:../client
'@vercel/error-utils': '@vercel/error-utils':
specifier: 2.0.0 specifier: 2.0.1
version: link:../error-utils version: link:../error-utils
'@vercel/frameworks': '@vercel/frameworks':
specifier: 2.0.0 specifier: 2.0.1
version: link:../frameworks version: link:../frameworks
'@vercel/fs-detectors': '@vercel/fs-detectors':
specifier: 5.0.0 specifier: 5.0.1
version: link:../fs-detectors version: link:../fs-detectors
'@vercel/fun': '@vercel/fun':
specifier: 1.0.4 specifier: 1.0.4
@@ -634,9 +631,6 @@ importers:
minimatch: minimatch:
specifier: 3.1.2 specifier: 3.1.2
version: 3.1.2 version: 3.1.2
mri:
specifier: 1.1.5
version: 1.1.5
ms: ms:
specifier: 2.1.2 specifier: 2.1.2
version: 2.1.2 version: 2.1.2
@@ -810,8 +804,8 @@ importers:
packages/edge: packages/edge:
devDependencies: devDependencies:
'@edge-runtime/jest-environment': '@edge-runtime/jest-environment':
specifier: 2.2.3 specifier: 2.3.0
version: 2.2.3 version: 2.3.0
'@types/jest': '@types/jest':
specifier: 27.4.1 specifier: 27.4.1
version: 27.4.1 version: 27.4.1
@@ -857,6 +851,9 @@ importers:
'@iarna/toml': '@iarna/toml':
specifier: 2.2.3 specifier: 2.2.3
version: 2.2.3 version: 2.2.3
'@vercel/error-utils':
specifier: 2.0.1
version: link:../error-utils
js-yaml: js-yaml:
specifier: 3.13.1 specifier: 3.13.1
version: 3.13.1 version: 3.13.1
@@ -873,9 +870,6 @@ importers:
'@types/node-fetch': '@types/node-fetch':
specifier: 2.5.8 specifier: 2.5.8
version: 2.5.8 version: 2.5.8
'@vercel/error-utils':
specifier: 2.0.0
version: link:../error-utils
'@vercel/routing-utils': '@vercel/routing-utils':
specifier: 3.0.0 specifier: 3.0.0
version: link:../routing-utils version: link:../routing-utils
@@ -892,10 +886,10 @@ importers:
packages/fs-detectors: packages/fs-detectors:
dependencies: dependencies:
'@vercel/error-utils': '@vercel/error-utils':
specifier: 2.0.0 specifier: 2.0.1
version: link:../error-utils version: link:../error-utils
'@vercel/frameworks': '@vercel/frameworks':
specifier: 2.0.0 specifier: 2.0.1
version: link:../frameworks version: link:../frameworks
'@vercel/routing-utils': '@vercel/routing-utils':
specifier: 3.0.0 specifier: 3.0.0
@@ -972,7 +966,7 @@ importers:
specifier: 7.0.0 specifier: 7.0.0
version: link:../build-utils version: link:../build-utils
'@vercel/node': '@vercel/node':
specifier: 3.0.0 specifier: 3.0.2
version: link:../node version: link:../node
'@vercel/routing-utils': '@vercel/routing-utils':
specifier: 3.0.0 specifier: 3.0.0
@@ -1219,25 +1213,22 @@ importers:
packages/node: packages/node:
dependencies: dependencies:
'@edge-runtime/node-utils': '@edge-runtime/node-utils':
specifier: 2.0.3 specifier: 2.2.0
version: 2.0.3 version: 2.2.0
'@edge-runtime/primitives': '@edge-runtime/primitives':
specifier: 2.1.2 specifier: 3.1.0
version: 2.1.2 version: 3.1.0
'@edge-runtime/vm': '@edge-runtime/vm':
specifier: 3.0.1 specifier: 3.1.0
version: 3.0.1 version: 3.1.0
'@types/node': '@types/node':
specifier: 14.18.33 specifier: 14.18.33
version: 14.18.33 version: 14.18.33
'@types/node-fetch':
specifier: 2.6.3
version: 2.6.3
'@vercel/build-utils': '@vercel/build-utils':
specifier: 7.0.0 specifier: 7.0.0
version: link:../build-utils version: link:../build-utils
'@vercel/error-utils': '@vercel/error-utils':
specifier: 2.0.0 specifier: 2.0.1
version: link:../error-utils version: link:../error-utils
'@vercel/static-config': '@vercel/static-config':
specifier: 3.0.0 specifier: 3.0.0
@@ -1249,8 +1240,8 @@ importers:
specifier: 1.0.5 specifier: 1.0.5
version: 1.0.5 version: 1.0.5
edge-runtime: edge-runtime:
specifier: 2.4.4 specifier: 2.5.0
version: 2.4.4 version: 2.5.0
esbuild: esbuild:
specifier: 0.14.47 specifier: 0.14.47
version: 0.14.47 version: 0.14.47
@@ -1272,6 +1263,9 @@ importers:
typescript: typescript:
specifier: 4.9.5 specifier: 4.9.5
version: 4.9.5 version: 4.9.5
undici:
specifier: 5.23.0
version: 5.23.0
devDependencies: devDependencies:
'@babel/core': '@babel/core':
specifier: 7.5.0 specifier: 7.5.0
@@ -1411,8 +1405,8 @@ importers:
version: 12.0.0 version: 12.0.0
devDependencies: devDependencies:
'@remix-run/dev': '@remix-run/dev':
specifier: npm:@vercel/remix-run-dev@1.19.2 specifier: npm:@vercel/remix-run-dev@1.19.3
version: /@vercel/remix-run-dev@1.19.2(@types/node@14.18.33) version: /@vercel/remix-run-dev@1.19.3(@types/node@14.18.33)
'@types/jest': '@types/jest':
specifier: 27.5.1 specifier: 27.5.1
version: 27.5.1 version: 27.5.1
@@ -1482,7 +1476,7 @@ importers:
specifier: 1.0.10 specifier: 1.0.10
version: link:../gatsby-plugin-vercel-analytics version: link:../gatsby-plugin-vercel-analytics
'@vercel/gatsby-plugin-vercel-builder': '@vercel/gatsby-plugin-vercel-builder':
specifier: 2.0.0 specifier: 2.0.2
version: link:../gatsby-plugin-vercel-builder version: link:../gatsby-plugin-vercel-builder
devDependencies: devDependencies:
'@types/aws-lambda': '@types/aws-lambda':
@@ -1516,13 +1510,13 @@ importers:
specifier: 7.0.0 specifier: 7.0.0
version: link:../build-utils version: link:../build-utils
'@vercel/error-utils': '@vercel/error-utils':
specifier: 2.0.0 specifier: 2.0.1
version: link:../error-utils version: link:../error-utils
'@vercel/frameworks': '@vercel/frameworks':
specifier: 2.0.0 specifier: 2.0.1
version: link:../frameworks version: link:../frameworks
'@vercel/fs-detectors': '@vercel/fs-detectors':
specifier: 5.0.0 specifier: 5.0.1
version: link:../fs-detectors version: link:../fs-detectors
'@vercel/ncc': '@vercel/ncc':
specifier: 0.24.0 specifier: 0.24.0
@@ -3233,58 +3227,41 @@ packages:
dependencies: dependencies:
'@jridgewell/trace-mapping': 0.3.9 '@jridgewell/trace-mapping': 0.3.9
/@edge-runtime/format@2.1.0: /@edge-runtime/cookies@3.4.0:
resolution: {integrity: sha512-gc2qbYEIIJRczBApBPznVI1c5vZgzrZQOsFZnAxxFiYah9qldHiu1YEitzSvXI8X8ZgvAguuIiyIbpWz17nlXA==} resolution: {integrity: sha512-rhkTN7D8YO78lf76gdmK4FYc4Z5zQMGPABFLCWiJzeHmHgaCievF/lHEf1WO1OGZVxe1V34NYxsNTZsXwLht3Q==}
engines: {node: '>=14'} engines: {node: '>=16'}
/@edge-runtime/format@2.2.0:
resolution: {integrity: sha512-gPrS6AVw/qJJL0vcxMXv4kFXCU3ZTCD1uuJpwX15YxHV8BgU9OG5v9LrkkXcr96PBT/9epypfNJMhlWADuEziw==}
engines: {node: '>=16'}
dev: false dev: false
/@edge-runtime/jest-environment@2.2.3: /@edge-runtime/jest-environment@2.3.0:
resolution: {integrity: sha512-5DEv8nzuMFGoVbNYbOz7/mileYSbq1/oIvisyTeSfyjId7Pc5Qh2t3BH7ixLa62aVz7oCQlALM4cYGbZQZw1YQ==} resolution: {integrity: sha512-ecjoJ6Ai/Cr/QOFpLC9nu5WC8LHnyFrnbkd8/L53q7sSmeWPKkzvjeFnaS1GLbYHPKZ1GidTsCquw6IPL1xlxA==}
engines: {node: '>=14'} engines: {node: '>=16'}
dependencies: dependencies:
'@edge-runtime/vm': 3.0.3 '@edge-runtime/vm': 3.1.0
'@jest/environment': 29.5.0 '@jest/environment': 29.5.0
'@jest/fake-timers': 29.5.0 '@jest/fake-timers': 29.5.0
jest-mock: 29.5.0 jest-mock: 29.5.0
jest-util: 29.5.0 jest-util: 29.5.0
dev: true dev: true
/@edge-runtime/node-utils@2.0.3: /@edge-runtime/node-utils@2.2.0:
resolution: {integrity: sha512-JUSbi5xu/A8+D2t9B9wfirCI1J8n8q0660FfmqZgA+n3RqxD3y7SnamL1sKRE5/AbHsKs9zcqCbK2YDklbc9Bg==} resolution: {integrity: sha512-eRM3d/zwF+VczI9+YY9j0b5s/NQ6Cj6y6XY1Fb3HHdu8rCphH8Z41qjTYt4S315FUXo78GcDgnYv7GUvqQ0a8A==}
engines: {node: '>=14'} engines: {node: '>=16'}
dev: false
/@edge-runtime/node-utils@2.1.0:
resolution: {integrity: sha512-/zxJ7URFqli6aES7BSCH856sheK6pS6RfcXtKEjinO1u6ZQKRBZhFei7xik8XWFopv/nHT758BK97kUPcNXK1A==}
engines: {node: '>=14'}
dev: true
/@edge-runtime/primitives@2.1.2:
resolution: {integrity: sha512-SR04SMDybALlhIYIi0hiuEUwIl0b7Sn+RKwQkX6hydg4+AKMzBNDFhj2nqHDD1+xkHArV9EhmJIb6iGjShwSzg==}
engines: {node: '>=14'}
dev: false
/@edge-runtime/primitives@3.0.1:
resolution: {integrity: sha512-l5NNDcPkKW4N6qRmB8zzpCF6uRW1S808V/zm72z7b/aWwZUYbmEPPkzyhGAW0aQxLU1pGdZ8u2gNjamdaU6RXw==}
engines: {node: '>=14'}
dev: false
/@edge-runtime/primitives@3.0.3:
resolution: {integrity: sha512-YnfMWMRQABAH8IsnFMJWMW+SyB4ZeYBPnR7V0aqdnew7Pq60cbH5DyFjS/FhiLwvHQk9wBREmXD7PP0HooEQ1A==}
engines: {node: '>=14'}
/@edge-runtime/vm@3.0.1:
resolution: {integrity: sha512-69twXLIcqVx0iNlc1vFqnXgka2CZi2c/QBAmMzXBk0M6mPG+ICCBh2dd+cv1K+HW2pfLuSW+EskkFXWGeCf1Vw==}
engines: {node: '>=14'}
dependencies: dependencies:
'@edge-runtime/primitives': 3.0.1 '@edge-runtime/cookies': 3.4.0
dev: false
/@edge-runtime/vm@3.0.3: /@edge-runtime/primitives@3.1.0:
resolution: {integrity: sha512-SPfI1JeIRNs/4EEE2Oc0X6gG3RqjD1TnKu2lwmwFXq0435xgZGKhc3UiKkYAdoMn2dNFD73nlabMKHBRoMRpxg==} resolution: {integrity: sha512-yxr1QM/lC8nrU38zxePeDqVeIjwsJ83gKGTH8YJ4CoHTv3q+6xEeqRIT+/9IPX/FApWYtnxHauhNqr6CHRj5YA==}
engines: {node: '>=14'} engines: {node: '>=16'}
/@edge-runtime/vm@3.1.0:
resolution: {integrity: sha512-Y2JZgJP+4byI17SiDeEZhvBUvJ+om7E5ll/jrS7aGRpet5qKnJSsGep6xxhMjqT/j8ulFvTMN/kdlMMy5pEKBQ==}
engines: {node: '>=16'}
dependencies: dependencies:
'@edge-runtime/primitives': 3.0.3 '@edge-runtime/primitives': 3.1.0
/@emotion/hash@0.9.0: /@emotion/hash@0.9.0:
resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==} resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==}
@@ -4234,8 +4211,8 @@ packages:
engines: {node: '>=14'} engines: {node: '>=14'}
dev: true dev: true
/@remix-run/server-runtime@1.19.2: /@remix-run/server-runtime@1.19.3:
resolution: {integrity: sha512-d+oOaQlBPFHPum1nstJCntRgwgi4fzijW51yPCo3ljUxIrjlDjutX2GCQ72Apd6Ffpd11/6nEq+B90EY+Ala9Q==} resolution: {integrity: sha512-KzQ+htUsKqpBgKE2tWo7kIIGy3MyHP58Io/itUPvV+weDjApwr9tQr9PZDPA3yAY6rAzLax7BU0NMSYCXWFY5A==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@remix-run/router': 1.7.2 '@remix-run/router': 1.7.2
@@ -5195,10 +5172,6 @@ packages:
minipass: 5.0.0 minipass: 5.0.0
dev: true dev: true
/@types/mri@1.1.0:
resolution: {integrity: sha512-fMl88ZoZXOB7VKazJ6wUMpZc9QIn+jcigSFRf2K/rrw4DcXn+/uGxlWX8DDlcE7JkwgIZ7BDH+JgxZPlc/Ap3g==}
dev: true
/@types/ms@0.7.30: /@types/ms@0.7.30:
resolution: {integrity: sha512-OftRLCgAzJP7vmKn9by/GVjnf4hloz/pXNOwPo0vKGAfXI7GqWXJi9N2kRar4cP5s1dGwuwcagWqO6iHBTq1Mg==} resolution: {integrity: sha512-OftRLCgAzJP7vmKn9by/GVjnf4hloz/pXNOwPo0vKGAfXI7GqWXJi9N2kRar4cP5s1dGwuwcagWqO6iHBTq1Mg==}
dev: true dev: true
@@ -5247,13 +5220,6 @@ packages:
form-data: 3.0.1 form-data: 3.0.1
dev: true dev: true
/@types/node-fetch@2.6.3:
resolution: {integrity: sha512-ETTL1mOEdq/sxUtgtOhKjyB2Irra4cjxksvcMUR5Zr4n+PxVhsCD9WS46oPbHL3et9Zde7CNRr+WUNlcHvsX+w==}
dependencies:
'@types/node': 16.18.11
form-data: 3.0.1
dev: false
/@types/node@10.12.18: /@types/node@10.12.18:
resolution: {integrity: sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==} resolution: {integrity: sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==}
dev: false dev: false
@@ -6030,12 +5996,12 @@ packages:
- encoding - encoding
- supports-color - supports-color
/@vercel/remix-run-dev@1.19.2(@types/node@14.18.33): /@vercel/remix-run-dev@1.19.3(@types/node@14.18.33):
resolution: {integrity: sha512-SWvccKSjRheW4FhFVRvz/a2ipY2zmvjWKm0v2yi+WuKwmcMcYPwYSFn/yBiW1dMfrnmnVaXe0KLt61SWJRUpCw==} resolution: {integrity: sha512-Sxg6X0Sp8t2ZpHPE9V/HASgbF9V3kYH7ll4NGDdABpRQVvgx4Y2kn4DZdFiDXslIWE7/ExBLCeN70S+JhdW1UQ==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
'@remix-run/serve': ^1.19.2 '@remix-run/serve': ^1.19.3
peerDependenciesMeta: peerDependenciesMeta:
'@remix-run/serve': '@remix-run/serve':
optional: true optional: true
@@ -6050,7 +6016,7 @@ packages:
'@babel/traverse': 7.21.5 '@babel/traverse': 7.21.5
'@babel/types': 7.21.5 '@babel/types': 7.21.5
'@npmcli/package-json': 2.0.0 '@npmcli/package-json': 2.0.0
'@remix-run/server-runtime': 1.19.2 '@remix-run/server-runtime': 1.19.3
'@vanilla-extract/integration': 6.2.1(@types/node@14.18.33) '@vanilla-extract/integration': 6.2.1(@types/node@14.18.33)
arg: 5.0.2 arg: 5.0.2
cacache: 15.3.0 cacache: 15.3.0
@@ -6673,6 +6639,11 @@ packages:
resolution: {integrity: sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==} resolution: {integrity: sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==}
engines: {node: '>= 14'} engines: {node: '>= 14'}
/async-listen@3.0.1:
resolution: {integrity: sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==}
engines: {node: '>= 14'}
dev: false
/async-retry@1.1.3: /async-retry@1.1.3:
resolution: {integrity: sha512-fiAB2uaoAoUS5Ua75XFGoMKF4hmQ5H4u4gsINUjwPNof5dygJS1zyL9mh0SOmIkzAwGijwG4ybLNc8yG2OGpEQ==} resolution: {integrity: sha512-fiAB2uaoAoUS5Ua75XFGoMKF4hmQ5H4u4gsINUjwPNof5dygJS1zyL9mh0SOmIkzAwGijwG4ybLNc8yG2OGpEQ==}
dependencies: dependencies:
@@ -6708,6 +6679,7 @@ packages:
/asynckit@0.4.0: /asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: true
/atob@2.1.2: /atob@2.1.2:
resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
@@ -7096,6 +7068,13 @@ packages:
load-tsconfig: 0.2.3 load-tsconfig: 0.2.3
dev: true dev: true
/busboy@1.6.0:
resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
engines: {node: '>=10.16.0'}
dependencies:
streamsearch: 1.1.0
dev: false
/bytes@3.0.0: /bytes@3.0.0:
resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
@@ -7585,6 +7564,7 @@ packages:
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
dependencies: dependencies:
delayed-stream: 1.0.0 delayed-stream: 1.0.0
dev: true
/comma-separated-tokens@2.0.3: /comma-separated-tokens@2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
@@ -8060,6 +8040,7 @@ packages:
/delayed-stream@1.0.0: /delayed-stream@1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
dev: true
/delegates@1.0.0: /delegates@1.0.0:
resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
@@ -8238,14 +8219,14 @@ packages:
safer-buffer: 2.1.2 safer-buffer: 2.1.2
dev: true dev: true
/edge-runtime@2.4.4: /edge-runtime@2.5.0:
resolution: {integrity: sha512-uq1YdIxkMDsBYLdSSp/w62PciCL46ic4m1Z/2G6N8RcAPI8p35O8u6hJQT83j28Dnt4U5iyvmwFMYouHMK51uA==} resolution: {integrity: sha512-QgDNX6R+RPwhY3+vqHpvYE4XUoB/cFG60nGBKu9pmPOJxQleeTCj2F5CHimIpNqex9h1Cy2Y3tuQ+Vq2GzmZIA==}
engines: {node: '>=14'} engines: {node: '>=16'}
hasBin: true hasBin: true
dependencies: dependencies:
'@edge-runtime/format': 2.1.0 '@edge-runtime/format': 2.2.0
'@edge-runtime/vm': 3.0.3 '@edge-runtime/vm': 3.1.0
async-listen: 3.0.0 async-listen: 3.0.1
mri: 1.2.0 mri: 1.2.0
picocolors: 1.0.0 picocolors: 1.0.0
pretty-bytes: 5.6.0 pretty-bytes: 5.6.0
@@ -9997,6 +9978,7 @@ packages:
asynckit: 0.4.0 asynckit: 0.4.0
combined-stream: 1.0.8 combined-stream: 1.0.8
mime-types: 2.1.24 mime-types: 2.1.24
dev: true
/format@0.2.2: /format@0.2.2:
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
@@ -13187,6 +13169,7 @@ packages:
/mime-db@1.40.0: /mime-db@1.40.0:
resolution: {integrity: sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==} resolution: {integrity: sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
dev: true
/mime-db@1.52.0: /mime-db@1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
@@ -13205,6 +13188,7 @@ packages:
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
dependencies: dependencies:
mime-db: 1.40.0 mime-db: 1.40.0
dev: true
/mime-types@2.1.35: /mime-types@2.1.35:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
@@ -13391,15 +13375,9 @@ packages:
engines: {node: '>=4'} engines: {node: '>=4'}
dev: true dev: true
/mri@1.1.5:
resolution: {integrity: sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg==}
engines: {node: '>=4'}
dev: true
/mri@1.2.0: /mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'} engines: {node: '>=4'}
dev: false
/ms@2.0.0: /ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
@@ -15032,7 +15010,7 @@ packages:
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
engines: {node: '>=6'} engines: {node: '>=6'}
dependencies: dependencies:
mri: 1.1.5 mri: 1.2.0
dev: true dev: true
/safe-buffer@5.1.2: /safe-buffer@5.1.2:
@@ -15075,6 +15053,7 @@ packages:
/semver@5.7.1: /semver@5.7.1:
resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
hasBin: true
dev: true dev: true
/semver@6.1.1: /semver@6.1.1:
@@ -15544,6 +15523,11 @@ packages:
mixme: 0.5.9 mixme: 0.5.9
dev: true dev: true
/streamsearch@1.1.0:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
dev: false
/string-argv@0.3.1: /string-argv@0.3.1:
resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==}
engines: {node: '>=0.6.19'} engines: {node: '>=0.6.19'}
@@ -16536,6 +16520,13 @@ packages:
which-boxed-primitive: 1.0.2 which-boxed-primitive: 1.0.2
dev: true dev: true
/undici@5.23.0:
resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==}
engines: {node: '>=14.0'}
dependencies:
busboy: 1.6.0
dev: false
/unicode-canonical-property-names-ecmascript@2.0.0: /unicode-canonical-property-names-ecmascript@2.0.0:
resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
engines: {node: '>=4'} engines: {node: '>=4'}