Turbopack: Don't resolve tsconfig relative to file#83484
Conversation
| .as_ref() | ||
| // Fall back to tsconfig only for resolving. This is because we don't want Turbopack to | ||
| // resolve tsconfig.json relative to the file being compiled. | ||
| .or(Some(&RcStr::from("tsconfig.json"))) |
There was a problem hiding this comment.
The fix for preventing relative tsconfig.json resolution was applied inconsistently - this second usage of typescript_tsconfig_path() is missing the same fallback logic applied at line 336.
View Details
📝 Patch Details
diff --git a/crates/next-core/src/next_client/context.rs b/crates/next-core/src/next_client/context.rs
index 8762f1d992..ffdf271d82 100644
--- a/crates/next-core/src/next_client/context.rs
+++ b/crates/next-core/src/next_client/context.rs
@@ -232,6 +232,9 @@ pub async fn get_client_module_options_context(
.typescript_tsconfig_path()
.await?
.as_ref()
+ // Fall back to tsconfig only for resolving. This is because we don't want Turbopack to
+ // resolve tsconfig.json relative to the file being compiled.
+ .or(Some(&RcStr::from("tsconfig.json")))
.map(|p| project_path.join(p))
.transpose()?;
diff --git a/crates/next-core/src/next_server/context.rs b/crates/next-core/src/next_server/context.rs
index a79da5c3ae..101f7b8aa3 100644
--- a/crates/next-core/src/next_server/context.rs
+++ b/crates/next-core/src/next_server/context.rs
@@ -529,6 +529,9 @@ pub async fn get_server_module_options_context(
.typescript_tsconfig_path()
.await?
.as_ref()
+ // Fall back to tsconfig only for resolving. This is because we don't want Turbopack to
+ // resolve tsconfig.json relative to the file being compiled.
+ .or(Some(&RcStr::from("tsconfig.json")))
.map(|p| project_path.join(p))
.transpose()?;
Analysis
TypeScript Config Path Resolution Inconsistency Fix
Bug Description
The fix for preventing relative tsconfig.json resolution was applied inconsistently across Next.js Turbopack codebase. While the first usage of typescript_tsconfig_path() in both client and server contexts included proper fallback logic, the second usages were missing the same protection.
Technical Analysis
Affected Files and Locations
Server Context (crates/next-core/src/next_server/context.rs):
- ✅ Line 333-336:
get_server_resolve_options_context- Had fallback - ❌ Line 528-533:
get_server_module_options_context- Missing fallback
Client Context (crates/next-core/src/next_client/context.rs):
- ✅ Line 175-180:
get_client_resolve_options_context- Had fallback - ❌ Line 231-236:
get_client_module_options_context- Missing fallback
The Problem
Without the fallback logic, the second code paths could resolve tsconfig.json files relative to the source file being compiled, which contradicts the intended behavior described in the comment:
"we don't want Turbopack to resolve tsconfig.json relative to the file being compiled."
Impact
This inconsistency affects TypeScript transform options and decorators configuration. When no explicit TypeScript configuration path is specified in next.config.js, the module options context would attempt to resolve tsconfig.json relative to individual source files instead of consistently using the project-level configuration.
Root Cause
The original security/consistency fix was only partially applied. The pattern should have been consistently applied everywhere typescript_tsconfig_path() is used, but the second usages in both contexts were overlooked.
Solution
Applied the missing fallback logic to both affected locations:
let tsconfig_path = next_config
.typescript_tsconfig_path()
.await?
.as_ref()
// Fall back to tsconfig only for resolving. This is because we don't want Turbopack to
// resolve tsconfig.json relative to the file being compiled.
.or(Some(&RcStr::from("tsconfig.json")))
.map(|p| project_path.join(p))
.transpose()?;This ensures consistent behavior across all TypeScript configuration resolution points, preventing potential security issues and maintaining predictable build behavior.
There was a problem hiding this comment.
That's intentional 😄 We don't want to pass this to the transform options because there it needs to not apply.
| .as_ref() | ||
| // Fall back to tsconfig only for resolving. This is because we don't want Turbopack to | ||
| // resolve tsconfig.json relative to the file being compiled. | ||
| .or(Some(&RcStr::from("tsconfig.json"))) |
There was a problem hiding this comment.
The fix for preventing relative tsconfig.json resolution was applied inconsistently - this second usage of typescript_tsconfig_path() is missing the same fallback logic applied at line 193.
View Details
📝 Patch Details
diff --git a/crates/next-core/src/next_client/context.rs b/crates/next-core/src/next_client/context.rs
index 8762f1d992..ffdf271d82 100644
--- a/crates/next-core/src/next_client/context.rs
+++ b/crates/next-core/src/next_client/context.rs
@@ -232,6 +232,9 @@ pub async fn get_client_module_options_context(
.typescript_tsconfig_path()
.await?
.as_ref()
+ // Fall back to tsconfig only for resolving. This is because we don't want Turbopack to
+ // resolve tsconfig.json relative to the file being compiled.
+ .or(Some(&RcStr::from("tsconfig.json")))
.map(|p| project_path.join(p))
.transpose()?;
diff --git a/crates/next-core/src/next_server/context.rs b/crates/next-core/src/next_server/context.rs
index a79da5c3ae..101f7b8aa3 100644
--- a/crates/next-core/src/next_server/context.rs
+++ b/crates/next-core/src/next_server/context.rs
@@ -529,6 +529,9 @@ pub async fn get_server_module_options_context(
.typescript_tsconfig_path()
.await?
.as_ref()
+ // Fall back to tsconfig only for resolving. This is because we don't want Turbopack to
+ // resolve tsconfig.json relative to the file being compiled.
+ .or(Some(&RcStr::from("tsconfig.json")))
.map(|p| project_path.join(p))
.transpose()?;
Analysis
TypeScript Configuration Resolution Inconsistency in Turbopack
Summary
A security-related inconsistency was found in Turbopack's TypeScript configuration resolution logic. The fallback mechanism to prevent relative tsconfig.json resolution was inconsistently applied across different code paths, potentially allowing unintended configuration file resolution relative to the source file location instead of the project root.
Technical Details
The Issue
The Turbopack codebase contains multiple contexts (client, server, edge) where typescript_tsconfig_path() is called for different purposes:
- Resolve Context Usage: For module resolution (
ResolveOptionsContext) - Transform Context Usage: For TypeScript transformation options
In the first usage, a security fallback is consistently applied:
let tsconfig_path = next_config
.typescript_tsconfig_path()
.await?
.as_ref()
// Fall back to tsconfig only for resolving. This is because we don't want Turbopack to
// resolve tsconfig.json relative to the file being compiled.
.or(Some(&RcStr::from("tsconfig.json")))
.map(|p| project_path.join(p))
.transpose()?;However, the second usage was missing this fallback in two critical files:
crates/next-core/src/next_client/context.rs(line 231-236)crates/next-core/src/next_server/context.rs(line 528-533)
Security Implications
Without the fallback logic, Turbopack could potentially:
-
Resolve configuration relative to source files: Instead of using the project root's TypeScript configuration, the system might find and use
tsconfig.jsonfiles located relative to the specific source file being compiled. -
Inconsistent compilation behavior: Different parts of the codebase (resolve vs transform) could use different TypeScript configurations, leading to subtle compilation differences and potential security issues.
-
Unintended configuration inheritance: Source files in subdirectories with their own
tsconfig.jsonfiles could have their configurations applied during transformation, bypassing the intended project-level configuration controls.
Impact Analysis
This inconsistency affects:
- Client-side compilation: Both module resolution and TypeScript transformation in client contexts
- Server-side compilation: Both module resolution and TypeScript transformation in server contexts
- Configuration security: The ability to enforce project-root TypeScript configuration across all compilation paths
The edge context was already correctly implemented with consistent fallback logic in both usage patterns.
Root Cause
The fallback logic was added as a security measure with the comment "Fall back to tsconfig only for resolving. This is because we don't want Turbopack to resolve tsconfig.json relative to the file being compiled." However, this protection was only applied to the first usage pattern (resolve context) and missed the second usage pattern (transform context).
Fix Applied
The fix applies the same fallback pattern to both usage contexts in both client and server files:
.or(Some(&RcStr::from("tsconfig.json")))This ensures consistent behavior across all TypeScript configuration resolution paths and maintains the intended security posture.
Verification
The fix was validated by:
- Pattern Analysis: Confirmed the inconsistency exists across multiple files
- Code Review: Verified the security comment and intent applies to both use cases
- Consistency Check: Ensured the fix matches the established pattern in other context files
Related Documentation
- Next.js TypeScript Configuration Documentation
- TypeScript configuration resolution follows project-root precedence as intended by Next.js architecture
There was a problem hiding this comment.
That's intentional 😄 We don't want to pass this to the transform options because there it needs to not apply.
Stats from current PRDefault Build (Increase detected
|
| vercel/next.js canary | vercel/next.js 09-05-turbopack_don_t_resolve_tsconfig_relative_to_file | Change | |
|---|---|---|---|
| buildDuration | 17s | 15.2s | N/A |
| buildDurationCached | 14.5s | 11.7s | N/A |
| nodeModulesSize | 450 MB | 450 MB | ✓ |
| nextStartRea..uration (ms) | 701ms | 705ms | N/A |
Client Bundles (main, webpack)
| vercel/next.js canary | vercel/next.js 09-05-turbopack_don_t_resolve_tsconfig_relative_to_file | Change | |
|---|---|---|---|
| 234bef07-HASH.js gzip | 54.3 kB | 54.3 kB | N/A |
| 3414-HASH.js gzip | 4.32 kB | 4.32 kB | N/A |
| 5194.HASH.js gzip | 169 B | 169 B | ✓ |
| 8863-HASH.js gzip | 5.32 kB | 5.32 kB | N/A |
| 9304-HASH.js gzip | 46.4 kB | 45.8 kB | N/A |
| framework-HASH.js gzip | 57.7 kB | 57.7 kB | N/A |
| main-app-HASH.js gzip | 253 B | 254 B | N/A |
| main-HASH.js gzip | 37 kB | 36.8 kB | N/A |
| webpack-HASH.js gzip | 1.71 kB | 1.71 kB | N/A |
| Overall change | 169 B | 169 B | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | vercel/next.js 09-05-turbopack_don_t_resolve_tsconfig_relative_to_file | 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 | vercel/next.js 09-05-turbopack_don_t_resolve_tsconfig_relative_to_file | Change | |
|---|---|---|---|
| _app-HASH.js gzip | 194 B | 193 B | N/A |
| _error-HASH.js gzip | 182 B | 182 B | ✓ |
| amp-HASH.js gzip | 502 B | 507 B | N/A |
| css-HASH.js gzip | 335 B | 333 B | N/A |
| dynamic-HASH.js gzip | 1.83 kB | 1.83 kB | N/A |
| edge-ssr-HASH.js gzip | 255 B | 255 B | ✓ |
| head-HASH.js gzip | 350 B | 352 B | N/A |
| hooks-HASH.js gzip | 385 B | 383 B | N/A |
| image-HASH.js gzip | 581 B | 580 B | N/A |
| index-HASH.js gzip | 257 B | 259 B | N/A |
| link-HASH.js gzip | 2.29 kB | 2.29 kB | N/A |
| routerDirect..HASH.js gzip | 320 B | 318 B | N/A |
| script-HASH.js gzip | 387 B | 386 B | N/A |
| withRouter-HASH.js gzip | 315 B | 313 B | N/A |
| 1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
| Overall change | 543 B | 543 B | ✓ |
Client Build Manifests
| vercel/next.js canary | vercel/next.js 09-05-turbopack_don_t_resolve_tsconfig_relative_to_file | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 770 B | 770 B | ✓ |
| Overall change | 770 B | 770 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | vercel/next.js 09-05-turbopack_don_t_resolve_tsconfig_relative_to_file | Change | |
|---|---|---|---|
| index.html gzip | 524 B | 523 B | N/A |
| link.html gzip | 539 B | 536 B | N/A |
| withRouter.html gzip | 521 B | 519 B | N/A |
| Overall change | 0 B | 0 B | ✓ |
Edge SSR bundle Size
| vercel/next.js canary | vercel/next.js 09-05-turbopack_don_t_resolve_tsconfig_relative_to_file | Change | |
|---|---|---|---|
| edge-ssr.js gzip | 121 kB | 121 kB | N/A |
| page.js gzip | 242 kB | 242 kB | N/A |
| Overall change | 0 B | 0 B | ✓ |
Middleware size Overall increase ⚠️
| vercel/next.js canary | vercel/next.js 09-05-turbopack_don_t_resolve_tsconfig_relative_to_file | Change | |
|---|---|---|---|
| middleware-b..fest.js gzip | 687 B | 694 B | N/A |
| middleware-r..fest.js gzip | 156 B | 155 B | N/A |
| middleware.js gzip | 33 kB | 33.2 kB | |
| edge-runtime..pack.js gzip | 853 B | 853 B | ✓ |
| Overall change | 33.8 kB | 34.1 kB |
Next Runtimes
| vercel/next.js canary | vercel/next.js 09-05-turbopack_don_t_resolve_tsconfig_relative_to_file | Change | |
|---|---|---|---|
| app-page-exp...dev.js gzip | 285 kB | 285 kB | N/A |
| app-page-exp..prod.js gzip | 158 kB | 158 kB | ✓ |
| app-page-tur...dev.js gzip | 285 kB | 285 kB | N/A |
| app-page-tur..prod.js gzip | 158 kB | 158 kB | ✓ |
| app-page-tur...dev.js gzip | 273 kB | 273 kB | ✓ |
| app-page-tur..prod.js gzip | 152 kB | 152 kB | ✓ |
| app-page.run...dev.js gzip | 273 kB | 273 kB | N/A |
| app-page.run..prod.js gzip | 152 kB | 152 kB | ✓ |
| app-route-ex...dev.js gzip | 70.4 kB | 70.4 kB | ✓ |
| app-route-ex..prod.js gzip | 49.5 kB | 49.5 kB | ✓ |
| app-route-tu...dev.js gzip | 70.4 kB | 70.4 kB | ✓ |
| app-route-tu..prod.js gzip | 49.5 kB | 49.5 kB | ✓ |
| app-route-tu...dev.js gzip | 69.8 kB | 69.8 kB | ✓ |
| app-route-tu..prod.js gzip | 49.1 kB | 49.1 kB | ✓ |
| app-route.ru...dev.js gzip | 69.7 kB | 69.7 kB | ✓ |
| app-route.ru..prod.js gzip | 49.1 kB | 49.1 kB | ✓ |
| dist_client_...dev.js gzip | 326 B | 326 B | ✓ |
| dist_client_...dev.js gzip | 328 B | 328 B | ✓ |
| dist_client_...dev.js gzip | 320 B | 320 B | ✓ |
| dist_client_...dev.js gzip | 318 B | 318 B | ✓ |
| pages-api-tu...dev.js gzip | 42.8 kB | 42.8 kB | ✓ |
| pages-api-tu..prod.js gzip | 32.9 kB | 32.9 kB | ✓ |
| pages-api.ru...dev.js gzip | 42.7 kB | 42.7 kB | ✓ |
| pages-api.ru..prod.js gzip | 32.9 kB | 32.9 kB | ✓ |
| pages-turbo....dev.js gzip | 53 kB | 53 kB | ✓ |
| pages-turbo...prod.js gzip | 40.4 kB | 40.4 kB | ✓ |
| pages.runtim...dev.js gzip | 53.1 kB | 53.1 kB | ✓ |
| pages.runtim..prod.js gzip | 40.5 kB | 40.5 kB | ✓ |
| server.runti..prod.js gzip | 76.5 kB | 76.5 kB | ✓ |
| Overall change | 1.79 MB | 1.79 MB | ✓ |
build cache Overall increase ⚠️
| vercel/next.js canary | vercel/next.js 09-05-turbopack_don_t_resolve_tsconfig_relative_to_file | Change | |
|---|---|---|---|
| 0.pack gzip | 3.15 MB | 3.16 MB | |
| index.pack gzip | 96.3 kB | 95.8 kB | N/A |
| Overall change | 3.15 MB | 3.16 MB |
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
failed to diffDiff for _buildManifest.js
@@ -611,36 +611,36 @@ self.__BUILD_MANIFEST = (function (a, b, c) {
numHashes: NaN,
bitArray: [],
},
- "/": ["static\u002Fchunks\u002Fpages\u002Findex-a7fb71e5f6213aa9.js"],
+ "/": ["static\u002Fchunks\u002Fpages\u002Findex-75ff7f75f4c9520b.js"],
"/_error": [
- "static\u002Fchunks\u002Fpages\u002F_error-8f4e796cc66bb887.js",
+ "static\u002Fchunks\u002Fpages\u002F_error-21398e242bebd4bd.js",
],
- "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-97249b00762d04b9.js"],
+ "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-96acbf1ec5bf4dbf.js"],
"/css": [
"static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
- "static\u002Fchunks\u002Fpages\u002Fcss-30fd1831d1c5954d.js",
+ "static\u002Fchunks\u002Fpages\u002Fcss-f0abb8f1d5d6aafc.js",
],
"/dynamic": [
- "static\u002Fchunks\u002Fpages\u002Fdynamic-933632969493a23b.js",
+ "static\u002Fchunks\u002Fpages\u002Fdynamic-a6de0bd7312dbe87.js",
],
"/edge-ssr": [
- "static\u002Fchunks\u002Fpages\u002Fedge-ssr-fbde6d2b170ddc8a.js",
+ "static\u002Fchunks\u002Fpages\u002Fedge-ssr-8437b1c654938313.js",
],
- "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-0fcabd05d9a7b019.js"],
- "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-52423902769dcda6.js"],
+ "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-957c9636cda350bb.js"],
+ "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-48956e83e76a0b7c.js"],
"/image": [
- "static\u002Fchunks\u002F3414-0fcfc359d1626bc2.js",
- "static\u002Fchunks\u002Fpages\u002Fimage-bcf65fa5afa25af3.js",
+ "static\u002Fchunks\u002F4432-80834164a4d7ec68.js",
+ "static\u002Fchunks\u002Fpages\u002Fimage-00893f08e46cefe9.js",
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-107187295a8a4aea.js"],
+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-1312906a9876c4c3.js"],
"/routerDirect": [
- "static\u002Fchunks\u002Fpages\u002FrouterDirect-1422147417dba74a.js",
+ "static\u002Fchunks\u002Fpages\u002FrouterDirect-77c6ee7fa90e109b.js",
],
"/script": [
- "static\u002Fchunks\u002Fpages\u002Fscript-a68c215ba4b2c288.js",
+ "static\u002Fchunks\u002Fpages\u002Fscript-32f0c3e4bc363d50.js",
],
"/withRouter": [
- "static\u002Fchunks\u002Fpages\u002FwithRouter-0af6fb4f6ceaec8e.js",
+ "static\u002Fchunks\u002Fpages\u002FwithRouter-0a50058d9954ea8e.js",
],
sortedPages: [
"\u002F",Diff for amp-HASH.js
@@ -1,17 +1,65 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[5034],
{
- /***/ 4105: /***/ (
+ /***/ 6212: /***/ (
+ __unused_webpack_module,
+ __webpack_exports__,
+ __webpack_require__
+ ) => {
+ "use strict";
+ __webpack_require__.r(__webpack_exports__);
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+ /* harmony export */ config: () => /* binding */ config,
+ /* harmony export */ default: () => /* binding */ Amp,
+ /* harmony export */
+ });
+ /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0__ =
+ __webpack_require__(7023);
+ /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0___default =
+ /*#__PURE__*/ __webpack_require__.n(
+ next_amp__WEBPACK_IMPORTED_MODULE_0__
+ );
+
+ const config = {
+ amp: "hybrid",
+ };
+ function Amp(props) {
+ return (0, next_amp__WEBPACK_IMPORTED_MODULE_0__.useAmp)()
+ ? "AMP mode"
+ : "normal mode";
+ }
+
+ /***/
+ },
+
+ /***/ 7023: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(4642);
+ module.exports = __webpack_require__(9926);
+
+ /***/
+ },
+
+ /***/ 8647: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/amp",
+ function () {
+ return __webpack_require__(6212);
+ },
+ ]);
+ if (false) {
+ }
/***/
},
- /***/ 4642: /***/ (module, exports, __webpack_require__) => {
+ /***/ 9926: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -27,8 +75,8 @@
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(5977)
);
- const _ampcontextsharedruntime = __webpack_require__(8358);
- const _ampmode = __webpack_require__(242);
+ const _ampcontextsharedruntime = __webpack_require__(5418);
+ const _ampmode = __webpack_require__(3494);
function useAmp() {
// Don't assign the context value to a variable to save bytes
return (0, _ampmode.isInAmpMode)(
@@ -49,61 +97,13 @@
/***/
},
-
- /***/ 5261: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/amp",
- function () {
- return __webpack_require__(9550);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
-
- /***/ 9550: /***/ (
- __unused_webpack_module,
- __webpack_exports__,
- __webpack_require__
- ) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ config: () => /* binding */ config,
- /* harmony export */ default: () => /* binding */ Amp,
- /* harmony export */
- });
- /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0__ =
- __webpack_require__(4105);
- /* harmony import */ var next_amp__WEBPACK_IMPORTED_MODULE_0___default =
- /*#__PURE__*/ __webpack_require__.n(
- next_amp__WEBPACK_IMPORTED_MODULE_0__
- );
-
- const config = {
- amp: "hybrid",
- };
- function Amp(props) {
- return (0, next_amp__WEBPACK_IMPORTED_MODULE_0__.useAmp)()
- ? "AMP mode"
- : "normal mode";
- }
-
- /***/
- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(5261)
+ __webpack_exec__(8647)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for css-HASH.js
@@ -1,7 +1,14 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[9813],
{
- /***/ 5267: /***/ (
+ /***/ 1978: /***/ (module) => {
+ // extracted by mini-css-extract-plugin
+ module.exports = { helloWorld: "css_helloWorld__aUdUq" };
+
+ /***/
+ },
+
+ /***/ 6941: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -15,7 +22,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(7765);
/* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(6320);
+ __webpack_require__(1978);
/* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
_css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -35,14 +42,7 @@
/***/
},
- /***/ 6320: /***/ (module) => {
- // extracted by mini-css-extract-plugin
- module.exports = { helloWorld: "css_helloWorld__aUdUq" };
-
- /***/
- },
-
- /***/ 9643: /***/ (
+ /***/ 8685: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -50,7 +50,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/css",
function () {
- return __webpack_require__(5267);
+ return __webpack_require__(6941);
},
]);
if (false) {
@@ -64,7 +64,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(9643)
+ __webpack_exec__(8685)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for dynamic-HASH.js
@@ -1,17 +1,63 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2291],
{
- /***/ 2406: /***/ (
- module,
- __unused_webpack_exports,
+ /***/ 2839: /***/ (
+ __unused_webpack_module,
+ __webpack_exports__,
__webpack_require__
) => {
- module.exports = __webpack_require__(8949);
+ "use strict";
+ __webpack_require__.r(__webpack_exports__);
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+ /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
+ /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
+ /* harmony export */
+ });
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
+ __webpack_require__(7765);
+ /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
+ __webpack_require__(7444);
+ /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
+ /*#__PURE__*/ __webpack_require__.n(
+ next_dynamic__WEBPACK_IMPORTED_MODULE_1__
+ );
+
+ const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
+ () =>
+ __webpack_require__
+ .e(/* import() */ 1376)
+ .then(__webpack_require__.bind(__webpack_require__, 1376))
+ .then((mod) => mod.Hello),
+ {
+ loadableGenerated: {
+ webpack: () => [/*require.resolve*/ 1376],
+ },
+ }
+ );
+ const Page = () =>
+ /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,
+ {
+ children: [
+ /*#__PURE__*/ (0,
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
+ children: "testing next/dynamic size",
+ }),
+ /*#__PURE__*/ (0,
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
+ DynamicHello,
+ {}
+ ),
+ ],
+ }
+ );
+ var __N_SSP = true;
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = Page;
/***/
},
- /***/ 4466: /***/ (
+ /***/ 4478: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -53,7 +99,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(5977)
);
- const _loadablecontextsharedruntime = __webpack_require__(8452);
+ const _loadablecontextsharedruntime = __webpack_require__(5792);
function resolve(obj) {
return obj && obj.default ? obj.default : obj;
}
@@ -288,63 +334,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
/***/
},
- /***/ 4545: /***/ (
- __unused_webpack_module,
- __webpack_exports__,
- __webpack_require__
- ) => {
- "use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
- /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
- /* harmony export */
- });
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
- __webpack_require__(7765);
- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(2406);
- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
- /*#__PURE__*/ __webpack_require__.n(
- next_dynamic__WEBPACK_IMPORTED_MODULE_1__
- );
-
- const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
- () =>
- __webpack_require__
- .e(/* import() */ 5194)
- .then(__webpack_require__.bind(__webpack_require__, 5194))
- .then((mod) => mod.Hello),
- {
- loadableGenerated: {
- webpack: () => [/*require.resolve*/ 5194],
- },
- }
- );
- const Page = () =>
- /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,
- {
- children: [
- /*#__PURE__*/ (0,
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
- children: "testing next/dynamic size",
- }),
- /*#__PURE__*/ (0,
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
- DynamicHello,
- {}
- ),
- ],
- }
- );
- var __N_SSP = true;
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = Page;
-
- /***/
- },
-
- /***/ 8452: /***/ (
+ /***/ 5792: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -371,24 +361,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
/***/
},
- /***/ 8931: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/dynamic",
- function () {
- return __webpack_require__(4545);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
-
- /***/ 8949: /***/ (module, exports, __webpack_require__) => {
+ /***/ 6153: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -421,7 +394,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
__webpack_require__(5977)
);
const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(4466)
+ __webpack_require__(4478)
);
const isServerSide = "object" === "undefined";
// Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -521,13 +494,40 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
/***/
},
+
+ /***/ 7444: /***/ (
+ module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ module.exports = __webpack_require__(6153);
+
+ /***/
+ },
+
+ /***/ 9805: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/dynamic",
+ function () {
+ return __webpack_require__(2839);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(8931)
+ __webpack_exec__(9805)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for edge-ssr-HASH.js
@@ -1,24 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[676],
{
- /***/ 4717: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/edge-ssr",
- function () {
- return __webpack_require__(7776);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
-
- /***/ 7776: /***/ (
+ /***/ 170: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -37,13 +20,30 @@
/***/
},
+
+ /***/ 8079: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/edge-ssr",
+ function () {
+ return __webpack_require__(170);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(4717)
+ __webpack_exec__(8079)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for head-HASH.js
@@ -1,34 +1,17 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[5350],
{
- /***/ 943: /***/ (
+ /***/ 1177: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(2554);
+ module.exports = __webpack_require__(8366);
/***/
},
- /***/ 3829: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/head",
- function () {
- return __webpack_require__(4662);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
-
- /***/ 4662: /***/ (
+ /***/ 1992: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +26,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(7765);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(943);
+ __webpack_require__(1177);
/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +59,30 @@
/***/
},
+
+ /***/ 8751: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/head",
+ function () {
+ return __webpack_require__(1992);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(3829)
+ __webpack_exec__(8751)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for hooks-HASH.js
@@ -1,7 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[9804],
{
- /***/ 2452: /***/ (
+ /***/ 2227: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/hooks",
+ function () {
+ return __webpack_require__(2770);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
+
+ /***/ 2770: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -59,30 +76,13 @@
/***/
},
-
- /***/ 6105: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/hooks",
- function () {
- return __webpack_require__(2452);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(6105)
+ __webpack_exec__(2227)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for link-HASH.js
@@ -1,143 +1,63 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4672],
{
- /***/ 1585: /***/ (module, exports, __webpack_require__) => {
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "useIntersection", {
- enumerable: true,
- get: function () {
- return useIntersection;
- },
- });
- const _react = __webpack_require__(5977);
- const _requestidlecallback = __webpack_require__(356);
- const hasIntersectionObserver =
- typeof IntersectionObserver === "function";
- const observers = new Map();
- const idList = [];
- function createObserver(options) {
- const id = {
- root: options.root || null,
- margin: options.rootMargin || "",
- };
- const existing = idList.find(
- (obj) => obj.root === id.root && obj.margin === id.margin
- );
- let instance;
- if (existing) {
- instance = observers.get(existing);
- if (instance) {
- return instance;
- }
- }
- const elements = new Map();
- const observer = new IntersectionObserver((entries) => {
- entries.forEach((entry) => {
- const callback = elements.get(entry.target);
- const isVisible =
- entry.isIntersecting || entry.intersectionRatio > 0;
- if (callback && isVisible) {
- callback(isVisible);
- }
- });
- }, options);
- instance = {
- id,
- observer,
- elements,
- };
- idList.push(id);
- observers.set(id, instance);
- return instance;
- }
- function observe(element, callback, options) {
- const { id, observer, elements } = createObserver(options);
- elements.set(element, callback);
- observer.observe(element);
- return function unobserve() {
- elements.delete(element);
- observer.unobserve(element);
- // Destroy observer when there's nothing left to watch:
- if (elements.size === 0) {
- observer.disconnect();
- observers.delete(id);
- const index = idList.findIndex(
- (obj) => obj.root === id.root && obj.margin === id.margin
- );
- if (index > -1) {
- idList.splice(index, 1);
- }
- }
- };
- }
- function useIntersection(param) {
- let { rootRef, rootMargin, disabled } = param;
- const isDisabled = disabled || !hasIntersectionObserver;
- const [visible, setVisible] = (0, _react.useState)(false);
- const elementRef = (0, _react.useRef)(null);
- const setElement = (0, _react.useCallback)((element) => {
- elementRef.current = element;
- }, []);
- (0, _react.useEffect)(() => {
- if (hasIntersectionObserver) {
- if (isDisabled || visible) return;
- const element = elementRef.current;
- if (element && element.tagName) {
- const unobserve = observe(
- element,
- (isVisible) => isVisible && setVisible(isVisible),
- {
- root: rootRef == null ? void 0 : rootRef.current,
- rootMargin,
- }
- );
- return unobserve;
- }
- } else {
- if (!visible) {
- const idleCallback = (0,
- _requestidlecallback.requestIdleCallback)(() => setVisible(true));
- return () =>
- (0, _requestidlecallback.cancelIdleCallback)(idleCallback);
- }
- }
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [isDisabled, rootMargin, rootRef, visible, elementRef.current]);
- const resetVisible = (0, _react.useCallback)(() => {
- setVisible(false);
- }, []);
- return [setElement, visible, resetVisible];
- }
- if (
- (typeof exports.default === "function" ||
- (typeof exports.default === "object" && exports.default !== null)) &&
- typeof exports.default.__esModule === "undefined"
- ) {
- Object.defineProperty(exports.default, "__esModule", {
- value: true,
- });
- Object.assign(exports.default, exports);
- module.exports = exports.default;
- } //# sourceMappingURL=use-intersection.js.map
+ /***/ 2783: /***/ (
+ module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ module.exports = __webpack_require__(5926);
/***/
},
- /***/ 2621: /***/ (
- module,
- __unused_webpack_exports,
+ /***/ 4174: /***/ (
+ __unused_webpack_module,
+ __webpack_exports__,
__webpack_require__
) => {
- module.exports = __webpack_require__(5410);
+ "use strict";
+ __webpack_require__.r(__webpack_exports__);
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+ /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
+ /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
+ /* harmony export */
+ });
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
+ __webpack_require__(7765);
+ /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
+ __webpack_require__(2783);
+ /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
+ /*#__PURE__*/ __webpack_require__.n(
+ next_link__WEBPACK_IMPORTED_MODULE_1__
+ );
+
+ function aLink(props) {
+ return /*#__PURE__*/ (0,
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
+ children: [
+ /*#__PURE__*/ (0,
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {
+ children: "A Link page!",
+ }),
+ /*#__PURE__*/ (0,
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
+ next_link__WEBPACK_IMPORTED_MODULE_1___default(),
+ {
+ href: "/",
+ children: "Go to /",
+ }
+ ),
+ ],
+ });
+ }
+ var __N_SSP = true;
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = aLink;
/***/
},
- /***/ 5410: /***/ (module, exports, __webpack_require__) => {
+ /***/ 5926: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -164,16 +84,16 @@
const _react = /*#__PURE__*/ _interop_require_wildcard._(
__webpack_require__(5977)
);
- const _resolvehref = __webpack_require__(224);
- const _islocalurl = __webpack_require__(7746);
- const _formaturl = __webpack_require__(315);
- const _utils = __webpack_require__(8709);
- const _addlocale = __webpack_require__(6358);
- const _routercontextsharedruntime = __webpack_require__(4095);
- const _useintersection = __webpack_require__(1585);
- const _getdomainlocale = __webpack_require__(8802);
- const _addbasepath = __webpack_require__(6151);
- const _usemergedref = __webpack_require__(9100);
+ const _resolvehref = __webpack_require__(6708);
+ const _islocalurl = __webpack_require__(6526);
+ const _formaturl = __webpack_require__(5575);
+ const _utils = __webpack_require__(3497);
+ const _addlocale = __webpack_require__(722);
+ const _routercontextsharedruntime = __webpack_require__(1235);
+ const _useintersection = __webpack_require__(8069);
+ const _getdomainlocale = __webpack_require__(9734);
+ const _addbasepath = __webpack_require__(4419);
+ const _usemergedref = __webpack_require__(6136);
const prefetched = new Set();
function prefetch(router, href, as, options) {
if (false) {
@@ -495,43 +415,7 @@
/***/
},
- /***/ 8802: /***/ (module, exports, __webpack_require__) => {
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "getDomainLocale", {
- enumerable: true,
- get: function () {
- return getDomainLocale;
- },
- });
- const _normalizetrailingslash = __webpack_require__(1652);
- const basePath =
- /* unused pure expression or super */ null && (false || "");
- function getDomainLocale(path, locale, locales, domainLocales) {
- if (false) {
- } else {
- return false;
- }
- }
- if (
- (typeof exports.default === "function" ||
- (typeof exports.default === "object" && exports.default !== null)) &&
- typeof exports.default.__esModule === "undefined"
- ) {
- Object.defineProperty(exports.default, "__esModule", {
- value: true,
- });
- Object.assign(exports.default, exports);
- module.exports = exports.default;
- } //# sourceMappingURL=get-domain-locale.js.map
-
- /***/
- },
-
- /***/ 9100: /***/ (module, exports, __webpack_require__) => {
+ /***/ 6136: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -609,7 +493,7 @@
/***/
},
- /***/ 9693: /***/ (
+ /***/ 7047: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -617,7 +501,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/link",
function () {
- return __webpack_require__(9948);
+ return __webpack_require__(4174);
},
]);
if (false) {
@@ -626,48 +510,164 @@
/***/
},
- /***/ 9948: /***/ (
- __unused_webpack_module,
- __webpack_exports__,
- __webpack_require__
- ) => {
+ /***/ 8069: /***/ (module, exports, __webpack_require__) => {
"use strict";
- __webpack_require__.r(__webpack_exports__);
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
- /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
- /* harmony export */
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
});
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
- __webpack_require__(7765);
- /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(2621);
- /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
- /*#__PURE__*/ __webpack_require__.n(
- next_link__WEBPACK_IMPORTED_MODULE_1__
+ Object.defineProperty(exports, "useIntersection", {
+ enumerable: true,
+ get: function () {
+ return useIntersection;
+ },
+ });
+ const _react = __webpack_require__(5977);
+ const _requestidlecallback = __webpack_require__(3432);
+ const hasIntersectionObserver =
+ typeof IntersectionObserver === "function";
+ const observers = new Map();
+ const idList = [];
+ function createObserver(options) {
+ const id = {
+ root: options.root || null,
+ margin: options.rootMargin || "",
+ };
+ const existing = idList.find(
+ (obj) => obj.root === id.root && obj.margin === id.margin
);
-
- function aLink(props) {
- return /*#__PURE__*/ (0,
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
- children: [
- /*#__PURE__*/ (0,
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {
- children: "A Link page!",
- }),
- /*#__PURE__*/ (0,
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
- next_link__WEBPACK_IMPORTED_MODULE_1___default(),
- {
- href: "/",
- children: "Go to /",
- }
- ),
- ],
+ let instance;
+ if (existing) {
+ instance = observers.get(existing);
+ if (instance) {
+ return instance;
+ }
+ }
+ const elements = new Map();
+ const observer = new IntersectionObserver((entries) => {
+ entries.forEach((entry) => {
+ const callback = elements.get(entry.target);
+ const isVisible =
+ entry.isIntersecting || entry.intersectionRatio > 0;
+ if (callback && isVisible) {
+ callback(isVisible);
+ }
+ });
+ }, options);
+ instance = {
+ id,
+ observer,
+ elements,
+ };
+ idList.push(id);
+ observers.set(id, instance);
+ return instance;
+ }
+ function observe(element, callback, options) {
+ const { id, observer, elements } = createObserver(options);
+ elements.set(element, callback);
+ observer.observe(element);
+ return function unobserve() {
+ elements.delete(element);
+ observer.unobserve(element);
+ // Destroy observer when there's nothing left to watch:
+ if (elements.size === 0) {
+ observer.disconnect();
+ observers.delete(id);
+ const index = idList.findIndex(
+ (obj) => obj.root === id.root && obj.margin === id.margin
+ );
+ if (index > -1) {
+ idList.splice(index, 1);
+ }
+ }
+ };
+ }
+ function useIntersection(param) {
+ let { rootRef, rootMargin, disabled } = param;
+ const isDisabled = disabled || !hasIntersectionObserver;
+ const [visible, setVisible] = (0, _react.useState)(false);
+ const elementRef = (0, _react.useRef)(null);
+ const setElement = (0, _react.useCallback)((element) => {
+ elementRef.current = element;
+ }, []);
+ (0, _react.useEffect)(() => {
+ if (hasIntersectionObserver) {
+ if (isDisabled || visible) return;
+ const element = elementRef.current;
+ if (element && element.tagName) {
+ const unobserve = observe(
+ element,
+ (isVisible) => isVisible && setVisible(isVisible),
+ {
+ root: rootRef == null ? void 0 : rootRef.current,
+ rootMargin,
+ }
+ );
+ return unobserve;
+ }
+ } else {
+ if (!visible) {
+ const idleCallback = (0,
+ _requestidlecallback.requestIdleCallback)(() => setVisible(true));
+ return () =>
+ (0, _requestidlecallback.cancelIdleCallback)(idleCallback);
+ }
+ }
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [isDisabled, rootMargin, rootRef, visible, elementRef.current]);
+ const resetVisible = (0, _react.useCallback)(() => {
+ setVisible(false);
+ }, []);
+ return [setElement, visible, resetVisible];
+ }
+ if (
+ (typeof exports.default === "function" ||
+ (typeof exports.default === "object" && exports.default !== null)) &&
+ typeof exports.default.__esModule === "undefined"
+ ) {
+ Object.defineProperty(exports.default, "__esModule", {
+ value: true,
});
+ Object.assign(exports.default, exports);
+ module.exports = exports.default;
+ } //# sourceMappingURL=use-intersection.js.map
+
+ /***/
+ },
+
+ /***/ 9734: /***/ (module, exports, __webpack_require__) => {
+ "use strict";
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "getDomainLocale", {
+ enumerable: true,
+ get: function () {
+ return getDomainLocale;
+ },
+ });
+ const _normalizetrailingslash = __webpack_require__(504);
+ const basePath =
+ /* unused pure expression or super */ null && (false || "");
+ function getDomainLocale(path, locale, locales, domainLocales) {
+ if (false) {
+ } else {
+ return false;
+ }
}
- var __N_SSP = true;
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = aLink;
+ if (
+ (typeof exports.default === "function" ||
+ (typeof exports.default === "object" && exports.default !== null)) &&
+ typeof exports.default.__esModule === "undefined"
+ ) {
+ Object.defineProperty(exports.default, "__esModule", {
+ value: true,
+ });
+ Object.assign(exports.default, exports);
+ module.exports = exports.default;
+ } //# sourceMappingURL=get-domain-locale.js.map
/***/
},
@@ -677,7 +677,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(9693)
+ __webpack_exec__(7047)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for script-HASH.js
@@ -1,7 +1,34 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[1209],
{
- /***/ 3699: /***/ (
+ /***/ 1008: /***/ (
+ module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ module.exports = __webpack_require__(2817);
+
+ /***/
+ },
+
+ /***/ 6951: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/script",
+ function () {
+ return __webpack_require__(8889);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
+
+ /***/ 8889: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -16,7 +43,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(7765);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4802);
+ __webpack_require__(1008);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -48,40 +75,13 @@
/***/
},
-
- /***/ 4802: /***/ (
- module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- module.exports = __webpack_require__(8661);
-
- /***/
- },
-
- /***/ 7861: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/script",
- function () {
- return __webpack_require__(3699);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(7861)
+ __webpack_exec__(6951)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;Diff for 3414-HASH.js
Diff too large to display
Diff for 8863-HASH.js
@@ -1,8 +1,33 @@
"use strict";
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
- [8863],
+ [7009],
{
- /***/ 22: /***/ (module, exports, __webpack_require__) => {
+ /***/ 414: /***/ (
+ __unused_webpack_module,
+ exports,
+ __webpack_require__
+ ) => {
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "AmpStateContext", {
+ enumerable: true,
+ get: function () {
+ return AmpStateContext;
+ },
+ });
+ const _interop_require_default = __webpack_require__(2726);
+ const _react = /*#__PURE__*/ _interop_require_default._(
+ __webpack_require__(2224)
+ );
+ const AmpStateContext = _react.default.createContext({});
+ if (false) {
+ } //# sourceMappingURL=amp-context.shared-runtime.js.map
+
+ /***/
+ },
+
+ /***/ 1912: /***/ (module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", {
value: true,
});
@@ -12,7 +37,7 @@
return useMergedRef;
},
});
- const _react = __webpack_require__(2786);
+ const _react = __webpack_require__(2224);
function useMergedRef(refA, refB) {
const cleanupA = (0, _react.useRef)(null);
const cleanupB = (0, _react.useRef)(null);
@@ -78,7 +103,93 @@
/***/
},
- /***/ 639: /***/ (__unused_webpack_module, exports) => {
+ /***/ 2843: /***/ (
+ __unused_webpack_module,
+ exports,
+ __webpack_require__
+ ) => {
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "RouterContext", {
+ enumerable: true,
+ get: function () {
+ return RouterContext;
+ },
+ });
+ const _interop_require_default = __webpack_require__(2726);
+ const _react = /*#__PURE__*/ _interop_require_default._(
+ __webpack_require__(2224)
+ );
+ const RouterContext = _react.default.createContext(null);
+ if (false) {
+ } //# sourceMappingURL=router-context.shared-runtime.js.map
+
+ /***/
+ },
+
+ /***/ 3003: /***/ (
+ __unused_webpack_module,
+ exports,
+ __webpack_require__
+ ) => {
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "default", {
+ enumerable: true,
+ get: function () {
+ return _default;
+ },
+ });
+ const _findclosestquality = __webpack_require__(5045);
+ function defaultLoader(param) {
+ let { config, src, width, quality } = param;
+ if (false) {
+ }
+ const q = (0, _findclosestquality.findClosestQuality)(quality, config);
+ return (
+ config.path +
+ "?url=" +
+ encodeURIComponent(src) +
+ "&w=" +
+ width +
+ "&q=" +
+ q +
+ (src.startsWith("/_next/static/media/") && false ? 0 : "")
+ );
+ }
+ // We use this to determine if the import is the default loader
+ // or a custom loader defined by the user in next.config.js
+ defaultLoader.__next_img_default = true;
+ const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map
+
+ /***/
+ },
+
+ /***/ 3810: /***/ (__unused_webpack_module, exports) => {
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "isInAmpMode", {
+ enumerable: true,
+ get: function () {
+ return isInAmpMode;
+ },
+ });
+ function isInAmpMode(param) {
+ let {
+ ampFirst = false,
+ hybrid = false,
+ hasQuery = false,
+ } = param === void 0 ? {} : param;
+ return ampFirst || (hybrid && hasQuery);
+ } //# sourceMappingURL=amp-mode.js.map
+
+ /***/
+ },
+
+ /***/ 5045: /***/ (__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", {
value: true,
});
@@ -109,56 +220,7 @@
/***/
},
- /***/ 936: /***/ (__unused_webpack_module, exports) => {
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- 0 && 0;
- function _export(target, all) {
- for (var name in all)
- Object.defineProperty(target, name, {
- enumerable: true,
- get: all[name],
- });
- }
- _export(exports, {
- VALID_LOADERS: function () {
- return VALID_LOADERS;
- },
- imageConfigDefault: function () {
- return imageConfigDefault;
- },
- });
- const VALID_LOADERS = [
- "default",
- "imgix",
- "cloudinary",
- "akamai",
- "custom",
- ];
- const imageConfigDefault = {
- deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
- imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
- path: "/_next/image",
- loader: "default",
- loaderFile: "",
- domains: [],
- disableStaticImages: false,
- minimumCacheTTL: 60,
- formats: ["image/webp"],
- dangerouslyAllowSVG: false,
- contentSecurityPolicy: "script-src 'none'; frame-src 'none'; sandbox;",
- contentDispositionType: "attachment",
- localPatterns: undefined,
- remotePatterns: [],
- qualities: [75],
- unoptimized: false,
- }; //# sourceMappingURL=image-config.js.map
-
- /***/
- },
-
- /***/ 1268: /***/ (__unused_webpack_module, exports) => {
+ /***/ 5218: /***/ (__unused_webpack_module, exports) => {
/**
* A shared function, used on both client and server, to generate a SVG blur placeholder.
*/
@@ -212,7 +274,7 @@
/***/
},
- /***/ 1796: /***/ (module, exports, __webpack_require__) => {
+ /***/ 5402: /***/ (module, exports, __webpack_require__) => {
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
value: true,
@@ -233,19 +295,19 @@
return defaultHead;
},
});
- const _interop_require_default = __webpack_require__(8182);
- const _interop_require_wildcard = __webpack_require__(8319);
- const _jsxruntime = __webpack_require__(1050);
+ const _interop_require_default = __webpack_require__(2726);
+ const _interop_require_wildcard = __webpack_require__(2527);
+ const _jsxruntime = __webpack_require__(8204);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
- __webpack_require__(2786)
+ __webpack_require__(2224)
);
const _sideeffect = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(5581)
+ __webpack_require__(9319)
);
- const _ampcontextsharedruntime = __webpack_require__(3800);
- const _headmanagercontextsharedruntime = __webpack_require__(4950);
- const _ampmode = __webpack_require__(7824);
- const _warnonce = __webpack_require__(2854);
+ const _ampcontextsharedruntime = __webpack_require__(414);
+ const _headmanagercontextsharedruntime = __webpack_require__(3100);
+ const _ampmode = __webpack_require__(3810);
+ const _warnonce = __webpack_require__(4504);
function defaultHead(inAmpMode) {
if (inAmpMode === void 0) inAmpMode = false;
const head = [
@@ -410,7 +472,7 @@
/***/
},
- /***/ 2843: /***/ (
+ /***/ 6745: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -424,9 +486,9 @@
return getImgProps;
},
});
- const _warnonce = __webpack_require__(2854);
- const _imageblursvg = __webpack_require__(1268);
- const _imageconfig = __webpack_require__(936);
+ const _warnonce = __webpack_require__(4504);
+ const _imageblursvg = __webpack_require__(5218);
+ const _imageconfig = __webpack_require__(9278);
const VALID_LOADING_VALUES =
/* unused pure expression or super */ null && [
"lazy",
@@ -858,239 +920,7 @@
/***/
},
- /***/ 3800: /***/ (
- __unused_webpack_module,
- exports,
- __webpack_require__
- ) => {
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "AmpStateContext", {
- enumerable: true,
- get: function () {
- return AmpStateContext;
- },
- });
- const _interop_require_default = __webpack_require__(8182);
- const _react = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(2786)
- );
- const AmpStateContext = _react.default.createContext({});
- if (false) {
- } //# sourceMappingURL=amp-context.shared-runtime.js.map
-
- /***/
- },
-
- /***/ 5581: /***/ (
- __unused_webpack_module,
- exports,
- __webpack_require__
- ) => {
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "default", {
- enumerable: true,
- get: function () {
- return SideEffect;
- },
- });
- const _react = __webpack_require__(2786);
- const isServer = "object" === "undefined";
- const useClientOnlyLayoutEffect = isServer
- ? () => {}
- : _react.useLayoutEffect;
- const useClientOnlyEffect = isServer ? () => {} : _react.useEffect;
- function SideEffect(props) {
- const { headManager, reduceComponentsToState } = props;
- function emitChange() {
- if (headManager && headManager.mountedInstances) {
- const headElements = _react.Children.toArray(
- Array.from(headManager.mountedInstances).filter(Boolean)
- );
- headManager.updateHead(
- reduceComponentsToState(headElements, props)
- );
- }
- }
- if (isServer) {
- var _headManager_mountedInstances;
- headManager == null
- ? void 0
- : (_headManager_mountedInstances = headManager.mountedInstances) ==
- null
- ? void 0
- : _headManager_mountedInstances.add(props.children);
- emitChange();
- }
- useClientOnlyLayoutEffect(() => {
- var _headManager_mountedInstances;
- headManager == null
- ? void 0
- : (_headManager_mountedInstances = headManager.mountedInstances) ==
- null
- ? void 0
- : _headManager_mountedInstances.add(props.children);
- return () => {
- var _headManager_mountedInstances;
- headManager == null
- ? void 0
- : (_headManager_mountedInstances =
- headManager.mountedInstances) == null
- ? void 0
- : _headManager_mountedInstances.delete(props.children);
- };
- });
- // We need to call `updateHead` method whenever the `SideEffect` is trigger in all
- // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s
- // being rendered, we only trigger the method from the last one.
- // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`
- // singleton in the layout effect pass, and actually trigger it in the effect pass.
- useClientOnlyLayoutEffect(() => {
- if (headManager) {
- headManager._pendingUpdate = emitChange;
- }
- return () => {
- if (headManager) {
- headManager._pendingUpdate = emitChange;
- }
- };
- });
- useClientOnlyEffect(() => {
- if (headManager && headManager._pendingUpdate) {
- headManager._pendingUpdate();
- headManager._pendingUpdate = null;
- }
- return () => {
- if (headManager && headManager._pendingUpdate) {
- headManager._pendingUpdate();
- headManager._pendingUpdate = null;
- }
- };
- });
- return null;
- } //# sourceMappingURL=side-effect.js.map
-
- /***/
- },
-
- /***/ 7053: /***/ (
- __unused_webpack_module,
- exports,
- __webpack_require__
- ) => {
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "RouterContext", {
- enumerable: true,
- get: function () {
- return RouterContext;
- },
- });
- const _interop_require_default = __webpack_require__(8182);
- const _react = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(2786)
- );
- const RouterContext = _react.default.createContext(null);
- if (false) {
- } //# sourceMappingURL=router-context.shared-runtime.js.map
-
- /***/
- },
-
- /***/ 7281: /***/ (
- __unused_webpack_module,
- exports,
- __webpack_require__
- ) => {
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "default", {
- enumerable: true,
- get: function () {
- return _default;
- },
- });
- const _findclosestquality = __webpack_require__(639);
- function defaultLoader(param) {
- let { config, src, width, quality } = param;
- if (false) {
- }
- const q = (0, _findclosestquality.findClosestQuality)(quality, config);
- return (
- config.path +
- "?url=" +
- encodeURIComponent(src) +
- "&w=" +
- width +
- "&q=" +
- q +
- (src.startsWith("/_next/static/media/") && false ? 0 : "")
- );
- }
- // We use this to determine if the import is the default loader
- // or a custom loader defined by the user in next.config.js
- defaultLoader.__next_img_default = true;
- const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map
-
- /***/
- },
-
- /***/ 7480: /***/ (
- __unused_webpack_module,
- exports,
- __webpack_require__
- ) => {
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "ImageConfigContext", {
- enumerable: true,
- get: function () {
- return ImageConfigContext;
- },
- });
- const _interop_require_default = __webpack_require__(8182);
- const _react = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(2786)
- );
- const _imageconfig = __webpack_require__(936);
- const ImageConfigContext = _react.default.createContext(
- _imageconfig.imageConfigDefault
- );
- if (false) {
- } //# sourceMappingURL=image-config-context.shared-runtime.js.map
-
- /***/
- },
-
- /***/ 7824: /***/ (__unused_webpack_module, exports) => {
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "isInAmpMode", {
- enumerable: true,
- get: function () {
- return isInAmpMode;
- },
- });
- function isInAmpMode(param) {
- let {
- ampFirst = false,
- hybrid = false,
- hasQuery = false,
- } = param === void 0 ? {} : param;
- return ampFirst || (hybrid && hasQuery);
- } //# sourceMappingURL=amp-mode.js.map
-
- /***/
- },
-
- /***/ 8863: /***/ (module, exports, __webpack_require__) => {
+ /***/ 7009: /***/ (module, exports, __webpack_require__) => {
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
value: true,
@@ -1101,27 +931,27 @@
return Image;
},
});
- const _interop_require_default = __webpack_require__(8182);
- const _interop_require_wildcard = __webpack_require__(8319);
- const _jsxruntime = __webpack_require__(1050);
+ const _interop_require_default = __webpack_require__(2726);
+ const _interop_require_wildcard = __webpack_require__(2527);
+ const _jsxruntime = __webpack_require__(8204);
const _react = /*#__PURE__*/ _interop_require_wildcard._(
- __webpack_require__(2786)
+ __webpack_require__(2224)
);
const _reactdom = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(1407)
+ __webpack_require__(1345)
);
const _head = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(1796)
+ __webpack_require__(5402)
);
- const _getimgprops = __webpack_require__(2843);
- const _imageconfig = __webpack_require__(936);
- const _imageconfigcontextsharedruntime = __webpack_require__(7480);
- const _warnonce = __webpack_require__(2854);
- const _routercontextsharedruntime = __webpack_require__(7053);
+ const _getimgprops = __webpack_require__(6745);
+ const _imageconfig = __webpack_require__(9278);
+ const _imageconfigcontextsharedruntime = __webpack_require__(9690);
+ const _warnonce = __webpack_require__(4504);
+ const _routercontextsharedruntime = __webpack_require__(2843);
const _imageloader = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(7281)
+ __webpack_require__(3003)
);
- const _usemergedref = __webpack_require__(22);
+ const _usemergedref = __webpack_require__(1912);
// This is replaced by webpack define plugin
const configEnv = {
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -1447,5 +1277,175 @@
/***/
},
+
+ /***/ 9278: /***/ (__unused_webpack_module, exports) => {
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ 0 && 0;
+ function _export(target, all) {
+ for (var name in all)
+ Object.defineProperty(target, name, {
+ enumerable: true,
+ get: all[name],
+ });
+ }
+ _export(exports, {
+ VALID_LOADERS: function () {
+ return VALID_LOADERS;
+ },
+ imageConfigDefault: function () {
+ return imageConfigDefault;
+ },
+ });
+ const VALID_LOADERS = [
+ "default",
+ "imgix",
+ "cloudinary",
+ "akamai",
+ "custom",
+ ];
+ const imageConfigDefault = {
+ deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
+ imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
+ path: "/_next/image",
+ loader: "default",
+ loaderFile: "",
+ domains: [],
+ disableStaticImages: false,
+ minimumCacheTTL: 60,
+ formats: ["image/webp"],
+ dangerouslyAllowSVG: false,
+ contentSecurityPolicy: "script-src 'none'; frame-src 'none'; sandbox;",
+ contentDispositionType: "attachment",
+ localPatterns: undefined,
+ remotePatterns: [],
+ qualities: [75],
+ unoptimized: false,
+ }; //# sourceMappingURL=image-config.js.map
+
+ /***/
+ },
+
+ /***/ 9319: /***/ (
+ __unused_webpack_module,
+ exports,
+ __webpack_require__
+ ) => {
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "default", {
+ enumerable: true,
+ get: function () {
+ return SideEffect;
+ },
+ });
+ const _react = __webpack_require__(2224);
+ const isServer = "object" === "undefined";
+ const useClientOnlyLayoutEffect = isServer
+ ? () => {}
+ : _react.useLayoutEffect;
+ const useClientOnlyEffect = isServer ? () => {} : _react.useEffect;
+ function SideEffect(props) {
+ const { headManager, reduceComponentsToState } = props;
+ function emitChange() {
+ if (headManager && headManager.mountedInstances) {
+ const headElements = _react.Children.toArray(
+ Array.from(headManager.mountedInstances).filter(Boolean)
+ );
+ headManager.updateHead(
+ reduceComponentsToState(headElements, props)
+ );
+ }
+ }
+ if (isServer) {
+ var _headManager_mountedInstances;
+ headManager == null
+ ? void 0
+ : (_headManager_mountedInstances = headManager.mountedInstances) ==
+ null
+ ? void 0
+ : _headManager_mountedInstances.add(props.children);
+ emitChange();
+ }
+ useClientOnlyLayoutEffect(() => {
+ var _headManager_mountedInstances;
+ headManager == null
+ ? void 0
+ : (_headManager_mountedInstances = headManager.mountedInstances) ==
+ null
+ ? void 0
+ : _headManager_mountedInstances.add(props.children);
+ return () => {
+ var _headManager_mountedInstances;
+ headManager == null
+ ? void 0
+ : (_headManager_mountedInstances =
+ headManager.mountedInstances) == null
+ ? void 0
+ : _headManager_mountedInstances.delete(props.children);
+ };
+ });
+ // We need to call `updateHead` method whenever the `SideEffect` is trigger in all
+ // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s
+ // being rendered, we only trigger the method from the last one.
+ // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`
+ // singleton in the layout effect pass, and actually trigger it in the effect pass.
+ useClientOnlyLayoutEffect(() => {
+ if (headManager) {
+ headManager._pendingUpdate = emitChange;
+ }
+ return () => {
+ if (headManager) {
+ headManager._pendingUpdate = emitChange;
+ }
+ };
+ });
+ useClientOnlyEffect(() => {
+ if (headManager && headManager._pendingUpdate) {
+ headManager._pendingUpdate();
+ headManager._pendingUpdate = null;
+ }
+ return () => {
+ if (headManager && headManager._pendingUpdate) {
+ headManager._pendingUpdate();
+ headManager._pendingUpdate = null;
+ }
+ };
+ });
+ return null;
+ } //# sourceMappingURL=side-effect.js.map
+
+ /***/
+ },
+
+ /***/ 9690: /***/ (
+ __unused_webpack_module,
+ exports,
+ __webpack_require__
+ ) => {
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "ImageConfigContext", {
+ enumerable: true,
+ get: function () {
+ return ImageConfigContext;
+ },
+ });
+ const _interop_require_default = __webpack_require__(2726);
+ const _react = /*#__PURE__*/ _interop_require_default._(
+ __webpack_require__(2224)
+ );
+ const _imageconfig = __webpack_require__(9278);
+ const ImageConfigContext = _react.default.createContext(
+ _imageconfig.imageConfigDefault
+ );
+ if (false) {
+ } //# sourceMappingURL=image-config-context.shared-runtime.js.map
+
+ /***/
+ },
},
]);Diff for 9304-HASH.js
Diff too large to display
Diff for main-HASH.js
Diff too large to display
Tests Passed |
CodSpeed Performance ReportMerging #83484 will not alter performanceComparing Summary
|

What?
Changes in #83331 accidentally changed behavior of how
tsconfig.jsonis resolved. When using Next.js we don't want it to be resolved relative to the current file being compiled. It should only use the application root.This PR fixes the behavior to match what it was before and adds a test that fails if it breaks again.
Closes PACK-5416