Skip to content

Commit

Permalink
Differentiate error messages in server function transforms (#71491)
Browse files Browse the repository at this point in the history
Updated error messages to differentiate between the two different directives.

### `"use server"`

- `Server Actions must be async functions.`
- `Only async functions are allowed to be exported in a "use server" file.`

### `"use cache"`

- `"use cache" functions must be async functions.`
- `Only async functions are allowed to be exported in a "use cache" file.`
  • Loading branch information
unstubbable authored Oct 18, 2024
1 parent 3de04dc commit 8c401f6
Show file tree
Hide file tree
Showing 15 changed files with 139 additions and 56 deletions.
82 changes: 54 additions & 28 deletions crates/next-custom-transforms/src/transforms/server_actions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -917,10 +917,21 @@ impl<C: Comments> VisitMut for ServerActions<C> {

if (is_action_fn || cache_type.is_some()) && !f.function.is_async {
HANDLER.with(|handler| {
let subject = if is_action_fn {
"Server Actions"
} else {
"\"use cache\" functions"
};

handler
.struct_span_err(f.function.span, "Server Actions must be async functions")
.struct_span_err(
f.function.span,
&format!("{subject} must be async functions."),
)
.emit();
});

return;
}

if !is_action_fn && cache_type.is_none() || !self.config.is_react_server_layer {
Expand Down Expand Up @@ -1041,9 +1052,14 @@ impl<C: Comments> VisitMut for ServerActions<C> {
if !f.function.is_async {
HANDLER.with(|handler| {
handler
.struct_span_err(f.ident.span, "Cache functions must be async functions")
.struct_span_err(
f.ident.span,
"\"use cache\" functions must be async functions.",
)
.emit();
});

return;
}

// Collect all the identifiers defined inside the closure and used
Expand Down Expand Up @@ -1177,16 +1193,20 @@ impl<C: Comments> VisitMut for ServerActions<C> {
take(&mut self.names)
};

if !a.is_async
// Errors for in_action_file/in_cache_file are handled in `visit_mut_module_items`.
&& (is_action_fn && !self.in_action_file
|| cache_type.is_some() && self.in_cache_file.is_none())
{
if !a.is_async && (is_action_fn || cache_type.is_some()) {
HANDLER.with(|handler| {
let subject = if is_action_fn {
"Server Actions"
} else {
"\"use cache\" functions"
};

handler
.struct_span_err(a.span, "Server Actions must be async functions")
.struct_span_err(a.span, &format!("{subject} must be async functions."))
.emit();
});

return;
}

if !is_action_fn && cache_type.is_none() || !self.config.is_react_server_layer {
Expand Down Expand Up @@ -1424,28 +1444,24 @@ impl<C: Comments> VisitMut for ServerActions<C> {
match &mut *default_expr.expr {
Expr::Fn(_f) => {}
Expr::Arrow(arrow) => {
if !arrow.is_async {
disallowed_export_span = default_expr.span;
} else {
// export default async () => {}
// Use the span of the arrow function
let span = arrow.span;
// export default async () => {}
// Use the span of the arrow function
let span = arrow.span;

let new_ident = Ident::new(
gen_action_ident(&mut self.reference_index),
span,
self.private_ctxt,
);
let new_ident = Ident::new(
gen_action_ident(&mut self.reference_index),
span,
self.private_ctxt,
);

self.exported_idents
.push((new_ident.clone(), "default".into()));
self.exported_idents
.push((new_ident.clone(), "default".into()));

create_var_declarator(&new_ident, &mut self.extra_items);
attach_name_to_default_expr(&new_ident, &mut self.extra_items);
create_var_declarator(&new_ident, &mut self.extra_items);
attach_name_to_default_expr(&new_ident, &mut self.extra_items);

*default_expr.expr =
assign_arrow_expr(&new_ident, Expr::Arrow(arrow.clone()));
}
*default_expr.expr =
assign_arrow_expr(&new_ident, Expr::Arrow(arrow.clone()));
}
Expr::Ident(ident) => {
// export default foo
Expand Down Expand Up @@ -1484,14 +1500,24 @@ impl<C: Comments> VisitMut for ServerActions<C> {

if disallowed_export_span != DUMMY_SP {
HANDLER.with(|handler| {
let directive = if self.in_action_file {
"\"use server\""
} else {
"\"use cache\""
};

handler
.struct_span_err(
disallowed_export_span,
"Only async functions are allowed to be exported in a \"use \
server\" file.",
&format!(
"Only async functions are allowed to be exported in a \
{directive} file."
),
)
.emit();
});

return;
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
'use cache'

export default function () {}
export function foo() {}
export const bar = () => {}
export const baz = 42
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
x "use cache" functions must be async functions.
,-[input.js:3:1]
2 |
3 | export default function () {}
: ^^^^^^^^^^^^^^
4 | export function foo() {}
`----
x "use cache" functions must be async functions.
,-[input.js:4:1]
3 | export default function () {}
4 | export function foo() {}
: ^^^
5 | export const bar = () => {}
`----
x "use cache" functions must be async functions.
,-[input.js:5:1]
4 | export function foo() {}
5 | export const bar = () => {}
: ^^^^^^^^
6 | export const baz = 42
`----
x Only async functions are allowed to be exported in a "use cache" file.
,-[input.js:6:1]
5 | export const bar = () => {}
6 | export const baz = 42
: ^^^^^^^^^^^^^^^^^^^^^
`----
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
export default function () {
'use cache'
}

export function foo() {
'use cache'
}

export const bar = () => {
'use cache'
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default function() {}
export function foo() {}
export const bar = ()=>{};
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
x "use cache" functions must be async functions.
,-[input.js:1:1]
1 | ,-> export default function () {
2 | | 'use cache'
3 | `-> }
`----
x "use cache" functions must be async functions.
,-[input.js:5:1]
4 |
5 | export function foo() {
: ^^^
6 | 'use cache'
`----
x "use cache" functions must be async functions.
,-[input.js:9:1]
8 |
9 | ,-> export const bar = () => {
10 | | 'use cache'
11 | `-> }
`----
Original file line number Diff line number Diff line change
@@ -1,8 +0,0 @@
/* __next_internal_action_entry_do_not_use__ {"b78c261f135a7a852508c2920bd7228020ff4bd7":"x"} */ import { registerServerReference } from "private-next-rsc-server-reference";
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
export const x = 1;
import { ensureServerEntryExports } from "private-next-rsc-action-validate";
ensureServerEntryExports([
x
]);
registerServerReference(x, "b78c261f135a7a852508c2920bd7228020ff4bd7", null);
Original file line number Diff line number Diff line change
@@ -1,7 +0,0 @@
/* __next_internal_action_entry_do_not_use__ {} */ import { registerServerReference } from "private-next-rsc-server-reference";
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
export default class Component {
render() {
return null;
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +0,0 @@
/* __next_internal_action_entry_do_not_use__ {} */ import { registerServerReference } from "private-next-rsc-server-reference";
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
export * from 'foo';
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
/* __next_internal_action_entry_do_not_use__ {} */ import { registerServerReference } from "private-next-rsc-server-reference";
/* __next_internal_action_entry_do_not_use__ {"c18c215a6b7cdc64bf709f3a714ffdef1bf9651d":"default"} */ import { registerServerReference } from "private-next-rsc-server-reference";
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
export default (()=>{});
export default $$RSC_SERVER_ACTION_0 = ()=>{};
var $$RSC_SERVER_ACTION_0;
Object.defineProperty($$RSC_SERVER_ACTION_0, "name", {
"value": "default",
"writable": false
});
import { ensureServerEntryExports } from "private-next-rsc-action-validate";
ensureServerEntryExports([
$$RSC_SERVER_ACTION_0
]);
registerServerReference($$RSC_SERVER_ACTION_0, "c18c215a6b7cdc64bf709f3a714ffdef1bf9651d", null);
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
x Only async functions are allowed to be exported in a "use server" file.
x Server Actions must be async functions.
,-[input.js:3:1]
2 |
3 | export default () => {}
: ^^^^^^^^^^^^^^^^^^^^^^^
: ^^^^^^^^
`----
Original file line number Diff line number Diff line change
@@ -1,4 +1 @@
/* __next_internal_action_entry_do_not_use__ {"6a88810ecce4a4e8b59d53b8327d7e98bbf251d7":"$$RSC_SERVER_ACTION_0"} */ import { registerServerReference } from "private-next-rsc-server-reference";
import { encryptActionBoundArgs, decryptActionBoundArgs } from "private-next-rsc-action-encryption";
export const $$RSC_SERVER_ACTION_0 = async function foo() {};
const foo = registerServerReference($$RSC_SERVER_ACTION_0, "6a88810ecce4a4e8b59d53b8327d7e98bbf251d7", null);
const foo = ()=>{};
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
x Server Actions must be async functions
x Server Actions must be async functions.
,-[input.js:1:1]
1 | ,-> const foo = () => {
2 | | 'use server'
Expand Down
3 changes: 2 additions & 1 deletion test/e2e/app-dir/actions/app/server/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,5 @@ export async function redirectAction(formData) {
}

// Test case for https://github.com/vercel/next.js/issues/61183
export const dummyServerAction = () => new Promise((r) => setTimeout(r, 2000))
export const dummyServerAction = async () =>
new Promise((r) => setTimeout(r, 2000))

2 comments on commit 8c401f6

@ijjk
Copy link
Member

@ijjk ijjk commented on 8c401f6 Oct 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stats from current release

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
buildDuration 14.8s 18.2s ⚠️ +3.4s
buildDurationCached 14.9s 13.7s N/A
nodeModulesSize 372 MB 372 MB ⚠️ +235 kB
nextStartRea..uration (ms) 435ms 433ms N/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
1193.HASH.js gzip 168 B 168 B
1495-HASH.js gzip 5.27 kB 5.27 kB N/A
9073-HASH.js gzip 43.8 kB 44.2 kB ⚠️ +367 B
d4c1d954-HASH.js gzip 52.6 kB 52.6 kB N/A
framework-HASH.js gzip 57.4 kB 57.4 kB N/A
main-app-HASH.js gzip 237 B 236 B N/A
main-HASH.js gzip 32.8 kB 32.8 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 44 kB 44.4 kB ⚠️ +367 B
Legacy Client Bundles (polyfills)
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
_app-HASH.js gzip 192 B 193 B N/A
_error-HASH.js gzip 192 B 192 B
amp-HASH.js gzip 511 B 510 B N/A
css-HASH.js gzip 341 B 343 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB N/A
edge-ssr-HASH.js gzip 266 B 266 B
head-HASH.js gzip 364 B 364 B
hooks-HASH.js gzip 391 B 391 B
image-HASH.js gzip 4.41 kB 4.4 kB N/A
index-HASH.js gzip 269 B 268 B N/A
link-HASH.js gzip 2.78 kB 2.78 kB N/A
routerDirect..HASH.js gzip 328 B 327 B N/A
script-HASH.js gzip 397 B 395 B N/A
withRouter-HASH.js gzip 324 B 322 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 1.32 kB 1.32 kB
Client Build Manifests
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
_buildManifest.js gzip 746 B 749 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
index.html gzip 522 B 523 B N/A
link.html gzip 537 B 536 B N/A
withRouter.html gzip 518 B 519 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
edge-ssr.js gzip 130 kB 130 kB ⚠️ +130 B
page.js gzip 189 kB 189 kB ⚠️ +391 B
Overall change 319 kB 319 kB ⚠️ +521 B
Middleware size
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
middleware-b..fest.js gzip 667 B 671 B N/A
middleware-r..fest.js gzip 156 B 156 B
middleware.js gzip 30.9 kB 31 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 1 kB 1 kB
Next Runtimes Overall increase ⚠️
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
973-experime...dev.js gzip 322 B 322 B
973.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 314 kB 314 kB N/A
app-page-exp..prod.js gzip 121 kB 121 kB ⚠️ +119 B
app-page-tur..prod.js gzip 134 kB 134 kB ⚠️ +122 B
app-page-tur..prod.js gzip 129 kB 129 kB ⚠️ +102 B
app-page.run...dev.js gzip 305 kB 304 kB N/A
app-page.run..prod.js gzip 116 kB 116 kB ⚠️ +103 B
app-route-ex...dev.js gzip 35.5 kB 35.9 kB ⚠️ +420 B
app-route-ex..prod.js gzip 24.1 kB 24.4 kB ⚠️ +379 B
app-route-tu..prod.js gzip 24.1 kB 24.4 kB ⚠️ +379 B
app-route-tu..prod.js gzip 23.9 kB 24.2 kB ⚠️ +368 B
app-route.ru...dev.js gzip 37.1 kB 37.5 kB ⚠️ +418 B
app-route.ru..prod.js gzip 23.9 kB 24.2 kB ⚠️ +368 B
pages-api-tu..prod.js gzip 9.61 kB 9.61 kB
pages-api.ru...dev.js gzip 11.4 kB 11.4 kB
pages-api.ru..prod.js gzip 9.61 kB 9.61 kB
pages-turbo...prod.js gzip 20.9 kB 20.9 kB
pages.runtim...dev.js gzip 26.5 kB 26.5 kB
pages.runtim..prod.js gzip 20.9 kB 20.9 kB
server.runti..prod.js gzip 60.2 kB 60.4 kB ⚠️ +284 B
Overall change 828 kB 831 kB ⚠️ +3.06 kB
build cache
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
0.pack gzip 1.85 MB 1.84 MB N/A
index.pack gzip 143 kB 143 kB N/A
Overall change 0 B 0 B
Diff details
Diff for page.js

Diff too large to display

Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Diff for image-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [8358],
   {
-    /***/ 771: /***/ (
+    /***/ 2258: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function () {
-          return __webpack_require__(5653);
+          return __webpack_require__(142);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 5267: /***/ (module, exports, __webpack_require__) => {
+    /***/ 9936: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -40,17 +40,17 @@
         __webpack_require__(755)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3489)
+        __webpack_require__(2183)
       );
-      const _getimgprops = __webpack_require__(5537);
-      const _imageconfig = __webpack_require__(8868);
-      const _imageconfigcontextsharedruntime = __webpack_require__(7610);
-      const _warnonce = __webpack_require__(2332);
-      const _routercontextsharedruntime = __webpack_require__(3445);
+      const _getimgprops = __webpack_require__(6561);
+      const _imageconfig = __webpack_require__(9706);
+      const _imageconfigcontextsharedruntime = __webpack_require__(3188);
+      const _warnonce = __webpack_require__(5157);
+      const _routercontextsharedruntime = __webpack_require__(1511);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6376)
+        __webpack_require__(320)
       );
-      const _usemergedref = __webpack_require__(3768);
+      const _usemergedref = __webpack_require__(8118);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -371,7 +371,7 @@
       /***/
     },
 
-    /***/ 3768: /***/ (module, exports, __webpack_require__) => {
+    /***/ 8118: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -432,7 +432,7 @@
       /***/
     },
 
-    /***/ 5537: /***/ (
+    /***/ 6561: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -448,9 +448,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(2332);
-      const _imageblursvg = __webpack_require__(7988);
-      const _imageconfig = __webpack_require__(8868);
+      const _warnonce = __webpack_require__(5157);
+      const _imageblursvg = __webpack_require__(9002);
+      const _imageconfig = __webpack_require__(9706);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -465,6 +465,7 @@
       }
       function isStaticImport(src) {
         return (
+          !!src &&
           typeof src === "object" &&
           (isStaticRequire(src) || isStaticImageData(src))
         );
@@ -823,7 +824,7 @@
       /***/
     },
 
-    /***/ 7988: /***/ (__unused_webpack_module, exports) => {
+    /***/ 9002: /***/ (__unused_webpack_module, exports) => {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -878,7 +879,7 @@
       /***/
     },
 
-    /***/ 8208: /***/ (
+    /***/ 6821: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -905,10 +906,10 @@
         },
       });
       const _interop_require_default = __webpack_require__(9608);
-      const _getimgprops = __webpack_require__(5537);
-      const _imagecomponent = __webpack_require__(5267);
+      const _getimgprops = __webpack_require__(6561);
+      const _imagecomponent = __webpack_require__(9936);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6376)
+        __webpack_require__(320)
       );
       function getImageProps(imgProps) {
         const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -940,7 +941,7 @@
       /***/
     },
 
-    /***/ 6376: /***/ (__unused_webpack_module, exports) => {
+    /***/ 320: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -975,7 +976,7 @@
       /***/
     },
 
-    /***/ 5653: /***/ (
+    /***/ 142: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -992,8 +993,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(9166);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-bf7e210c-20241017_re_s3utpgylidq4iuqtuhvaikn7r4/node_modules/next/image.js
-      var next_image = __webpack_require__(6812);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-bf7e210c-20241017_re_z36suzq4wvowgbcnr6zytfoqpy/node_modules/next/image.js
+      var next_image = __webpack_require__(9101);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // CONCATENATED MODULE: ./pages/nextjs.png
       /* harmony default export */ const nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -1023,12 +1024,12 @@
       /***/
     },
 
-    /***/ 6812: /***/ (
+    /***/ 9101: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(8208);
+      module.exports = __webpack_require__(6821);
 
       /***/
     },
@@ -1038,7 +1039,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [2888, 9774, 179], () =>
-      __webpack_exec__(771)
+      __webpack_exec__(2258)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 1495-HASH.js
@@ -1,8 +1,8 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [1495],
+  [1817],
   {
-    /***/ 1495: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1817: /***/ (module, exports, __webpack_require__) => {
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
         value: true,
@@ -13,27 +13,27 @@
           return Image;
         },
       });
-      const _interop_require_default = __webpack_require__(6372);
-      const _interop_require_wildcard = __webpack_require__(1174);
-      const _jsxruntime = __webpack_require__(1466);
+      const _interop_require_default = __webpack_require__(5720);
+      const _interop_require_wildcard = __webpack_require__(8615);
+      const _jsxruntime = __webpack_require__(4517);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(6581)
+        __webpack_require__(8229)
       );
       const _reactdom = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(7562)
+        __webpack_require__(3865)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(5060)
+        __webpack_require__(2782)
       );
-      const _getimgprops = __webpack_require__(3736);
-      const _imageconfig = __webpack_require__(5749);
-      const _imageconfigcontextsharedruntime = __webpack_require__(3508);
-      const _warnonce = __webpack_require__(5039);
-      const _routercontextsharedruntime = __webpack_require__(2513);
+      const _getimgprops = __webpack_require__(567);
+      const _imageconfig = __webpack_require__(8914);
+      const _imageconfigcontextsharedruntime = __webpack_require__(1425);
+      const _warnonce = __webpack_require__(5958);
+      const _routercontextsharedruntime = __webpack_require__(3186);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2578)
+        __webpack_require__(3932)
       );
-      const _usemergedref = __webpack_require__(1932);
+      const _usemergedref = __webpack_require__(311);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -355,7 +355,7 @@
       /***/
     },
 
-    /***/ 1932: /***/ (module, exports, __webpack_require__) => {
+    /***/ 311: /***/ (module, exports, __webpack_require__) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -365,7 +365,7 @@
           return useMergedRef;
         },
       });
-      const _react = __webpack_require__(6581);
+      const _react = __webpack_require__(8229);
       function useMergedRef(refA, refB) {
         const cleanupA = (0, _react.useRef)(() => {});
         const cleanupB = (0, _react.useRef)(() => {});
@@ -414,7 +414,7 @@
       /***/
     },
 
-    /***/ 342: /***/ (
+    /***/ 5535: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -428,9 +428,9 @@
           return AmpStateContext;
         },
       });
