-
Notifications
You must be signed in to change notification settings - Fork 28.3k
turbo-tasks: Encode location information into panics #78796
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: canary
Are you sure you want to change the base?
Conversation
2ac5f44
to
937b755
Compare
937b755
to
4ecd0b0
Compare
f3f0a03
to
25b2376
Compare
This stack of pull requests is managed by Graphite. Learn more about stacking. |
86730c4
to
4c9d3a1
Compare
Stats from current PRDefault Build (Increase detected
|
vercel/next.js canary | vercel/next.js wbinnssmith/turbo-tasks-panic-loc | Change | |
---|---|---|---|
buildDuration | 32s | 30.7s | N/A |
buildDurationCached | 25.5s | 24.2s | N/A |
nodeModulesSize | 418 MB | 418 MB | ✓ |
nextStartRea..uration (ms) | 834ms | 779ms | N/A |
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary | vercel/next.js wbinnssmith/turbo-tasks-panic-loc | Change | |
---|---|---|---|
1733-HASH.js gzip | 44.5 kB | 44.9 kB | |
194b18f3-HASH.js gzip | 53.8 kB | 53.8 kB | N/A |
2192.HASH.js gzip | 169 B | 169 B | ✓ |
4719-HASH.js gzip | 5.47 kB | 5.44 kB | N/A |
framework-HASH.js gzip | 57.4 kB | 57.4 kB | ✓ |
main-app-HASH.js gzip | 253 B | 255 B | N/A |
main-HASH.js gzip | 33.5 kB | 33.5 kB | N/A |
webpack-HASH.js gzip | 1.71 kB | 1.71 kB | N/A |
Overall change | 102 kB | 103 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | vercel/next.js wbinnssmith/turbo-tasks-panic-loc | 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 wbinnssmith/turbo-tasks-panic-loc | Change | |
---|---|---|---|
_app-HASH.js gzip | 193 B | 193 B | ✓ |
_error-HASH.js gzip | 192 B | 192 B | ✓ |
amp-HASH.js gzip | 510 B | 510 B | ✓ |
css-HASH.js gzip | 344 B | 342 B | N/A |
dynamic-HASH.js gzip | 1.84 kB | 1.83 kB | N/A |
edge-ssr-HASH.js gzip | 265 B | 265 B | ✓ |
head-HASH.js gzip | 363 B | 364 B | N/A |
hooks-HASH.js gzip | 392 B | 391 B | N/A |
image-HASH.js gzip | 4.69 kB | 4.67 kB | N/A |
index-HASH.js gzip | 267 B | 267 B | ✓ |
link-HASH.js gzip | 2.53 kB | 2.53 kB | N/A |
routerDirect..HASH.js gzip | 328 B | 325 B | N/A |
script-HASH.js gzip | 396 B | 396 B | ✓ |
withRouter-HASH.js gzip | 325 B | 325 B | ✓ |
1afbb74e6ecf..834.css gzip | 106 B | 106 B | ✓ |
Overall change | 2.25 kB | 2.25 kB | ✓ |
Client Build Manifests
vercel/next.js canary | vercel/next.js wbinnssmith/turbo-tasks-panic-loc | Change | |
---|---|---|---|
_buildManifest.js gzip | 751 B | 750 B | N/A |
Overall change | 0 B | 0 B | ✓ |
Rendered Page Sizes
vercel/next.js canary | vercel/next.js wbinnssmith/turbo-tasks-panic-loc | Change | |
---|---|---|---|
index.html gzip | 524 B | 524 B | ✓ |
link.html gzip | 537 B | 538 B | N/A |
withRouter.html gzip | 520 B | 521 B | N/A |
Overall change | 524 B | 524 B | ✓ |
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary | vercel/next.js wbinnssmith/turbo-tasks-panic-loc | Change | |
---|---|---|---|
edge-ssr.js gzip | 136 kB | 136 kB | |
page.js gzip | 217 kB | 212 kB | N/A |
Overall change | 136 kB | 136 kB |
Middleware size Overall increase ⚠️
vercel/next.js canary | vercel/next.js wbinnssmith/turbo-tasks-panic-loc | Change | |
---|---|---|---|
middleware-b..fest.js gzip | 678 B | 674 B | N/A |
middleware-r..fest.js gzip | 155 B | 157 B | N/A |
middleware.js gzip | 32.3 kB | 32.5 kB | |
edge-runtime..pack.js gzip | 853 B | 853 B | ✓ |
Overall change | 33.2 kB | 33.3 kB |
Next Runtimes
vercel/next.js canary | vercel/next.js wbinnssmith/turbo-tasks-panic-loc | Change | |
---|---|---|---|
app-page-exp...dev.js gzip | 311 kB | 311 kB | ✓ |
app-page-exp..prod.js gzip | 143 kB | 143 kB | ✓ |
app-page-tur...dev.js gzip | 311 kB | 311 kB | ✓ |
app-page-tur..prod.js gzip | 143 kB | 143 kB | ✓ |
app-page-tur...dev.js gzip | 303 kB | 303 kB | ✓ |
app-page-tur..prod.js gzip | 139 kB | 139 kB | ✓ |
app-page.run...dev.js gzip | 303 kB | 303 kB | ✓ |
app-page.run..prod.js gzip | 139 kB | 139 kB | ✓ |
app-route-ex...dev.js gzip | 40.4 kB | 40.4 kB | ✓ |
app-route-ex..prod.js gzip | 26.1 kB | 26.1 kB | ✓ |
app-route-tu...dev.js gzip | 40.4 kB | 40.4 kB | ✓ |
app-route-tu..prod.js gzip | 26.1 kB | 26.1 kB | ✓ |
app-route-tu...dev.js gzip | 39.8 kB | 39.8 kB | ✓ |
app-route-tu..prod.js gzip | 25.8 kB | 25.8 kB | ✓ |
app-route.ru...dev.js gzip | 39.8 kB | 39.8 kB | ✓ |
app-route.ru..prod.js gzip | 25.8 kB | 25.8 kB | ✓ |
dist_client_...dev.js gzip | 332 B | 332 B | ✓ |
dist_client_...dev.js gzip | 334 B | 334 B | ✓ |
dist_client_...dev.js gzip | 326 B | 326 B | ✓ |
dist_client_...dev.js gzip | 324 B | 324 B | ✓ |
pages-api-tu...dev.js gzip | 11.6 kB | 11.6 kB | ✓ |
pages-api-tu..prod.js gzip | 9.65 kB | 9.65 kB | ✓ |
pages-api.ru...dev.js gzip | 11.6 kB | 11.6 kB | ✓ |
pages-api.ru..prod.js gzip | 9.64 kB | 9.64 kB | ✓ |
pages-turbo....dev.js gzip | 30.6 kB | 30.6 kB | ✓ |
pages-turbo...prod.js gzip | 21.6 kB | 21.6 kB | ✓ |
pages.runtim...dev.js gzip | 30.8 kB | 30.8 kB | ✓ |
pages.runtim..prod.js gzip | 21.8 kB | 21.8 kB | ✓ |
server.runti..prod.js gzip | 61.7 kB | 61.7 kB | ✓ |
Overall change | 2.27 MB | 2.27 MB | ✓ |
build cache
vercel/next.js canary | vercel/next.js wbinnssmith/turbo-tasks-panic-loc | Change | |
---|---|---|---|
0.pack gzip | 2.18 MB | 2.18 MB | N/A |
index.pack gzip | 77.8 kB | 77.3 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
failed to diff
Diff for css-HASH.js
@@ -1,7 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[9813],
{
- /***/ 1586: /***/ (
+ /***/ 2628: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -9,7 +9,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/css",
function () {
- return __webpack_require__(4362);
+ return __webpack_require__(8707);
},
]);
if (false) {
@@ -18,14 +18,7 @@
/***/
},
- /***/ 4350: /***/ (module) => {
- // extracted by mini-css-extract-plugin
- module.exports = { helloWorld: "css_helloWorld__aUdUq" };
-
- /***/
- },
-
- /***/ 4362: /***/ (
+ /***/ 8707: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -39,7 +32,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(5640);
/* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4350);
+ __webpack_require__(9080);
/* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
_css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -58,13 +51,20 @@
/***/
},
+
+ /***/ 9080: /***/ (module) => {
+ // extracted by mini-css-extract-plugin
+ module.exports = { helloWorld: "css_helloWorld__aUdUq" };
+
+ /***/
+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(1586)
+ __webpack_exec__(2628)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for dynamic-HASH.js
@@ -1,17 +1,117 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2291],
{
- /***/ 283: /***/ (
+ /***/ 2001: /***/ (
+ __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__(5640);
+ /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
+ __webpack_require__(9553);
+ /* 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() */ 8042)
+ .then(__webpack_require__.bind(__webpack_require__, 8042))
+ .then((mod) => mod.Hello),
+ {
+ loadableGenerated: {
+ webpack: () => [/*require.resolve*/ 8042],
+ },
+ }
+ );
+ 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;
+
+ /***/
+ },
+
+ /***/ 2976: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/dynamic",
+ function () {
+ return __webpack_require__(2001);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
+
+ /***/ 7807: /***/ (
+ __unused_webpack_module,
+ exports,
+ __webpack_require__
+ ) => {
+ "use strict";
+ /* __next_internal_client_entry_do_not_use__ cjs */
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "LoadableContext", {
+ enumerable: true,
+ get: function () {
+ return LoadableContext;
+ },
+ });
+ const _interop_require_default = __webpack_require__(1532);
+ const _react = /*#__PURE__*/ _interop_require_default._(
+ __webpack_require__(148)
+ );
+ const LoadableContext = _react.default.createContext(null);
+ if (false) {
+ } //# sourceMappingURL=loadable-context.shared-runtime.js.map
+
+ /***/
+ },
+
+ /***/ 9553: /***/ (
module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(6990);
+ module.exports = __webpack_require__(9986);
/***/
},
- /***/ 505: /***/ (
+ /***/ 9829: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -53,7 +153,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
const _react = /*#__PURE__*/ _interop_require_default._(
__webpack_require__(148)
);
- const _loadablecontextsharedruntime = __webpack_require__(6179);
+ const _loadablecontextsharedruntime = __webpack_require__(7807);
function resolve(obj) {
return obj && obj.default ? obj.default : obj;
}
@@ -288,90 +388,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
/***/
},
- /***/ 5703: /***/ (
- __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__(5640);
- /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(283);
- /* 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() */ 2192)
- .then(__webpack_require__.bind(__webpack_require__, 2192))
- .then((mod) => mod.Hello),
- {
- loadableGenerated: {
- webpack: () => [/*require.resolve*/ 2192],
- },
- }
- );
- 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;
-
- /***/
- },
-
- /***/ 6179: /***/ (
- __unused_webpack_module,
- exports,
- __webpack_require__
- ) => {
- "use strict";
- /* __next_internal_client_entry_do_not_use__ cjs */
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "LoadableContext", {
- enumerable: true,
- get: function () {
- return LoadableContext;
- },
- });
- const _interop_require_default = __webpack_require__(1532);
- const _react = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(148)
- );
- const LoadableContext = _react.default.createContext(null);
- if (false) {
- } //# sourceMappingURL=loadable-context.shared-runtime.js.map
-
- /***/
- },
-
- /***/ 6990: /***/ (module, exports, __webpack_require__) => {
+ /***/ 9986: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -404,7 +421,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
__webpack_require__(148)
);
const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(505)
+ __webpack_require__(9829)
);
const isServerSide = "object" === "undefined";
// Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -504,30 +521,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
/***/
},
-
- /***/ 9254: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/dynamic",
- function () {
- return __webpack_require__(5703);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(9254)
+ __webpack_exec__(2976)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for hooks-HASH.js
@@ -1,24 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[9804],
{
- /***/ 1664: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/hooks",
- function () {
- return __webpack_require__(6130);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
-
- /***/ 6130: /***/ (
+ /***/ 4756: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -76,13 +59,30 @@
/***/
},
+
+ /***/ 5426: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/hooks",
+ function () {
+ return __webpack_require__(4756);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(1664)
+ __webpack_exec__(5426)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for image-HASH.js
@@ -1,7 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[2983],
{
- /***/ 2198: /***/ (
+ /***/ 264: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -9,7 +9,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/image",
function () {
- return __webpack_require__(3444);
+ return __webpack_require__(3594);
},
]);
if (false) {
@@ -18,7 +18,190 @@
/***/
},
- /***/ 2514: /***/ (
+ /***/ 1206: /***/ (__unused_webpack_module, exports) => {
+ "use strict";
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "default", {
+ enumerable: true,
+ get: function () {
+ return _default;
+ },
+ });
+ const DEFAULT_Q = 75;
+ function defaultLoader(param) {
+ let { config, src, width, quality } = param;
+ var _config_qualities;
+ if (false) {
+ }
+ const q =
+ quality ||
+ ((_config_qualities = config.qualities) == null
+ ? void 0
+ : _config_qualities.reduce((prev, cur) =>
+ Math.abs(cur - DEFAULT_Q) < Math.abs(prev - DEFAULT_Q)
+ ? cur
+ : prev
+ )) ||
+ DEFAULT_Q;
+ 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
+
+ /***/
+ },
+
+ /***/ 1765: /***/ (module, exports, __webpack_require__) => {
+ "use strict";
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "useMergedRef", {
+ enumerable: true,
+ get: function () {
+ return useMergedRef;
+ },
+ });
+ const _react = __webpack_require__(148);
+ function useMergedRef(refA, refB) {
+ const cleanupA = (0, _react.useRef)(null);
+ const cleanupB = (0, _react.useRef)(null);
+ // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.
+ // (this happens often if the user doesn't pass a ref to Link/Form/Image)
+ // But this can cause us to leak a cleanup-ref into user code (e.g. via `<Link legacyBehavior>`),
+ // and the user might pass that ref into ref-merging library that doesn't support cleanup refs
+ // (because it hasn't been updated for React 19)
+ // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.
+ // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.
+ return (0, _react.useCallback)(
+ (current) => {
+ if (current === null) {
+ const cleanupFnA = cleanupA.current;
+ if (cleanupFnA) {
+ cleanupA.current = null;
+ cleanupFnA();
+ }
+ const cleanupFnB = cleanupB.current;
+ if (cleanupFnB) {
+ cleanupB.current = null;
+ cleanupFnB();
+ }
+ } else {
+ if (refA) {
+ cleanupA.current = applyRef(refA, current);
+ }
+ if (refB) {
+ cleanupB.current = applyRef(refB, current);
+ }
+ }
+ },
+ [refA, refB]
+ );
+ }
+ function applyRef(refA, current) {
+ if (typeof refA === "function") {
+ const cleanup = refA(current);
+ if (typeof cleanup === "function") {
+ return cleanup;
+ } else {
+ return () => refA(null);
+ }
+ } else {
+ refA.current = current;
+ return () => {
+ refA.current = null;
+ };
+ }
+ }
+ 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-merged-ref.js.map
+
+ /***/
+ },
+
+ /***/ 3353: /***/ (
+ module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ module.exports = __webpack_require__(5526);
+
+ /***/
+ },
+
+ /***/ 3594: /***/ (
+ __unused_webpack_module,
+ __webpack_exports__,
+ __webpack_require__
+ ) => {
+ "use strict";
+ // ESM COMPAT FLAG
+ __webpack_require__.r(__webpack_exports__);
+
+ // EXPORTS
+ __webpack_require__.d(__webpack_exports__, {
+ __N_SSP: () => /* binding */ __N_SSP,
+ default: () => /* binding */ pages_image,
+ });
+
+ // EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]/node_modules/react/jsx-runtime.js
+ var jsx_runtime = __webpack_require__(5640);
+ // EXTERNAL MODULE: ./node_modules/.pnpm/next@[email protected][email protected][email protected]/node_modules/next/image.js
+ var next_image = __webpack_require__(3353);
+ var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
+ /* harmony default export */ const nextjs = {
+ src: "/_next/static/media/nextjs.cae0b805.png",
+ height: 1347,
+ width: 1626,
+ blurDataURL:
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAMAAAACh/xsAAAAD1BMVEX////x8fH6+vrb29vo6Oh8o70bAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAH0lEQVR4nGNgwARMjIyMjCAGCzMzMwsTRISJCcRABwAEcAAkLCQfgAAAAABJRU5ErkJggg==",
+ blurWidth: 8,
+ blurHeight: 7,
+ }; // ./pages/image.js
+ function ImagePage(props) {
+ return /*#__PURE__*/ (0, jsx_runtime.jsxs)(jsx_runtime.Fragment, {
+ children: [
+ /*#__PURE__*/ (0, jsx_runtime.jsx)("h1", {
+ children: "next/image example",
+ }),
+ /*#__PURE__*/ (0, jsx_runtime.jsx)(image_default(), {
+ src: nextjs,
+ placeholder: "blur",
+ }),
+ ],
+ });
+ }
+ var __N_SSP = true;
+ /* harmony default export */ const pages_image = ImagePage;
+
+ /***/
+ },
+
+ /***/ 3854: /***/ (
__unused_webpack_module,
exports,
__webpack_require__
@@ -34,9 +217,9 @@
return getImgProps;
},
});
- const _warnonce = __webpack_require__(5127);
- const _imageblursvg = __webpack_require__(4287);
- const _imageconfig = __webpack_require__(2795);
+ const _warnonce = __webpack_require__(3603);
+ const _imageblursvg = __webpack_require__(7835);
+ const _imageconfig = __webpack_require__(6799);
const VALID_LOADING_VALUES =
/* unused pure expression or super */ null && [
"lazy",
@@ -463,55 +646,69 @@
/***/
},
- /***/ 3444: /***/ (
+ /***/ 5526: /***/ (
__unused_webpack_module,
- __webpack_exports__,
+ exports,
__webpack_require__
) => {
"use strict";
- // ESM COMPAT FLAG
- __webpack_require__.r(__webpack_exports__);
- // EXPORTS
- __webpack_require__.d(__webpack_exports__, {
- __N_SSP: () => /* binding */ __N_SSP,
- default: () => /* binding */ pages_image,
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
});
-
- // EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]/node_modules/react/jsx-runtime.js
- var jsx_runtime = __webpack_require__(5640);
- // EXTERNAL MODULE: ./node_modules/.pnpm/next@[email protected][email protected][email protected]/node_modules/next/image.js
- var next_image = __webpack_require__(6359);
- var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
- /* harmony default export */ const nextjs = {
- src: "/_next/static/media/nextjs.cae0b805.png",
- height: 1347,
- width: 1626,
- blurDataURL:
- "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAMAAAACh/xsAAAAD1BMVEX////x8fH6+vrb29vo6Oh8o70bAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAH0lEQVR4nGNgwARMjIyMjCAGCzMzMwsTRISJCcRABwAEcAAkLCQfgAAAAABJRU5ErkJggg==",
- blurWidth: 8,
- blurHeight: 7,
- }; // ./pages/image.js
- function ImagePage(props) {
- return /*#__PURE__*/ (0, jsx_runtime.jsxs)(jsx_runtime.Fragment, {
- children: [
- /*#__PURE__*/ (0, jsx_runtime.jsx)("h1", {
- children: "next/image example",
- }),
- /*#__PURE__*/ (0, jsx_runtime.jsx)(image_default(), {
- src: nextjs,
- placeholder: "blur",
- }),
- ],
+ 0 && 0;
+ function _export(target, all) {
+ for (var name in all)
+ Object.defineProperty(target, name, {
+ enumerable: true,
+ get: all[name],
+ });
+ }
+ _export(exports, {
+ default: function () {
+ return _default;
+ },
+ getImageProps: function () {
+ return getImageProps;
+ },
+ });
+ const _interop_require_default = __webpack_require__(1532);
+ const _getimgprops = __webpack_require__(3854);
+ const _imagecomponent = __webpack_require__(8350);
+ const _imageloader = /*#__PURE__*/ _interop_require_default._(
+ __webpack_require__(1206)
+ );
+ function getImageProps(imgProps) {
+ const { props } = (0, _getimgprops.getImgProps)(imgProps, {
+ defaultLoader: _imageloader.default,
+ // This is replaced by webpack define plugin
+ imgConf: {
+ deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
+ imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
+ path: "/_next/image",
+ loader: "default",
+ dangerouslyAllowSVG: false,
+ unoptimized: false,
+ },
});
+ // Normally we don't care about undefined props because we pass to JSX,
+ // but this exported function could be used by the end user for anything
+ // so we delete undefined props to clean it up a little.
+ for (const [key, value] of Object.entries(props)) {
+ if (value === undefined) {
+ delete props[key];
+ }
+ }
+ return {
+ props,
+ };
}
- var __N_SSP = true;
- /* harmony default export */ const pages_image = ImagePage;
+ const _default = _imagecomponent.Image; //# sourceMappingURL=image-external.js.map
/***/
},
- /***/ 4287: /***/ (__unused_webpack_module, exports) => {
+ /***/ 7835: /***/ (__unused_webpack_module, exports) => {
"use strict";
/**
* A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -566,85 +763,7 @@
/***/
},
- /***/ 4985: /***/ (module, exports, __webpack_require__) => {
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "useMergedRef", {
- enumerable: true,
- get: function () {
- return useMergedRef;
- },
- });
- const _react = __webpack_require__(148);
- function useMergedRef(refA, refB) {
- const cleanupA = (0, _react.useRef)(null);
- const cleanupB = (0, _react.useRef)(null);
- // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.
- // (this happens often if the user doesn't pass a ref to Link/Form/Image)
- // But this can cause us to leak a cleanup-ref into user code (e.g. via `<Link legacyBehavior>`),
- // and the user might pass that ref into ref-merging library that doesn't support cleanup refs
- // (because it hasn't been updated for React 19)
- // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.
- // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.
- return (0, _react.useCallback)(
- (current) => {
- if (current === null) {
- const cleanupFnA = cleanupA.current;
- if (cleanupFnA) {
- cleanupA.current = null;
- cleanupFnA();
- }
- const cleanupFnB = cleanupB.current;
- if (cleanupFnB) {
- cleanupB.current = null;
- cleanupFnB();
- }
- } else {
- if (refA) {
- cleanupA.current = applyRef(refA, current);
- }
- if (refB) {
- cleanupB.current = applyRef(refB, current);
- }
- }
- },
- [refA, refB]
- );
- }
- function applyRef(refA, current) {
- if (typeof refA === "function") {
- const cleanup = refA(current);
- if (typeof cleanup === "function") {
- return cleanup;
- } else {
- return () => refA(null);
- }
- } else {
- refA.current = current;
- return () => {
- refA.current = null;
- };
- }
- }
- 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-merged-ref.js.map
-
- /***/
- },
-
- /***/ 5898: /***/ (module, exports, __webpack_require__) => {
+ /***/ 8350: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -666,17 +785,17 @@
__webpack_require__(7897)
);
const _head = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(5207)
+ __webpack_require__(8843)
);
- const _getimgprops = __webpack_require__(2514);
- const _imageconfig = __webpack_require__(2795);
- const _imageconfigcontextsharedruntime = __webpack_require__(2349);
- const _warnonce = __webpack_require__(5127);
- const _routercontextsharedruntime = __webpack_require__(3556);
+ const _getimgprops = __webpack_require__(3854);
+ const _imageconfig = __webpack_require__(6799);
+ const _imageconfigcontextsharedruntime = __webpack_require__(3905);
+ const _warnonce = __webpack_require__(3603);
+ const _routercontextsharedruntime = __webpack_require__(6712);
const _imageloader = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(5970)
+ __webpack_require__(1206)
);
- const _usemergedref = __webpack_require__(4985);
+ const _usemergedref = __webpack_require__(1765);
// This is replaced by webpack define plugin
const configEnv = {
deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -1002,132 +1121,13 @@
/***/
},
-
- /***/ 5970: /***/ (__unused_webpack_module, exports) => {
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "default", {
- enumerable: true,
- get: function () {
- return _default;
- },
- });
- const DEFAULT_Q = 75;
- function defaultLoader(param) {
- let { config, src, width, quality } = param;
- var _config_qualities;
- if (false) {
- }
- const q =
- quality ||
- ((_config_qualities = config.qualities) == null
- ? void 0
- : _config_qualities.reduce((prev, cur) =>
- Math.abs(cur - DEFAULT_Q) < Math.abs(prev - DEFAULT_Q)
- ? cur
- : prev
- )) ||
- DEFAULT_Q;
- 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
-
- /***/
- },
-
- /***/ 6359: /***/ (
- module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- module.exports = __webpack_require__(8986);
-
- /***/
- },
-
- /***/ 8986: /***/ (
- __unused_webpack_module,
- exports,
- __webpack_require__
- ) => {
- "use strict";
-
- 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, {
- default: function () {
- return _default;
- },
- getImageProps: function () {
- return getImageProps;
- },
- });
- const _interop_require_default = __webpack_require__(1532);
- const _getimgprops = __webpack_require__(2514);
- const _imagecomponent = __webpack_require__(5898);
- const _imageloader = /*#__PURE__*/ _interop_require_default._(
- __webpack_require__(5970)
- );
- function getImageProps(imgProps) {
- const { props } = (0, _getimgprops.getImgProps)(imgProps, {
- defaultLoader: _imageloader.default,
- // This is replaced by webpack define plugin
- imgConf: {
- deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
- imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
- path: "/_next/image",
- loader: "default",
- dangerouslyAllowSVG: false,
- unoptimized: false,
- },
- });
- // Normally we don't care about undefined props because we pass to JSX,
- // but this exported function could be used by the end user for anything
- // so we delete undefined props to clean it up a little.
- for (const [key, value] of Object.entries(props)) {
- if (value === undefined) {
- delete props[key];
- }
- }
- return {
- props,
- };
- }
- const _default = _imagecomponent.Image; //# sourceMappingURL=image-external.js.map
-
- /***/
- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(2198)
+ __webpack_exec__(264)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,7 +1,24 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3332],
{
- /***/ 9418: /***/ (
+ /***/ 8230: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/",
+ function () {
+ return __webpack_require__(8696);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
+
+ /***/ 8696: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -19,30 +36,13 @@
/***/
},
-
- /***/ 9532: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/",
- function () {
- return __webpack_require__(9418);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(9532)
+ __webpack_exec__(8230)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,125 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4672],
{
- /***/ 1854: /***/ (
- __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__(5640);
- /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(8770);
- /* 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;
-
- /***/
- },
-
- /***/ 3199: /***/ (__unused_webpack_module, exports) => {
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true,
- });
- Object.defineProperty(exports, "errorOnce", {
- enumerable: true,
- get: function () {
- return errorOnce;
- },
- });
- let errorOnce = (_) => {};
- if (false) {
- } //# sourceMappingURL=error-once.js.map
-
- /***/
- },
-
- /***/ 3568: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/link",
- function () {
- return __webpack_require__(1854);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
-
- /***/ 3857: /***/ (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__(4869);
- 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
-
- /***/
- },
-
- /***/ 3947: /***/ (module, exports, __webpack_require__) => {
+ /***/ 591: /***/ (module, exports, __webpack_require__) => {
"use strict";
/* __next_internal_client_entry_do_not_use__ cjs */
Object.defineProperty(exports, "__esModule", {
@@ -146,17 +28,17 @@
const _react = /*#__PURE__*/ _interop_require_wildcard._(
__webpack_require__(148)
);
- const _resolvehref = __webpack_require__(3161);
- const _islocalurl = __webpack_require__(2309);
- const _formaturl = __webpack_require__(3768);
- const _utils = __webpack_require__(5554);
- const _addlocale = __webpack_require__(7591);
- const _routercontextsharedruntime = __webpack_require__(3556);
- const _useintersection = __webpack_require__(5624);
- const _getdomainlocale = __webpack_require__(3857);
- const _addbasepath = __webpack_require__(4356);
- const _usemergedref = __webpack_require__(4985);
- const _erroronce = __webpack_require__(3199);
+ const _resolvehref = __webpack_require__(5837);
+ const _islocalurl = __webpack_require__(5953);
+ const _formaturl = __webpack_require__(6212);
+ const _utils = __webpack_require__(6950);
+ const _addlocale = __webpack_require__(6467);
+ const _routercontextsharedruntime = __webpack_require__(6712);
+ const _useintersection = __webpack_require__(9692);
+ const _getdomainlocale = __webpack_require__(6850);
+ const _addbasepath = __webpack_require__(4928);
+ const _usemergedref = __webpack_require__(1765);
+ const _erroronce = __webpack_require__(8659);
const prefetched = new Set();
function prefetch(router, href, as, options) {
if (false) {
@@ -545,7 +427,17 @@
/***/
},
- /***/ 4985: /***/ (module, exports, __webpack_require__) => {
+ /***/ 1148: /***/ (
+ module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ module.exports = __webpack_require__(591);
+
+ /***/
+ },
+
+ /***/ 1765: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -623,7 +515,125 @@
/***/
},
- /***/ 5624: /***/ (module, exports, __webpack_require__) => {
+ /***/ 5436: /***/ (
+ __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__(5640);
+ /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
+ __webpack_require__(1148);
+ /* 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;
+
+ /***/
+ },
+
+ /***/ 6850: /***/ (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__(6457);
+ 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
+
+ /***/
+ },
+
+ /***/ 8659: /***/ (__unused_webpack_module, exports) => {
+ "use strict";
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true,
+ });
+ Object.defineProperty(exports, "errorOnce", {
+ enumerable: true,
+ get: function () {
+ return errorOnce;
+ },
+ });
+ let errorOnce = (_) => {};
+ if (false) {
+ } //# sourceMappingURL=error-once.js.map
+
+ /***/
+ },
+
+ /***/ 9666: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/link",
+ function () {
+ return __webpack_require__(5436);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
+
+ /***/ 9692: /***/ (module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -636,7 +646,7 @@
},
});
const _react = __webpack_require__(148);
- const _requestidlecallback = __webpack_require__(3543);
+ const _requestidlecallback = __webpack_require__(315);
const hasIntersectionObserver =
typeof IntersectionObserver === "function";
const observers = new Map();
@@ -748,23 +758,13 @@
/***/
},
-
- /***/ 8770: /***/ (
- module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- module.exports = __webpack_require__(3947);
-
- /***/
- },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(3568)
+ __webpack_exec__(9666)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,7 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[188],
{
- /***/ 3618: /***/ (
+ /***/ 76: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -16,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(5640);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4631);
+ __webpack_require__(9413);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -36,17 +36,7 @@
/***/
},
- /***/ 4631: /***/ (
- module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- module.exports = __webpack_require__(7086);
-
- /***/
- },
-
- /***/ 7824: /***/ (
+ /***/ 1810: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
@@ -54,7 +44,7 @@
(window.__NEXT_P = window.__NEXT_P || []).push([
"/routerDirect",
function () {
- return __webpack_require__(3618);
+ return __webpack_require__(76);
},
]);
if (false) {
@@ -62,13 +52,23 @@
/***/
},
+
+ /***/ 9413: /***/ (
+ module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ module.exports = __webpack_require__(5282);
+
+ /***/
+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(7824)
+ __webpack_exec__(1810)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,24 +1,17 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[1209],
{
- /***/ 1984: /***/ (
- __unused_webpack_module,
+ /***/ 2227: /***/ (
+ module,
__unused_webpack_exports,
__webpack_require__
) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/script",
- function () {
- return __webpack_require__(5769);
- },
- ]);
- if (false) {
- }
+ module.exports = __webpack_require__(5984);
/***/
},
- /***/ 5769: /***/ (
+ /***/ 3043: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -33,7 +26,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(5640);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(8293);
+ __webpack_require__(2227);
/* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -66,12 +59,19 @@
/***/
},
- /***/ 8293: /***/ (
- module,
+ /***/ 3642: /***/ (
+ __unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
- module.exports = __webpack_require__(900);
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/script",
+ function () {
+ return __webpack_require__(3043);
+ },
+ ]);
+ if (false) {
+ }
/***/
},
@@ -81,7 +81,7 @@
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(1984)
+ __webpack_exec__(3642)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,34 +1,7 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[3263],
{
- /***/ 4631: /***/ (
- module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- module.exports = __webpack_require__(7086);
-
- /***/
- },
-
- /***/ 9216: /***/ (
- __unused_webpack_module,
- __unused_webpack_exports,
- __webpack_require__
- ) => {
- (window.__NEXT_P = window.__NEXT_P || []).push([
- "/withRouter",
- function () {
- return __webpack_require__(9803);
- },
- ]);
- if (false) {
- }
-
- /***/
- },
-
- /***/ 9803: /***/ (
+ /***/ 1089: /***/ (
__unused_webpack_module,
__webpack_exports__,
__webpack_require__
@@ -43,7 +16,7 @@
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__(5640);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
- __webpack_require__(4631);
+ __webpack_require__(9413);
/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
/*#__PURE__*/ __webpack_require__.n(
next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -61,13 +34,40 @@
/***/
},
+
+ /***/ 3962: /***/ (
+ __unused_webpack_module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ (window.__NEXT_P = window.__NEXT_P || []).push([
+ "/withRouter",
+ function () {
+ return __webpack_require__(1089);
+ },
+ ]);
+ if (false) {
+ }
+
+ /***/
+ },
+
+ /***/ 9413: /***/ (
+ module,
+ __unused_webpack_exports,
+ __webpack_require__
+ ) => {
+ module.exports = __webpack_require__(5282);
+
+ /***/
+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
/******/ var __webpack_exec__ = (moduleId) =>
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
- __webpack_exec__(9216)
+ __webpack_exec__(3962)
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Diff for 1733-HASH.js
Diff too large to display
Diff for 4719-HASH.js
Diff too large to display
Diff for main-HASH.js
Diff too large to display
Diff for main-app-HASH.js
@@ -1,64 +1,64 @@
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
[4977],
{
- /***/ 3505: /***/ () => {
- /* (ignored) */
- /***/
- },
-
- /***/ 5216: /***/ (
+ /***/ 1528: /***/ (
__unused_webpack_module,
__unused_webpack_exports,
__webpack_require__
) => {
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 8790, 23)
+ __webpack_require__.t.bind(__webpack_require__, 5356, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 7382, 23)
+ __webpack_require__.t.bind(__webpack_require__, 4304, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 9442, 23)
+ __webpack_require__.t.bind(__webpack_require__, 3152, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 94, 23)
+ __webpack_require__.t.bind(__webpack_require__, 9464, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 693, 23)
+ __webpack_require__.t.bind(__webpack_require__, 1675, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 2439, 23)
+ __webpack_require__.t.bind(__webpack_require__, 7601, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 5083, 23)
+ __webpack_require__.t.bind(__webpack_require__, 2553, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 8103, 23)
+ __webpack_require__.t.bind(__webpack_require__, 1925, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 5625, 23)
+ __webpack_require__.t.bind(__webpack_require__, 959, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 4247, 23)
+ __webpack_require__.t.bind(__webpack_require__, 9389, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 5602, 23)
+ __webpack_require__.t.bind(__webpack_require__, 8628, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 227, 23)
+ __webpack_require__.t.bind(__webpack_require__, 3077, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 6734, 23)
+ __webpack_require__.t.bind(__webpack_require__, 7812, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.t.bind(__webpack_require__, 4120, 23)
+ __webpack_require__.t.bind(__webpack_require__, 5774, 23)
);
Promise.resolve(/* import() eager */).then(
- __webpack_require__.bind(__webpack_require__, 6104)
+ __webpack_require__.bind(__webpack_require__, 750)
);
/***/
},
+
+ /***/ 3579: /***/ () => {
+ /* (ignored) */
+ /***/
+ },
},
/******/ (__webpack_require__) => {
// webpackRuntimeModules
@@ -66,8 +66,8 @@
__webpack_require__((__webpack_require__.s = moduleId));
/******/ __webpack_require__.O(
0,
- [1305, 1733],
- () => (__webpack_exec__(9679), __webpack_exec__(5216))
+ [9910, 965],
+ () => (__webpack_exec__(1389), __webpack_exec__(1528))
);
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
Failing test suitesCommit: e946ad6
Expand output● app dir - next/font › app dir - next-font › Dev errors › should recover on font loader error
Read more about building and testing Next.js in contributing.md. |
93f54d4
to
975b9cb
Compare
This is the basis of the Rust side of things to report location information with panics. To do: - [ ] Automated test Co-authored-by: Benjamin Woodruff <[email protected]>
8c5625c
to
e946ad6
Compare
LAST_ERROR_LOCATION.with_borrow_mut(|loc| { | ||
*loc = info.location().map(|l| l.to_string()); | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- I'd like this bit (not the
set_hook
call, but everything in it) to be a function inturbo_tasks
. This logic is shared with the unit test, and could also be used by turbopack-cli in the future. - If the helper function is public, the thread local doesn't need to be (that's just an implementation detail).
LazyLock::new(|| Regex::new(r"panics\.rs:\d+:\d+$").unwrap()); | ||
|
||
#[tokio::test] | ||
async fn test_panics_include_location() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is okay (I don't see a better way to do this), but FYI: Tests (unless you're using nextest) can run in parallel across multiple threads in the same process, so setting panic hooks is potentially risky in that it can interfere with other tests.
Trying to restore the hook afterwards doesn't make sense when tests are running in parallel... So maybe remove the logic to restore the hook, and just add a comment that we're assuming that we're the only test setting a hook?
use turbo_tasks_malloc::TurboMalloc; | ||
|
||
set_hook(Box::new(|info| { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The common convention seems to be to take the existing hook, call set_hook
and then in the new hook, call the old hook after doing your stuff.
https://doc.rust-lang.org/stable/std/panic/fn.update_hook.html formalizes this in a nicer atomic API, but that's behind a nightly feature.
set_hook(Box::new(|info| { | ||
LAST_ERROR_LOCATION.with_borrow_mut(|loc| { | ||
*loc = info.location().map(|l| l.to_string()); | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should also call prev_hook
?
// Structurally and functionally similar to Cow<&'static, str> but explicitly notes the importance | ||
// of non-static strings potentially containing PII. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some sentence referring to telemetry would be useful.
// Structurally and functionally similar to Cow<&'static, str> but explicitly notes the importance | |
// of non-static strings potentially containing PII. | |
/// Structurally and functionally similar to Cow<&'static, str> but explicitly notes the importance | |
/// of non-static strings potentially containing PII. | |
/// | |
/// We want to avoid accidental collection of PII when logging errors to anonymized telemetry. |
pub struct TurboTasksPanic { | ||
pub message: TurboTasksExecutionErrorMessage, | ||
pub location: Option<String>, | ||
} | ||
|
||
impl Display for TurboTasksPanic { | ||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||
write!(f, "{}", self.message) | ||
} | ||
} | ||
|
||
impl std::error::Error for TurboTasksPanic {} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See my previous comment about using this as a source...
If you do decide to return this as a source from TurboTasksExecutionError
, then this should be an Error
. If you don't do that and you just print the message in TurboTasksExecutionError
, then this probably doesn't need to a real Error
type.
Some(s) => TurboTasksExecutionErrorMessage::NonPIISafe(s.clone()), | ||
None => { | ||
let error_message = err | ||
.downcast_ref::<Box<dyn Error + 'static>>() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this work?
.downcast_ref::<Box<dyn Error + 'static>>() | |
.downcast_ref::<dyn Display>() |
I think calling downcast_ref::<Box<_>>
is going to expect that the error is Box<Box<_>>
, which isn't what you want. If you really needed an owned Box
for some reason, you'd need to use Any::downcast
instead of Any::downcast_ref
: https://doc.rust-lang.org/std/any/trait.Any.html#method.downcast
You don't really need an Error
... It seems like you just need something you can call to_string()
on.
Ok(Poll::Ready(r)) => { | ||
let memory_usage = this.allocations.saturating_sub(*this.deallocations); | ||
Poll::Ready((r, *this.duration, memory_usage)) | ||
Poll::Ready((Ok(r), *this.duration, memory_usage)) | ||
} | ||
Poll::Pending => Poll::Pending, | ||
Ok(Poll::Pending) => Poll::Pending, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not really your fault, but this could be rewritten a little cleaner with the ready!()
macro: https://doc.rust-lang.org/std/task/macro.ready.html
/// The location of the last error that occurred in the current thread. | ||
/// | ||
/// Used for debugging when errors are sent to telemetry | ||
pub static LAST_ERROR_LOCATION: RefCell<Option<String>> = const { RefCell::new(None) }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the const
block actually needed here?
pub static LAST_ERROR_LOCATION: RefCell<Option<String>> = const { RefCell::new(None) }; | |
pub static LAST_ERROR_LOCATION: RefCell<Option<String>> = RefCell::new(None); |
Err(_) => None, | ||
}, | ||
}); | ||
let (result, _duration, _memory_usage) = CaptureFuture::new(future).await; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm... Looking back at this code, I'm wondering if I should make a lightweight version of CaptureFuture
for local tasks that doesn't bother capturing duration or memory usage...
This is the basis of the Rust side of things to report location information with panics.
To do: