mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-26 19:00:08 +00:00
Compare commits
47 Commits
@vercel/ne
...
@vercel/cl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b67b97023b | ||
|
|
9146885f80 | ||
|
|
98bc41d49a | ||
|
|
a38c102208 | ||
|
|
211c74a7d2 | ||
|
|
2a40ff564e | ||
|
|
d4cf2b9ae6 | ||
|
|
7695316cd4 | ||
|
|
7ecb146fdb | ||
|
|
ec3d6ad640 | ||
|
|
5d521af586 | ||
|
|
652a312753 | ||
|
|
bd516c505b | ||
|
|
4d63d9e954 | ||
|
|
6a9002f229 | ||
|
|
2829d541b8 | ||
|
|
6880dcb3c3 | ||
|
|
832ba4b69a | ||
|
|
9a250d528c | ||
|
|
382ff2f526 | ||
|
|
f80a59c73f | ||
|
|
d09dd1794b | ||
|
|
ab34a26205 | ||
|
|
7582571d94 | ||
|
|
e6aaf79d04 | ||
|
|
a1df25a197 | ||
|
|
dfe47f6e6c | ||
|
|
3a58431695 | ||
|
|
204c3592c7 | ||
|
|
3cede43ca7 | ||
|
|
1dbb22bb6d | ||
|
|
f124779b35 | ||
|
|
371c7a08f2 | ||
|
|
447c20fb99 | ||
|
|
0fe8c07194 | ||
|
|
78d1d548d9 | ||
|
|
c41ff450c0 | ||
|
|
ca2cbf06fb | ||
|
|
2d86a2d4ba | ||
|
|
4edfcd74b6 | ||
|
|
c52bdf7758 | ||
|
|
bc5ac1ec50 | ||
|
|
aa0f3d712b | ||
|
|
e02212ae80 | ||
|
|
a8934da623 | ||
|
|
0e9bb30fd2 | ||
|
|
6afdd7fb0b |
9
.github/workflows/release.yml
vendored
9
.github/workflows/release.yml
vendored
@@ -76,3 +76,12 @@ jobs:
|
||||
script: |
|
||||
const script = require('./utils/update-latest-release.js')
|
||||
await script({ github, context })
|
||||
summary:
|
||||
name: Summary
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
needs:
|
||||
- release
|
||||
steps:
|
||||
- name: Check All
|
||||
run: echo OK
|
||||
|
||||
3
.github/workflows/test-lint.yml
vendored
3
.github/workflows/test-lint.yml
vendored
@@ -28,7 +28,8 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: main
|
||||
- run: git checkout ${{ github.event.pull_request.head.ref }}
|
||||
- run: git fetch origin ${{ github.event.pull_request.head.sha }}:pr-${{ github.event.pull_request.number }}
|
||||
- run: git checkout pr-${{ github.event.pull_request.number }}
|
||||
- name: install pnpm@8.3.1
|
||||
run: npm i -g pnpm@8.3.1
|
||||
- run: pnpm install
|
||||
|
||||
@@ -388,13 +388,13 @@ This is an abstract enumeration type that is implemented by one of the following
|
||||
- `nodejs20.x`
|
||||
- `nodejs18.x`
|
||||
- `nodejs16.x`
|
||||
- `go1.x`
|
||||
- `java11`
|
||||
- `python3.9`
|
||||
- `dotnet6`
|
||||
- `dotnetcore3.1`
|
||||
- `ruby2.7`
|
||||
- `provided.al2`
|
||||
- `provided.al2023`
|
||||
|
||||
## `@vercel/build-utils` Helper Functions
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
## Vercel
|
||||
|
||||
Vercel's frontend cloud gives developers frameworks, workflows, and infrastructure to build a faster, more personalized web.
|
||||
Vercel’s Frontend Cloud provides the developer experience and infrastructure to build, scale, and secure a faster, more personalized Web.
|
||||
|
||||
## Deploy
|
||||
|
||||
|
||||
6
examples/CHANGELOG.md
vendored
6
examples/CHANGELOG.md
vendored
@@ -4,4 +4,10 @@
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- chore: update Nuxt example ([#10869](https://github.com/vercel/vercel/pull/10869))
|
||||
|
||||
## null
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- update examples to use at least node@16 ([#10395](https://github.com/vercel/vercel/pull/10395))
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
344
examples/nextjs/package-lock.json
generated
344
examples/nextjs/package-lock.json
generated
@@ -8,7 +8,7 @@
|
||||
"name": "nextjs",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"next": "14.0.3",
|
||||
"next": "14.0.4",
|
||||
"react": "^18",
|
||||
"react-dom": "^18"
|
||||
},
|
||||
@@ -18,7 +18,7 @@
|
||||
"@types/react-dom": "^18",
|
||||
"autoprefixer": "^10.0.1",
|
||||
"eslint": "^8",
|
||||
"eslint-config-next": "14.0.3",
|
||||
"eslint-config-next": "14.0.4",
|
||||
"postcss": "^8",
|
||||
"tailwindcss": "^3.3.0",
|
||||
"typescript": "^5"
|
||||
@@ -46,9 +46,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/runtime": {
|
||||
"version": "7.23.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz",
|
||||
"integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==",
|
||||
"version": "7.23.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz",
|
||||
"integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"regenerator-runtime": "^0.14.0"
|
||||
@@ -82,9 +82,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/eslintrc": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz",
|
||||
"integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==",
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
|
||||
"integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ajv": "^6.12.4",
|
||||
@@ -105,9 +105,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/js": {
|
||||
"version": "8.53.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz",
|
||||
"integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==",
|
||||
"version": "8.55.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz",
|
||||
"integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
@@ -195,23 +195,23 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/env": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.3.tgz",
|
||||
"integrity": "sha512-7xRqh9nMvP5xrW4/+L0jgRRX+HoNRGnfJpD+5Wq6/13j3dsdzxO3BCXn7D3hMqsDb+vjZnJq+vI7+EtgrYZTeA=="
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.4.tgz",
|
||||
"integrity": "sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ=="
|
||||
},
|
||||
"node_modules/@next/eslint-plugin-next": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.3.tgz",
|
||||
"integrity": "sha512-j4K0n+DcmQYCVnSAM+UByTVfIHnYQy2ODozfQP+4RdwtRDfobrIvKq1K4Exb2koJ79HSSa7s6B2SA8T/1YR3RA==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.4.tgz",
|
||||
"integrity": "sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"glob": "7.1.7"
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-darwin-arm64": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.3.tgz",
|
||||
"integrity": "sha512-64JbSvi3nbbcEtyitNn2LEDS/hcleAFpHdykpcnrstITFlzFgB/bW0ER5/SJJwUPj+ZPY+z3e+1jAfcczRLVGw==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.4.tgz",
|
||||
"integrity": "sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -224,9 +224,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-darwin-x64": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.3.tgz",
|
||||
"integrity": "sha512-RkTf+KbAD0SgYdVn1XzqE/+sIxYGB7NLMZRn9I4Z24afrhUpVJx6L8hsRnIwxz3ERE2NFURNliPjJ2QNfnWicQ==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.4.tgz",
|
||||
"integrity": "sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -239,9 +239,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-arm64-gnu": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.3.tgz",
|
||||
"integrity": "sha512-3tBWGgz7M9RKLO6sPWC6c4pAw4geujSwQ7q7Si4d6bo0l6cLs4tmO+lnSwFp1Tm3lxwfMk0SgkJT7EdwYSJvcg==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.4.tgz",
|
||||
"integrity": "sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -254,9 +254,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-arm64-musl": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.3.tgz",
|
||||
"integrity": "sha512-v0v8Kb8j8T23jvVUWZeA2D8+izWspeyeDGNaT2/mTHWp7+37fiNfL8bmBWiOmeumXkacM/AB0XOUQvEbncSnHA==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.4.tgz",
|
||||
"integrity": "sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -269,9 +269,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-x64-gnu": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.3.tgz",
|
||||
"integrity": "sha512-VM1aE1tJKLBwMGtyBR21yy+STfl0MapMQnNrXkxeyLs0GFv/kZqXS5Jw/TQ3TSUnbv0QPDf/X8sDXuMtSgG6eg==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.4.tgz",
|
||||
"integrity": "sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -284,9 +284,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-linux-x64-musl": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.3.tgz",
|
||||
"integrity": "sha512-64EnmKy18MYFL5CzLaSuUn561hbO1Gk16jM/KHznYP3iCIfF9e3yULtHaMy0D8zbHfxset9LTOv6cuYKJgcOxg==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.4.tgz",
|
||||
"integrity": "sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -299,9 +299,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-win32-arm64-msvc": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.3.tgz",
|
||||
"integrity": "sha512-WRDp8QrmsL1bbGtsh5GqQ/KWulmrnMBgbnb+59qNTW1kVi1nG/2ndZLkcbs2GX7NpFLlToLRMWSQXmPzQm4tog==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.4.tgz",
|
||||
"integrity": "sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -314,9 +314,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-win32-ia32-msvc": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.3.tgz",
|
||||
"integrity": "sha512-EKffQeqCrj+t6qFFhIFTRoqb2QwX1mU7iTOvMyLbYw3QtqTw9sMwjykyiMlZlrfm2a4fA84+/aeW+PMg1MjuTg==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.4.tgz",
|
||||
"integrity": "sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
@@ -329,9 +329,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@next/swc-win32-x64-msvc": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.3.tgz",
|
||||
"integrity": "sha512-ERhKPSJ1vQrPiwrs15Pjz/rvDHZmkmvbf/BjPN/UCOI++ODftT0GtasDPi0j+y6PPJi5HsXw+dpRaXUaw4vjuQ==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.4.tgz",
|
||||
"integrity": "sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -379,9 +379,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rushstack/eslint-patch": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz",
|
||||
"integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==",
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.0.tgz",
|
||||
"integrity": "sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@swc/helpers": {
|
||||
@@ -399,24 +399,24 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz",
|
||||
"integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==",
|
||||
"version": "20.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz",
|
||||
"integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"undici-types": "~5.26.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/prop-types": {
|
||||
"version": "15.7.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.10.tgz",
|
||||
"integrity": "sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==",
|
||||
"version": "15.7.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz",
|
||||
"integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/react": {
|
||||
"version": "18.2.37",
|
||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.37.tgz",
|
||||
"integrity": "sha512-RGAYMi2bhRgEXT3f4B92WTohopH6bIXw05FuGlmJEnv/omEn190+QYEIYxIAuIBdKgboYYdVved2p1AxZVQnaw==",
|
||||
"version": "18.2.42",
|
||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.42.tgz",
|
||||
"integrity": "sha512-c1zEr96MjakLYus/wPnuWDo1/zErfdU9rNsIGmE+NV71nx88FG9Ttgo5dqorXTu/LImX2f63WBP986gJkMPNbA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/prop-types": "*",
|
||||
@@ -425,30 +425,30 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/react-dom": {
|
||||
"version": "18.2.15",
|
||||
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.15.tgz",
|
||||
"integrity": "sha512-HWMdW+7r7MR5+PZqJF6YFNSCtjz1T0dsvo/f1BV6HkV+6erD/nA7wd9NM00KVG83zf2nJ7uATPO9ttdIPvi3gg==",
|
||||
"version": "18.2.17",
|
||||
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz",
|
||||
"integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/react": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/scheduler": {
|
||||
"version": "0.16.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.6.tgz",
|
||||
"integrity": "sha512-Vlktnchmkylvc9SnwwwozTv04L/e1NykF5vgoQ0XTmI8DD+wxfjQuHuvHS3p0r2jz2x2ghPs2h1FVeDirIteWA==",
|
||||
"version": "0.16.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz",
|
||||
"integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@typescript-eslint/parser": {
|
||||
"version": "6.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.11.0.tgz",
|
||||
"integrity": "sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==",
|
||||
"version": "6.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz",
|
||||
"integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/scope-manager": "6.11.0",
|
||||
"@typescript-eslint/types": "6.11.0",
|
||||
"@typescript-eslint/typescript-estree": "6.11.0",
|
||||
"@typescript-eslint/visitor-keys": "6.11.0",
|
||||
"@typescript-eslint/scope-manager": "6.13.2",
|
||||
"@typescript-eslint/types": "6.13.2",
|
||||
"@typescript-eslint/typescript-estree": "6.13.2",
|
||||
"@typescript-eslint/visitor-keys": "6.13.2",
|
||||
"debug": "^4.3.4"
|
||||
},
|
||||
"engines": {
|
||||
@@ -468,13 +468,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/scope-manager": {
|
||||
"version": "6.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.11.0.tgz",
|
||||
"integrity": "sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==",
|
||||
"version": "6.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz",
|
||||
"integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "6.11.0",
|
||||
"@typescript-eslint/visitor-keys": "6.11.0"
|
||||
"@typescript-eslint/types": "6.13.2",
|
||||
"@typescript-eslint/visitor-keys": "6.13.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^16.0.0 || >=18.0.0"
|
||||
@@ -485,9 +485,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/types": {
|
||||
"version": "6.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.11.0.tgz",
|
||||
"integrity": "sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==",
|
||||
"version": "6.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz",
|
||||
"integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^16.0.0 || >=18.0.0"
|
||||
@@ -498,13 +498,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/typescript-estree": {
|
||||
"version": "6.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.11.0.tgz",
|
||||
"integrity": "sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==",
|
||||
"version": "6.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz",
|
||||
"integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "6.11.0",
|
||||
"@typescript-eslint/visitor-keys": "6.11.0",
|
||||
"@typescript-eslint/types": "6.13.2",
|
||||
"@typescript-eslint/visitor-keys": "6.13.2",
|
||||
"debug": "^4.3.4",
|
||||
"globby": "^11.1.0",
|
||||
"is-glob": "^4.0.3",
|
||||
@@ -525,12 +525,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/visitor-keys": {
|
||||
"version": "6.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz",
|
||||
"integrity": "sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==",
|
||||
"version": "6.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz",
|
||||
"integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "6.11.0",
|
||||
"@typescript-eslint/types": "6.13.2",
|
||||
"eslint-visitor-keys": "^3.4.1"
|
||||
},
|
||||
"engines": {
|
||||
@@ -898,9 +898,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/browserslist": {
|
||||
"version": "4.22.1",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz",
|
||||
"integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==",
|
||||
"version": "4.22.2",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
|
||||
"integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -917,9 +917,9 @@
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"caniuse-lite": "^1.0.30001541",
|
||||
"electron-to-chromium": "^1.4.535",
|
||||
"node-releases": "^2.0.13",
|
||||
"caniuse-lite": "^1.0.30001565",
|
||||
"electron-to-chromium": "^1.4.601",
|
||||
"node-releases": "^2.0.14",
|
||||
"update-browserslist-db": "^1.0.13"
|
||||
},
|
||||
"bin": {
|
||||
@@ -973,9 +973,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001562",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001562.tgz",
|
||||
"integrity": "sha512-kfte3Hym//51EdX4239i+Rmp20EsLIYGdPkERegTgU19hQWCRhsRFGKHTliUlsry53tv17K7n077Kqa0WJU4ng==",
|
||||
"version": "1.0.30001566",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz",
|
||||
"integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@@ -1111,9 +1111,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/csstype": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
|
||||
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/damerau-levenshtein": {
|
||||
@@ -1222,9 +1222,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.586",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.586.tgz",
|
||||
"integrity": "sha512-qMa+E6yf1fNQbg3G66pHLXeJUP5CCCzNat1VPczOZOqgI2w4u+8y9sQnswMdGs5m4C1rOePq37EVBr/nsPQY7w==",
|
||||
"version": "1.4.608",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.608.tgz",
|
||||
"integrity": "sha512-J2f/3iIIm3Mo0npneITZ2UPe4B1bg8fTNrFjD8715F/k1BvbviRuqYGkET1PgprrczXYTHFvotbBOmUp6KE0uA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/emoji-regex": {
|
||||
@@ -1383,15 +1383,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "8.53.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz",
|
||||
"integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==",
|
||||
"version": "8.55.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz",
|
||||
"integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/regexpp": "^4.6.1",
|
||||
"@eslint/eslintrc": "^2.1.3",
|
||||
"@eslint/js": "8.53.0",
|
||||
"@eslint/eslintrc": "^2.1.4",
|
||||
"@eslint/js": "8.55.0",
|
||||
"@humanwhocodes/config-array": "^0.11.13",
|
||||
"@humanwhocodes/module-importer": "^1.0.1",
|
||||
"@nodelib/fs.walk": "^1.2.8",
|
||||
@@ -1438,12 +1438,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-config-next": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.0.3.tgz",
|
||||
"integrity": "sha512-IKPhpLdpSUyKofmsXUfrvBC49JMUTdeaD8ZIH4v9Vk0sC1X6URTuTJCLtA0Vwuj7V/CQh0oISuSTvNn5//Buew==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.0.4.tgz",
|
||||
"integrity": "sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@next/eslint-plugin-next": "14.0.3",
|
||||
"@next/eslint-plugin-next": "14.0.4",
|
||||
"@rushstack/eslint-patch": "^1.3.3",
|
||||
"@typescript-eslint/parser": "^5.4.2 || ^6.0.0",
|
||||
"eslint-import-resolver-node": "^0.3.6",
|
||||
@@ -2888,14 +2888,15 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/next": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/next/-/next-14.0.3.tgz",
|
||||
"integrity": "sha512-AbYdRNfImBr3XGtvnwOxq8ekVCwbFTv/UJoLwmaX89nk9i051AEY4/HAWzU0YpaTDw8IofUpmuIlvzWF13jxIw==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/next/-/next-14.0.4.tgz",
|
||||
"integrity": "sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==",
|
||||
"dependencies": {
|
||||
"@next/env": "14.0.3",
|
||||
"@next/env": "14.0.4",
|
||||
"@swc/helpers": "0.5.2",
|
||||
"busboy": "1.6.0",
|
||||
"caniuse-lite": "^1.0.30001406",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"postcss": "8.4.31",
|
||||
"styled-jsx": "5.1.1",
|
||||
"watchpack": "2.4.0"
|
||||
@@ -2907,15 +2908,15 @@
|
||||
"node": ">=18.17.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@next/swc-darwin-arm64": "14.0.3",
|
||||
"@next/swc-darwin-x64": "14.0.3",
|
||||
"@next/swc-linux-arm64-gnu": "14.0.3",
|
||||
"@next/swc-linux-arm64-musl": "14.0.3",
|
||||
"@next/swc-linux-x64-gnu": "14.0.3",
|
||||
"@next/swc-linux-x64-musl": "14.0.3",
|
||||
"@next/swc-win32-arm64-msvc": "14.0.3",
|
||||
"@next/swc-win32-ia32-msvc": "14.0.3",
|
||||
"@next/swc-win32-x64-msvc": "14.0.3"
|
||||
"@next/swc-darwin-arm64": "14.0.4",
|
||||
"@next/swc-darwin-x64": "14.0.4",
|
||||
"@next/swc-linux-arm64-gnu": "14.0.4",
|
||||
"@next/swc-linux-arm64-musl": "14.0.4",
|
||||
"@next/swc-linux-x64-gnu": "14.0.4",
|
||||
"@next/swc-linux-x64-musl": "14.0.4",
|
||||
"@next/swc-win32-arm64-msvc": "14.0.4",
|
||||
"@next/swc-win32-ia32-msvc": "14.0.4",
|
||||
"@next/swc-win32-x64-msvc": "14.0.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@opentelemetry/api": "^1.1.0",
|
||||
@@ -2932,10 +2933,37 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/next/node_modules/postcss": {
|
||||
"version": "8.4.31",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
||||
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
},
|
||||
{
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.6",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || >=14"
|
||||
}
|
||||
},
|
||||
"node_modules/node-releases": {
|
||||
"version": "2.0.13",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
|
||||
"integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
|
||||
"version": "2.0.14",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
|
||||
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/normalize-path": {
|
||||
@@ -2993,13 +3021,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/object.assign": {
|
||||
"version": "4.1.4",
|
||||
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
|
||||
"integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
|
||||
"version": "4.1.5",
|
||||
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
|
||||
"integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"call-bind": "^1.0.2",
|
||||
"define-properties": "^1.1.4",
|
||||
"call-bind": "^1.0.5",
|
||||
"define-properties": "^1.2.1",
|
||||
"has-symbols": "^1.0.3",
|
||||
"object-keys": "^1.1.1"
|
||||
},
|
||||
@@ -3229,9 +3257,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.31",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
||||
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
||||
"version": "8.4.32",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
|
||||
"integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@@ -3247,7 +3276,7 @@
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.6",
|
||||
"nanoid": "^3.3.7",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
},
|
||||
@@ -3292,21 +3321,27 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-load-config": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz",
|
||||
"integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==",
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
|
||||
"integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"lilconfig": "^2.0.5",
|
||||
"yaml": "^2.1.1"
|
||||
"lilconfig": "^3.0.0",
|
||||
"yaml": "^2.3.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 14"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss": ">=8.0.9",
|
||||
"ts-node": ">=9.0.0"
|
||||
@@ -3320,6 +3355,15 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-load-config/node_modules/lilconfig": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",
|
||||
"integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss-nested": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
|
||||
@@ -3914,9 +3958,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/tailwindcss": {
|
||||
"version": "3.3.5",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.5.tgz",
|
||||
"integrity": "sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==",
|
||||
"version": "3.3.6",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.6.tgz",
|
||||
"integrity": "sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@alloc/quick-lru": "^5.2.0",
|
||||
@@ -4123,9 +4167,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "5.2.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
|
||||
"integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
|
||||
"version": "5.3.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
|
||||
"integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"dependencies": {
|
||||
"react": "^18",
|
||||
"react-dom": "^18",
|
||||
"next": "14.0.3"
|
||||
"next": "14.0.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "^5",
|
||||
@@ -22,6 +22,6 @@
|
||||
"postcss": "^8",
|
||||
"tailwindcss": "^3.3.0",
|
||||
"eslint": "^8",
|
||||
"eslint-config-next": "14.0.3"
|
||||
"eslint-config-next": "14.0.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
<div>
|
||||
<NuxtWelcome />
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
export default {
|
||||
nitro: {
|
||||
preset: 'vercel-edge',
|
||||
// https://nuxt.com/docs/api/configuration/nuxt-config
|
||||
export default defineNuxtConfig({
|
||||
devtools: { enabled: true },
|
||||
routeRules: {
|
||||
// prerender index route by default
|
||||
'/': { prerender: true },
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "nuxt build",
|
||||
"dev": "nuxt dev",
|
||||
@@ -8,6 +9,9 @@
|
||||
"postinstall": "nuxt prepare"
|
||||
},
|
||||
"devDependencies": {
|
||||
"nuxt": "^3.0.0"
|
||||
"@nuxt/devtools": "^1.0.3",
|
||||
"nuxt": "^3.8.2",
|
||||
"vue": "^3.3.8",
|
||||
"vue-router": "^4.2.5"
|
||||
}
|
||||
}
|
||||
|
||||
6100
examples/nuxtjs/pnpm-lock.yaml
generated
Normal file
6100
examples/nuxtjs/pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
BIN
examples/nuxtjs/public/favicon.ico
Normal file
BIN
examples/nuxtjs/public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
3
examples/nuxtjs/server/tsconfig.json
Normal file
3
examples/nuxtjs/server/tsconfig.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "../.nuxt/tsconfig.server.json"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
// https://v3.nuxtjs.org/concepts/typescript
|
||||
// https://nuxt.com/docs/guide/concepts/typescript
|
||||
"extends": "./.nuxt/tsconfig.json"
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
2
examples/package.json
vendored
2
examples/package.json
vendored
@@ -9,7 +9,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "27.4.1",
|
||||
"@vercel/frameworks": "2.0.3"
|
||||
"@vercel/frameworks": "2.0.5"
|
||||
},
|
||||
"version": null
|
||||
}
|
||||
|
||||
@@ -15,21 +15,21 @@
|
||||
"devDependencies": {
|
||||
"@fontsource/fira-mono": "^4.5.10",
|
||||
"@neoconfetti/svelte": "^1.0.0",
|
||||
"@playwright/test": "^1.28.1",
|
||||
"@sveltejs/adapter-vercel": "^3.0.0",
|
||||
"@sveltejs/kit": "^1.5.0",
|
||||
"@types/cookie": "^0.5.1",
|
||||
"eslint": "^8.28.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-svelte": "^2.26.0",
|
||||
"prettier": "^2.8.0",
|
||||
"prettier-plugin-svelte": "^2.8.1",
|
||||
"svelte": "^3.54.0",
|
||||
"svelte-check": "^3.0.1",
|
||||
"typescript": "^5.0.0",
|
||||
"vite": "^4.3.0",
|
||||
"vitest": "^0.25.3",
|
||||
"web-vitals": "^3.3.1"
|
||||
"@playwright/test": "^1.40.1",
|
||||
"@sveltejs/adapter-vercel": "^3.1.0",
|
||||
"@sveltejs/kit": "^1.30.3",
|
||||
"@types/cookie": "^0.5.4",
|
||||
"eslint": "^8.55.0",
|
||||
"eslint-config-prettier": "^8.10.0",
|
||||
"eslint-plugin-svelte": "^2.35.1",
|
||||
"prettier": "^2.8.8",
|
||||
"prettier-plugin-svelte": "^2.10.1",
|
||||
"svelte": "^3.59.2",
|
||||
"svelte-check": "^3.6.2",
|
||||
"typescript": "^5.3.3",
|
||||
"vite": "^4.5.1",
|
||||
"vitest": "^0.25.8",
|
||||
"web-vitals": "^3.5.0"
|
||||
},
|
||||
"type": "module"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# @vercel-internals/types
|
||||
|
||||
## 1.0.18
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`4d63d9e95`](https://github.com/vercel/vercel/commit/4d63d9e954549d811063d259250d1865b7de2ba1)]:
|
||||
- @vercel/build-utils@7.4.0
|
||||
|
||||
## 1.0.17
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`dfe47f6e6`](https://github.com/vercel/vercel/commit/dfe47f6e6c1d395ae24d802f4b7c98e39b9f90f4)]:
|
||||
- @vercel/build-utils@7.3.0
|
||||
|
||||
## 1.0.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "@vercel-internals/types",
|
||||
"version": "1.0.16",
|
||||
"version": "1.0.18",
|
||||
"types": "index.d.ts",
|
||||
"main": "index.d.ts",
|
||||
"files": [
|
||||
@@ -10,7 +10,7 @@
|
||||
"dependencies": {
|
||||
"@types/node": "14.14.31",
|
||||
"@vercel-internals/constants": "1.0.4",
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"@vercel/routing-utils": "3.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
"source-map-support": "0.5.12",
|
||||
"ts-eager": "2.0.2",
|
||||
"ts-jest": "29.1.0",
|
||||
"turbo": "1.10.16",
|
||||
"turbo": "1.11.2",
|
||||
"typescript": "4.9.5"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @vercel/build-utils
|
||||
|
||||
## 7.4.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- Adds new helper `getPathForPackageManager()` ([#10918](https://github.com/vercel/vercel/pull/10918))
|
||||
|
||||
## 7.3.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- [cli] add `--deprecated` option to `vc project ls` command ([#10919](https://github.com/vercel/vercel/pull/10919))
|
||||
|
||||
## 7.2.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/build-utils",
|
||||
"version": "7.2.5",
|
||||
"version": "7.4.0",
|
||||
"license": "Apache-2.0",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.js",
|
||||
|
||||
@@ -6,42 +6,43 @@ import debug from '../debug';
|
||||
|
||||
export type NodeVersionMajor = ReturnType<typeof getOptions>[number]['major'];
|
||||
|
||||
export const NODE_VERSIONS: NodeVersion[] = [
|
||||
{ major: 20, range: '20.x', runtime: 'nodejs20.x' },
|
||||
{ major: 18, range: '18.x', runtime: 'nodejs18.x' },
|
||||
{
|
||||
major: 16,
|
||||
range: '16.x',
|
||||
runtime: 'nodejs16.x',
|
||||
discontinueDate: new Date('2024-02-06'),
|
||||
},
|
||||
{
|
||||
major: 14,
|
||||
range: '14.x',
|
||||
runtime: 'nodejs14.x',
|
||||
discontinueDate: new Date('2023-08-15'),
|
||||
},
|
||||
{
|
||||
major: 12,
|
||||
range: '12.x',
|
||||
runtime: 'nodejs12.x',
|
||||
discontinueDate: new Date('2022-10-03'),
|
||||
},
|
||||
{
|
||||
major: 10,
|
||||
range: '10.x',
|
||||
runtime: 'nodejs10.x',
|
||||
discontinueDate: new Date('2021-04-20'),
|
||||
},
|
||||
{
|
||||
major: 8,
|
||||
range: '8.10.x',
|
||||
runtime: 'nodejs8.10',
|
||||
discontinueDate: new Date('2020-01-06'),
|
||||
},
|
||||
];
|
||||
|
||||
function getOptions() {
|
||||
const options = [
|
||||
{ major: 20, range: '20.x', runtime: 'nodejs20.x' },
|
||||
{ major: 18, range: '18.x', runtime: 'nodejs18.x' },
|
||||
{
|
||||
major: 16,
|
||||
range: '16.x',
|
||||
runtime: 'nodejs16.x',
|
||||
discontinueDate: new Date('2024-02-06'),
|
||||
},
|
||||
{
|
||||
major: 14,
|
||||
range: '14.x',
|
||||
runtime: 'nodejs14.x',
|
||||
discontinueDate: new Date('2023-08-15'),
|
||||
},
|
||||
{
|
||||
major: 12,
|
||||
range: '12.x',
|
||||
runtime: 'nodejs12.x',
|
||||
discontinueDate: new Date('2022-10-03'),
|
||||
},
|
||||
{
|
||||
major: 10,
|
||||
range: '10.x',
|
||||
runtime: 'nodejs10.x',
|
||||
discontinueDate: new Date('2021-04-20'),
|
||||
},
|
||||
{
|
||||
major: 8,
|
||||
range: '8.10.x',
|
||||
runtime: 'nodejs8.10',
|
||||
discontinueDate: new Date('2020-01-06'),
|
||||
},
|
||||
] as const;
|
||||
return options;
|
||||
return NODE_VERSIONS;
|
||||
}
|
||||
|
||||
function isNodeVersionAvailable(version: NodeVersion): boolean {
|
||||
|
||||
@@ -516,6 +516,10 @@ export async function runNpmInstall(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares the input environment based on the used package manager and lockfile
|
||||
* versions.
|
||||
*/
|
||||
export function getEnvForPackageManager({
|
||||
cliType,
|
||||
lockfileVersion,
|
||||
@@ -527,7 +531,90 @@ export function getEnvForPackageManager({
|
||||
nodeVersion: NodeVersion | undefined;
|
||||
env: { [x: string]: string | undefined };
|
||||
}) {
|
||||
const newEnv: { [x: string]: string | undefined } = { ...env };
|
||||
const {
|
||||
detectedLockfile,
|
||||
detectedPackageManager,
|
||||
path: newPath,
|
||||
yarnNodeLinker,
|
||||
} = getPathForPackageManager({
|
||||
cliType,
|
||||
lockfileVersion,
|
||||
nodeVersion,
|
||||
env,
|
||||
});
|
||||
|
||||
const newEnv: { [x: string]: string | undefined } = {
|
||||
...env,
|
||||
};
|
||||
|
||||
if (newPath) {
|
||||
// Ensure that the binaries of the detected package manager are at the
|
||||
// beginning of the `$PATH`.
|
||||
const oldPath = env.PATH + '';
|
||||
newEnv.PATH = `${newPath}${path.delimiter}${oldPath}`;
|
||||
}
|
||||
|
||||
if (yarnNodeLinker) {
|
||||
newEnv.YARN_NODE_LINKER = yarnNodeLinker;
|
||||
}
|
||||
|
||||
if (detectedLockfile && detectedPackageManager) {
|
||||
// For pnpm we also show the version of the lockfile we found
|
||||
const versionString =
|
||||
cliType === 'pnpm' ? `version ${lockfileVersion} ` : '';
|
||||
|
||||
console.log(
|
||||
`Detected \`${detectedLockfile}\` ${versionString}generated by ${detectedPackageManager}`
|
||||
);
|
||||
|
||||
if (cliType === 'bun') {
|
||||
console.warn(
|
||||
'Warning: Bun is used as a package manager at build time only, not at runtime with Functions'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return newEnv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to get the binary paths that link to the used package manager.
|
||||
* Note: Make sure it doesn't contain any `console.log` calls.
|
||||
*/
|
||||
export function getPathForPackageManager({
|
||||
cliType,
|
||||
lockfileVersion,
|
||||
nodeVersion,
|
||||
env,
|
||||
}: {
|
||||
cliType: CliType;
|
||||
lockfileVersion: number | undefined;
|
||||
nodeVersion: NodeVersion | undefined;
|
||||
env: { [x: string]: string | undefined };
|
||||
}): {
|
||||
/**
|
||||
* Which lockfile was detected.
|
||||
*/
|
||||
detectedLockfile: string | undefined;
|
||||
/**
|
||||
* Detected package manager that generated the found lockfile.
|
||||
*/
|
||||
detectedPackageManager: string | undefined;
|
||||
/**
|
||||
* Value of $PATH that includes the binaries for the detected package manager.
|
||||
* Undefined if no $PATH are necessary.
|
||||
*/
|
||||
path: string | undefined;
|
||||
/**
|
||||
* Set if yarn was identified as package manager and `YARN_NODE_LINKER`
|
||||
* environment variable was not found on the input environment.
|
||||
*/
|
||||
yarnNodeLinker: string | undefined;
|
||||
} {
|
||||
let detectedLockfile: string | undefined;
|
||||
let detectedPackageManager: string | undefined;
|
||||
let pathValue: string | undefined;
|
||||
let yarnNodeLinker: string | undefined;
|
||||
const oldPath = env.PATH + '';
|
||||
const npm7 = '/node16/bin-npm7';
|
||||
const pnpm7 = '/pnpm7/node_modules/.bin';
|
||||
@@ -542,9 +629,10 @@ export function getEnvForPackageManager({
|
||||
!oldPath.includes(npm7) &&
|
||||
!corepackEnabled
|
||||
) {
|
||||
// Ensure that npm 7 is at the beginning of the `$PATH`
|
||||
newEnv.PATH = `${npm7}${path.delimiter}${oldPath}`;
|
||||
console.log('Detected `package-lock.json` generated by npm 7+');
|
||||
// npm 7
|
||||
pathValue = npm7;
|
||||
detectedLockfile = 'package-lock.json';
|
||||
detectedPackageManager = 'npm 7+';
|
||||
}
|
||||
} else if (cliType === 'pnpm') {
|
||||
if (
|
||||
@@ -553,39 +641,40 @@ export function getEnvForPackageManager({
|
||||
!oldPath.includes(pnpm7) &&
|
||||
!corepackEnabled
|
||||
) {
|
||||
// Ensure that pnpm 7 is at the beginning of the `$PATH`
|
||||
newEnv.PATH = `${pnpm7}${path.delimiter}${oldPath}`;
|
||||
console.log(
|
||||
`Detected \`pnpm-lock.yaml\` version ${lockfileVersion} generated by pnpm 7`
|
||||
);
|
||||
// pnpm 7
|
||||
pathValue = pnpm7;
|
||||
detectedLockfile = 'pnpm-lock.yaml';
|
||||
detectedPackageManager = 'pnpm 7';
|
||||
} else if (
|
||||
typeof lockfileVersion === 'number' &&
|
||||
lockfileVersion >= 6 &&
|
||||
!oldPath.includes(pnpm8) &&
|
||||
!corepackEnabled
|
||||
) {
|
||||
// Ensure that pnpm 8 is at the beginning of the `$PATH`
|
||||
newEnv.PATH = `${pnpm8}${path.delimiter}${oldPath}`;
|
||||
console.log(
|
||||
`Detected \`pnpm-lock.yaml\` version ${lockfileVersion} generated by pnpm 8`
|
||||
);
|
||||
// pnpm 8
|
||||
pathValue = pnpm8;
|
||||
detectedLockfile = 'pnpm-lock.yaml';
|
||||
detectedPackageManager = 'pnpm 8';
|
||||
}
|
||||
} else if (cliType === 'bun') {
|
||||
if (!oldPath.includes(bun1) && !corepackEnabled) {
|
||||
// Ensure that Bun 1 is at the beginning of the `$PATH`
|
||||
newEnv.PATH = `${bun1}${path.delimiter}${oldPath}`;
|
||||
console.log('Detected `bun.lockb` generated by Bun');
|
||||
console.warn(
|
||||
'Warning: Bun is used as a package manager at build time only, not at runtime with Functions'
|
||||
);
|
||||
// Bun 1
|
||||
pathValue = bun1;
|
||||
detectedLockfile = 'bun.lockb';
|
||||
detectedPackageManager = 'Bun';
|
||||
}
|
||||
} else {
|
||||
// Yarn v2 PnP mode may be activated, so force "node-modules" linker style
|
||||
if (!env.YARN_NODE_LINKER) {
|
||||
newEnv.YARN_NODE_LINKER = 'node-modules';
|
||||
yarnNodeLinker = 'node-modules';
|
||||
}
|
||||
}
|
||||
return newEnv;
|
||||
return {
|
||||
detectedLockfile,
|
||||
detectedPackageManager,
|
||||
path: pathValue,
|
||||
yarnNodeLinker,
|
||||
};
|
||||
}
|
||||
|
||||
export async function runCustomInstallCommand({
|
||||
|
||||
@@ -28,6 +28,7 @@ import {
|
||||
runCustomInstallCommand,
|
||||
getEnvForPackageManager,
|
||||
getNodeVersion,
|
||||
getPathForPackageManager,
|
||||
getSpawnOptions,
|
||||
getNodeBinPath,
|
||||
getNodeBinPaths,
|
||||
@@ -78,6 +79,7 @@ export {
|
||||
runCustomInstallCommand,
|
||||
getEnvForPackageManager,
|
||||
getNodeVersion,
|
||||
getPathForPackageManager,
|
||||
getLatestNodeVersion,
|
||||
getDiscontinuedNodeVersions,
|
||||
getSpawnOptions,
|
||||
@@ -104,3 +106,5 @@ export * from './should-serve';
|
||||
export * from './schemas';
|
||||
export * from './types';
|
||||
export * from './errors';
|
||||
|
||||
export { NODE_VERSIONS } from './fs/node-version';
|
||||
|
||||
@@ -1,13 +1,34 @@
|
||||
import assert from 'assert';
|
||||
import { delimiter } from 'path';
|
||||
import { getEnvForPackageManager } from '../src';
|
||||
import { getEnvForPackageManager, getPathForPackageManager } from '../src';
|
||||
|
||||
describe('Test `getEnvForPackageManager()`', () => {
|
||||
const cases: Array<{
|
||||
let consoleLogSpy: jest.SpyInstance;
|
||||
let consoleWarnSpy: jest.SpyInstance;
|
||||
|
||||
beforeEach(() => {
|
||||
consoleLogSpy = jest.spyOn(console, 'log');
|
||||
consoleWarnSpy = jest.spyOn(console, 'warn');
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
jest.restoreAllMocks();
|
||||
});
|
||||
|
||||
test.each<{
|
||||
name: string;
|
||||
args: Parameters<typeof getEnvForPackageManager>[0];
|
||||
want: unknown;
|
||||
}> = [
|
||||
/**
|
||||
* Expected output on `console.log`. Set to `null` when no output is
|
||||
* expected.
|
||||
*/
|
||||
consoleLogOutput?: string | null;
|
||||
/**
|
||||
* Expected output on `console.warn`. Set to `null` when no output is
|
||||
* expected.
|
||||
*/
|
||||
consoleWarnOutput?: string | null;
|
||||
}>([
|
||||
{
|
||||
name: 'should do nothing to env for npm < 6 and node < 16',
|
||||
args: {
|
||||
@@ -21,6 +42,8 @@ describe('Test `getEnvForPackageManager()`', () => {
|
||||
want: {
|
||||
FOO: 'bar',
|
||||
},
|
||||
consoleLogOutput: null,
|
||||
consoleWarnOutput: null,
|
||||
},
|
||||
{
|
||||
name: 'should set path if npm 7+ is detected and node < 16',
|
||||
@@ -37,6 +60,8 @@ describe('Test `getEnvForPackageManager()`', () => {
|
||||
FOO: 'bar',
|
||||
PATH: `/node16/bin-npm7${delimiter}foo`,
|
||||
},
|
||||
consoleLogOutput: 'Detected `package-lock.json` generated by npm 7+',
|
||||
consoleWarnOutput: null,
|
||||
},
|
||||
{
|
||||
name: 'should not set npm path if corepack enabled',
|
||||
@@ -53,6 +78,8 @@ describe('Test `getEnvForPackageManager()`', () => {
|
||||
FOO: 'bar',
|
||||
ENABLE_EXPERIMENTAL_COREPACK: '1',
|
||||
},
|
||||
consoleLogOutput: null,
|
||||
consoleWarnOutput: null,
|
||||
},
|
||||
{
|
||||
name: 'should not prepend npm path again if already detected',
|
||||
@@ -69,6 +96,8 @@ describe('Test `getEnvForPackageManager()`', () => {
|
||||
FOO: 'bar',
|
||||
PATH: `/node16/bin-npm7${delimiter}foo`,
|
||||
},
|
||||
consoleLogOutput: null,
|
||||
consoleWarnOutput: null,
|
||||
},
|
||||
{
|
||||
name: 'should not set path if node is 16 and npm 7+ is detected',
|
||||
@@ -85,6 +114,8 @@ describe('Test `getEnvForPackageManager()`', () => {
|
||||
FOO: 'bar',
|
||||
PATH: 'foo',
|
||||
},
|
||||
consoleLogOutput: null,
|
||||
consoleWarnOutput: null,
|
||||
},
|
||||
{
|
||||
name: 'should set YARN_NODE_LINKER w/yarn if it is not already defined',
|
||||
@@ -100,6 +131,8 @@ describe('Test `getEnvForPackageManager()`', () => {
|
||||
FOO: 'bar',
|
||||
YARN_NODE_LINKER: 'node-modules',
|
||||
},
|
||||
consoleLogOutput: null,
|
||||
consoleWarnOutput: null,
|
||||
},
|
||||
{
|
||||
name: 'should not set YARN_NODE_LINKER if it already exists',
|
||||
@@ -116,6 +149,8 @@ describe('Test `getEnvForPackageManager()`', () => {
|
||||
FOO: 'bar',
|
||||
YARN_NODE_LINKER: 'exists',
|
||||
},
|
||||
consoleLogOutput: null,
|
||||
consoleWarnOutput: null,
|
||||
},
|
||||
{
|
||||
name: 'should set path if pnpm 7+ is detected',
|
||||
@@ -132,6 +167,9 @@ describe('Test `getEnvForPackageManager()`', () => {
|
||||
FOO: 'bar',
|
||||
PATH: `/pnpm7/node_modules/.bin${delimiter}foo`,
|
||||
},
|
||||
consoleLogOutput:
|
||||
'Detected `pnpm-lock.yaml` version 5.4 generated by pnpm 7',
|
||||
consoleWarnOutput: null,
|
||||
},
|
||||
{
|
||||
name: 'should set path if bun v1 is detected',
|
||||
@@ -148,6 +186,9 @@ describe('Test `getEnvForPackageManager()`', () => {
|
||||
FOO: 'bar',
|
||||
PATH: `/bun1${delimiter}/usr/local/bin`,
|
||||
},
|
||||
consoleLogOutput: 'Detected `bun.lockb` generated by Bun',
|
||||
consoleWarnOutput:
|
||||
'Warning: Bun is used as a package manager at build time only, not at runtime with Functions',
|
||||
},
|
||||
{
|
||||
name: 'should not set pnpm path if corepack is enabled',
|
||||
@@ -164,6 +205,8 @@ describe('Test `getEnvForPackageManager()`', () => {
|
||||
FOO: 'bar',
|
||||
ENABLE_EXPERIMENTAL_COREPACK: '1',
|
||||
},
|
||||
consoleLogOutput: null,
|
||||
consoleWarnOutput: null,
|
||||
},
|
||||
{
|
||||
name: 'should not prepend pnpm path again if already detected',
|
||||
@@ -180,6 +223,8 @@ describe('Test `getEnvForPackageManager()`', () => {
|
||||
FOO: 'bar',
|
||||
PATH: `/pnpm7/node_modules/.bin${delimiter}foo`,
|
||||
},
|
||||
consoleLogOutput: null,
|
||||
consoleWarnOutput: null,
|
||||
},
|
||||
{
|
||||
name: 'should not set path if pnpm 6 is detected',
|
||||
@@ -194,20 +239,262 @@ describe('Test `getEnvForPackageManager()`', () => {
|
||||
want: {
|
||||
FOO: 'bar',
|
||||
},
|
||||
consoleLogOutput: null,
|
||||
consoleWarnOutput: null,
|
||||
},
|
||||
];
|
||||
])('$name', ({ args, want, consoleLogOutput, consoleWarnOutput }) => {
|
||||
expect(
|
||||
getEnvForPackageManager({
|
||||
cliType: args.cliType,
|
||||
lockfileVersion: args.lockfileVersion,
|
||||
nodeVersion: args.nodeVersion,
|
||||
env: args.env,
|
||||
})
|
||||
).toStrictEqual(want);
|
||||
|
||||
for (const { name, want, args } of cases) {
|
||||
it(name, () => {
|
||||
assert.deepStrictEqual(
|
||||
getEnvForPackageManager({
|
||||
cliType: args.cliType,
|
||||
lockfileVersion: args.lockfileVersion,
|
||||
nodeVersion: args.nodeVersion,
|
||||
env: args.env,
|
||||
}),
|
||||
want
|
||||
);
|
||||
});
|
||||
}
|
||||
// Check console.log output
|
||||
if (typeof consoleLogOutput === 'string') {
|
||||
expect(consoleLogSpy).toHaveBeenCalledWith(consoleLogOutput);
|
||||
} else if (consoleLogOutput === null) {
|
||||
expect(consoleLogSpy).not.toHaveBeenCalled();
|
||||
}
|
||||
|
||||
// Check console.warn output
|
||||
if (typeof consoleWarnOutput === 'string') {
|
||||
expect(consoleWarnSpy).toHaveBeenCalledWith(consoleWarnOutput);
|
||||
} else if (consoleLogOutput === null) {
|
||||
expect(consoleWarnSpy).not.toHaveBeenCalled();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe('Test `getPathForPackageManager()`', () => {
|
||||
test.each<{
|
||||
name: string;
|
||||
args: Parameters<typeof getEnvForPackageManager>[0];
|
||||
want: unknown;
|
||||
}>([
|
||||
{
|
||||
name: 'should do nothing to env for npm < 6 and node < 16',
|
||||
args: {
|
||||
cliType: 'npm',
|
||||
nodeVersion: { major: 14, range: '14.x', runtime: 'nodejs14.x' },
|
||||
lockfileVersion: 1,
|
||||
env: {
|
||||
FOO: 'bar',
|
||||
},
|
||||
},
|
||||
want: {
|
||||
detectedLockfile: undefined,
|
||||
detectedPackageManager: undefined,
|
||||
path: undefined,
|
||||
yarnNodeLinker: undefined,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'should set path if npm 7+ is detected and node < 16',
|
||||
args: {
|
||||
cliType: 'npm',
|
||||
nodeVersion: { major: 14, range: '14.x', runtime: 'nodejs14.x' },
|
||||
lockfileVersion: 2,
|
||||
env: {
|
||||
FOO: 'bar',
|
||||
PATH: 'foo',
|
||||
},
|
||||
},
|
||||
want: {
|
||||
detectedLockfile: 'package-lock.json',
|
||||
detectedPackageManager: 'npm 7+',
|
||||
path: '/node16/bin-npm7',
|
||||
yarnNodeLinker: undefined,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'should not set npm path if corepack enabled',
|
||||
args: {
|
||||
cliType: 'npm',
|
||||
nodeVersion: { major: 14, range: '14.x', runtime: 'nodejs14.x' },
|
||||
lockfileVersion: 2,
|
||||
env: {
|
||||
FOO: 'bar',
|
||||
ENABLE_EXPERIMENTAL_COREPACK: '1',
|
||||
},
|
||||
},
|
||||
want: {
|
||||
detectedLockfile: undefined,
|
||||
detectedPackageManager: undefined,
|
||||
path: undefined,
|
||||
yarnNodeLinker: undefined,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'should not prepend npm path again if already detected',
|
||||
args: {
|
||||
cliType: 'npm',
|
||||
nodeVersion: { major: 14, range: '14.x', runtime: 'nodejs14.x' },
|
||||
lockfileVersion: 2,
|
||||
env: {
|
||||
FOO: 'bar',
|
||||
PATH: `/node16/bin-npm7${delimiter}foo`,
|
||||
},
|
||||
},
|
||||
want: {
|
||||
detectedLockfile: undefined,
|
||||
detectedPackageManager: undefined,
|
||||
path: undefined,
|
||||
yarnNodeLinker: undefined,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'should not set path if node is 16 and npm 7+ is detected',
|
||||
args: {
|
||||
cliType: 'npm',
|
||||
nodeVersion: { major: 16, range: '16.x', runtime: 'nodejs16.x' },
|
||||
lockfileVersion: 2,
|
||||
env: {
|
||||
FOO: 'bar',
|
||||
PATH: 'foo',
|
||||
},
|
||||
},
|
||||
want: {
|
||||
detectedLockfile: undefined,
|
||||
detectedPackageManager: undefined,
|
||||
path: undefined,
|
||||
yarnNodeLinker: undefined,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'should set YARN_NODE_LINKER w/yarn if it is not already defined',
|
||||
args: {
|
||||
cliType: 'yarn',
|
||||
nodeVersion: { major: 16, range: '16.x', runtime: 'nodejs16.x' },
|
||||
lockfileVersion: 2,
|
||||
env: {
|
||||
FOO: 'bar',
|
||||
},
|
||||
},
|
||||
want: {
|
||||
detectedLockfile: undefined,
|
||||
detectedPackageManager: undefined,
|
||||
path: undefined,
|
||||
yarnNodeLinker: 'node-modules',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'should not set YARN_NODE_LINKER if it already exists',
|
||||
args: {
|
||||
cliType: 'yarn',
|
||||
nodeVersion: { major: 16, range: '16.x', runtime: 'nodejs16.x' },
|
||||
lockfileVersion: 2,
|
||||
env: {
|
||||
FOO: 'bar',
|
||||
YARN_NODE_LINKER: 'exists',
|
||||
},
|
||||
},
|
||||
want: {
|
||||
detectedLockfile: undefined,
|
||||
detectedPackageManager: undefined,
|
||||
path: undefined,
|
||||
yarnNodeLinker: undefined,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'should set path if pnpm 7+ is detected',
|
||||
args: {
|
||||
cliType: 'pnpm',
|
||||
nodeVersion: { major: 16, range: '16.x', runtime: 'nodejs16.x' },
|
||||
lockfileVersion: 5.4,
|
||||
env: {
|
||||
FOO: 'bar',
|
||||
PATH: 'foo',
|
||||
},
|
||||
},
|
||||
want: {
|
||||
detectedLockfile: 'pnpm-lock.yaml',
|
||||
detectedPackageManager: 'pnpm 7',
|
||||
path: '/pnpm7/node_modules/.bin',
|
||||
yarnNodeLinker: undefined,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'should set path if bun v1 is detected',
|
||||
args: {
|
||||
cliType: 'bun',
|
||||
nodeVersion: { major: 18, range: '18.x', runtime: 'nodejs18.x' },
|
||||
lockfileVersion: 0,
|
||||
env: {
|
||||
FOO: 'bar',
|
||||
PATH: '/usr/local/bin',
|
||||
},
|
||||
},
|
||||
want: {
|
||||
detectedLockfile: 'bun.lockb',
|
||||
detectedPackageManager: 'Bun',
|
||||
path: '/bun1',
|
||||
yarnNodeLinker: undefined,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'should not set pnpm path if corepack is enabled',
|
||||
args: {
|
||||
cliType: 'pnpm',
|
||||
nodeVersion: { major: 16, range: '16.x', runtime: 'nodejs16.x' },
|
||||
lockfileVersion: 5.4,
|
||||
env: {
|
||||
FOO: 'bar',
|
||||
ENABLE_EXPERIMENTAL_COREPACK: '1',
|
||||
},
|
||||
},
|
||||
want: {
|
||||
detectedLockfile: undefined,
|
||||
detectedPackageManager: undefined,
|
||||
path: undefined,
|
||||
yarnNodeLinker: undefined,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'should not prepend pnpm path again if already detected',
|
||||
args: {
|
||||
cliType: 'pnpm',
|
||||
nodeVersion: { major: 16, range: '16.x', runtime: 'nodejs16.x' },
|
||||
lockfileVersion: 5.4,
|
||||
env: {
|
||||
FOO: 'bar',
|
||||
PATH: `/pnpm7/node_modules/.bin${delimiter}foo`,
|
||||
},
|
||||
},
|
||||
want: {
|
||||
detectedLockfile: undefined,
|
||||
detectedPackageManager: undefined,
|
||||
path: undefined,
|
||||
yarnNodeLinker: undefined,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'should not set path if pnpm 6 is detected',
|
||||
args: {
|
||||
cliType: 'pnpm',
|
||||
nodeVersion: { major: 14, range: '14.x', runtime: 'nodejs14.x' },
|
||||
lockfileVersion: 5.3,
|
||||
env: {
|
||||
FOO: 'bar',
|
||||
},
|
||||
},
|
||||
want: {
|
||||
detectedLockfile: undefined,
|
||||
detectedPackageManager: undefined,
|
||||
path: undefined,
|
||||
yarnNodeLinker: undefined,
|
||||
},
|
||||
},
|
||||
])('$name', ({ args, want }) => {
|
||||
expect(
|
||||
getPathForPackageManager({
|
||||
cliType: args.cliType,
|
||||
lockfileVersion: args.lockfileVersion,
|
||||
nodeVersion: args.nodeVersion,
|
||||
env: args.env,
|
||||
})
|
||||
).toStrictEqual(want);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,5 +1,74 @@
|
||||
# vercel
|
||||
|
||||
## 33.0.0
|
||||
|
||||
### Major Changes
|
||||
|
||||
- [cli] replace `--deprecated` with `--update-required` in `vc project ls` ([#10965](https://github.com/vercel/vercel/pull/10965))
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Fix `vercel bisect` selecting too many deployments ([#10956](https://github.com/vercel/vercel/pull/10956))
|
||||
|
||||
- Updated dependencies [[`6a9002f22`](https://github.com/vercel/vercel/commit/6a9002f2296c5ccce4522c0fa9a8938c3d7a4849), [`4d63d9e95`](https://github.com/vercel/vercel/commit/4d63d9e954549d811063d259250d1865b7de2ba1)]:
|
||||
- @vercel/remix-builder@2.0.15
|
||||
- @vercel/build-utils@7.4.0
|
||||
- @vercel/static-build@2.0.15
|
||||
- @vercel/node@3.0.13
|
||||
|
||||
## 32.7.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [cli] Use new `deprecated` query param in projects api for `vc project ls --deprecated` ([#10938](https://github.com/vercel/vercel/pull/10938))
|
||||
|
||||
## 32.7.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [cli] double page limit for vc project ls --deprecated ([#10932](https://github.com/vercel/vercel/pull/10932))
|
||||
|
||||
- Updated dependencies [[`d09dd1794`](https://github.com/vercel/vercel/commit/d09dd1794b5ffa28c15d3ad2880b90db2f4c06f0)]:
|
||||
- @vercel/remix-builder@2.0.14
|
||||
|
||||
## 32.7.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- [cli] add `--deprecated` option to `vc project ls` command ([#10919](https://github.com/vercel/vercel/pull/10919))
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Remove some debug statements and make log into warning ([#10926](https://github.com/vercel/vercel/pull/10926))
|
||||
|
||||
- Updated dependencies [[`3cede43ca`](https://github.com/vercel/vercel/commit/3cede43ca7ea3aec3ff33864b7d33da57891ddb2), [`dfe47f6e6`](https://github.com/vercel/vercel/commit/dfe47f6e6c1d395ae24d802f4b7c98e39b9f90f4), [`1dbb22bb6`](https://github.com/vercel/vercel/commit/1dbb22bb6d33657faa78376f527fe350188c5257), [`204c3592c`](https://github.com/vercel/vercel/commit/204c3592c78fc544e62f0210b0e7e1e4cd382a0c)]:
|
||||
- @vercel/ruby@2.0.4
|
||||
- @vercel/build-utils@7.3.0
|
||||
- @vercel/remix-builder@2.0.13
|
||||
- @vercel/node@3.0.12
|
||||
- @vercel/static-build@2.0.14
|
||||
|
||||
## 32.6.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Revert "forbids globally installed @vercel/speed-insights and @vercel/analytics (#10848)" ([#10895](https://github.com/vercel/vercel/pull/10895))
|
||||
|
||||
## 32.6.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- forbids globally installed @vercel/speed-insights and @vercel/analytics ([#10848](https://github.com/vercel/vercel/pull/10848))
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [cli] Fix behavior for combination of northstar user + team scope provided to cli as an argument. ([#10884](https://github.com/vercel/vercel/pull/10884))
|
||||
|
||||
- Updated dependencies [[`4edfcd74b`](https://github.com/vercel/vercel/commit/4edfcd74b6dfd8e9cbc05a71d47578051a2a7d63), [`0e9bb30fd`](https://github.com/vercel/vercel/commit/0e9bb30fd285492beadc365bece2ab1df67b387b), [`ca2cbf06f`](https://github.com/vercel/vercel/commit/ca2cbf06fbf252e23aff6e007d0df5ffc243b56e), [`c52bdf775`](https://github.com/vercel/vercel/commit/c52bdf77585dfa41b25cabe2f9403827d0964169)]:
|
||||
- @vercel/remix-builder@2.0.12
|
||||
- @vercel/static-build@2.0.13
|
||||
- @vercel/go@3.0.4
|
||||
|
||||
## 32.5.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "vercel",
|
||||
"version": "32.5.6",
|
||||
"version": "33.0.0",
|
||||
"preferGlobal": true,
|
||||
"license": "Apache-2.0",
|
||||
"description": "The command-line interface for Vercel",
|
||||
@@ -31,17 +31,17 @@
|
||||
"node": ">= 16"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"@vercel/fun": "1.1.0",
|
||||
"@vercel/go": "3.0.3",
|
||||
"@vercel/go": "3.0.4",
|
||||
"@vercel/hydrogen": "1.0.1",
|
||||
"@vercel/next": "4.0.15",
|
||||
"@vercel/node": "3.0.11",
|
||||
"@vercel/node": "3.0.13",
|
||||
"@vercel/python": "4.1.0",
|
||||
"@vercel/redwood": "2.0.5",
|
||||
"@vercel/remix-builder": "2.0.11",
|
||||
"@vercel/ruby": "2.0.3",
|
||||
"@vercel/static-build": "2.0.12",
|
||||
"@vercel/remix-builder": "2.0.15",
|
||||
"@vercel/ruby": "2.0.4",
|
||||
"@vercel/static-build": "2.0.15",
|
||||
"chokidar": "3.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -88,11 +88,11 @@
|
||||
"@types/yauzl-promise": "2.1.0",
|
||||
"@vercel-internals/constants": "1.0.4",
|
||||
"@vercel-internals/get-package-json": "1.0.0",
|
||||
"@vercel-internals/types": "1.0.16",
|
||||
"@vercel/client": "13.0.9",
|
||||
"@vercel-internals/types": "1.0.18",
|
||||
"@vercel/client": "13.0.11",
|
||||
"@vercel/error-utils": "2.0.2",
|
||||
"@vercel/frameworks": "2.0.3",
|
||||
"@vercel/fs-detectors": "5.1.3",
|
||||
"@vercel/frameworks": "2.0.5",
|
||||
"@vercel/fs-detectors": "5.1.5",
|
||||
"@vercel/routing-utils": "3.1.0",
|
||||
"ajv": "6.12.2",
|
||||
"alpha-sort": "2.0.1",
|
||||
|
||||
@@ -188,15 +188,18 @@ export default async function bisect(client: Client): Promise<number> {
|
||||
let newDeployments = chunk.deployments;
|
||||
|
||||
// If we have the "good" deployment in this chunk, then we're done
|
||||
let hasGood = false;
|
||||
for (let i = 0; i < newDeployments.length; i++) {
|
||||
if (newDeployments[i].url === good) {
|
||||
// grab all deployments up until the good one
|
||||
newDeployments = newDeployments.slice(0, i);
|
||||
hasGood = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
deployments = deployments.concat(newDeployments);
|
||||
if (hasGood) break;
|
||||
}
|
||||
|
||||
if (!deployments.length) {
|
||||
|
||||
@@ -15,7 +15,17 @@ export const projectCommand: Command = {
|
||||
name: 'ls',
|
||||
description: 'Show all projects in the selected scope',
|
||||
arguments: [],
|
||||
options: [],
|
||||
options: [
|
||||
{
|
||||
name: 'update-required',
|
||||
description: 'A list of projects affected by an upcoming deprecation',
|
||||
argument: 'update-required',
|
||||
shorthand: null,
|
||||
type: 'boolean',
|
||||
deprecated: false,
|
||||
multi: false,
|
||||
},
|
||||
],
|
||||
examples: [],
|
||||
},
|
||||
{
|
||||
|
||||
@@ -23,6 +23,7 @@ export default async function main(client: Client) {
|
||||
argv = getArgs(client.argv.slice(2), {
|
||||
'--next': Number,
|
||||
'-N': '--next',
|
||||
'--update-required': Boolean,
|
||||
});
|
||||
} catch (error) {
|
||||
handleError(error);
|
||||
|
||||
@@ -6,6 +6,7 @@ import Client from '../../util/client';
|
||||
import getCommandFlags from '../../util/get-command-flags';
|
||||
import { getCommandName } from '../../util/pkg-name';
|
||||
import strlen from '../../util/strlen';
|
||||
import { NODE_VERSIONS } from '@vercel/build-utils';
|
||||
|
||||
export default async function list(
|
||||
client: Client,
|
||||
@@ -27,14 +28,19 @@ export default async function list(
|
||||
|
||||
output.spinner(`Fetching projects in ${chalk.bold(contextName)}`);
|
||||
|
||||
let projectsUrl = '/v4/projects/?limit=20';
|
||||
let projectsUrl = `/v4/projects/?limit=20`;
|
||||
|
||||
const deprecated = argv['--update-required'] || false;
|
||||
if (deprecated) {
|
||||
projectsUrl += `&deprecated=${deprecated}`;
|
||||
}
|
||||
|
||||
const next = argv['--next'] || false;
|
||||
if (next) {
|
||||
projectsUrl += `&until=${next}`;
|
||||
}
|
||||
|
||||
const {
|
||||
let {
|
||||
projects: projectList,
|
||||
pagination,
|
||||
}: {
|
||||
@@ -48,10 +54,34 @@ export default async function list(
|
||||
|
||||
const elapsed = ms(Date.now() - start);
|
||||
|
||||
if (deprecated) {
|
||||
const upcomingDeprecationVersionsList = [];
|
||||
|
||||
for (const nodeVersion of NODE_VERSIONS) {
|
||||
if (
|
||||
nodeVersion.discontinueDate &&
|
||||
nodeVersion.discontinueDate.valueOf() > Date.now()
|
||||
) {
|
||||
upcomingDeprecationVersionsList.push(nodeVersion.range);
|
||||
}
|
||||
}
|
||||
|
||||
output.warn(
|
||||
`The following Node.js versions will be deprecated soon: ${upcomingDeprecationVersionsList.join(
|
||||
', '
|
||||
)}. Please upgrade your projects immediately.`
|
||||
);
|
||||
output.log(
|
||||
`For more information visit: https://vercel.com/docs/functions/serverless-functions/runtimes/node-js#node.js-version`
|
||||
);
|
||||
}
|
||||
|
||||
output.log(
|
||||
`${
|
||||
projectList.length > 0 ? 'Projects' : 'No projects'
|
||||
} found under ${chalk.bold(contextName)} ${chalk.gray(`[${elapsed}]`)}`
|
||||
} found under ${chalk.bold(contextName)} ${
|
||||
deprecated ? 'that are using a deprecated Node.js version' : '\b'
|
||||
} ${chalk.gray(`[${elapsed}]`)}`
|
||||
);
|
||||
|
||||
if (projectList.length > 0) {
|
||||
|
||||
@@ -4,12 +4,12 @@ export const defaultGlobalConfig: GlobalConfig = {
|
||||
'// Note':
|
||||
'This is your Vercel config file. For more information see the global configuration documentation.',
|
||||
'// Docs':
|
||||
'https://vercel.com/docs/project-configuration#global-configuration/config-json',
|
||||
'https://vercel.com/docs/projects/project-configuration/global-configuration#config.json',
|
||||
collectMetrics: true,
|
||||
};
|
||||
|
||||
export const defaultAuthConfig: AuthConfig = {
|
||||
'// Note': 'This is your Vercel credentials file. DO NOT SHARE!',
|
||||
'// Docs':
|
||||
'https://vercel.com/docs/project-configuration#global-configuration/auth-json',
|
||||
'https://vercel.com/docs/projects/project-configuration/global-configuration#auth.json',
|
||||
};
|
||||
|
||||
@@ -43,10 +43,13 @@ export default async function selectOrg(
|
||||
})),
|
||||
];
|
||||
|
||||
const defaultOrgIndex = teams.findIndex(team => team.id === currentTeam) + 1;
|
||||
const defaultChoiceIndex = Math.max(
|
||||
choices.findIndex(choice => choice.value.id === currentTeam),
|
||||
0
|
||||
);
|
||||
|
||||
if (autoConfirm) {
|
||||
return choices[defaultOrgIndex].value;
|
||||
return choices[defaultChoiceIndex].value;
|
||||
}
|
||||
|
||||
const answers = await client.prompt({
|
||||
@@ -54,7 +57,7 @@ export default async function selectOrg(
|
||||
name: 'org',
|
||||
message: question,
|
||||
choices,
|
||||
default: defaultOrgIndex,
|
||||
default: defaultChoiceIndex,
|
||||
});
|
||||
|
||||
const org = answers.org;
|
||||
|
||||
@@ -353,7 +353,7 @@ export function useProject(
|
||||
});
|
||||
client.scenario.get(`/v4/projects`, (req, res) => {
|
||||
res.json({
|
||||
projects: [defaultProject],
|
||||
projects: [project],
|
||||
pagination: null,
|
||||
});
|
||||
});
|
||||
|
||||
@@ -5,10 +5,7 @@ import { useTeams } from '../../mocks/team';
|
||||
import { defaultProject, useProject } from '../../mocks/project';
|
||||
import { client } from '../../mocks/client';
|
||||
import type { Project } from '@vercel-internals/types';
|
||||
import {
|
||||
pluckIdentifiersFromDeploymentList,
|
||||
parseSpacedTableRow,
|
||||
} from '../../helpers/parse-table';
|
||||
import { parseSpacedTableRow } from '../../helpers/parse-table';
|
||||
|
||||
describe('project', () => {
|
||||
describe('list', () => {
|
||||
@@ -28,8 +25,7 @@ describe('project', () => {
|
||||
expect(line.value).toEqual(`Fetching projects in ${user.username}`);
|
||||
|
||||
line = await lines.next();
|
||||
const { org } = pluckIdentifiersFromDeploymentList(line.value!);
|
||||
expect(org).toEqual(user.username);
|
||||
expect(line.value).toContain(user.username);
|
||||
|
||||
// empty line
|
||||
line = await lines.next();
|
||||
@@ -49,6 +45,55 @@ describe('project', () => {
|
||||
expect(data).toEqual([project.project.name, 'https://foobar.com']);
|
||||
});
|
||||
|
||||
it('should list projects running on an soon-to-be-deprecated Node.js version', async () => {
|
||||
jest.useFakeTimers().setSystemTime(new Date('2023-12-08'));
|
||||
|
||||
const user = useUser();
|
||||
useTeams('team_dummy');
|
||||
const project = useProject({
|
||||
...defaultProject,
|
||||
nodeVersion: '16.x',
|
||||
});
|
||||
|
||||
client.setArgv('project', 'ls', '--update-required');
|
||||
await projects(client);
|
||||
|
||||
const lines = createLineIterator(client.stderr);
|
||||
|
||||
let line = await lines.next();
|
||||
expect(line.value).toEqual(`Fetching projects in ${user.username}`);
|
||||
|
||||
line = await lines.next();
|
||||
expect(line.value).toEqual(
|
||||
'WARN! The following Node.js versions will be deprecated soon: 16.x. Please upgrade your projects immediately.'
|
||||
);
|
||||
line = await lines.next();
|
||||
expect(line.value).toEqual(
|
||||
'> For more information visit: https://vercel.com/docs/functions/serverless-functions/runtimes/node-js#node.js-version'
|
||||
);
|
||||
line = await lines.next();
|
||||
expect(line.value).toContain(user.username);
|
||||
|
||||
// empty line
|
||||
line = await lines.next();
|
||||
expect(line.value).toEqual('');
|
||||
|
||||
line = await lines.next();
|
||||
const header = parseSpacedTableRow(line.value!);
|
||||
expect(header).toEqual([
|
||||
'Project Name',
|
||||
'Latest Production URL',
|
||||
'Updated',
|
||||
]);
|
||||
|
||||
line = await lines.next();
|
||||
const data = parseSpacedTableRow(line.value!);
|
||||
data.pop();
|
||||
expect(data).toEqual([project.project.name, 'https://foobar.com']);
|
||||
|
||||
jest.clearAllTimers();
|
||||
});
|
||||
|
||||
it('should list projects when there is no production deployment', async () => {
|
||||
const user = useUser();
|
||||
useTeams('team_dummy');
|
||||
@@ -66,8 +111,7 @@ describe('project', () => {
|
||||
expect(line.value).toEqual(`Fetching projects in ${user.username}`);
|
||||
|
||||
line = await lines.next();
|
||||
const { org } = pluckIdentifiersFromDeploymentList(line.value!);
|
||||
expect(org).toEqual(user.username);
|
||||
expect(line.value).toContain(user.username);
|
||||
|
||||
// empty line
|
||||
line = await lines.next();
|
||||
|
||||
@@ -4,10 +4,19 @@ import { useTeams } from '../../../mocks/team';
|
||||
import { useUser } from '../../../mocks/user';
|
||||
|
||||
describe('selectOrg', () => {
|
||||
let user;
|
||||
let team;
|
||||
|
||||
beforeEach(() => {
|
||||
team = useTeams()[0];
|
||||
});
|
||||
|
||||
describe('non-northstar', () => {
|
||||
beforeEach(() => {
|
||||
user = useUser();
|
||||
});
|
||||
|
||||
it('should allow selecting user', async () => {
|
||||
const user = useUser();
|
||||
useTeams();
|
||||
const selectOrgPromise = selectOrg(client, 'Select the scope');
|
||||
await expect(client.stderr).toOutput(user.name);
|
||||
client.stdin.write('\r'); // Return key
|
||||
@@ -15,26 +24,71 @@ describe('selectOrg', () => {
|
||||
});
|
||||
|
||||
it('should allow selecting team', async () => {
|
||||
useUser();
|
||||
const team = useTeams()[0];
|
||||
const selectOrgPromise = selectOrg(client, 'Select the scope');
|
||||
await expect(client.stderr).toOutput('Select the scope');
|
||||
client.stdin.write('\x1B[B'); // Down arrow
|
||||
client.stdin.write('\r'); // Return key
|
||||
await expect(selectOrgPromise).resolves.toHaveProperty('id', team.id);
|
||||
});
|
||||
|
||||
it('automatically selects the correct scope when autoconfirm flag is passed', async () => {
|
||||
const selectOrgPromise = selectOrg(client, 'Select the scope', true);
|
||||
await expect(selectOrgPromise).resolves.toHaveProperty('id', user.id);
|
||||
});
|
||||
|
||||
describe('with a selected team scope', () => {
|
||||
beforeEach(() => {
|
||||
client.config.currentTeam = team.id;
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
delete client.config.currentTeam;
|
||||
});
|
||||
|
||||
it('should allow selecting user', async () => {
|
||||
const selectOrgPromise = selectOrg(client, 'Select the scope');
|
||||
await expect(client.stderr).toOutput(user.name);
|
||||
client.stdin.write('\r'); // Return key
|
||||
await expect(selectOrgPromise).resolves.toHaveProperty('id', team.id);
|
||||
});
|
||||
|
||||
it('should allow selecting team', async () => {
|
||||
const selectOrgPromise = selectOrg(client, 'Select the scope');
|
||||
await expect(client.stderr).toOutput('Select the scope');
|
||||
client.stdin.write('\x1B[B'); // Down arrow
|
||||
client.stdin.write('\r'); // Return key
|
||||
await expect(selectOrgPromise).resolves.toHaveProperty('id', user.id);
|
||||
});
|
||||
|
||||
it('automatically selects the correct scope when autoconfirm flag is passed', async () => {
|
||||
const selectOrgPromise = selectOrg(client, 'Select the scope', true);
|
||||
await expect(selectOrgPromise).resolves.toHaveProperty('id', team.id);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('northstar', () => {
|
||||
it('should not allow selecting user', async () => {
|
||||
const user = useUser({
|
||||
beforeEach(() => {
|
||||
user = useUser({
|
||||
version: 'northstar',
|
||||
});
|
||||
const team = useTeams()[0];
|
||||
client.config.currentTeam = team.id;
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
delete client.config.currentTeam;
|
||||
});
|
||||
|
||||
it('should not allow selecting user', async () => {
|
||||
const selectOrgPromise = selectOrg(client, 'Select the scope');
|
||||
await expect(client.stderr).not.toOutput(user.name);
|
||||
client.stdin.write('\r'); // Return key
|
||||
await expect(selectOrgPromise).resolves.toHaveProperty('id', team.id);
|
||||
});
|
||||
|
||||
it('automatically selects the correct scope when autoconfirm flag is passed', async () => {
|
||||
const selectOrgPromise = selectOrg(client, 'Select the scope', true);
|
||||
await expect(selectOrgPromise).resolves.toHaveProperty('id', team.id);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# @vercel/client
|
||||
|
||||
## 13.0.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`4d63d9e95`](https://github.com/vercel/vercel/commit/4d63d9e954549d811063d259250d1865b7de2ba1)]:
|
||||
- @vercel/build-utils@7.4.0
|
||||
|
||||
## 13.0.10
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`dfe47f6e6`](https://github.com/vercel/vercel/commit/dfe47f6e6c1d395ae24d802f4b7c98e39b9f90f4)]:
|
||||
- @vercel/build-utils@7.3.0
|
||||
|
||||
## 13.0.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/client",
|
||||
"version": "13.0.9",
|
||||
"version": "13.0.11",
|
||||
"main": "dist/index.js",
|
||||
"typings": "dist/index.d.ts",
|
||||
"homepage": "https://vercel.com",
|
||||
@@ -37,7 +37,7 @@
|
||||
"typescript": "4.9.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"@vercel/routing-utils": "3.1.0",
|
||||
"@zeit/fetch": "5.2.0",
|
||||
"async-retry": "1.2.3",
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @vercel/frameworks
|
||||
|
||||
## 2.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- This new screenshot matches the template. It removes the version number so this screenshot will not go stale. ([#10921](https://github.com/vercel/vercel/pull/10921))
|
||||
|
||||
## 2.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Update placeholder for Nuxt to be correct command. ([#10873](https://github.com/vercel/vercel/pull/10873))
|
||||
|
||||
## 2.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/frameworks",
|
||||
"version": "2.0.3",
|
||||
"version": "2.0.5",
|
||||
"main": "./dist/frameworks.js",
|
||||
"types": "./dist/frameworks.d.ts",
|
||||
"files": [
|
||||
|
||||
@@ -66,7 +66,7 @@ export const frameworks = [
|
||||
darkModeLogo:
|
||||
'https://api-frameworks.vercel.sh/framework-logos/next-dark.svg',
|
||||
screenshot:
|
||||
'https://assets.vercel.com/image/upload/v1673027027/front/import/nextjs.png',
|
||||
'https://assets.vercel.com/image/upload/v1701461207/front/import/nextjs.png',
|
||||
tagline:
|
||||
'Next.js makes you productive with React instantly — whether you want to build static or dynamic sites.',
|
||||
description: 'A Next.js app and a Serverless Function API.',
|
||||
@@ -1456,8 +1456,8 @@ export const frameworks = [
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `nuxt generate`',
|
||||
value: 'nuxt generate',
|
||||
placeholder: '`npm run build` or `nuxt build`',
|
||||
value: 'nuxt build',
|
||||
},
|
||||
devCommand: {
|
||||
value: 'nuxt',
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# @vercel/fs-detectors
|
||||
|
||||
## 5.1.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`e6aaf79d0`](https://github.com/vercel/vercel/commit/e6aaf79d04fafd032d9a28143b02d28766add415)]:
|
||||
- @vercel/frameworks@2.0.5
|
||||
|
||||
## 5.1.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`a8934da62`](https://github.com/vercel/vercel/commit/a8934da6232b66a98e9ce43ebf5342eac664d40d)]:
|
||||
- @vercel/frameworks@2.0.4
|
||||
|
||||
## 5.1.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/fs-detectors",
|
||||
"version": "5.1.3",
|
||||
"version": "5.1.5",
|
||||
"description": "Vercel filesystem detectors",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@vercel/error-utils": "2.0.2",
|
||||
"@vercel/frameworks": "2.0.3",
|
||||
"@vercel/frameworks": "2.0.5",
|
||||
"@vercel/routing-utils": "3.1.0",
|
||||
"glob": "8.0.3",
|
||||
"js-yaml": "4.1.0",
|
||||
@@ -37,7 +37,7 @@
|
||||
"@types/minimatch": "3.0.5",
|
||||
"@types/node": "14.18.33",
|
||||
"@types/semver": "7.3.10",
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"jest-junit": "16.0.0",
|
||||
"typescript": "4.9.5"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
# @vercel/gatsby-plugin-vercel-builder
|
||||
|
||||
## 2.0.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Add support for "rewrites" ([#10954](https://github.com/vercel/vercel/pull/10954))
|
||||
|
||||
- Updated dependencies [[`4d63d9e95`](https://github.com/vercel/vercel/commit/4d63d9e954549d811063d259250d1865b7de2ba1)]:
|
||||
- @vercel/build-utils@7.4.0
|
||||
|
||||
## 2.0.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`dfe47f6e6`](https://github.com/vercel/vercel/commit/dfe47f6e6c1d395ae24d802f4b7c98e39b9f90f4)]:
|
||||
- @vercel/build-utils@7.3.0
|
||||
|
||||
## 2.0.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/gatsby-plugin-vercel-builder",
|
||||
"version": "2.0.11",
|
||||
"version": "2.0.13",
|
||||
"main": "dist/index.js",
|
||||
"files": [
|
||||
"dist",
|
||||
@@ -20,7 +20,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@sinclair/typebox": "0.25.24",
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"@vercel/routing-utils": "3.1.0",
|
||||
"esbuild": "0.14.47",
|
||||
"etag": "1.8.1",
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
import { getTransformedRoutes } from '@vercel/routing-utils';
|
||||
import {
|
||||
getTransformedRoutes,
|
||||
type Redirect,
|
||||
type Rewrite,
|
||||
} from '@vercel/routing-utils';
|
||||
import { writeJson } from 'fs-extra';
|
||||
import { validateGatsbyState } from './schemas';
|
||||
import {
|
||||
@@ -31,7 +35,7 @@ export async function generateVercelBuildOutputAPI3Output({
|
||||
if (validateGatsbyState.Check(state)) {
|
||||
console.log('▲ Creating Vercel build output');
|
||||
|
||||
const { pages, redirects, functions, config: gatsbyConfig } = state;
|
||||
const { pages, functions, config: gatsbyConfig } = state;
|
||||
const { pathPrefix = '' } = gatsbyConfig;
|
||||
|
||||
const ssrRoutes = pages
|
||||
@@ -60,14 +64,36 @@ export async function generateVercelBuildOutputAPI3Output({
|
||||
trailingSlash = false;
|
||||
}
|
||||
|
||||
const routes =
|
||||
getTransformedRoutes({
|
||||
trailingSlash,
|
||||
redirects: redirects.map(({ fromPath, toPath, isPermanent }) => ({
|
||||
const redirects: Redirect[] = [];
|
||||
const rewrites: Rewrite[] = [];
|
||||
|
||||
for (const {
|
||||
fromPath,
|
||||
toPath,
|
||||
isPermanent,
|
||||
statusCode,
|
||||
} of state.redirects) {
|
||||
if (statusCode === 200) {
|
||||
// A `statusCode` of 200 on `createRedirect()` creates a rewrite (i.e. a reverse proxy)
|
||||
// https://www.gatsbyjs.com/docs/how-to/cloud/working-with-redirects-and-rewrites/#rewrites-and-reverse-proxies
|
||||
rewrites.push({
|
||||
source: fromPath,
|
||||
destination: toPath,
|
||||
});
|
||||
} else {
|
||||
redirects.push({
|
||||
source: fromPath,
|
||||
destination: toPath,
|
||||
permanent: isPermanent,
|
||||
})),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const routes =
|
||||
getTransformedRoutes({
|
||||
trailingSlash,
|
||||
redirects,
|
||||
rewrites,
|
||||
}).routes || [];
|
||||
|
||||
routes.push({
|
||||
|
||||
@@ -31,6 +31,7 @@ const GatsbyRedirectSchema = Type.Object({
|
||||
fromPath: Type.String(),
|
||||
toPath: Type.String(),
|
||||
isPermanent: Type.Optional(Type.Boolean()),
|
||||
statusCode: Type.Optional(Type.Number()),
|
||||
});
|
||||
export type GatsbyRedirect = Static<typeof GatsbyRedirectSchema>;
|
||||
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @vercel/go
|
||||
|
||||
## 3.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Set Lambda runtime to "provided.al2" ([#10880](https://github.com/vercel/vercel/pull/10880))
|
||||
|
||||
## 3.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/go",
|
||||
"version": "3.0.3",
|
||||
"version": "3.0.4",
|
||||
"license": "Apache-2.0",
|
||||
"main": "./dist/index",
|
||||
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/go",
|
||||
@@ -29,7 +29,7 @@
|
||||
"@types/node-fetch": "^2.3.0",
|
||||
"@types/tar": "6.1.5",
|
||||
"@types/yauzl-promise": "2.1.0",
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"async-retry": "1.3.3",
|
||||
"execa": "^1.0.0",
|
||||
"fs-extra": "^7.0.0",
|
||||
|
||||
@@ -50,7 +50,7 @@ export { shouldServe };
|
||||
// we need our `main.go` to be called something else
|
||||
const MAIN_GO_FILENAME = 'main__vc__go__.go';
|
||||
|
||||
const HANDLER_FILENAME = `handler${OUT_EXTENSION}`;
|
||||
const HANDLER_FILENAME = `bootstrap${OUT_EXTENSION}`;
|
||||
|
||||
interface PortInfo {
|
||||
port: number;
|
||||
@@ -249,10 +249,14 @@ export async function build({
|
||||
await buildHandlerWithGoMod(buildOptions);
|
||||
}
|
||||
|
||||
const runtime =
|
||||
process.env.VERCEL_USE_GO_PROVIDED_RUNTIME === '1'
|
||||
? 'provided.al2'
|
||||
: 'go1.x';
|
||||
const lambda = new Lambda({
|
||||
files: { ...(await glob('**', outDir)), ...includedFiles },
|
||||
handler: HANDLER_FILENAME,
|
||||
runtime: 'go1.x',
|
||||
runtime,
|
||||
supportsWrapper: true,
|
||||
environment: {},
|
||||
});
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"devDependencies": {
|
||||
"@types/jest": "27.5.1",
|
||||
"@types/node": "14.18.33",
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"execa": "3.2.0",
|
||||
"fs-extra": "11.1.0",
|
||||
"jest-junit": "16.0.0"
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
"@types/semver": "6.0.0",
|
||||
"@types/text-table": "0.2.1",
|
||||
"@types/webpack-sources": "3.2.0",
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"@vercel/routing-utils": "3.1.0",
|
||||
"async-sema": "3.0.1",
|
||||
"buffer-crc32": "0.2.13",
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
// should match /_next file after rewrite
|
||||
{
|
||||
"path": "/hidden/_next/__NEXT_SCRIPT__(/hello)",
|
||||
"mustContain": "createElement"
|
||||
"status": 200
|
||||
},
|
||||
// should allow redirecting to external resource
|
||||
{
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# @vercel/node
|
||||
|
||||
## 3.0.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`4d63d9e95`](https://github.com/vercel/vercel/commit/4d63d9e954549d811063d259250d1865b7de2ba1)]:
|
||||
- @vercel/build-utils@7.4.0
|
||||
|
||||
## 3.0.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`dfe47f6e6`](https://github.com/vercel/vercel/commit/dfe47f6e6c1d395ae24d802f4b7c98e39b9f90f4)]:
|
||||
- @vercel/build-utils@7.3.0
|
||||
|
||||
## 3.0.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/node",
|
||||
"version": "3.0.11",
|
||||
"version": "3.0.13",
|
||||
"license": "Apache-2.0",
|
||||
"main": "./dist/index",
|
||||
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/node-js",
|
||||
@@ -24,7 +24,7 @@
|
||||
"@edge-runtime/primitives": "4.0.5",
|
||||
"@edge-runtime/vm": "3.1.7",
|
||||
"@types/node": "14.18.33",
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"@vercel/error-utils": "2.0.2",
|
||||
"@vercel/nft": "0.24.2",
|
||||
"@vercel/static-config": "3.0.0",
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"@types/jest": "27.4.1",
|
||||
"@types/node": "14.18.33",
|
||||
"@types/which": "3.0.0",
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"execa": "^1.0.0",
|
||||
"fs-extra": "11.1.1",
|
||||
"jest-junit": "16.0.0",
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"@types/aws-lambda": "8.10.19",
|
||||
"@types/node": "14.18.33",
|
||||
"@types/semver": "6.0.0",
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"execa": "3.2.0",
|
||||
"fs-extra": "11.1.0",
|
||||
"jest-junit": "16.0.0"
|
||||
|
||||
@@ -1,5 +1,31 @@
|
||||
# @vercel/remix-builder
|
||||
|
||||
## 2.0.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Update `@remix-run/dev` fork to v2.4.0 ([#10943](https://github.com/vercel/vercel/pull/10943))
|
||||
|
||||
## 2.0.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Reinstall dependencies during `prepareCache()` ([#10922](https://github.com/vercel/vercel/pull/10922))
|
||||
|
||||
## 2.0.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Update `@remix-run/dev` fork to v2.3.1 ([#10908](https://github.com/vercel/vercel/pull/10908))
|
||||
|
||||
## 2.0.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Fix issue where `npm install` was not properly injecting forked compiler ([#10819](https://github.com/vercel/vercel/pull/10819))
|
||||
|
||||
- Simplify static directory resolution and apply `publicPath` to routes. ([#10685](https://github.com/vercel/vercel/pull/10685))
|
||||
|
||||
## 2.0.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/remix-builder",
|
||||
"version": "2.0.11",
|
||||
"version": "2.0.15",
|
||||
"license": "Apache-2.0",
|
||||
"main": "./dist/index.js",
|
||||
"homepage": "https://vercel.com/docs",
|
||||
@@ -26,11 +26,11 @@
|
||||
"ts-morph": "12.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@remix-run/dev": "npm:@vercel/remix-run-dev@2.2.0",
|
||||
"@remix-run/dev": "npm:@vercel/remix-run-dev@2.4.0",
|
||||
"@types/jest": "27.5.1",
|
||||
"@types/node": "14.18.33",
|
||||
"@types/semver": "7.3.13",
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"jest-junit": "16.0.0",
|
||||
"path-to-regexp": "6.2.1",
|
||||
"semver": "7.5.2"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Project } from 'ts-morph';
|
||||
import { readFileSync, promises as fs } from 'fs';
|
||||
import { basename, dirname, extname, join, relative, sep } from 'path';
|
||||
import { basename, dirname, extname, join, posix, relative, sep } from 'path';
|
||||
import {
|
||||
debug,
|
||||
download,
|
||||
@@ -13,6 +13,7 @@ import {
|
||||
glob,
|
||||
EdgeFunction,
|
||||
NodejsLambda,
|
||||
rename,
|
||||
runNpmInstall,
|
||||
runPackageJsonScript,
|
||||
scanParentDirs,
|
||||
@@ -40,7 +41,6 @@ import {
|
||||
ResolvedEdgeRouteConfig,
|
||||
findEntry,
|
||||
chdirAndReadConfig,
|
||||
addDependencies,
|
||||
resolveSemverMinMax,
|
||||
ensureResolvable,
|
||||
isESM,
|
||||
@@ -104,15 +104,17 @@ export const build: BuildV2 = async ({
|
||||
meta
|
||||
);
|
||||
|
||||
const { cliType, packageJsonPath, lockfileVersion } = await scanParentDirs(
|
||||
entrypointFsDirname
|
||||
);
|
||||
const { cliType, packageJsonPath, lockfileVersion, lockfilePath } =
|
||||
await scanParentDirs(entrypointFsDirname);
|
||||
|
||||
if (!packageJsonPath) {
|
||||
throw new Error('Failed to locate `package.json` file in your project');
|
||||
}
|
||||
|
||||
const pkgRaw = await fs.readFile(packageJsonPath, 'utf8');
|
||||
const [lockfileRaw, pkgRaw] = await Promise.all([
|
||||
lockfilePath ? fs.readFile(lockfilePath) : null,
|
||||
fs.readFile(packageJsonPath, 'utf8'),
|
||||
]);
|
||||
const pkg = JSON.parse(pkgRaw);
|
||||
|
||||
const spawnOpts = getSpawnOptions(meta, nodeVersion);
|
||||
@@ -166,7 +168,7 @@ export const build: BuildV2 = async ({
|
||||
const { serverEntryPoint, appDirectory } = remixConfig;
|
||||
const remixRoutes = Object.values(remixConfig.routes);
|
||||
|
||||
const depsToAdd: string[] = [];
|
||||
let depsModified = false;
|
||||
|
||||
const remixRunDevPkgVersion: string | undefined =
|
||||
pkg.dependencies?.['@remix-run/dev'] ||
|
||||
@@ -184,9 +186,15 @@ export const build: BuildV2 = async ({
|
||||
REMIX_RUN_DEV_MAX_VERSION,
|
||||
remixVersion
|
||||
);
|
||||
depsToAdd.push(
|
||||
`@remix-run/dev@npm:@vercel/remix-run-dev@${remixDevForkVersion}`
|
||||
);
|
||||
// Remove `@remix-run/dev`, add `@vercel/remix-run-dev`
|
||||
if (pkg.devDependencies['@remix-run/dev']) {
|
||||
delete pkg.devDependencies['@remix-run/dev'];
|
||||
pkg.devDependencies['@vercel/remix-run-dev'] = remixDevForkVersion;
|
||||
} else {
|
||||
delete pkg.dependencies['@remix-run/dev'];
|
||||
pkg.dependencies['@vercel/remix-run-dev'] = remixDevForkVersion;
|
||||
}
|
||||
depsModified = true;
|
||||
}
|
||||
|
||||
// `app/entry.server.tsx` and `app/entry.client.tsx` are optional in Remix,
|
||||
@@ -209,15 +217,34 @@ export const build: BuildV2 = async ({
|
||||
REMIX_RUN_DEV_MAX_VERSION,
|
||||
remixVersion
|
||||
);
|
||||
depsToAdd.push(`@vercel/remix@${vercelRemixVersion}`);
|
||||
pkg.dependencies['@vercel/remix'] = vercelRemixVersion;
|
||||
depsModified = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (depsToAdd.length) {
|
||||
await addDependencies(cliType, depsToAdd, {
|
||||
...spawnOpts,
|
||||
cwd: entrypointFsDirname,
|
||||
});
|
||||
if (depsModified) {
|
||||
await fs.writeFile(packageJsonPath, JSON.stringify(pkg, null, 2) + '\n');
|
||||
|
||||
// Bypass `--frozen-lockfile` enforcement by removing
|
||||
// env vars that are considered to be CI
|
||||
const nonCiEnv = { ...spawnOpts.env };
|
||||
delete nonCiEnv.CI;
|
||||
delete nonCiEnv.VERCEL;
|
||||
delete nonCiEnv.NOW_BUILDER;
|
||||
|
||||
// Purposefully not passing `meta` here to avoid
|
||||
// the optimization that prevents `npm install`
|
||||
// from running a second time
|
||||
await runNpmInstall(
|
||||
entrypointFsDirname,
|
||||
[],
|
||||
{
|
||||
...spawnOpts,
|
||||
env: nonCiEnv,
|
||||
},
|
||||
undefined,
|
||||
nodeVersion
|
||||
);
|
||||
}
|
||||
|
||||
const userEntryClientFile = findEntry(
|
||||
@@ -398,9 +425,7 @@ module.exports = config;`;
|
||||
cleanupOps.push(
|
||||
fs
|
||||
.rename(renamedRemixConfigPath, remixConfigPath)
|
||||
.then(() =>
|
||||
debug(`Restored original "${basename(remixConfigPath)}" file`)
|
||||
)
|
||||
.then(() => debug(`Restored original "${remixConfigPath}" file`))
|
||||
);
|
||||
}
|
||||
// Restore original server entrypoint if it was modified (for Hydrogen v2)
|
||||
@@ -408,11 +433,24 @@ module.exports = config;`;
|
||||
cleanupOps.push(
|
||||
fs
|
||||
.writeFile(serverEntryPointAbs, originalServerEntryPoint)
|
||||
.then(() =>
|
||||
debug(`Restored original "${basename(serverEntryPointAbs!)}" file`)
|
||||
)
|
||||
.then(() => debug(`Restored original "${serverEntryPointAbs}" file`))
|
||||
);
|
||||
}
|
||||
// Restore original `package.json` file and lockfile
|
||||
if (depsModified) {
|
||||
cleanupOps.push(
|
||||
fs
|
||||
.writeFile(packageJsonPath, pkgRaw)
|
||||
.then(() => debug(`Restored original "${packageJsonPath}" file`))
|
||||
);
|
||||
if (lockfilePath && lockfileRaw) {
|
||||
cleanupOps.push(
|
||||
fs
|
||||
.writeFile(lockfilePath, lockfileRaw)
|
||||
.then(() => debug(`Restored original "${lockfilePath}" file`))
|
||||
);
|
||||
}
|
||||
}
|
||||
await Promise.all(cleanupOps);
|
||||
}
|
||||
|
||||
@@ -428,16 +466,11 @@ module.exports = config;`;
|
||||
: null,
|
||||
]);
|
||||
|
||||
const staticDir = join(
|
||||
remixConfig.assetsBuildDirectory,
|
||||
...remixConfig.publicPath
|
||||
.replace(/^\/|\/$/g, '')
|
||||
.split('/')
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
.map(_ => '..')
|
||||
);
|
||||
const [staticFiles, ...functions] = await Promise.all([
|
||||
const staticDir = join(entrypointFsDirname, 'public');
|
||||
|
||||
const [staticFiles, buildAssets, ...functions] = await Promise.all([
|
||||
glob('**', staticDir),
|
||||
glob('**', remixConfig.assetsBuildDirectory),
|
||||
...serverBundles.map(bundle => {
|
||||
const firstRoute = remixConfig.routes[bundle.routes[0]];
|
||||
const config = resolvedConfigsMap.get(firstRoute) ?? {
|
||||
@@ -467,10 +500,17 @@ module.exports = config;`;
|
||||
}),
|
||||
]);
|
||||
|
||||
const output: BuildResultV2Typical['output'] = staticFiles;
|
||||
const transformedBuildAssets = rename(buildAssets, name => {
|
||||
return posix.join('./', remixConfig.publicPath, name);
|
||||
});
|
||||
|
||||
const output: BuildResultV2Typical['output'] = {
|
||||
...staticFiles,
|
||||
...transformedBuildAssets,
|
||||
};
|
||||
const routes: any[] = [
|
||||
{
|
||||
src: '^/build/(.*)$',
|
||||
src: `^/${remixConfig.publicPath.replace(/^\/|\/$/g, '')}/(.*)$`,
|
||||
headers: { 'cache-control': 'public, max-age=31536000, immutable' },
|
||||
continue: true,
|
||||
},
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
import { glob } from '@vercel/build-utils';
|
||||
import {
|
||||
getNodeVersion,
|
||||
getSpawnOptions,
|
||||
glob,
|
||||
runNpmInstall,
|
||||
} from '@vercel/build-utils';
|
||||
import { dirname, join, relative } from 'path';
|
||||
import { require_, chdirAndReadConfig } from './utils';
|
||||
import type { PrepareCache } from '@vercel/build-utils';
|
||||
@@ -7,10 +12,32 @@ export const prepareCache: PrepareCache = async ({
|
||||
entrypoint,
|
||||
repoRootPath,
|
||||
workPath,
|
||||
config,
|
||||
}) => {
|
||||
const root = repoRootPath || workPath;
|
||||
const mountpoint = dirname(entrypoint);
|
||||
const entrypointFsDirname = join(workPath, mountpoint);
|
||||
|
||||
// Because the `node_modules` directory was modified to install
|
||||
// the forked Remix compiler, re-install to the "fresh" dependencies
|
||||
// state before the cache gets created.
|
||||
const nodeVersion = await getNodeVersion(
|
||||
entrypointFsDirname,
|
||||
undefined,
|
||||
config
|
||||
);
|
||||
const spawnOpts = getSpawnOptions({}, nodeVersion);
|
||||
await runNpmInstall(
|
||||
entrypointFsDirname,
|
||||
[],
|
||||
{
|
||||
...spawnOpts,
|
||||
stdio: 'ignore',
|
||||
},
|
||||
undefined,
|
||||
nodeVersion
|
||||
);
|
||||
|
||||
const packageJsonPath = join(entrypointFsDirname, 'package.json');
|
||||
const remixRunDevPath = dirname(
|
||||
require_.resolve('@remix-run/dev/package.json', {
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import semver from 'semver';
|
||||
import { execSync } from 'child_process';
|
||||
import { existsSync, promises as fs } from 'fs';
|
||||
import { basename, dirname, join, relative, resolve, sep } from 'path';
|
||||
import { pathToRegexp, Key } from 'path-to-regexp';
|
||||
import { debug, spawnAsync } from '@vercel/build-utils';
|
||||
import { debug } from '@vercel/build-utils';
|
||||
import { walkParentDirs } from '@vercel/build-utils';
|
||||
import { createRequire } from 'module';
|
||||
import type {
|
||||
@@ -12,10 +11,6 @@ import type {
|
||||
} from '@remix-run/dev/dist/config/routes';
|
||||
import type { RemixConfig } from '@remix-run/dev/dist/config';
|
||||
import type { BaseFunctionConfig } from '@vercel/static-config';
|
||||
import type {
|
||||
CliType,
|
||||
SpawnOptionsExtended,
|
||||
} from '@vercel/build-utils/dist/fs/run-user-scripts';
|
||||
|
||||
export const require_ = createRequire(__filename);
|
||||
|
||||
@@ -260,65 +255,6 @@ export async function chdirAndReadConfig(
|
||||
return remixConfig;
|
||||
}
|
||||
|
||||
export interface AddDependenciesOptions extends SpawnOptionsExtended {
|
||||
saveDev?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs `npm i ${name}` / `pnpm i ${name}` / `yarn add ${name}`.
|
||||
*/
|
||||
export function addDependencies(
|
||||
cliType: CliType,
|
||||
names: string[],
|
||||
opts: AddDependenciesOptions = {}
|
||||
) {
|
||||
debug('Installing additional dependencies:');
|
||||
for (const name of names) {
|
||||
debug(` - ${name}`);
|
||||
}
|
||||
const args: string[] = [];
|
||||
|
||||
switch (cliType) {
|
||||
case 'npm':
|
||||
case 'pnpm':
|
||||
args.push('install');
|
||||
if (opts.saveDev) {
|
||||
args.push('--save-dev');
|
||||
}
|
||||
|
||||
// Don't fail if pnpm is being run at the workspace root
|
||||
if (cliType === 'pnpm' && opts.cwd) {
|
||||
if (existsSync(join(opts.cwd, 'pnpm-workspace.yaml'))) {
|
||||
args.push('--workspace-root');
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'bun':
|
||||
case 'yarn':
|
||||
args.push('add');
|
||||
if (opts.saveDev) {
|
||||
args.push('--dev');
|
||||
}
|
||||
if (cliType === 'yarn') {
|
||||
const yarnVersion = execSync('yarn -v', { encoding: 'utf8' }).trim();
|
||||
const isYarnV1 = semver.satisfies(yarnVersion, '1');
|
||||
if (isYarnV1) {
|
||||
// Ignoring workspace check is only needed on Yarn v1
|
||||
args.push('--ignore-workspace-root-check');
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default: {
|
||||
const n: never = cliType;
|
||||
throw new Error(`Unexpected package manager: ${n}`);
|
||||
}
|
||||
}
|
||||
|
||||
return spawnAsync(cliType, args.concat(names), opts);
|
||||
}
|
||||
|
||||
export function resolveSemverMinMax(
|
||||
min: string,
|
||||
max: string,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"probes": [
|
||||
{ "path": "/", "mustContain": "Welcome to Remix" },
|
||||
{ "path": "/edge", "mustContain": "Welcome to Remix@Edge" }
|
||||
{ "path": "/edge", "mustContain": "Welcome to Remix@Edge" },
|
||||
{ "path": "/remix.svg", "mustContain": "<svg" }
|
||||
]
|
||||
}
|
||||
|
||||
6
packages/remix/test/fixtures/12-remix-v2/public/remix.svg
vendored
Normal file
6
packages/remix/test/fixtures/12-remix-v2/public/remix.svg
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg viewBox="0 0 800 800" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M700 0H100C44.772 0 0 44.772 0 100v600c0 55.228 44.772 100 100 100h600c55.228 0 100-44.772 100-100V100C800 44.772 755.228 0 700 0Z" fill="#212121"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M587.947 527.768c4.254 54.65 4.254 80.268 4.254 108.232H465.756c0-6.091.109-11.663.219-17.313.342-17.564.699-35.88-2.147-72.868-3.761-54.152-27.08-66.185-69.957-66.185H195v-98.525h204.889c54.16 0 81.241-16.476 81.241-60.098 0-38.357-27.081-61.601-81.241-61.601H195V163h227.456C545.069 163 606 220.912 606 313.42c0 69.193-42.877 114.319-100.799 121.84 48.895 9.777 77.48 37.605 82.746 92.508Z" fill="#fff"/>
|
||||
<path d="M195 636v-73.447h133.697c22.332 0 27.181 16.563 27.181 26.441V636H195Z" fill="#fff"/>
|
||||
<path d="M194.5 636v.5h161.878v-47.506c0-5.006-1.226-11.734-5.315-17.224-4.108-5.515-11.059-9.717-22.366-9.717H194.5V636Z" stroke="#fff" stroke-opacity=".8"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 958 B |
6
packages/remix/test/fixtures/13-remix-v2-public-path/.gitignore
vendored
Normal file
6
packages/remix/test/fixtures/13-remix-v2-public-path/.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
node_modules
|
||||
site/.cache
|
||||
site/build
|
||||
site/asset-pub
|
||||
.env
|
||||
.vercel
|
||||
1
packages/remix/test/fixtures/13-remix-v2-public-path/common/private.txt
vendored
Normal file
1
packages/remix/test/fixtures/13-remix-v2-public-path/common/private.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
Hello World!
|
||||
1
packages/remix/test/fixtures/13-remix-v2-public-path/misc/private.txt
vendored
Normal file
1
packages/remix/test/fixtures/13-remix-v2-public-path/misc/private.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
This file is not public
|
||||
10
packages/remix/test/fixtures/13-remix-v2-public-path/probes.json
vendored
Normal file
10
packages/remix/test/fixtures/13-remix-v2-public-path/probes.json
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"probes": [
|
||||
{ "path": "/", "mustContain": "Welcome to Remix" },
|
||||
{ "path": "/edge", "mustContain": "Welcome to Remix@Edge" },
|
||||
{ "path": "/blog/foo", "mustContain": "Blog Page" },
|
||||
{ "path": "/hello.txt", "mustContain": "Hello World!" },
|
||||
{ "path": "/private.txt", "status": 404 },
|
||||
{ "path": "/common/private.txt", "status": 404 }
|
||||
]
|
||||
}
|
||||
33
packages/remix/test/fixtures/13-remix-v2-public-path/site/app/root.tsx
vendored
Normal file
33
packages/remix/test/fixtures/13-remix-v2-public-path/site/app/root.tsx
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
import { cssBundleHref } from "@remix-run/css-bundle";
|
||||
import type { LinksFunction } from "@vercel/remix";
|
||||
import {
|
||||
Links,
|
||||
LiveReload,
|
||||
Meta,
|
||||
Outlet,
|
||||
Scripts,
|
||||
ScrollRestoration,
|
||||
} from "@remix-run/react";
|
||||
|
||||
export const links: LinksFunction = () => [
|
||||
...(cssBundleHref ? [{ rel: "stylesheet", href: cssBundleHref }] : []),
|
||||
];
|
||||
|
||||
export default function App() {
|
||||
return (
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charSet="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<Meta />
|
||||
<Links />
|
||||
</head>
|
||||
<body>
|
||||
<Outlet />
|
||||
<ScrollRestoration />
|
||||
<Scripts />
|
||||
<LiveReload />
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
16
packages/remix/test/fixtures/13-remix-v2-public-path/site/app/routes/_index.tsx
vendored
Normal file
16
packages/remix/test/fixtures/13-remix-v2-public-path/site/app/routes/_index.tsx
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
import type { MetaFunction } from "@vercel/remix";
|
||||
|
||||
export const meta: MetaFunction = () => {
|
||||
return [
|
||||
{ title: "New Remix App" },
|
||||
{ name: "description", content: "Welcome to Remix!" },
|
||||
];
|
||||
};
|
||||
|
||||
export default function Index() {
|
||||
return (
|
||||
<div style={{ fontFamily: "system-ui, sans-serif", lineHeight: "1.8" }}>
|
||||
<h1>Welcome to Remix</h1>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
11
packages/remix/test/fixtures/13-remix-v2-public-path/site/app/routes/blog.$slug.tsx
vendored
Normal file
11
packages/remix/test/fixtures/13-remix-v2-public-path/site/app/routes/blog.$slug.tsx
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
import type { MetaFunction } from "@vercel/remix";
|
||||
|
||||
export const meta: MetaFunction = () => [{ title: "Blog Page | New Remix App" }];
|
||||
|
||||
export default function Blog() {
|
||||
return (
|
||||
<div style={{ fontFamily: "system-ui, sans-serif", lineHeight: "1.4" }}>
|
||||
<h1>Blog Page</h1>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
13
packages/remix/test/fixtures/13-remix-v2-public-path/site/app/routes/edge.tsx
vendored
Normal file
13
packages/remix/test/fixtures/13-remix-v2-public-path/site/app/routes/edge.tsx
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { MetaFunction } from "@vercel/remix";
|
||||
|
||||
export const config = { runtime: "edge" };
|
||||
|
||||
export const meta: MetaFunction = () => [{ title: "Remix@Edge | New Remix App" }];
|
||||
|
||||
export default function Edge() {
|
||||
return (
|
||||
<div style={{ fontFamily: "system-ui, sans-serif", lineHeight: "1.4" }}>
|
||||
<h1>Welcome to Remix@Edge</h1>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
13427
packages/remix/test/fixtures/13-remix-v2-public-path/site/package-lock.json
generated
vendored
Normal file
13427
packages/remix/test/fixtures/13-remix-v2-public-path/site/package-lock.json
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
31
packages/remix/test/fixtures/13-remix-v2-public-path/site/package.json
vendored
Normal file
31
packages/remix/test/fixtures/13-remix-v2-public-path/site/package.json
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "my-remix-app",
|
||||
"private": true,
|
||||
"sideEffects": false,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "remix build",
|
||||
"dev": "remix dev --manual",
|
||||
"start": "remix-serve ./build/index.js",
|
||||
"typecheck": "tsc"
|
||||
},
|
||||
"dependencies": {
|
||||
"@remix-run/css-bundle": "^2.2.0",
|
||||
"@remix-run/node": "^2.2.0",
|
||||
"@remix-run/react": "^2.2.0",
|
||||
"@remix-run/serve": "^2.2.0",
|
||||
"@vercel/remix": "^2.2.0",
|
||||
"isbot": "^3.7.1",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@remix-run/dev": "^2.2.0",
|
||||
"@types/react": "^18.2.37",
|
||||
"@types/react-dom": "^18.2.15",
|
||||
"typescript": "^5.2.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
}
|
||||
}
|
||||
BIN
packages/remix/test/fixtures/13-remix-v2-public-path/site/public/favicon.ico
vendored
Normal file
BIN
packages/remix/test/fixtures/13-remix-v2-public-path/site/public/favicon.ico
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
1
packages/remix/test/fixtures/13-remix-v2-public-path/site/public/hello.txt
vendored
Normal file
1
packages/remix/test/fixtures/13-remix-v2-public-path/site/public/hello.txt
vendored
Normal file
@@ -0,0 +1 @@
|
||||
Hello World!
|
||||
8
packages/remix/test/fixtures/13-remix-v2-public-path/site/remix.config.js
vendored
Normal file
8
packages/remix/test/fixtures/13-remix-v2-public-path/site/remix.config.js
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
/** @type {import('@remix-run/dev').AppConfig} */
|
||||
export default {
|
||||
ignoredRouteFiles: ["**/.*"],
|
||||
// appDirectory: "app",
|
||||
assetsBuildDirectory: "asset-pub",
|
||||
publicPath: "/common",
|
||||
// serverBuildPath: "build/index.js",
|
||||
};
|
||||
2
packages/remix/test/fixtures/13-remix-v2-public-path/site/remix.env.d.ts
vendored
Normal file
2
packages/remix/test/fixtures/13-remix-v2-public-path/site/remix.env.d.ts
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/// <reference types="@remix-run/dev" />
|
||||
/// <reference types="@vercel/remix" />
|
||||
22
packages/remix/test/fixtures/13-remix-v2-public-path/tsconfig.json
vendored
Normal file
22
packages/remix/test/fixtures/13-remix-v2-public-path/tsconfig.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"include": ["remix.env.d.ts", "**/*.ts", "**/*.tsx"],
|
||||
"compilerOptions": {
|
||||
"lib": ["DOM", "DOM.Iterable", "ES2022"],
|
||||
"isolatedModules": true,
|
||||
"esModuleInterop": true,
|
||||
"jsx": "react-jsx",
|
||||
"moduleResolution": "Bundler",
|
||||
"resolveJsonModule": true,
|
||||
"target": "ES2022",
|
||||
"strict": true,
|
||||
"allowJs": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"~/*": ["./app/*"]
|
||||
},
|
||||
|
||||
// Remix takes care of building everything in `remix build`.
|
||||
"noEmit": true
|
||||
}
|
||||
}
|
||||
7
packages/remix/test/fixtures/13-remix-v2-public-path/vercel.json
vendored
Normal file
7
packages/remix/test/fixtures/13-remix-v2-public-path/vercel.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"projectSettings": {
|
||||
"framework": "remix",
|
||||
"rootDirectory": "site",
|
||||
"sourceFilesOutsideRootDirectory": true
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,13 @@
|
||||
# @vercel/ruby
|
||||
|
||||
## 2.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Remove `VERCEL_ALLOW_RUBY32` env var check ([#10910](https://github.com/vercel/vercel/pull/10910))
|
||||
|
||||
- Use Ruby 3.2 in test fixtures ([#10909](https://github.com/vercel/vercel/pull/10909))
|
||||
|
||||
## 2.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@vercel/ruby",
|
||||
"author": "Nathan Cahill <nathan@nathancahill.com>",
|
||||
"version": "2.0.3",
|
||||
"version": "2.0.4",
|
||||
"license": "Apache-2.0",
|
||||
"main": "./dist/index",
|
||||
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/ruby",
|
||||
@@ -23,7 +23,7 @@
|
||||
"devDependencies": {
|
||||
"@types/fs-extra": "8.0.0",
|
||||
"@types/semver": "6.0.0",
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"execa": "2.0.4",
|
||||
"fs-extra": "^7.0.1",
|
||||
"jest-junit": "16.0.0",
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { EOL } from 'os';
|
||||
import { join, dirname, relative } from 'path';
|
||||
import execa from 'execa';
|
||||
import {
|
||||
@@ -83,6 +84,7 @@ async function bundleInstall(
|
||||
// which is needed for the `vc_init.rb` entrypoint file
|
||||
if (runtime === 'ruby3.2') {
|
||||
const result = await execa('bundler', ['add', 'webrick'], {
|
||||
cwd: dirname(gemfilePath),
|
||||
stdio: 'pipe',
|
||||
env: bundlerEnv,
|
||||
reject: false,
|
||||
@@ -123,11 +125,18 @@ export async function build({
|
||||
const entrypointFsDirname = join(workPath, dirname(entrypoint));
|
||||
const gemfileName = 'Gemfile';
|
||||
|
||||
const gemfilePath = await walkParentDirs({
|
||||
let gemfilePath = await walkParentDirs({
|
||||
base: workPath,
|
||||
start: entrypointFsDirname,
|
||||
filename: gemfileName,
|
||||
});
|
||||
|
||||
// Ensure a `Gemfile` exists so that webrick can be installed for Ruby 3.2
|
||||
if (!gemfilePath) {
|
||||
gemfilePath = join(entrypointFsDirname, gemfileName);
|
||||
await writeFile(gemfilePath, `source "https://rubygems.org"${EOL}`);
|
||||
}
|
||||
|
||||
const gemfileContents = gemfilePath
|
||||
? await readFile(gemfilePath, 'utf8')
|
||||
: '';
|
||||
|
||||
@@ -9,6 +9,7 @@ interface RubyVersion extends NodeVersion {
|
||||
|
||||
function getOptions() {
|
||||
const options = [
|
||||
{ major: 3, minor: 2, range: '3.2.x', runtime: 'ruby3.2' },
|
||||
{
|
||||
major: 2,
|
||||
minor: 7,
|
||||
@@ -24,12 +25,6 @@ function getOptions() {
|
||||
discontinueDate: new Date('2021-11-30'),
|
||||
},
|
||||
] as const;
|
||||
if (process.env.VERCEL_ALLOW_RUBY32 === '1') {
|
||||
return [
|
||||
{ major: 3, minor: 2, range: '3.2.x', runtime: 'ruby3.2' },
|
||||
...options,
|
||||
] as const;
|
||||
}
|
||||
return options;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
|
||||
source "https://rubygems.org"
|
||||
|
||||
ruby "~> 2.7.x"
|
||||
ruby "~> 3.2.x"
|
||||
|
||||
gem "cowsay", "~> 0.3.0"
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
|
||||
source "https://rubygems.org"
|
||||
|
||||
ruby "~> 2.7.x"
|
||||
ruby "~> 3.2.x"
|
||||
|
||||
gem "cowsay", "~> 0.3.0"
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
|
||||
source "https://rubygems.org"
|
||||
|
||||
ruby "~> 2.7.x"
|
||||
ruby "~> 3.2.x"
|
||||
|
||||
gem "cowsay", "~> 0.3.0"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
source "https://rubygems.org"
|
||||
|
||||
ruby "~> 2.7.0"
|
||||
ruby "~> 3.2.x"
|
||||
|
||||
gem "cowsay", "~> 0.3.0"
|
||||
|
||||
|
||||
@@ -2,16 +2,18 @@ GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
cowsay (0.3.0)
|
||||
mustermann (1.0.3)
|
||||
rack (2.0.7)
|
||||
rack-protection (2.0.5)
|
||||
mustermann (2.0.2)
|
||||
ruby2_keywords (~> 0.0.1)
|
||||
rack (2.2.8)
|
||||
rack-protection (2.2.4)
|
||||
rack
|
||||
sinatra (2.0.5)
|
||||
mustermann (~> 1.0)
|
||||
rack (~> 2.0)
|
||||
rack-protection (= 2.0.5)
|
||||
ruby2_keywords (0.0.5)
|
||||
sinatra (2.2.4)
|
||||
mustermann (~> 2.0)
|
||||
rack (~> 2.2)
|
||||
rack-protection (= 2.2.4)
|
||||
tilt (~> 2.0)
|
||||
tilt (2.0.9)
|
||||
tilt (2.3.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
2
packages/ruby/test/test.js
vendored
2
packages/ruby/test/test.js
vendored
@@ -12,7 +12,7 @@ const fixturesPath = path.resolve(__dirname, 'fixtures');
|
||||
const testsThatFailToBuild = new Map([
|
||||
[
|
||||
'11-version-2-5-error',
|
||||
'Found `Gemfile` with discontinued Ruby version: `ruby "~> 2.5.x".` Please set `ruby "~> 2.7.x"` in your `Gemfile` to use Ruby 2.7.x.',
|
||||
'Found `Gemfile` with discontinued Ruby version: `ruby "~> 2.5.x".` Please set `ruby "~> 3.2.x"` in your `Gemfile` to use Ruby 3.2.x.',
|
||||
],
|
||||
]);
|
||||
|
||||
|
||||
@@ -1,5 +1,25 @@
|
||||
# @vercel/static-build
|
||||
|
||||
## 2.0.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`652a31275`](https://github.com/vercel/vercel/commit/652a3127533974c426ea8e5b1047af1aecddb57e)]:
|
||||
- @vercel/gatsby-plugin-vercel-builder@2.0.13
|
||||
|
||||
## 2.0.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @vercel/gatsby-plugin-vercel-builder@2.0.12
|
||||
|
||||
## 2.0.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [tests] Update Gatsby fixture versions ([#10875](https://github.com/vercel/vercel/pull/10875))
|
||||
|
||||
## 2.0.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/static-build",
|
||||
"version": "2.0.12",
|
||||
"version": "2.0.15",
|
||||
"license": "Apache-2.0",
|
||||
"main": "./dist/index",
|
||||
"homepage": "https://vercel.com/docs/build-step",
|
||||
@@ -21,7 +21,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@vercel/gatsby-plugin-vercel-analytics": "1.0.11",
|
||||
"@vercel/gatsby-plugin-vercel-builder": "2.0.11",
|
||||
"@vercel/gatsby-plugin-vercel-builder": "2.0.13",
|
||||
"@vercel/static-config": "3.0.0",
|
||||
"ts-morph": "12.0.0"
|
||||
},
|
||||
@@ -35,10 +35,10 @@
|
||||
"@types/node-fetch": "2.5.4",
|
||||
"@types/promise-timeout": "1.3.0",
|
||||
"@types/semver": "7.3.13",
|
||||
"@vercel/build-utils": "7.2.5",
|
||||
"@vercel/build-utils": "7.4.0",
|
||||
"@vercel/error-utils": "2.0.2",
|
||||
"@vercel/frameworks": "2.0.3",
|
||||
"@vercel/fs-detectors": "5.1.3",
|
||||
"@vercel/frameworks": "2.0.5",
|
||||
"@vercel/fs-detectors": "5.1.5",
|
||||
"@vercel/routing-utils": "3.1.0",
|
||||
"execa": "3.2.0",
|
||||
"fs-extra": "10.0.0",
|
||||
|
||||
1420
packages/static-build/test/fixtures/astro-v3/package-lock.json
generated
vendored
1420
packages/static-build/test/fixtures/astro-v3/package-lock.json
generated
vendored
File diff suppressed because it is too large
Load Diff
@@ -10,6 +10,6 @@
|
||||
"astro": "astro"
|
||||
},
|
||||
"dependencies": {
|
||||
"astro": "^3.2.1"
|
||||
"astro": "^3.6.4"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
{
|
||||
/**
|
||||
Ember CLI sends analytics information by default. The data is completely
|
||||
anonymous, but there are times when you might want to disable this behavior.
|
||||
|
||||
Setting `disableAnalytics` to true will prevent any data from being sent.
|
||||
*/
|
||||
"disableAnalytics": false,
|
||||
|
||||
/**
|
||||
Setting `isTypeScriptProject` to true will force the blueprint generators to generate TypeScript
|
||||
rather than JavaScript by default, when a TypeScript version of a given blueprint is available.
|
||||
|
||||
@@ -22,7 +22,7 @@ jobs:
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
node-version: 18
|
||||
cache: npm
|
||||
- name: Install Dependencies
|
||||
run: npm ci
|
||||
@@ -39,7 +39,7 @@ jobs:
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
node-version: 18
|
||||
cache: npm
|
||||
- name: Install Dependencies
|
||||
run: npm ci
|
||||
|
||||
@@ -20,7 +20,7 @@ You will need the following things properly installed on your computer.
|
||||
|
||||
## Running / Development
|
||||
|
||||
* `ember serve`
|
||||
* `npm run start`
|
||||
* Visit your app at [http://localhost:4200](http://localhost:4200).
|
||||
* Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests).
|
||||
|
||||
@@ -30,8 +30,8 @@ Make use of the many generators for code, try `ember help generate` for more det
|
||||
|
||||
### Running Tests
|
||||
|
||||
* `ember test`
|
||||
* `ember test --server`
|
||||
* `npm run test`
|
||||
* `npm run test:ember -- --server`
|
||||
|
||||
### Linting
|
||||
|
||||
@@ -40,8 +40,8 @@ Make use of the many generators for code, try `ember help generate` for more det
|
||||
|
||||
### Building
|
||||
|
||||
* `ember build` (development)
|
||||
* `ember build --environment production` (production)
|
||||
* `npm exec ember build` (development)
|
||||
* `npm run build` (production)
|
||||
|
||||
### Deploying
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"packages": [
|
||||
{
|
||||
"name": "ember-cli",
|
||||
"version": "5.3.0",
|
||||
"version": "5.5.0",
|
||||
"blueprints": [
|
||||
{
|
||||
"name": "app",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user