-      const _interop_require_default = __webpack_require__(6372);
+      const _interop_require_default = __webpack_require__(5720);
       const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6581)
+        __webpack_require__(8229)
       );
       const AmpStateContext = _react.default.createContext({});
       if (false) {
@@ -439,7 +439,7 @@
       /***/
     },
 
-    /***/ 3325: /***/ (__unused_webpack_module, exports) => {
+    /***/ 1926: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -461,7 +461,7 @@
       /***/
     },
 
-    /***/ 3736: /***/ (
+    /***/ 567: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -475,9 +475,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(5039);
-      const _imageblursvg = __webpack_require__(6293);
-      const _imageconfig = __webpack_require__(5749);
+      const _warnonce = __webpack_require__(5958);
+      const _imageblursvg = __webpack_require__(6730);
+      const _imageconfig = __webpack_require__(8914);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -492,6 +492,7 @@
       }
       function isStaticImport(src) {
         return (
+          !!src &&
           typeof src === "object" &&
           (isStaticRequire(src) || isStaticImageData(src))
         );
@@ -850,8 +851,8 @@
       /***/
     },
 
-    /***/ 5060: /***/ (module, exports, __webpack_require__) => {
-      /* provided dependency */ var process = __webpack_require__(7611);
+    /***/ 2782: /***/ (module, exports, __webpack_require__) => {
+      /* provided dependency */ var process = __webpack_require__(2167);
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
         value: true,
@@ -872,19 +873,19 @@
           return defaultHead;
         },
       });
