diff --git a/.github/actions/setup-rust/action.yml b/.github/actions/setup-rust/action.yml
new file mode 100644
index 0000000000000..bb6044cbf08f1
--- /dev/null
+++ b/.github/actions/setup-rust/action.yml
@@ -0,0 +1,65 @@
+name: 'Rust Setup'
+description: 'Sets up the Rust toolchain for CI'
+inputs:
+ targets:
+ description: 'Comma-separated list of target triples to install for this toolchain'
+ required: false
+ components:
+ description: 'Comma-separated list of components to be additionally installed'
+ required: false
+ skip-install:
+ description: 'Sets environment variables without installing the rust toolchain'
+ required: false
+
+runs:
+ using: 'composite'
+ steps:
+ - name: 'Get toolchain version from file'
+ id: file
+ shell: bash
+ run: echo "toolchain=$(cat ./rust-toolchain)" >> $GITHUB_OUTPUT
+
+ - shell: bash
+ run: |
+ : force toolchain version
+ echo "RUST_TOOLCHAIN=${{ steps.file.outputs.toolchain }}" >> $GITHUB_ENV
+
+ - shell: bash
+ run: |
+ : disable incremental compilation
+ if [ -z "${CARGO_INCREMENTAL+set}" ]; then
+ echo CARGO_INCREMENTAL=0 >> $GITHUB_ENV
+ fi
+
+ - shell: bash
+ run: |
+ : enable colors in Cargo output
+ if [ -z "${CARGO_TERM_COLOR+set}" ]; then
+ echo CARGO_TERM_COLOR=always >> $GITHUB_ENV
+ fi
+
+ - shell: bash
+ run: |
+ : enable rust backtrace
+ if [ -z "${RUST_BACKTRACE+set}" ]; then
+ echo RUST_BACKTRACE=short >> $GITHUB_ENV
+ fi
+
+ - shell: bash
+ run: |
+ : enable faster cargo sparse registry
+ if [ -z "${CARGO_REGISTRIES_CRATES_IO_PROTOCOL+set}" ]; then
+ echo CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse >> $GITHUB_ENV
+ fi
+
+ - name: 'Setup Rust toolchain'
+ uses: dtolnay/rust-toolchain@master
+ if: ${{ !inputs.skip-install }}
+ with:
+ toolchain: ${{ steps.file.outputs.toolchain }}
+ targets: ${{ inputs.targets }}
+ components: ${{ inputs.components }}
+
+ - name: 'Add cargo problem matchers'
+ shell: bash
+ run: echo "::add-matcher::${{ github.action_path }}/matchers.json"
diff --git a/.github/actions/setup-rust/matchers.json b/.github/actions/setup-rust/matchers.json
new file mode 100644
index 0000000000000..aff246556a3db
--- /dev/null
+++ b/.github/actions/setup-rust/matchers.json
@@ -0,0 +1,44 @@
+{
+ "problemMatcher": [
+ {
+ "owner": "cargo-common",
+ "pattern": [
+ {
+ "regexp": "^(warning|warn|error)(?:\\[(\\S*)\\])?: (.*)$",
+ "severity": 1,
+ "code": 2,
+ "message": 3
+ },
+ {
+ "regexp": "^(?:[\\s->=]*(.*):(\\d*):(\\d*)|.*)$",
+ "file": 1,
+ "line": 2,
+ "column": 3
+ }
+ ]
+ },
+ {
+ "owner": "cargo-test",
+ "pattern": [
+ {
+ "regexp": "^.*panicked\\s+at\\s+'(.*)',\\s+(.*):(\\d+):(\\d+)$",
+ "message": 1,
+ "file": 2,
+ "line": 3,
+ "column": 4
+ }
+ ]
+ },
+ {
+ "owner": "rustfmt",
+ "pattern": [
+ {
+ "regexp": "^(Diff in (\\S+)) at line (\\d+):",
+ "message": 1,
+ "file": 2,
+ "line": 3
+ }
+ ]
+ }
+ ]
+}
diff --git a/.github/workflows/build_and_deploy.yml b/.github/workflows/build_and_deploy.yml
index 8ca3dd0bda481..5e5cc8b1dec2a 100644
--- a/.github/workflows/build_and_deploy.yml
+++ b/.github/workflows/build_and_deploy.yml
@@ -8,7 +8,6 @@ on:
env:
NAPI_CLI_VERSION: 2.14.7
TURBO_VERSION: 1.9.6
- RUST_TOOLCHAIN: nightly-2023-03-09
PNPM_VERSION: 7.24.3
NODE_MAINTENANCE_VERSION: 16
NODE_LTS_VERSION: 18
@@ -199,14 +198,11 @@ jobs:
node-version: ${{ env.NODE_LTS_VERSION }}
check-latest: true
- - name: Install
- uses: actions-rs/toolchain@v1
- if: ${{ !matrix.settings.docker }}
+ - name: Install Rust
+ uses: ./.github/actions/setup-rust
with:
- profile: minimal
- override: true
- toolchain: ${{ env.RUST_TOOLCHAIN }}
- target: ${{ matrix.settings.target }}
+ targets: ${{ matrix.settings.target }}
+ skip-install: ${{ !!matrix.settings.docker }}
- name: Cache cargo registry
uses: actions/cache@v3
@@ -235,7 +231,21 @@ jobs:
if: ${{ matrix.settings.docker }}
with:
image: ${{ matrix.settings.docker }}
- options: -e RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} -e NAPI_CLI_VERSION=${{ env.NAPI_CLI_VERSION }} -e TURBO_VERSION=${{ env.TURBO_VERSION }} -e TURBO_TEAM=vercel -e TURBO_TOKEN=${{ secrets.TURBO_TOKEN }} -e TURBO_REMOTE_ONLY=true -v ${{ env.HOME }}/.cargo/git:/root/.cargo/git -v ${{ env.HOME }}/.cargo/registry:/root/.cargo/registry -v ${{ github.workspace }}:/build -w /build
+ options: >-
+ -e RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
+ -e CARGO_INCREMENTAL=${{ env.CARGO_INCREMENTAL }}
+ -e CARGO_TERM_COLOR=${{ env.CARGO_TERM_COLOR }}
+ -e RUST_BACKTRACE=${{ env.RUST_BACKTRACE }}
+ -e CARGO_REGISTRIES_CRATES_IO_PROTOCOL=${{ env.CARGO_REGISTRIES_CRATES_IO_PROTOCOL }}
+ -e NAPI_CLI_VERSION=${{ env.NAPI_CLI_VERSION }}
+ -e TURBO_VERSION=${{ env.TURBO_VERSION }}
+ -e TURBO_TEAM=vercel
+ -e TURBO_TOKEN=${{ secrets.TURBO_TOKEN }}
+ -e TURBO_REMOTE_ONLY=true
+ -v ${{ env.HOME }}/.cargo/git:/root/.cargo/git
+ -v ${{ env.HOME }}/.cargo/registry:/root/.cargo/registry
+ -v ${{ github.workspace }}:/build
+ -w /build
run: ${{ matrix.settings.build }}
- name: 'Build'
@@ -293,12 +303,9 @@ jobs:
check-latest: true
- name: Install Rust
- uses: actions-rs/toolchain@v1
+ uses: ./.github/actions/setup-rust
with:
- profile: minimal
- toolchain: ${{ env.RUST_TOOLCHAIN }}
- override: true
- target: wasm32-unknown-unknown
+ targets: wasm32-unknown-unknown
- run: npm i -g turbo@${{ env.TURBO_VERSION }} pnpm@${PNPM_VERSION}
diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml
index 8c7e0e4f0fb1d..9127813622357 100644
--- a/.github/workflows/build_and_test.yml
+++ b/.github/workflows/build_and_test.yml
@@ -9,11 +9,12 @@ on:
env:
NAPI_CLI_VERSION: 2.14.7
TURBO_VERSION: 1.9.6
- RUST_TOOLCHAIN: nightly-2023-03-09
PNPM_VERSION: 7.24.3
NODE_MAINTENANCE_VERSION: 16
NODE_LTS_VERSION: 18
TEST_CONCURRENCY: 6
+ # disable backtrace for test snapshots
+ RUST_BACKTRACE: 0
TURBO_TEAM: 'vercel'
TURBO_REMOTE_ONLY: 'true'
diff --git a/.github/workflows/build_reusable.yml b/.github/workflows/build_reusable.yml
index 666582d176585..4050297d4a73f 100644
--- a/.github/workflows/build_reusable.yml
+++ b/.github/workflows/build_reusable.yml
@@ -31,11 +31,12 @@ on:
env:
NAPI_CLI_VERSION: 2.14.7
TURBO_VERSION: 1.9.6
- RUST_TOOLCHAIN: nightly-2023-03-09
PNPM_VERSION: 7.24.3
NODE_MAINTENANCE_VERSION: 16
NODE_LTS_VERSION: 18
TEST_CONCURRENCY: 6
+ # disable backtrace for test snapshots
+ RUST_BACKTRACE: 0
TURBO_TEAM: 'vercel'
TURBO_REMOTE_ONLY: 'true'
@@ -56,11 +57,14 @@ jobs:
- run: node -v
- run: pwd
- - name: Install
- uses: actions-rs/toolchain@v1
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 25
+
+ # local action -> needs to run after checkout
+ - name: Install Rust
+ uses: ./.github/actions/setup-rust
with:
- profile: minimal
- toolchain: ${{ env.RUST_TOOLCHAIN }}
components: rustfmt, clippy
- name: Install nextest
@@ -71,10 +75,6 @@ jobs:
- run: npm i -g yarn "pnpm@${PNPM_VERSION}" "turbo@${TURBO_VERSION}" "@napi-rs/cli@${NAPI_CLI_VERSION}"
- - uses: actions/checkout@v3
- with:
- fetch-depth: 25
-
# clean up any previous artifacts to avoid hitting disk space limits
- run: git clean -xdf && rm -rf /tmp/next-repo-*; rm -rf /tmp/next-install-* /tmp/yarn-* /tmp/ncc-cache target && cargo clean
diff --git a/.github/workflows/pull_request_stats.yml b/.github/workflows/pull_request_stats.yml
index 77f3acb697283..23016ba4907cb 100644
--- a/.github/workflows/pull_request_stats.yml
+++ b/.github/workflows/pull_request_stats.yml
@@ -7,7 +7,6 @@ name: Generate Pull Request Stats
env:
NAPI_CLI_VERSION: 2.14.7
TURBO_VERSION: 1.9.6
- RUST_TOOLCHAIN: nightly-2023-03-09
PNPM_VERSION: 7.24.3
NODE_MAINTENANCE_VERSION: 16
NODE_LTS_VERSION: 18
diff --git a/.github/workflows/trigger_release.yml b/.github/workflows/trigger_release.yml
index c0962d685af22..1c36715db4ccd 100644
--- a/.github/workflows/trigger_release.yml
+++ b/.github/workflows/trigger_release.yml
@@ -26,7 +26,6 @@ name: Trigger Release
env:
NAPI_CLI_VERSION: 2.14.7
TURBO_VERSION: 1.9.6
- RUST_TOOLCHAIN: nightly-2023-03-09
PNPM_VERSION: 7.24.3
NODE_MAINTENANCE_VERSION: 16
NODE_LTS_VERSION: 18
diff --git a/lerna.json b/lerna.json
index ebb60ec2ed4f3..2a62942eec7ca 100644
--- a/lerna.json
+++ b/lerna.json
@@ -16,5 +16,5 @@
"registry": "https://registry.npmjs.org/"
}
},
- "version": "13.4.5-canary.6"
+ "version": "13.4.5-canary.7"
}
diff --git a/package.json b/package.json
index 61ff2a74a6b62..ab8783cc8f227 100644
--- a/package.json
+++ b/package.json
@@ -200,14 +200,14 @@
"random-seed": "0.3.0",
"react": "18.2.0",
"react-17": "npm:react@17.0.2",
- "react-builtin": "npm:react@18.3.0-canary-16d053d59-20230506",
+ "react-builtin": "npm:react@18.3.0-canary-1cea38448-20230530",
"react-dom": "18.2.0",
"react-dom-17": "npm:react-dom@17.0.2",
- "react-dom-builtin": "npm:react-dom@18.3.0-canary-16d053d59-20230506",
- "react-dom-experimental-builtin": "npm:react-dom@0.0.0-experimental-16d053d59-20230506",
- "react-experimental-builtin": "npm:react@0.0.0-experimental-16d053d59-20230506",
- "react-server-dom-webpack": "18.3.0-canary-16d053d59-20230506",
- "react-server-dom-webpack-experimental": "npm:react-server-dom-webpack@0.0.0-experimental-16d053d59-20230506",
+ "react-dom-builtin": "npm:react-dom@18.3.0-canary-1cea38448-20230530",
+ "react-dom-experimental-builtin": "npm:react-dom@0.0.0-experimental-1cea38448-20230530",
+ "react-experimental-builtin": "npm:react@0.0.0-experimental-1cea38448-20230530",
+ "react-server-dom-webpack": "18.3.0-canary-1cea38448-20230530",
+ "react-server-dom-webpack-experimental": "npm:react-server-dom-webpack@0.0.0-experimental-1cea38448-20230530",
"react-ssr-prepass": "1.0.8",
"react-virtualized": "9.22.3",
"relay-compiler": "13.0.2",
@@ -217,8 +217,8 @@
"resolve-from": "5.0.0",
"sass": "1.54.0",
"satori": "0.9.1",
- "scheduler-builtin": "npm:scheduler@0.24.0-canary-16d053d59-20230506",
- "scheduler-experimental-builtin": "npm:scheduler@0.0.0-experimental-16d053d59-20230506",
+ "scheduler-builtin": "npm:scheduler@0.24.0-canary-1cea38448-20230530",
+ "scheduler-experimental-builtin": "npm:scheduler@0.0.0-experimental-1cea38448-20230530",
"seedrandom": "3.0.5",
"selenium-webdriver": "4.0.0-beta.4",
"semver": "7.3.7",
@@ -249,8 +249,8 @@
"@babel/parser": "7.18.0",
"@babel/types": "7.18.0",
"@babel/traverse": "7.18.0",
- "@types/react": "18.2.5",
- "@types/react-dom": "18.2.3"
+ "@types/react": "18.2.7",
+ "@types/react-dom": "18.2.4"
},
"engines": {
"node": ">=16.8.0"
diff --git a/packages/create-next-app/package.json b/packages/create-next-app/package.json
index 93560225bdff5..2ef138dc6d8c1 100644
--- a/packages/create-next-app/package.json
+++ b/packages/create-next-app/package.json
@@ -1,6 +1,6 @@
{
"name": "create-next-app",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"keywords": [
"react",
"next",
diff --git a/packages/eslint-config-next/package.json b/packages/eslint-config-next/package.json
index 8638c2b914f5b..7739e30609ad3 100644
--- a/packages/eslint-config-next/package.json
+++ b/packages/eslint-config-next/package.json
@@ -1,6 +1,6 @@
{
"name": "eslint-config-next",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"description": "ESLint configuration used by NextJS.",
"main": "index.js",
"license": "MIT",
@@ -9,7 +9,7 @@
"directory": "packages/eslint-config-next"
},
"dependencies": {
- "@next/eslint-plugin-next": "13.4.5-canary.6",
+ "@next/eslint-plugin-next": "13.4.5-canary.7",
"@rushstack/eslint-patch": "^1.1.3",
"@typescript-eslint/parser": "^5.42.0",
"eslint-import-resolver-node": "^0.3.6",
diff --git a/packages/eslint-plugin-next/package.json b/packages/eslint-plugin-next/package.json
index a6f0457190182..2cf467415ca30 100644
--- a/packages/eslint-plugin-next/package.json
+++ b/packages/eslint-plugin-next/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/eslint-plugin-next",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"description": "ESLint plugin for NextJS.",
"main": "dist/index.js",
"license": "MIT",
diff --git a/packages/font/package.json b/packages/font/package.json
index 8a7935c280bfd..18fe2c8603b8e 100644
--- a/packages/font/package.json
+++ b/packages/font/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/font",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"repository": {
"url": "vercel/next.js",
"directory": "packages/font"
diff --git a/packages/next-bundle-analyzer/package.json b/packages/next-bundle-analyzer/package.json
index fea841a25a3c6..0af11be1af6af 100644
--- a/packages/next-bundle-analyzer/package.json
+++ b/packages/next-bundle-analyzer/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/bundle-analyzer",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"main": "index.js",
"types": "index.d.ts",
"license": "MIT",
diff --git a/packages/next-codemod/package.json b/packages/next-codemod/package.json
index 588757c456c3d..715f9579cb3b2 100644
--- a/packages/next-codemod/package.json
+++ b/packages/next-codemod/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/codemod",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"license": "MIT",
"repository": {
"type": "git",
diff --git a/packages/next-env/package.json b/packages/next-env/package.json
index ecd209b7e8e7f..9d64396cf2e5d 100644
--- a/packages/next-env/package.json
+++ b/packages/next-env/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/env",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"keywords": [
"react",
"next",
diff --git a/packages/next-mdx/package.json b/packages/next-mdx/package.json
index a1069ddf5fac7..4aedc4cd5cbfe 100644
--- a/packages/next-mdx/package.json
+++ b/packages/next-mdx/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/mdx",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"main": "index.js",
"license": "MIT",
"repository": {
diff --git a/packages/next-plugin-storybook/package.json b/packages/next-plugin-storybook/package.json
index 0a74009b518a4..4e8c968e0a347 100644
--- a/packages/next-plugin-storybook/package.json
+++ b/packages/next-plugin-storybook/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/plugin-storybook",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"repository": {
"url": "vercel/next.js",
"directory": "packages/next-plugin-storybook"
diff --git a/packages/next-polyfill-module/package.json b/packages/next-polyfill-module/package.json
index 6dfce79785608..2c17e59041520 100644
--- a/packages/next-polyfill-module/package.json
+++ b/packages/next-polyfill-module/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/polyfill-module",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"description": "A standard library polyfill for ES Modules supporting browsers (Edge 16+, Firefox 60+, Chrome 61+, Safari 10.1+)",
"main": "dist/polyfill-module.js",
"license": "MIT",
diff --git a/packages/next-polyfill-nomodule/package.json b/packages/next-polyfill-nomodule/package.json
index d3ef21c460ff5..61f1c3adaf61f 100644
--- a/packages/next-polyfill-nomodule/package.json
+++ b/packages/next-polyfill-nomodule/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/polyfill-nomodule",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"description": "A polyfill for non-dead, nomodule browsers.",
"main": "dist/polyfill-nomodule.js",
"license": "MIT",
diff --git a/packages/next-swc/package.json b/packages/next-swc/package.json
index baf4f4d40f721..5cd2ecfcf9323 100644
--- a/packages/next-swc/package.json
+++ b/packages/next-swc/package.json
@@ -1,6 +1,6 @@
{
"name": "@next/swc",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"private": true,
"scripts": {
"clean": "node ../../scripts/rm.mjs native",
diff --git a/packages/next/package.json b/packages/next/package.json
index 2df9a03414df8..de609b77321ad 100644
--- a/packages/next/package.json
+++ b/packages/next/package.json
@@ -1,6 +1,6 @@
{
"name": "next",
- "version": "13.4.5-canary.6",
+ "version": "13.4.5-canary.7",
"description": "The React Framework",
"main": "./dist/server/next.js",
"license": "MIT",
@@ -83,7 +83,7 @@
]
},
"dependencies": {
- "@next/env": "13.4.5-canary.6",
+ "@next/env": "13.4.5-canary.7",
"@swc/helpers": "0.5.1",
"busboy": "1.6.0",
"caniuse-lite": "^1.0.30001406",
@@ -141,11 +141,11 @@
"@jest/types": "29.5.0",
"@napi-rs/cli": "2.14.7",
"@napi-rs/triples": "1.1.0",
- "@next/polyfill-module": "13.4.5-canary.6",
- "@next/polyfill-nomodule": "13.4.5-canary.6",
- "@next/react-dev-overlay": "13.4.5-canary.6",
- "@next/react-refresh-utils": "13.4.5-canary.6",
- "@next/swc": "13.4.5-canary.6",
+ "@next/polyfill-module": "13.4.5-canary.7",
+ "@next/polyfill-nomodule": "13.4.5-canary.7",
+ "@next/react-dev-overlay": "13.4.5-canary.7",
+ "@next/react-refresh-utils": "13.4.5-canary.7",
+ "@next/swc": "13.4.5-canary.7",
"@opentelemetry/api": "1.4.1",
"@segment/ajv-human-errors": "2.1.2",
"@taskr/clear": "1.1.0",
diff --git a/packages/next/src/build/webpack-config.ts b/packages/next/src/build/webpack-config.ts
index 1766f68cbcd58..0550a5e25c114 100644
--- a/packages/next/src/build/webpack-config.ts
+++ b/packages/next/src/build/webpack-config.ts
@@ -1810,7 +1810,13 @@ export default async function getBaseWebpackConfig(
output: {
// we must set publicPath to an empty value to override the default of
// auto which doesn't work in IE11
- publicPath: `${config.assetPrefix || ''}/_next/`,
+ publicPath: `${
+ config.assetPrefix
+ ? config.assetPrefix.endsWith('/')
+ ? config.assetPrefix.slice(0, -1)
+ : config.assetPrefix
+ : ''
+ }/_next/`,
path: !dev && isNodeServer ? path.join(outputPath, 'chunks') : outputPath,
// On the server we don't use hashes
filename:
diff --git a/packages/next/src/build/webpack/loaders/next-font-loader/index.ts b/packages/next/src/build/webpack/loaders/next-font-loader/index.ts
index 87221932b26b1..312863a6e04bf 100644
--- a/packages/next/src/build/webpack/loaders/next-font-loader/index.ts
+++ b/packages/next/src/build/webpack/loaders/next-font-loader/index.ts
@@ -96,22 +96,24 @@ export default async function nextFontLoader(this: any) {
// The font loader function emits font files and returns @font-faces and fallback font metrics
const fontLoader: FontLoader = require(fontLoaderPath).default
let { css, fallbackFonts, adjustFontFallback, weight, style, variable } =
- await fontLoader({
- functionName,
- variableName,
- data,
- emitFontFile,
- resolve: (src: string) =>
- promisify(this.resolve)(
- path.dirname(
- path.join(this.rootContext, relativeFilePathFromRoot)
+ await nextFontLoaderSpan.traceChild('font-loader').traceAsyncFn(() =>
+ fontLoader({
+ functionName,
+ variableName,
+ data,
+ emitFontFile,
+ resolve: (src: string) =>
+ promisify(this.resolve)(
+ path.dirname(
+ path.join(this.rootContext, relativeFilePathFromRoot)
+ ),
+ src.startsWith('.') ? src : `./${src}`
),
- src.startsWith('.') ? src : `./${src}`
- ),
- isDev,
- isServer,
- loaderContext: this,
- })
+ isDev,
+ isServer,
+ loaderContext: this,
+ })
+ )
const { postcss } = await getPostcss()
@@ -127,19 +129,23 @@ export default async function nextFontLoader(this: any) {
)
// Add CSS classes, exports and make the font-family locally scoped by turning it unguessable
- const result = await postcss(
- postcssNextFontPlugin({
- exports,
- fontFamilyHash,
- fallbackFonts,
- weight,
- style,
- adjustFontFallback,
- variable,
- })
- ).process(css, {
- from: undefined,
- })
+ const result = await nextFontLoaderSpan
+ .traceChild('postcss')
+ .traceAsyncFn(() =>
+ postcss(
+ postcssNextFontPlugin({
+ exports,
+ fontFamilyHash,
+ fallbackFonts,
+ weight,
+ style,
+ adjustFontFallback,
+ variable,
+ })
+ ).process(css, {
+ from: undefined,
+ })
+ )
const ast = {
type: 'postcss',
diff --git a/packages/next/src/build/webpack/plugins/profiling-plugin.ts b/packages/next/src/build/webpack/plugins/profiling-plugin.ts
index 5ad1a09d01cfc..1534368c298c7 100644
--- a/packages/next/src/build/webpack/plugins/profiling-plugin.ts
+++ b/packages/next/src/build/webpack/plugins/profiling-plugin.ts
@@ -180,6 +180,7 @@ export class ProfilingPlugin {
span = parentSpan.traceChild(spanName)
}
span.setAttribute('name', module.userRequest)
+ span.setAttribute('layer', module.layer)
moduleSpans!.set(module, span)
})
diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js
index 8165cd1070580..543bc0d8816cf 100644
--- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js
+++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js
@@ -17,7 +17,7 @@ if (process.env.NODE_ENV !== "production") {
var React = require("next/dist/compiled/react-experimental");
var ReactDOM = require('react-dom');
-var ReactVersion = '18.3.0-experimental-16d053d59-20230506';
+var ReactVersion = '18.3.0-experimental-1cea38448-20230530';
var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
@@ -6173,6 +6173,7 @@ function preloadAsStylePropsFromProps(href, props) {
as: 'style',
href: href,
crossOrigin: props.crossOrigin,
+ fetchPriority: props.fetchPriority,
integrity: props.integrity,
media: props.media,
hrefLang: props.hrefLang,
@@ -6186,7 +6187,9 @@ function preloadAsScriptPropsFromProps(href, props) {
as: 'script',
href: href,
crossOrigin: props.crossOrigin,
+ fetchPriority: props.fetchPriority,
integrity: props.integrity,
+ nonce: props.nonce,
referrerPolicy: props.referrerPolicy
};
}
diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.min.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.min.js
index d849cf2fb0465..f938bb93fc561 100644
--- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.min.js
+++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.min.js
@@ -45,12 +45,12 @@ a.push("/>");null!==dc&&dc.forEach(fb,a);return null;case "button":a.push(D("but
a);y(a,ec,pa);if("string"===typeof pa){a.push(t(pa));var lc=null}else lc=pa;return lc;case "form":a.push(D("form"));var ra=null,mc=null,S=null,sa=null,ta=null,ua=null,va;for(va in c)if(r.call(c,va)){var T=c[va];if(null!=T)switch(va){case "children":ra=T;break;case "dangerouslySetInnerHTML":mc=T;break;case "action":S=T;break;case "encType":sa=T;break;case "method":ta=T;break;case "target":ua=T;break;default:x(a,va,T)}}var rb=null,sb=null;if("function"===typeof S)if("function"===typeof S.$$FORM_ACTION){var Ld=
db(e),fa=S.$$FORM_ACTION(Ld);S=fa.action||"";sa=fa.encType;ta=fa.method;ua=fa.target;rb=fa.data;sb=fa.name}else a.push(" ","action",'="',eb,'"'),ua=ta=sa=S=null,hb(e);null!=S&&x(a,"action",S);null!=sa&&x(a,"encType",sa);null!=ta&&x(a,"method",ta);null!=ua&&x(a,"target",ua);a.push(">");null!==sb&&(a.push('"),null!==rb&&rb.forEach(fb,a));y(a,mc,ra);if("string"===typeof ra){a.push(t(ra));var nc=null}else nc=ra;return nc;case "menuitem":a.push(D("menuitem"));
for(var Pa in c)if(r.call(c,Pa)){var oc=c[Pa];if(null!=oc)switch(Pa){case "children":case "dangerouslySetInnerHTML":throw Error(l(400));default:x(a,Pa,oc)}}a.push(">");return null;case "title":if(3===f.insertionMode||f.noscriptTagInScope||null!=c.itemProp)var pc=mb(a,c);else mb(e.hoistableChunks,c),pc=null;return pc;case "link":return jb(a,c,e,d,g,f.insertionMode,f.noscriptTagInScope);case "script":a:if(3===f.insertionMode||f.noscriptTagInScope||null!=c.itemProp||"string"!==typeof c.src||!c.src)var tb=
-wb(a,c);else{var wa="[script]"+c.src;if(!0!==c.async||c.onLoad||c.onError){if(!0!==c.noModule){var ha=d.preloadsMap.get(wa);ha||(ha={type:"preload",chunks:[],state:0,props:{rel:"preload",as:"script",href:c.src,crossOrigin:c.crossOrigin,integrity:c.integrity,referrerPolicy:c.referrerPolicy}},d.preloadsMap.set(wa,ha),d.usedScripts.add(ha),C(ha.chunks,ha.props))}if(!0!==c.async){wb(a,c);tb=null;break a}}else{var xa=d.scriptsMap.get(wa);if(!xa){xa={type:"script",chunks:[],state:0,props:null};d.scriptsMap.set(wa,
-xa);d.scripts.add(xa);var qc=c,Qa=d.preloadsMap.get(wa);if(Qa){Qa.state|=4;var Ra=qc=n({},c),rc=Qa.props;null==Ra.crossOrigin&&(Ra.crossOrigin=rc.crossOrigin);null==Ra.integrity&&(Ra.integrity=rc.integrity)}wb(xa.chunks,qc)}}g&&a.push("\x3c!-- --\x3e");tb=null}return tb;case "style":var ya=c.precedence,za=c.href;if(3===f.insertionMode||f.noscriptTagInScope||null!=c.itemProp||"string"!==typeof ya||"string"!==typeof za||""===za){a.push(D("style"));var ia=null,sc=null,Aa;for(Aa in c)if(r.call(c,Aa)){var Sa=
-c[Aa];if(null!=Sa)switch(Aa){case "children":ia=Sa;break;case "dangerouslySetInnerHTML":sc=Sa;break;default:x(a,Aa,Sa)}}a.push(">");var Ba=Array.isArray(ia)?2>ia.length?ia[0]:null:ia;"function"!==typeof Ba&&"symbol"!==typeof Ba&&null!==Ba&&void 0!==Ba&&a.push(t(""+Ba));y(a,sc,ia);a.push("","style",">");var tc=null}else{var uc="[style]"+za,P=d.stylesMap.get(uc);if(!P){if(P=d.stylePrecedences.get(ya))P.props.hrefs.push(za);else{P={type:"style",chunks:[],state:0,props:{precedence:ya,hrefs:[za]}};d.stylePrecedences.set(ya,
-P);var vc=new Set;vc.add(P);d.precedences.set(ya,vc)}d.stylesMap.set(uc,P);d.boundaryResources&&d.boundaryResources.add(P);var wc=P.chunks,ja=null,xc=null,Ta;for(Ta in c)if(r.call(c,Ta)){var ub=c[Ta];if(null!=ub)switch(Ta){case "children":ja=ub;break;case "dangerouslySetInnerHTML":xc=ub}}var Ca=Array.isArray(ja)?2>ja.length?ja[0]:null:ja;"function"!==typeof Ca&&"symbol"!==typeof Ca&&null!==Ca&&void 0!==Ca&&wc.push(t(""+Ca));y(wc,xc,ja)}g&&a.push("\x3c!-- --\x3e");tc=void 0}return tc;case "meta":if(3===
-f.insertionMode||f.noscriptTagInScope||null!=c.itemProp)var yc=lb(a,c,"meta");else g&&a.push("\x3c!-- --\x3e"),yc="string"===typeof c.charSet?lb(e.charsetChunks,c,"meta"):lb(e.hoistableChunks,c,"meta");return yc;case "listing":case "pre":a.push(D(b));var Da=null,Ea=null,Fa;for(Fa in c)if(r.call(c,Fa)){var Ua=c[Fa];if(null!=Ua)switch(Fa){case "children":Da=Ua;break;case "dangerouslySetInnerHTML":Ea=Ua;break;default:x(a,Fa,Ua)}}a.push(">");if(null!=Ea){if(null!=Da)throw Error(l(60));if("object"!==typeof Ea||
-!("__html"in Ea))throw Error(l(61));var Y=Ea.__html;null!==Y&&void 0!==Y&&("string"===typeof Y&&0");var Ba=Array.isArray(ia)?2>ia.length?ia[0]:null:ia;"function"!==typeof Ba&&"symbol"!==typeof Ba&&null!==Ba&&void 0!==Ba&&a.push(t(""+Ba));y(a,sc,ia);a.push("","style",">");var tc=null}else{var uc="[style]"+za,P=d.stylesMap.get(uc);if(!P){if(P=d.stylePrecedences.get(ya))P.props.hrefs.push(za);else{P={type:"style",chunks:[],
+state:0,props:{precedence:ya,hrefs:[za]}};d.stylePrecedences.set(ya,P);var vc=new Set;vc.add(P);d.precedences.set(ya,vc)}d.stylesMap.set(uc,P);d.boundaryResources&&d.boundaryResources.add(P);var wc=P.chunks,ja=null,xc=null,Ta;for(Ta in c)if(r.call(c,Ta)){var ub=c[Ta];if(null!=ub)switch(Ta){case "children":ja=ub;break;case "dangerouslySetInnerHTML":xc=ub}}var Ca=Array.isArray(ja)?2>ja.length?ja[0]:null:ja;"function"!==typeof Ca&&"symbol"!==typeof Ca&&null!==Ca&&void 0!==Ca&&wc.push(t(""+Ca));y(wc,
+xc,ja)}g&&a.push("\x3c!-- --\x3e");tc=void 0}return tc;case "meta":if(3===f.insertionMode||f.noscriptTagInScope||null!=c.itemProp)var yc=lb(a,c,"meta");else g&&a.push("\x3c!-- --\x3e"),yc="string"===typeof c.charSet?lb(e.charsetChunks,c,"meta"):lb(e.hoistableChunks,c,"meta");return yc;case "listing":case "pre":a.push(D(b));var Da=null,Ea=null,Fa;for(Fa in c)if(r.call(c,Fa)){var Ua=c[Fa];if(null!=Ua)switch(Fa){case "children":Da=Ua;break;case "dangerouslySetInnerHTML":Ea=Ua;break;default:x(a,Fa,Ua)}}a.push(">");
+if(null!=Ea){if(null!=Da)throw Error(l(60));if("object"!==typeof Ea||!("__html"in Ea))throw Error(l(61));var Y=Ea.__html;null!==Y&&void 0!==Y&&("string"===typeof Y&&0f.insertionMode&&null===e.headChunks){e.headChunks=[];var zc=xb(e.headChunks,c,"head")}else zc=xb(a,c,"head");return zc;case "html":if(0===f.insertionMode&&null===e.htmlChunks){e.htmlChunks=[""];var Ac=xb(e.htmlChunks,c,"html")}else Ac=xb(a,c,"html");return Ac;default:if(-1!==b.indexOf("-")){a.push(D(b));var vb=null,Bc=null,U;for(U in c)if(r.call(c,U)){var E=c[U];if(null!=E&&"function"!==typeof E&&"object"!==typeof E&&!1!==E)switch(!0===E&&(E=""),"className"===U&&(U=
"class"),U){case "children":vb=E;break;case "dangerouslySetInnerHTML":Bc=E;break;case "style":bb(a,E);break;case "suppressContentEditableWarning":case "suppressHydrationWarning":break;default:ma(U)&&"function"!==typeof E&&"symbol"!==typeof E&&a.push(" ",U,'="',t(E),'"')}}a.push(">");y(a,Bc,vb);return vb}}return xb(a,c,b)}function Bb(a,b){b=b.bootstrapChunks;for(var c=0;c')}
@@ -79,7 +79,7 @@ function Xa(a,b){var c=I?I:null;if(c){var d=c.resources;if("string"===typeof a&&
break;default:d.explicitOtherPreloads.add(g)}Cc(c)}}}
function Ya(a,b){var c=I?I:null;if(c){var d=c.resources;if("string"===typeof a&&a&&"object"===typeof b&&null!==b){var e=b.as;switch(e){case "style":var f="["+e+"]"+a,g=d.stylesMap.get(f);e=b.precedence||"default";if(!g){g=0;var h=d.preloadsMap.get(f);h&&h.state&3&&(g=8);g={type:"stylesheet",chunks:[],state:g,props:{rel:"stylesheet",href:a,"data-precedence":e,crossOrigin:b.crossOrigin,integrity:b.integrity}};d.stylesMap.set(f,g);a=d.precedences.get(e);a||(a=new Set,d.precedences.set(e,a),b={type:"style",
chunks:[],state:0,props:{precedence:e,hrefs:[]}},a.add(b),d.stylePrecedences.set(e,b));a.add(g);Cc(c)}break;case "script":f="["+e+"]"+a,e=d.scriptsMap.get(f),e||(e={type:"script",chunks:[],state:0,props:null},d.scriptsMap.set(f,e),a={src:a,async:!0,crossOrigin:b.crossOrigin,integrity:b.integrity,nonce:b.nonce},d.scripts.add(e),wb(e.chunks,a),Cc(c))}}}}
-function Vb(a,b,c){b="[script]"+b;var d=a.scriptsMap.get(b);d||(d={type:"script",chunks:c,state:0,props:null},a.scriptsMap.set(b,d),a.scripts.add(d))}function kb(a,b){return{rel:"preload",as:"style",href:a,crossOrigin:b.crossOrigin,integrity:b.integrity,media:b.media,hrefLang:b.hrefLang,referrerPolicy:b.referrerPolicy}}function Dc(a){this.add(a)}
+function Vb(a,b,c){b="[script]"+b;var d=a.scriptsMap.get(b);d||(d={type:"script",chunks:c,state:0,props:null},a.scriptsMap.set(b,d),a.scripts.add(d))}function kb(a,b){return{rel:"preload",as:"style",href:a,crossOrigin:b.crossOrigin,fetchPriority:b.fetchPriority,integrity:b.integrity,media:b.media,hrefLang:b.hrefLang,referrerPolicy:b.referrerPolicy}}function Dc(a){this.add(a)}
function Ec(a,b,c){b=void 0===b?"":b;var d=null,e=0;void 0!==c&&(e=1,"string"===typeof c?(d={src:c,chunks:[]},wb(d.chunks,{src:c,async:!0,integrity:void 0,nonce:void 0})):(d={src:c.src,chunks:[]},wb(d.chunks,{src:c.src,async:!0,integrity:c.integrity,nonce:void 0})));return{bootstrapChunks:[],placeholderPrefix:b+"P:",segmentPrefix:b+"S:",boundaryPrefix:b+"B:",idPrefix:b,nextSuspenseID:0,streamingFormat:e,startInlineScript:"