Compare commits

...

24 Commits

Author SHA1 Message Date
Vercel Release Bot
66cd626d1c Version Packages (#10765)
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @vercel/build-utils@7.2.3

### Patch Changes

- Add experimental flag to allow Node.js v20
([#10802](https://github.com/vercel/vercel/pull/10802))

## vercel@32.5.1

### Patch Changes

- Debug log load user exceptions
([#10773](https://github.com/vercel/vercel/pull/10773))

- bump: edge-runtime
([#10712](https://github.com/vercel/vercel/pull/10712))

- Updated dependencies
\[[`fc90a3dc0`](fc90a3dc0b),
[`644b8a52c`](644b8a52cb),
[`0861dc8fb`](0861dc8fbc),
[`33cc8e0ac`](33cc8e0acf),
[`f5296c3c0`](f5296c3c06),
[`d9065c210`](d9065c2102)]:
    -   @vercel/next@4.0.12
    -   @vercel/node@3.0.8
    -   @vercel/build-utils@7.2.3
    -   @vercel/remix-builder@2.0.11
    -   @vercel/static-build@2.0.10

## @vercel/client@13.0.7

### Patch Changes

- Updated dependencies
\[[`0861dc8fb`](0861dc8fbc)]:
    -   @vercel/build-utils@7.2.3

## @vercel/edge@1.1.1

### Patch Changes

- bump: edge-runtime
([#10712](https://github.com/vercel/vercel/pull/10712))

## @vercel/error-utils@2.0.2

### Patch Changes

- use Node.js `util.types.isNativeError` for `isError` method
([#10764](https://github.com/vercel/vercel/pull/10764))

## @vercel/frameworks@2.0.3

### Patch Changes

- update Angular output path discovery
([#10678](https://github.com/vercel/vercel/pull/10678))

- Updated dependencies
\[[`34dd9c091`](34dd9c0918)]:
    -   @vercel/error-utils@2.0.2

## @vercel/fs-detectors@5.1.3

### Patch Changes

- Updated dependencies
\[[`306f653da`](306f653da9),
[`34dd9c091`](34dd9c0918)]:
    -   @vercel/frameworks@2.0.3
    -   @vercel/error-utils@2.0.2

## @vercel/gatsby-plugin-vercel-builder@2.0.9

### Patch Changes

- Fix nested SSR routes
([#10751](https://github.com/vercel/vercel/pull/10751))

- Updated dependencies
\[[`0861dc8fb`](0861dc8fbc)]:
    -   @vercel/build-utils@7.2.3

## @vercel/next@4.0.12

### Patch Changes

- fix re-mapping logic for index prefetches
([#10750](https://github.com/vercel/vercel/pull/10750))

- Fixes a case where using `basePath` along with static generation would
output a lambda that conflicts with the root route.
([#10738](https://github.com/vercel/vercel/pull/10738))

- Rework prefetch route handling
([#10779](https://github.com/vercel/vercel/pull/10779))

## @vercel/node@3.0.8

### Patch Changes

- bump: edge-runtime
([#10712](https://github.com/vercel/vercel/pull/10712))

- Updated dependencies
\[[`0861dc8fb`](0861dc8fbc),
[`34dd9c091`](34dd9c0918)]:
    -   @vercel/build-utils@7.2.3
    -   @vercel/error-utils@2.0.2

## @vercel/remix-builder@2.0.11

### Patch Changes

- Update `@remix-run/dev` fork to v2.2.0
([#10788](https://github.com/vercel/vercel/pull/10788))

## @vercel/static-build@2.0.10

### Patch Changes

- Updated dependencies
\[[`efd3cc05d`](efd3cc05dc)]:
    -   @vercel/gatsby-plugin-vercel-builder@2.0.9

## @vercel-internals/types@1.0.14

### Patch Changes

- Updated dependencies
\[[`0861dc8fb`](0861dc8fbc)]:
    -   @vercel/build-utils@7.2.3

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-11-07 10:51:39 -07:00
Nathan Rajlich
0861dc8fbc [build-utils] Add experimental flag to allow Node.js v20 (#10802)
Similar to #8836, but now for Node.js v20.
2023-11-07 13:43:29 +00:00
JJ Kasper
7b553c7032 Disable deployment SSO protection for tests (#10799)
Our tests rely on not being behind deployment protection which is now enabled by default so this adds a step to tests to disable this setting to allow tests to continue working as expected.
2023-11-07 05:04:29 +00:00
Kiko Beats
644b8a52cb bump: edge-runtime (#10712) 2023-11-06 09:58:22 +01:00
Bryce Kalow
33cc8e0acf fix(next): do not generate conflicting lambdas when using basePath with app router (#10738)
When using `basePath` with statically generated routes, the builder
currently generates lambdas for the root route that conflict with the
prerender functions generated.

E.g. if we have `basePath: "test"` and a root route at: `app/page.js`,
this is currently the output:

```
test
test.rsc
test/index
test/index.rsc
```

The result is that visiting the deployed app at `/test` renders an
incomplete page. On the other hand visiting `/test/index` outputs the
expected markup.

It seems like the intent is that we want to delete the lambdas that
conflict with the prerender functions. I've updated the lambda name
generation logic when doing the deleting to line up with how the lambda
names are generated initially.
2023-11-03 13:25:56 -07:00
Steven
c0efce29ad chore: remove styfle from codeowners (#10790) 2023-10-31 18:01:48 -05:00
Ethan Arrowood
b4d115b24a [error-utils] fix jest coverage issue (#10789) 2023-10-31 14:08:28 -07:00
Ethan Arrowood
34dd9c0918 [error-utils] use Node.js util.types.isNativeError for isError method (#10764)
I recently learned about https://nodejs.org/api/util.html#utiltypesisnativeerrorvalue which is pretty great. It will return `true` for all errors including subclasses (`class MyError extends Error {}`)
2023-10-31 19:39:30 +00:00
JJ Kasper
f5296c3c06 Rework prefetch route handling (#10779)
Follow-up to https://github.com/vercel/vercel/pull/10750 this removes the underscore prefetching from all prefetch outputs and instead only applies it to the index route itself as this causes issues with PPR making these outputs prerenders and being able to interpolate the route param values. 

There is the edge case of a user returning the literal value `index` from `generateStaticParams` but we can tolerate that more than ppr not working as expected.
2023-10-31 18:15:13 +00:00
Vercel Release Bot
d9065c2102 [remix] Update @remix-run/dev to v2.2.0 (#10788)
This auto-generated PR updates `@remix-run/dev` to version 2.2.0.
2023-10-31 17:59:35 +00:00
Vercel Release Bot
0ad37829da [tests] Update Gatsby fixture versions (#10745)
Automatically generated PR to update Gatsby fixture versions in `@vercel/static-build`
2023-10-30 14:12:31 +00:00
Vercel Release Bot
67748b5207 [examples][tests] Upgrade Next.js to version 14.0.0 (#10774)
This auto-generated PR updates 7 packages to Next.js version 14.0.0
2023-10-29 15:59:56 +00:00
Alan Agius
306f653da9 Update Angular output path discovery (#10678) 2023-10-27 08:54:24 -05:00
Chris Barber
9e2120a325 [cli] Debug log load user exceptions (#10773)
When `getUser(client)` throws an exception, the actual error is never printed. This is useful information, so we should write it to the debug log output.
2023-10-26 16:12:16 +00:00
Vercel Release Bot
a6463d2636 [tests] Upgrade Turbo to version 1.10.16 (#10744)
This auto-generated PR updates Turbo to version 1.10.16
2023-10-26 15:55:22 +00:00
Trek Glowacki
429a111b50 [tests] Add package-lock.json file to dev-server-and-routes vc dev fixture (#10771) 2023-10-26 10:30:56 -05:00
Trek Glowacki
431dde5fa8 [tests] Migrate docusaurus vc dev test to package-lock.json file (#10769) 2023-10-25 09:19:23 -05:00
Trek Glowacki
1f09979c6f [examples] Migrate hydrogen example from yarn.lock to package-lock.json (#10766)
This example occasionally fails with `ERROR: Command "yarn install"
exited with 1 at nowDeploy`. We've noticed errors at the yarn registry
being a root cause of lots of tests failures. This migrates the example
to use the npm registry instead.

Co-authored-by: Chris Barber <chris.barber@vercel.com>
2023-10-24 17:12:11 -05:00
Zack Tanner
fc90a3dc0b [next] fix re-mapping logic for index prefetches (#10750)
Follow-up to https://github.com/vercel/vercel/pull/10734 -- but considers that the static prefetch associated with `/` might be inside of a dir such as `index/index.prefetch.rsc`. 

To avoid any future matching conflicts, this PR updates to prefix all static prefetches
2023-10-24 20:51:55 +00:00
Trek Glowacki
57541e230d [examples] Update Saber to use npm registry (#10755)
Co-authored-by: Chris Barber <chris.barber@vercel.com>
2023-10-24 15:33:04 -05:00
Nathan Rajlich
efd3cc05dc [gatsby-plugin-vercel-builder] Fix nested SSR routes (#10751)
Fixes SSR / DSG pages that are nested deeper than the root path for Gatsby projects.

Also introduces unit tests for the logic related to determining which page name to use.
2023-10-24 20:15:46 +00:00
Trek Glowacki
a732b64c02 [examples][tests] Update fixture test names to be concretely named (#10752) 2023-10-24 10:44:53 -07:00
Zack Tanner
f8320417a8 [next] replace next export with output: export in tests (#10756)
`next export` has been deprecated on the latest Next.js canary so these
tests will no longer pass.

This changes it to use `output: export` from `next.config.js` instead.

---------

Co-authored-by: JJ Kasper <jj@jjsweb.site>
2023-10-24 09:41:54 -07:00
Trek Glowacki
50791803b6 [examples] Migrate Sanity to use npm over yarn (#10754) 2023-10-24 11:17:48 -05:00
144 changed files with 74618 additions and 33139 deletions

14
.github/CODEOWNERS vendored
View File

@@ -2,17 +2,17 @@
# https://help.github.com/en/articles/about-code-owners # https://help.github.com/en/articles/about-code-owners
# Restricted Paths # Restricted Paths
* @TooTallNate @EndangeredMassa @styfle @cb1kenobi @Ethan-Arrowood @trek * @TooTallNate @EndangeredMassa @cb1kenobi @Ethan-Arrowood @trek
/.github/workflows @TooTallNate @EndangeredMassa @styfle @cb1kenobi @Ethan-Arrowood @trek @ijjk /.github/workflows @TooTallNate @EndangeredMassa @cb1kenobi @Ethan-Arrowood @trek @ijjk
/packages/fs-detectors @TooTallNate @EndangeredMassa @styfle @cb1kenobi @Ethan-Arrowood @trek @agadzik @chloetedder /packages/fs-detectors @TooTallNate @EndangeredMassa @cb1kenobi @Ethan-Arrowood @trek @agadzik @chloetedder
/packages/next @TooTallNate @EndangeredMassa @styfle @cb1kenobi @Ethan-Arrowood @trek @ijjk @ztanner /packages/next @TooTallNate @EndangeredMassa @cb1kenobi @Ethan-Arrowood @trek @ijjk @ztanner
/packages/routing-utils @TooTallNate @EndangeredMassa @styfle @cb1kenobi @Ethan-Arrowood @trek @ijjk /packages/routing-utils @TooTallNate @EndangeredMassa @cb1kenobi @Ethan-Arrowood @trek @ijjk
/packages/static-build @TooTallNate @EndangeredMassa @cb1kenobi @Ethan-Arrowood @trek /packages/static-build @TooTallNate @EndangeredMassa @cb1kenobi @Ethan-Arrowood @trek
/packages/edge @vercel/compute @TooTallNate @EndangeredMassa @cb1kenobi @Ethan-Arrowood @trek /packages/edge @vercel/compute @TooTallNate @EndangeredMassa @cb1kenobi @Ethan-Arrowood @trek
/examples @leerob /examples @leerob
/examples/create-react-app @Timer /examples/create-react-app @Timer
/examples/nextjs @timneutkens @ijjk @styfle @ztanner @huozhi /examples/nextjs @timneutkens @ijjk @ztanner @huozhi
/packages/node @TooTallNate @EndangeredMassa @styfle @cb1kenobi @Ethan-Arrowood @trek @Kikobeats /packages/node @TooTallNate @EndangeredMassa @cb1kenobi @Ethan-Arrowood @trek @Kikobeats
# Unrestricted Paths # Unrestricted Paths
.changeset/ .changeset/

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy angular', async () => {
await deployExample(__filename); await deployExample('angular');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy astro', async () => {
await deployExample(__filename); await deployExample('astro');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy blitzjs', async () => {
await deployExample(__filename); await deployExample('blitzjs');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy brunch', async () => {
await deployExample(__filename); await deployExample('brunch');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy create-react-app', async () => {
await deployExample(__filename); await deployExample('create-react-app');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy docusaurus-2', async () => {
await deployExample(__filename); await deployExample('docusaurus-2');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy docusaurus', async () => {
await deployExample(__filename); await deployExample('docusaurus');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy dojo', async () => {
await deployExample(__filename); await deployExample('dojo');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy eleventy', async () => {
await deployExample(__filename); await deployExample('eleventy');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy ember', async () => {
await deployExample(__filename); await deployExample('ember');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy gatsby', async () => {
await deployExample(__filename); await deployExample('gatsby');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy gridsome', async () => {
await deployExample(__filename); await deployExample('gridsome');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy hexo', async () => {
await deployExample(__filename); await deployExample('hexo');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy hugo', async () => {
await deployExample(__filename); await deployExample('hugo');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy hydrogen-2', async () => {
await deployExample(__filename); await deployExample('hydrogen-2');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy hydrogen', async () => {
await deployExample(__filename); await deployExample('hydrogen');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy ionic-angular', async () => {
await deployExample(__filename); await deployExample('ionic-angular');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy ionic-react', async () => {
await deployExample(__filename); await deployExample('ionic-react');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy jekyll', async () => {
await deployExample(__filename); await deployExample('jekyll');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy middleman', async () => {
await deployExample(__filename); await deployExample('middleman');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy nextjs', async () => {
await deployExample(__filename); await deployExample('nextjs');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy node_modules', async () => {
await deployExample(__filename); await deployExample('node_modules');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy nuxtjs', async () => {
await deployExample(__filename); await deployExample('nuxtjs');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy parcel', async () => {
await deployExample(__filename); await deployExample('parcel');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy polymer', async () => {
await deployExample(__filename); await deployExample('polymer');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy preact', async () => {
await deployExample(__filename); await deployExample('preact');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy redwoodjs', async () => {
await deployExample(__filename); await deployExample('redwoodjs');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy remix', async () => {
await deployExample(__filename); await deployExample('remix');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy saber', async () => {
await deployExample(__filename); await deployExample('saber');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy sanity', async () => {
await deployExample(__filename); await deployExample('sanity');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy sapper', async () => {
await deployExample(__filename); await deployExample('sapper');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy scully', async () => {
await deployExample(__filename); await deployExample('scully');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy solidstart', async () => {
await deployExample(__filename); await deployExample('solidstart');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy stencil', async () => {
await deployExample(__filename); await deployExample('stencil');
}); });

View File

@@ -1,4 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy storybook', async () => {
await deployExample(__filename); await deployExample('storybook');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy svelte', async () => {
await deployExample(__filename); await deployExample('svelte');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy sveltekit-1', async () => {
await deployExample(__filename); await deployExample('sveltekit-1');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy sveltekit', async () => {
await deployExample(__filename); await deployExample('sveltekit');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy umijs', async () => {
await deployExample(__filename); await deployExample('umijs');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy vite', async () => {
await deployExample(__filename); await deployExample('vite');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy vitepress', async () => {
await deployExample(__filename); await deployExample('vitepress');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy vue', async () => {
await deployExample(__filename); await deployExample('vue');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy vuepress', async () => {
await deployExample(__filename); await deployExample('vuepress');
}); });

View File

@@ -1,5 +1,4 @@
import { deployExample } from '../test-utils'; import { deployExample } from '../test-utils';
it('should deploy', async () => { it('[examples] should deploy zola', async () => {
await deployExample(__filename); await deployExample('zola');
}); });

7992
examples/hydrogen/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,7 @@
/node_modules /node_modules
/.pnp /.pnp
.pnp.js .pnp.js
.yarn/install-state.gz
# testing # testing
/coverage /coverage

View File

@@ -8,7 +8,7 @@
"name": "nextjs", "name": "nextjs",
"version": "0.1.0", "version": "0.1.0",
"dependencies": { "dependencies": {
"next": "13.5.6", "next": "14.0.0",
"react": "^18", "react": "^18",
"react-dom": "^18" "react-dom": "^18"
}, },
@@ -18,7 +18,7 @@
"@types/react-dom": "^18", "@types/react-dom": "^18",
"autoprefixer": "^10", "autoprefixer": "^10",
"eslint": "^8", "eslint": "^8",
"eslint-config-next": "13.5.6", "eslint-config-next": "14.0.0",
"postcss": "^8", "postcss": "^8",
"tailwindcss": "^3", "tailwindcss": "^3",
"typescript": "^5" "typescript": "^5"
@@ -73,9 +73,9 @@
} }
}, },
"node_modules/@eslint-community/regexpp": { "node_modules/@eslint-community/regexpp": {
"version": "4.9.1", "version": "4.10.0",
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
"integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0" "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
@@ -105,21 +105,21 @@
} }
}, },
"node_modules/@eslint/js": { "node_modules/@eslint/js": {
"version": "8.51.0", "version": "8.52.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz",
"integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
} }
}, },
"node_modules/@humanwhocodes/config-array": { "node_modules/@humanwhocodes/config-array": {
"version": "0.11.11", "version": "0.11.13",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
"integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@humanwhocodes/object-schema": "^1.2.1", "@humanwhocodes/object-schema": "^2.0.1",
"debug": "^4.1.1", "debug": "^4.1.1",
"minimatch": "^3.0.5" "minimatch": "^3.0.5"
}, },
@@ -141,9 +141,9 @@
} }
}, },
"node_modules/@humanwhocodes/object-schema": { "node_modules/@humanwhocodes/object-schema": {
"version": "1.2.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
"dev": true "dev": true
}, },
"node_modules/@jridgewell/gen-mapping": { "node_modules/@jridgewell/gen-mapping": {
@@ -195,23 +195,23 @@
} }
}, },
"node_modules/@next/env": { "node_modules/@next/env": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.6.tgz", "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.0.tgz",
"integrity": "sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==" "integrity": "sha512-cIKhxkfVELB6hFjYsbtEeTus2mwrTC+JissfZYM0n+8Fv+g8ucUfOlm3VEDtwtwydZ0Nuauv3bl0qF82nnCAqA=="
}, },
"node_modules/@next/eslint-plugin-next": { "node_modules/@next/eslint-plugin-next": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.6.tgz", "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.0.tgz",
"integrity": "sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==", "integrity": "sha512-Ye37nNI09V3yt7pzuzSQtwlvuJ2CGzFszHXkcTHHZgNr7EhTMFLipn3VSJChy+e5+ahTdNApPphc3qCPUsn10A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"glob": "7.1.7" "glob": "7.1.7"
} }
}, },
"node_modules/@next/swc-darwin-arm64": { "node_modules/@next/swc-darwin-arm64": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.6.tgz", "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.0.tgz",
"integrity": "sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==", "integrity": "sha512-HQKi159jCz4SRsPesVCiNN6tPSAFUkOuSkpJsqYTIlbHLKr1mD6be/J0TvWV6fwJekj81bZV9V/Tgx3C2HO9lA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -224,9 +224,9 @@
} }
}, },
"node_modules/@next/swc-darwin-x64": { "node_modules/@next/swc-darwin-x64": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.6.tgz", "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.0.tgz",
"integrity": "sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==", "integrity": "sha512-4YyQLMSaCgX/kgC1jjF3s3xSoBnwHuDhnF6WA1DWNEYRsbOOPWjcYhv8TKhRe2ApdOam+VfQSffC4ZD+X4u1Cg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -239,9 +239,9 @@
} }
}, },
"node_modules/@next/swc-linux-arm64-gnu": { "node_modules/@next/swc-linux-arm64-gnu": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.6.tgz", "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.0.tgz",
"integrity": "sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==", "integrity": "sha512-io7fMkJ28Glj7SH8yvnlD6naIhRDnDxeE55CmpQkj3+uaA2Hko6WGY2pT5SzpQLTnGGnviK85cy8EJ2qsETj/g==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -254,9 +254,9 @@
} }
}, },
"node_modules/@next/swc-linux-arm64-musl": { "node_modules/@next/swc-linux-arm64-musl": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.6.tgz", "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.0.tgz",
"integrity": "sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==", "integrity": "sha512-nC2h0l1Jt8LEzyQeSs/BKpXAMe0mnHIMykYALWaeddTqCv5UEN8nGO3BG8JAqW/Y8iutqJsaMe2A9itS0d/r8w==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -269,9 +269,9 @@
} }
}, },
"node_modules/@next/swc-linux-x64-gnu": { "node_modules/@next/swc-linux-x64-gnu": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.6.tgz", "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.0.tgz",
"integrity": "sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==", "integrity": "sha512-Wf+WjXibJQ7hHXOdNOmSMW5bxeJHVf46Pwb3eLSD2L76NrytQlif9NH7JpHuFlYKCQGfKfgSYYre5rIfmnSwQw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -284,9 +284,9 @@
} }
}, },
"node_modules/@next/swc-linux-x64-musl": { "node_modules/@next/swc-linux-x64-musl": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.6.tgz", "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.0.tgz",
"integrity": "sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==", "integrity": "sha512-WTZb2G7B+CTsdigcJVkRxfcAIQj7Lf0ipPNRJ3vlSadU8f0CFGv/ST+sJwF5eSwIe6dxKoX0DG6OljDBaad+rg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -299,9 +299,9 @@
} }
}, },
"node_modules/@next/swc-win32-arm64-msvc": { "node_modules/@next/swc-win32-arm64-msvc": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.6.tgz", "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.0.tgz",
"integrity": "sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==", "integrity": "sha512-7R8/x6oQODmNpnWVW00rlWX90sIlwluJwcvMT6GXNIBOvEf01t3fBg0AGURNKdTJg2xNuP7TyLchCL7Lh2DTiw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -314,9 +314,9 @@
} }
}, },
"node_modules/@next/swc-win32-ia32-msvc": { "node_modules/@next/swc-win32-ia32-msvc": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.6.tgz", "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.0.tgz",
"integrity": "sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==", "integrity": "sha512-RLK1nELvhCnxaWPF07jGU4x3tjbyx2319q43loZELqF0+iJtKutZ+Lk8SVmf/KiJkYBc7Cragadz7hb3uQvz4g==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
@@ -329,9 +329,9 @@
} }
}, },
"node_modules/@next/swc-win32-x64-msvc": { "node_modules/@next/swc-win32-x64-msvc": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.6.tgz", "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.0.tgz",
"integrity": "sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==", "integrity": "sha512-g6hLf1SUko+hnnaywQQZzzb3BRecQsoKkF3o/C+F+dOA4w/noVAJngUVkfwF0+2/8FzNznM7ofM6TGZO9svn7w==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -399,12 +399,12 @@
"dev": true "dev": true
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "20.8.7", "version": "20.8.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.9.tgz",
"integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", "integrity": "sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"undici-types": "~5.25.1" "undici-types": "~5.26.4"
} }
}, },
"node_modules/@types/prop-types": { "node_modules/@types/prop-types": {
@@ -414,9 +414,9 @@
"dev": true "dev": true
}, },
"node_modules/@types/react": { "node_modules/@types/react": {
"version": "18.2.29", "version": "18.2.33",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.29.tgz", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.33.tgz",
"integrity": "sha512-Z+ZrIRocWtdD70j45izShRwDuiB4JZqDegqMFW/I8aG5DxxLKOzVNoq62UIO82v9bdgi+DO1jvsb9sTEZUSm+Q==", "integrity": "sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/prop-types": "*", "@types/prop-types": "*",
@@ -440,15 +440,15 @@
"dev": true "dev": true
}, },
"node_modules/@typescript-eslint/parser": { "node_modules/@typescript-eslint/parser": {
"version": "6.8.0", "version": "6.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz",
"integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "6.8.0", "@typescript-eslint/scope-manager": "6.9.0",
"@typescript-eslint/types": "6.8.0", "@typescript-eslint/types": "6.9.0",
"@typescript-eslint/typescript-estree": "6.8.0", "@typescript-eslint/typescript-estree": "6.9.0",
"@typescript-eslint/visitor-keys": "6.8.0", "@typescript-eslint/visitor-keys": "6.9.0",
"debug": "^4.3.4" "debug": "^4.3.4"
}, },
"engines": { "engines": {
@@ -468,13 +468,13 @@
} }
}, },
"node_modules/@typescript-eslint/scope-manager": { "node_modules/@typescript-eslint/scope-manager": {
"version": "6.8.0", "version": "6.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz",
"integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "6.8.0", "@typescript-eslint/types": "6.9.0",
"@typescript-eslint/visitor-keys": "6.8.0" "@typescript-eslint/visitor-keys": "6.9.0"
}, },
"engines": { "engines": {
"node": "^16.0.0 || >=18.0.0" "node": "^16.0.0 || >=18.0.0"
@@ -485,9 +485,9 @@
} }
}, },
"node_modules/@typescript-eslint/types": { "node_modules/@typescript-eslint/types": {
"version": "6.8.0", "version": "6.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz",
"integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": "^16.0.0 || >=18.0.0" "node": "^16.0.0 || >=18.0.0"
@@ -498,13 +498,13 @@
} }
}, },
"node_modules/@typescript-eslint/typescript-estree": { "node_modules/@typescript-eslint/typescript-estree": {
"version": "6.8.0", "version": "6.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz",
"integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "6.8.0", "@typescript-eslint/types": "6.9.0",
"@typescript-eslint/visitor-keys": "6.8.0", "@typescript-eslint/visitor-keys": "6.9.0",
"debug": "^4.3.4", "debug": "^4.3.4",
"globby": "^11.1.0", "globby": "^11.1.0",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
@@ -525,12 +525,12 @@
} }
}, },
"node_modules/@typescript-eslint/visitor-keys": { "node_modules/@typescript-eslint/visitor-keys": {
"version": "6.8.0", "version": "6.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz",
"integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "6.8.0", "@typescript-eslint/types": "6.9.0",
"eslint-visitor-keys": "^3.4.1" "eslint-visitor-keys": "^3.4.1"
}, },
"engines": { "engines": {
@@ -541,10 +541,16 @@
"url": "https://opencollective.com/typescript-eslint" "url": "https://opencollective.com/typescript-eslint"
} }
}, },
"node_modules/@ungap/structured-clone": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
"dev": true
},
"node_modules/acorn": { "node_modules/acorn": {
"version": "8.10.0", "version": "8.11.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.0.tgz",
"integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "integrity": "sha512-hNiSyky+cuYVALBrsjB7f9gMN9P4u09JyAiMNMLaVfsmkDJuH84M1T/0pfDX/OJfGWcobd2A7ecXYzygn8wibA==",
"dev": true, "dev": true,
"bin": { "bin": {
"acorn": "bin/acorn" "acorn": "bin/acorn"
@@ -935,13 +941,14 @@
} }
}, },
"node_modules/call-bind": { "node_modules/call-bind": {
"version": "1.0.2", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"function-bind": "^1.1.1", "function-bind": "^1.1.2",
"get-intrinsic": "^1.0.2" "get-intrinsic": "^1.2.1",
"set-function-length": "^1.1.1"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
@@ -966,9 +973,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001550", "version": "1.0.30001554",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001550.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz",
"integrity": "sha512-p82WjBYIypO0ukTsd/FG3Xxs+4tFeaY9pfT4amQL8KWtYH7H9nYwReGAbMTJ0hsmRO8IfDtsS6p3ZWj8+1c2RQ==", "integrity": "sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==",
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@@ -1215,9 +1222,9 @@
} }
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.4.559", "version": "1.4.567",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.559.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.567.tgz",
"integrity": "sha512-iS7KhLYCSJbdo3rUSkhDTVuFNCV34RKs2UaB9Ecr7VlqzjjWW//0nfsFF5dtDmyXlZQaDYYtID5fjtC/6lpRug==", "integrity": "sha512-8KR114CAYQ4/r5EIEsOmOMqQ9j0MRbJZR3aXD/KFA8RuKzyoUB4XrUCg+l8RUGqTVQgKNIgTpjaG8YHRPAbX2w==",
"dev": true "dev": true
}, },
"node_modules/emoji-regex": { "node_modules/emoji-regex": {
@@ -1240,26 +1247,26 @@
} }
}, },
"node_modules/es-abstract": { "node_modules/es-abstract": {
"version": "1.22.2", "version": "1.22.3",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz",
"integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"array-buffer-byte-length": "^1.0.0", "array-buffer-byte-length": "^1.0.0",
"arraybuffer.prototype.slice": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.2",
"available-typed-arrays": "^1.0.5", "available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.2", "call-bind": "^1.0.5",
"es-set-tostringtag": "^2.0.1", "es-set-tostringtag": "^2.0.1",
"es-to-primitive": "^1.2.1", "es-to-primitive": "^1.2.1",
"function.prototype.name": "^1.1.6", "function.prototype.name": "^1.1.6",
"get-intrinsic": "^1.2.1", "get-intrinsic": "^1.2.2",
"get-symbol-description": "^1.0.0", "get-symbol-description": "^1.0.0",
"globalthis": "^1.0.3", "globalthis": "^1.0.3",
"gopd": "^1.0.1", "gopd": "^1.0.1",
"has": "^1.0.3",
"has-property-descriptors": "^1.0.0", "has-property-descriptors": "^1.0.0",
"has-proto": "^1.0.1", "has-proto": "^1.0.1",
"has-symbols": "^1.0.3", "has-symbols": "^1.0.3",
"hasown": "^2.0.0",
"internal-slot": "^1.0.5", "internal-slot": "^1.0.5",
"is-array-buffer": "^3.0.2", "is-array-buffer": "^3.0.2",
"is-callable": "^1.2.7", "is-callable": "^1.2.7",
@@ -1269,7 +1276,7 @@
"is-string": "^1.0.7", "is-string": "^1.0.7",
"is-typed-array": "^1.1.12", "is-typed-array": "^1.1.12",
"is-weakref": "^1.0.2", "is-weakref": "^1.0.2",
"object-inspect": "^1.12.3", "object-inspect": "^1.13.1",
"object-keys": "^1.1.1", "object-keys": "^1.1.1",
"object.assign": "^4.1.4", "object.assign": "^4.1.4",
"regexp.prototype.flags": "^1.5.1", "regexp.prototype.flags": "^1.5.1",
@@ -1283,7 +1290,7 @@
"typed-array-byte-offset": "^1.0.0", "typed-array-byte-offset": "^1.0.0",
"typed-array-length": "^1.0.4", "typed-array-length": "^1.0.4",
"unbox-primitive": "^1.0.2", "unbox-primitive": "^1.0.2",
"which-typed-array": "^1.1.11" "which-typed-array": "^1.1.13"
}, },
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
@@ -1315,26 +1322,26 @@
} }
}, },
"node_modules/es-set-tostringtag": { "node_modules/es-set-tostringtag": {
"version": "2.0.1", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz",
"integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"get-intrinsic": "^1.1.3", "get-intrinsic": "^1.2.2",
"has": "^1.0.3", "has-tostringtag": "^1.0.0",
"has-tostringtag": "^1.0.0" "hasown": "^2.0.0"
}, },
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
} }
}, },
"node_modules/es-shim-unscopables": { "node_modules/es-shim-unscopables": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
"integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"has": "^1.0.3" "hasown": "^2.0.0"
} }
}, },
"node_modules/es-to-primitive": { "node_modules/es-to-primitive": {
@@ -1376,18 +1383,19 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "8.51.0", "version": "8.52.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz",
"integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1", "@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.2", "@eslint/eslintrc": "^2.1.2",
"@eslint/js": "8.51.0", "@eslint/js": "8.52.0",
"@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/config-array": "^0.11.13",
"@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8", "@nodelib/fs.walk": "^1.2.8",
"@ungap/structured-clone": "^1.2.0",
"ajv": "^6.12.4", "ajv": "^6.12.4",
"chalk": "^4.0.0", "chalk": "^4.0.0",
"cross-spawn": "^7.0.2", "cross-spawn": "^7.0.2",
@@ -1430,12 +1438,12 @@
} }
}, },
"node_modules/eslint-config-next": { "node_modules/eslint-config-next": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.5.6.tgz", "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.0.0.tgz",
"integrity": "sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==", "integrity": "sha512-jtXeE+/pGQ3h9n11QyyuPN50kO13GO5XvjU5ZRq6W+XTpOMjyobWmK2s7aowy0FtzA49krJzYzEU9s1RMwoJ6g==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@next/eslint-plugin-next": "13.5.6", "@next/eslint-plugin-next": "14.0.0",
"@rushstack/eslint-patch": "^1.3.3", "@rushstack/eslint-patch": "^1.3.3",
"@typescript-eslint/parser": "^5.4.2 || ^6.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0",
"eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-node": "^0.3.6",
@@ -1527,26 +1535,26 @@
} }
}, },
"node_modules/eslint-plugin-import": { "node_modules/eslint-plugin-import": {
"version": "2.28.1", "version": "2.29.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz",
"integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"array-includes": "^3.1.6", "array-includes": "^3.1.7",
"array.prototype.findlastindex": "^1.2.2", "array.prototype.findlastindex": "^1.2.3",
"array.prototype.flat": "^1.3.1", "array.prototype.flat": "^1.3.2",
"array.prototype.flatmap": "^1.3.1", "array.prototype.flatmap": "^1.3.2",
"debug": "^3.2.7", "debug": "^3.2.7",
"doctrine": "^2.1.0", "doctrine": "^2.1.0",
"eslint-import-resolver-node": "^0.3.7", "eslint-import-resolver-node": "^0.3.9",
"eslint-module-utils": "^2.8.0", "eslint-module-utils": "^2.8.0",
"has": "^1.0.3", "hasown": "^2.0.0",
"is-core-module": "^2.13.0", "is-core-module": "^2.13.1",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
"minimatch": "^3.1.2", "minimatch": "^3.1.2",
"object.fromentries": "^2.0.6", "object.fromentries": "^2.0.7",
"object.groupby": "^1.0.0", "object.groupby": "^1.0.1",
"object.values": "^1.1.6", "object.values": "^1.1.7",
"semver": "^6.3.1", "semver": "^6.3.1",
"tsconfig-paths": "^3.14.2" "tsconfig-paths": "^3.14.2"
}, },
@@ -1987,15 +1995,15 @@
} }
}, },
"node_modules/get-intrinsic": { "node_modules/get-intrinsic": {
"version": "1.2.1", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
"integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"function-bind": "^1.1.1", "function-bind": "^1.1.2",
"has": "^1.0.3",
"has-proto": "^1.0.1", "has-proto": "^1.0.1",
"has-symbols": "^1.0.3" "has-symbols": "^1.0.3",
"hasown": "^2.0.0"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
@@ -2167,12 +2175,12 @@
} }
}, },
"node_modules/has-property-descriptors": { "node_modules/has-property-descriptors": {
"version": "1.0.0", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
"integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"get-intrinsic": "^1.1.1" "get-intrinsic": "^1.2.2"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
@@ -2217,6 +2225,18 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/hasown": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
"integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/ignore": { "node_modules/ignore": {
"version": "5.2.4", "version": "5.2.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
@@ -2268,13 +2288,13 @@
"dev": true "dev": true
}, },
"node_modules/internal-slot": { "node_modules/internal-slot": {
"version": "1.0.5", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",
"integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"get-intrinsic": "^1.2.0", "get-intrinsic": "^1.2.2",
"has": "^1.0.3", "hasown": "^2.0.0",
"side-channel": "^1.0.4" "side-channel": "^1.0.4"
}, },
"engines": { "engines": {
@@ -2363,12 +2383,12 @@
} }
}, },
"node_modules/is-core-module": { "node_modules/is-core-module": {
"version": "2.13.0", "version": "2.13.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
"integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"has": "^1.0.3" "hasown": "^2.0.0"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
@@ -2883,11 +2903,11 @@
"dev": true "dev": true
}, },
"node_modules/next": { "node_modules/next": {
"version": "13.5.6", "version": "14.0.0",
"resolved": "https://registry.npmjs.org/next/-/next-13.5.6.tgz", "resolved": "https://registry.npmjs.org/next/-/next-14.0.0.tgz",
"integrity": "sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==", "integrity": "sha512-J0jHKBJpB9zd4+c153sair0sz44mbaCHxggs8ryVXSFBuBqJ8XdE9/ozoV85xGh2VnSjahwntBZZgsihL9QznA==",
"dependencies": { "dependencies": {
"@next/env": "13.5.6", "@next/env": "14.0.0",
"@swc/helpers": "0.5.2", "@swc/helpers": "0.5.2",
"busboy": "1.6.0", "busboy": "1.6.0",
"caniuse-lite": "^1.0.30001406", "caniuse-lite": "^1.0.30001406",
@@ -2899,18 +2919,18 @@
"next": "dist/bin/next" "next": "dist/bin/next"
}, },
"engines": { "engines": {
"node": ">=16.14.0" "node": ">=18.17.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"@next/swc-darwin-arm64": "13.5.6", "@next/swc-darwin-arm64": "14.0.0",
"@next/swc-darwin-x64": "13.5.6", "@next/swc-darwin-x64": "14.0.0",
"@next/swc-linux-arm64-gnu": "13.5.6", "@next/swc-linux-arm64-gnu": "14.0.0",
"@next/swc-linux-arm64-musl": "13.5.6", "@next/swc-linux-arm64-musl": "14.0.0",
"@next/swc-linux-x64-gnu": "13.5.6", "@next/swc-linux-x64-gnu": "14.0.0",
"@next/swc-linux-x64-musl": "13.5.6", "@next/swc-linux-x64-musl": "14.0.0",
"@next/swc-win32-arm64-msvc": "13.5.6", "@next/swc-win32-arm64-msvc": "14.0.0",
"@next/swc-win32-ia32-msvc": "13.5.6", "@next/swc-win32-ia32-msvc": "14.0.0",
"@next/swc-win32-x64-msvc": "13.5.6" "@next/swc-win32-x64-msvc": "14.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@opentelemetry/api": "^1.1.0", "@opentelemetry/api": "^1.1.0",
@@ -2970,9 +2990,9 @@
} }
}, },
"node_modules/object-inspect": { "node_modules/object-inspect": {
"version": "1.13.0", "version": "1.13.1",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
"integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
"dev": true, "dev": true,
"funding": { "funding": {
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
@@ -3633,6 +3653,21 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/set-function-length": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
"integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
"dev": true,
"dependencies": {
"define-data-property": "^1.1.1",
"get-intrinsic": "^1.2.1",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/set-function-name": { "node_modules/set-function-name": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
@@ -3894,9 +3929,9 @@
} }
}, },
"node_modules/tailwindcss": { "node_modules/tailwindcss": {
"version": "3.3.3", "version": "3.3.5",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.5.tgz",
"integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", "integrity": "sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@alloc/quick-lru": "^5.2.0", "@alloc/quick-lru": "^5.2.0",
@@ -3904,10 +3939,10 @@
"chokidar": "^3.5.3", "chokidar": "^3.5.3",
"didyoumean": "^1.2.2", "didyoumean": "^1.2.2",
"dlv": "^1.1.3", "dlv": "^1.1.3",
"fast-glob": "^3.2.12", "fast-glob": "^3.3.0",
"glob-parent": "^6.0.2", "glob-parent": "^6.0.2",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
"jiti": "^1.18.2", "jiti": "^1.19.1",
"lilconfig": "^2.1.0", "lilconfig": "^2.1.0",
"micromatch": "^4.0.5", "micromatch": "^4.0.5",
"normalize-path": "^3.0.0", "normalize-path": "^3.0.0",
@@ -4131,9 +4166,9 @@
} }
}, },
"node_modules/undici-types": { "node_modules/undici-types": {
"version": "5.25.3", "version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true "dev": true
}, },
"node_modules/update-browserslist-db": { "node_modules/update-browserslist-db": {
@@ -4266,13 +4301,13 @@
} }
}, },
"node_modules/which-typed-array": { "node_modules/which-typed-array": {
"version": "1.1.11", "version": "1.1.13",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
"integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"available-typed-arrays": "^1.0.5", "available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.2", "call-bind": "^1.0.4",
"for-each": "^0.3.3", "for-each": "^0.3.3",
"gopd": "^1.0.1", "gopd": "^1.0.1",
"has-tostringtag": "^1.0.0" "has-tostringtag": "^1.0.0"

View File

@@ -11,7 +11,7 @@
"dependencies": { "dependencies": {
"react": "^18", "react": "^18",
"react-dom": "^18", "react-dom": "^18",
"next": "13.5.6" "next": "14.0.0"
}, },
"devDependencies": { "devDependencies": {
"typescript": "^5", "typescript": "^5",
@@ -22,6 +22,6 @@
"postcss": "^8", "postcss": "^8",
"tailwindcss": "^3", "tailwindcss": "^3",
"eslint": "^8", "eslint": "^8",
"eslint-config-next": "13.5.6" "eslint-config-next": "14.0.0"
} }
} }