-      const _interop_require_default = __webpack_require__(6372);
-      const _interop_require_wildcard = __webpack_require__(1174);
-      const _jsxruntime = __webpack_require__(1466);
+      const _interop_require_default = __webpack_require__(5720);
+      const _interop_require_wildcard = __webpack_require__(8615);
+      const _jsxruntime = __webpack_require__(4517);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(6581)
+        __webpack_require__(8229)
       );
       const _sideeffect = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(9411)
+        __webpack_require__(6221)
       );
-      const _ampcontextsharedruntime = __webpack_require__(342);
-      const _headmanagercontextsharedruntime = __webpack_require__(9693);
-      const _ampmode = __webpack_require__(3325);
-      const _warnonce = __webpack_require__(5039);
+      const _ampcontextsharedruntime = __webpack_require__(5535);
+      const _headmanagercontextsharedruntime = __webpack_require__(6611);
+      const _ampmode = __webpack_require__(1926);
+      const _warnonce = __webpack_require__(5958);
       function defaultHead(inAmpMode) {
         if (inAmpMode === void 0) inAmpMode = false;
         const head = [
@@ -1068,7 +1069,7 @@
       /***/
     },
 
-    /***/ 6293: /***/ (__unused_webpack_module, exports) => {
+    /***/ 6730: /***/ (__unused_webpack_module, exports) => {
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
        */
@@ -1122,7 +1123,7 @@
       /***/
     },
 
-    /***/ 3508: /***/ (
+    /***/ 1425: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1136,11 +1137,11 @@
           return ImageConfigContext;
         },
       });
