mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-24 11:49:13 +00:00
Compare commits
23 Commits
@vercel/fr
...
@vercel/ne
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a63b9d960b | ||
|
|
3cefbb19fe | ||
|
|
f43894ef4e | ||
|
|
2081f10b22 | ||
|
|
b52df7a533 | ||
|
|
ec89436417 | ||
|
|
993a404311 | ||
|
|
3e7bcb2073 | ||
|
|
ed119d6a33 | ||
|
|
2aeddde7d5 | ||
|
|
a8eab6beb7 | ||
|
|
031c182896 | ||
|
|
38eb0bca04 | ||
|
|
732ac2072c | ||
|
|
64d9cef963 | ||
|
|
6b9e274bc7 | ||
|
|
a2da071755 | ||
|
|
14ece4111a | ||
|
|
e302631ded | ||
|
|
43a57a3a60 | ||
|
|
136077ab6f | ||
|
|
8634f9cd7e | ||
|
|
dc8523998c |
8
.github/workflows/publish.yml
vendored
8
.github/workflows/publish.yml
vendored
@@ -65,3 +65,11 @@ jobs:
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN_ELEVATED }}
|
||||
GA_TRACKING_ID: ${{ secrets.GA_TRACKING_ID }}
|
||||
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
|
||||
- name: Trigger Update
|
||||
if: ${{ steps.check-release.outputs.IS_RELEASE == 'true' }}
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
github-token: ${{ secrets.GH_TOKEN_PULL_REQUESTS }}
|
||||
script: |
|
||||
const script = require('./utils/trigger-update-workflow.js')
|
||||
await script({ github, context })
|
||||
|
||||
8
.github/workflows/test.yml
vendored
8
.github/workflows/test.yml
vendored
@@ -76,6 +76,10 @@ jobs:
|
||||
|
||||
- run: pnpm install
|
||||
|
||||
- name: fetch ssl certificate before build (linux, os x)
|
||||
if: matrix.runner != 'windows-latest'
|
||||
run: echo | openssl s_client -showcerts -servername 'api.vercel.com' -connect 76.76.21.21:443
|
||||
|
||||
- name: Build ${{matrix.packageName}} and all its dependencies
|
||||
run: node utils/gen.js && node_modules/.bin/turbo run build --cache-dir=".turbo" --scope=${{matrix.packageName}} --include-dependencies --no-deps
|
||||
env:
|
||||
@@ -89,6 +93,10 @@ jobs:
|
||||
VERCEL_TEST_REGISTRATION_URL: ${{ secrets.VERCEL_TEST_REGISTRATION_URL }}
|
||||
FORCE_COLOR: '1'
|
||||
|
||||
- name: fetch ssl certificate after tests (linux, os x)
|
||||
if: matrix.runner != 'windows-latest'
|
||||
run: echo | openssl s_client -showcerts -servername 'api.vercel.com' -connect 76.76.21.21:443
|
||||
|
||||
conclusion:
|
||||
needs:
|
||||
- test
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
# Astro
|
||||
|
||||
This directory is a brief example of an [Astro](https://astro.build/) site that can be deployed to Vercel with zero configuration.
|
||||
This directory is a brief example of an [Astro](https://astro.build/) site that can be deployed to Vercel with zero configuration. This demo showcases:
|
||||
|
||||
- `/` - A static page (pre-rendered)
|
||||
- `/ssr` - A page that uses server-side rendering (through Vercel Edge Functions)
|
||||
- `/ssr-with-swr-caching` - Similar to the previous page, but also caches the response on the Vercel Edge Network using `cache-control` headers
|
||||
- `/edge.json` - An Astro API Endpoint that returns JSON data using Vercel Edge Functions
|
||||
|
||||
Learn more about [Astro on Vercel](https://vercel.com/docs/frameworks/astro).
|
||||
|
||||
## Deploy Your Own
|
||||
|
||||
@@ -12,21 +19,7 @@ _Live Example: https://astro-template.vercel.app_
|
||||
|
||||
## Project Structure
|
||||
|
||||
Inside of your Astro project, you'll see the following folders and files:
|
||||
|
||||
```
|
||||
/
|
||||
├── public/
|
||||
│ └── favicon.ico
|
||||
├── src/
|
||||
│ ├── components/
|
||||
│ │ └── Layout.astro
|
||||
│ └── pages/
|
||||
│ └── index.astro
|
||||
└── package.json
|
||||
```
|
||||
|
||||
Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
|
||||
Astro looks for `.astro`, `.md`, or `.js` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
|
||||
|
||||
There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components or layouts.
|
||||
|
||||
@@ -42,5 +35,6 @@ All commands are run from the root of the project, from a terminal:
|
||||
| `pnpm run dev` | Starts local dev server at `localhost:3000` |
|
||||
| `pnpm run build` | Build your production site to `./dist/` |
|
||||
| `pnpm run preview` | Preview your build locally, before deploying |
|
||||
| `pnpm run start` | Starts a production dev server at `localhost:3000` |
|
||||
| `pnpm run astro ...` | Run CLI commands like `astro add`, `astro preview` |
|
||||
| `pnpm run astro --help` | Get help using the Astro CLI |
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
import { defineConfig } from 'astro/config';
|
||||
import vercel from '@astrojs/vercel/edge';
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({});
|
||||
export default defineConfig({
|
||||
output: 'server',
|
||||
adapter: vercel(),
|
||||
});
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
"preview": "astro preview",
|
||||
"astro": "astro"
|
||||
},
|
||||
"devDependencies": {
|
||||
"astro": "^2.0.6",
|
||||
"web-vitals": "^3.1.1"
|
||||
"dependencies": {
|
||||
"@astrojs/vercel": "3.2.2",
|
||||
"astro": "^2.2.1",
|
||||
"react": "18.2.0",
|
||||
"web-vitals": "^3.3.1"
|
||||
}
|
||||
}
|
||||
|
||||
2953
examples/astro/pnpm-lock.yaml
generated
2953
examples/astro/pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
9
examples/astro/src/pages/edge.json.js
Normal file
9
examples/astro/src/pages/edge.json.js
Normal file
@@ -0,0 +1,9 @@
|
||||
export async function get() {
|
||||
return new Response(JSON.stringify({ time: new Date() }), {
|
||||
status: 200,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Cache-Control': 's-maxage=10, stale-while-revalidate',
|
||||
},
|
||||
});
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
---
|
||||
import Layout from '../layouts/Layout.astro';
|
||||
import Card from '../components/Card.astro';
|
||||
|
||||
export const prerender = true;
|
||||
---
|
||||
|
||||
<Layout title="Welcome to Astro.">
|
||||
|
||||
7
examples/astro/src/pages/ssr-with-swr-caching.astro
Normal file
7
examples/astro/src/pages/ssr-with-swr-caching.astro
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
Astro.response.headers.set('Cache-Control', 's-maxage=10, stale-while-revalidate');
|
||||
|
||||
const time = new Date().toLocaleTimeString();
|
||||
---
|
||||
|
||||
<h1>{time}</h1>
|
||||
5
examples/astro/src/pages/ssr.astro
Normal file
5
examples/astro/src/pages/ssr.astro
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
const time = new Date().toLocaleTimeString();
|
||||
---
|
||||
|
||||
<h1>{time}</h1>
|
||||
@@ -6,17 +6,17 @@
|
||||
"dev": "remix dev"
|
||||
},
|
||||
"dependencies": {
|
||||
"@remix-run/node": "^1.14.3",
|
||||
"@remix-run/react": "^1.14.3",
|
||||
"@remix-run/serve": "^1.14.3",
|
||||
"@remix-run/node": "^1.15.0",
|
||||
"@remix-run/react": "^1.15.0",
|
||||
"@remix-run/serve": "^1.15.0",
|
||||
"@vercel/analytics": "^0.1.11",
|
||||
"@vercel/remix": "1.14.3-patch.1",
|
||||
"@vercel/remix": "^1.15.0",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@remix-run/dev": "^1.14.3",
|
||||
"@remix-run/eslint-config": "^1.14.3",
|
||||
"@remix-run/dev": "^1.15.0",
|
||||
"@remix-run/eslint-config": "^1.15.0",
|
||||
"@types/react": "^18.0.25",
|
||||
"@types/react-dom": "^18.0.11",
|
||||
"eslint": "^8.28.0",
|
||||
|
||||
440
examples/remix/pnpm-lock.yaml
generated
440
examples/remix/pnpm-lock.yaml
generated
@@ -4,30 +4,30 @@ importers:
|
||||
|
||||
.:
|
||||
specifiers:
|
||||
'@remix-run/dev': ^1.14.3
|
||||
'@remix-run/eslint-config': ^1.14.3
|
||||
'@remix-run/node': ^1.14.3
|
||||
'@remix-run/react': ^1.14.3
|
||||
'@remix-run/serve': ^1.14.3
|
||||
'@remix-run/dev': ^1.15.0
|
||||
'@remix-run/eslint-config': ^1.15.0
|
||||
'@remix-run/node': ^1.15.0
|
||||
'@remix-run/react': ^1.15.0
|
||||
'@remix-run/serve': ^1.15.0
|
||||
'@types/react': ^18.0.25
|
||||
'@types/react-dom': ^18.0.11
|
||||
'@vercel/analytics': ^0.1.11
|
||||
'@vercel/remix': 1.14.3-patch.1
|
||||
'@vercel/remix': ^1.15.0
|
||||
eslint: ^8.28.0
|
||||
react: ^18.2.0
|
||||
react-dom: ^18.2.0
|
||||
typescript: ^4.9.3
|
||||
dependencies:
|
||||
'@remix-run/node': 1.14.3
|
||||
'@remix-run/react': 1.14.3_biqbaboplfbrettd7655fr4n2y
|
||||
'@remix-run/serve': 1.14.3
|
||||
'@remix-run/node': 1.15.0
|
||||
'@remix-run/react': 1.15.0_biqbaboplfbrettd7655fr4n2y
|
||||
'@remix-run/serve': 1.15.0
|
||||
'@vercel/analytics': 0.1.11_react@18.2.0
|
||||
'@vercel/remix': 1.14.3-patch.1_biqbaboplfbrettd7655fr4n2y
|
||||
'@vercel/remix': 1.15.0_biqbaboplfbrettd7655fr4n2y
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0_react@18.2.0
|
||||
devDependencies:
|
||||
'@remix-run/dev': 1.14.3_@remix-run+serve@1.14.3
|
||||
'@remix-run/eslint-config': 1.14.3_km5ddj7uwb23cqeymeyvzjsfb4
|
||||
'@remix-run/dev': 1.15.0_@remix-run+serve@1.15.0
|
||||
'@remix-run/eslint-config': 1.15.0_km5ddj7uwb23cqeymeyvzjsfb4
|
||||
'@types/react': 18.0.28
|
||||
'@types/react-dom': 18.0.11
|
||||
eslint: 8.34.0
|
||||
@@ -1333,6 +1333,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/android-arm/0.17.6:
|
||||
resolution: {integrity: sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/android-arm64/0.16.3:
|
||||
resolution: {integrity: sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1342,6 +1351,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/android-arm64/0.17.6:
|
||||
resolution: {integrity: sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/android-x64/0.16.3:
|
||||
resolution: {integrity: sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1351,6 +1369,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/android-x64/0.17.6:
|
||||
resolution: {integrity: sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/darwin-arm64/0.16.3:
|
||||
resolution: {integrity: sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1360,6 +1387,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/darwin-arm64/0.17.6:
|
||||
resolution: {integrity: sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/darwin-x64/0.16.3:
|
||||
resolution: {integrity: sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1369,6 +1405,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/darwin-x64/0.17.6:
|
||||
resolution: {integrity: sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/freebsd-arm64/0.16.3:
|
||||
resolution: {integrity: sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1378,6 +1423,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/freebsd-arm64/0.17.6:
|
||||
resolution: {integrity: sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/freebsd-x64/0.16.3:
|
||||
resolution: {integrity: sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1387,6 +1441,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/freebsd-x64/0.17.6:
|
||||
resolution: {integrity: sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-arm/0.16.3:
|
||||
resolution: {integrity: sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1396,6 +1459,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-arm/0.17.6:
|
||||
resolution: {integrity: sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-arm64/0.16.3:
|
||||
resolution: {integrity: sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1405,6 +1477,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-arm64/0.17.6:
|
||||
resolution: {integrity: sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-ia32/0.16.3:
|
||||
resolution: {integrity: sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1414,6 +1495,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-ia32/0.17.6:
|
||||
resolution: {integrity: sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ia32]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-loong64/0.16.3:
|
||||
resolution: {integrity: sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1423,6 +1513,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-loong64/0.17.6:
|
||||
resolution: {integrity: sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-mips64el/0.16.3:
|
||||
resolution: {integrity: sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1432,6 +1531,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-mips64el/0.17.6:
|
||||
resolution: {integrity: sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [mips64el]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-ppc64/0.16.3:
|
||||
resolution: {integrity: sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1441,6 +1549,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-ppc64/0.17.6:
|
||||
resolution: {integrity: sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-riscv64/0.16.3:
|
||||
resolution: {integrity: sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1450,6 +1567,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-riscv64/0.17.6:
|
||||
resolution: {integrity: sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-s390x/0.16.3:
|
||||
resolution: {integrity: sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1459,6 +1585,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-s390x/0.17.6:
|
||||
resolution: {integrity: sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-x64/0.16.3:
|
||||
resolution: {integrity: sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1468,6 +1603,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/linux-x64/0.17.6:
|
||||
resolution: {integrity: sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/netbsd-x64/0.16.3:
|
||||
resolution: {integrity: sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1477,6 +1621,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/netbsd-x64/0.17.6:
|
||||
resolution: {integrity: sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [netbsd]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/openbsd-x64/0.16.3:
|
||||
resolution: {integrity: sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1486,6 +1639,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/openbsd-x64/0.17.6:
|
||||
resolution: {integrity: sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [openbsd]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/sunos-x64/0.16.3:
|
||||
resolution: {integrity: sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1495,6 +1657,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/sunos-x64/0.17.6:
|
||||
resolution: {integrity: sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [sunos]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/win32-arm64/0.16.3:
|
||||
resolution: {integrity: sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1504,6 +1675,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/win32-arm64/0.17.6:
|
||||
resolution: {integrity: sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/win32-ia32/0.16.3:
|
||||
resolution: {integrity: sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1513,6 +1693,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/win32-ia32/0.17.6:
|
||||
resolution: {integrity: sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/win32-x64/0.16.3:
|
||||
resolution: {integrity: sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1522,6 +1711,15 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@esbuild/win32-x64/0.17.6:
|
||||
resolution: {integrity: sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@eslint/eslintrc/1.4.1:
|
||||
resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
@@ -1663,12 +1861,12 @@ packages:
|
||||
tslib: 2.5.0
|
||||
dev: true
|
||||
|
||||
/@remix-run/dev/1.14.3_@remix-run+serve@1.14.3:
|
||||
resolution: {integrity: sha512-46mmwiA/k9YDkg0UrP90UB3azVVWRXw16NLHRSbZiaaYe8XgUkddEtBnH/nBp/IrVCtzUL3LObplUe5sFk5Z9Q==}
|
||||
/@remix-run/dev/1.15.0_@remix-run+serve@1.15.0:
|
||||
resolution: {integrity: sha512-BsE1GN6WM9PhN+agZi4TqUIuYzoHYZrufEdXLg3ZEYxWXqvtRKUNfhsYSDlEhrW+D5fyVQhJrs61wQ83sEXHLQ==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
'@remix-run/serve': ^1.14.3
|
||||
'@remix-run/serve': ^1.15.0
|
||||
peerDependenciesMeta:
|
||||
'@remix-run/serve':
|
||||
optional: true
|
||||
@@ -1684,9 +1882,9 @@ packages:
|
||||
'@babel/types': 7.20.7
|
||||
'@esbuild-plugins/node-modules-polyfill': 0.1.4_esbuild@0.16.3
|
||||
'@npmcli/package-json': 2.0.0
|
||||
'@remix-run/serve': 1.14.3
|
||||
'@remix-run/server-runtime': 1.14.3
|
||||
'@vanilla-extract/integration': 6.1.0
|
||||
'@remix-run/serve': 1.15.0
|
||||
'@remix-run/server-runtime': 1.15.0
|
||||
'@vanilla-extract/integration': 6.2.1
|
||||
arg: 5.0.2
|
||||
cacache: 15.3.0
|
||||
chalk: 4.1.2
|
||||
@@ -1699,6 +1897,7 @@ packages:
|
||||
fast-glob: 3.2.11
|
||||
fs-extra: 10.1.0
|
||||
get-port: 5.1.1
|
||||
glob-to-regexp: 0.4.1
|
||||
gunzip-maybe: 1.4.2
|
||||
inquirer: 8.2.5
|
||||
jsesc: 3.0.2
|
||||
@@ -1727,21 +1926,27 @@ packages:
|
||||
ws: 7.5.9
|
||||
xdm: 2.1.0
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- bluebird
|
||||
- bufferutil
|
||||
- encoding
|
||||
- less
|
||||
- sass
|
||||
- stylus
|
||||
- sugarss
|
||||
- supports-color
|
||||
- terser
|
||||
- ts-node
|
||||
- utf-8-validate
|
||||
dev: true
|
||||
|
||||
/@remix-run/eslint-config/1.14.3_km5ddj7uwb23cqeymeyvzjsfb4:
|
||||
resolution: {integrity: sha512-Yy4PYSvAehj31LmkDA+lS5yCPL1lR9O04gMIo0xwHT2o59pF4QU54lEAvJJH+9MI0byZUI/v9DoGz1oGIb44IA==}
|
||||
/@remix-run/eslint-config/1.15.0_km5ddj7uwb23cqeymeyvzjsfb4:
|
||||
resolution: {integrity: sha512-nwCPK/4anLMDWJnBsrWL9Wfcy2eRDlKjGWZeYeozDpJnH9iG1vA5aow0OmcpblwgvAwcgSC8Gdb7P5uK4Xy5/Q==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.0.0
|
||||
react: ^17.0.0 || ^18.0.0
|
||||
typescript: ^4.0.0
|
||||
typescript: ^4.0.0 || ^5.0.0
|
||||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
@@ -1771,20 +1976,20 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@remix-run/express/1.14.3_express@4.18.2:
|
||||
resolution: {integrity: sha512-v3TT+zBFSnOiVTHNiLp5A783UVYyZYbePxmPhvoe9JwHCmzVDA9mfyxYgDl/8NPDtYS+dAPU7mQ+aE1M5MXc7g==}
|
||||
/@remix-run/express/1.15.0_express@4.18.2:
|
||||
resolution: {integrity: sha512-mvDZB03W6NqbtyVpeiJfmGQY1L7CX+KEfSIV/kNgyK+gAMAWhsioC/Vjlo4IFY3NvOD0rh9mxuC+/IPT6Al3uw==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
express: ^4.17.1
|
||||
dependencies:
|
||||
'@remix-run/node': 1.14.3
|
||||
'@remix-run/node': 1.15.0
|
||||
express: 4.18.2
|
||||
|
||||
/@remix-run/node/1.14.3:
|
||||
resolution: {integrity: sha512-Mq0wUtgJtGwMQEBr/8p9XpdPBm7N+lby5CEbW6IKV59UC9N3VMGY3snfrsphBCq3sNZfbhIpaDdu2W+8EoqfnQ==}
|
||||
/@remix-run/node/1.15.0:
|
||||
resolution: {integrity: sha512-CS0p8T6A2KvMoAW5zzLA/BtNNCsv34A5RJoouJvXK9/o6MriAQ/YSugg6ldS5mec49neSep+CGeL1RS6tL+3NQ==}
|
||||
engines: {node: '>=14'}
|
||||
dependencies:
|
||||
'@remix-run/server-runtime': 1.14.3
|
||||
'@remix-run/server-runtime': 1.15.0
|
||||
'@remix-run/web-fetch': 4.3.2
|
||||
'@remix-run/web-file': 3.0.2
|
||||
'@remix-run/web-stream': 1.0.3
|
||||
@@ -1794,41 +1999,41 @@ packages:
|
||||
source-map-support: 0.5.21
|
||||
stream-slice: 0.1.2
|
||||
|
||||
/@remix-run/react/1.14.3_biqbaboplfbrettd7655fr4n2y:
|
||||
resolution: {integrity: sha512-dvwIx+9ZdE/9LHe8Rjos9gEOdQFLvC0dojCnKlsUIwfGhyjKE4wOHfqS9mZcmKFCvOFDakcZDallLNGaj0mEYg==}
|
||||
/@remix-run/react/1.15.0_biqbaboplfbrettd7655fr4n2y:
|
||||
resolution: {integrity: sha512-S0RuIeHvQTqryCZ3KVl8EsIWCqL6/ky1/kmDpN2n5Pdjew2BLC6DX7OdrY1ZQjbzOMHAROsZlyaSSVXCItunag==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
react: '>=16.8'
|
||||
react-dom: '>=16.8'
|
||||
dependencies:
|
||||
'@remix-run/router': 1.3.3
|
||||
'@remix-run/router': 1.5.0
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0_react@18.2.0
|
||||
react-router-dom: 6.8.2_biqbaboplfbrettd7655fr4n2y
|
||||
react-router-dom: 6.10.0_biqbaboplfbrettd7655fr4n2y
|
||||
use-sync-external-store: 1.2.0_react@18.2.0
|
||||
dev: false
|
||||
|
||||
/@remix-run/router/1.3.3:
|
||||
resolution: {integrity: sha512-YRHie1yQEj0kqqCTCJEfHqYSSNlZQ696QJG+MMiW4mxSl9I0ojz/eRhJS4fs88Z5i6D1SmoF9d3K99/QOhI8/w==}
|
||||
/@remix-run/router/1.5.0:
|
||||
resolution: {integrity: sha512-bkUDCp8o1MvFO+qxkODcbhSqRa6P2GXgrGZVpt0dCXNW2HCSCqYI0ZoAqEOSAjRWmmlKcYgFvN4B4S+zo/f8kg==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
/@remix-run/serve/1.14.3:
|
||||
resolution: {integrity: sha512-5So5+PtAaYZq3hc45snkCKIOh51Z45WvhHpRgB0ZsOuhUf6p9UAY9LQk7GRNvkcqL9LChE3LQ9O4gPqnUiZgpA==}
|
||||
/@remix-run/serve/1.15.0:
|
||||
resolution: {integrity: sha512-j06vKhxtLSR3JpkcoBMPb1EeM6QrbbuTdDh4m0eY/D4QgUzba4ws6r3OzEGc5FMe5xSULO0YVd2QWlyqBlMIWQ==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@remix-run/express': 1.14.3_express@4.18.2
|
||||
'@remix-run/express': 1.15.0_express@4.18.2
|
||||
compression: 1.7.4
|
||||
express: 4.18.2
|
||||
morgan: 1.10.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
/@remix-run/server-runtime/1.14.3:
|
||||
resolution: {integrity: sha512-qh8sxfLj/XW1u6rluN7yIgbvMCoKrVacYGUiPM7g0VHk8h8MlZGAIUfsWM45Poxo3X0uLhNuqqxMaPWldKawIQ==}
|
||||
/@remix-run/server-runtime/1.15.0:
|
||||
resolution: {integrity: sha512-DL9xjHfYYrEcOq5VbhYtrjJUWo/nFQAT7Y+Np/oC55HokyU6cb2jGhl52nx96aAxKwaFCse5N90GeodFsRzX7w==}
|
||||
engines: {node: '>=14'}
|
||||
dependencies:
|
||||
'@remix-run/router': 1.3.3
|
||||
'@remix-run/router': 1.5.0
|
||||
'@types/cookie': 0.4.1
|
||||
'@types/react': 18.0.28
|
||||
'@web3-storage/multipart-parser': 1.0.0
|
||||
@@ -2172,16 +2377,16 @@ packages:
|
||||
eslint-visitor-keys: 3.3.0
|
||||
dev: true
|
||||
|
||||
/@vanilla-extract/babel-plugin-debug-ids/1.0.1:
|
||||
resolution: {integrity: sha512-ynyKqsJiMzM1/yiIJ6QdqpWKlK4IMJJWREpPtaemZrE1xG1B4E/Nfa6YazuDWjDkCJC1tRIpEGnVs+pMIjUxyw==}
|
||||
/@vanilla-extract/babel-plugin-debug-ids/1.0.2:
|
||||
resolution: {integrity: sha512-LjnbQWGeMwaydmovx8jWUR8BxLtLiPyq0xz5C8G5OvFhsuJxvavLdrBHNNizvr1dq7/3qZGlPv0znsvU4P44YA==}
|
||||
dependencies:
|
||||
'@babel/core': 7.20.12
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@vanilla-extract/css/1.9.5:
|
||||
resolution: {integrity: sha512-aVSv6q24zelKRtWx/l9yshU3gD1uCDMZ2ZGcIiYnAcPfyLryrG/1X5DxtyiPKcyI/hZWoteHofsN//2q9MvzOA==}
|
||||
/@vanilla-extract/css/1.11.0:
|
||||
resolution: {integrity: sha512-uohj+8cGWbnrVzTfrjlJeXqdGjH3d3TcscdQxKe3h5bb5QQXTpPSq+c+SeWADIGiZybzcW0CBvZV8jsy1ywY9w==}
|
||||
dependencies:
|
||||
'@emotion/hash': 0.9.0
|
||||
'@vanilla-extract/private': 1.0.3
|
||||
@@ -2196,22 +2401,30 @@ packages:
|
||||
outdent: 0.8.0
|
||||
dev: true
|
||||
|
||||
/@vanilla-extract/integration/6.1.0:
|
||||
resolution: {integrity: sha512-7gDkOibk/DraG35ZpiAYqWd33wLA6YRnieC5vw7ItoFEzCv9bUaS9c+ZyktyWW3nRnL+e7Pc6FS6l7MKgEsX1w==}
|
||||
/@vanilla-extract/integration/6.2.1:
|
||||
resolution: {integrity: sha512-+xYJz07G7TFAMZGrOqArOsURG+xcYvqctujEkANjw2McCBvGEK505RxQqOuNiA9Mi9hgGdNp2JedSa94f3eoLg==}
|
||||
dependencies:
|
||||
'@babel/core': 7.20.12
|
||||
'@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12
|
||||
'@vanilla-extract/babel-plugin-debug-ids': 1.0.1
|
||||
'@vanilla-extract/css': 1.9.5
|
||||
esbuild: 0.16.3
|
||||
'@vanilla-extract/babel-plugin-debug-ids': 1.0.2
|
||||
'@vanilla-extract/css': 1.11.0
|
||||
esbuild: 0.17.6
|
||||
eval: 0.1.6
|
||||
find-up: 5.0.0
|
||||
javascript-stringify: 2.1.0
|
||||
lodash: 4.17.21
|
||||
mlly: 1.1.0
|
||||
outdent: 0.8.0
|
||||
vite: 4.2.1
|
||||
vite-node: 0.28.5
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- less
|
||||
- sass
|
||||
- stylus
|
||||
- sugarss
|
||||
- supports-color
|
||||
- terser
|
||||
dev: true
|
||||
|
||||
/@vanilla-extract/private/1.0.3:
|
||||
@@ -2226,16 +2439,16 @@ packages:
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
||||
/@vercel/remix/1.14.3-patch.1_biqbaboplfbrettd7655fr4n2y:
|
||||
resolution: {integrity: sha512-TBI/FS77HYZqjbgeABi7Rbg7RVQ1YLHcXm4/zroV4zl0nVbcXM2jVR3SXm0EuQKze+NZ0p3VBUz4I/xocTvq0w==}
|
||||
/@vercel/remix/1.15.0_biqbaboplfbrettd7655fr4n2y:
|
||||
resolution: {integrity: sha512-IS4K9u6M8oCc9VKxnS308+B0l+PHWxmBS6/o0aI2yBRQiG+yxxXn/UfPPvNDNJsfGsdcTmW/VR9dbN5EskY32g==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
react: '*'
|
||||
react-dom: '*'
|
||||
dependencies:
|
||||
'@remix-run/node': 1.14.3
|
||||
'@remix-run/server-runtime': 1.14.3
|
||||
isbot: 3.6.6
|
||||
'@remix-run/node': 1.15.0
|
||||
'@remix-run/server-runtime': 1.15.0
|
||||
isbot: 3.6.7
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0_react@18.2.0
|
||||
dev: false
|
||||
@@ -2596,6 +2809,11 @@ packages:
|
||||
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
|
||||
engines: {node: '>= 0.8'}
|
||||
|
||||
/cac/6.7.14:
|
||||
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/cacache/15.3.0:
|
||||
resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==}
|
||||
engines: {node: '>= 10'}
|
||||
@@ -3205,6 +3423,36 @@ packages:
|
||||
'@esbuild/win32-x64': 0.16.3
|
||||
dev: true
|
||||
|
||||
/esbuild/0.17.6:
|
||||
resolution: {integrity: sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==}
|
||||
engines: {node: '>=12'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
optionalDependencies:
|
||||
'@esbuild/android-arm': 0.17.6
|
||||
'@esbuild/android-arm64': 0.17.6
|
||||
'@esbuild/android-x64': 0.17.6
|
||||
'@esbuild/darwin-arm64': 0.17.6
|
||||
'@esbuild/darwin-x64': 0.17.6
|
||||
'@esbuild/freebsd-arm64': 0.17.6
|
||||
'@esbuild/freebsd-x64': 0.17.6
|
||||
'@esbuild/linux-arm': 0.17.6
|
||||
'@esbuild/linux-arm64': 0.17.6
|
||||
'@esbuild/linux-ia32': 0.17.6
|
||||
'@esbuild/linux-loong64': 0.17.6
|
||||
'@esbuild/linux-mips64el': 0.17.6
|
||||
'@esbuild/linux-ppc64': 0.17.6
|
||||
'@esbuild/linux-riscv64': 0.17.6
|
||||
'@esbuild/linux-s390x': 0.17.6
|
||||
'@esbuild/linux-x64': 0.17.6
|
||||
'@esbuild/netbsd-x64': 0.17.6
|
||||
'@esbuild/openbsd-x64': 0.17.6
|
||||
'@esbuild/sunos-x64': 0.17.6
|
||||
'@esbuild/win32-arm64': 0.17.6
|
||||
'@esbuild/win32-ia32': 0.17.6
|
||||
'@esbuild/win32-x64': 0.17.6
|
||||
dev: true
|
||||
|
||||
/escalade/3.1.1:
|
||||
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
|
||||
engines: {node: '>=6'}
|
||||
@@ -4018,6 +4266,10 @@ packages:
|
||||
is-glob: 4.0.3
|
||||
dev: true
|
||||
|
||||
/glob-to-regexp/0.4.1:
|
||||
resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
|
||||
dev: true
|
||||
|
||||
/glob/7.2.3:
|
||||
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
|
||||
dependencies:
|
||||
@@ -4607,8 +4859,8 @@ packages:
|
||||
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
|
||||
dev: true
|
||||
|
||||
/isbot/3.6.6:
|
||||
resolution: {integrity: sha512-98aGl1Spbx1led422YFrusDJ4ZutSNOymb2avZ2V4BCCjF3MqAF2k+J2zoaLYahubaFkb+3UyvbVDVlk/Ngrew==}
|
||||
/isbot/3.6.7:
|
||||
resolution: {integrity: sha512-SXNUQaNZlj/+9jdrGnAp6WW0YoHe3MIwwc6oRIYuhhERBUt7/L6I7JkMiA2sX9fcvS7gZ2C7GWgmDZfOOU4I5g==}
|
||||
engines: {node: '>=12'}
|
||||
dev: false
|
||||
|
||||
@@ -6031,26 +6283,26 @@ packages:
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/react-router-dom/6.8.2_biqbaboplfbrettd7655fr4n2y:
|
||||
resolution: {integrity: sha512-N/oAF1Shd7g4tWy+75IIufCGsHBqT74tnzHQhbiUTYILYF0Blk65cg+HPZqwC+6SqEyx033nKqU7by38v3lBZg==}
|
||||
/react-router-dom/6.10.0_biqbaboplfbrettd7655fr4n2y:
|
||||
resolution: {integrity: sha512-E5dfxRPuXKJqzwSe/qGcqdwa18QiWC6f3H3cWXM24qj4N0/beCIf/CWTipop2xm7mR0RCS99NnaqPNjHtrAzCg==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
react: '>=16.8'
|
||||
react-dom: '>=16.8'
|
||||
dependencies:
|
||||
'@remix-run/router': 1.3.3
|
||||
'@remix-run/router': 1.5.0
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0_react@18.2.0
|
||||
react-router: 6.8.2_react@18.2.0
|
||||
react-router: 6.10.0_react@18.2.0
|
||||
dev: false
|
||||
|
||||
/react-router/6.8.2_react@18.2.0:
|
||||
resolution: {integrity: sha512-lF7S0UmXI5Pd8bmHvMdPKI4u4S5McxmHnzJhrYi9ZQ6wE+DA8JN5BzVC5EEBuduWWDaiJ8u6YhVOCmThBli+rw==}
|
||||
/react-router/6.10.0_react@18.2.0:
|
||||
resolution: {integrity: sha512-Nrg0BWpQqrC3ZFFkyewrflCud9dio9ME3ojHCF/WLsprJVzkq3q3UeEhMCAW1dobjeGbWgjNn/PVF6m46ANxXQ==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
react: '>=16.8'
|
||||
dependencies:
|
||||
'@remix-run/router': 1.3.3
|
||||
'@remix-run/router': 1.5.0
|
||||
react: 18.2.0
|
||||
dev: false
|
||||
|
||||
@@ -6282,6 +6534,14 @@ packages:
|
||||
estree-walker: 0.6.1
|
||||
dev: true
|
||||
|
||||
/rollup/3.20.2:
|
||||
resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==}
|
||||
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
|
||||
hasBin: true
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/run-async/2.4.1:
|
||||
resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
|
||||
engines: {node: '>=0.12.0'}
|
||||
@@ -7008,6 +7268,62 @@ packages:
|
||||
vfile-message: 3.1.4
|
||||
dev: true
|
||||
|
||||
/vite-node/0.28.5:
|
||||
resolution: {integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==}
|
||||
engines: {node: '>=v14.16.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
cac: 6.7.14
|
||||
debug: 4.3.4
|
||||
mlly: 1.1.0
|
||||
pathe: 1.1.0
|
||||
picocolors: 1.0.0
|
||||
source-map: 0.6.1
|
||||
source-map-support: 0.5.21
|
||||
vite: 4.2.1
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- less
|
||||
- sass
|
||||
- stylus
|
||||
- sugarss
|
||||
- supports-color
|
||||
- terser
|
||||
dev: true
|
||||
|
||||
/vite/4.2.1:
|
||||
resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==}
|
||||
engines: {node: ^14.18.0 || >=16.0.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
'@types/node': '>= 14'
|
||||
less: '*'
|
||||
sass: '*'
|
||||
stylus: '*'
|
||||
sugarss: '*'
|
||||
terser: ^5.4.0
|
||||
peerDependenciesMeta:
|
||||
'@types/node':
|
||||
optional: true
|
||||
less:
|
||||
optional: true
|
||||
sass:
|
||||
optional: true
|
||||
stylus:
|
||||
optional: true
|
||||
sugarss:
|
||||
optional: true
|
||||
terser:
|
||||
optional: true
|
||||
dependencies:
|
||||
esbuild: 0.17.6
|
||||
postcss: 8.4.21
|
||||
resolve: 1.22.1
|
||||
rollup: 3.20.2
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/vm2/3.9.14:
|
||||
resolution: {integrity: sha512-HgvPHYHeQy8+QhzlFryvSteA4uQLBCOub02mgqdR+0bN/akRZ48TGB1v0aCv7ksyc0HXx16AZtMHKS38alc6TA==}
|
||||
engines: {node: '>=6.0'}
|
||||
|
||||
18
internals/constants/package.json
Normal file
18
internals/constants/package.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "@vercel-internals/constants",
|
||||
"types": "dist/index.d.ts",
|
||||
"main": "dist/index.js",
|
||||
"scripts": {
|
||||
"build": "tsc -p tsconfig.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vercel/build-utils": "6.3.2",
|
||||
"@vercel/routing-utils": "2.1.10"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vercel-internals/tsconfig": "*",
|
||||
"@vercel/style-guide": "4.0.2",
|
||||
"typescript": "4.9.4"
|
||||
}
|
||||
}
|
||||
5
internals/constants/src/index.ts
Normal file
5
internals/constants/src/index.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export const PROJECT_ENV_TARGET = [
|
||||
'production',
|
||||
'preview',
|
||||
'development',
|
||||
] as const;
|
||||
7
internals/constants/tsconfig.json
Normal file
7
internals/constants/tsconfig.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"extends": "@vercel-internals/tsconfig",
|
||||
"compilerOptions": {
|
||||
"outDir": "./dist"
|
||||
},
|
||||
"include": ["src/**/*.ts"]
|
||||
}
|
||||
@@ -1,6 +1,10 @@
|
||||
import type { BuilderFunctions } from '@vercel/build-utils';
|
||||
import type { Readable, Writable } from 'stream';
|
||||
import type { Route } from '@vercel/routing-utils';
|
||||
import { PROJECT_ENV_TARGET } from '@vercel-internals/constants';
|
||||
|
||||
export type ProjectEnvTarget = typeof PROJECT_ENV_TARGET[number];
|
||||
export type ProjectEnvType = 'plain' | 'secret' | 'encrypted' | 'system';
|
||||
|
||||
export type ProjectSettings = import('@vercel/build-utils').ProjectSettings;
|
||||
|
||||
@@ -300,20 +304,6 @@ export interface Secret {
|
||||
createdAt: number;
|
||||
}
|
||||
|
||||
// TODO (Ethan-Arrowood) - Replace enums
|
||||
export enum ProjectEnvTarget {
|
||||
Production = 'production',
|
||||
Preview = 'preview',
|
||||
Development = 'development',
|
||||
}
|
||||
|
||||
export enum ProjectEnvType {
|
||||
Plaintext = 'plain',
|
||||
Secret = 'secret',
|
||||
Encrypted = 'encrypted',
|
||||
System = 'system',
|
||||
}
|
||||
|
||||
export interface ProjectEnvVariable {
|
||||
id: string;
|
||||
key: string;
|
||||
@@ -1,15 +1,11 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "@vercel-internals/types",
|
||||
"types": "dist/index.d.ts",
|
||||
"main": "dist/index.js",
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsc -p tsconfig.json"
|
||||
},
|
||||
"types": "index.d.ts",
|
||||
"main": "index.d.ts",
|
||||
"dependencies": {
|
||||
"@types/node": "14.14.31",
|
||||
"@vercel-internals/constants": "*",
|
||||
"@vercel/build-utils": "6.3.2",
|
||||
"@vercel/routing-utils": "2.1.10"
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"extends": "@vercel-internals/tsconfig",
|
||||
"compilerOptions": {
|
||||
"outDir": "./dist"
|
||||
"noEmit": true
|
||||
},
|
||||
"include": ["index.ts"]
|
||||
"include": ["index.d.ts"]
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
"execa": "3.2.0",
|
||||
"fs-extra": "11.1.0",
|
||||
"husky": "7.0.4",
|
||||
"jest": "28.0.2",
|
||||
"jest": "29.5.0",
|
||||
"json5": "2.1.1",
|
||||
"lint-staged": "9.2.5",
|
||||
"node-fetch": "2.6.7",
|
||||
@@ -31,15 +31,14 @@
|
||||
"prettier": "2.6.2",
|
||||
"source-map-support": "0.5.12",
|
||||
"ts-eager": "2.0.2",
|
||||
"ts-jest": "28.0.5",
|
||||
"turbo": "1.8.5"
|
||||
"ts-jest": "29.1.0",
|
||||
"turbo": "1.9.1"
|
||||
},
|
||||
"scripts": {
|
||||
"lerna": "lerna",
|
||||
"version": "pnpm install && git add pnpm-lock.yaml",
|
||||
"bootstrap": "lerna bootstrap",
|
||||
"publish-stable": "echo 'Run `pnpm changelog` for instructions'",
|
||||
"publish-canary": "git checkout main && git pull && lerna version prerelease --preid canary --message \"Publish Canary\" --exact",
|
||||
"publish-from-github": "./utils/publish.sh",
|
||||
"changelog": "node utils/changelog.js",
|
||||
"build": "node utils/gen.js && turbo --no-update-notifier run build",
|
||||
|
||||
14
packages/cli/jest.config.js
Normal file
14
packages/cli/jest.config.js
Normal file
@@ -0,0 +1,14 @@
|
||||
/** @type {import('@ts-jest/dist/types').InitialOptionsTsJest} */
|
||||
module.exports = {
|
||||
preset: 'ts-jest',
|
||||
globals: {
|
||||
'ts-jest': {
|
||||
diagnostics: false,
|
||||
isolatedModules: true,
|
||||
},
|
||||
},
|
||||
setupFilesAfterEnv: ['@alex_neo/jest-expect-message'],
|
||||
verbose: false,
|
||||
testEnvironment: 'node',
|
||||
testMatch: ['<rootDir>/test/**/*.test.ts'],
|
||||
};
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "vercel",
|
||||
"version": "28.18.4",
|
||||
"version": "28.19.0",
|
||||
"preferGlobal": true,
|
||||
"license": "Apache-2.0",
|
||||
"description": "The command-line interface for Vercel",
|
||||
@@ -33,15 +33,15 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@vercel/build-utils": "6.7.1",
|
||||
"@vercel/go": "2.4.4",
|
||||
"@vercel/hydrogen": "0.0.62",
|
||||
"@vercel/next": "3.7.4",
|
||||
"@vercel/node": "2.10.3",
|
||||
"@vercel/python": "3.1.58",
|
||||
"@vercel/go": "2.5.0",
|
||||
"@vercel/hydrogen": "0.0.63",
|
||||
"@vercel/next": "3.7.5",
|
||||
"@vercel/node": "2.11.0",
|
||||
"@vercel/python": "3.1.59",
|
||||
"@vercel/redwood": "1.1.14",
|
||||
"@vercel/remix-builder": "1.8.4",
|
||||
"@vercel/remix-builder": "1.8.5",
|
||||
"@vercel/ruby": "1.3.75",
|
||||
"@vercel/static-build": "1.3.22"
|
||||
"@vercel/static-build": "1.3.24"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@alex_neo/jest-expect-message": "1.0.5",
|
||||
@@ -84,12 +84,13 @@
|
||||
"@types/which": "1.3.2",
|
||||
"@types/write-json-file": "2.2.1",
|
||||
"@types/yauzl-promise": "2.1.0",
|
||||
"@vercel-internals/constants": "*",
|
||||
"@vercel-internals/get-package-json": "*",
|
||||
"@vercel-internals/types": "*",
|
||||
"@vercel/client": "12.4.9",
|
||||
"@vercel/error-utils": "1.0.9",
|
||||
"@vercel/client": "12.4.10",
|
||||
"@vercel/error-utils": "1.0.10",
|
||||
"@vercel/frameworks": "1.3.4",
|
||||
"@vercel/fs-detectors": "3.8.9",
|
||||
"@vercel/fs-detectors": "3.8.11",
|
||||
"@vercel/fun": "1.0.4",
|
||||
"@vercel/ncc": "0.24.0",
|
||||
"@vercel/routing-utils": "2.2.0",
|
||||
@@ -168,22 +169,5 @@
|
||||
"write-json-file": "2.2.0",
|
||||
"xdg-app-paths": "5.1.0",
|
||||
"yauzl-promise": "2.1.3"
|
||||
},
|
||||
"jest": {
|
||||
"preset": "ts-jest",
|
||||
"globals": {
|
||||
"ts-jest": {
|
||||
"diagnostics": false,
|
||||
"isolatedModules": true
|
||||
}
|
||||
},
|
||||
"setupFilesAfterEnv": [
|
||||
"@alex_neo/jest-expect-message"
|
||||
],
|
||||
"verbose": false,
|
||||
"testEnvironment": "node",
|
||||
"testMatch": [
|
||||
"<rootDir>/test/**/*.test.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import stamp from '../../util/output/stamp';
|
||||
import strlen from '../../util/strlen';
|
||||
import getCommandFlags from '../../util/get-command-flags';
|
||||
import { getCommandName } from '../../util/pkg-name';
|
||||
import { Alias } from '@vercel-internals/types';
|
||||
import type { Alias } from '@vercel-internals/types';
|
||||
|
||||
export default async function ls(
|
||||
client: Client,
|
||||
|
||||
@@ -9,7 +9,7 @@ import strlen from '../../util/strlen';
|
||||
import confirm from '../../util/input/confirm';
|
||||
import findAliasByAliasOrId from '../../util/alias/find-alias-by-alias-or-id';
|
||||
|
||||
import { Alias } from '@vercel-internals/types';
|
||||
import type { Alias } from '@vercel-internals/types';
|
||||
import { isValidName } from '../../util/is-valid-name';
|
||||
import { getCommandName } from '../../util/pkg-name';
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import chalk from 'chalk';
|
||||
import { SetDifference } from 'utility-types';
|
||||
import { AliasRecord } from '../../util/alias/create-alias';
|
||||
import { Domain } from '@vercel-internals/types';
|
||||
import type { Domain } from '@vercel-internals/types';
|
||||
import { Output } from '../../util/output';
|
||||
import * as ERRORS from '../../util/errors-ts';
|
||||
import assignAlias from '../../util/alias/assign-alias';
|
||||
|
||||
@@ -5,7 +5,7 @@ import stamp from '../../util/output/stamp';
|
||||
import createCertFromFile from '../../util/certs/create-cert-from-file';
|
||||
import createCertForCns from '../../util/certs/create-cert-for-cns';
|
||||
import { getCommandName } from '../../util/pkg-name';
|
||||
import { Cert } from '@vercel-internals/types';
|
||||
import type { Cert } from '@vercel-internals/types';
|
||||
|
||||
interface Options {
|
||||
'--overwrite'?: boolean;
|
||||
|
||||
@@ -10,7 +10,7 @@ import {
|
||||
import stamp from '../../util/output/stamp';
|
||||
import getCerts from '../../util/certs/get-certs';
|
||||
import strlen from '../../util/strlen';
|
||||
import { Cert } from '@vercel-internals/types';
|
||||
import type { Cert } from '@vercel-internals/types';
|
||||
import getCommandFlags from '../../util/get-command-flags';
|
||||
import { getCommandName } from '../../util/pkg-name';
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import chalk from 'chalk';
|
||||
import ms from 'ms';
|
||||
import plural from 'pluralize';
|
||||
import table from 'text-table';
|
||||
import { Cert } from '@vercel-internals/types';
|
||||
import type { Cert } from '@vercel-internals/types';
|
||||
import * as ERRORS from '../../util/errors-ts';
|
||||
import { Output } from '../../util/output';
|
||||
import deleteCertById from '../../util/certs/delete-cert-by-id';
|
||||
|
||||
@@ -71,6 +71,7 @@ export const help = () => `
|
||||
-m, --meta Add metadata for the deployment (e.g.: ${chalk.dim(
|
||||
'`-m KEY=value`'
|
||||
)}). Can appear many times.
|
||||
--no-wait Don't wait for the deployment to finish
|
||||
-S, --scope Set a custom scope
|
||||
--regions Set default regions to enable the deployment on
|
||||
--prod Create a production deployment
|
||||
|
||||
@@ -16,7 +16,7 @@ import { handleError } from '../../util/error';
|
||||
import Client from '../../util/client';
|
||||
import { getPrettyError } from '@vercel/build-utils';
|
||||
import toHumanPath from '../../util/humanize-path';
|
||||
import Now from '../../util';
|
||||
import Now, { CreateOptions } from '../../util';
|
||||
import stamp from '../../util/output/stamp';
|
||||
import createDeploy from '../../util/deploy/create-deploy';
|
||||
import getDeployment from '../../util/get-deployment';
|
||||
@@ -70,6 +70,8 @@ import { isValidArchive } from '../../util/deploy/validate-archive-format';
|
||||
import { parseEnv } from '../../util/parse-env';
|
||||
import { errorToString, isErrnoException, isError } from '@vercel/error-utils';
|
||||
import { pickOverrides } from '../../util/projects/project-settings';
|
||||
import { isDeploying } from '../../util/deploy/is-deploying';
|
||||
import type { Deployment } from '@vercel-internals/types';
|
||||
|
||||
export default async (client: Client): Promise<number> => {
|
||||
const { output } = client;
|
||||
@@ -90,6 +92,7 @@ export default async (client: Client): Promise<number> => {
|
||||
'--prebuilt': Boolean,
|
||||
'--prod': Boolean,
|
||||
'--archive': String,
|
||||
'--no-wait': Boolean,
|
||||
'--yes': Boolean,
|
||||
'-f': '--force',
|
||||
'-p': '--public',
|
||||
@@ -505,12 +508,20 @@ export default async (client: Client): Promise<number> => {
|
||||
});
|
||||
let deployStamp = stamp();
|
||||
let deployment = null;
|
||||
const noWait = !!argv['--no-wait'];
|
||||
|
||||
const localConfigurationOverrides = pickOverrides(localConfig);
|
||||
|
||||
const name = project ? project.name : newProjectName;
|
||||
if (!name) {
|
||||
throw new Error(
|
||||
'`name` not found on project or provided by existing project'
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
const createArgs: any = {
|
||||
name: project ? project.name : newProjectName,
|
||||
const createArgs: CreateOptions = {
|
||||
name,
|
||||
env: deploymentEnv,
|
||||
build: { env: deploymentBuildEnv },
|
||||
forceNew: argv['--force'],
|
||||
@@ -518,8 +529,7 @@ export default async (client: Client): Promise<number> => {
|
||||
prebuilt: argv['--prebuilt'],
|
||||
rootDirectory,
|
||||
quiet,
|
||||
wantsPublic: argv['--public'] || localConfig.public,
|
||||
type: null,
|
||||
wantsPublic: Boolean(argv['--public'] || localConfig.public),
|
||||
nowConfig: {
|
||||
...localConfig,
|
||||
// `images` is allowed in "vercel.json" and processed
|
||||
@@ -532,6 +542,7 @@ export default async (client: Client): Promise<number> => {
|
||||
deployStamp,
|
||||
target,
|
||||
skipAutoDetectionConfirmation: autoConfirm,
|
||||
noWait,
|
||||
};
|
||||
|
||||
if (!localConfig.builds || localConfig.builds.length === 0) {
|
||||
@@ -627,8 +638,10 @@ export default async (client: Client): Promise<number> => {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// get the deployment just to double check that it actually deployed
|
||||
await getDeployment(client, contextName, deployment.id);
|
||||
if (!noWait) {
|
||||
// get the deployment just to double check that it actually deployed
|
||||
await getDeployment(client, contextName, deployment.id);
|
||||
}
|
||||
|
||||
if (deployment === null) {
|
||||
error('Uploading failed. Please try again.');
|
||||
@@ -715,7 +728,7 @@ export default async (client: Client): Promise<number> => {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return printDeploymentStatus(output, client, deployment, deployStamp);
|
||||
return printDeploymentStatus(output, client, deployment, deployStamp, noWait);
|
||||
};
|
||||
|
||||
function handleCreateDeployError(
|
||||
@@ -835,7 +848,7 @@ const printDeploymentStatus = async (
|
||||
url: deploymentUrl,
|
||||
aliasWarning,
|
||||
}: {
|
||||
readyState: string;
|
||||
readyState: Deployment['readyState'];
|
||||
alias: string[];
|
||||
aliasError: Error;
|
||||
target: string;
|
||||
@@ -848,12 +861,26 @@ const printDeploymentStatus = async (
|
||||
action?: string;
|
||||
};
|
||||
},
|
||||
deployStamp: () => string
|
||||
deployStamp: () => string,
|
||||
noWait: boolean
|
||||
) => {
|
||||
indications = indications || [];
|
||||
const isProdDeployment = target === 'production';
|
||||
|
||||
if (readyState !== 'READY') {
|
||||
let isStillBuilding = false;
|
||||
if (noWait) {
|
||||
if (isDeploying(readyState)) {
|
||||
isStillBuilding = true;
|
||||
output.print(
|
||||
prependEmoji(
|
||||
'Note: Deployment is still processing...',
|
||||
emoji('notice')
|
||||
) + '\n'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (!isStillBuilding && readyState !== 'READY') {
|
||||
output.error(
|
||||
`Your deployment failed. Please retry later. More: https://err.sh/vercel/deployment-error`
|
||||
);
|
||||
@@ -869,7 +896,8 @@ const printDeploymentStatus = async (
|
||||
} else {
|
||||
// print preview/production url
|
||||
let previewUrl: string;
|
||||
if (Array.isArray(aliasList) && aliasList.length > 0) {
|
||||
// if `noWait` is true, then use the deployment url, not an alias
|
||||
if (!noWait && Array.isArray(aliasList) && aliasList.length > 0) {
|
||||
const previewUrlInfo = await getPreferredPreviewURL(client, aliasList);
|
||||
if (previewUrlInfo) {
|
||||
previewUrl = previewUrlInfo.previewUrl;
|
||||
|
||||
@@ -5,7 +5,7 @@ import DevServer from '../../util/dev/server';
|
||||
import { parseListen } from '../../util/dev/parse-listen';
|
||||
import Client from '../../util/client';
|
||||
import { getLinkedProject } from '../../util/projects/link';
|
||||
import { ProjectSettings } from '@vercel-internals/types';
|
||||
import type { ProjectSettings } from '@vercel-internals/types';
|
||||
import setupAndLink from '../../util/link/setup-and-link';
|
||||
import { getCommandName } from '../../util/pkg-name';
|
||||
import param from '../../util/output/param';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import chalk from 'chalk';
|
||||
import ms from 'ms';
|
||||
import { DomainNotFound } from '../../util/errors-ts';
|
||||
import { DNSRecord } from '@vercel-internals/types';
|
||||
import type { DNSRecord } from '@vercel-internals/types';
|
||||
import Client from '../../util/client';
|
||||
import formatTable from '../../util/format-table';
|
||||
import getDNSRecords, {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import chalk from 'chalk';
|
||||
import ms from 'ms';
|
||||
import table from 'text-table';
|
||||
import { DNSRecord } from '@vercel-internals/types';
|
||||
import type { DNSRecord } from '@vercel-internals/types';
|
||||
import { Output } from '../../util/output';
|
||||
import Client from '../../util/client';
|
||||
import deleteDNSRecordById from '../../util/dns/delete-dns-record-by-id';
|
||||
|
||||
@@ -8,7 +8,7 @@ import getScope from '../../util/get-scope';
|
||||
import stamp from '../../util/output/stamp';
|
||||
import formatTable from '../../util/format-table';
|
||||
import { formatDateWithoutTime } from '../../util/format-date';
|
||||
import { Domain } from '@vercel-internals/types';
|
||||
import type { Domain } from '@vercel-internals/types';
|
||||
import getCommandFlags from '../../util/get-command-flags';
|
||||
import {
|
||||
PaginationOptions,
|
||||
|
||||
@@ -2,7 +2,7 @@ import chalk from 'chalk';
|
||||
import plural from 'pluralize';
|
||||
|
||||
import { DomainNotFound, DomainPermissionDenied } from '../../util/errors-ts';
|
||||
import { Domain } from '@vercel-internals/types';
|
||||
import type { Domain } from '@vercel-internals/types';
|
||||
import { Output } from '../../util/output';
|
||||
import Client from '../../util/client';
|
||||
import deleteCertById from '../../util/certs/delete-cert-by-id';
|
||||
|
||||
14
packages/cli/src/commands/env/add.ts
vendored
14
packages/cli/src/commands/env/add.ts
vendored
@@ -1,9 +1,5 @@
|
||||
import chalk from 'chalk';
|
||||
import {
|
||||
ProjectEnvTarget,
|
||||
Project,
|
||||
ProjectEnvType,
|
||||
} from '@vercel-internals/types';
|
||||
import type { Project, ProjectEnvTarget } from '@vercel-internals/types';
|
||||
import { Output } from '../../util/output';
|
||||
import Client from '../../util/client';
|
||||
import stamp from '../../util/output/stamp';
|
||||
@@ -12,7 +8,7 @@ import getEnvRecords from '../../util/env/get-env-records';
|
||||
import {
|
||||
isValidEnvTarget,
|
||||
getEnvTargetPlaceholder,
|
||||
getEnvTargetChoices,
|
||||
envTargetChoices,
|
||||
} from '../../util/env/env-target';
|
||||
import readStandardInput from '../../util/input/read-standard-input';
|
||||
import param from '../../util/output/param';
|
||||
@@ -92,7 +88,7 @@ export default async function add(
|
||||
const existing = new Set(
|
||||
envs.filter(r => r.key === envName).map(r => r.target)
|
||||
);
|
||||
const choices = getEnvTargetChoices().filter(c => !existing.has(c.value));
|
||||
const choices = envTargetChoices.filter(c => !existing.has(c.value));
|
||||
|
||||
if (choices.length === 0) {
|
||||
output.error(
|
||||
@@ -138,7 +134,7 @@ export default async function add(
|
||||
!stdInput &&
|
||||
!envGitBranch &&
|
||||
envTargets.length === 1 &&
|
||||
envTargets[0] === ProjectEnvTarget.Preview
|
||||
envTargets[0] === 'preview'
|
||||
) {
|
||||
const { inputValue } = await client.prompt({
|
||||
type: 'input',
|
||||
@@ -155,7 +151,7 @@ export default async function add(
|
||||
output,
|
||||
client,
|
||||
project.id,
|
||||
ProjectEnvType.Encrypted,
|
||||
'encrypted',
|
||||
envName,
|
||||
envValue,
|
||||
envTargets,
|
||||
|
||||
10
packages/cli/src/commands/env/ls.ts
vendored
10
packages/cli/src/commands/env/ls.ts
vendored
@@ -1,11 +1,7 @@
|
||||
import chalk from 'chalk';
|
||||
import ms from 'ms';
|
||||
import { Output } from '../../util/output';
|
||||
import {
|
||||
Project,
|
||||
ProjectEnvVariable,
|
||||
ProjectEnvType,
|
||||
} from '@vercel-internals/types';
|
||||
import type { Project, ProjectEnvVariable } from '@vercel-internals/types';
|
||||
import Client from '../../util/client';
|
||||
import formatTable from '../../util/format-table';
|
||||
import getEnvRecords from '../../util/env/get-env-records';
|
||||
@@ -99,13 +95,13 @@ function getTable(records: ProjectEnvVariable[]) {
|
||||
|
||||
function getRow(env: ProjectEnvVariable) {
|
||||
let value: string;
|
||||
if (env.type === ProjectEnvType.Plaintext) {
|
||||
if (env.type === 'plain') {
|
||||
// replace space characters (line-break, etc.) with simple spaces
|
||||
// to make sure the displayed value is a single line
|
||||
const singleLineValue = env.value.replace(/\s/g, ' ');
|
||||
|
||||
value = chalk.gray(ellipsis(singleLineValue, 19));
|
||||
} else if (env.type === ProjectEnvType.System) {
|
||||
} else if (env.type === 'system') {
|
||||
value = chalk.gray.italic(env.value);
|
||||
} else {
|
||||
value = chalk.gray.italic('Encrypted');
|
||||
|
||||
4
packages/cli/src/commands/env/pull.ts
vendored
4
packages/cli/src/commands/env/pull.ts
vendored
@@ -2,7 +2,7 @@ import chalk from 'chalk';
|
||||
import { outputFile } from 'fs-extra';
|
||||
import { closeSync, openSync, readSync } from 'fs';
|
||||
import { resolve } from 'path';
|
||||
import { Project, ProjectEnvTarget } from '@vercel-internals/types';
|
||||
import type { Project, ProjectEnvTarget } from '@vercel-internals/types';
|
||||
import Client from '../../util/client';
|
||||
import { emoji, prependEmoji } from '../../util/emoji';
|
||||
import confirm from '../../util/input/confirm';
|
||||
@@ -101,7 +101,7 @@ export default async function pull(
|
||||
|
||||
const records = (
|
||||
await pullEnvRecords(output, client, project.id, source, {
|
||||
target: environment || ProjectEnvTarget.Development,
|
||||
target: environment || 'development',
|
||||
gitBranch,
|
||||
})
|
||||
).env;
|
||||
|
||||
2
packages/cli/src/commands/env/rm.ts
vendored
2
packages/cli/src/commands/env/rm.ts
vendored
@@ -1,5 +1,5 @@
|
||||
import chalk from 'chalk';
|
||||
import { Project } from '@vercel-internals/types';
|
||||
import type { Project } from '@vercel-internals/types';
|
||||
import { Output } from '../../util/output';
|
||||
import confirm from '../../util/input/confirm';
|
||||
import removeEnvRecord from '../../util/env/remove-env-record';
|
||||
|
||||
@@ -178,6 +178,7 @@ export default async function connect(
|
||||
gitOrg,
|
||||
repo,
|
||||
});
|
||||
|
||||
if (typeof checkAndConnect === 'number') {
|
||||
return checkAndConnect;
|
||||
}
|
||||
|
||||
@@ -10,10 +10,14 @@ import getScope from '../util/get-scope';
|
||||
import { getPkgName, getCommandName } from '../util/pkg-name';
|
||||
import Client from '../util/client';
|
||||
import getDeployment from '../util/get-deployment';
|
||||
import { Build, Deployment } from '@vercel-internals/types';
|
||||
import type { Build, Deployment } from '@vercel-internals/types';
|
||||
import title from 'title';
|
||||
import { isErrnoException } from '@vercel/error-utils';
|
||||
import { URL } from 'url';
|
||||
import readStandardInput from '../util/input/read-standard-input';
|
||||
import sleep from '../util/sleep';
|
||||
import ms from 'ms';
|
||||
import { isDeploying } from '../util/deploy/is-deploying';
|
||||
|
||||
const help = () => {
|
||||
console.log(`
|
||||
@@ -34,6 +38,10 @@ const help = () => {
|
||||
-d, --debug Debug mode [off]
|
||||
--no-color No color mode [off]
|
||||
-S, --scope Set a custom scope
|
||||
--timeout=${chalk.bold.underline(
|
||||
'TIME'
|
||||
)} Time to wait for deployment completion [3m]
|
||||
--wait Blocks until deployment completes
|
||||
|
||||
${chalk.dim('Examples:')}
|
||||
|
||||
@@ -44,6 +52,16 @@ const help = () => {
|
||||
${chalk.gray('-')} Get information about the deployment an alias points to
|
||||
|
||||
${chalk.cyan(`$ ${getPkgName()} inspect my-deployment.vercel.app`)}
|
||||
|
||||
${chalk.gray('-')} Get information about a deployment by piping in the URL
|
||||
|
||||
${chalk.cyan(`$ echo my-deployment.vercel.app | ${getPkgName()} inspect`)}
|
||||
|
||||
${chalk.gray('-')} Wait up to 90 seconds for deployment to complete
|
||||
|
||||
${chalk.cyan(
|
||||
`$ ${getPkgName()} inspect my-deployment.vercel.app --wait --timeout 90s`
|
||||
)}
|
||||
`);
|
||||
};
|
||||
|
||||
@@ -51,7 +69,10 @@ export default async function main(client: Client) {
|
||||
let argv;
|
||||
|
||||
try {
|
||||
argv = getArgs(client.argv.slice(2));
|
||||
argv = getArgs(client.argv.slice(2), {
|
||||
'--timeout': String,
|
||||
'--wait': Boolean,
|
||||
});
|
||||
} catch (err) {
|
||||
handleError(err);
|
||||
return 1;
|
||||
@@ -67,12 +88,28 @@ export default async function main(client: Client) {
|
||||
// extract the first parameter
|
||||
let [, deploymentIdOrHost] = argv._;
|
||||
|
||||
if (argv._.length !== 2) {
|
||||
if (!deploymentIdOrHost) {
|
||||
// if the URL is not passed in, check stdin
|
||||
// allows cool stuff like `echo my-deployment.vercel.app | vc inspect --wait`
|
||||
const stdInput = await readStandardInput(client.stdin);
|
||||
if (stdInput) {
|
||||
deploymentIdOrHost = stdInput;
|
||||
}
|
||||
}
|
||||
|
||||
if (!deploymentIdOrHost) {
|
||||
error(`${getCommandName('inspect <url>')} expects exactly one argument`);
|
||||
help();
|
||||
return 1;
|
||||
}
|
||||
|
||||
// validate the timeout
|
||||
const timeout = ms(argv['--timeout'] ?? '3m');
|
||||
if (timeout === undefined) {
|
||||
error(`Invalid timeout "${argv['--timeout']}"`);
|
||||
return 1;
|
||||
}
|
||||
|
||||
let contextName: string | null = null;
|
||||
|
||||
try {
|
||||
@@ -98,12 +135,22 @@ export default async function main(client: Client) {
|
||||
`Fetching deployment "${deploymentIdOrHost}" in ${chalk.bold(contextName)}`
|
||||
);
|
||||
|
||||
const until = Date.now() + timeout;
|
||||
const wait = argv['--wait'];
|
||||
|
||||
// resolve the deployment, since we might have been given an alias
|
||||
const deployment = await getDeployment(
|
||||
client,
|
||||
contextName,
|
||||
deploymentIdOrHost
|
||||
);
|
||||
let deployment = await getDeployment(client, contextName, deploymentIdOrHost);
|
||||
|
||||
while (Date.now() < until) {
|
||||
if (!wait || !isDeploying(deployment.readyState)) {
|
||||
break;
|
||||
}
|
||||
|
||||
await sleep(250);
|
||||
|
||||
// check the deployment state again
|
||||
deployment = await getDeployment(client, contextName, deploymentIdOrHost);
|
||||
}
|
||||
|
||||
const {
|
||||
id,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import chalk from 'chalk';
|
||||
import ms from 'ms';
|
||||
import table from 'text-table';
|
||||
import { Project } from '@vercel-internals/types';
|
||||
import type { Project } from '@vercel-internals/types';
|
||||
import Client from '../../util/client';
|
||||
import getCommandFlags from '../../util/get-command-flags';
|
||||
import { getCommandName } from '../../util/pkg-name';
|
||||
|
||||
@@ -50,12 +50,10 @@ import getUpdateCommand from './util/get-update-command';
|
||||
import { metrics, shouldCollectMetrics } from './util/metrics';
|
||||
import { getCommandName, getTitleName } from './util/pkg-name';
|
||||
import doLoginPrompt from './util/login/prompt';
|
||||
import { AuthConfig, GlobalConfig } from '@vercel-internals/types';
|
||||
import type { AuthConfig, GlobalConfig } from '@vercel-internals/types';
|
||||
import { VercelConfig } from '@vercel/client';
|
||||
import box from './util/output/box';
|
||||
|
||||
const isCanary = pkg.version.includes('canary');
|
||||
|
||||
const VERCEL_DIR = getGlobalPathConfig();
|
||||
const VERCEL_CONFIG_PATH = configFiles.getConfigFilePath();
|
||||
const VERCEL_AUTH_CONFIG_PATH = configFiles.getAuthConfigFilePath();
|
||||
@@ -70,7 +68,7 @@ sourceMap.install();
|
||||
Sentry.init({
|
||||
dsn: SENTRY_DSN,
|
||||
release: `vercel-cli@${pkg.version}`,
|
||||
environment: isCanary ? 'canary' : 'stable',
|
||||
environment: 'stable',
|
||||
});
|
||||
|
||||
let client: Client;
|
||||
@@ -165,13 +163,7 @@ const main = async () => {
|
||||
)}`
|
||||
);
|
||||
} else {
|
||||
output.print(
|
||||
`${chalk.grey(
|
||||
`${getTitleName()} CLI ${pkg.version}${
|
||||
isCanary ? ' — https://vercel.com/feedback' : ''
|
||||
}`
|
||||
)}\n`
|
||||
);
|
||||
output.print(`${chalk.grey(`${getTitleName()} CLI ${pkg.version}`)}\n`);
|
||||
}
|
||||
|
||||
// Handle `--version` directly
|
||||
@@ -707,7 +699,6 @@ main()
|
||||
// Check if an update is available. If so, `latest` will contain a string
|
||||
// of the latest version, otherwise `undefined`.
|
||||
const latest = getLatestVersion({
|
||||
distTag: isCanary ? 'canary' : 'latest',
|
||||
output,
|
||||
pkg,
|
||||
});
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Output } from '../output';
|
||||
import { Alias } from '@vercel-internals/types';
|
||||
import type { Alias } from '@vercel-internals/types';
|
||||
|
||||
import Client from '../client';
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import path from 'path';
|
||||
import chalk from 'chalk';
|
||||
import Client from '../client';
|
||||
import { Output } from '../output';
|
||||
import { User } from '@vercel-internals/types';
|
||||
import type { User } from '@vercel-internals/types';
|
||||
import { VercelConfig } from '../dev/types';
|
||||
import getDeploymentsByAppName from '../deploy/get-deployments-by-appname';
|
||||
import getDeployment from '../get-deployment';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import Client from '../client';
|
||||
import getAliases from './get-aliases';
|
||||
import { Alias } from '@vercel-internals/types';
|
||||
import type { Alias } from '@vercel-internals/types';
|
||||
|
||||
export default async function getDomainAliases(client: Client, domain: string) {
|
||||
const { aliases } = await getAliases(client);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Build } from '@vercel-internals/types';
|
||||
import type { Build } from '@vercel-internals/types';
|
||||
|
||||
export const isReady = ({ readyState }: Pick<Build, 'readyState'>) =>
|
||||
readyState === 'READY';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { readFileSync } from 'fs';
|
||||
import { resolve } from 'path';
|
||||
import Client from '../client';
|
||||
import { Cert } from '@vercel-internals/types';
|
||||
import type { Cert } from '@vercel-internals/types';
|
||||
import { isErrnoException } from '@vercel/error-utils';
|
||||
import { isAPIError } from '../errors-ts';
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import chalk from 'chalk';
|
||||
|
||||
import { Cert } from '@vercel-internals/types';
|
||||
import type { Cert } from '@vercel-internals/types';
|
||||
import * as ERRORS from '../errors-ts';
|
||||
import Client from '../client';
|
||||
import mapCertError from './map-cert-error';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Cert } from '@vercel-internals/types';
|
||||
import type { Cert } from '@vercel-internals/types';
|
||||
import Client from '../client';
|
||||
import * as ERRORS from '../errors-ts';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { stringify } from 'querystring';
|
||||
import { Cert } from '@vercel-internals/types';
|
||||
import type { Cert } from '@vercel-internals/types';
|
||||
import Client from '../client';
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { stringify } from 'querystring';
|
||||
import { Cert } from '@vercel-internals/types';
|
||||
import type { Cert } from '@vercel-internals/types';
|
||||
import * as ERRORS from '../errors-ts';
|
||||
import Client from '../client';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import retry from 'async-retry';
|
||||
import { Cert } from '@vercel-internals/types';
|
||||
import type { Cert } from '@vercel-internals/types';
|
||||
import Client from '../client';
|
||||
import { isAPIError } from '../errors-ts';
|
||||
import { isError } from '@vercel/error-utils';
|
||||
|
||||
@@ -3,7 +3,7 @@ import * as ERRORS_TS from '../errors-ts';
|
||||
import * as ERRORS from '../errors';
|
||||
import { NowError } from '../now-error';
|
||||
import mapCertError from '../certs/map-cert-error';
|
||||
import { Org } from '@vercel-internals/types';
|
||||
import type { Org } from '@vercel-internals/types';
|
||||
import Now, { CreateOptions } from '..';
|
||||
import Client from '../client';
|
||||
import { ArchiveFormat, DeploymentError } from '@vercel/client';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { URLSearchParams } from 'url';
|
||||
import { Deployment } from '@vercel-internals/types';
|
||||
import type { Deployment } from '@vercel-internals/types';
|
||||
import Client from '../client';
|
||||
|
||||
type LegacyDeployment = {
|
||||
|
||||
23
packages/cli/src/util/deploy/is-deploying.ts
Normal file
23
packages/cli/src/util/deploy/is-deploying.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { Deployment } from '@vercel-internals/types';
|
||||
|
||||
export const deploymentInProgressStates: Deployment['readyState'][] = [
|
||||
'QUEUED',
|
||||
'BUILDING',
|
||||
'INITIALIZING',
|
||||
];
|
||||
|
||||
export const deploymentCompletedStates: Deployment['readyState'][] = [
|
||||
'READY',
|
||||
'CANCELED',
|
||||
'ERROR',
|
||||
];
|
||||
|
||||
/**
|
||||
* Checks if the deployments readyState is considered to be in progress.
|
||||
* @param readyState The deployment's readyState
|
||||
* @returns `true` if in a pending deployment state, otherwise `false` if it's
|
||||
* ready/canceled/errored
|
||||
*/
|
||||
export function isDeploying(readyState: Deployment['readyState']): Boolean {
|
||||
return deploymentInProgressStates.includes(readyState);
|
||||
}
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
import { Output } from '../output';
|
||||
import { progress } from '../output/progress';
|
||||
import Now from '../../util';
|
||||
import { Org } from '@vercel-internals/types';
|
||||
import type { Org } from '@vercel-internals/types';
|
||||
import ua from '../ua';
|
||||
import { linkFolderToProject } from '../projects/link';
|
||||
import { prependEmoji, emoji } from '../emoji';
|
||||
@@ -34,6 +34,7 @@ export default async function processDeployment({
|
||||
isSettingUpProject,
|
||||
archive,
|
||||
skipAutoDetectionConfirmation,
|
||||
noWait,
|
||||
...args
|
||||
}: {
|
||||
now: Now;
|
||||
@@ -52,7 +53,8 @@ export default async function processDeployment({
|
||||
archive?: ArchiveFormat;
|
||||
skipAutoDetectionConfirmation?: boolean;
|
||||
cwd?: string;
|
||||
rootDirectory?: string;
|
||||
rootDirectory?: string | null;
|
||||
noWait?: boolean;
|
||||
}) {
|
||||
let {
|
||||
now,
|
||||
@@ -180,6 +182,10 @@ export default async function processDeployment({
|
||||
process.stdout.write(`https://${event.payload.url}`);
|
||||
}
|
||||
|
||||
if (noWait) {
|
||||
return event.payload;
|
||||
}
|
||||
|
||||
output.spinner(
|
||||
event.payload.readyState === 'QUEUED' ? 'Queued' : 'Building',
|
||||
0
|
||||
|
||||
@@ -51,10 +51,8 @@ import link from '../output/link';
|
||||
import sleep from '../sleep';
|
||||
import { Output } from '../output';
|
||||
import { relative } from '../path-helpers';
|
||||
import { getDistTag } from '../get-dist-tag';
|
||||
import getVercelConfigPath from '../config/local-path';
|
||||
import { MissingDotenvVarsError } from '../errors-ts';
|
||||
import cliPkg from '../pkg';
|
||||
import { getVercelDirectory } from '../projects/link';
|
||||
import { staticFiles as getFiles } from '../get-files';
|
||||
import { validateConfig } from '../validate-config';
|
||||
@@ -85,7 +83,7 @@ import {
|
||||
HttpHeadersConfig,
|
||||
EnvConfigs,
|
||||
} from './types';
|
||||
import { ProjectSettings } from '@vercel-internals/types';
|
||||
import type { ProjectSettings } from '@vercel-internals/types';
|
||||
import { treeKill } from '../tree-kill';
|
||||
import { applyOverriddenHeaders, nodeHeadersToFetchHeaders } from './headers';
|
||||
import { formatQueryString, parseQueryString } from './parse-query-string';
|
||||
@@ -593,7 +591,7 @@ export default class DevServer {
|
||||
rewriteRoutes,
|
||||
errorRoutes,
|
||||
} = await detectBuilders(files, pkg, {
|
||||
tag: getDistTag(cliPkg.version) === 'canary' ? 'canary' : 'latest',
|
||||
tag: 'latest',
|
||||
functions: vercelConfig.functions,
|
||||
projectSettings: projectSettings || this.projectSettings,
|
||||
featHandleMiss,
|
||||
|
||||
@@ -16,7 +16,7 @@ import {
|
||||
import { VercelConfig } from '@vercel/client';
|
||||
import { HandleValue, Route } from '@vercel/routing-utils';
|
||||
import { Output } from '../output';
|
||||
import { ProjectSettings } from '@vercel-internals/types';
|
||||
import type { ProjectSettings } from '@vercel-internals/types';
|
||||
import { BuilderWithPkg } from '../build/import-builders';
|
||||
|
||||
export { VercelConfig };
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
DNSConflictingRecord,
|
||||
isAPIError,
|
||||
} from '../errors-ts';
|
||||
import { DNSRecordData } from '@vercel-internals/types';
|
||||
import type { DNSRecordData } from '@vercel-internals/types';
|
||||
|
||||
type Response = {
|
||||
uid: string;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import chalk from 'chalk';
|
||||
import { DNSRecordData } from '@vercel-internals/types';
|
||||
import type { DNSRecordData } from '@vercel-internals/types';
|
||||
import textInput from '../input/text';
|
||||
import promptBool from '../input/prompt-bool';
|
||||
import Client from '../client';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DNSRecord } from '@vercel-internals/types';
|
||||
import type { DNSRecord } from '@vercel-internals/types';
|
||||
import Client from '../client';
|
||||
|
||||
export default async function getDNSRecordById(
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DNSRecord } from '@vercel-internals/types';
|
||||
import type { DNSRecord } from '@vercel-internals/types';
|
||||
import { DomainNotFound } from '../errors-ts';
|
||||
import { Output } from '../output';
|
||||
import Client from '../client';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DNSRecordData } from '@vercel-internals/types';
|
||||
import type { DNSRecordData } from '@vercel-internals/types';
|
||||
|
||||
export default function parseAddArgs(
|
||||
args: string[]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import chalk from 'chalk';
|
||||
import retry from 'async-retry';
|
||||
import { DomainAlreadyExists, InvalidDomain, isAPIError } from '../errors-ts';
|
||||
import { Domain } from '@vercel-internals/types';
|
||||
import type { Domain } from '@vercel-internals/types';
|
||||
import Client from '../client';
|
||||
|
||||
type Response = {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import chalk from 'chalk';
|
||||
import Client from '../client';
|
||||
import { Domain } from '@vercel-internals/types';
|
||||
import type { Domain } from '@vercel-internals/types';
|
||||
import {
|
||||
DomainPermissionDenied,
|
||||
DomainNotFound,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import Client from '../client';
|
||||
import { DomainConfig } from '@vercel-internals/types';
|
||||
import type { DomainConfig } from '@vercel-internals/types';
|
||||
import { isAPIError } from '../errors-ts';
|
||||
|
||||
export async function getDomainConfig(client: Client, domainName: string) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Domain } from '@vercel-internals/types';
|
||||
import type { Domain } from '@vercel-internals/types';
|
||||
|
||||
export type DomainRegistrar = 'Vercel' | 'Purchase in Process' | 'Third Party';
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import chalk from 'chalk';
|
||||
import Client from '../client';
|
||||
import { Domain } from '@vercel-internals/types';
|
||||
import type { Domain } from '@vercel-internals/types';
|
||||
import { isAPIError } from '../errors-ts';
|
||||
|
||||
type Response = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Domain } from '@vercel-internals/types';
|
||||
import type { Domain } from '@vercel-internals/types';
|
||||
|
||||
export default function isDomainExternal(domain: Domain) {
|
||||
return domain.serviceType !== 'zeit.world';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import psl from 'psl';
|
||||
import { NowError } from '../now-error';
|
||||
import { Domain } from '@vercel-internals/types';
|
||||
import type { Domain } from '@vercel-internals/types';
|
||||
import { Output } from '../output';
|
||||
import * as ERRORS from '../errors-ts';
|
||||
import addDomain from './add-domain';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import * as ERRORS from '../errors-ts';
|
||||
import Client from '../client';
|
||||
import { Domain } from '@vercel-internals/types';
|
||||
import type { Domain } from '@vercel-internals/types';
|
||||
|
||||
type Response = {
|
||||
domain: Domain;
|
||||
|
||||
2
packages/cli/src/util/env/add-env-record.ts
vendored
2
packages/cli/src/util/env/add-env-record.ts
vendored
@@ -1,6 +1,6 @@
|
||||
import { Output } from '../output';
|
||||
import Client from '../client';
|
||||
import {
|
||||
import type {
|
||||
ProjectEnvTarget,
|
||||
ProjectEnvVariable,
|
||||
ProjectEnvType,
|
||||
|
||||
26
packages/cli/src/util/env/env-target.ts
vendored
26
packages/cli/src/util/env/env-target.ts
vendored
@@ -1,22 +1,22 @@
|
||||
import { ProjectEnvTarget } from '@vercel-internals/types';
|
||||
import type { ProjectEnvTarget } from '@vercel-internals/types';
|
||||
import { PROJECT_ENV_TARGET } from '@vercel-internals/constants';
|
||||
import title from 'title';
|
||||
|
||||
function envTargets(): string[] {
|
||||
return Object.values(ProjectEnvTarget);
|
||||
}
|
||||
|
||||
export function getEnvTargetChoices() {
|
||||
return Object.entries(ProjectEnvTarget).map(([key, value]) => ({
|
||||
name: key,
|
||||
value: value,
|
||||
}));
|
||||
}
|
||||
export const envTargetChoices = PROJECT_ENV_TARGET.map(t => ({
|
||||
name: title(t),
|
||||
value: t,
|
||||
}));
|
||||
|
||||
export function isValidEnvTarget(
|
||||
target?: string
|
||||
): target is ProjectEnvTarget | undefined {
|
||||
return typeof target === 'undefined' || envTargets().includes(target);
|
||||
// Specify `map` returns strings, instead of string constants so `.includes` works
|
||||
return (
|
||||
typeof target === 'undefined' ||
|
||||
envTargetChoices.map<string>(c => c.value).includes(target)
|
||||
);
|
||||
}
|
||||
|
||||
export function getEnvTargetPlaceholder() {
|
||||
return `<${envTargets().join(' | ')}>`;
|
||||
return `<${envTargetChoices.map(c => c.value).join(' | ')}>`;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import title from 'title';
|
||||
import { ProjectEnvVariable } from '@vercel-internals/types';
|
||||
import type { ProjectEnvVariable } from '@vercel-internals/types';
|
||||
|
||||
export default function formatEnvTarget(env: ProjectEnvVariable): string {
|
||||
const target = (Array.isArray(env.target) ? env.target : [env.target || ''])
|
||||
|
||||
5
packages/cli/src/util/env/get-env-records.ts
vendored
5
packages/cli/src/util/env/get-env-records.ts
vendored
@@ -1,6 +1,9 @@
|
||||
import { Output } from '../output';
|
||||
import Client from '../client';
|
||||
import { ProjectEnvVariable, ProjectEnvTarget } from '@vercel-internals/types';
|
||||
import type {
|
||||
ProjectEnvVariable,
|
||||
ProjectEnvTarget,
|
||||
} from '@vercel-internals/types';
|
||||
import { URLSearchParams } from 'url';
|
||||
|
||||
/** The CLI command that was used that needs the environment variables. */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Output } from '../output';
|
||||
import Client from '../client';
|
||||
import { ProjectEnvVariable } from '@vercel-internals/types';
|
||||
import type { ProjectEnvVariable } from '@vercel-internals/types';
|
||||
|
||||
export default async function removeEnvRecord(
|
||||
output: Output,
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
import semver from 'semver';
|
||||
|
||||
export function getDistTag(version: string): string {
|
||||
const parsed = semver.parse(version);
|
||||
if (parsed && typeof parsed.prerelease[0] === 'string') {
|
||||
return parsed.prerelease[0] as string;
|
||||
}
|
||||
return 'latest';
|
||||
}
|
||||
@@ -2,7 +2,7 @@ import Client from './client';
|
||||
import getUser from './get-user';
|
||||
import getTeamById from './teams/get-team-by-id';
|
||||
import { TeamDeleted } from './errors-ts';
|
||||
import { Team } from '@vercel-internals/types';
|
||||
import type { Team } from '@vercel-internals/types';
|
||||
|
||||
interface GetScopeOptions {
|
||||
getTeam?: boolean;
|
||||
|
||||
@@ -1,31 +1,8 @@
|
||||
import { Stats } from 'fs';
|
||||
import { readFile, realpath } from 'fs-extra';
|
||||
import { sep, dirname, join, resolve } from 'path';
|
||||
import { lstat, readlink, readFile, realpath } from 'fs-extra';
|
||||
import { isCanary } from './is-canary';
|
||||
import { scanParentDirs } from '@vercel/build-utils';
|
||||
import { getPkgName } from './pkg-name';
|
||||
|
||||
async function isYarn(): Promise<boolean> {
|
||||
let s: Stats;
|
||||
let binPath = process.argv[1];
|
||||
|
||||
// eslint-disable-next-line no-constant-condition
|
||||
while (true) {
|
||||
s = await lstat(binPath);
|
||||
if (s.isSymbolicLink()) {
|
||||
binPath = resolve(dirname(binPath), await readlink(binPath));
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
const pkgPath = join(dirname(binPath), '..', 'package.json');
|
||||
/*
|
||||
* Generally, pkgPath looks like:
|
||||
* "/Users/username/.config/yarn/global/node_modules/vercel/package.json"
|
||||
* "/usr/local/share/.config/yarn/global/node_modules/vercel/package.json"
|
||||
*/
|
||||
return pkgPath.includes(join('yarn', 'global'));
|
||||
}
|
||||
|
||||
async function getConfigPrefix() {
|
||||
const paths = [
|
||||
process.env.npm_config_userconfig || process.env.NPM_CONFIG_USERCONFIG,
|
||||
@@ -76,6 +53,10 @@ async function isGlobal() {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (installPath.includes(['', 'pnpm', 'global', ''].join(sep))) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (installPath.includes(['', 'fnm', 'node-versions', ''].join(sep))) {
|
||||
return true;
|
||||
}
|
||||
@@ -99,16 +80,26 @@ async function isGlobal() {
|
||||
}
|
||||
|
||||
export default async function getUpdateCommand(): Promise<string> {
|
||||
const tag = isCanary() ? 'canary' : 'latest';
|
||||
const pkgAndVersion = `${getPkgName()}@${tag}`;
|
||||
const pkgAndVersion = `${getPkgName()}@latest`;
|
||||
|
||||
const entrypoint = await realpath(process.argv[1]);
|
||||
let { cliType, lockfilePath } = await scanParentDirs(
|
||||
dirname(dirname(entrypoint))
|
||||
);
|
||||
if (!lockfilePath) {
|
||||
// Global installs for npm do not have a lockfile
|
||||
cliType = 'npm';
|
||||
}
|
||||
const yarn = cliType === 'yarn';
|
||||
|
||||
let install = yarn ? 'add' : 'i';
|
||||
if (await isGlobal()) {
|
||||
return (await isYarn())
|
||||
? `yarn global add ${pkgAndVersion}`
|
||||
: `npm i -g ${pkgAndVersion}`;
|
||||
if (yarn) {
|
||||
install = 'global add';
|
||||
} else {
|
||||
install = 'i -g';
|
||||
}
|
||||
}
|
||||
|
||||
return (await isYarn())
|
||||
? `yarn add ${pkgAndVersion}`
|
||||
: `npm i ${pkgAndVersion}`;
|
||||
return `${cliType} ${install} ${pkgAndVersion}`;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import Client from './client';
|
||||
import { User } from '@vercel-internals/types';
|
||||
import type { User } from '@vercel-internals/types';
|
||||
import { APIError, InvalidToken, MissingUser } from './errors-ts';
|
||||
|
||||
export default async function getUser(client: Client) {
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { URL } from 'url';
|
||||
import Client from '../client';
|
||||
import { Org } from '@vercel-internals/types';
|
||||
import chalk from 'chalk';
|
||||
import link from '../output/link';
|
||||
import { isAPIError } from '../errors-ts';
|
||||
import { Output } from '../output';
|
||||
import { Dictionary } from '@vercel/client';
|
||||
import type { Org } from '@vercel-internals/types';
|
||||
|
||||
export interface RepoInfo {
|
||||
url: string;
|
||||
@@ -86,40 +87,39 @@ export function formatProvider(type: string): string {
|
||||
}
|
||||
}
|
||||
|
||||
export function parseRepoUrl(originUrl: string): RepoInfo | null {
|
||||
const isSSH = originUrl.startsWith('git@');
|
||||
// Matches all characters between (// or @) and (.com or .org)
|
||||
// eslint-disable-next-line prefer-named-capture-group
|
||||
const provider =
|
||||
/(?<=(\/\/|@)).*(?=(\.com|\.org))/.exec(originUrl)?.[0] ||
|
||||
originUrl.replace('www.', '').split('.')[0];
|
||||
if (!provider) {
|
||||
return null;
|
||||
function getURL(input: string) {
|
||||
let url: URL | null = null;
|
||||
|
||||
try {
|
||||
url = new URL(input);
|
||||
} catch {}
|
||||
|
||||
if (!url) {
|
||||
// Probably an SSH url, so mangle it into a
|
||||
// format that the URL constructor works with.
|
||||
try {
|
||||
url = new URL(`ssh://${input.replace(':', '/')}`);
|
||||
} catch {}
|
||||
}
|
||||
|
||||
let org;
|
||||
let repo;
|
||||
|
||||
if (isSSH) {
|
||||
org = originUrl.split(':')[1].split('/')[0];
|
||||
repo = originUrl.split('/')[1]?.replace('.git', '');
|
||||
} else {
|
||||
// Assume https:// or git://
|
||||
org = originUrl.replace('//', '').split('/')[1];
|
||||
repo = originUrl.replace('//', '').split('/')[2]?.replace('.git', '');
|
||||
}
|
||||
|
||||
if (!org || !repo) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
url: originUrl,
|
||||
provider,
|
||||
org,
|
||||
repo,
|
||||
};
|
||||
return url;
|
||||
}
|
||||
|
||||
export function parseRepoUrl(originUrl: string): RepoInfo | null {
|
||||
const url = getURL(originUrl);
|
||||
if (!url) return null;
|
||||
|
||||
const hostParts = url.hostname.split('.');
|
||||
if (hostParts.length < 2) return null;
|
||||
const provider = hostParts[hostParts.length - 2];
|
||||
|
||||
const pathParts = url.pathname.split('/').filter(Boolean);
|
||||
if (pathParts.length !== 2) return null;
|
||||
const org = pathParts[0];
|
||||
const repo = pathParts[1].replace(/\.git$/, '');
|
||||
return { url: originUrl, provider, org, repo };
|
||||
}
|
||||
|
||||
export function printRemoteUrls(
|
||||
output: Output,
|
||||
remoteUrls: Dictionary<string>
|
||||
|
||||
@@ -36,7 +36,7 @@ export interface CreateOptions {
|
||||
project?: string;
|
||||
wantsPublic: boolean;
|
||||
prebuilt?: boolean;
|
||||
rootDirectory?: string;
|
||||
rootDirectory?: string | null;
|
||||
meta: Dictionary<string>;
|
||||
gitMetadata?: GitMetadata;
|
||||
regions?: string[];
|
||||
@@ -49,6 +49,7 @@ export interface CreateOptions {
|
||||
deployStamp: () => string;
|
||||
projectSettings?: any;
|
||||
skipAutoDetectionConfirmation?: boolean;
|
||||
noWait?: boolean;
|
||||
}
|
||||
|
||||
export interface RemoveOptions {
|
||||
@@ -128,6 +129,7 @@ export default class Now extends EventEmitter {
|
||||
deployStamp,
|
||||
projectSettings,
|
||||
skipAutoDetectionConfirmation,
|
||||
noWait,
|
||||
}: CreateOptions,
|
||||
org: Org,
|
||||
isSettingUpProject: boolean,
|
||||
@@ -174,6 +176,7 @@ export default class Now extends EventEmitter {
|
||||
cwd,
|
||||
prebuilt,
|
||||
rootDirectory,
|
||||
noWait,
|
||||
});
|
||||
|
||||
if (deployment && deployment.warnings) {
|
||||
|
||||
@@ -4,7 +4,7 @@ import chalk from 'chalk';
|
||||
import frameworkList, { Framework } from '@vercel/frameworks';
|
||||
import Client from '../client';
|
||||
import { isSettingValue } from '../is-setting-value';
|
||||
import { ProjectSettings } from '@vercel-internals/types';
|
||||
import type { ProjectSettings } from '@vercel-internals/types';
|
||||
|
||||
const settingMap = {
|
||||
buildCommand: 'Build Command',
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
import pkg from '../../package.json';
|
||||
|
||||
export function isCanary() {
|
||||
return pkg.version.includes('canary');
|
||||
}
|
||||
@@ -12,9 +12,10 @@ export const parseEnv = (env?: string | string[] | Dictionary<string>) => {
|
||||
}
|
||||
|
||||
if (Array.isArray(env)) {
|
||||
const startingDict: Dictionary<string> = {};
|
||||
return env.reduce((o, e) => {
|
||||
let key;
|
||||
let value;
|
||||
let key: string | undefined;
|
||||
let value: string | undefined;
|
||||
const equalsSign = e.indexOf('=');
|
||||
|
||||
if (equalsSign === -1) {
|
||||
@@ -24,9 +25,12 @@ export const parseEnv = (env?: string | string[] | Dictionary<string>) => {
|
||||
value = e.slice(equalsSign + 1);
|
||||
}
|
||||
|
||||
o[key] = value;
|
||||
if (typeof value !== 'undefined') {
|
||||
o[key] = value;
|
||||
}
|
||||
|
||||
return o;
|
||||
}, {} as Dictionary<string | undefined>);
|
||||
}, startingDict);
|
||||
}
|
||||
|
||||
// assume it's already an Object
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import chalk from 'chalk';
|
||||
import Client from '../client';
|
||||
import { ProjectAliasTarget } from '@vercel-internals/types';
|
||||
import type { ProjectAliasTarget } from '@vercel-internals/types';
|
||||
import { isAPIError } from '../errors-ts';
|
||||
|
||||
export async function addDomainToProject(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import Client from '../client';
|
||||
import { Project } from '@vercel-internals/types';
|
||||
import type { Project } from '@vercel-internals/types';
|
||||
|
||||
export default async function createProject(
|
||||
client: Client,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import Client from '../client';
|
||||
import { Project } from '@vercel-internals/types';
|
||||
import type { Project } from '@vercel-internals/types';
|
||||
import { URLSearchParams } from 'url';
|
||||
import { isAPIError } from '../errors-ts';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import Client from '../client';
|
||||
import { Project } from '@vercel-internals/types';
|
||||
import type { Project } from '@vercel-internals/types';
|
||||
import { isAPIError, ProjectNotFound } from '../errors-ts';
|
||||
|
||||
export default async function getProjectByNameOrId(
|
||||
|
||||
@@ -12,7 +12,7 @@ import { InvalidToken, isAPIError, ProjectNotFound } from '../errors-ts';
|
||||
import getUser from '../get-user';
|
||||
import getTeamById from '../teams/get-team-by-id';
|
||||
import { Output } from '../output';
|
||||
import {
|
||||
import type {
|
||||
Project,
|
||||
ProjectLinkResult,
|
||||
Org,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import chalk from 'chalk';
|
||||
import Client from '../client';
|
||||
import { ProjectAliasTarget } from '@vercel-internals/types';
|
||||
import type { ProjectAliasTarget } from '@vercel-internals/types';
|
||||
import { isAPIError } from '../errors-ts';
|
||||
|
||||
export async function removeDomainFromProject(
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Team } from '@vercel-internals/types';
|
||||
import type { Team } from '@vercel-internals/types';
|
||||
import Client from '../client';
|
||||
|
||||
export default async function createTeam(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import Client from '../client';
|
||||
import { Team } from '@vercel-internals/types';
|
||||
import type { Team } from '@vercel-internals/types';
|
||||
|
||||
const teamCache = new Map<string, Team>();
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { URLSearchParams } from 'url';
|
||||
import Client from '../client';
|
||||
import { Team } from '@vercel-internals/types';
|
||||
import type { Team } from '@vercel-internals/types';
|
||||
import { APIError, InvalidToken } from '../errors-ts';
|
||||
|
||||
export interface GetTeamsV1Options {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Team } from '@vercel-internals/types';
|
||||
import type { Team } from '@vercel-internals/types';
|
||||
import Client from '../client';
|
||||
|
||||
export default async function patchTeam(
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"version": 2,
|
||||
"builds": [
|
||||
{ "src": "entrypoint**", "use": "@vercel/node@canary" },
|
||||
{ "src": "type-module-package-json/**/*.js", "use": "@vercel/node@canary" }
|
||||
{ "src": "entrypoint**", "use": "@vercel/node" },
|
||||
{ "src": "type-module-package-json/**/*.js", "use": "@vercel/node" }
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
module go-work-with-shared/api
|
||||
|
||||
go 1.20
|
||||
@@ -0,0 +1,12 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"go-work-with-shared/mylib"
|
||||
)
|
||||
|
||||
// Handler function
|
||||
func Handler(w http.ResponseWriter, r *http.Request) {
|
||||
fmt.Fprintf(w, mylib.Say("hello"))
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
go 1.20
|
||||
|
||||
use (
|
||||
./api/
|
||||
./mylib/
|
||||
)
|
||||
@@ -0,0 +1,3 @@
|
||||
module go-work-with-shared/mylib
|
||||
|
||||
go 1.20
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user