View File

@@ -9,7 +9,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "27.4.1", "@types/jest": "27.4.1",
"@vercel/frameworks": "2.0.2" "@vercel/frameworks": "2.0.3"
}, },
"version": null "version": null
} }

7906
examples/saber/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

31785
examples/sanity/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,12 @@
# @vercel-internals/types # @vercel-internals/types
## 1.0.14
### Patch Changes
- Updated dependencies [[`0861dc8fb`](https://github.com/vercel/vercel/commit/0861dc8fbcea1037626b00664a4b6c22f1b0a7ed)]:
- @vercel/build-utils@7.2.3
## 1.0.13 ## 1.0.13
### Patch Changes ### Patch Changes

View File

@@ -1,7 +1,7 @@
{ {
"private": true, "private": true,
"name": "@vercel-internals/types", "name": "@vercel-internals/types",
"version": "1.0.13", "version": "1.0.14",
"types": "index.d.ts", "types": "index.d.ts",
"main": "index.d.ts", "main": "index.d.ts",
"files": [ "files": [
@@ -10,7 +10,7 @@
"dependencies": { "dependencies": {
"@types/node": "14.14.31", "@types/node": "14.14.31",
"@vercel-internals/constants": "1.0.4", "@vercel-internals/constants": "1.0.4",
"@vercel/build-utils": "7.2.2", "@vercel/build-utils": "7.2.3",
"@vercel/routing-utils": "3.1.0" "@vercel/routing-utils": "3.1.0"
}, },
"devDependencies": { "devDependencies": {

View File

@@ -33,7 +33,7 @@
"source-map-support": "0.5.12", "source-map-support": "0.5.12",
"ts-eager": "2.0.2", "ts-eager": "2.0.2",
"ts-jest": "29.1.0", "ts-jest": "29.1.0",
"turbo": "1.10.15", "turbo": "1.10.16",
"typescript": "4.9.5" "typescript": "4.9.5"
}, },
"scripts": { "scripts": {

View File

@@ -1,5 +1,11 @@
# @vercel/build-utils # @vercel/build-utils
## 7.2.3
### Patch Changes
- Add experimental flag to allow Node.js v20 ([#10802](https://github.com/vercel/vercel/pull/10802))
## 7.2.2 ## 7.2.2
### Patch Changes ### Patch Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/build-utils", "name": "@vercel/build-utils",
"version": "7.2.2", "version": "7.2.3",
"license": "Apache-2.0", "license": "Apache-2.0",
"main": "./dist/index.js", "main": "./dist/index.js",
"types": "./dist/index.d.js", "types": "./dist/index.d.js",
@@ -33,7 +33,7 @@
"@types/node-fetch": "^2.1.6", "@types/node-fetch": "^2.1.6",
"@types/semver": "6.0.0", "@types/semver": "6.0.0",
"@types/yazl": "2.4.2", "@types/yazl": "2.4.2",
"@vercel/error-utils": "2.0.1", "@vercel/error-utils": "2.0.2",
"aggregate-error": "3.0.1", "aggregate-error": "3.0.1",
"async-retry": "1.2.3", "async-retry": "1.2.3",
"async-sema": "2.1.4", "async-sema": "2.1.4",

View File

@@ -37,6 +37,12 @@ function getOptions() {
discontinueDate: new Date('2020-01-06'), discontinueDate: new Date('2020-01-06'),
}, },
] as const; ] as const;
if (process.env.VERCEL_ALLOW_NODEJS20 === '1') {
return [
{ major: 20, range: '20.x', runtime: 'nodejs20.x' },
...options,
] as const;
}
return options; return options;
} }

View File

@@ -313,6 +313,23 @@ it('should warn for deprecated versions, soon to be discontinued', async () => {
global.Date.now = realDateNow; global.Date.now = realDateNow;
}); });
it('should only allow nodejs20.x when env var is set', async () => {
try {
expect(getLatestNodeVersion()).toHaveProperty('major', 18);
await expect(getSupportedNodeVersion('20.x')).rejects.toThrow();
process.env.VERCEL_ALLOW_NODEJS20 = '1';
expect(getLatestNodeVersion()).toHaveProperty('major', 20);
expect(await getSupportedNodeVersion('20.x')).toHaveProperty('major', 20);
expect(await getSupportedNodeVersion('20')).toHaveProperty('major', 20);
expect(await getSupportedNodeVersion('20.1.0')).toHaveProperty('major', 20);
expect(await getSupportedNodeVersion('>=16')).toHaveProperty('major', 20);
} finally {
delete process.env.VERCEL_ALLOW_NODEJS20;
}
});
it('should support initialHeaders and initialStatus correctly', async () => { it('should support initialHeaders and initialStatus correctly', async () => {
new Prerender({ new Prerender({
expiration: 1, expiration: 1,

View File

@@ -1,5 +1,20 @@
# vercel # vercel
## 32.5.1
### Patch Changes
- Debug log load user exceptions ([#10773](https://github.com/vercel/vercel/pull/10773))
- bump: edge-runtime ([#10712](https://github.com/vercel/vercel/pull/10712))
- Updated dependencies [[`fc90a3dc0`](https://github.com/vercel/vercel/commit/fc90a3dc0bd998453f6527c03d211c35bb0d5770), [`644b8a52c`](https://github.com/vercel/vercel/commit/644b8a52cb2cc8f05e215e2230f95f902cdf8ae8), [`0861dc8fb`](https://github.com/vercel/vercel/commit/0861dc8fbcea1037626b00664a4b6c22f1b0a7ed), [`33cc8e0ac`](https://github.com/vercel/vercel/commit/33cc8e0acf1b3466d50d45b2e5bbe66b89a87c14), [`f5296c3c0`](https://github.com/vercel/vercel/commit/f5296c3c06e620a39c5f88287ac94e58703bdaac), [`d9065c210`](https://github.com/vercel/vercel/commit/d9065c2102223e9cdb5b22df14db41c363cf7828)]:
- @vercel/next@4.0.12
- @vercel/node@3.0.8
- @vercel/build-utils@7.2.3
- @vercel/remix-builder@2.0.11
- @vercel/static-build@2.0.10
## 32.5.0 ## 32.5.0
### Minor Changes ### Minor Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "vercel", "name": "vercel",
"version": "32.5.0", "version": "32.5.1",
"preferGlobal": true, "preferGlobal": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"description": "The command-line interface for Vercel", "description": "The command-line interface for Vercel",
@@ -31,22 +31,22 @@
"node": ">= 16" "node": ">= 16"
}, },
"dependencies": { "dependencies": {
"@vercel/build-utils": "7.2.2", "@vercel/build-utils": "7.2.3",
"@vercel/fun": "1.1.0", "@vercel/fun": "1.1.0",
"@vercel/go": "3.0.3", "@vercel/go": "3.0.3",
"@vercel/hydrogen": "1.0.1", "@vercel/hydrogen": "1.0.1",
"@vercel/next": "4.0.11", "@vercel/next": "4.0.12",
"@vercel/node": "3.0.7", "@vercel/node": "3.0.8",
"@vercel/python": "4.1.0", "@vercel/python": "4.1.0",
"@vercel/redwood": "2.0.5", "@vercel/redwood": "2.0.5",
"@vercel/remix-builder": "2.0.10", "@vercel/remix-builder": "2.0.11",
"@vercel/ruby": "2.0.2", "@vercel/ruby": "2.0.2",
"@vercel/static-build": "2.0.9", "@vercel/static-build": "2.0.10",
"chokidar": "3.3.1" "chokidar": "3.3.1"
}, },
"devDependencies": { "devDependencies": {
"@alex_neo/jest-expect-message": "1.0.5", "@alex_neo/jest-expect-message": "1.0.5",
"@edge-runtime/node-utils": "2.2.1", "@edge-runtime/node-utils": "2.2.2",
"@next/env": "11.1.2", "@next/env": "11.1.2",
"@sentry/node": "5.5.0", "@sentry/node": "5.5.0",
"@sindresorhus/slugify": "0.11.0", "@sindresorhus/slugify": "0.11.0",
@@ -88,11 +88,11 @@
"@types/yauzl-promise": "2.1.0", "@types/yauzl-promise": "2.1.0",
"@vercel-internals/constants": "1.0.4", "@vercel-internals/constants": "1.0.4",
"@vercel-internals/get-package-json": "1.0.0", "@vercel-internals/get-package-json": "1.0.0",
"@vercel-internals/types": "1.0.13", "@vercel-internals/types": "1.0.14",
"@vercel/client": "13.0.6", "@vercel/client": "13.0.7",
"@vercel/error-utils": "2.0.1", "@vercel/error-utils": "2.0.2",
"@vercel/frameworks": "2.0.2", "@vercel/frameworks": "2.0.3",
"@vercel/fs-detectors": "5.1.2", "@vercel/fs-detectors": "5.1.3",
"@vercel/routing-utils": "3.1.0", "@vercel/routing-utils": "3.1.0",
"ajv": "6.12.2", "ajv": "6.12.2",
"alpha-sort": "2.0.1", "alpha-sort": "2.0.1",

View File

@@ -426,6 +426,10 @@ const main = async () => {
try { try {
user = await getUser(client); user = await getUser(client);
} catch (err: unknown) { } catch (err: unknown) {
if (err instanceof Error) {
output.debug(err.stack || err.toString());
}
if (isErrnoException(err) && err.code === 'NOT_AUTHORIZED') { if (isErrnoException(err) && err.code === 'NOT_AUTHORIZED') {
output.prettyError({ output.prettyError({
message: `You do not have access to the specified account`, message: `You do not have access to the specified account`,

View File

@@ -24,11 +24,7 @@ export function createProxy(client: Client): Server {
json: false, json: false,
}); });
res.statusCode = fetchRes.status; res.statusCode = fetchRes.status;
mergeIntoServerResponse( mergeIntoServerResponse(toOutgoingHeaders(fetchRes.headers), res);
// @ts-expect-error - `node-fetch` Headers is missing `getAll()`
toOutgoingHeaders(fetchRes.headers),
res
);
fetchRes.body.pipe(res); fetchRes.body.pipe(res);
} catch (err: unknown) { } catch (err: unknown) {
client.output.prettyError(err); client.output.prettyError(err);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -7,6 +7,7 @@ const { satisfies } = require('semver');
const stripAnsi = require('strip-ansi'); const stripAnsi = require('strip-ansi');
const { const {
fetchCachedToken, fetchCachedToken,
disableSSO,
} = require('../../../../test/lib/deployment/now-deploy'); } = require('../../../../test/lib/deployment/now-deploy');
const { spawnSync, execFileSync } = require('child_process'); const { spawnSync, execFileSync } = require('child_process');
@@ -398,6 +399,9 @@ function testFixtureStdio(
// Expect the deploy succeeded with exit of 0; // Expect the deploy succeeded with exit of 0;
expect(deployResult.exitCode).toBe(0); expect(deployResult.exitCode).toBe(0);
deploymentUrl = new URL(deployResult.stdout).host; deploymentUrl = new URL(deployResult.stdout).host;
// Disable the Project SSO Protection
await disableSSO(deployResult.stdout, true);
} finally { } finally {
if (!hasGitignore) { if (!hasGitignore) {
await fs.remove(gitignore); await fs.remove(gitignore);

View File

@@ -5,7 +5,10 @@ import fetch, { RequestInit } from 'node-fetch';
import retry from 'async-retry'; import retry from 'async-retry';
import fs from 'fs-extra'; import fs from 'fs-extra';
import sleep from '../src/util/sleep'; import sleep from '../src/util/sleep';
import { fetchTokenWithRetry } from '../../../test/lib/deployment/now-deploy'; import {
disableSSO,
fetchTokenWithRetry,
} from '../../../test/lib/deployment/now-deploy';
import waitForPrompt from './helpers/wait-for-prompt'; import waitForPrompt from './helpers/wait-for-prompt';
import { listTmpDirs } from './helpers/get-tmp-dir'; import { listTmpDirs } from './helpers/get-tmp-dir';
import getGlobalDir from './helpers/get-global-dir'; import getGlobalDir from './helpers/get-global-dir';
@@ -393,6 +396,8 @@ test('default command should work with --cwd option', async () => {
expect(exitCode, formatOutput({ stdout, stderr })).toBe(0); expect(exitCode, formatOutput({ stdout, stderr })).toBe(0);
const url = stdout; const url = stdout;
await disableSSO(url, false);
const deploymentResult = await fetch(`${url}/README.md`); const deploymentResult = await fetch(`${url}/README.md`);
const body = await deploymentResult.text(); const body = await deploymentResult.text();
expect(body).toEqual( expect(body).toEqual(
@@ -421,6 +426,8 @@ test('should allow deploying a directory that was built with a target environmen
expect(exitCode, formatOutput({ stdout, stderr })).toBe(0); expect(exitCode, formatOutput({ stdout, stderr })).toBe(0);
const url = stdout; const url = stdout;
await disableSSO(url, false);
const deploymentResult = await fetch(`${url}/README.md`); const deploymentResult = await fetch(`${url}/README.md`);
const body = await deploymentResult.text(); const body = await deploymentResult.text();
expect(body).toEqual( expect(body).toEqual(
@@ -447,6 +454,8 @@ test('should allow deploying a directory that was prebuilt, but has no builds.js
expect(exitCode, formatOutput({ stdout, stderr })).toBe(0); expect(exitCode, formatOutput({ stdout, stderr })).toBe(0);
const url = stdout; const url = stdout;
await disableSSO(url, false);
const deploymentResult = await fetch(`${url}/README.md`); const deploymentResult = await fetch(`${url}/README.md`);
const body = await deploymentResult.text(); const body = await deploymentResult.text();
expect(body).toEqual('readme contents for build-output-api-raw'); expect(body).toEqual('readme contents for build-output-api-raw');
@@ -509,6 +518,7 @@ test('deploy using only now.json with `redirects` defined', async () => {
expect(exitCode, formatOutput({ stdout, stderr })).toBe(0); expect(exitCode, formatOutput({ stdout, stderr })).toBe(0);
const url = stdout; const url = stdout;
await disableSSO(url, false);
const res = await fetch(`${url}/foo/bar`, { redirect: 'manual' }); const res = await fetch(`${url}/foo/bar`, { redirect: 'manual' });
const location = res.headers.get('location'); const location = res.headers.get('location');
expect(location).toBe('https://example.com/foo/bar'); expect(location).toBe('https://example.com/foo/bar');
@@ -530,6 +540,7 @@ test('deploy using --local-config flag v2', async () => {
const { host } = new URL(stdout); const { host } = new URL(stdout);
expect(host).toMatch(/secondary/gm); expect(host).toMatch(/secondary/gm);
await disableSSO(host, false);
const testRes = await fetch(`https://${host}/test-${contextName}.html`); const testRes = await fetch(`https://${host}/test-${contextName}.html`);
const testText = await testRes.text(); const testText = await testRes.text();
@@ -580,6 +591,7 @@ test('deploy using --local-config flag above target', async () => {
expect(exitCode, formatOutput({ stdout, stderr })).toBe(0); expect(exitCode, formatOutput({ stdout, stderr })).toBe(0);
const { host } = new URL(stdout); const { host } = new URL(stdout);
await disableSSO(host, false);
const testRes = await fetch(`https://${host}/index.html`); const testRes = await fetch(`https://${host}/index.html`);
const testText = await testRes.text(); const testText = await testRes.text();
@@ -801,6 +813,7 @@ test('Deploy `api-env` fixture and test `vercel env` command', async () => {
}); });
expect(exitCode, formatOutput({ stdout, stderr })).toBe(0); expect(exitCode, formatOutput({ stdout, stderr })).toBe(0);
const { host } = new URL(stdout); const { host } = new URL(stdout);
await disableSSO(host, false);
const apiUrl = `https://${host}/api/get-env`; const apiUrl = `https://${host}/api/get-env`;
const apiRes = await fetch(apiUrl); const apiRes = await fetch(apiUrl);

View File

@@ -11,7 +11,10 @@ import fs, {
mkdir, mkdir,
} from 'fs-extra'; } from 'fs-extra';
import sleep from '../src/util/sleep'; import sleep from '../src/util/sleep';
import { fetchTokenWithRetry } from '../../../test/lib/deployment/now-deploy'; import {
disableSSO,
fetchTokenWithRetry,
} from '../../../test/lib/deployment/now-deploy';
import waitForPrompt from './helpers/wait-for-prompt'; import waitForPrompt from './helpers/wait-for-prompt';
import { execCli } from './helpers/exec'; import { execCli } from './helpers/exec';
import getGlobalDir from './helpers/get-global-dir'; import getGlobalDir from './helpers/get-global-dir';
@@ -327,8 +330,11 @@ test('should show prompts to set up project during first deploy', async () => {
'README.txt' 'README.txt'
).toBe(true); ).toBe(true);
const { host, href } = new URL(output.stdout);
await disableSSO(host, false);
// Send a test request to the deployment // Send a test request to the deployment
const response = await fetch(new URL(output.stdout)); const response = await fetch(href);
const text = await response.text(); const text = await response.text();
expect(text).toContain('<h1>custom hello</h1>'); expect(text).toContain('<h1>custom hello</h1>');
@@ -640,7 +646,10 @@ test('use `rootDirectory` from project when deploying', async () => {
const secondResult = await execCli(binaryPath, [directory, '--public']); const secondResult = await execCli(binaryPath, [directory, '--public']);
expect(secondResult.exitCode, formatOutput(secondResult)).toBe(0); expect(secondResult.exitCode, formatOutput(secondResult)).toBe(0);
const pageResponse1 = await fetch(secondResult.stdout); const { host, href } = new URL(secondResult.stdout);
await disableSSO(host, false);
const pageResponse1 = await fetch(href);
expect(pageResponse1.status).toBe(200); expect(pageResponse1.status).toBe(200);
expect(await pageResponse1.text()).toMatch(/I am a website/gm); expect(await pageResponse1.text()).toMatch(/I am a website/gm);
@@ -722,6 +731,7 @@ test('deploys with only now.json and README.md', async () => {
expect(exitCode, formatOutput({ stdout, stderr })).toBe(0); expect(exitCode, formatOutput({ stdout, stderr })).toBe(0);
const { host } = new URL(stdout); const { host } = new URL(stdout);
await disableSSO(host, false);
const res = await fetch(`https://${host}/README.md`); const res = await fetch(`https://${host}/README.md`);
const text = await res.text(); const text = await res.text();
expect(text).toMatch(/readme contents/); expect(text).toMatch(/readme contents/);
@@ -744,6 +754,7 @@ test('deploys with only vercel.json and README.md', async () => {
); );
const { host } = new URL(stdout); const { host } = new URL(stdout);
await disableSSO(host, false);
const res = await fetch(`https://${host}/README.md`); const res = await fetch(`https://${host}/README.md`);
const text = await res.text(); const text = await res.text();
expect(text).toMatch(/readme contents/); expect(text).toMatch(/readme contents/);
@@ -821,14 +832,16 @@ test('deploy pnpm twice using pnp and symlink=false', async () => {
await remove(path.join(directory, '.vercel')); await remove(path.join(directory, '.vercel'));
function deploy() { async function deploy() {
return execCli(binaryPath, [ const res = await execCli(binaryPath, [
directory, directory,
'--name', '--name',
session, session,
'--public', '--public',
'--yes', '--yes',
]); ]);
await disableSSO(res.stdout, false);
return res;
} }
let { exitCode, stdout, stderr } = await deploy(); let { exitCode, stdout, stderr } = await deploy();
@@ -1243,6 +1256,8 @@ test('vercel.json configuration overrides in a new project prompt user and merge
const deployment = await vc; const deployment = await vc;
expect(deployment.exitCode, formatOutput(deployment)).toBe(0); expect(deployment.exitCode, formatOutput(deployment)).toBe(0);
// assert the command were executed // assert the command were executed
await disableSSO(deployment.stdout, false);
let page = await fetch(deployment.stdout); let page = await fetch(deployment.stdout);
let text = await page.text(); let text = await page.text();
expect(text).toBe('1\n'); expect(text).toBe('1\n');
@@ -1273,7 +1288,9 @@ test('vercel.json configuration overrides in an existing project do not prompt u
// auto-confirm this deployment // auto-confirm this deployment
let deployment = await deploy(true); let deployment = await deploy(true);
let page = await fetch(deployment.stdout); const { host, href } = new URL(deployment.stdout);
await disableSSO(host, false);
let page = await fetch(href);
let text = await page.text(); let text = await page.text();
expect(text).toBe('0'); expect(text).toBe('0');

View File

@@ -14,7 +14,10 @@ import { logo } from '../src/util/pkg-name';
import sleep from '../src/util/sleep'; import sleep from '../src/util/sleep';
import humanizePath from '../src/util/humanize-path'; import humanizePath from '../src/util/humanize-path';
import pkg from '../package.json'; import pkg from '../package.json';
import { fetchTokenWithRetry } from '../../../test/lib/deployment/now-deploy'; import {
disableSSO,
fetchTokenWithRetry,
} from '../../../test/lib/deployment/now-deploy';
import waitForPrompt from './helpers/wait-for-prompt'; import waitForPrompt from './helpers/wait-for-prompt';
import { getNewTmpDir, listTmpDirs } from './helpers/get-tmp-dir'; import { getNewTmpDir, listTmpDirs } from './helpers/get-tmp-dir';
import getGlobalDir from './helpers/get-global-dir'; import getGlobalDir from './helpers/get-global-dir';
@@ -311,6 +314,7 @@ test('should add secret with hyphen prefix', async () => {
expect(targetCall.exitCode, formatOutput(targetCall)).toBe(0); expect(targetCall.exitCode, formatOutput(targetCall)).toBe(0);
const { host } = new URL(targetCall.stdout); const { host } = new URL(targetCall.stdout);
await disableSSO(host, false);
const response = await fetch(`https://${host}`); const response = await fetch(`https://${host}`);
expect(response.status).toBe(200); expect(response.status).toBe(200);
expect(await response.text()).toBe(`${value}\n`); expect(await response.text()).toBe(`${value}\n`);
@@ -339,6 +343,7 @@ test('ignore files specified in .nowignore', async () => {
}); });
const { host } = new URL(targetCall.stdout); const { host } = new URL(targetCall.stdout);
await disableSSO(host, false);
const ignoredFile = await fetch(`https://${host}/ignored.txt`); const ignoredFile = await fetch(`https://${host}/ignored.txt`);
expect(ignoredFile.status).toBe(404); expect(ignoredFile.status).toBe(404);
@@ -355,6 +360,7 @@ test('ignore files specified in .nowignore via allowlist', async () => {
}); });
const { host } = new URL(targetCall.stdout); const { host } = new URL(targetCall.stdout);
await disableSSO(host, false);
const ignoredFile = await fetch(`https://${host}/ignored.txt`); const ignoredFile = await fetch(`https://${host}/ignored.txt`);
expect(ignoredFile.status).toBe(404); expect(ignoredFile.status).toBe(404);
@@ -551,6 +557,7 @@ test('ensure we render a warning for deployments with no files', async () => {
// Ensure the exit code is right // Ensure the exit code is right
expect(exitCode, formatOutput({ stdout, stderr })).toBe(0); expect(exitCode, formatOutput({ stdout, stderr })).toBe(0);
await disableSSO(host, false);
// Send a test request to the deployment // Send a test request to the deployment
const res = await fetch(href); const res = await fetch(href);
@@ -1014,6 +1021,7 @@ test('try to revert a deployment and assign the automatic aliases', async () =>
expect(exitCode, formatOutput({ stdout, stderr })).toBe(0); expect(exitCode, formatOutput({ stdout, stderr })).toBe(0);
await disableSSO(deploymentUrl, false);
await waitForDeployment(deploymentUrl); await waitForDeployment(deploymentUrl);
await sleep(20000); await sleep(20000);
@@ -1028,6 +1036,7 @@ test('try to revert a deployment and assign the automatic aliases', async () =>
'--yes', '--yes',
]); ]);
const deploymentUrl = stdout; const deploymentUrl = stdout;
await disableSSO(deploymentUrl, false);
expect(exitCode, formatOutput({ stdout, stderr })).toBe(0); expect(exitCode, formatOutput({ stdout, stderr })).toBe(0);
@@ -1047,6 +1056,7 @@ test('try to revert a deployment and assign the automatic aliases', async () =>
'--yes', '--yes',
]); ]);
const deploymentUrl = stdout; const deploymentUrl = stdout;
await disableSSO(deploymentUrl, false);
expect(exitCode, formatOutput({ stdout, stderr })).toBe(0); expect(exitCode, formatOutput({ stdout, stderr })).toBe(0);
@@ -1318,6 +1328,7 @@ test('deploy a Lambda with 128MB of memory', async () => {
expect(output.exitCode, formatOutput(output)).toBe(0); expect(output.exitCode, formatOutput(output)).toBe(0);
const { host: url } = new URL(output.stdout); const { host: url } = new URL(output.stdout);
await disableSSO(url, false);
const response = await fetch('https://' + url + '/api/memory'); const response = await fetch('https://' + url + '/api/memory');
expect(response.status).toBe(200); expect(response.status).toBe(200);
@@ -1344,6 +1355,7 @@ test('deploy a Lambda with 3 seconds of maxDuration', async () => {
expect(output.exitCode, formatOutput(output)).toBe(0); expect(output.exitCode, formatOutput(output)).toBe(0);
const url = new URL(output.stdout); const url = new URL(output.stdout);
await disableSSO(url.host, false);
// Should time out // Should time out
url.pathname = '/api/wait-for/5'; url.pathname = '/api/wait-for/5';
@@ -1382,6 +1394,7 @@ test('deploy a Lambda with a specific runtime', async () => {
expect(output.exitCode, formatOutput(output)).toBe(0); expect(output.exitCode, formatOutput(output)).toBe(0);
const url = new URL(output.stdout); const url = new URL(output.stdout);
await disableSSO(url.host, false);
const res = await fetch(`${url}/api/test`); const res = await fetch(`${url}/api/test`);
const text = await res.text(); const text = await res.text();
expect(text).toBe('Hello from PHP'); expect(text).toBe('Hello from PHP');
@@ -1412,6 +1425,7 @@ test('use build-env', async () => {
// Test if the output is really a URL // Test if the output is really a URL
const deploymentUrl = pickUrl(stdout); const deploymentUrl = pickUrl(stdout);
const { href } = new URL(deploymentUrl); const { href } = new URL(deploymentUrl);
await disableSSO(deploymentUrl, false);
await waitForDeployment(href); await waitForDeployment(href);

View File

@@ -1,5 +1,12 @@
# @vercel/client # @vercel/client
## 13.0.7
### Patch Changes
- Updated dependencies [[`0861dc8fb`](https://github.com/vercel/vercel/commit/0861dc8fbcea1037626b00664a4b6c22f1b0a7ed)]:
- @vercel/build-utils@7.2.3
## 13.0.6 ## 13.0.6
### Patch Changes ### Patch Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/client", "name": "@vercel/client",
"version": "13.0.6", "version": "13.0.7",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
"homepage": "https://vercel.com", "homepage": "https://vercel.com",
@@ -37,7 +37,7 @@
"typescript": "4.9.5" "typescript": "4.9.5"
}, },
"dependencies": { "dependencies": {
"@vercel/build-utils": "7.2.2", "@vercel/build-utils": "7.2.3",
"@vercel/routing-utils": "3.1.0", "@vercel/routing-utils": "3.1.0",
"@zeit/fetch": "5.2.0", "@zeit/fetch": "5.2.0",
"async-retry": "1.2.3", "async-retry": "1.2.3",

View File

@@ -226,6 +226,12 @@ export const fetch = async (
url = `${opts.apiUrl || 'https://api.vercel.com'}${url}`; url = `${opts.apiUrl || 'https://api.vercel.com'}${url}`;
delete opts.apiUrl; delete opts.apiUrl;
const { VERCEL_TEAM_ID } = process.env;
if (VERCEL_TEAM_ID) {
url += `${url.includes('?') ? '&' : '?'}teamId=${VERCEL_TEAM_ID}`;
}
if (opts.teamId) { if (opts.teamId) {
const parsedUrl = new URL(url); const parsedUrl = new URL(url);
parsedUrl.searchParams.set('teamId', opts.teamId); parsedUrl.searchParams.set('teamId', opts.teamId);

View File

@@ -4,6 +4,8 @@ import { generateNewToken } from './common';
import { fetch, getApiDeploymentsUrl } from '../src/utils'; import { fetch, getApiDeploymentsUrl } from '../src/utils';
import { Deployment } from './types'; import { Deployment } from './types';
import { createDeployment } from '../src/index'; import { createDeployment } from '../src/index';
// @ts-expect-error non-TS
import { disableSSO } from '../../../test/lib/deployment/now-deploy';
describe('create v2 deployment', () => { describe('create v2 deployment', () => {
let deployment: Deployment; let deployment: Deployment;
@@ -30,6 +32,7 @@ describe('create v2 deployment', () => {
for await (const event of createDeployment( for await (const event of createDeployment(
{ {
token, token,
teamId: process.env.VERCEL_TEAM_ID,
path: path.resolve(__dirname, 'fixtures', 'v2'), path: path.resolve(__dirname, 'fixtures', 'v2'),
}, },
{ {
@@ -42,6 +45,7 @@ describe('create v2 deployment', () => {
if (event.type === 'ready') { if (event.type === 'ready') {
deployment = event.payload; deployment = event.payload;
await disableSSO(deployment.id);
break; break;
} }
} }
@@ -51,6 +55,7 @@ describe('create v2 deployment', () => {
for await (const event of createDeployment( for await (const event of createDeployment(
{ {
token, token,
teamId: process.env.VERCEL_TEAM_ID,
path: path.resolve(__dirname, 'fixtures', 'v2'), path: path.resolve(__dirname, 'fixtures', 'v2'),
}, },
{ {
@@ -63,6 +68,7 @@ describe('create v2 deployment', () => {
if (event.type === 'ready') { if (event.type === 'ready') {
deployment = event.payload; deployment = event.payload;
await disableSSO(deployment.id);
break; break;
} }
} }
@@ -72,6 +78,7 @@ describe('create v2 deployment', () => {
for await (const event of createDeployment( for await (const event of createDeployment(
{ {
token, token,
teamId: process.env.VERCEL_TEAM_ID,
path: path.resolve(__dirname, 'fixtures', 'v2'), path: path.resolve(__dirname, 'fixtures', 'v2'),
}, },
{ {
@@ -80,6 +87,7 @@ describe('create v2 deployment', () => {
)) { )) {
if (event.type === 'ready') { if (event.type === 'ready') {
deployment = event.payload; deployment = event.payload;
await disableSSO(deployment.id);
expect(deployment.readyState).toEqual('READY'); expect(deployment.readyState).toEqual('READY');
break; break;
} }
@@ -91,6 +99,7 @@ describe('create v2 deployment', () => {
for await (const event of createDeployment( for await (const event of createDeployment(
{ {
token, token,
teamId: process.env.VERCEL_TEAM_ID,
path: path.resolve(__dirname, 'fixtures', 'v2-file-permissions'), path: path.resolve(__dirname, 'fixtures', 'v2-file-permissions'),
skipAutoDetectionConfirmation: true, skipAutoDetectionConfirmation: true,
}, },
@@ -105,6 +114,7 @@ describe('create v2 deployment', () => {
)) { )) {
if (event.type === 'ready') { if (event.type === 'ready') {
deployment = event.payload; deployment = event.payload;
await disableSSO(deployment.id);
break; break;
} else if (event.type === 'error') { } else if (event.type === 'error') {
error = event.payload; error = event.payload;
@@ -129,6 +139,7 @@ describe('create v2 deployment', () => {
for await (const event of createDeployment( for await (const event of createDeployment(
{ {
token, token,
teamId: process.env.VERCEL_TEAM_ID,
path: path.resolve(__dirname, 'fixtures', 'nowignore'), path: path.resolve(__dirname, 'fixtures', 'nowignore'),
skipAutoDetectionConfirmation: true, skipAutoDetectionConfirmation: true,
}, },
@@ -143,6 +154,7 @@ describe('create v2 deployment', () => {
)) { )) {
if (event.type === 'ready') { if (event.type === 'ready') {
deployment = event.payload; deployment = event.payload;
await disableSSO(deployment.id);
break; break;
} else if (event.type === 'error') { } else if (event.type === 'error') {
error = event.payload; error = event.payload;

View File

@@ -1,5 +1,11 @@
# @vercel/edge # @vercel/edge
## 1.1.1
### Patch Changes
- bump: edge-runtime ([#10712](https://github.com/vercel/vercel/pull/10712))
## 1.1.0 ## 1.1.0
### Minor Changes ### Minor Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/edge", "name": "@vercel/edge",
"version": "1.1.0", "version": "1.1.1",
"license": "Apache-2.0", "license": "Apache-2.0",
"main": "dist/index.js", "main": "dist/index.js",
"module": "dist/index.mjs", "module": "dist/index.mjs",
@@ -22,7 +22,7 @@
"type-check": "tsc --noEmit" "type-check": "tsc --noEmit"
}, },
"devDependencies": { "devDependencies": {
"@edge-runtime/jest-environment": "2.3.1", "@edge-runtime/jest-environment": "2.3.7",
"@types/jest": "27.4.1", "@types/jest": "27.4.1",
"jest-junit": "16.0.0", "jest-junit": "16.0.0",
"ts-node": "8.9.1", "ts-node": "8.9.1",

View File

@@ -1,5 +1,11 @@
# @vercel/error-utils # @vercel/error-utils
## 2.0.2
### Patch Changes
- use Node.js `util.types.isNativeError` for `isError` method ([#10764](https://github.com/vercel/vercel/pull/10764))
## 2.0.1 ## 2.0.1
### Patch Changes ### Patch Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/error-utils", "name": "@vercel/error-utils",
"version": "2.0.1", "version": "2.0.2",
"description": "A collection of error utilities for vercel/vercel", "description": "A collection of error utilities for vercel/vercel",
"main": "dist/index.js", "main": "dist/index.js",
"types": "dist/index.d.ts", "types": "dist/index.d.ts",

View File

@@ -1,3 +1,5 @@
import util from 'node:util';
export interface SpawnError extends NodeJS.ErrnoException { export interface SpawnError extends NodeJS.ErrnoException {
spawnargs: string[]; spawnargs: string[];
} }
@@ -12,23 +14,10 @@ export const isObject = (obj: unknown): obj is Record<string, unknown> =>
/** /**
* A type guard for `try...catch` errors. * A type guard for `try...catch` errors.
* * @deprecated use `require('node:util').types.isNativeError(error)` instead
* This function is based on:
* https://github.com/stdlib-js/assert-is-error
*/ */
export const isError = (error: unknown): error is Error => { export const isError = (error: unknown): error is Error => {
if (!isObject(error)) return false; return util.types.isNativeError(error);
// Check for `Error` objects instantiated within the current global context.
if (error instanceof Error) return true;
// Walk the prototype tree until we find a matching object.
while (error) {
if (Object.prototype.toString.call(error) === '[object Error]') return true;
error = Object.getPrototypeOf(error);
}
return false;
}; };
export const isErrnoException = ( export const isErrnoException = (

View File

@@ -1,6 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"outDir": "./dist", "outDir": "./dist",
"sourceMap": true,
"types": ["node", "jest"] "types": ["node", "jest"]
}, },
"extends": "../../tsconfig.base.json", "extends": "../../tsconfig.base.json",

View File

@@ -1,5 +1,14 @@
# @vercel/frameworks # @vercel/frameworks
## 2.0.3
### Patch Changes
- update Angular output path discovery ([#10678](https://github.com/vercel/vercel/pull/10678))
- Updated dependencies [[`34dd9c091`](https://github.com/vercel/vercel/commit/34dd9c0918585cf6d3b04bddd9158978b0b4192f)]:
- @vercel/error-utils@2.0.2
## 2.0.2 ## 2.0.2
### Patch Changes ### Patch Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/frameworks", "name": "@vercel/frameworks",
"version": "2.0.2", "version": "2.0.3",
"main": "./dist/frameworks.js", "main": "./dist/frameworks.js",
"types": "./dist/frameworks.d.ts", "types": "./dist/frameworks.d.ts",
"files": [ "files": [
@@ -21,7 +21,7 @@
"dependencies": { "dependencies": {
"@iarna/toml": "2.2.3", "@iarna/toml": "2.2.3",
"js-yaml": "3.13.1", "js-yaml": "3.13.1",
"@vercel/error-utils": "2.0.1" "@vercel/error-utils": "2.0.2"
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "27.4.1", "@types/jest": "27.4.1",

View File

@@ -1,5 +1,5 @@
import { join } from 'path'; import { join } from 'path';
import { promises } from 'fs'; import { existsSync, promises } from 'fs';
import { Framework } from './types'; import { Framework } from './types';
import { readConfigFile } from './read-config-file'; import { readConfigFile } from './read-config-file';
@@ -867,7 +867,11 @@ export const frameworks = [
// If there is only one file in it that is a dir we'll use it as dist dir // If there is only one file in it that is a dir we'll use it as dist dir
if (content.length === 1 && content[0].isDirectory()) { if (content.length === 1 && content[0].isDirectory()) {
return join(base, content[0].name); const potentialOutDir = join(base, content[0].name);
const potentialOutDirWithBrowser = join(potentialOutDir, 'browser');
return existsSync(potentialOutDirWithBrowser)
? potentialOutDirWithBrowser
: potentialOutDir;
} }
} catch (error) { } catch (error) {
console.error(`Error detecting output directory: `, error); console.error(`Error detecting output directory: `, error);

View File

@@ -1,5 +1,13 @@
# @vercel/fs-detectors # @vercel/fs-detectors
## 5.1.3
### Patch Changes
- Updated dependencies [[`306f653da`](https://github.com/vercel/vercel/commit/306f653da9de96ddf583cce35603229aa55c4e53), [`34dd9c091`](https://github.com/vercel/vercel/commit/34dd9c0918585cf6d3b04bddd9158978b0b4192f)]:
- @vercel/frameworks@2.0.3
- @vercel/error-utils@2.0.2
## 5.1.2 ## 5.1.2
### Patch Changes ### Patch Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/fs-detectors", "name": "@vercel/fs-detectors",
"version": "5.1.2", "version": "5.1.3",
"description": "Vercel filesystem detectors", "description": "Vercel filesystem detectors",
"main": "./dist/index.js", "main": "./dist/index.js",
"types": "./dist/index.d.ts", "types": "./dist/index.d.ts",
@@ -21,8 +21,8 @@
"type-check": "tsc --noEmit" "type-check": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"@vercel/error-utils": "2.0.1", "@vercel/error-utils": "2.0.2",
"@vercel/frameworks": "2.0.2", "@vercel/frameworks": "2.0.3",
"@vercel/routing-utils": "3.1.0", "@vercel/routing-utils": "3.1.0",
"glob": "8.0.3", "glob": "8.0.3",
"js-yaml": "4.1.0", "js-yaml": "4.1.0",
@@ -37,7 +37,7 @@
"@types/minimatch": "3.0.5", "@types/minimatch": "3.0.5",
"@types/node": "14.18.33", "@types/node": "14.18.33",
"@types/semver": "7.3.10", "@types/semver": "7.3.10",
"@vercel/build-utils": "7.2.2", "@vercel/build-utils": "7.2.3",
"jest-junit": "16.0.0", "jest-junit": "16.0.0",
"typescript": "4.9.5" "typescript": "4.9.5"
} }

View File

@@ -1,5 +1,14 @@
# @vercel/gatsby-plugin-vercel-builder # @vercel/gatsby-plugin-vercel-builder
## 2.0.9
### Patch Changes
- Fix nested SSR routes ([#10751](https://github.com/vercel/vercel/pull/10751))
- Updated dependencies [[`0861dc8fb`](https://github.com/vercel/vercel/commit/0861dc8fbcea1037626b00664a4b6c22f1b0a7ed)]:
- @vercel/build-utils@7.2.3
## 2.0.8 ## 2.0.8
### Patch Changes ### Patch Changes

View File

@@ -0,0 +1,5 @@
/** @type {import('@ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
};

View File

@@ -1,6 +1,6 @@
{ {
"name": "@vercel/gatsby-plugin-vercel-builder", "name": "@vercel/gatsby-plugin-vercel-builder",
"version": "2.0.8", "version": "2.0.9",
"main": "dist/index.js", "main": "dist/index.js",
"files": [ "files": [
"dist", "dist",
@@ -14,11 +14,13 @@
}, },
"scripts": { "scripts": {
"build": "node ../../utils/build-builder.mjs", "build": "node ../../utils/build-builder.mjs",
"test": "jest --reporters=default --reporters=jest-junit --env node --verbose --bail --runInBand",
"test-unit": "pnpm test test/unit.*test.*",
"type-check": "tsc --noEmit" "type-check": "tsc --noEmit"
}, },
"dependencies": { "dependencies": {
"@sinclair/typebox": "0.25.24", "@sinclair/typebox": "0.25.24",
"@vercel/build-utils": "7.2.2", "@vercel/build-utils": "7.2.3",
"@vercel/routing-utils": "3.1.0", "@vercel/routing-utils": "3.1.0",
"esbuild": "0.14.47", "esbuild": "0.14.47",
"etag": "1.8.1", "etag": "1.8.1",
@@ -27,6 +29,7 @@
"devDependencies": { "devDependencies": {
"@types/etag": "1.8.0", "@types/etag": "1.8.0",
"@types/fs-extra": "11.0.1", "@types/fs-extra": "11.0.1",
"@types/jest": "27.5.1",
"@types/node": "14.18.33", "@types/node": "14.18.33",
"@types/react": "18.0.26", "@types/react": "18.0.26",
"jest-junit": "16.0.0", "jest-junit": "16.0.0",

View File

@@ -17,9 +17,11 @@ import type {
export const writeHandler = async ({ export const writeHandler = async ({
outDir, outDir,
handlerFile, handlerFile,
prefix = '',
}: { }: {
outDir: string; outDir: string;
handlerFile: string; handlerFile: string;
prefix?: string;
}) => { }) => {
const { major } = await getNodeVersion(process.cwd()); const { major } = await getNodeVersion(process.cwd());
@@ -35,6 +37,7 @@ export const writeHandler = async ({
minify: true, minify: true,
define: { define: {
'process.env.NODE_ENV': "'production'", 'process.env.NODE_ENV': "'production'",
vercel_pathPrefix: JSON.stringify(prefix),
}, },
}); });
} catch (e: any) { } catch (e: any) {

View File

@@ -37,7 +37,7 @@ export async function createServerlessFunctions(
await ensureDir(functionDir); await ensureDir(functionDir);
await Promise.all([ await Promise.all([
writeHandler({ outDir: functionDir, handlerFile }), writeHandler({ outDir: functionDir, handlerFile, prefix }),
copyFunctionLibs({ functionDir }), copyFunctionLibs({ functionDir }),
copyHTMLFiles({ functionDir }), copyHTMLFiles({ functionDir }),
writeVCConfig({ functionDir }), writeVCConfig({ functionDir }),

View File

@@ -1,8 +1,8 @@
import os from 'os'; import os from 'os';
import etag from 'etag'; import etag from 'etag';
import { parse } from 'url'; import { join } from 'path';
import { copySync, existsSync } from 'fs-extra'; import { copySync, existsSync } from 'fs-extra';
import { join, dirname, basename } from 'path'; import { getPageName } from './utils';
const TMP_DATA_PATH = join(os.tmpdir(), 'data/datastore'); const TMP_DATA_PATH = join(os.tmpdir(), 'data/datastore');
const CUR_DATA_PATH = join(__dirname, '.cache/data/datastore'); const CUR_DATA_PATH = join(__dirname, '.cache/data/datastore');
@@ -25,34 +25,14 @@ async function getPageSSRHelpers() {
} }
export default async function handler(req, res) { export default async function handler(req, res) {
let pageName; // eslint-disable-next-line no-undef
const pathname = parse(req.url).pathname || '/'; const { pathName, isPageData } = getPageName(req.url, vercel_pathPrefix);
const isPageData = pathname.startsWith('/page-data/');
if (isPageData) {
// /page-data/index/page-data.json
// /page-data/using-ssr/page-data.json
pageName = basename(dirname(pathname));
if (pageName === 'index') {
pageName = '/';
}
} else {
// /using-ssr
// /using-ssr/
// /using-ssr/index.html
pageName = basename(pathname);
if (pageName === 'index.html') {
pageName = basename(dirname(pathname));
}
if (!pageName) {
pageName = '/';
}
}
const [graphqlEngine, { getData, renderHTML, renderPageData }] = const [graphqlEngine, { getData, renderHTML, renderPageData }] =
await Promise.all([getGraphQLEngine(), getPageSSRHelpers()]); await Promise.all([getGraphQLEngine(), getPageSSRHelpers()]);
const data = await getData({ const data = await getData({
pathName: pageName, pathName,
graphqlEngine, graphqlEngine,
req, req,
}); });

View File

@@ -0,0 +1,29 @@
import { parse } from 'url';
import { basename, dirname } from 'path';
export function getPageName(url: string, pathPrefix = '') {
let pathName = (parse(url).pathname || '/').slice(pathPrefix.length);
const isPageData = pathName.startsWith('/page-data/');
if (isPageData) {
// "/page-data/index/page-data.json" -> "/"
// "/page-data/using-ssr/page-data.json" -> "using-ssr"
// "/page-data/foo/bar/ssr/page-data.json" -> "foo/bar/ssr"
pathName = pathName.split('/').slice(2, -1).join('/');
if (pathName === 'index') {
pathName = '/';
}
} else {
// "/using-ssr" -> "using-ssr"
// "/using-ssr/" -> "using-ssr"
// "/using-ssr/index.html" -> "using-ssr"
// "/foo/bar/ssr" -> "foo/bar/ssr"
if (basename(pathName) === 'index.html') {
pathName = dirname(pathName);
}
if (pathName !== '/') {
// Remove leading and trailing "/"
pathName = pathName.replace(/(^\/|\/$)/g, '');
}
}
return { isPageData, pathName };
}

View File

@@ -0,0 +1,7 @@
{
"compilerOptions": {
"sourceMap": true
},
"extends": "../tsconfig.json",
"include": ["*.test.ts"]
}

View File

@@ -0,0 +1,64 @@
import { getPageName } from '../templates/utils';
describe('getPageName()', () => {
it.each([
{
input: '/page-data/index/page-data.json',
pageName: '/',
isPageData: true,
},
{
input: '/page-data/using-ssr/page-data.json',
pageName: 'using-ssr',
isPageData: true,
},
{ input: '/', pageName: '/', isPageData: false },
{ input: '/index.html', pageName: '/', isPageData: false },
{ input: '/using-ssr', pageName: 'using-ssr', isPageData: false },
{ input: '/using-ssr/', pageName: 'using-ssr', isPageData: false },
{
input: '/using-ssr/index.html',
pageName: 'using-ssr',
isPageData: false,
},
{ input: '/foo/bar/ssr', pageName: 'foo/bar/ssr', isPageData: false },
{
input: '/page-data/foo/bar/ssr/page-data.json',
pageName: 'foo/bar/ssr',
isPageData: true,
},
{ input: '/foo/', pathPrefix: '/foo', pageName: '/', isPageData: false },
{
input: '/foo/index.html',
pathPrefix: '/foo',
pageName: '/',
isPageData: false,
},
{
input: '/foo/bar/ssr',
pathPrefix: '/foo/',
pageName: 'bar/ssr',
isPageData: false,
},
{
input: '/foo/page-data/index/page-data.json',
pathPrefix: '/foo',
pageName: '/',
isPageData: true,
},
{
input: '/foo/page-data/bar/ssr/page-data.json',
pathPrefix: '/foo',
pageName: 'bar/ssr',
isPageData: true,
},
])(
'Should return "$pageName" for "$input"',
({ input, pathPrefix, pageName, isPageData }) => {
const actual = getPageName(input, pathPrefix);
expect(actual.pathName).toEqual(pageName);
expect(actual.isPageData).toEqual(isPageData);
}
);
});

View File

@@ -29,7 +29,7 @@
"@types/node-fetch": "^2.3.0", "@types/node-fetch": "^2.3.0",
"@types/tar": "6.1.5", "@types/tar": "6.1.5",
"@types/yauzl-promise": "2.1.0", "@types/yauzl-promise": "2.1.0",
"@vercel/build-utils": "7.2.2", "@vercel/build-utils": "7.2.3",
"async-retry": "1.3.3", "async-retry": "1.3.3",
"execa": "^1.0.0", "execa": "^1.0.0",
"fs-extra": "^7.0.0", "fs-extra": "^7.0.0",

View File

@@ -26,7 +26,7 @@
"devDependencies": { "devDependencies": {
"@types/jest": "27.5.1", "@types/jest": "27.5.1",
"@types/node": "14.18.33", "@types/node": "14.18.33",
"@vercel/build-utils": "7.2.2", "@vercel/build-utils": "7.2.3",
"execa": "3.2.0", "execa": "3.2.0",
"fs-extra": "11.1.0", "fs-extra": "11.1.0",
"jest-junit": "16.0.0" "jest-junit": "16.0.0"

View File

@@ -1,5 +1,15 @@
# @vercel/next # @vercel/next
## 4.0.12
### Patch Changes
- fix re-mapping logic for index prefetches ([#10750](https://github.com/vercel/vercel/pull/10750))
- Fixes a case where using `basePath` along with static generation would output a lambda that conflicts with the root route. ([#10738](https://github.com/vercel/vercel/pull/10738))
- Rework prefetch route handling ([#10779](https://github.com/vercel/vercel/pull/10779))
## 4.0.11 ## 4.0.11
### Patch Changes ### Patch Changes

Some files were not shown because too many files have changed in this diff Show More