-      const _interop_require_default = __webpack_require__(6372);
+      const _interop_require_default = __webpack_require__(5720);
       const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6581)
+        __webpack_require__(8229)
       );
-      const _imageconfig = __webpack_require__(5749);
+      const _imageconfig = __webpack_require__(8914);
       const ImageConfigContext = _react.default.createContext(
         _imageconfig.imageConfigDefault
       );
@@ -1150,7 +1151,7 @@
       /***/
     },
 
-    /***/ 5749: /***/ (__unused_webpack_module, exports) => {
+    /***/ 8914: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -1198,7 +1199,7 @@
       /***/
     },
 
-    /***/ 2578: /***/ (__unused_webpack_module, exports) => {
+    /***/ 3932: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -1231,7 +1232,7 @@
       /***/
     },
 
-    /***/ 2513: /***/ (
+    /***/ 3186: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1245,9 +1246,9 @@
           return RouterContext;
         },
       });
-      const _interop_require_default = __webpack_require__(6372);
+      const _interop_require_default = __webpack_require__(5720);
       const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6581)
+        __webpack_require__(8229)
       );
       const RouterContext = _react.default.createContext(null);
       if (false) {
@@ -1256,7 +1257,7 @@
       /***/
     },
 
-    /***/ 9411: /***/ (
+    /***/ 6221: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1270,7 +1271,7 @@
           return SideEffect;
         },
       });
