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",
"private": true,
"version": "0.0.0",
"version": "0.0.1",
"description": "API for the vercel/vercel repo",
"main": "index.js",
"scripts": {},

View File

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

View File

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

View File

@@ -9,6 +9,6 @@
},
"devDependencies": {
"@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",
"types": "dist/index.d.ts",
"main": "dist/index.js",
"files": [
"dist"
],
"scripts": {
"build": "tsc -p tsconfig.json"
},

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,35 @@
# 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
### Major Changes

View File

@@ -1,6 +1,6 @@
{
"name": "vercel",
"version": "32.0.0",
"version": "32.0.2",
"preferGlobal": true,
"license": "Apache-2.0",
"description": "The command-line interface for Vercel",
@@ -34,17 +34,17 @@
"@vercel/build-utils": "7.0.0",
"@vercel/go": "3.0.0",
"@vercel/hydrogen": "1.0.0",
"@vercel/next": "4.0.0",
"@vercel/node": "3.0.0",
"@vercel/next": "4.0.1",
"@vercel/node": "3.0.2",
"@vercel/python": "4.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/static-build": "2.0.0"
"@vercel/static-build": "2.0.2"
},
"devDependencies": {
"@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",
"@sentry/node": "5.5.0",
"@sindresorhus/slugify": "0.11.0",
@@ -67,7 +67,6 @@
"@types/load-json-file": "2.0.7",
"@types/mime-types": "2.1.0",
"@types/minimatch": "3.0.3",
"@types/mri": "1.1.0",
"@types/ms": "0.7.30",
"@types/node": "14.18.33",
"@types/node-fetch": "2.5.10",
@@ -88,9 +87,9 @@
"@vercel-internals/get-package-json": "1.0.0",
"@vercel-internals/types": "1.0.7",
"@vercel/client": "13.0.0",
"@vercel/error-utils": "2.0.0",
"@vercel/frameworks": "2.0.0",
"@vercel/fs-detectors": "5.0.0",
"@vercel/error-utils": "2.0.1",
"@vercel/frameworks": "2.0.1",
"@vercel/fs-detectors": "5.0.1",
"@vercel/fun": "1.0.4",
"@vercel/ncc": "0.24.0",
"@vercel/routing-utils": "3.0.0",
@@ -141,7 +140,6 @@
"load-json-file": "3.0.0",
"mime-types": "2.1.24",
"minimatch": "3.1.2",
"mri": "1.1.5",
"ms": "2.1.2",
"node-fetch": "2.6.7",
"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 Client from '../../util/client';
import getArgs from '../../util/get-args';
import getSubcommand from '../../util/get-subcommand';
import { packageName, logo } from '../../util/pkg-name';
import { help } from '../help';
import ls from './ls';
import rm from './rm';
import set from './set';
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.
`);
};
import { aliasCommand } from './command';
const COMMAND_CONFIG = {
default: ['set'],
@@ -76,7 +15,7 @@ const COMMAND_CONFIG = {
set: ['set'],
};
export default async function main(client: Client) {
export default async function alias(client: Client) {
let argv;
try {
@@ -94,7 +33,7 @@ export default async function main(client: Client) {
}
if (argv['--help']) {
help();
client.output.print(help(aliasCommand, { columns: client.stderr.columns }));
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
import { handleError } from '../../util/error';
@@ -10,69 +8,9 @@ import add from './add';
import issue from './issue';
import ls from './ls';
import rm from './rm';
import { certsCommand } from './command';
import { help } from '../help';
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 = {
add: ['add'],
@@ -103,7 +41,7 @@ export default async function main(client: Client) {
}
if (argv['--help']) {
help();
client.output.print(help(certsCommand, { columns: client.stderr.columns }));
return 2;
}
@@ -123,7 +61,9 @@ export default async function main(client: Client) {
return 1;
default:
output.error('Please specify a valid subcommand: ls | issue | rm');
help();
client.output.print(
help(certsCommand, { columns: client.stderr.columns })
);
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 getArgs from '../../util/get-args';
import getSubcommand from '../../util/get-subcommand';
import handleError from '../../util/handle-error';
import { packageName, logo } from '../../util/pkg-name';
import add from './add';
import importZone from './import';
import ls from './ls';
import rm from './rm';
const 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`)}
`);
};
import { dnsCommand } from './command';
import { help } from '../help';
const COMMAND_CONFIG = {
add: ['add'],
@@ -99,7 +17,7 @@ const COMMAND_CONFIG = {
rm: ['rm', 'remove'],
};
export default async function main(client: Client) {
export default async function dns(client: Client) {
let argv;
try {
@@ -114,7 +32,7 @@ export default async function main(client: Client) {
}
if (argv['--help']) {
help();
client.output.print(help(dnsCommand, { columns: client.stderr.columns }));
return 2;
}

View File

@@ -26,6 +26,7 @@ export interface Command {
name: string;
description: string;
arguments: CommandArgument[];
subcommands?: Command[];
options: CommandOption[];
examples: CommandExample[];
}
@@ -280,6 +281,66 @@ export function buildCommandOptionLines(
].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) {
const outputArray: string[] = [`${INDENT}${chalk.dim('Examples:')}`, ''];
for (const example of command.examples) {
@@ -324,6 +385,7 @@ export function buildHelpOutput(
'',
buildCommandSynopsisLine(command),
buildDescriptionLine(command, options),
buildSubcommandLines(command.subcommands, options),
buildCommandOptionLines(command.options, options, 'Options'),
buildCommandOptionLines(globalCommandOptions, options, 'Global Options'),
buildCommandExampleLines(command),

View File

@@ -22,6 +22,16 @@ export const pullCommand: Command = {
deprecated: 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',
description:
@@ -45,6 +55,10 @@ export const pullCommand: Command = {
name: 'Pull for a specific environment',
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',
value: `${packageName} env pull`,

View File

@@ -1,6 +1,5 @@
import chalk from 'chalk';
import table from 'text-table';
import mri from 'mri';
import ms from 'ms';
import strlen from '../util/strlen.ts';
import { handleError, error } from '../util/error';
@@ -9,8 +8,8 @@ import exit from '../util/exit';
import getScope from '../util/get-scope.ts';
import confirm from '../util/input/confirm';
import getCommandFlags from '../util/get-command-flags';
import getPrefixedFlags from '../util/get-prefixed-flags';
import { packageName, getCommandName, logo } from '../util/pkg-name.ts';
import getArgs from '../util/get-args';
const help = () => {
console.log(`
@@ -81,14 +80,12 @@ let subcommand;
let nextTimestamp;
const main = async client => {
argv = mri(client.argv.slice(2), {
boolean: ['help', 'debug', 'yes'],
alias: {
help: 'h',
debug: 'd',
yes: 'y',
next: 'N',
},
argv = getArgs(client.argv.slice(2), {
'--yes': Boolean,
'--next': Number,
'--test-warning': Boolean,
'-y': '--yes',
'-N': '--next',
});
argv._ = argv._.slice(1);
@@ -134,7 +131,8 @@ async function run({ output, contextName, currentTeam, client }) {
const secrets = new NowSecrets({ client, currentTeam });
const args = argv._.slice(1);
const start = Date.now();
const { 'test-warning': testWarningFlag } = argv;
const { '--test-warning': testWarningFlag } = argv;
const commandName = getCommandName('secret ' + subcommand);
if (subcommand === 'ls' || subcommand === 'list') {
@@ -190,14 +188,7 @@ async function run({ output, contextName, currentTeam, client }) {
}
if (pagination && pagination.count === 20) {
const prefixedArgs = getPrefixedFlags(argv);
const flags = getCommandFlags(prefixedArgs, [
'_',
'--next',
'-N',
'-d',
'-y',
]);
const flags = getCommandFlags(argv, ['_', '--next', '-N', '-d', '-y']);
const nextCmd = `secrets ${subcommand}${flags} --next ${pagination.next}`;
output.log(`To display the next page run ${getCommandName(nextCmd)}`);
}
@@ -225,7 +216,7 @@ async function run({ output, contextName, currentTeam, client }) {
if (theSecret) {
const yes =
argv.yes ||
argv['--yes'] ||
(await readConfirmation(client, output, theSecret, contextName));
if (!yes) {
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 getUser from '../../util/get-user';
import getTeams from '../../util/teams/get-teams';
import getPrefixedFlags from '../../util/get-prefixed-flags';
import { packageName } from '../../util/pkg-name';
import getCommandFlags from '../../util/get-command-flags';
import cmd from '../../util/output/cmd';
@@ -81,8 +80,7 @@ export default async function list(client: Client): Promise<number> {
);
if (pagination?.count === 20) {
const prefixedArgs = getPrefixedFlags(argv);
const flags = getCommandFlags(prefixedArgs, ['_', '--next', '-N', '-d']);
const flags = getCommandFlags(argv, ['_', '--next', '-N', '-d']);
const nextCmd = `${packageName} teams ls${flags} --next ${pagination.next}`;
console.log(); // empty line
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
## 1.0.1
### Patch Changes
- upgrade edge-runtime ([#10385](https://github.com/vercel/vercel/pull/10385))
## 1.0.0
### Major Changes

View File

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

View File

@@ -1,5 +1,11 @@
# @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
### Major Changes

View File

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

View File

@@ -1,5 +1,14 @@
# @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
### Major Changes

View File

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

View File

@@ -1,5 +1,13 @@
# @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
### Major Changes

View File

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

View File

@@ -1,5 +1,19 @@
# @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
### Major Changes

View File

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

View File

@@ -1,5 +1,13 @@
# @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
### Major Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/next",
"version": "4.0.0",
"version": "4.0.1",
"license": "Apache-2.0",
"main": "./dist/index",
"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 appDir: string | null = null;
if (appPathRoutesManifest) {
appDir = path.join(pagesDir, '../app');
appBuildTraces = await glob('**/*.js.nft.json', appDir);
appRscPrefetches = await glob(`**/*${APP_PREFETCH_SUFFIX}`, appDir);
}
const isCorrectNotFoundRoutes = semver.gte(
@@ -1225,6 +1228,7 @@ export async function serverBuild({
}
const rscHeader = routesManifest.rsc?.header?.toLowerCase() || '__rsc__';
const rscPrefetchHeader = routesManifest.rsc?.prefetchHeader?.toLowerCase();
const rscVaryHeader =
routesManifest?.rsc?.varyHeader ||
'RSC, Next-Router-State-Tree, Next-Router-Prefetch';
@@ -1236,6 +1240,7 @@ export async function serverBuild({
output: {
...publicDirectoryFiles,
...lambdas,
...appRscPrefetches,
// Prerenders may override Lambdas -- this is an intentional behavior.
...prerenders,
...staticPages,
@@ -1475,6 +1480,49 @@ export async function serverBuild({
...(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, '/')}`,
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
// with that routing section
...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
// an index page
{ handle: 'resource' },

View File

@@ -236,6 +236,7 @@ type RoutesManifestOld = {
rsc?: {
header: string;
varyHeader: string;
prefetchHeader?: string;
contentTypeHeader: string;
};
skipMiddlewareUrlNormalize?: boolean;
@@ -2002,6 +2003,10 @@ export const onPrerenderRoute =
),
});
if (isOmittedOrNotFound) {
initialStatus = 404;
}
if (isAppPathRoute) {
// for literal index routes we need to append an additional /index
// 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() {
return (
<>

View File

@@ -37,6 +37,16 @@
"mustContain": ":{",
"mustNotContain": "<html"
},
{
"path": "/dynamic/category-1/id-1",
"status": 200,
"headers": {
"RSC": "1",
"Next-Router-Prefetch": "1"
},
"mustContain": ":",
"mustNotContain": "<html"
},
{
"path": "/ssg",
"status": 200,
@@ -45,6 +55,25 @@
"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",
"status": 200,
@@ -57,6 +86,19 @@
"mustContain": ":{",
"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",
"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
## 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
### Major Changes

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,9 +1,8 @@
import { addHelpers } from './helpers.js';
import { createServer } from 'http';
import { serializeBody } from '../utils.js';
import { streamToBuffer } from '@vercel/build-utils';
import exitHook from 'exit-hook';
import fetch from 'node-fetch';
import { Headers, fetch } from 'undici';
import { listen } from 'async-listen';
import { isAbsolute } from 'path';
import { pathToFileURL } from 'url';
@@ -104,10 +103,10 @@ export async function createServerlessEventHandler(
return async function (request: IncomingMessage) {
const url = new URL(request.url ?? '/', server.url);
// @ts-expect-error
const response = await fetch(url, {
body: await serializeBody(request),
compress: !isStreaming,
// @ts-expect-error
headers: {
...request.headers,
host: request.headers['x-forwarded-host'],
@@ -116,28 +115,33 @@ export async function createServerlessEventHandler(
redirect: 'manual',
});
let body;
let body: Buffer | null = null;
let headers: Headers = response.headers;
if (isStreaming) {
body = response.body;
} else {
body = await streamToBuffer(response.body);
body = Buffer.from(await response.arrayBuffer());
const contentEncoding = response.headers.get('content-encoding');
if (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 {
status: response.status,
headers: response.headers,
headers,
body,
encoding: 'utf8',
};

View File

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

View File

@@ -1,6 +1,6 @@
import { forkDevServer, readMessage } from '../../src/fork-dev-server';
import { resolve, extname } from 'path';
import fetch from 'node-fetch';
import { fetch } from 'undici';
import { createServer } from 'http';
import { listen } from 'async-listen';
import zlib from 'zlib';
@@ -302,7 +302,7 @@ test('allow setting multiple cookies with same name', async () => {
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 {
child.kill(9);
}

View File

@@ -1,5 +1,11 @@
# @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
### Major Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/remix-builder",
"version": "2.0.0",
"version": "2.0.1",
"license": "Apache-2.0",
"main": "./dist/index.js",
"homepage": "https://vercel.com/docs",
@@ -28,7 +28,7 @@
"ts-morph": "12.0.0"
},
"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/node": "14.18.33",
"@types/semver": "7.3.13",

View File

@@ -1,5 +1,19 @@
# @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
### Major Changes

View File

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