mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-12 21:07:46 +00:00
Compare commits
23 Commits
@vercel/py
...
@vercel/ne
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a92467719b | ||
|
|
f6f16b0347 | ||
|
|
92ad73b8f3 | ||
|
|
849eedf0f2 | ||
|
|
848a62e4a5 | ||
|
|
cb784aeb9c | ||
|
|
3035e18fb6 | ||
|
|
eb40c4c4a0 | ||
|
|
c90ee12b17 | ||
|
|
78be0200b4 | ||
|
|
1b6f3a0f65 | ||
|
|
eceb15ace9 | ||
|
|
fa3f701e05 | ||
|
|
9953fc765f | ||
|
|
29ea1af971 | ||
|
|
083aad448e | ||
|
|
314a105ba1 | ||
|
|
1abda9ca87 | ||
|
|
7a0fed970c | ||
|
|
2f461a8b0b | ||
|
|
ec894bdf7f | ||
|
|
009cea6d30 | ||
|
|
1bab21026e |
13
.github/workflows/test.yml
vendored
13
.github/workflows/test.yml
vendored
@@ -83,7 +83,7 @@ jobs:
|
||||
env:
|
||||
FORCE_COLOR: '1'
|
||||
- name: Test ${{matrix.packageName}}
|
||||
run: node utils/gen.js && node_modules/.bin/turbo run test --cache-dir=".turbo" --log-order=stream --scope=${{matrix.packageName}} --no-deps -- ${{ join(matrix.testPaths, ' ') }}
|
||||
run: node utils/gen.js && node_modules/.bin/turbo run test --summarize --cache-dir=".turbo" --log-order=stream --scope=${{matrix.packageName}} --no-deps -- ${{ join(matrix.testPaths, ' ') }}
|
||||
shell: bash
|
||||
env:
|
||||
JEST_JUNIT_OUTPUT_FILE: ${{github.workspace}}/.junit-reports/${{matrix.scriptName}}-${{matrix.packageName}}-${{matrix.chunkNumber}}-${{ matrix.runner }}.xml
|
||||
@@ -91,13 +91,18 @@ jobs:
|
||||
VERCEL_TEST_TOKEN: ${{ secrets.VERCEL_TEST_TOKEN }}
|
||||
VERCEL_TEST_REGISTRATION_URL: ${{ secrets.VERCEL_TEST_REGISTRATION_URL }}
|
||||
FORCE_COLOR: '1'
|
||||
|
||||
- name: 'Determing Turbo HIT or MISS'
|
||||
id: turbo-summary
|
||||
shell: bash
|
||||
run: |
|
||||
TURBO_MISS_COUNT=`node utils/determine-turbo-hit-or-miss.js`
|
||||
echo "MISS COUNT: $TURBO_MISS_COUNT"
|
||||
echo "misses=$TURBO_MISS_COUNT" >> $GITHUB_OUTPUT
|
||||
- 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
|
||||
|
||||
- name: 'Upload Test Report to Datadog'
|
||||
if: always()
|
||||
if: ${{ steps['turbo-summary'].outputs.misses != '0' }}
|
||||
run: 'npx @datadog/datadog-ci@2.18.1 junit upload --service vercel-cli .junit-reports'
|
||||
env:
|
||||
DATADOG_API_KEY: ${{secrets.DATADOG_API_KEY_CLI}}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
<!-- Replace the API key with your own, see:
|
||||
https://developers.google.com/maps/documentation/javascript/get-api-key -->
|
||||
<!-- <script async="" defer="" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB8pf6ZdFQj5qw7rc_HSGrhUwQKfIe9ICw"></script> -->
|
||||
<!-- <script async="" defer="" src="https://maps.googleapis.com/maps/api/js?key=<YOUR_GOOGLE_MAPS_API_KEY>"></script> -->
|
||||
|
||||
<noscript>Please enable JavaScript to continue using this application.</noscript>
|
||||
</body>
|
||||
|
||||
2
examples/package.json
vendored
2
examples/package.json
vendored
@@ -9,7 +9,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "27.4.1",
|
||||
"@vercel/frameworks": "2.0.1"
|
||||
"@vercel/frameworks": "2.0.2"
|
||||
},
|
||||
"version": null
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
"source-map-support": "0.5.12",
|
||||
"ts-eager": "2.0.2",
|
||||
"ts-jest": "29.1.0",
|
||||
"turbo": "1.10.13",
|
||||
"turbo": "1.10.14",
|
||||
"typescript": "4.9.5"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,37 @@
|
||||
# vercel
|
||||
|
||||
## 32.2.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`849eedf0f`](https://github.com/vercel/vercel/commit/849eedf0f2841211e4175d374f1cf01330bf9611), [`f6f16b034`](https://github.com/vercel/vercel/commit/f6f16b0347bac9f5c33c79ccb1fb9fd9d254cae5), [`3035e18fb`](https://github.com/vercel/vercel/commit/3035e18fb67dfe7031e235a74136a41948f86d5a), [`cb784aeb9`](https://github.com/vercel/vercel/commit/cb784aeb9c9e4eddf1c65b61849a87edb1117af1)]:
|
||||
- @vercel/next@4.0.6
|
||||
- @vercel/remix-builder@2.0.6
|
||||
|
||||
## 32.2.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Add support for bun detection in monorepo ([#10511](https://github.com/vercel/vercel/pull/10511))
|
||||
|
||||
- Updated dependencies [[`1b6f3a0f6`](https://github.com/vercel/vercel/commit/1b6f3a0f6534f71c7486a4e33ac199f1da330626)]:
|
||||
- @vercel/static-build@2.0.6
|
||||
|
||||
## 32.2.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`083aad448`](https://github.com/vercel/vercel/commit/083aad448e45edae296da3201eec9f890a01d22d)]:
|
||||
- @vercel/next@4.0.5
|
||||
|
||||
## 32.2.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`7a0fed970`](https://github.com/vercel/vercel/commit/7a0fed970c39cb8f4df70544ded3284d3538b06a), [`2f461a8b0`](https://github.com/vercel/vercel/commit/2f461a8b0bcbdd05da0516395c2905c2d0242682), [`1bab21026`](https://github.com/vercel/vercel/commit/1bab21026ec0bb8a4a8fbeac3d6e4a197f1030fd)]:
|
||||
- @vercel/next@4.0.4
|
||||
- @vercel/remix-builder@2.0.5
|
||||
|
||||
## 32.2.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "vercel",
|
||||
"version": "32.2.1",
|
||||
"version": "32.2.5",
|
||||
"preferGlobal": true,
|
||||
"license": "Apache-2.0",
|
||||
"description": "The command-line interface for Vercel",
|
||||
@@ -34,13 +34,13 @@
|
||||
"@vercel/build-utils": "7.2.0",
|
||||
"@vercel/go": "3.0.1",
|
||||
"@vercel/hydrogen": "1.0.1",
|
||||
"@vercel/next": "4.0.3",
|
||||
"@vercel/next": "4.0.6",
|
||||
"@vercel/node": "3.0.5",
|
||||
"@vercel/python": "4.0.1",
|
||||
"@vercel/redwood": "2.0.2",
|
||||
"@vercel/remix-builder": "2.0.4",
|
||||
"@vercel/remix-builder": "2.0.6",
|
||||
"@vercel/ruby": "2.0.2",
|
||||
"@vercel/static-build": "2.0.5"
|
||||
"@vercel/static-build": "2.0.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@alex_neo/jest-expect-message": "1.0.5",
|
||||
@@ -89,8 +89,8 @@
|
||||
"@vercel-internals/types": "1.0.10",
|
||||
"@vercel/client": "13.0.3",
|
||||
"@vercel/error-utils": "2.0.1",
|
||||
"@vercel/frameworks": "2.0.1",
|
||||
"@vercel/fs-detectors": "5.0.2",
|
||||
"@vercel/frameworks": "2.0.2",
|
||||
"@vercel/fs-detectors": "5.1.0",
|
||||
"@vercel/fun": "1.1.0",
|
||||
"@vercel/ncc": "0.24.0",
|
||||
"@vercel/routing-utils": "3.0.0",
|
||||
|
||||
@@ -41,7 +41,7 @@ export async function initCorepack({
|
||||
const pkgManagerName = pkg.packageManager.split('@')[0];
|
||||
// We must explicitly call `corepack enable npm` since `corepack enable`
|
||||
// doesn't work with npm. See https://github.com/nodejs/corepack/pull/24
|
||||
// Also, `corepack enable` is too broad and will change the verison of
|
||||
// Also, `corepack enable` is too broad and will change the version of
|
||||
// yarn & pnpm even though those versions are not specified by the user.
|
||||
// See https://github.com/nodejs/corepack#known-good-releases
|
||||
// Finally, we use `--install-directory` so we can cache the result to
|
||||
|
||||
@@ -13,8 +13,8 @@ import { setupTmpDir } from '../../helpers/setup-unit-fixture';
|
||||
|
||||
describe('link', () => {
|
||||
it('should prompt for link', async () => {
|
||||
const cwd = setupTmpDir();
|
||||
const user = useUser();
|
||||
const cwd = setupTmpDir();
|
||||
useTeams('team_dummy');
|
||||
const { project } = useProject({
|
||||
...defaultProject,
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @vercel/frameworks
|
||||
|
||||
## 2.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Add `bun install` placeholder ([#10492](https://github.com/vercel/vercel/pull/10492))
|
||||
|
||||
## 2.0.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/frameworks",
|
||||
"version": "2.0.1",
|
||||
"version": "2.0.2",
|
||||
"main": "./dist/frameworks.js",
|
||||
"types": "./dist/frameworks.d.ts",
|
||||
"files": [
|
||||
|
||||
@@ -42,7 +42,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `blitz build`',
|
||||
@@ -82,7 +83,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `next build`',
|
||||
@@ -125,7 +127,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `gatsby build`',
|
||||
@@ -214,7 +217,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
value: 'remix build',
|
||||
@@ -252,7 +256,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install` or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
value: 'astro build',
|
||||
@@ -299,7 +304,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `hexo generate`',
|
||||
@@ -334,7 +340,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `npx @11ty/eleventy`',
|
||||
@@ -371,7 +378,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `docusaurus build`',
|
||||
@@ -457,7 +465,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `docusaurus-build`',
|
||||
@@ -508,7 +517,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `preact build`',
|
||||
@@ -555,7 +565,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `solid-start build`',
|
||||
@@ -591,7 +602,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `dojo build`',
|
||||
@@ -651,7 +663,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `ember build`',
|
||||
@@ -696,7 +709,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `vue-cli-service build`',
|
||||
@@ -749,7 +763,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `ng build && scully`',
|
||||
@@ -784,7 +799,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `ng build`',
|
||||
@@ -827,7 +843,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `ng build`',
|
||||
@@ -885,7 +902,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `polymer build`',
|
||||
@@ -944,7 +962,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `rollup -c`',
|
||||
@@ -994,7 +1013,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `svelte-kit build`',
|
||||
@@ -1032,7 +1052,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: 'vite build',
|
||||
@@ -1066,7 +1087,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `react-scripts build`',
|
||||
@@ -1129,7 +1151,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `react-scripts build`',
|
||||
@@ -1188,7 +1211,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `gridsome build`',
|
||||
@@ -1223,7 +1247,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `umi build`',
|
||||
@@ -1267,7 +1292,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `sapper export`',
|
||||
@@ -1302,7 +1328,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `saber build`',
|
||||
@@ -1351,7 +1378,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `stencil build`',
|
||||
@@ -1420,7 +1448,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `nuxt generate`',
|
||||
@@ -1476,7 +1505,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
value: 'yarn rw deploy vercel',
|
||||
@@ -1606,7 +1636,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `brunch build --production`',
|
||||
@@ -1717,7 +1748,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
value: 'shopify hydrogen build',
|
||||
@@ -1753,7 +1785,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `vite build`',
|
||||
@@ -1787,7 +1820,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `vitepress build docs`',
|
||||
@@ -1819,7 +1853,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `vuepress build src`',
|
||||
@@ -1852,7 +1887,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `parcel build`',
|
||||
@@ -1909,7 +1945,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run build` or `sanity build`',
|
||||
@@ -1953,7 +1990,8 @@ export const frameworks = [
|
||||
},
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
value: 'storybook build',
|
||||
@@ -1975,7 +2013,8 @@ export const frameworks = [
|
||||
description: 'No framework or an unoptimized framework.',
|
||||
settings: {
|
||||
installCommand: {
|
||||
placeholder: '`yarn install`, `pnpm install`, or `npm install`',
|
||||
placeholder:
|
||||
'`yarn install`, `pnpm install`, `npm install`, or `bun install`',
|
||||
},
|
||||
buildCommand: {
|
||||
placeholder: '`npm run vercel-build` or `npm run build`',
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
# @vercel/fs-detectors
|
||||
|
||||
## 5.1.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- Add support for bun detection in monorepo ([#10511](https://github.com/vercel/vercel/pull/10511))
|
||||
|
||||
## 5.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`ec894bdf7`](https://github.com/vercel/vercel/commit/ec894bdf7f167debded37183f11360756f577f14)]:
|
||||
- @vercel/frameworks@2.0.2
|
||||
|
||||
## 5.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/fs-detectors",
|
||||
"version": "5.0.2",
|
||||
"version": "5.1.0",
|
||||
"description": "Vercel filesystem detectors",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
@@ -21,7 +21,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@vercel/error-utils": "2.0.1",
|
||||
"@vercel/frameworks": "2.0.1",
|
||||
"@vercel/frameworks": "2.0.2",
|
||||
"@vercel/routing-utils": "3.0.0",
|
||||
"glob": "8.0.3",
|
||||
"js-yaml": "4.1.0",
|
||||
|
||||
@@ -37,6 +37,24 @@ export const packageManagers: Array<
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'bun',
|
||||
slug: 'bun',
|
||||
logo: '',
|
||||
darkModeLogo: '',
|
||||
detectors: {
|
||||
some: [
|
||||
{
|
||||
path: 'bun.lockb',
|
||||
},
|
||||
{
|
||||
path: 'package.json',
|
||||
// Depends on https://github.com/nodejs/corepack/pull/307
|
||||
matchContent: '"packageManager":\\s*"bun@.*"',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'yarn',
|
||||
slug: 'yarn',
|
||||
|
||||
0
packages/fs-detectors/test/fixtures/57-bun-with-lockfile/bun.lockb
vendored
Normal file
0
packages/fs-detectors/test/fixtures/57-bun-with-lockfile/bun.lockb
vendored
Normal file
1
packages/fs-detectors/test/fixtures/57-bun-with-lockfile/package.json
vendored
Normal file
1
packages/fs-detectors/test/fixtures/57-bun-with-lockfile/package.json
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
3
packages/fs-detectors/test/fixtures/58-bun-with-corepack/package.json
vendored
Normal file
3
packages/fs-detectors/test/fixtures/58-bun-with-corepack/package.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"packageManager": "bun@1.0.1"
|
||||
}
|
||||
@@ -14,6 +14,8 @@ describe('package-managers', () => {
|
||||
['54-yarn-with-corepack', 'yarn'],
|
||||
['55-pnpm-with-lockfile', 'pnpm'],
|
||||
['56-pnpm-with-corepack', 'pnpm'],
|
||||
['57-bun-with-lockfile', 'bun'],
|
||||
['58-bun-with-corepack', 'bun'],
|
||||
])('with detectFramework', (fixturePath, frameworkSlug) => {
|
||||
const testName = `should detect package manager '${frameworkSlug}' for ${fixturePath}`;
|
||||
|
||||
|
||||
@@ -1,5 +1,25 @@
|
||||
# @vercel/next
|
||||
|
||||
## 4.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Fix feature flag detection ([#10531](https://github.com/vercel/vercel/pull/10531))
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- missed a prerender for experimentalBypassFor ([#10504](https://github.com/vercel/vercel/pull/10504))
|
||||
|
||||
## 4.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- provide `experimentalBypassFor` to Prerender from manifest ([#10497](https://github.com/vercel/vercel/pull/10497))
|
||||
|
||||
- next.js: move app route handlers in their own lambda grouping, add flag to use bundled runtime ([#10485](https://github.com/vercel/vercel/pull/10485))
|
||||
|
||||
## 4.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/next",
|
||||
"version": "4.0.3",
|
||||
"version": "4.0.6",
|
||||
"license": "Apache-2.0",
|
||||
"main": "./dist/index",
|
||||
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/next-js",
|
||||
|
||||
@@ -65,6 +65,12 @@ const NEXT_DATA_MIDDLEWARE_RESOLVING_VERSION = 'v12.1.7-canary.33';
|
||||
const EMPTY_ALLOW_QUERY_FOR_PRERENDERED_VERSION = 'v12.2.0';
|
||||
const CORRECTED_MANIFESTS_VERSION = 'v12.2.0';
|
||||
|
||||
// related PR: https://github.com/vercel/next.js/pull/52997
|
||||
const BUNDLED_SERVER_NEXT_VERSION = '13.4.20-canary.26';
|
||||
|
||||
const BUNDLED_SERVER_NEXT_PATH =
|
||||
'next/dist/compiled/next-server/server.runtime.prod.js';
|
||||
|
||||
export async function serverBuild({
|
||||
dynamicPages,
|
||||
pagesDir,
|
||||
@@ -305,16 +311,32 @@ export async function serverBuild({
|
||||
let nextServerBuildTrace;
|
||||
let instrumentationHookBuildTrace;
|
||||
|
||||
const useBundledServer =
|
||||
semver.gte(nextVersion, BUNDLED_SERVER_NEXT_VERSION) &&
|
||||
process.env.VERCEL_NEXT_BUNDLED_SERVER === '1';
|
||||
|
||||
if (useBundledServer) {
|
||||
debug('Using bundled Next.js server');
|
||||
}
|
||||
|
||||
const nextServerFile = resolveFrom(
|
||||
projectDir,
|
||||
`${getNextServerPath(nextVersion)}/next-server.js`
|
||||
useBundledServer
|
||||
? BUNDLED_SERVER_NEXT_PATH
|
||||
: `${getNextServerPath(nextVersion)}/next-server.js`
|
||||
);
|
||||
|
||||
try {
|
||||
// leverage next-server trace from build if available
|
||||
nextServerBuildTrace = JSON.parse(
|
||||
await fs.readFile(
|
||||
path.join(entryPath, outputDirectory, 'next-server.js.nft.json'),
|
||||
path.join(
|
||||
entryPath,
|
||||
outputDirectory,
|
||||
useBundledServer
|
||||
? 'next-minimal-server.js.nft.json'
|
||||
: 'next-server.js.nft.json'
|
||||
),
|
||||
'utf8'
|
||||
)
|
||||
);
|
||||
@@ -407,6 +429,7 @@ export async function serverBuild({
|
||||
const apiPages: string[] = [];
|
||||
const nonApiPages: string[] = [];
|
||||
const appRouterPages: string[] = [];
|
||||
const appRouteHandlers: string[] = [];
|
||||
|
||||
lambdaPageKeys.forEach(page => {
|
||||
if (
|
||||
@@ -428,7 +451,11 @@ export async function serverBuild({
|
||||
}
|
||||
|
||||
if (lambdaAppPaths[page]) {
|
||||
appRouterPages.push(page);
|
||||
if (lambdaAppPaths[page].fsPath.endsWith('route.js')) {
|
||||
appRouteHandlers.push(page);
|
||||
} else {
|
||||
appRouterPages.push(page);
|
||||
}
|
||||
} else if (pageMatchesApi(page)) {
|
||||
apiPages.push(page);
|
||||
} else {
|
||||
@@ -596,7 +623,9 @@ export async function serverBuild({
|
||||
)
|
||||
.replace(
|
||||
'__NEXT_SERVER_PATH__',
|
||||
`${getNextServerPath(nextVersion)}/next-server.js`
|
||||
useBundledServer
|
||||
? BUNDLED_SERVER_NEXT_PATH
|
||||
: `${getNextServerPath(nextVersion)}/next-server.js`
|
||||
);
|
||||
|
||||
const appLauncher = launcher.replace(
|
||||
@@ -632,6 +661,7 @@ export async function serverBuild({
|
||||
const mergedPageKeys = [
|
||||
...nonApiPages,
|
||||
...appRouterPages,
|
||||
...appRouteHandlers,
|
||||
...apiPages,
|
||||
...internalPages,
|
||||
];
|
||||
@@ -793,6 +823,10 @@ export async function serverBuild({
|
||||
pageExtensions,
|
||||
});
|
||||
|
||||
for (const group of pageLambdaGroups) {
|
||||
group.isPages = true;
|
||||
}
|
||||
|
||||
const appRouterLambdaGroups = await getPageLambdaGroups({
|
||||
entryPath: projectDir,
|
||||
config,
|
||||
@@ -809,6 +843,22 @@ export async function serverBuild({
|
||||
pageExtensions,
|
||||
});
|
||||
|
||||
const appRouteHandlersLambdaGroups = await getPageLambdaGroups({
|
||||
entryPath: projectDir,
|
||||
config,
|
||||
functionsConfigManifest,
|
||||
pages: appRouteHandlers,
|
||||
prerenderRoutes,
|
||||
pageTraces,
|
||||
compressedPages,
|
||||
tracedPseudoLayer: tracedPseudoLayer.pseudoLayer,
|
||||
initialPseudoLayer,
|
||||
lambdaCompressedByteLimit,
|
||||
initialPseudoLayerUncompressed: uncompressedInitialSize,
|
||||
internalPages,
|
||||
pageExtensions,
|
||||
});
|
||||
|
||||
for (const group of appRouterLambdaGroups) {
|
||||
if (!group.isPrerenders) {
|
||||
group.isStreaming = true;
|
||||
@@ -816,6 +866,14 @@ export async function serverBuild({
|
||||
group.isAppRouter = true;
|
||||
}
|
||||
|
||||
for (const group of appRouteHandlersLambdaGroups) {
|
||||
if (!group.isPrerenders) {
|
||||
group.isStreaming = true;
|
||||
}
|
||||
group.isAppRouter = true;
|
||||
group.isAppRouteHandler = true;
|
||||
}
|
||||
|
||||
const apiLambdaGroups = await getPageLambdaGroups({
|
||||
entryPath: projectDir,
|
||||
config,
|
||||
@@ -857,6 +915,14 @@ export async function serverBuild({
|
||||
pseudoLayerBytes: group.pseudoLayerBytes,
|
||||
uncompressedLayerBytes: group.pseudoLayerUncompressedBytes,
|
||||
})),
|
||||
appRouteHandlersLambdaGroups: appRouteHandlersLambdaGroups.map(
|
||||
group => ({
|
||||
pages: group.pages,
|
||||
isPrerender: group.isPrerenders,
|
||||
pseudoLayerBytes: group.pseudoLayerBytes,
|
||||
uncompressedLayerBytes: group.pseudoLayerUncompressedBytes,
|
||||
})
|
||||
),
|
||||
nextServerLayerSize: initialPseudoLayer.pseudoLayerBytes,
|
||||
},
|
||||
null,
|
||||
@@ -867,6 +933,7 @@ export async function serverBuild({
|
||||
...pageLambdaGroups,
|
||||
...appRouterLambdaGroups,
|
||||
...apiLambdaGroups,
|
||||
...appRouteHandlersLambdaGroups,
|
||||
];
|
||||
|
||||
await detectLambdaLimitExceeding(
|
||||
|
||||
@@ -29,6 +29,7 @@ const nextServer = new NextServer({
|
||||
minimalMode: true,
|
||||
customServer: false,
|
||||
});
|
||||
|
||||
const requestHandler = nextServer.getRequestHandler();
|
||||
|
||||
module.exports = async (req: IncomingMessage, res: ServerResponse) => {
|
||||
|
||||
@@ -856,6 +856,7 @@ export type NextPrerenderedRoutes = {
|
||||
srcRoute: string | null;
|
||||
initialStatus?: number;
|
||||
initialHeaders?: Record<string, string>;
|
||||
experimentalBypassFor?: HasField;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -864,6 +865,7 @@ export type NextPrerenderedRoutes = {
|
||||
routeRegex: string;
|
||||
dataRoute: string | null;
|
||||
dataRouteRegex: string | null;
|
||||
experimentalBypassFor?: HasField;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -873,6 +875,7 @@ export type NextPrerenderedRoutes = {
|
||||
routeRegex: string;
|
||||
dataRoute: string | null;
|
||||
dataRouteRegex: string | null;
|
||||
experimentalBypassFor?: HasField;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -881,6 +884,7 @@ export type NextPrerenderedRoutes = {
|
||||
routeRegex: string;
|
||||
dataRoute: string | null;
|
||||
dataRouteRegex: string | null;
|
||||
experimentalBypassFor?: HasField;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1084,6 +1088,7 @@ export async function getPrerenderManifest(
|
||||
dataRoute: string | null;
|
||||
initialStatus?: number;
|
||||
initialHeaders?: Record<string, string>;
|
||||
experimentalBypassFor?: HasField;
|
||||
};
|
||||
};
|
||||
dynamicRoutes: {
|
||||
@@ -1092,6 +1097,7 @@ export async function getPrerenderManifest(
|
||||
fallback: string | false;
|
||||
dataRoute: string | null;
|
||||
dataRouteRegex: string | null;
|
||||
experimentalBypassFor?: HasField;
|
||||
};
|
||||
};
|
||||
preview: {
|
||||
@@ -1177,10 +1183,12 @@ export async function getPrerenderManifest(
|
||||
|
||||
let initialStatus: undefined | number;
|
||||
let initialHeaders: undefined | Record<string, string>;
|
||||
let experimentalBypassFor: undefined | HasField;
|
||||
|
||||
if (manifest.version === 4) {
|
||||
initialStatus = manifest.routes[route].initialStatus;
|
||||
initialHeaders = manifest.routes[route].initialHeaders;
|
||||
experimentalBypassFor = manifest.routes[route].experimentalBypassFor;
|
||||
}
|
||||
|
||||
ret.staticRoutes[route] = {
|
||||
@@ -1192,15 +1200,23 @@ export async function getPrerenderManifest(
|
||||
srcRoute,
|
||||
initialStatus,
|
||||
initialHeaders,
|
||||
experimentalBypassFor,
|
||||
};
|
||||
});
|
||||
|
||||
lazyRoutes.forEach(lazyRoute => {
|
||||
const { routeRegex, fallback, dataRoute, dataRouteRegex } =
|
||||
manifest.dynamicRoutes[lazyRoute];
|
||||
let experimentalBypassFor: undefined | HasField;
|
||||
|
||||
if (manifest.version === 4) {
|
||||
experimentalBypassFor =
|
||||
manifest.dynamicRoutes[lazyRoute].experimentalBypassFor;
|
||||
}
|
||||
|
||||
if (typeof fallback === 'string') {
|
||||
ret.fallbackRoutes[lazyRoute] = {
|
||||
experimentalBypassFor,
|
||||
routeRegex,
|
||||
fallback,
|
||||
dataRoute,
|
||||
@@ -1208,6 +1224,7 @@ export async function getPrerenderManifest(
|
||||
};
|
||||
} else if (fallback === null) {
|
||||
ret.blockingFallbackRoutes[lazyRoute] = {
|
||||
experimentalBypassFor,
|
||||
routeRegex,
|
||||
dataRoute,
|
||||
dataRouteRegex,
|
||||
@@ -1216,6 +1233,7 @@ export async function getPrerenderManifest(
|
||||
// Fallback behavior is disabled, all routes would've been provided
|
||||
// in the top-level `routes` key (`staticRoutes`).
|
||||
ret.omittedRoutes[lazyRoute] = {
|
||||
experimentalBypassFor,
|
||||
routeRegex,
|
||||
dataRoute,
|
||||
dataRouteRegex,
|
||||
@@ -1391,8 +1409,10 @@ export type LambdaGroup = {
|
||||
memory?: number;
|
||||
maxDuration?: number;
|
||||
isAppRouter?: boolean;
|
||||
isAppRouteHandler?: boolean;
|
||||
isStreaming?: boolean;
|
||||
isPrerenders?: boolean;
|
||||
isPages?: boolean;
|
||||
isApiLambda: boolean;
|
||||
pseudoLayer: PseudoLayer;
|
||||
pseudoLayerBytes: number;
|
||||
@@ -1907,6 +1927,7 @@ export const onPrerenderRoute =
|
||||
let dataRoute: string | null;
|
||||
let initialStatus: number | undefined;
|
||||
let initialHeaders: Record<string, string> | undefined;
|
||||
let experimentalBypassFor: HasField | undefined;
|
||||
|
||||
if (isFallback || isBlocking) {
|
||||
const pr = isFallback
|
||||
@@ -1923,10 +1944,13 @@ export const onPrerenderRoute =
|
||||
}
|
||||
srcRoute = null;
|
||||
dataRoute = pr.dataRoute;
|
||||
experimentalBypassFor = pr.experimentalBypassFor;
|
||||
} else if (isOmitted) {
|
||||
initialRevalidate = false;
|
||||
srcRoute = routeKey;
|
||||
dataRoute = prerenderManifest.omittedRoutes[routeKey].dataRoute;
|
||||
experimentalBypassFor =
|
||||
prerenderManifest.omittedRoutes[routeKey].experimentalBypassFor;
|
||||
} else {
|
||||
const pr = prerenderManifest.staticRoutes[routeKey];
|
||||
({
|
||||
@@ -1935,6 +1959,7 @@ export const onPrerenderRoute =
|
||||
dataRoute,
|
||||
initialHeaders,
|
||||
initialStatus,
|
||||
experimentalBypassFor,
|
||||
} = pr);
|
||||
}
|
||||
|
||||
@@ -2175,6 +2200,7 @@ export const onPrerenderRoute =
|
||||
fallback: htmlFsRef,
|
||||
group: prerenderGroup,
|
||||
bypassToken: prerenderManifest.bypassToken,
|
||||
experimentalBypassFor,
|
||||
initialStatus,
|
||||
initialHeaders,
|
||||
sourcePath,
|
||||
@@ -2203,6 +2229,7 @@ export const onPrerenderRoute =
|
||||
fallback: jsonFsRef,
|
||||
group: prerenderGroup,
|
||||
bypassToken: prerenderManifest.bypassToken,
|
||||
experimentalBypassFor,
|
||||
|
||||
...(isNotFound
|
||||
? {
|
||||
|
||||
1
packages/next/test/fixtures/37-bundled-server/.gitignore
vendored
Normal file
1
packages/next/test/fixtures/37-bundled-server/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.vercel
|
||||
5
packages/next/test/fixtures/37-bundled-server/app/app-route/route.js
vendored
Normal file
5
packages/next/test/fixtures/37-bundled-server/app/app-route/route.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
export async function GET() {
|
||||
return new Response('hello world from app route')
|
||||
}
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
5
packages/next/test/fixtures/37-bundled-server/app/app/page.js
vendored
Normal file
5
packages/next/test/fixtures/37-bundled-server/app/app/page.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
export default function Page() {
|
||||
return <p>hello world from app router</p>
|
||||
}
|
||||
|
||||
export const dynamic = 'force-dynamic'
|
||||
10
packages/next/test/fixtures/37-bundled-server/app/layout.js
vendored
Normal file
10
packages/next/test/fixtures/37-bundled-server/app/layout.js
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
export default function Layout({children}) {
|
||||
return <html>
|
||||
<head>
|
||||
<title>My page</title>
|
||||
</head>
|
||||
<body>
|
||||
{children}
|
||||
</body>
|
||||
</html>
|
||||
}
|
||||
8
packages/next/test/fixtures/37-bundled-server/index.test.js
vendored
Normal file
8
packages/next/test/fixtures/37-bundled-server/index.test.js
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
const path = require('path');
|
||||
const { deployAndTest } = require('../../utils');
|
||||
|
||||
describe(`${__dirname.split(path.sep).pop()}`, () => {
|
||||
it('should deploy and pass probe checks', async () => {
|
||||
await deployAndTest(__dirname);
|
||||
});
|
||||
});
|
||||
15
packages/next/test/fixtures/37-bundled-server/package.json
vendored
Normal file
15
packages/next/test/fixtures/37-bundled-server/package.json
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "bundled-server",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start"
|
||||
},
|
||||
"dependencies": {
|
||||
"next": "canary",
|
||||
"react": "latest",
|
||||
"react-dom": "latest"
|
||||
}
|
||||
}
|
||||
5
packages/next/test/fixtures/37-bundled-server/pages/api/hello.js
vendored
Normal file
5
packages/next/test/fixtures/37-bundled-server/pages/api/hello.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
export default async (req, res) => {
|
||||
res.status(200).json({
|
||||
payload: `hello world from api`
|
||||
});
|
||||
};
|
||||
7
packages/next/test/fixtures/37-bundled-server/pages/index.js
vendored
Normal file
7
packages/next/test/fixtures/37-bundled-server/pages/index.js
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
export default function Home(props) {
|
||||
return `hello world from pages`;
|
||||
}
|
||||
|
||||
export async function getServerSideProps() {
|
||||
return {};
|
||||
}
|
||||
24
packages/next/test/fixtures/37-bundled-server/probes.json
vendored
Normal file
24
packages/next/test/fixtures/37-bundled-server/probes.json
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"probes": [
|
||||
{
|
||||
"path": "/app",
|
||||
"status": 200,
|
||||
"mustContain": "hello world from app router"
|
||||
},
|
||||
{
|
||||
"path": "/app-route",
|
||||
"status": 200,
|
||||
"mustContain": "hello world from app route"
|
||||
},
|
||||
{
|
||||
"path": "/api/hello",
|
||||
"status": 200,
|
||||
"mustContain": "hello world from api"
|
||||
},
|
||||
{
|
||||
"path": "/",
|
||||
"status": 200,
|
||||
"mustContain": "hello world from pages"
|
||||
}
|
||||
]
|
||||
}
|
||||
7
packages/next/test/fixtures/37-bundled-server/vercel.json
vendored
Normal file
7
packages/next/test/fixtures/37-bundled-server/vercel.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"build": {
|
||||
"env": {
|
||||
"VERCEL_NEXT_BUNDLED_SERVER": "1"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -72,7 +72,7 @@ if (parseInt(process.versions.node.split('.')[0], 10) >= 16) {
|
||||
)
|
||||
).toBeFalsy();
|
||||
|
||||
expect(lambdas.size).toBe(4);
|
||||
expect(lambdas.size).toBe(5);
|
||||
|
||||
// RSC, root-level page.js
|
||||
expect(buildResult.output['index']).toBeDefined();
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
# @vercel/remix-builder
|
||||
|
||||
## 2.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Fix ESM mode for Edge runtime ([#10530](https://github.com/vercel/vercel/pull/10530))
|
||||
|
||||
- Update `@remix-run/dev` fork to v2.0.0 ([#10526](https://github.com/vercel/vercel/pull/10526))
|
||||
|
||||
- Fixes for Remix v2 ([#10525](https://github.com/vercel/vercel/pull/10525))
|
||||
|
||||
## 2.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Fix usage with `bun install` ([#10489](https://github.com/vercel/vercel/pull/10489))
|
||||
|
||||
## 2.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import { createRequestHandler } from '@remix-run/server-runtime';
|
||||
import build from '@remix-run/dev/server-build';
|
||||
export default createRequestHandler(build);
|
||||
import * as build from '@remix-run/dev/server-build';
|
||||
export default createRequestHandler(build.default || build);
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
import {
|
||||
AbortController as NodeAbortController,
|
||||
createRequestHandler as createRemixRequestHandler,
|
||||
Headers as NodeHeaders,
|
||||
Request as NodeRequest,
|
||||
writeReadableStreamToWritable,
|
||||
installGlobals,
|
||||
} from '@remix-run/node';
|
||||
|
||||
installGlobals();
|
||||
|
||||
import build from '@remix-run/dev/server-build';
|
||||
import * as build from '@remix-run/dev/server-build';
|
||||
|
||||
const handleRequest = createRemixRequestHandler(build, process.env.NODE_ENV);
|
||||
const handleRequest = createRemixRequestHandler(
|
||||
build.default || build,
|
||||
process.env.NODE_ENV
|
||||
);
|
||||
|
||||
function createRemixHeaders(requestHeaders) {
|
||||
const headers = new NodeHeaders();
|
||||
const headers = new Headers();
|
||||
|
||||
for (const key in requestHeaders) {
|
||||
const header = requestHeaders[key];
|
||||
@@ -37,7 +37,7 @@ function createRemixRequest(req, res) {
|
||||
const url = new URL(req.url, `${protocol}://${host}`);
|
||||
|
||||
// Abort action/loaders once we can no longer write a response
|
||||
const controller = new NodeAbortController();
|
||||
const controller = new AbortController();
|
||||
res.on('close', () => controller.abort());
|
||||
|
||||
const init = {
|
||||
@@ -50,7 +50,7 @@ function createRemixRequest(req, res) {
|
||||
init.body = req;
|
||||
}
|
||||
|
||||
return new NodeRequest(url.href, init);
|
||||
return new Request(url.href, init);
|
||||
}
|
||||
|
||||
async function sendRemixResponse(res, nodeResponse) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/remix-builder",
|
||||
"version": "2.0.4",
|
||||
"version": "2.0.6",
|
||||
"license": "Apache-2.0",
|
||||
"main": "./dist/index.js",
|
||||
"homepage": "https://vercel.com/docs",
|
||||
@@ -25,7 +25,7 @@
|
||||
"ts-morph": "12.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@remix-run/dev": "npm:@vercel/remix-run-dev@1.19.3",
|
||||
"@remix-run/dev": "npm:@vercel/remix-run-dev@2.0.0",
|
||||
"@types/jest": "27.5.1",
|
||||
"@types/node": "14.18.33",
|
||||
"@types/semver": "7.3.13",
|
||||
|
||||
@@ -141,9 +141,10 @@ export const build: BuildV2 = async ({
|
||||
await runNpmInstall(entrypointFsDirname, [], spawnOpts, meta, nodeVersion);
|
||||
}
|
||||
|
||||
const isHydrogen2 =
|
||||
const isHydrogen2 = Boolean(
|
||||
pkg.dependencies?.['@shopify/remix-oxygen'] ||
|
||||
pkg.devDependencies?.['@shopify/remix-oxygen'];
|
||||
pkg.devDependencies?.['@shopify/remix-oxygen']
|
||||
);
|
||||
|
||||
// Determine the version of Remix based on the `@remix-run/dev`
|
||||
// package version.
|
||||
@@ -167,9 +168,17 @@ export const build: BuildV2 = async ({
|
||||
|
||||
const depsToAdd: string[] = [];
|
||||
|
||||
const remixRunDevPkgVersion: string | undefined =
|
||||
pkg.dependencies?.['@remix-run/dev'] ||
|
||||
pkg.devDependencies?.['@remix-run/dev'];
|
||||
|
||||
// Override the official `@remix-run/dev` package with the
|
||||
// Vercel fork, which supports the `serverBundles` config
|
||||
if (!isHydrogen2 && remixRunDevPkg.name !== '@vercel/remix-run-dev') {
|
||||
if (
|
||||
!isHydrogen2 &&
|
||||
remixRunDevPkg.name !== '@vercel/remix-run-dev' &&
|
||||
!remixRunDevPkgVersion?.startsWith('https:')
|
||||
) {
|
||||
const remixDevForkVersion = resolveSemverMinMax(
|
||||
REMIX_RUN_DEV_MIN_VERSION,
|
||||
REMIX_RUN_DEV_MAX_VERSION,
|
||||
@@ -308,7 +317,7 @@ export const build: BuildV2 = async ({
|
||||
renamedRemixConfigPath
|
||||
)}';
|
||||
config.serverBuildTarget = undefined;
|
||||
config.serverModuleFormat = 'cjs';
|
||||
config.serverModuleFormat = '${pkg.type === 'module' ? 'esm' : 'cjs'}';
|
||||
config.serverPlatform = 'node';
|
||||
config.serverBuildPath = undefined;
|
||||
config.serverBundles = ${JSON.stringify(serverBundles)};
|
||||
@@ -318,7 +327,7 @@ export default config;`;
|
||||
renamedRemixConfigPath
|
||||
)}');
|
||||
config.serverBuildTarget = undefined;
|
||||
config.serverModuleFormat = 'cjs';
|
||||
config.serverModuleFormat = '${pkg.type === 'module' ? 'esm' : 'cjs'}';
|
||||
config.serverPlatform = 'node';
|
||||
config.serverBuildPath = undefined;
|
||||
config.serverBundles = ${JSON.stringify(serverBundles)};
|
||||
|
||||
@@ -278,29 +278,41 @@ export function addDependencies(
|
||||
}
|
||||
const args: string[] = [];
|
||||
|
||||
if (cliType === 'npm' || cliType === 'pnpm') {
|
||||
args.push('install');
|
||||
if (opts.saveDev) {
|
||||
args.push('--save-dev');
|
||||
}
|
||||
} else {
|
||||
// 'yarn'
|
||||
args.push('add');
|
||||
if (opts.saveDev) {
|
||||
args.push('--dev');
|
||||
}
|
||||
const yarnVersion = execSync('yarn -v', { encoding: 'utf8' }).trim();
|
||||
const isYarnV1 = semver.satisfies(yarnVersion, '1');
|
||||
if (isYarnV1) {
|
||||
// Ignoring workspace check is only needed on Yarn v1
|
||||
args.push('--ignore-workspace-root-check');
|
||||
}
|
||||
}
|
||||
switch (cliType) {
|
||||
case 'npm':
|
||||
case 'pnpm':
|
||||
args.push('install');
|
||||
if (opts.saveDev) {
|
||||
args.push('--save-dev');
|
||||
}
|
||||
|
||||
// Don't fail if pnpm is being run at the workspace root
|
||||
if (cliType === 'pnpm' && opts.cwd) {
|
||||
if (existsSync(join(opts.cwd, 'pnpm-workspace.yaml'))) {
|
||||
args.push('--workspace-root');
|
||||
// Don't fail if pnpm is being run at the workspace root
|
||||
if (cliType === 'pnpm' && opts.cwd) {
|
||||
if (existsSync(join(opts.cwd, 'pnpm-workspace.yaml'))) {
|
||||
args.push('--workspace-root');
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'bun':
|
||||
case 'yarn':
|
||||
args.push('add');
|
||||
if (opts.saveDev) {
|
||||
args.push('--dev');
|
||||
}
|
||||
if (cliType === 'yarn') {
|
||||
const yarnVersion = execSync('yarn -v', { encoding: 'utf8' }).trim();
|
||||
const isYarnV1 = semver.satisfies(yarnVersion, '1');
|
||||
if (isYarnV1) {
|
||||
// Ignoring workspace check is only needed on Yarn v1
|
||||
args.push('--ignore-workspace-root-check');
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default: {
|
||||
const n: never = cliType;
|
||||
throw new Error(`Unexpected package manager: ${n}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
7
packages/remix/test/fixtures/12-remix-v2/.gitignore
vendored
Normal file
7
packages/remix/test/fixtures/12-remix-v2/.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
node_modules
|
||||
|
||||
/.cache
|
||||
/build
|
||||
/public/build
|
||||
.env
|
||||
.vercel
|
||||
38
packages/remix/test/fixtures/12-remix-v2/README.md
vendored
Normal file
38
packages/remix/test/fixtures/12-remix-v2/README.md
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
# Welcome to Remix!
|
||||
|
||||
- [Remix Docs](https://remix.run/docs)
|
||||
|
||||
## Development
|
||||
|
||||
From your terminal:
|
||||
|
||||
```sh
|
||||
npm run dev
|
||||
```
|
||||
|
||||
This starts your app in development mode, rebuilding assets on file changes.
|
||||
|
||||
## Deployment
|
||||
|
||||
First, build your app for production:
|
||||
|
||||
```sh
|
||||
npm run build
|
||||
```
|
||||
|
||||
Then run the app in production mode:
|
||||
|
||||
```sh
|
||||
npm start
|
||||
```
|
||||
|
||||
Now you'll need to pick a host to deploy it to.
|
||||
|
||||
### DIY
|
||||
|
||||
If you're familiar with deploying node applications, the built-in Remix app server is production-ready.
|
||||
|
||||
Make sure to deploy the output of `remix build`
|
||||
|
||||
- `build/`
|
||||
- `public/build/`
|
||||
33
packages/remix/test/fixtures/12-remix-v2/app/root.tsx
vendored
Normal file
33
packages/remix/test/fixtures/12-remix-v2/app/root.tsx
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
import { cssBundleHref } from "@remix-run/css-bundle";
|
||||
import type { LinksFunction } from "@vercel/remix";
|
||||
import {
|
||||
Links,
|
||||
LiveReload,
|
||||
Meta,
|
||||
Outlet,
|
||||
Scripts,
|
||||
ScrollRestoration,
|
||||
} from "@remix-run/react";
|
||||
|
||||
export const links: LinksFunction = () => [
|
||||
...(cssBundleHref ? [{ rel: "stylesheet", href: cssBundleHref }] : []),
|
||||
];
|
||||
|
||||
export default function App() {
|
||||
return (
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charSet="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<Meta />
|
||||
<Links />
|
||||
</head>
|
||||
<body>
|
||||
<Outlet />
|
||||
<ScrollRestoration />
|
||||
<Scripts />
|
||||
<LiveReload />
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
41
packages/remix/test/fixtures/12-remix-v2/app/routes/_index.tsx
vendored
Normal file
41
packages/remix/test/fixtures/12-remix-v2/app/routes/_index.tsx
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
import type { MetaFunction } from "@vercel/remix";
|
||||
|
||||
export const meta: MetaFunction = () => {
|
||||
return [
|
||||
{ title: "New Remix App" },
|
||||
{ name: "description", content: "Welcome to Remix!" },
|
||||
];
|
||||
};
|
||||
|
||||
export default function Index() {
|
||||
return (
|
||||
<div style={{ fontFamily: "system-ui, sans-serif", lineHeight: "1.8" }}>
|
||||
<h1>Welcome to Remix</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<a
|
||||
target="_blank"
|
||||
href="https://remix.run/tutorials/blog"
|
||||
rel="noreferrer"
|
||||
>
|
||||
15m Quickstart Blog Tutorial
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
target="_blank"
|
||||
href="https://remix.run/tutorials/jokes"
|
||||
rel="noreferrer"
|
||||
>
|
||||
Deep Dive Jokes App Tutorial
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a target="_blank" href="https://remix.run/docs" rel="noreferrer">
|
||||
Remix Docs
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
13
packages/remix/test/fixtures/12-remix-v2/app/routes/edge.tsx
vendored
Normal file
13
packages/remix/test/fixtures/12-remix-v2/app/routes/edge.tsx
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
import type { MetaFunction } from "@vercel/remix";
|
||||
|
||||
export const config = { runtime: "edge" };
|
||||
|
||||
export const meta: MetaFunction = () => [{ title: "Remix@Edge | New Remix App" }];
|
||||
|
||||
export default function Edge() {
|
||||
return (
|
||||
<div style={{ fontFamily: "system-ui, sans-serif", lineHeight: "1.4" }}>
|
||||
<h1>Welcome to Remix@Edge</h1>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
31
packages/remix/test/fixtures/12-remix-v2/package.json
vendored
Normal file
31
packages/remix/test/fixtures/12-remix-v2/package.json
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "my-remix-app",
|
||||
"private": true,
|
||||
"sideEffects": false,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "remix build",
|
||||
"dev": "remix dev --manual",
|
||||
"start": "remix-serve ./build/index.js",
|
||||
"typecheck": "tsc"
|
||||
},
|
||||
"dependencies": {
|
||||
"@remix-run/css-bundle": "^2.0.0",
|
||||
"@remix-run/node": "^2.0.0",
|
||||
"@remix-run/react": "^2.0.0",
|
||||
"@remix-run/serve": "^2.0.0",
|
||||
"@vercel/remix": "^2.0.0",
|
||||
"isbot": "^3.6.8",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@remix-run/dev": "^2.0.0",
|
||||
"@types/react": "^18.2.20",
|
||||
"@types/react-dom": "^18.2.7",
|
||||
"typescript": "^5.1.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
}
|
||||
}
|
||||
4384
packages/remix/test/fixtures/12-remix-v2/pnpm-lock.yaml
generated
vendored
Normal file
4384
packages/remix/test/fixtures/12-remix-v2/pnpm-lock.yaml
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
6
packages/remix/test/fixtures/12-remix-v2/probes.json
vendored
Normal file
6
packages/remix/test/fixtures/12-remix-v2/probes.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"probes": [
|
||||
{ "path": "/", "mustContain": "Welcome to Remix" },
|
||||
{ "path": "/edge", "mustContain": "Welcome to Remix@Edge" }
|
||||
]
|
||||
}
|
||||
BIN
packages/remix/test/fixtures/12-remix-v2/public/favicon.ico
vendored
Normal file
BIN
packages/remix/test/fixtures/12-remix-v2/public/favicon.ico
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
8
packages/remix/test/fixtures/12-remix-v2/remix.config.js
vendored
Normal file
8
packages/remix/test/fixtures/12-remix-v2/remix.config.js
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
/** @type {import('@remix-run/dev').AppConfig} */
|
||||
export default {
|
||||
ignoredRouteFiles: ["**/.*"],
|
||||
// appDirectory: "app",
|
||||
// assetsBuildDirectory: "public/build",
|
||||
// publicPath: "/build/",
|
||||
// serverBuildPath: "build/index.js",
|
||||
};
|
||||
2
packages/remix/test/fixtures/12-remix-v2/remix.env.d.ts
vendored
Normal file
2
packages/remix/test/fixtures/12-remix-v2/remix.env.d.ts
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/// <reference types="@remix-run/dev" />
|
||||
/// <reference types="@vercel/remix" />
|
||||
22
packages/remix/test/fixtures/12-remix-v2/tsconfig.json
vendored
Normal file
22
packages/remix/test/fixtures/12-remix-v2/tsconfig.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"include": ["remix.env.d.ts", "**/*.ts", "**/*.tsx"],
|
||||
"compilerOptions": {
|
||||
"lib": ["DOM", "DOM.Iterable", "ES2022"],
|
||||
"isolatedModules": true,
|
||||
"esModuleInterop": true,
|
||||
"jsx": "react-jsx",
|
||||
"moduleResolution": "Bundler",
|
||||
"resolveJsonModule": true,
|
||||
"target": "ES2022",
|
||||
"strict": true,
|
||||
"allowJs": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"~/*": ["./app/*"]
|
||||
},
|
||||
|
||||
// Remix takes care of building everything in `remix build`.
|
||||
"noEmit": true
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,9 @@ describe('resolveSemverMinMax()', () => {
|
||||
{ min: '1.0.0', max: '1.15.0', version: '1.16.0', expected: '1.15.0' },
|
||||
{ min: '1.0.0', max: '1.15.0', version: '^1.12.0', expected: '^1.12.0' },
|
||||
{ min: '1.0.0', max: '1.15.0', version: '0.x.x', expected: '1.0.0' },
|
||||
{ min: '1.0.0', max: '2.0.0', version: '1.x.x', expected: '1.x.x' },
|
||||
{ min: '1.0.0', max: '2.0.0', version: '2.x.x', expected: '2.x.x' },
|
||||
{ min: '1.0.0', max: '2.0.0', version: '^2.0.0', expected: '^2.0.0' },
|
||||
])(
|
||||
'Should return "$expected" for version "$version" (min=$min, max=$max)',
|
||||
({ min, max, version, expected }) => {
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @vercel/static-build
|
||||
|
||||
## 2.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Add support for bun detection in monorepo ([#10511](https://github.com/vercel/vercel/pull/10511))
|
||||
|
||||
## 2.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@vercel/static-build",
|
||||
"version": "2.0.5",
|
||||
"version": "2.0.6",
|
||||
"license": "Apache-2.0",
|
||||
"main": "./dist/index",
|
||||
"homepage": "https://vercel.com/docs/build-step",
|
||||
@@ -34,8 +34,8 @@
|
||||
"@types/semver": "7.3.13",
|
||||
"@vercel/build-utils": "7.2.0",
|
||||
"@vercel/error-utils": "2.0.1",
|
||||
"@vercel/frameworks": "2.0.1",
|
||||
"@vercel/fs-detectors": "5.0.2",
|
||||
"@vercel/frameworks": "2.0.2",
|
||||
"@vercel/fs-detectors": "5.1.0",
|
||||
"@vercel/ncc": "0.24.0",
|
||||
"@vercel/routing-utils": "3.0.0",
|
||||
"@vercel/static-config": "3.0.0",
|
||||
|
||||
1603
pnpm-lock.yaml
generated
1603
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
179
test/utils/determine-turbo-hit-or-miss/hit/sample.json
Normal file
179
test/utils/determine-turbo-hit-or-miss/hit/sample.json
Normal file
@@ -0,0 +1,179 @@
|
||||
{
|
||||
"id": "2VLeNEmIfljBVdkudEPZbp5EutG",
|
||||
"version": "1",
|
||||
"turboVersion": "1.10.13",
|
||||
"monorepo": true,
|
||||
"globalCacheInputs": {
|
||||
"rootKey": "You don't understand! I coulda had class. I coulda been a contender. I could've been somebody, instead of a bum, which is what I am.",
|
||||
"files": {
|
||||
"package.json": "5e90f8e7c78d58414bab77fcd16f942f07f426e2",
|
||||
"test/lib/deployment/fetch-retry.js": "f979b34fa9b36be13ecf634e97f085b54f158832",
|
||||
"test/lib/deployment/log.js": "6f750a0cb4cbc59e38d087207d4484a06d83ae51",
|
||||
"test/lib/deployment/now-deploy.js": "a023aab600d7d9ba9da20f96ff060c9ab0bec4c5",
|
||||
"test/lib/deployment/retry-bail-by-default.js": "44830d0f6565655b15fbc441784dc34164749d32",
|
||||
"test/lib/deployment/test-deployment.js": "a18b2cdab36143b27b22313c94fbd74b401bba5a",
|
||||
"test/lib/run-build-lambda.js": "85eba9c6f05ef0584a52d74b4646e1bfbc410484",
|
||||
"turbo-cache-key.json": "523ef4a5572612ec58429b46b5f2b28ac3e24b90",
|
||||
"utils/build.mjs": "074efdecb40a4e4cfdc6acec9439e4632ea1dfa0"
|
||||
},
|
||||
"hashOfExternalDependencies": "a340512aef639cd9",
|
||||
"globalDotEnv": null,
|
||||
"environmentVariables": {
|
||||
"specified": {
|
||||
"env": [],
|
||||
"passThroughEnv": null
|
||||
},
|
||||
"configured": [],
|
||||
"inferred": [],
|
||||
"passthrough": null
|
||||
}
|
||||
},
|
||||
"packages": ["@vercel/error-utils"],
|
||||
"envMode": "infer",
|
||||
"frameworkInference": true,
|
||||
"execution": {
|
||||
"command": "turbo run test --filter=@vercel/error-utils -- test/index.test.ts",
|
||||
"repoPath": "",
|
||||
"success": 0,
|
||||
"failed": 0,
|
||||
"cached": 2,
|
||||
"attempted": 2,
|
||||
"startTime": 1694619745822,
|
||||
"endTime": 1694619746625,
|
||||
"exitCode": 0
|
||||
},
|
||||
"tasks": [
|
||||
{
|
||||
"taskId": "@vercel/error-utils#build",
|
||||
"task": "build",
|
||||
"package": "@vercel/error-utils",
|
||||
"hash": "5d8590c998bec75a",
|
||||
"inputs": {
|
||||
"CHANGELOG.md": "bf7445d194d8a0080f7b98b0181e1f0ac4ef0ef3",
|
||||
"jest.config.js": "36fb3c7c6ce1cee41bbfeb93108375e0e0ea94ef",
|
||||
"package.json": "f0510070d5f969e9cc0d9981c85f5428d4b622c2",
|
||||
"src/index.ts": "adb0bba2a3bc0c86ee6d309b70c26e4ba8d7bbc0",
|
||||
"test/index.test.ts": "982b4a5705dacb00beeadd56ee39402573b1bae6",
|
||||
"test/tsconfig.json": "73807c8c4fc89fdf9e6dec514e8f7864c6c2e843",
|
||||
"tsconfig.json": "86fc498a51913576dba15e12f979de678c848273"
|
||||
},
|
||||
"hashOfExternalDependencies": "1999225753d8a28a",
|
||||
"cache": {
|
||||
"local": false,
|
||||
"remote": true,
|
||||
"status": "HIT",
|
||||
"source": "REMOTE",
|
||||
"timeSaved": 10154
|
||||
},
|
||||
"command": "node ../../utils/build.mjs",
|
||||
"cliArguments": [],
|
||||
"outputs": ["dist/**"],
|
||||
"excludedOutputs": null,
|
||||
"logFile": "packages/error-utils/.turbo/turbo-build.log",
|
||||
"directory": "packages/error-utils",
|
||||
"dependencies": [],
|
||||
"dependents": ["@vercel/error-utils#test"],
|
||||
"resolvedTaskDefinition": {
|
||||
"outputs": ["dist/**"],
|
||||
"cache": true,
|
||||
"dependsOn": ["^build"],
|
||||
"inputs": [],
|
||||
"outputMode": "new-only",
|
||||
"persistent": false,
|
||||
"env": [],
|
||||
"passThroughEnv": null,
|
||||
"dotEnv": null
|
||||
},
|
||||
"expandedOutputs": [
|
||||
"packages/error-utils/.turbo/turbo-build.log",
|
||||
"packages/error-utils/dist",
|
||||
"packages/error-utils/dist/index.d.ts",
|
||||
"packages/error-utils/dist/index.js",
|
||||
"packages/error-utils/dist/index.js.map"
|
||||
],
|
||||
"framework": "",
|
||||
"envMode": "loose",
|
||||
"environmentVariables": {
|
||||
"specified": {
|
||||
"env": [],
|
||||
"passThroughEnv": null
|
||||
},
|
||||
"configured": [],
|
||||
"inferred": [],
|
||||
"passthrough": null
|
||||
},
|
||||
"dotEnv": null,
|
||||
"execution": {
|
||||
"startTime": 1694619745975,
|
||||
"endTime": 1694619746484,
|
||||
"exitCode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"taskId": "@vercel/error-utils#test",
|
||||
"task": "test",
|
||||
"package": "@vercel/error-utils",
|
||||
"hash": "5bb22ba520f1cbe8",
|
||||
"inputs": {
|
||||
"CHANGELOG.md": "bf7445d194d8a0080f7b98b0181e1f0ac4ef0ef3",
|
||||
"jest.config.js": "36fb3c7c6ce1cee41bbfeb93108375e0e0ea94ef",
|
||||
"package.json": "f0510070d5f969e9cc0d9981c85f5428d4b622c2",
|
||||
"src/index.ts": "adb0bba2a3bc0c86ee6d309b70c26e4ba8d7bbc0",
|
||||
"test/index.test.ts": "982b4a5705dacb00beeadd56ee39402573b1bae6",
|
||||
"test/tsconfig.json": "73807c8c4fc89fdf9e6dec514e8f7864c6c2e843",
|
||||
"tsconfig.json": "86fc498a51913576dba15e12f979de678c848273"
|
||||
},
|
||||
"hashOfExternalDependencies": "1999225753d8a28a",
|
||||
"cache": {
|
||||
"local": false,
|
||||
"remote": true,
|
||||
"status": "HIT",
|
||||
"source": "REMOTE",
|
||||
"timeSaved": 4572
|
||||
},
|
||||
"command": "jest --reporters=default --reporters=jest-junit --coverage --env node --verbose",
|
||||
"cliArguments": ["test/index.test.ts"],
|
||||
"outputs": null,
|
||||
"excludedOutputs": null,
|
||||
"logFile": "packages/error-utils/.turbo/turbo-test.log",
|
||||
"directory": "packages/error-utils",
|
||||
"dependencies": ["@vercel/error-utils#build"],
|
||||
"dependents": [],
|
||||
"resolvedTaskDefinition": {
|
||||
"outputs": [],
|
||||
"cache": true,
|
||||
"dependsOn": ["build"],
|
||||
"inputs": [],
|
||||
"outputMode": "new-only",
|
||||
"persistent": false,
|
||||
"env": [],
|
||||
"passThroughEnv": null,
|
||||
"dotEnv": null
|
||||
},
|
||||
"expandedOutputs": ["packages/error-utils/.turbo/turbo-test.log"],
|
||||
"framework": "",
|
||||
"envMode": "loose",
|
||||
"environmentVariables": {
|
||||
"specified": {
|
||||
"env": [],
|
||||
"passThroughEnv": null
|
||||
},
|
||||
"configured": [],
|
||||
"inferred": [],
|
||||
"passthrough": null
|
||||
},
|
||||
"dotEnv": null,
|
||||
"execution": {
|
||||
"startTime": 1694619746484,
|
||||
"endTime": 1694619746625,
|
||||
"exitCode": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"user": "trek",
|
||||
"scm": {
|
||||
"type": "git",
|
||||
"sha": "0d9d05ba49a4cfda6b60c396b9e84abe34a6c8c1",
|
||||
"branch": "10501/merge"
|
||||
}
|
||||
}
|
||||
13
test/utils/determine-turbo-hit-or-miss/index.test.js
Normal file
13
test/utils/determine-turbo-hit-or-miss/index.test.js
Normal file
@@ -0,0 +1,13 @@
|
||||
const determineTurboHitOrMiss = require('../../../utils/determine-turbo-hit-or-miss');
|
||||
|
||||
describe('determineTurboHitOrMiss', () => {
|
||||
it('detects HITs', async () => {
|
||||
let missCount = await determineTurboHitOrMiss('hit', __dirname);
|
||||
expect(missCount).toEqual(0);
|
||||
});
|
||||
|
||||
it('detects MISSes', async () => {
|
||||
let missCount = await determineTurboHitOrMiss('miss', __dirname);
|
||||
expect(missCount).toEqual(1);
|
||||
});
|
||||
});
|
||||
179
test/utils/determine-turbo-hit-or-miss/miss/sample.json
Normal file
179
test/utils/determine-turbo-hit-or-miss/miss/sample.json
Normal file
@@ -0,0 +1,179 @@
|
||||
{
|
||||
"id": "2VLeNEmIfljBVdkudEPZbp5EutG",
|
||||
"version": "1",
|
||||
"turboVersion": "1.10.13",
|
||||
"monorepo": true,
|
||||
"globalCacheInputs": {
|
||||
"rootKey": "You don't understand! I coulda had class. I coulda been a contender. I could've been somebody, instead of a bum, which is what I am.",
|
||||
"files": {
|
||||
"package.json": "5e90f8e7c78d58414bab77fcd16f942f07f426e2",
|
||||
"test/lib/deployment/fetch-retry.js": "f979b34fa9b36be13ecf634e97f085b54f158832",
|
||||
"test/lib/deployment/log.js": "6f750a0cb4cbc59e38d087207d4484a06d83ae51",
|
||||
"test/lib/deployment/now-deploy.js": "a023aab600d7d9ba9da20f96ff060c9ab0bec4c5",
|
||||
"test/lib/deployment/retry-bail-by-default.js": "44830d0f6565655b15fbc441784dc34164749d32",
|
||||
"test/lib/deployment/test-deployment.js": "a18b2cdab36143b27b22313c94fbd74b401bba5a",
|
||||
"test/lib/run-build-lambda.js": "85eba9c6f05ef0584a52d74b4646e1bfbc410484",
|
||||
"turbo-cache-key.json": "523ef4a5572612ec58429b46b5f2b28ac3e24b90",
|
||||
"utils/build.mjs": "074efdecb40a4e4cfdc6acec9439e4632ea1dfa0"
|
||||
},
|
||||
"hashOfExternalDependencies": "a340512aef639cd9",
|
||||
"globalDotEnv": null,
|
||||
"environmentVariables": {
|
||||
"specified": {
|
||||
"env": [],
|
||||
"passThroughEnv": null
|
||||
},
|
||||
"configured": [],
|
||||
"inferred": [],
|
||||
"passthrough": null
|
||||
}
|
||||
},
|
||||
"packages": ["@vercel/error-utils"],
|
||||
"envMode": "infer",
|
||||
"frameworkInference": true,
|
||||
"execution": {
|
||||
"command": "turbo run test --filter=@vercel/error-utils -- test/index.test.ts",
|
||||
"repoPath": "",
|
||||
"success": 0,
|
||||
"failed": 0,
|
||||
"cached": 1,
|
||||
"attempted": 2,
|
||||
"startTime": 1694619745822,
|
||||
"endTime": 1694619746625,
|
||||
"exitCode": 0
|
||||
},
|
||||
"tasks": [
|
||||
{
|
||||
"taskId": "@vercel/error-utils#build",
|
||||
"task": "build",
|
||||
"package": "@vercel/error-utils",
|
||||
"hash": "5d8590c998bec75a",
|
||||
"inputs": {
|
||||
"CHANGELOG.md": "bf7445d194d8a0080f7b98b0181e1f0ac4ef0ef3",
|
||||
"jest.config.js": "36fb3c7c6ce1cee41bbfeb93108375e0e0ea94ef",
|
||||
"package.json": "f0510070d5f969e9cc0d9981c85f5428d4b622c2",
|
||||
"src/index.ts": "adb0bba2a3bc0c86ee6d309b70c26e4ba8d7bbc0",
|
||||
"test/index.test.ts": "982b4a5705dacb00beeadd56ee39402573b1bae6",
|
||||
"test/tsconfig.json": "73807c8c4fc89fdf9e6dec514e8f7864c6c2e843",
|
||||
"tsconfig.json": "86fc498a51913576dba15e12f979de678c848273"
|
||||
},
|
||||
"hashOfExternalDependencies": "1999225753d8a28a",
|
||||
"cache": {
|
||||
"local": false,
|
||||
"remote": true,
|
||||
"status": "MISS",
|
||||
"source": "REMOTE",
|
||||
"timeSaved": 10154
|
||||
},
|
||||
"command": "node ../../utils/build.mjs",
|
||||
"cliArguments": [],
|
||||
"outputs": ["dist/**"],
|
||||
"excludedOutputs": null,
|
||||
"logFile": "packages/error-utils/.turbo/turbo-build.log",
|
||||
"directory": "packages/error-utils",
|
||||
"dependencies": [],
|
||||
"dependents": ["@vercel/error-utils#test"],
|
||||
"resolvedTaskDefinition": {
|
||||
"outputs": ["dist/**"],
|
||||
"cache": true,
|
||||
"dependsOn": ["^build"],
|
||||
"inputs": [],
|
||||
"outputMode": "new-only",
|
||||
"persistent": false,
|
||||
"env": [],
|
||||
"passThroughEnv": null,
|
||||
"dotEnv": null
|
||||
},
|
||||
"expandedOutputs": [
|
||||
"packages/error-utils/.turbo/turbo-build.log",
|
||||
"packages/error-utils/dist",
|
||||
"packages/error-utils/dist/index.d.ts",
|
||||
"packages/error-utils/dist/index.js",
|
||||
"packages/error-utils/dist/index.js.map"
|
||||
],
|
||||
"framework": "",
|
||||
"envMode": "loose",
|
||||
"environmentVariables": {
|
||||
"specified": {
|
||||
"env": [],
|
||||
"passThroughEnv": null
|
||||
},
|
||||
"configured": [],
|
||||
"inferred": [],
|
||||
"passthrough": null
|
||||
},
|
||||
"dotEnv": null,
|
||||
"execution": {
|
||||
"startTime": 1694619745975,
|
||||
"endTime": 1694619746484,
|
||||
"exitCode": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"taskId": "@vercel/error-utils#test",
|
||||
"task": "test",
|
||||
"package": "@vercel/error-utils",
|
||||
"hash": "5bb22ba520f1cbe8",
|
||||
"inputs": {
|
||||
"CHANGELOG.md": "bf7445d194d8a0080f7b98b0181e1f0ac4ef0ef3",
|
||||
"jest.config.js": "36fb3c7c6ce1cee41bbfeb93108375e0e0ea94ef",
|
||||
"package.json": "f0510070d5f969e9cc0d9981c85f5428d4b622c2",
|
||||
"src/index.ts": "adb0bba2a3bc0c86ee6d309b70c26e4ba8d7bbc0",
|
||||
"test/index.test.ts": "982b4a5705dacb00beeadd56ee39402573b1bae6",
|
||||
"test/tsconfig.json": "73807c8c4fc89fdf9e6dec514e8f7864c6c2e843",
|
||||
"tsconfig.json": "86fc498a51913576dba15e12f979de678c848273"
|
||||
},
|
||||
"hashOfExternalDependencies": "1999225753d8a28a",
|
||||
"cache": {
|
||||
"local": false,
|
||||
"remote": true,
|
||||
"status": "HIT",
|
||||
"source": "REMOTE",
|
||||
"timeSaved": 4572
|
||||
},
|
||||
"command": "jest --reporters=default --reporters=jest-junit --coverage --env node --verbose",
|
||||
"cliArguments": ["test/index.test.ts"],
|
||||
"outputs": null,
|
||||
"excludedOutputs": null,
|
||||
"logFile": "packages/error-utils/.turbo/turbo-test.log",
|
||||
"directory": "packages/error-utils",
|
||||
"dependencies": ["@vercel/error-utils#build"],
|
||||
"dependents": [],
|
||||
"resolvedTaskDefinition": {
|
||||
"outputs": [],
|
||||
"cache": true,
|
||||
"dependsOn": ["build"],
|
||||
"inputs": [],
|
||||
"outputMode": "new-only",
|
||||
"persistent": false,
|
||||
"env": [],
|
||||
"passThroughEnv": null,
|
||||
"dotEnv": null
|
||||
},
|
||||
"expandedOutputs": ["packages/error-utils/.turbo/turbo-test.log"],
|
||||
"framework": "",
|
||||
"envMode": "loose",
|
||||
"environmentVariables": {
|
||||
"specified": {
|
||||
"env": [],
|
||||
"passThroughEnv": null
|
||||
},
|
||||
"configured": [],
|
||||
"inferred": [],
|
||||
"passthrough": null
|
||||
},
|
||||
"dotEnv": null,
|
||||
"execution": {
|
||||
"startTime": 1694619746484,
|
||||
"endTime": 1694619746625,
|
||||
"exitCode": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"user": "trek",
|
||||
"scm": {
|
||||
"type": "git",
|
||||
"sha": "0d9d05ba49a4cfda6b60c396b9e84abe34a6c8c1",
|
||||
"branch": "10501/merge"
|
||||
}
|
||||
}
|
||||
35
utils/determine-turbo-hit-or-miss.js
vendored
Normal file
35
utils/determine-turbo-hit-or-miss.js
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
const fs = require('fs-extra');
|
||||
const path = require('path');
|
||||
|
||||
async function main(turboRunDirectory, turboRunDirectoryParent) {
|
||||
const turboRunDir = path.join(turboRunDirectoryParent, turboRunDirectory);
|
||||
const turboRunFiles = await fs.readdir(turboRunDir);
|
||||
|
||||
let missCount = 0;
|
||||
|
||||
await Promise.all(
|
||||
turboRunFiles.map(async fileName => {
|
||||
const runFile = path.join(turboRunDir, fileName);
|
||||
const runData = await fs.readJson(runFile);
|
||||
const { attempted, cached } = runData.execution;
|
||||
|
||||
missCount += attempted - cached;
|
||||
})
|
||||
);
|
||||
|
||||
// log because STDOUT is how GitHub Actions communicates
|
||||
console.log(missCount);
|
||||
|
||||
// Return so we can unit test.
|
||||
return missCount;
|
||||
}
|
||||
|
||||
const turboRunDirectory = '.turbo/runs';
|
||||
const turboRunDirectoryParent = path.join(__dirname, '..');
|
||||
|
||||
main(turboRunDirectory, turboRunDirectoryParent).catch(err => {
|
||||
console.log('error determining Turbo HIT or MISS', err);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
module.exports = main;
|
||||
Reference in New Issue
Block a user