-      const _react = __webpack_require__(6581);
+      const _react = __webpack_require__(8229);
       const isServer = typeof window === "undefined";
       const useClientOnlyLayoutEffect = isServer
         ? () => {}
Diff for 9073-HASH.js

Diff too large to display

Diff for d4c1d954-HASH.js

Diff too large to display

Diff for main-HASH.js

Diff too large to display

Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-exp..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page.runtime.dev.js
failed to diff
Diff for app-page.runtime.prod.js

Diff too large to display

Diff for app-route-ex..ntime.dev.js

Diff too large to display

Diff for app-route-ex..time.prod.js

Diff too large to display

Diff for app-route-tu..time.prod.js

Diff too large to display

Diff for app-route-tu..time.prod.js

Diff too large to display

Diff for app-route.runtime.dev.js

Diff too large to display

Diff for app-route.ru..time.prod.js

Diff too large to display

Diff for server.runtime.prod.js

Diff too large to display

@ijjk
Copy link
Member

@ijjk ijjk commented on 8c401f6 Oct 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stats from current release

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
buildDuration 24.5s 32s ⚠️ +7.5s
buildDurationCached 25.6s 25.3s N/A
nodeModulesSize 372 MB 372 MB ⚠️ +235 kB
nextStartRea..uration (ms) 792ms 760ms N/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
1193.HASH.js gzip 168 B 168 B
1495-HASH.js gzip 5.27 kB 5.27 kB N/A
9073-HASH.js gzip 43.8 kB 44.2 kB ⚠️ +367 B
d4c1d954-HASH.js gzip 52.6 kB 52.6 kB N/A
framework-HASH.js gzip 57.4 kB 57.4 kB N/A
main-app-HASH.js gzip 237 B 235 B N/A
main-HASH.js gzip 32.8 kB 32.8 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 44 kB 44.4 kB ⚠️ +367 B
Legacy Client Bundles (polyfills)
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
_app-HASH.js gzip 192 B 193 B N/A
_error-HASH.js gzip 192 B 192 B
amp-HASH.js gzip 511 B 510 B N/A
css-HASH.js gzip 341 B 343 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB N/A
edge-ssr-HASH.js gzip 266 B 266 B
head-HASH.js gzip 364 B 364 B
hooks-HASH.js gzip 391 B 391 B
image-HASH.js gzip 4.41 kB 4.4 kB N/A
index-HASH.js gzip 269 B 268 B N/A
link-HASH.js gzip 2.78 kB 2.78 kB N/A
routerDirect..HASH.js gzip 328 B 327 B N/A
script-HASH.js gzip 397 B 395 B N/A
withRouter-HASH.js gzip 324 B 322 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 1.32 kB 1.32 kB
Client Build Manifests
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
_buildManifest.js gzip 746 B 749 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
index.html gzip 522 B 523 B N/A
link.html gzip 537 B 536 B N/A
withRouter.html gzip 518 B 519 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
edge-ssr.js gzip 130 kB 130 kB ⚠️ +127 B
page.js gzip 189 kB 189 kB ⚠️ +394 B
Overall change 319 kB 319 kB ⚠️ +521 B
Middleware size
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
middleware-b..fest.js gzip 667 B 670 B N/A
middleware-r..fest.js gzip 156 B 156 B
middleware.js gzip 30.9 kB 31 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 1 kB 1 kB
Next Runtimes Overall increase ⚠️
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
973-experime...dev.js gzip 322 B 322 B
973.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 314 kB 314 kB N/A
app-page-exp..prod.js gzip 121 kB 121 kB ⚠️ +119 B
app-page-tur..prod.js gzip 134 kB 134 kB ⚠️ +122 B
app-page-tur..prod.js gzip 129 kB 129 kB ⚠️ +102 B
app-page.run...dev.js gzip 305 kB 304 kB N/A
app-page.run..prod.js gzip 116 kB 116 kB ⚠️ +103 B
app-route-ex...dev.js gzip 35.5 kB 35.9 kB ⚠️ +420 B
app-route-ex..prod.js gzip 24.1 kB 24.4 kB ⚠️ +379 B
app-route-tu..prod.js gzip 24.1 kB 24.4 kB ⚠️ +379 B
app-route-tu..prod.js gzip 23.9 kB 24.2 kB ⚠️ +368 B
app-route.ru...dev.js gzip 37.1 kB 37.5 kB ⚠️ +418 B
app-route.ru..prod.js gzip 23.9 kB 24.2 kB ⚠️ +368 B
pages-api-tu..prod.js gzip 9.61 kB 9.61 kB
pages-api.ru...dev.js gzip 11.4 kB 11.4 kB
pages-api.ru..prod.js gzip 9.61 kB 9.61 kB
pages-turbo...prod.js gzip 20.9 kB 20.9 kB
pages.runtim...dev.js gzip 26.5 kB 26.5 kB
pages.runtim..prod.js gzip 20.9 kB 20.9 kB
server.runti..prod.js gzip 60.2 kB 60.4 kB ⚠️ +284 B
Overall change 828 kB 831 kB ⚠️ +3.06 kB
build cache Overall increase ⚠️
vercel/next.js canary v15.0.0-rc.1 vercel/next.js canary Change
0.pack gzip 1.84 MB 1.84 MB N/A
index.pack gzip 143 kB 143 kB ⚠️ +543 B
Overall change 143 kB 143 kB ⚠️ +543 B
Diff details
Diff for page.js

