Update release stats workflow #17580
Merged
+5
−3
Conversation
Stats from current releaseDefault Server Mode (Increase detected
|
| vercel/next.js canary v9.5.3 | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| buildDuration | 12s | 12.5s | |
| nodeModulesSize | 63 MB | 63.1 MB |
Page Load Tests Overall decrease ⚠️
| vercel/next.js canary v9.5.3 | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| / failed reqs | 0 | 0 | ✓ |
| / total time (seconds) | 2.229 | 2.255 | |
| / avg req/sec | 1121.43 | 1108.62 | |
| /error-in-render failed reqs | 0 | 0 | ✓ |
| /error-in-render total time (seconds) | 1.193 | 1.253 | |
| /error-in-render avg req/sec | 2095.43 | 1995.28 |
Client Bundles (main, webpack, commons) Overall increase ⚠️
| vercel/next.js canary v9.5.3 | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..9ff9.js gzip | 10.3 kB | 10.9 kB | |
| framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
| main-b338f5a..3500.js gzip | 7.31 kB | 7.17 kB | -140 B |
| webpack-e067..f178.js gzip | 751 B | 751 B | ✓ |
| Overall change | 57.3 kB | 57.8 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
| vercel/next.js canary v9.5.3 | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..dule.js gzip | 6.13 kB | 6.77 kB | |
| framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
| main-830c506..dule.js gzip | 6.37 kB | 6.24 kB | -129 B |
| webpack-07c5..dule.js gzip | 751 B | 751 B | ✓ |
| Overall change | 52.2 kB | 52.7 kB |
Legacy Client Bundles (polyfills)
| vercel/next.js canary v9.5.3 | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| polyfills-4b..e242.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages Overall increase ⚠️
| vercel/next.js canary v9.5.3 | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-9a0b9e1..b37e.js gzip | 1.28 kB | 1.28 kB | ✓ |
| _error-ed1b0..8fbd.js gzip | 3.44 kB | 3.44 kB | ✓ |
| hooks-89731c..c609.js gzip | 887 B | 887 B | ✓ |
| index-17468f..5d83.js gzip | 227 B | 227 B | ✓ |
| link-ae98065..267e.js gzip | 1.29 kB | 1.3 kB | |
| routerDirect..924c.js gzip | 284 B | 284 B | ✓ |
| withRouter-7..c13d.js gzip | 284 B | 284 B | ✓ |
| Overall change | 7.69 kB | 7.71 kB |
Client Pages Modern Overall increase ⚠️
| vercel/next.js canary v9.5.3 | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-75d3a82..dule.js gzip | 625 B | 625 B | ✓ |
| _error-4469a..dule.js gzip | 2.29 kB | 2.29 kB | ✓ |
| hooks-cbf13f..dule.js gzip | 387 B | 387 B | ✓ |
| index-b9a643..dule.js gzip | 226 B | 226 B | ✓ |
| link-cb244c4..dule.js gzip | 1.26 kB | 1.26 kB | |
| routerDirect..dule.js gzip | 284 B | 284 B | ✓ |
| withRouter-f..dule.js gzip | 282 B | 282 B | ✓ |
| Overall change | 5.35 kB | 5.36 kB |
Client Build Manifests Overall decrease ✓
| vercel/next.js canary v9.5.3 | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 323 B | 322 B | -1 B |
| _buildManife..dule.js gzip | 329 B | 329 B | ✓ |
| Overall change | 652 B | 651 B | -1 B |
Rendered Page Sizes Overall increase ⚠️
| vercel/next.js canary v9.5.3 | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| index.html gzip | 971 B | 1 kB | |
| link.html gzip | 976 B | 1.01 kB | |
| withRouter.html gzip | 965 B | 996 B | |
| Overall change | 2.91 kB | 3.01 kB |
Diffs
Diff for _buildManifest.js
@@ -7,7 +7,7 @@ self.__BUILD_MANIFEST = {
"/hooks": [
"static\u002Fchunks\u002Fpages\u002Fhooks-8001dc76075832ee8949.js"
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-46fd48c0b73b2f2d75a4.js"],
+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-32658e75d53af2daa2e0.js"],
"/routerDirect": [
"static\u002Fchunks\u002Fpages\u002FrouterDirect-2e9bfd441bd88cd3382e.js"
],Diff for _buildManifest.module.js
@@ -10,7 +10,7 @@ self.__BUILD_MANIFEST = {
"static\u002Fchunks\u002Fpages\u002Fhooks-56fa58a6f0993d7d36d7.module.js"
],
"/link": [
- "static\u002Fchunks\u002Fpages\u002Flink-e2f1e0e7ed02569239da.module.js"
+ "static\u002Fchunks\u002Fpages\u002Flink-cb038f0ac2e648ce4861.module.js"
],
"/routerDirect": [
"static\u002Fchunks\u002Fpages\u002FrouterDirect-368af3dfef3c9cd99dc3.module.js"Diff for link-46fd48c..b2f2d75a4.js
@@ -216,12 +216,16 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
var _react$default$useMem = _react["default"].useMemo(
function() {
- var resolvedHref = (0, _router.resolveHref)(pathname, props.href);
+ var _ref = (0, _router.resolveHref)(pathname, props.href, true),
+ _ref2 = _slicedToArray(_ref, 2),
+ resolvedHref = _ref2[0],
+ resolvedAs = _ref2[1];
+
return {
href: resolvedHref,
as: props.as
? (0, _router.resolveHref)(pathname, props.as)
- : resolvedHref
+ : resolvedAs || resolvedHref
};
},
[pathname, props.href, props.as]Diff for link-e2f1e0e..da.module.js
@@ -207,12 +207,16 @@
var pathname = (router && router.pathname) || "/";
var { href, as } = _react.default.useMemo(() => {
- var resolvedHref = (0, _router.resolveHref)(pathname, props.href);
+ var [resolvedHref, resolvedAs] = (0, _router.resolveHref)(
+ pathname,
+ props.href,
+ true
+ );
return {
href: resolvedHref,
as: props.as
? (0, _router.resolveHref)(pathname, props.as)
- : resolvedHref
+ : resolvedAs || resolvedHref
};
}, [pathname, props.href, props.as]);Diff for 677f882d2ed8..7000fca82.js
@@ -145,6 +145,18 @@
return query;
}
+ function stringifyUrlQueryParam(param) {
+ if (
+ typeof param === "string" ||
+ (typeof param === "number" && !isNaN(param)) ||
+ typeof param === "boolean"
+ ) {
+ return String(param);
+ } else {
+ return "";
+ }
+ }
+
function urlQueryToSearchParams(urlQuery) {
var result = new URLSearchParams();
Object.entries(urlQuery).forEach(function(_ref) {
@@ -154,10 +166,10 @@
if (Array.isArray(value)) {
value.forEach(function(item) {
- return result.append(key, item);
+ return result.append(key, stringifyUrlQueryParam(item));
});
} else {
- result.set(key, value);
+ result.set(key, stringifyUrlQueryParam(value));
}
});
return result;
@@ -683,6 +695,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
exports.addBasePath = addBasePath;
exports.delBasePath = delBasePath;
exports.isLocalURL = isLocalURL;
+ exports.interpolateAs = interpolateAs;
exports.resolveHref = resolveHref;
exports.markLoadingError = markLoadingError;
exports["default"] = void 0;
@@ -709,6 +722,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _escapePathDelimiters = _interopRequireDefault(
+ __webpack_require__("fcRV")
+ );
+
function _interopRequireDefault(obj) {
return obj && obj.__esModule
? obj
@@ -761,12 +778,75 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
return false;
}
}
+
+ function interpolateAs(route, asPathname, query) {
+ var interpolatedRoute = "";
+ var dynamicRegex = (0, _routeRegex.getRouteRegex)(route);
+ var dynamicGroups = dynamicRegex.groups;
+ var dynamicMatches = // Try to match the dynamic route against the asPath
+ (asPathname !== route
+ ? (0, _routeMatcher.getRouteMatcher)(dynamicRegex)(asPathname)
+ : "") || // Fall back to reading the values from the href
+ // TODO: should this take priority; also need to change in the router.
+ query;
+ interpolatedRoute = route;
+ var params = Object.keys(dynamicGroups);
+
+ if (
+ !params.every(function(param) {
+ var value = dynamicMatches[param] || "";
+ var _dynamicGroups$param = dynamicGroups[param],
+ repeat = _dynamicGroups$param.repeat,
+ optional = _dynamicGroups$param.optional; // support single-level catch-all
+ // TODO: more robust handling for user-error (passing `/`)
+
+ var replaced = "[".concat(repeat ? "..." : "").concat(param, "]");
+
+ if (optional) {
+ replaced = ""
+ .concat(!value ? "/" : "", "[")
+ .concat(replaced, "]");
+ }
+
+ if (repeat && !Array.isArray(value)) value = [value];
+ return (
+ (optional || param in dynamicMatches) && // Interpolate group into data URL if present
+ (interpolatedRoute =
+ interpolatedRoute.replace(
+ replaced,
+ repeat
+ ? value.map(_escapePathDelimiters["default"]).join("/")
+ : (0, _escapePathDelimiters["default"])(value)
+ ) || "/")
+ );
+ })
+ ) {
+ interpolatedRoute = ""; // did not satisfy all requirements
+ // n.b. We ignore this error because we handle warning for this case in
+ // development in the `<Link>` component directly.
+ }
+
+ return {
+ params: params,
+ result: interpolatedRoute
+ };
+ }
+
+ function omitParmsFromQuery(query, params) {
+ var filteredQuery = {};
+ Object.keys(query).forEach(function(key) {
+ if (!params.includes(key)) {
+ filteredQuery[key] = query[key];
+ }
+ });
+ return filteredQuery;
+ }
/**
* Resolves a given hyperlink with a certain router state (basePath not included).
* Preserves absolute urls.
*/
- function resolveHref(currentPath, href) {
+ function resolveHref(currentPath, href, resolveAs) {
// we use a dummy base url for relative urls
var base = new URL(currentPath, "http://n");
var urlAsString =
@@ -779,13 +859,44 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
finalUrl.pathname = (0,
_normalizeTrailingSlash.normalizePathTrailingSlash)(
finalUrl.pathname
- ); // if the origin didn't change, it means we received a relative href
+ );
+ var interpolatedAs = "";
- return finalUrl.origin === base.origin
- ? finalUrl.href.slice(finalUrl.origin.length)
- : finalUrl.href;
+ if (
+ (0, _isDynamic.isDynamicRoute)(finalUrl.pathname) &&
+ finalUrl.searchParams &&
+ resolveAs
+ ) {
+ var query = (0, _querystring.searchParamsToUrlQuery)(
+ finalUrl.searchParams
+ );
+
+ var _interpolateAs = interpolateAs(
+ finalUrl.pathname,
+ finalUrl.pathname,
+ query
+ ),
+ result = _interpolateAs.result,
+ params = _interpolateAs.params;
+
+ if (result) {
+ interpolatedAs = (0, _utils.formatWithValidation)({
+ pathname: result,
+ hash: finalUrl.hash,
+ query: omitParmsFromQuery(query, params)
+ });
+ }
+ } // if the origin didn't change, it means we received a relative href
+
+ var resolvedHref =
+ finalUrl.origin === base.origin
+ ? finalUrl.href.slice(finalUrl.origin.length)
+ : finalUrl.href;
+ return resolveAs
+ ? [resolvedHref, interpolatedAs || resolvedHref]
+ : resolvedHref;
} catch (_) {
- return urlAsString;
+ return resolveAs ? [urlAsString] : urlAsString;
}
}
@@ -1104,19 +1215,26 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
parsed,
_parsed,
pathname,
- searchParams,
query,
route,
_options$shallow,
shallow,
resolvedAs,
- _ref3,
+ potentialHref,
+ parsedAs,
asPathname,
routeRegex,
routeMatch,
+ shouldInterpolate,
+ interpolatedAs,
missingParams,
routeInfo,
error,
+ props,
+ __N_SSG,
+ __N_SSP,
+ destination,
+ parsedHref,
appComp;
return _regeneratorRuntime.wrap(
@@ -1185,17 +1303,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
);
(_parsed = parsed),
(pathname = _parsed.pathname),
- (searchParams = _parsed.searchParams);
+ (query = _parsed.query);
parsed = this._resolveHref(parsed, pages);
if (parsed.pathname !== pathname) {
pathname = parsed.pathname;
url = (0, _utils.formatWithValidation)(parsed);
- }
-
- query = (0, _querystring.searchParamsToUrlQuery)(
- searchParams
- ); // url and as should always be prefixed with basePath by this
+ } // url and as should always be prefixed with basePath by this
// point by either next/link or router.push/replace so strip the
// basePath from the pathname to match the pages dir 1-to-1
@@ -1233,21 +1347,30 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
resolvedAs = delBasePath(resolvedAs);
if (!(0, _isDynamic.isDynamicRoute)(route)) {
- _context.next = 47;
+ _context.next = 49;
break;
}
- (_ref3 = (0, _parseRelativeUrl.parseRelativeUrl)(
+ parsedAs = (0, _parseRelativeUrl.parseRelativeUrl)(
resolvedAs
- )),
- (asPathname = _ref3.pathname);
+ );
+ asPathname = parsedAs.pathname;
routeRegex = (0, _routeRegex.getRouteRegex)(route);
routeMatch = (0, _routeMatcher.getRouteMatcher)(
routeRegex
)(asPathname);
+ shouldInterpolate = route === asPathname;
+ interpolatedAs = shouldInterpolate
+ ? interpolateAs(route, asPathname, query)
+ : {};
- if (routeMatch) {
- _context.next = 46;
+ if (
+ !(
+ !routeMatch ||
+ (shouldInterpolate && !interpolatedAs.result)
+ )
+ ) {
+ _context.next = 48;
break;
}
@@ -1258,7 +1381,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
});
if (!(missingParams.length > 0)) {
- _context.next = 44;
+ _context.next = 46;
break;
}
@@ -1266,27 +1389,53 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
}
throw new Error(
- "The provided `as` value ("
- .concat(
- asPathname,
- ") is incompatible with the `href` value ("
+ (shouldInterpolate
+ ? "The provided `href` ("
+ .concat(
+ url,
+ ") value is missing query values ("
+ )
+ .concat(
+ missingParams.join(", "),
+ ") to be interpolated properly. "
+ )
+ : "The provided `as` value ("
+ .concat(
+ asPathname,
+ ") is incompatible with the `href` value ("
+ )
+ .concat(route, "). ")) +
+ "Read more: https://err.sh/vercel/next.js/".concat(
+ shouldInterpolate
+ ? "href-interpolation-failed"
+ : "incompatible-href-as"
)
- .concat(route, "). ") +
- "Read more: https://err.sh/vercel/next.js/incompatible-href-as"
);
- case 44:
- _context.next = 47;
+ case 46:
+ _context.next = 49;
break;
- case 46:
- // Merge params into `query`, overwriting any specified in search
- Object.assign(query, routeMatch);
+ case 48:
+ if (shouldInterpolate) {
+ as = (0, _utils.formatWithValidation)(
+ Object.assign({}, parsedAs, {
+ pathname: interpolatedAs.result,
+ query: omitParmsFromQuery(
+ query,
+ interpolatedAs.params
+ )
+ })
+ );
+ } else {
+ // Merge params into `query`, overwriting any specified in search
+ Object.assign(query, routeMatch);
+ }
- case 47:
+ case 49:
Router.events.emit("routeChangeStart", as);
- _context.prev = 48;
- _context.next = 51;
+ _context.prev = 50;
+ _context.next = 53;
return this.getRouteInfo(
route,
pathname,
@@ -1295,16 +1444,69 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
shallow
);
- case 51:
+ case 53:
routeInfo = _context.sent;
- error = routeInfo.error;
+ (error = routeInfo.error),
+ (props = routeInfo.props),
+ (__N_SSG = routeInfo.__N_SSG),
+ (__N_SSP = routeInfo.__N_SSP); // handle redirect on client-transition
+
+ if (
+ !(
+ (__N_SSG || __N_SSP) &&
+ props &&
+ props.pageProps &&
+ props.pageProps.__N_REDIRECT
+ )
+ ) {
+ _context.next = 64;
+ break;
+ }
+
+ destination = props.pageProps.__N_REDIRECT; // check if destination is internal (resolves to a page) and attempt
+ // client-navigation if it is falling back to hard navigation if
+ // it's not
+
+ if (!destination.startsWith("/")) {
+ _context.next = 62;
+ break;
+ }
+
+ parsedHref = (0,
+ _parseRelativeUrl.parseRelativeUrl)(destination);
+
+ this._resolveHref(parsedHref, pages);
+
+ if (!pages.includes(parsedHref.pathname)) {
+ _context.next = 62;
+ break;
+ }
+
+ return _context.abrupt(
+ "return",
+ this.change(
+ "replaceState",
+ destination,
+ destination,
+ options
+ )
+ );
+
+ case 62:
+ window.location.href = destination;
+ return _context.abrupt(
+ "return",
+ new Promise(function() {})
+ );
+
+ case 64:
Router.events.emit("beforeHistoryChange", as);
this.changeState(method, url, as, options);
if (false) {
}
- _context.next = 58;
+ _context.next = 69;
return this.set(
route,
pathname,
@@ -1316,9 +1518,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
else throw e;
});
- case 58:
+ case 69:
if (!error) {
- _context.next = 61;
+ _context.next = 72;
break;
}
@@ -1329,28 +1531,28 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
);
throw error;
- case 61:
+ case 72:
if (false) {
}
Router.events.emit("routeChangeComplete", as);
return _context.abrupt("return", true);
- case 66:
- _context.prev = 66;
- _context.t0 = _context["catch"](48);
+ case 77:
+ _context.prev = 77;
+ _context.t0 = _context["catch"](50);
if (!_context.t0.cancelled) {
- _context.next = 70;
+ _context.next = 81;
break;
}
return _context.abrupt("return", false);
- case 70:
+ case 81:
throw _context.t0;
- case 71:
+ case 82:
case "end":
return _context.stop();
}
@@ -1358,7 +1560,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
},
_callee,
this,
- [[48, 66]]
+ [[50, 77]]
);
})
);
@@ -1784,9 +1986,16 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
{
key: "_resolveHref",
value: function _resolveHref(parsedHref, pages) {
+ var applyBasePath =
+ arguments.length > 2 && arguments[2] !== undefined
+ ? arguments[2]
+ : true;
var pathname = parsedHref.pathname;
- var cleanPathname = (0, _denormalizePagePath.denormalizePagePath)(
- delBasePath(pathname)
+ var cleanPathname = (0,
+ _normalizeTrailingSlash.removePathTrailingSlash)(
+ (0, _denormalizePagePath.denormalizePagePath)(
+ applyBasePath ? delBasePath(pathname) : pathname
+ )
);
if (cleanPathname === "/404" || cleanPathname === "/_error") {
@@ -1800,7 +2009,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
(0, _isDynamic.isDynamicRoute)(page) &&
(0, _routeRegex.getRouteRegex)(page).re.test(cleanPathname)
) {
- parsedHref.pathname = addBasePath(page);
+ parsedHref.pathname = applyBasePath
+ ? addBasePath(page)
+ : page;
return true;
}
});
@@ -2060,6 +2271,21 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
+ /***/ fcRV: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports["default"] = escapePathDelimiters; // escape delimiters used by path-to-regexp
+
+ function escapePathDelimiters(segment) {
+ return segment.replace(/[/#?]/g, function(_char) {
+ return encodeURIComponent(_char);
+ });
+ }
+
+ /***/
+ },
+
/***/ "g/15": /***/ function(module, exports, __webpack_require__) {
"use strict";
@@ -2141,8 +2367,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
}
if (
- !((_App$prototype = App.prototype) === null ||
- _App$prototype === void 0
+ !((_App$prototype = App.prototype) == null
? void 0
: _App$prototype.getInitialProps)
) {
@@ -2317,6 +2542,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _utils = __webpack_require__("g/15");
+ var _querystring = __webpack_require__("3WeD");
+
var DUMMY_BASE = new URL(
false ? undefined : (0, _utils.getLocationOrigin)()
);
@@ -2348,7 +2575,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
return {
pathname: pathname,
- searchParams: searchParams,
+ query: (0, _querystring.searchParamsToUrlQuery)(searchParams),
search: search,
hash: hash,
href: href.slice(DUMMY_BASE.origin.length)Diff for 677f882d2ed8..87.module.js
@@ -143,15 +143,29 @@
return query;
}
+ function stringifyUrlQueryParam(param) {
+ if (
+ typeof param === "string" ||
+ (typeof param === "number" && !isNaN(param)) ||
+ typeof param === "boolean"
+ ) {
+ return String(param);
+ } else {
+ return "";
+ }
+ }
+
function urlQueryToSearchParams(urlQuery) {
var result = new URLSearchParams();
Object.entries(urlQuery).forEach(_ref => {
var [key, value] = _ref;
if (Array.isArray(value)) {
- value.forEach(item => result.append(key, item));
+ value.forEach(item =>
+ result.append(key, stringifyUrlQueryParam(item))
+ );
} else {
- result.set(key, value);
+ result.set(key, stringifyUrlQueryParam(value));
}
});
return result;
@@ -542,6 +556,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
exports.addBasePath = addBasePath;
exports.delBasePath = delBasePath;
exports.isLocalURL = isLocalURL;
+ exports.interpolateAs = interpolateAs;
exports.resolveHref = resolveHref;
exports.markLoadingError = markLoadingError;
exports.default = void 0;
@@ -568,6 +583,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _routeRegex = __webpack_require__("YTqd");
+ var _escapePathDelimiters = _interopRequireDefault(
+ __webpack_require__("fcRV")
+ );
+
function _interopRequireDefault(obj) {
return obj && obj.__esModule
? obj
@@ -620,12 +639,73 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
return false;
}
}
+
+ function interpolateAs(route, asPathname, query) {
+ var interpolatedRoute = "";
+ var dynamicRegex = (0, _routeRegex.getRouteRegex)(route);
+ var dynamicGroups = dynamicRegex.groups;
+ var dynamicMatches = // Try to match the dynamic route against the asPath
+ (asPathname !== route
+ ? (0, _routeMatcher.getRouteMatcher)(dynamicRegex)(asPathname)
+ : "") || // Fall back to reading the values from the href
+ // TODO: should this take priority; also need to change in the router.
+ query;
+ interpolatedRoute = route;
+ var params = Object.keys(dynamicGroups);
+
+ if (
+ !params.every(param => {
+ var value = dynamicMatches[param] || "";
+ var { repeat, optional } = dynamicGroups[param]; // support single-level catch-all
+ // TODO: more robust handling for user-error (passing `/`)
+
+ var replaced = "[".concat(repeat ? "..." : "").concat(param, "]");
+
+ if (optional) {
+ replaced = ""
+ .concat(!value ? "/" : "", "[")
+ .concat(replaced, "]");
+ }
+
+ if (repeat && !Array.isArray(value)) value = [value];
+ return (
+ (optional || param in dynamicMatches) && // Interpolate group into data URL if present
+ (interpolatedRoute =
+ interpolatedRoute.replace(
+ replaced,
+ repeat
+ ? value.map(_escapePathDelimiters.default).join("/")
+ : (0, _escapePathDelimiters.default)(value)
+ ) || "/")
+ );
+ })
+ ) {
+ interpolatedRoute = ""; // did not satisfy all requirements
+ // n.b. We ignore this error because we handle warning for this case in
+ // development in the `<Link>` component directly.
+ }
+
+ return {
+ params,
+ result: interpolatedRoute
+ };
+ }
+
+ function omitParmsFromQuery(query, params) {
+ var filteredQuery = {};
+ Object.keys(query).forEach(key => {
+ if (!params.includes(key)) {
+ filteredQuery[key] = query[key];
+ }
+ });
+ return filteredQuery;
+ }
/**
* Resolves a given hyperlink with a certain router state (basePath not included).
* Preserves absolute urls.
*/
- function resolveHref(currentPath, href) {
+ function resolveHref(currentPath, href, resolveAs) {
// we use a dummy base url for relative urls
var base = new URL(currentPath, "http://n");
var urlAsString =
@@ -638,13 +718,41 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
finalUrl.pathname = (0,
_normalizeTrailingSlash.normalizePathTrailingSlash)(
finalUrl.pathname
- ); // if the origin didn't change, it means we received a relative href
+ );
+ var interpolatedAs = "";
+
+ if (
+ (0, _isDynamic.isDynamicRoute)(finalUrl.pathname) &&
+ finalUrl.searchParams &&
+ resolveAs
+ ) {
+ var query = (0, _querystring.searchParamsToUrlQuery)(
+ finalUrl.searchParams
+ );
+ var { result, params } = interpolateAs(
+ finalUrl.pathname,
+ finalUrl.pathname,
+ query
+ );
- return finalUrl.origin === base.origin
- ? finalUrl.href.slice(finalUrl.origin.length)
- : finalUrl.href;
+ if (result) {
+ interpolatedAs = (0, _utils.formatWithValidation)({
+ pathname: result,
+ hash: finalUrl.hash,
+ query: omitParmsFromQuery(query, params)
+ });
+ }
+ } // if the origin didn't change, it means we received a relative href
+
+ var resolvedHref =
+ finalUrl.origin === base.origin
+ ? finalUrl.href.slice(finalUrl.origin.length)
+ : finalUrl.href;
+ return resolveAs
+ ? [resolvedHref, interpolatedAs || resolvedHref]
+ : resolvedHref;
} catch (_) {
- return urlAsString;
+ return resolveAs ? [urlAsString] : urlAsString;
}
}
@@ -959,15 +1067,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var { __rewrites: rewrites } = await this.pageLoader
.promisedBuildManifest;
var parsed = (0, _parseRelativeUrl.parseRelativeUrl)(url);
- var { pathname, searchParams } = parsed;
+ var { pathname, query } = parsed;
parsed = this._resolveHref(parsed, pages);
if (parsed.pathname !== pathname) {
pathname = parsed.pathname;
url = (0, _utils.formatWithValidation)(parsed);
- }
-
- var query = (0, _querystring.searchParamsToUrlQuery)(searchParams); // url and as should always be prefixed with basePath by this
+ } // url and as should always be prefixed with basePath by this
// point by either next/link or router.push/replace so strip the
// basePath from the pathname to match the pages dir 1-to-1
@@ -994,19 +1100,24 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var resolvedAs = as;
if (false) {
+ var potentialHref;
}
resolvedAs = delBasePath(resolvedAs);
if ((0, _isDynamic.isDynamicRoute)(route)) {
- var { pathname: asPathname } = (0,
- _parseRelativeUrl.parseRelativeUrl)(resolvedAs);
+ var parsedAs = (0, _parseRelativeUrl.parseRelativeUrl)(resolvedAs);
+ var asPathname = parsedAs.pathname;
var routeRegex = (0, _routeRegex.getRouteRegex)(route);
var routeMatch = (0, _routeMatcher.getRouteMatcher)(routeRegex)(
asPathname
);
+ var shouldInterpolate = route === asPathname;
+ var interpolatedAs = shouldInterpolate
+ ? interpolateAs(route, asPathname, query)
+ : {};
- if (!routeMatch) {
+ if (!routeMatch || (shouldInterpolate && !interpolatedAs.result)) {
var missingParams = Object.keys(routeRegex.groups).filter(
param => !query[param]
);
@@ -1016,15 +1127,33 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
}
throw new Error(
- "The provided `as` value ("
- .concat(
- asPathname,
- ") is incompatible with the `href` value ("
+ (shouldInterpolate
+ ? "The provided `href` ("
+ .concat(url, ") value is missing query values (")
+ .concat(
+ missingParams.join(", "),
+ ") to be interpolated properly. "
+ )
+ : "The provided `as` value ("
+ .concat(
+ asPathname,
+ ") is incompatible with the `href` value ("
+ )
+ .concat(route, "). ")) +
+ "Read more: https://err.sh/vercel/next.js/".concat(
+ shouldInterpolate
+ ? "href-interpolation-failed"
+ : "incompatible-href-as"
)
- .concat(route, "). ") +
- "Read more: https://err.sh/vercel/next.js/incompatible-href-as"
);
}
+ } else if (shouldInterpolate) {
+ as = (0, _utils.formatWithValidation)(
+ Object.assign({}, parsedAs, {
+ pathname: interpolatedAs.result,
+ query: omitParmsFromQuery(query, interpolatedAs.params)
+ })
+ );
} else {
// Merge params into `query`, overwriting any specified in search
Object.assign(query, routeMatch);
@@ -1041,7 +1170,39 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
as,
shallow
);
- var { error } = routeInfo;
+ var { error, props, __N_SSG, __N_SSP } = routeInfo; // handle redirect on client-transition
+
+ if (
+ (__N_SSG || __N_SSP) &&
+ props &&
+ props.pageProps &&
+ props.pageProps.__N_REDIRECT
+ ) {
+ var destination = props.pageProps.__N_REDIRECT; // check if destination is internal (resolves to a page) and attempt
+ // client-navigation if it is falling back to hard navigation if
+ // it's not
+
+ if (destination.startsWith("/")) {
+ var parsedHref = (0, _parseRelativeUrl.parseRelativeUrl)(
+ destination
+ );
+
+ this._resolveHref(parsedHref, pages);
+
+ if (pages.includes(parsedHref.pathname)) {
+ return this.change(
+ "replaceState",
+ destination,
+ destination,
+ options
+ );
+ }
+ }
+
+ window.location.href = destination;
+ return new Promise(() => {});
+ }
+
Router.events.emit("beforeHistoryChange", as);
this.changeState(method, url, as, options);
@@ -1280,9 +1441,16 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
}
_resolveHref(parsedHref, pages) {
+ var applyBasePath =
+ arguments.length > 2 && arguments[2] !== undefined
+ ? arguments[2]
+ : true;
var { pathname } = parsedHref;
- var cleanPathname = (0, _denormalizePagePath.denormalizePagePath)(
- delBasePath(pathname)
+ var cleanPathname = (0,
+ _normalizeTrailingSlash.removePathTrailingSlash)(
+ (0, _denormalizePagePath.denormalizePagePath)(
+ applyBasePath ? delBasePath(pathname) : pathname
+ )
);
if (cleanPathname === "/404" || cleanPathname === "/_error") {
@@ -1296,7 +1464,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
(0, _isDynamic.isDynamicRoute)(page) &&
(0, _routeRegex.getRouteRegex)(page).re.test(cleanPathname)
) {
- parsedHref.pathname = addBasePath(page);
+ parsedHref.pathname = applyBasePath ? addBasePath(page) : page;
return true;
}
});
@@ -1443,6 +1611,19 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
+ /***/ fcRV: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.default = escapePathDelimiters; // escape delimiters used by path-to-regexp
+
+ function escapePathDelimiters(segment) {
+ return segment.replace(/[/#?]/g, char => encodeURIComponent(char));
+ }
+
+ /***/
+ },
+
/***/ "g/15": /***/ function(module, exports, __webpack_require__) {
"use strict";
@@ -1626,6 +1807,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _utils = __webpack_require__("g/15");
+ var _querystring = __webpack_require__("3WeD");
+
var DUMMY_BASE = new URL(
false ? undefined : (0, _utils.getLocationOrigin)()
);
@@ -1657,7 +1840,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
return {
pathname,
- searchParams,
+ query: (0, _querystring.searchParamsToUrlQuery)(searchParams),
search,
hash,
href: href.slice(DUMMY_BASE.origin.length)Diff for main-0d31828..94.module.js
@@ -1,6 +1,48 @@
(window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
[3],
{
+ /***/ "0sNQ": /***/ function(module, exports) {
+ "trimStart" in String.prototype ||
+ (String.prototype.trimStart = String.prototype.trimLeft),
+ "trimEnd" in String.prototype ||
+ (String.prototype.trimEnd = String.prototype.trimRight),
+ "description" in Symbol.prototype ||
+ Object.defineProperty(Symbol.prototype, "description", {
+ get: function() {
+ return /\((.+)\)/.exec(this)[1];
+ }
+ }),
+ Array.prototype.flat ||
+ ((Array.prototype.flat = function(t, r) {
+ return (
+ (r = this.concat.apply([], this)),
+ t > 1 && r.some(Array.isArray) ? r.flat(t - 1) : r
+ );
+ }),
+ (Array.prototype.flatMap = function(t, r) {
+ return this.map(t, r).flat();
+ })),
+ Promise.prototype.finally ||
+ (Promise.prototype.finally = function(t) {
+ if ("function" != typeof t) return this.then(t, t);
+ var r = this.constructor || Promise;
+ return this.then(
+ function(o) {
+ return r.resolve(t()).then(function() {
+ return o;
+ });
+ },
+ function(o) {
+ return r.resolve(t()).then(function() {
+ throw o;
+ });
+ }
+ );
+ });
+
+ /***/
+ },
+
/***/ BMP1: /***/ function(module, exports, __webpack_require__) {
"use strict";
@@ -19,6 +61,9 @@
exports.__esModule = true;
exports.default = initHeadManager;
+
+ var _react = __webpack_require__("q1tI");
+
var DOMAttributeNames = {
acceptCharset: "accept-charset",
className: "class",
@@ -45,54 +90,77 @@
el.innerHTML = dangerouslySetInnerHTML.__html || "";
} else if (children) {
el.textContent =
- typeof children === "string" ? children : children.join("");
+ typeof children === "string"
+ ? children
+ : Array.isArray(children)
+ ? children.join("")
+ : "";
}
return el;
}
- function updateElements(type, components) {
+ function updateElements(elements, components, removeOldTags) {
var headEl = document.getElementsByTagName("head")[0];
- var headCountEl = headEl.querySelector("meta[name=next-head-count]");
+ var oldTags = new Set(elements);
+ components.forEach(tag => {
+ if (tag.type === "title") {
+ var title = "";
+
+ if (tag) {
+ var { children } = tag.props;
+ title =
+ typeof children === "string"
+ ? children
+ : Array.isArray(children)
+ ? children.join("")
+ : "";
+ }
- if (false) {
- }
+ if (title !== document.title) document.title = title;
+ return;
+ }
- var headCount = Number(headCountEl.content);
- var oldTags = [];
+ var newTag = reactElementToDOM(tag);
+ var elementIter = elements.values();
- for (
- var i = 0, j = headCountEl.previousElementSibling;
- i < headCount;
- i++, j = j.previousElementSibling
- ) {
- if (j.tagName.toLowerCase() === type) {
- oldTags.push(j);
- }
- }
+ while (true) {
+ // Note: We don't use for-of here to avoid needing to polyfill it.
+ var { done, value } = elementIter.next();
- var newTags = components.map(reactElementToDOM).filter(newTag => {
- for (var k = 0, len = oldTags.length; k < len; k++) {
- var oldTag = oldTags[k];
+ if (value == null ? void 0 : value.isEqualNode(newTag)) {
+ oldTags.delete(value);
+ return;
+ }
- if (oldTag.isEqualNode(newTag)) {
- oldTags.splice(k, 1);
- return false;
+ if (done) {
+ break;
}
}
- return true;
+ elements.add(newTag);
+ headEl.appendChild(newTag);
+ });
+ oldTags.forEach(oldTag => {
+ if (removeOldTags) {
+ oldTag.parentNode.removeChild(oldTag);
+ }
+
+ elements.delete(oldTag);
});
- oldTags.forEach(t => t.parentNode.removeChild(t));
- newTags.forEach(t => headEl.insertBefore(t, headCountEl));
- headCountEl.content = (
- headCount -
- oldTags.length +
- newTags.length
- ).toString();
}
- function initHeadManager() {
+ function initHeadManager(initialHeadEntries) {
+ var headEl = document.getElementsByTagName("head")[0];
+ var elements = new Set(headEl.children);
+ updateElements(
+ elements,
+ initialHeadEntries.map(_ref2 => {
+ var [type, props] = _ref2;
+ return /*#__PURE__*/ (0, _react.createElement)(type, props);
+ }),
+ false
+ );
var updatePromise = null;
return {
mountedInstances: new Set(),
@@ -100,25 +168,7 @@
var promise = (updatePromise = Promise.resolve().then(() => {
if (promise !== updatePromise) return;
updatePromise = null;
- var tags = {};
- head.forEach(h => {
- var components = tags[h.type] || [];
- components.push(h);
- tags[h.type] = components;
- });
- var titleComponent = tags.title ? tags.title[0] : null;
- var title = "";
-
- if (titleComponent) {
- var { children } = titleComponent.props;
- title =
- typeof children === "string" ? children : children.join("");
- }
-
- if (title !== document.title) document.title = title;
- ["meta", "base", "link", "style", "script"].forEach(type => {
- updateElements(type, tags[type] || []);
- });
+ updateElements(elements, head, true);
}));
}
};
@@ -171,6 +221,8 @@
__webpack_require__("284h")
);
+ __webpack_require__("0sNQ");
+
var _react = _interopRequireDefault(__webpack_require__("q1tI"));
var _reactDom = _interopRequireDefault(__webpack_require__("i8i4"));
@@ -202,15 +254,11 @@
var _router2 = __webpack_require__("nOHt");
/* global location */
- if (!("finally" in Promise.prototype)) {
- Promise.prototype.finally = __webpack_require__("Z577");
- }
-
var data = JSON.parse(
document.getElementById("__NEXT_DATA__").textContent
);
window.__NEXT_DATA__ = data;
- var version = "9.5.3";
+ var version = "9.5.4-canary.23";
exports.version = version;
var {
props: hydrateProps,
@@ -221,7 +269,8 @@
assetPrefix,
runtimeConfig,
dynamicIds,
- isFallback
+ isFallback,
+ head: initialHeadData
} = data;
var prefix = assetPrefix || ""; // With dynamic assetPrefix it's no longer possible to set assetPrefix at the build time
// So, this is how we do it in the client side at runtime
@@ -254,7 +303,7 @@
window.__NEXT_P = [];
window.__NEXT_P.push = register;
- var headManager = (0, _headManager.default)();
+ var headManager = (0, _headManager.default)(initialHeadData);
var appElement = document.getElementById("__next");
var lastAppProps;
var lastRenderReject;
@@ -853,27 +902,6 @@
/***/
},
- /***/ Z577: /***/ function(module, exports) {
- Promise.prototype.finally = function(n) {
- if ("function" != typeof n) return this.then(n, n);
- var t = this.constructor || Promise;
- return this.then(
- function(r) {
- return t.resolve(n()).then(function() {
- return r;
- });
- },
- function(r) {
- return t.resolve(n()).then(function() {
- throw r;
- });
- }
- );
- };
-
- /***/
- },
-
/***/ bGXG: /***/ function(module, exports, __webpack_require__) {
"use strict";
@@ -895,19 +923,6 @@
/***/
},
- /***/ fcRV: /***/ function(module, exports, __webpack_require__) {
- "use strict";
-
- exports.__esModule = true;
- exports.default = escapePathDelimiters; // escape delimiters used by path-to-regexp
-
- function escapePathDelimiters(segment) {
- return segment.replace(/[/#?]/g, char => encodeURIComponent(char));
- }
-
- /***/
- },
-
/***/ pVnL: /***/ function(module, exports) {
function _extends() {
module.exports = _extends =
@@ -952,14 +967,14 @@
__webpack_exports__,
"getFCP",
function() {
- return m;
+ return v;
}
);
/* harmony export (binding) */ __webpack_require__.d(
__webpack_exports__,
"getFID",
function() {
- return v;
+ return f;
}
);
/* harmony export (binding) */ __webpack_require__.d(
@@ -1012,7 +1027,7 @@
},
u = function() {
addEventListener("pagehide", s),
- addEventListener("unload", function() {});
+ addEventListener("beforeunload", function() {});
},
c = function(t) {
var n =
@@ -1040,19 +1055,20 @@
};
},
p = function(t) {
- var n =
- arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
- e = i("CLS", 0),
- r = function(t) {
+ var n,
+ e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
+ r = i("CLS", 0),
+ o = function(t) {
t.hadRecentInput ||
- ((e.value += t.value), e.entries.push(t), s());
+ ((r.value += t.value), r.entries.push(t), n());
},
- o = a("layout-shift", r),
- s = l(t, e, o, n);
- c(function(t) {
- var n = t.isUnloading;
- o && o.takeRecords().map(r), n && (e.isFinal = !0), s();
- });
+ s = a("layout-shift", o);
+ s &&
+ ((n = l(t, r, s, e)),
+ c(function(t) {
+ var e = t.isUnloading;
+ s.takeRecords().map(o), e && (r.isFinal = !0), n();
+ }));
},
d = function() {
return (
@@ -1069,20 +1085,21 @@
}
);
},
- m = function(t) {
- var n = i("FCP"),
- e = d(),
- r = a("paint", function(t) {
+ v = function(t) {
+ var n,
+ e = i("FCP"),
+ r = d(),
+ o = a("paint", function(t) {
"first-contentful-paint" === t.name &&
- t.startTime < e.timeStamp &&
- ((n.value = t.startTime),
- (n.isFinal = !0),
- n.entries.push(t),
- o());
- }),
- o = l(t, n, r);
+ t.startTime < r.timeStamp &&
+ ((e.value = t.startTime),
+ (e.isFinal = !0),
+ e.entries.push(t),
+ n());
+ });
+ o && (n = l(t, e, o));
},
- v = function(t) {
+ f = function(t) {
var n = i("FID"),
e = d(),
r = function(t) {
@@ -1094,30 +1111,30 @@
},
o = a("first-input", r),
s = l(t, n, o);
- c(function() {
- o && (o.takeRecords().map(r), o.disconnect());
- }, !0),
- o ||
- (window.perfMetrics &&
- window.perfMetrics.onFirstInputDelay &&
- window.perfMetrics.onFirstInputDelay(function(t, i) {
- i.timeStamp < e.timeStamp &&
- ((n.value = t),
- (n.isFinal = !0),
- (n.entries = [
- {
- entryType: "first-input",
- name: i.type,
- target: i.target,
- cancelable: i.cancelable,
- startTime: i.timeStamp,
- processingStart: i.timeStamp + t
- }
- ]),
- s());
- }));
+ o
+ ? c(function() {
+ o.takeRecords().map(r), o.disconnect();
+ }, !0)
+ : window.perfMetrics &&
+ window.perfMetrics.onFirstInputDelay &&
+ window.perfMetrics.onFirstInputDelay(function(t, i) {
+ i.timeStamp < e.timeStamp &&
+ ((n.value = t),
+ (n.isFinal = !0),
+ (n.entries = [
+ {
+ entryType: "first-input",
+ name: i.type,
+ target: i.target,
+ cancelable: i.cancelable,
+ startTime: i.timeStamp,
+ processingStart: i.timeStamp + t
+ }
+ ]),
+ s());
+ });
},
- f = function() {
+ m = function() {
return (
n ||
(n = new Promise(function(t) {
@@ -1133,23 +1150,25 @@
);
},
g = function(t) {
- var n =
- arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
- e = i("LCP"),
- r = d(),
- o = function(t) {
- var n = t.startTime;
- n < r.timeStamp
- ? ((e.value = n), e.entries.push(t))
- : (e.isFinal = !0),
- u();
+ var n,
+ e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
+ r = i("LCP"),
+ o = d(),
+ s = function(t) {
+ var e = t.startTime;
+ e < o.timeStamp
+ ? ((r.value = e), r.entries.push(t))
+ : (r.isFinal = !0),
+ n();
},
- s = a("largest-contentful-paint", o),
- u = l(t, e, s, n),
- p = function() {
- e.isFinal || (s && s.takeRecords().map(o), (e.isFinal = !0), u());
+ u = a("largest-contentful-paint", s);
+ if (u) {
+ n = l(t, r, u, e);
+ var p = function() {
+ r.isFinal || (u.takeRecords().map(s), (r.isFinal = !0), n());
};
- f().then(p), c(p, !0);
+ m().then(p), c(p, !0);
+ }
},
h = function(t) {
var n,
@@ -1214,10 +1233,6 @@
var _router = __webpack_require__("elyg");
- var _escapePathDelimiters = _interopRequireDefault(
- __webpack_require__("fcRV")
- );
-
var _getAssetPathFromRoute = _interopRequireDefault(
__webpack_require__("Lab5")
);
@@ -1226,12 +1241,6 @@
var _parseRelativeUrl = __webpack_require__("hS4m");
- var _querystring = __webpack_require__("3WeD");
-
- var _routeMatcher = __webpack_require__("gguc");
-
- var _routeRegex = __webpack_require__("YTqd");
-
var looseToArray = input => [].slice.call(input);
exports.looseToArray = looseToArray;
@@ -1390,9 +1399,8 @@
*/
getDataHref(href, asPath, ssg) {
- var { pathname: hrefPathname, searchParams, search } = (0,
+ var { pathname: hrefPathname, query, search } = (0,
_parseRelativeUrl.parseRelativeUrl)(href);
- var query = (0, _querystring.searchParamsToUrlQuery)(searchParams);
var { pathname: asPathname } = (0,
_parseRelativeUrl.parseRelativeUrl)(asPath);
var route = normalizeRoute(hrefPathname);
@@ -1407,53 +1415,10 @@
);
};
- var isDynamic = (0, _isDynamic.isDynamicRoute)(route),
- interpolatedRoute;
-
- if (isDynamic) {
- var dynamicRegex = (0, _routeRegex.getRouteRegex)(route);
- var dynamicGroups = dynamicRegex.groups;
- var dynamicMatches = // Try to match the dynamic route against the asPath
- (0, _routeMatcher.getRouteMatcher)(dynamicRegex)(asPathname) || // Fall back to reading the values from the href
- // TODO: should this take priority; also need to change in the router.
- query;
- interpolatedRoute = route;
-
- if (
- !Object.keys(dynamicGroups).every(param => {
- var value = dynamicMatches[param] || "";
- var { repeat, optional } = dynamicGroups[param]; // support single-level catch-all
- // TODO: more robust handling for user-error (passing `/`)
-
- var replaced = "["
- .concat(repeat ? "..." : "")
- .concat(param, "]");
-
- if (optional) {
- replaced = ""
- .concat(!value ? "/" : "", "[")
- .concat(replaced, "]");
- }
-
- if (repeat && !Array.isArray(value)) value = [value];
- return (
- (optional || param in dynamicMatches) && // Interpolate group into data URL if present
- (interpolatedRoute =
- interpolatedRoute.replace(
- replaced,
- repeat
- ? value.map(_escapePathDelimiters.default).join("/")
- : (0, _escapePathDelimiters.default)(value)
- ) || "/")
- );
- })
- ) {
- interpolatedRoute = ""; // did not satisfy all requirements
- // n.b. We ignore this error because we handle warning for this case in
- // development in the `<Link>` component directly.
- }
- }
-
+ var isDynamic = (0, _isDynamic.isDynamicRoute)(route);
+ var interpolatedRoute = isDynamic
+ ? (0, _router.interpolateAs)(hrefPathname, asPathname, query).result
+ : "";
return isDynamic
? interpolatedRoute && getHrefForSlug(interpolatedRoute)
: getHrefForSlug(route);Diff for main-58fe85d..fac23ae4b.js
@@ -1,6 +1,48 @@
_N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
[3],
{
+ /***/ "0sNQ": /***/ function(module, exports) {
+ "trimStart" in String.prototype ||
+ (String.prototype.trimStart = String.prototype.trimLeft),
+ "trimEnd" in String.prototype ||
+ (String.prototype.trimEnd = String.prototype.trimRight),
+ "description" in Symbol.prototype ||
+ Object.defineProperty(Symbol.prototype, "description", {
+ get: function() {
+ return /\((.+)\)/.exec(this)[1];
+ }
+ }),
+ Array.prototype.flat ||
+ ((Array.prototype.flat = function(t, r) {
+ return (
+ (r = this.concat.apply([], this)),
+ t > 1 && r.some(Array.isArray) ? r.flat(t - 1) : r
+ );
+ }),
+ (Array.prototype.flatMap = function(t, r) {
+ return this.map(t, r).flat();
+ })),
+ Promise.prototype.finally ||
+ (Promise.prototype.finally = function(t) {
+ if ("function" != typeof t) return this.then(t, t);
+ var r = this.constructor || Promise;
+ return this.then(
+ function(o) {
+ return r.resolve(t()).then(function() {
+ return o;
+ });
+ },
+ function(o) {
+ return r.resolve(t()).then(function() {
+ throw o;
+ });
+ }
+ );
+ });
+
+ /***/
+ },
+
/***/ "7W2i": /***/ function(module, exports, __webpack_require__) {
var setPrototypeOf = __webpack_require__("SksO");
@@ -42,8 +84,13 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
/***/ DqTX: /***/ function(module, exports, __webpack_require__) {
"use strict";
+ var _slicedToArray = __webpack_require__("J4zp");
+
exports.__esModule = true;
exports["default"] = initHeadManager;
+
+ var _react = __webpack_require__("q1tI");
+
var
Post job cleanup.
[command]/usr/bin/git version
git version 2.28.0
[command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :
[command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
http.https://github.com/.extraheader
[command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
[command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :
Cleaning up orphan processes
Commit: 81a88b35ab6299b031ec03b6d32b6efcc7b4b5d5
Stats from current PRDefault Server Mode (Increase detected
|
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| buildDuration | 9.7s | 9.7s | -61ms |
| nodeModulesSize | 63.1 MB | 63.1 MB | ✓ |
Page Load Tests Overall increase ✓
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| / failed reqs | 0 | 0 | ✓ |
| / total time (seconds) | 1.817 | 1.82 | 0 |
| / avg req/sec | 1376.16 | 1373.87 | |
| /error-in-render failed reqs | 0 | 0 | ✓ |
| /error-in-render total time (seconds) | 0.999 | 0.943 | -0.06 |
| /error-in-render avg req/sec | 2503.49 | 2649.92 | +146.43 |
Client Bundles (main, webpack, commons)
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..9339.js gzip | 10.9 kB | 10.9 kB | ✓ |
| framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
| main-d493e7d..42f5.js gzip | 7.17 kB | 7.17 kB | ✓ |
| webpack-e067..f178.js gzip | 751 B | 751 B | ✓ |
| Overall change | 57.8 kB | 57.8 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..dule.js gzip | 6.77 kB | 6.77 kB | ✓ |
| framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
| main-f8905d4..dule.js gzip | 6.24 kB | 6.24 kB | ✓ |
| webpack-07c5..dule.js gzip | 751 B | 751 B | ✓ |
| Overall change | 52.7 kB | 52.7 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| polyfills-4b..e242.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-9a0b9e1..b37e.js gzip | 1.28 kB | 1.28 kB | ✓ |
| _error-ed1b0..8fbd.js gzip | 3.44 kB | 3.44 kB | ✓ |
| hooks-89731c..c609.js gzip | 887 B | 887 B | ✓ |
| index-17468f..5d83.js gzip | 227 B | 227 B | ✓ |
| link-d2344ce..8b36.js gzip | 1.3 kB | 1.3 kB | ✓ |
| routerDirect..924c.js gzip | 284 B | 284 B | ✓ |
| withRouter-7..c13d.js gzip | 284 B | 284 B | ✓ |
| Overall change | 7.71 kB | 7.71 kB | ✓ |
Client Pages Modern
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-75d3a82..dule.js gzip | 625 B | 625 B | ✓ |
| _error-4469a..dule.js gzip | 2.29 kB | 2.29 kB | ✓ |
| hooks-cbf13f..dule.js gzip | 387 B | 387 B | ✓ |
| index-b9a643..dule.js gzip | 226 B | 226 B | ✓ |
| link-f8c0daf..dule.js gzip | 1.26 kB | 1.26 kB | ✓ |
| routerDirect..dule.js gzip | 284 B | 284 B | ✓ |
| withRouter-f..dule.js gzip | 282 B | 282 B | ✓ |
| Overall change | 5.36 kB | 5.36 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 322 B | 322 B | ✓ |
| _buildManife..dule.js gzip | 329 B | 329 B | ✓ |
| Overall change | 651 B | 651 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| index.html gzip | 1 kB | 1 kB | ✓ |
| link.html gzip | 1.01 kB | 1.01 kB | ✓ |
| withRouter.html gzip | 996 B | 996 B | ✓ |
| Overall change | 3.01 kB | 3.01 kB | ✓ |
Serverless Mode
General
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| buildDuration | 11.1s | 10.8s | -232ms |
| nodeModulesSize | 63.1 MB | 63.1 MB | ✓ |
Client Bundles (main, webpack, commons)
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..9339.js gzip | 10.9 kB | 10.9 kB | ✓ |
| framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
| main-d493e7d..42f5.js gzip | 7.17 kB | 7.17 kB | ✓ |
| webpack-e067..f178.js gzip | 751 B | 751 B | ✓ |
| Overall change | 57.8 kB | 57.8 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..dule.js gzip | 6.77 kB | 6.77 kB | ✓ |
| framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
| main-f8905d4..dule.js gzip | 6.24 kB | 6.24 kB | ✓ |
| webpack-07c5..dule.js gzip | 751 B | 751 B | ✓ |
| Overall change | 52.7 kB | 52.7 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| polyfills-4b..e242.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-9a0b9e1..b37e.js gzip | 1.28 kB | 1.28 kB | ✓ |
| _error-ed1b0..8fbd.js gzip | 3.44 kB | 3.44 kB | ✓ |
| hooks-89731c..c609.js gzip | 887 B | 887 B | ✓ |
| index-17468f..5d83.js gzip | 227 B | 227 B | ✓ |
| link-d2344ce..8b36.js gzip | 1.3 kB | 1.3 kB | ✓ |
| routerDirect..924c.js gzip | 284 B | 284 B | ✓ |
| withRouter-7..c13d.js gzip | 284 B | 284 B | ✓ |
| Overall change | 7.71 kB | 7.71 kB | ✓ |
Client Pages Modern
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-75d3a82..dule.js gzip | 625 B | 625 B | ✓ |
| _error-4469a..dule.js gzip | 2.29 kB | 2.29 kB | ✓ |
| hooks-cbf13f..dule.js gzip | 387 B | 387 B | ✓ |
| index-b9a643..dule.js gzip | 226 B | 226 B | ✓ |
| link-f8c0daf..dule.js gzip | 1.26 kB | 1.26 kB | ✓ |
| routerDirect..dule.js gzip | 284 B | 284 B | ✓ |
| withRouter-f..dule.js gzip | 282 B | 282 B | ✓ |
| Overall change | 5.36 kB | 5.36 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 322 B | 322 B | ✓ |
| _buildManife..dule.js gzip | 329 B | 329 B | ✓ |
| Overall change | 651 B | 651 B | ✓ |
Serverless bundles
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _error.js | 1.05 MB | 1.05 MB | ✓ |
| 404.html | 4.34 kB | 4.34 kB | ✓ |
| hooks.html | 3.92 kB | 3.92 kB | ✓ |
| index.js | 1.05 MB | 1.05 MB | ✓ |
| link.js | 1.1 MB | 1.1 MB | ✓ |
| routerDirect.js | 1.09 MB | 1.09 MB | ✓ |
| withRouter.js | 1.09 MB | 1.09 MB | ✓ |
| Overall change | 5.4 MB | 5.4 MB | ✓ |
Stats from current PRDefault Server Mode (Increase detected
|
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| buildDuration | 10.8s | 10.9s | |
| nodeModulesSize | 63.1 MB | 63.1 MB | ✓ |
Page Load Tests Overall increase ✓
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| / failed reqs | 0 | 0 | ✓ |
| / total time (seconds) | 2.085 | 2.062 | -0.02 |
| / avg req/sec | 1198.97 | 1212.54 | +13.57 |
| /error-in-render failed reqs | 0 | 0 | ✓ |
| /error-in-render total time (seconds) | 1.271 | 1.233 | -0.04 |
| /error-in-render avg req/sec | 1967.24 | 2027.63 | +60.39 |
Client Bundles (main, webpack, commons)
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..9339.js gzip | 10.9 kB | 10.9 kB | ✓ |
| framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
| main-d493e7d..42f5.js gzip | 7.17 kB | 7.17 kB | ✓ |
| webpack-e067..f178.js gzip | 751 B | 751 B | ✓ |
| Overall change | 57.8 kB | 57.8 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..dule.js gzip | 6.77 kB | 6.77 kB | ✓ |
| framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
| main-f8905d4..dule.js gzip | 6.24 kB | 6.24 kB | ✓ |
| webpack-07c5..dule.js gzip | 751 B | 751 B | ✓ |
| Overall change | 52.7 kB | 52.7 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| polyfills-4b..e242.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-9a0b9e1..b37e.js gzip | 1.28 kB | 1.28 kB | ✓ |
| _error-ed1b0..8fbd.js gzip | 3.44 kB | 3.44 kB | ✓ |
| hooks-89731c..c609.js gzip | 887 B | 887 B | ✓ |
| index-17468f..5d83.js gzip | 227 B | 227 B | ✓ |
| link-d2344ce..8b36.js gzip | 1.3 kB | 1.3 kB | ✓ |
| routerDirect..924c.js gzip | 284 B | 284 B | ✓ |
| withRouter-7..c13d.js gzip | 284 B | 284 B | ✓ |
| Overall change | 7.71 kB | 7.71 kB | ✓ |
Client Pages Modern
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-75d3a82..dule.js gzip | 625 B | 625 B | ✓ |
| _error-4469a..dule.js gzip | 2.29 kB | 2.29 kB | ✓ |
| hooks-cbf13f..dule.js gzip | 387 B | 387 B | ✓ |
| index-b9a643..dule.js gzip | 226 B | 226 B | ✓ |
| link-f8c0daf..dule.js gzip | 1.26 kB | 1.26 kB | ✓ |
| routerDirect..dule.js gzip | 284 B | 284 B | ✓ |
| withRouter-f..dule.js gzip | 282 B | 282 B | ✓ |
| Overall change | 5.36 kB | 5.36 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 322 B | 322 B | ✓ |
| _buildManife..dule.js gzip | 329 B | 329 B | ✓ |
| Overall change | 651 B | 651 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| index.html gzip | 1 kB | 1 kB | ✓ |
| link.html gzip | 1.01 kB | 1.01 kB | ✓ |
| withRouter.html gzip | 996 B | 996 B | ✓ |
| Overall change | 3.01 kB | 3.01 kB | ✓ |
Serverless Mode
General
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| buildDuration | 12.1s | 12.1s | |
| nodeModulesSize | 63.1 MB | 63.1 MB | ✓ |
Client Bundles (main, webpack, commons)
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..9339.js gzip | 10.9 kB | 10.9 kB | ✓ |
| framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
| main-d493e7d..42f5.js gzip | 7.17 kB | 7.17 kB | ✓ |
| webpack-e067..f178.js gzip | 751 B | 751 B | ✓ |
| Overall change | 57.8 kB | 57.8 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..dule.js gzip | 6.77 kB | 6.77 kB | ✓ |
| framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
| main-f8905d4..dule.js gzip | 6.24 kB | 6.24 kB | ✓ |
| webpack-07c5..dule.js gzip | 751 B | 751 B | ✓ |
| Overall change | 52.7 kB | 52.7 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| polyfills-4b..e242.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-9a0b9e1..b37e.js gzip | 1.28 kB | 1.28 kB | ✓ |
| _error-ed1b0..8fbd.js gzip | 3.44 kB | 3.44 kB | ✓ |
| hooks-89731c..c609.js gzip | 887 B | 887 B | ✓ |
| index-17468f..5d83.js gzip | 227 B | 227 B | ✓ |
| link-d2344ce..8b36.js gzip | 1.3 kB | 1.3 kB | ✓ |
| routerDirect..924c.js gzip | 284 B | 284 B | ✓ |
| withRouter-7..c13d.js gzip | 284 B | 284 B | ✓ |
| Overall change | 7.71 kB | 7.71 kB | ✓ |
Client Pages Modern
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-75d3a82..dule.js gzip | 625 B | 625 B | ✓ |
| _error-4469a..dule.js gzip | 2.29 kB | 2.29 kB | ✓ |
| hooks-cbf13f..dule.js gzip | 387 B | 387 B | ✓ |
| index-b9a643..dule.js gzip | 226 B | 226 B | ✓ |
| link-f8c0daf..dule.js gzip | 1.26 kB | 1.26 kB | ✓ |
| routerDirect..dule.js gzip | 284 B | 284 B | ✓ |
| withRouter-f..dule.js gzip | 282 B | 282 B | ✓ |
| Overall change | 5.36 kB | 5.36 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 322 B | 322 B | ✓ |
| _buildManife..dule.js gzip | 329 B | 329 B | ✓ |
| Overall change | 651 B | 651 B | ✓ |
Serverless bundles
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _error.js | 1.05 MB | 1.05 MB | ✓ |
| 404.html | 4.34 kB | 4.34 kB | ✓ |
| hooks.html | 3.92 kB | 3.92 kB | ✓ |
| index.js | 1.05 MB | 1.05 MB | ✓ |
| link.js | 1.1 MB | 1.1 MB | ✓ |
| routerDirect.js | 1.09 MB | 1.09 MB | ✓ |
| withRouter.js | 1.09 MB | 1.09 MB | ✓ |
| Overall change | 5.4 MB | 5.4 MB | ✓ |
Stats from current PRDefault Server Mode (Decrease detected ✓)General
Page Load Tests Overall decrease
|
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| / failed reqs | 0 | 0 | ✓ |
| / total time (seconds) | 2.393 | 2.434 | |
| / avg req/sec | 1044.82 | 1026.98 | |
| /error-in-render failed reqs | 0 | 0 | ✓ |
| /error-in-render total time (seconds) | 1.45 | 1.478 | |
| /error-in-render avg req/sec | 1723.74 | 1691.73 |
Client Bundles (main, webpack, commons)
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..9339.js gzip | 10.9 kB | 10.9 kB | ✓ |
| framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
| main-d493e7d..42f5.js gzip | 7.17 kB | 7.17 kB | ✓ |
| webpack-e067..f178.js gzip | 751 B | 751 B | ✓ |
| Overall change | 57.8 kB | 57.8 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..dule.js gzip | 6.77 kB | 6.77 kB | ✓ |
| framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
| main-f8905d4..dule.js gzip | 6.24 kB | 6.24 kB | ✓ |
| webpack-07c5..dule.js gzip | 751 B | 751 B | ✓ |
| Overall change | 52.7 kB | 52.7 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| polyfills-4b..e242.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-9a0b9e1..b37e.js gzip | 1.28 kB | 1.28 kB | ✓ |
| _error-ed1b0..8fbd.js gzip | 3.44 kB | 3.44 kB | ✓ |
| hooks-89731c..c609.js gzip | 887 B | 887 B | ✓ |
| index-17468f..5d83.js gzip | 227 B | 227 B | ✓ |
| link-d2344ce..8b36.js gzip | 1.3 kB | 1.3 kB | ✓ |
| routerDirect..924c.js gzip | 284 B | 284 B | ✓ |
| withRouter-7..c13d.js gzip | 284 B | 284 B | ✓ |
| Overall change | 7.71 kB | 7.71 kB | ✓ |
Client Pages Modern
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-75d3a82..dule.js gzip | 625 B | 625 B | ✓ |
| _error-4469a..dule.js gzip | 2.29 kB | 2.29 kB | ✓ |
| hooks-cbf13f..dule.js gzip | 387 B | 387 B | ✓ |
| index-b9a643..dule.js gzip | 226 B | 226 B | ✓ |
| link-f8c0daf..dule.js gzip | 1.26 kB | 1.26 kB | ✓ |
| routerDirect..dule.js gzip | 284 B | 284 B | ✓ |
| withRouter-f..dule.js gzip | 282 B | 282 B | ✓ |
| Overall change | 5.36 kB | 5.36 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 322 B | 322 B | ✓ |
| _buildManife..dule.js gzip | 329 B | 329 B | ✓ |
| Overall change | 651 B | 651 B | ✓ |
Rendered Page Sizes
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| index.html gzip | 1 kB | 1 kB | ✓ |
| link.html gzip | 1.01 kB | 1.01 kB | ✓ |
| withRouter.html gzip | 996 B | 996 B | ✓ |
| Overall change | 3.01 kB | 3.01 kB | ✓ |
Serverless Mode
General
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| buildDuration | 13.6s | 14.6s | |
| nodeModulesSize | 63.2 MB | 63.2 MB | ✓ |
Client Bundles (main, webpack, commons)
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..9339.js gzip | 10.9 kB | 10.9 kB | ✓ |
| framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
| main-d493e7d..42f5.js gzip | 7.17 kB | 7.17 kB | ✓ |
| webpack-e067..f178.js gzip | 751 B | 751 B | ✓ |
| Overall change | 57.8 kB | 57.8 kB | ✓ |
Client Bundles (main, webpack, commons) Modern
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| 677f882d2ed8..dule.js gzip | 6.77 kB | 6.77 kB | ✓ |
| framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
| main-f8905d4..dule.js gzip | 6.24 kB | 6.24 kB | ✓ |
| webpack-07c5..dule.js gzip | 751 B | 751 B | ✓ |
| Overall change | 52.7 kB | 52.7 kB | ✓ |
Legacy Client Bundles (polyfills)
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| polyfills-4b..e242.js gzip | 31 kB | 31 kB | ✓ |
| Overall change | 31 kB | 31 kB | ✓ |
Client Pages
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-9a0b9e1..b37e.js gzip | 1.28 kB | 1.28 kB | ✓ |
| _error-ed1b0..8fbd.js gzip | 3.44 kB | 3.44 kB | ✓ |
| hooks-89731c..c609.js gzip | 887 B | 887 B | ✓ |
| index-17468f..5d83.js gzip | 227 B | 227 B | ✓ |
| link-d2344ce..8b36.js gzip | 1.3 kB | 1.3 kB | ✓ |
| routerDirect..924c.js gzip | 284 B | 284 B | ✓ |
| withRouter-7..c13d.js gzip | 284 B | 284 B | ✓ |
| Overall change | 7.71 kB | 7.71 kB | ✓ |
Client Pages Modern
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _app-75d3a82..dule.js gzip | 625 B | 625 B | ✓ |
| _error-4469a..dule.js gzip | 2.29 kB | 2.29 kB | ✓ |
| hooks-cbf13f..dule.js gzip | 387 B | 387 B | ✓ |
| index-b9a643..dule.js gzip | 226 B | 226 B | ✓ |
| link-f8c0daf..dule.js gzip | 1.26 kB | 1.26 kB | ✓ |
| routerDirect..dule.js gzip | 284 B | 284 B | ✓ |
| withRouter-f..dule.js gzip | 282 B | 282 B | ✓ |
| Overall change | 5.36 kB | 5.36 kB | ✓ |
Client Build Manifests
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _buildManifest.js gzip | 322 B | 322 B | ✓ |
| _buildManife..dule.js gzip | 329 B | 329 B | ✓ |
| Overall change | 651 B | 651 B | ✓ |
Serverless bundles
| vercel/next.js canary | ijjk/next.js update/release-workflow | Change | |
|---|---|---|---|
| _error.js | 1.05 MB | 1.05 MB | ✓ |
| 404.html | 4.34 kB | 4.34 kB | ✓ |
| hooks.html | 3.92 kB | 3.92 kB | ✓ |
| index.js | 1.05 MB | 1.05 MB | ✓ |
| link.js | 1.1 MB | 1.1 MB | ✓ |
| routerDirect.js | 1.09 MB | 1.09 MB | ✓ |
| withRouter.js | 1.09 MB | 1.09 MB | ✓ |
| Overall change | 5.4 MB | 5.4 MB | ✓ |
100a1d3
into
vercel:canary
17 of 23 checks passed
17 of 23 checks passed
React 17 + webpack 5 (Basic, Production, Acceptance)
React 17 + webpack 5 (Basic, Production, Acceptance)
Details
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Follow-up to #17533 this makes sure the file used to signal release stats should be skipped for a non-release merge is created in a location that is accessible by the stats action and also updates the release action info detection for the new workflow