-
Notifications
You must be signed in to change notification settings - Fork 27.6k
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
Update release stats workflow #17580
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ✓ |
timneutkens
approved these changes
Oct 5, 2020
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 | ✓ |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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