Diff too large to display

Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Diff for image-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [8358],
   {
-    /***/ 771: /***/ (
+    /***/ 2258: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function () {
-          return __webpack_require__(5653);
+          return __webpack_require__(142);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 5267: /***/ (module, exports, __webpack_require__) => {
+    /***/ 9936: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -40,17 +40,17 @@
         __webpack_require__(755)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3489)
+        __webpack_require__(2183)
       );
-      const _getimgprops = __webpack_require__(5537);
-      const _imageconfig = __webpack_require__(8868);
-      const _imageconfigcontextsharedruntime = __webpack_require__(7610);
-      const _warnonce = __webpack_require__(2332);
-      const _routercontextsharedruntime = __webpack_require__(3445);
+      const _getimgprops = __webpack_require__(6561);
+      const _imageconfig = __webpack_require__(9706);
+      const _imageconfigcontextsharedruntime = __webpack_require__(3188);
+      const _warnonce = __webpack_require__(5157);
+      const _routercontextsharedruntime = __webpack_require__(1511);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6376)
+        __webpack_require__(320)
       );
-      const _usemergedref = __webpack_require__(3768);
+      const _usemergedref = __webpack_require__(8118);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -371,7 +371,7 @@
       /***/
     },
 
-    /***/ 3768: /***/ (module, exports, __webpack_require__) => {
+    /***/ 8118: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -432,7 +432,7 @@
       /***/
     },
 
-    /***/ 5537: /***/ (
+    /***/ 6561: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -448,9 +448,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(2332);
-      const _imageblursvg = __webpack_require__(7988);
-      const _imageconfig = __webpack_require__(8868);
+      const _warnonce = __webpack_require__(5157);
+      const _imageblursvg = __webpack_require__(9002);
+      const _imageconfig = __webpack_require__(9706);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -465,6 +465,7 @@
       }
       function isStaticImport(src) {
         return (
+          !!src &&
           typeof src === "object" &&
           (isStaticRequire(src) || isStaticImageData(src))
         );
@@ -823,7 +824,7 @@
       /***/
     },
 
-    /***/ 7988: /***/ (__unused_webpack_module, exports) => {
+    /***/ 9002: /***/ (__unused_webpack_module, exports) => {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -878,7 +879,7 @@
       /***/
     },
 
-    /***/ 8208: /***/ (
+    /***/ 6821: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -905,10 +906,10 @@
         },
       });
       const _interop_require_default = __webpack_require__(9608);
-      const _getimgprops = __webpack_require__(5537);
-      const _imagecomponent = __webpack_require__(5267);
+      const _getimgprops = __webpack_require__(6561);
+      const _imagecomponent = __webpack_require__(9936);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6376)
+        __webpack_require__(320)
       );
       function getImageProps(imgProps) {
         const { props } = (0, _getimgprops.getImgProps)(imgProps, {
@@ -940,7 +941,7 @@
       /***/
     },
 
-    /***/ 6376: /***/ (__unused_webpack_module, exports) => {
+    /***/ 320: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -975,7 +976,7 @@
       /***/
     },
 
-    /***/ 5653: /***/ (
+    /***/ 142: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -992,8 +993,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(9166);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-bf7e210c-20241017_re_s3utpgylidq4iuqtuhvaikn7r4/node_modules/next/image.js
-      var next_image = __webpack_require__(6812);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.0.0-rc-bf7e210c-20241017_re_z36suzq4wvowgbcnr6zytfoqpy/node_modules/next/image.js
+      var next_image = __webpack_require__(9101);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // CONCATENATED MODULE: ./pages/nextjs.png
       /* harmony default export */ const nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -1023,12 +1024,12 @@
       /***/
     },
 
-    /***/ 6812: /***/ (
+    /***/ 9101: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(8208);
+      module.exports = __webpack_require__(6821);
 
       /***/
     },
@@ -1038,7 +1039,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [2888, 9774, 179], () =>
-      __webpack_exec__(771)
+      __webpack_exec__(2258)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 1495-HASH.js
@@ -1,8 +1,8 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [1495],
+  [1817],
   {
-    /***/ 1495: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1817: /***/ (module, exports, __webpack_require__) => {
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
         value: true,
@@ -13,27 +13,27 @@
           return Image;
         },
       });
-      const _interop_require_default = __webpack_require__(6372);
-      const _interop_require_wildcard = __webpack_require__(1174);
-      const _jsxruntime = __webpack_require__(1466);
+      const _interop_require_default = __webpack_require__(5720);
+      const _interop_require_wildcard = __webpack_require__(8615);
+      const _jsxruntime = __webpack_require__(4517);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(6581)
+        __webpack_require__(8229)
       );
       const _reactdom = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(7562)
+        __webpack_require__(3865)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(5060)
+        __webpack_require__(2782)
       );
-      const _getimgprops = __webpack_require__(3736);
-      const _imageconfig = __webpack_require__(5749);
-      const _imageconfigcontextsharedruntime = __webpack_require__(3508);
-      const _warnonce = __webpack_require__(5039);
-      const _routercontextsharedruntime = __webpack_require__(2513);
+      const _getimgprops = __webpack_require__(567);
+      const _imageconfig = __webpack_require__(8914);
+      const _imageconfigcontextsharedruntime = __webpack_require__(1425);
+      const _warnonce = __webpack_require__(5958);
+      const _routercontextsharedruntime = __webpack_require__(3186);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2578)
+        __webpack_require__(3932)
       );
-      const _usemergedref = __webpack_require__(1932);
+      const _usemergedref = __webpack_require__(311);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -355,7 +355,7 @@
       /***/
     },
 
-    /***/ 1932: /***/ (module, exports, __webpack_require__) => {
+    /***/ 311: /***/ (module, exports, __webpack_require__) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -365,7 +365,7 @@
           return useMergedRef;
         },
       });
-      const _react = __webpack_require__(6581);
+      const _react = __webpack_require__(8229);
       function useMergedRef(refA, refB) {
         const cleanupA = (0, _react.useRef)(() => {});
         const cleanupB = (0, _react.useRef)(() => {});
@@ -414,7 +414,7 @@
       /***/
     },
 
-    /***/ 342: /***/ (
+    /***/ 5535: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -428,9 +428,9 @@
           return AmpStateContext;
         },
       });
-      const _interop_require_default = __webpack_require__(6372);
+      const _interop_require_default = __webpack_require__(5720);
       const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6581)
+        __webpack_require__(8229)
       );
       const AmpStateContext = _react.default.createContext({});
       if (false) {
@@ -439,7 +439,7 @@
       /***/
     },
 
-    /***/ 3325: /***/ (__unused_webpack_module, exports) => {
+    /***/ 1926: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -461,7 +461,7 @@
       /***/
     },
 
-    /***/ 3736: /***/ (
+    /***/ 567: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -475,9 +475,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(5039);
-      const _imageblursvg = __webpack_require__(6293);
-      const _imageconfig = __webpack_require__(5749);
+      const _warnonce = __webpack_require__(5958);
+      const _imageblursvg = __webpack_require__(6730);
+      const _imageconfig = __webpack_require__(8914);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -492,6 +492,7 @@
       }
       function isStaticImport(src) {
         return (
+          !!src &&
           typeof src === "object" &&
           (isStaticRequire(src) || isStaticImageData(src))
         );
@@ -850,8 +851,8 @@
       /***/
     },
 
-    /***/ 5060: /***/ (module, exports, __webpack_require__) => {
-      /* provided dependency */ var process = __webpack_require__(7611);
+    /***/ 2782: /***/ (module, exports, __webpack_require__) => {
+      /* provided dependency */ var process = __webpack_require__(2167);
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
         value: true,
@@ -872,19 +873,19 @@
           return defaultHead;
         },
       });
-      const _interop_require_default = __webpack_require__(6372);
-      const _interop_require_wildcard = __webpack_require__(1174);
-      const _jsxruntime = __webpack_require__(1466);
+      const _interop_require_default = __webpack_require__(5720);
+      const _interop_require_wildcard = __webpack_require__(8615);
+      const _jsxruntime = __webpack_require__(4517);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(6581)
+        __webpack_require__(8229)
       );
       const _sideeffect = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(9411)
+        __webpack_require__(6221)
       );
-      const _ampcontextsharedruntime = __webpack_require__(342);
-      const _headmanagercontextsharedruntime = __webpack_require__(9693);
-      const _ampmode = __webpack_require__(3325);
-      const _warnonce = __webpack_require__(5039);
+      const _ampcontextsharedruntime = __webpack_require__(5535);
+      const _headmanagercontextsharedruntime = __webpack_require__(6611);
+      const _ampmode = __webpack_require__(1926);
+      const _warnonce = __webpack_require__(5958);
       function defaultHead(inAmpMode) {
         if (inAmpMode === void 0) inAmpMode = false;
         const head = [
@@ -1068,7 +1069,7 @@
       /***/
     },
 
-    /***/ 6293: /***/ (__unused_webpack_module, exports) => {
+    /***/ 6730: /***/ (__unused_webpack_module, exports) => {
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
        */
@@ -1122,7 +1123,7 @@
       /***/
     },
 
-    /***/ 3508: /***/ (
+    /***/ 1425: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1136,11 +1137,11 @@
           return ImageConfigContext;
         },
       });
-      const _interop_require_default = __webpack_require__(6372);
+      const _interop_require_default = __webpack_require__(5720);
       const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6581)
+        __webpack_require__(8229)
       );
-      const _imageconfig = __webpack_require__(5749);
+      const _imageconfig = __webpack_require__(8914);
       const ImageConfigContext = _react.default.createContext(
         _imageconfig.imageConfigDefault
       );
@@ -1150,7 +1151,7 @@
       /***/
     },
 
-    /***/ 5749: /***/ (__unused_webpack_module, exports) => {
+    /***/ 8914: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -1198,7 +1199,7 @@
       /***/
     },
 
-    /***/ 2578: /***/ (__unused_webpack_module, exports) => {
+    /***/ 3932: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -1231,7 +1232,7 @@
       /***/
     },
 
-    /***/ 2513: /***/ (
+    /***/ 3186: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1245,9 +1246,9 @@
           return RouterContext;
         },
       });
-      const _interop_require_default = __webpack_require__(6372);
+      const _interop_require_default = __webpack_require__(5720);
       const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6581)
+        __webpack_require__(8229)
       );
       const RouterContext = _react.default.createContext(null);
       if (false) {
@@ -1256,7 +1257,7 @@
       /***/
     },
 
-    /***/ 9411: /***/ (
+    /***/ 6221: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -1270,7 +1271,7 @@
           return SideEffect;
         },
       });
-      const _react = __webpack_require__(6581);
+      const _react = __webpack_require__(8229);
       const isServer = typeof window === "undefined";
       const useClientOnlyLayoutEffect = isServer
         ? () => {}
Diff for 9073-HASH.js

Diff too large to display

Diff for d4c1d954-HASH.js

Diff too large to display

Diff for main-HASH.js

Diff too large to display

Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-exp..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page.runtime.dev.js
failed to diff
Diff for app-page.runtime.prod.js

Diff too large to display

Diff for app-route-ex..ntime.dev.js

Diff too large to display

Diff for app-route-ex..time.prod.js

Diff too large to display

Diff for app-route-tu..time.prod.js

Diff too large to display

Diff for app-route-tu..time.prod.js

Diff too large to display

Diff for app-route.runtime.dev.js

Diff too large to display

Diff for app-route.ru..time.prod.js

Diff too large to display

Diff for server.runtime.prod.js

Diff too large to display

Please sign in to comment.