-
Notifications
You must be signed in to change notification settings - Fork 28k
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
Make sure to handle query parsing correctly on client/server #12154
Conversation
Stats from current PRDefault Server Mode (Increase detected
|
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
buildDuration | 9.6s | 11.8s | |
nodeModulesSize | 55.2 MB | 55.2 MB |
Page Load Tests Overall decrease ⚠️
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 1.613 | 1.955 | |
/ avg req/sec | 1549.46 | 1278.63 | -270.83 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 0.842 | 0.989 | |
/error-in-render avg req/sec | 2970.57 | 2528.66 | -441.91 |
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.js gzip | 6.25 kB | 6.31 kB | |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..45d6.js gzip | 10.3 kB | N/A | N/A |
framework.a1..NSE.txt gzip | 220 B | 220 B | ✓ |
framework.a1..NSE.txt gzip | 220 B | 220 B | ✓ |
framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
de003c3a9d30..ed83.js gzip | N/A | 10.3 kB | N/A |
Overall change | 56.7 kB | 56.8 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.module.js gzip | 4.79 kB | 4.85 kB | |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.87 kB | N/A | N/A |
framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 6.86 kB | N/A |
Overall change | 51.4 kB | 51.5 kB |
Legacy Client Bundles (polyfills)
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.2 kB | 26.2 kB | ✓ |
Overall change | 26.2 kB | 26.2 kB | ✓ |
Client Pages
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_app.js gzip | 1.23 kB | 1.23 kB | ✓ |
_error.js gzip | 3.12 kB | 3.12 kB | ✓ |
hooks.js gzip | 663 B | 663 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 280 B | 280 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 7.85 kB | 7.85 kB | ✓ |
Client Pages Modern
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_app.module.js gzip | 598 B | 598 B | ✓ |
_error.module.js gzip | 2.09 kB | 2.09 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 279 B | 279 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.37 kB | 5.37 kB | ✓ |
Client Build Manifests
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 122 B | 122 B | ✓ |
Rendered Page Sizes Overall decrease ✓
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
index.html gzip | 929 B | 927 B | -2 B |
link.html gzip | 938 B | 937 B | -1 B |
withRouter.html gzip | 925 B | 925 B | ✓ |
Overall change | 2.79 kB | 2.79 kB | -3 B |
Diffs
Diff for de003c3a9d30..e23ef6016.js
@@ -114,11 +114,16 @@ module.exports = _interopRequireWildcard;
/***/ }),
-/***/ "4JlD":
+/***/ "HG3D":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-// Copyright Joyent, Inc. and other Node contributors.
+
+
+exports.__esModule = true;
+exports.encode = encode;
+exports.decode = decode;
+exports.stringify = exports.parse = void 0; // Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
@@ -138,10 +143,18 @@ module.exports = _interopRequireWildcard;
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
+// If obj.hasOwnProperty has been overridden, then calling
+// obj.hasOwnProperty(prop) will break.
+// See: https://github.com/joyent/node/issues/1707
+// This is a modified version of querystring-es3 to allow passing
+// an option for custom decodeURIComponent logic which matches
+// the built-in node options https://nodejs.org/api/querystring.html#querystring_querystring_parse_str_sep_eq_options
+function hasOwnProperty(obj, prop) {
+ return Object.prototype.hasOwnProperty.call(obj, prop);
+}
-
-var stringifyPrimitive = function(v) {
+var stringifyPrimitive = function stringifyPrimitive(v) {
switch (typeof v) {
case 'string':
return v;
@@ -157,53 +170,117 @@ var stringifyPrimitive = function(v) {
}
};
-module.exports = function(obj, sep, eq, name) {
+function encode(obj, sep, eq, name) {
sep = sep || '&';
eq = eq || '=';
+
if (obj === null) {
obj = undefined;
}
if (typeof obj === 'object') {
- return map(objectKeys(obj), function(k) {
+ return map(objectKeys(obj), function (k) {
var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
+
if (isArray(obj[k])) {
- return map(obj[k], function(v) {
+ return map(obj[k], function (v) {
return ks + encodeURIComponent(stringifyPrimitive(v));
}).join(sep);
} else {
return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
}
}).join(sep);
-
}
if (!name) return '';
- return encodeURIComponent(stringifyPrimitive(name)) + eq +
- encodeURIComponent(stringifyPrimitive(obj));
-};
+ return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));
+}
var isArray = Array.isArray || function (xs) {
return Object.prototype.toString.call(xs) === '[object Array]';
};
-function map (xs, f) {
+function map(xs, f) {
if (xs.map) return xs.map(f);
var res = [];
+
for (var i = 0; i < xs.length; i++) {
res.push(f(xs[i], i));
}
+
return res;
}
var objectKeys = Object.keys || function (obj) {
var res = [];
+
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
}
+
return res;
};
+function decode(qs, sep, eq, options) {
+ sep = sep || '&';
+ eq = eq || '=';
+ var obj = {};
+ options = options || {};
+ var decodeComponent = options.decodeURIComponent || decodeURIComponent;
+
+ if (typeof qs !== 'string' || qs.length === 0) {
+ return obj;
+ }
+
+ var regexp = /\+/g;
+ qs = qs.split(sep);
+ var maxKeys = 1000;
+
+ if (options && typeof options.maxKeys === 'number') {
+ maxKeys = options.maxKeys;
+ }
+
+ var len = qs.length; // maxKeys <= 0 means that we should not limit keys count
+
+ if (maxKeys > 0 && len > maxKeys) {
+ len = maxKeys;
+ }
+
+ for (var i = 0; i < len; ++i) {
+ var x = qs[i].replace(regexp, '%20'),
+ idx = x.indexOf(eq),
+ kstr,
+ vstr,
+ k,
+ v;
+
+ if (idx >= 0) {
+ kstr = x.substr(0, idx);
+ vstr = x.substr(idx + 1);
+ } else {
+ kstr = x;
+ vstr = '';
+ }
+
+ k = decodeComponent(kstr);
+ v = decodeComponent(vstr);
+
+ if (!hasOwnProperty(obj, k)) {
+ obj[k] = v;
+ } else if (isArray(obj[k])) {
+ obj[k].push(v);
+ } else {
+ obj[k] = [obj[k], v];
+ }
+ }
+
+ return obj;
+}
+
+var parse = decode;
+exports.parse = parse;
+var stringify = encode;
+exports.stringify = stringify;
/***/ }),
@@ -235,7 +312,7 @@ var assign=Object.assign.bind(Object);module.exports=assign;module.exports.defau
/***/ "QmWs":
/***/ (function(module, exports, __webpack_require__) {
-var e,t=(e=__webpack_require__("s4NR"))&&"object"==typeof e&&"default"in e?e.default:e,r=/https?|ftp|gopher|file/;function o(e){"string"==typeof e&&(e=g(e));var o=function(e,t,r){var o=e.auth,a=e.hostname,s=e.protocol||"",c=e.pathname||"",h=e.hash||"",p=e.query||"",n=!1;o=o?encodeURIComponent(o).replace(/%3A/i,":")+"@":"",e.host?n=o+e.host:a&&(n=o+(~a.indexOf(":")?"["+a+"]":a),e.port&&(n+=":"+e.port)),p&&"object"==typeof p&&(p=t.encode(p));var l=e.search||p&&"?"+p||"";return s&&":"!==s.substr(-1)&&(s+=":"),e.slashes||(!s||r.test(s))&&!1!==n?(n="//"+(n||""),c&&"/"!==c[0]&&(c="/"+c)):n||(n=""),h&&"#"!==h[0]&&(h="#"+h),l&&"?"!==l[0]&&(l="?"+l),{protocol:s,host:n,pathname:c=c.replace(/[?#]/g,encodeURIComponent),search:l=l.replace("#","%23"),hash:h}}(e,t,r);return""+o.protocol+o.host+o.pathname+o.search+o.hash}var a="http://",s="w.w",c=a+s,h=/^([a-z0-9.+-]*:\/\/\/)([a-z0-9.+-]:\/*)?/i,p=/https?|ftp|gopher|file/;function n(e,t){var r="string"==typeof e?g(e):e;e="object"==typeof e?o(e):e;var s=g(t),n="";r.protocol&&!r.slashes&&(n=r.protocol,e=e.replace(r.protocol,""),n+="/"===t[0]||"/"===e[0]?"/":""),n&&s.protocol&&(n="",s.slashes||(n=s.protocol,t=t.replace(s.protocol,"")));var l=e.match(h);l&&!s.protocol&&(e=e.substr((n=l[1]+(l[2]||"")).length),/^\/\/[^/]/.test(t)&&(n=n.slice(0,-1)));var i=new URL(e,c+"/"),f=new URL(t,i).toString().replace(c,""),u=s.protocol||r.protocol;return u+=r.slashes||s.slashes?"//":"",!n&&u?f=f.replace(a,u):n&&(f=f.replace(a,"")),p.test(f)||~t.indexOf(".")||"/"===e.slice(-1)||"/"===t.slice(-1)||"/"!==f.slice(-1)||(f=f.slice(0,-1)),n&&(f=n+("/"===f[0]?f.substr(1):f)),f}function l(){}l.parse=g,l.format=o,l.resolve=n,l.resolveObject=n;var i=/^https?|ftp|gopher|file/,f=/^(.*?)([#?].*)/,u=/^([a-z0-9.+-]*:)(\/{0,3})(.*)/i,m=/^([a-z0-9.+-]*:)?\/\/\/*/i,v=/^([a-z0-9.+-]*:)(\/{0,2})\[(.*)\]$/i;function d(e){try{return decodeURI(e)}catch(t){return e}}function g(e,r,a){if(void 0===r&&(r=!1),void 0===a&&(a=!1),e&&"object"==typeof e&&e instanceof l)return e;var h=(e=e.trim()).match(f);e=h?d(h[1]).replace(/\\/g,"/")+h[2]:d(e).replace(/\\/g,"/"),v.test(e)&&"/"!==e.slice(-1)&&(e+="/");var p=!/(^javascript)/.test(e)&&e.match(u),n=m.test(e),g="";p&&(i.test(p[1])||(g=p[1].toLowerCase(),e=""+p[2]+p[3]),p[2]||(n=!1,i.test(p[1])?(g=p[1],e=""+p[3]):e="//"+p[3]),3!==p[2].length&&1!==p[2].length||(g=p[1],e="/"+p[3]));var b,y=(h?h[1]:e).match(/(:[0-9]+)/),j="";y&&y[1]&&3===y[1].length&&(e=e.replace(j=y[1],j+"00"));var w=new l,x="",U="";try{b=new URL(e)}catch(t){x=t,g||a||!/^\/\//.test(e)||/^\/\/.+[@.]/.test(e)||(U="/",e=e.substr(1));try{b=new URL(e,c)}catch(e){return w.protocol=g,w.href=g,w}}w.slashes=n&&!U,w.host=b.host===s?"":b.host,w.hostname=b.hostname===s?"":b.hostname.replace(/(\[|\])/g,""),w.protocol=x?g||null:b.protocol,w.search=b.search.replace(/\\/g,"%5C"),w.hash=b.hash.replace(/\\/g,"%5C");var R=e.split("#");!w.search&&~R[0].indexOf("?")&&(w.search="?"),w.hash||""!==R[1]||(w.hash="#"),w.query=r?t.decode(b.search.substr(1)):w.search.substr(1),w.pathname=U+d(b.pathname).replace(/"/g,"%22"),"about:"===w.protocol&&"blank"===w.pathname&&(w.protocol="",w.pathname=""),x&&"/"!==e[0]&&(w.pathname=w.pathname.substr(1)),g&&!i.test(g)&&"/"!==e.slice(-1)&&"/"===w.pathname&&(w.pathname=""),w.path=w.pathname+w.search,w.auth=[b.username,b.password].map(decodeURIComponent).filter(Boolean).join(":"),w.port=b.port,j&&(w.host=w.host.replace(j+"00",j),w.port=w.port.slice(0,-2)),w.href=U?""+w.pathname+w.search+w.hash:o(w);var O=/^(file)/.test(w.href)?["host","hostname"]:[];return Object.keys(w).forEach(function(e){~O.indexOf(e)||(w[e]=w[e]||null)}),w}exports.parse=g,exports.format=o,exports.resolve=n,exports.resolveObject=function(e,t){return g(n(e,t))},exports.Url=l;
+var e,t=(e=__webpack_require__("HG3D"))&&"object"==typeof e&&"default"in e?e.default:e,r=/https?|ftp|gopher|file/;function o(e){"string"==typeof e&&(e=g(e));var o=function(e,t,r){var o=e.auth,a=e.hostname,s=e.protocol||"",c=e.pathname||"",h=e.hash||"",p=e.query||"",n=!1;o=o?encodeURIComponent(o).replace(/%3A/i,":")+"@":"",e.host?n=o+e.host:a&&(n=o+(~a.indexOf(":")?"["+a+"]":a),e.port&&(n+=":"+e.port)),p&&"object"==typeof p&&(p=t.encode(p));var l=e.search||p&&"?"+p||"";return s&&":"!==s.substr(-1)&&(s+=":"),e.slashes||(!s||r.test(s))&&!1!==n?(n="//"+(n||""),c&&"/"!==c[0]&&(c="/"+c)):n||(n=""),h&&"#"!==h[0]&&(h="#"+h),l&&"?"!==l[0]&&(l="?"+l),{protocol:s,host:n,pathname:c=c.replace(/[?#]/g,encodeURIComponent),search:l=l.replace("#","%23"),hash:h}}(e,t,r);return""+o.protocol+o.host+o.pathname+o.search+o.hash}var a="http://",s="w.w",c=a+s,h=/^([a-z0-9.+-]*:\/\/\/)([a-z0-9.+-]:\/*)?/i,p=/https?|ftp|gopher|file/;function n(e,t){var r="string"==typeof e?g(e):e;e="object"==typeof e?o(e):e;var s=g(t),n="";r.protocol&&!r.slashes&&(n=r.protocol,e=e.replace(r.protocol,""),n+="/"===t[0]||"/"===e[0]?"/":""),n&&s.protocol&&(n="",s.slashes||(n=s.protocol,t=t.replace(s.protocol,"")));var l=e.match(h);l&&!s.protocol&&(e=e.substr((n=l[1]+(l[2]||"")).length),/^\/\/[^/]/.test(t)&&(n=n.slice(0,-1)));var i=new URL(e,c+"/"),f=new URL(t,i).toString().replace(c,""),u=s.protocol||r.protocol;return u+=r.slashes||s.slashes?"//":"",!n&&u?f=f.replace(a,u):n&&(f=f.replace(a,"")),p.test(f)||~t.indexOf(".")||"/"===e.slice(-1)||"/"===t.slice(-1)||"/"!==f.slice(-1)||(f=f.slice(0,-1)),n&&(f=n+("/"===f[0]?f.substr(1):f)),f}function l(){}l.parse=g,l.format=o,l.resolve=n,l.resolveObject=n;var i=/^https?|ftp|gopher|file/,f=/^(.*?)([#?].*)/,u=/^([a-z0-9.+-]*:)(\/{0,3})(.*)/i,m=/^([a-z0-9.+-]*:)?\/\/\/*/i,v=/^([a-z0-9.+-]*:)(\/{0,2})\[(.*)\]$/i;function d(e){try{return decodeURI(e)}catch(t){return e}}function g(e,r,a){if(void 0===r&&(r=!1),void 0===a&&(a=!1),e&&"object"==typeof e&&e instanceof l)return e;var h=(e=e.trim()).match(f);e=h?d(h[1]).replace(/\\/g,"/")+h[2]:d(e).replace(/\\/g,"/"),v.test(e)&&"/"!==e.slice(-1)&&(e+="/");var p=!/(^javascript)/.test(e)&&e.match(u),n=m.test(e),g="";p&&(i.test(p[1])||(g=p[1].toLowerCase(),e=""+p[2]+p[3]),p[2]||(n=!1,i.test(p[1])?(g=p[1],e=""+p[3]):e="//"+p[3]),3!==p[2].length&&1!==p[2].length||(g=p[1],e="/"+p[3]));var b,y=(h?h[1]:e).match(/(:[0-9]+)/),j="";y&&y[1]&&3===y[1].length&&(e=e.replace(j=y[1],j+"00"));var w=new l,x="",U="";try{b=new URL(e)}catch(t){x=t,g||a||!/^\/\//.test(e)||/^\/\/.+[@.]/.test(e)||(U="/",e=e.substr(1));try{b=new URL(e,c)}catch(e){return w.protocol=g,w.href=g,w}}w.slashes=n&&!U,w.host=b.host===s?"":b.host,w.hostname=b.hostname===s?"":b.hostname.replace(/(\[|\])/g,""),w.protocol=x?g||null:b.protocol,w.search=b.search.replace(/\\/g,"%5C"),w.hash=b.hash.replace(/\\/g,"%5C");var R=e.split("#");!w.search&&~R[0].indexOf("?")&&(w.search="?"),w.hash||""!==R[1]||(w.hash="#"),w.query=r?t.decode(b.search.substr(1)):w.search.substr(1),w.pathname=U+d(b.pathname).replace(/"/g,"%22"),"about:"===w.protocol&&"blank"===w.pathname&&(w.protocol="",w.pathname=""),x&&"/"!==e[0]&&(w.pathname=w.pathname.substr(1)),g&&!i.test(g)&&"/"!==e.slice(-1)&&"/"===w.pathname&&(w.pathname=""),w.path=w.pathname+w.search,w.auth=[b.username,b.password].map(decodeURIComponent).filter(Boolean).join(":"),w.port=b.port,j&&(w.host=w.host.replace(j+"00",j),w.port=w.port.slice(0,-2)),w.href=U?""+w.pathname+w.search+w.hash:o(w);var O=/^(file)/.test(w.href)?["host","hostname"]:[];return Object.keys(w).forEach(function(e){~O.indexOf(e)||(w[e]=w[e]||null)}),w}exports.parse=g,exports.format=o,exports.resolve=n,exports.resolveObject=function(e,t){return g(n(e,t))},exports.Url=l;
//# sourceMappingURL=index.js.map
@@ -1389,98 +1466,6 @@ function getRouteMatcher(routeRegex) {
exports.getRouteMatcher = getRouteMatcher;
-/***/ }),
-
-/***/ "kd2E":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-
-// If obj.hasOwnProperty has been overridden, then calling
-// obj.hasOwnProperty(prop) will break.
-// See: https://github.com/joyent/node/issues/1707
-function hasOwnProperty(obj, prop) {
- return Object.prototype.hasOwnProperty.call(obj, prop);
-}
-
-module.exports = function(qs, sep, eq, options) {
- sep = sep || '&';
- eq = eq || '=';
- var obj = {};
-
- if (typeof qs !== 'string' || qs.length === 0) {
- return obj;
- }
-
- var regexp = /\+/g;
- qs = qs.split(sep);
-
- var maxKeys = 1000;
- if (options && typeof options.maxKeys === 'number') {
- maxKeys = options.maxKeys;
- }
-
- var len = qs.length;
- // maxKeys <= 0 means that we should not limit keys count
- if (maxKeys > 0 && len > maxKeys) {
- len = maxKeys;
- }
-
- for (var i = 0; i < len; ++i) {
- var x = qs[i].replace(regexp, '%20'),
- idx = x.indexOf(eq),
- kstr, vstr, k, v;
-
- if (idx >= 0) {
- kstr = x.substr(0, idx);
- vstr = x.substr(idx + 1);
- } else {
- kstr = x;
- vstr = '';
- }
-
- k = decodeURIComponent(kstr);
- v = decodeURIComponent(vstr);
-
- if (!hasOwnProperty(obj, k)) {
- obj[k] = v;
- } else if (isArray(obj[k])) {
- obj[k].push(v);
- } else {
- obj[k] = [obj[k], v];
- }
- }
-
- return obj;
-};
-
-var isArray = Array.isArray || function (xs) {
- return Object.prototype.toString.call(xs) === '[object Array]';
-};
-
-
/***/ }),
/***/ "ls82":
@@ -2480,18 +2465,6 @@ exports.RouterContext = React.createContext(null);
if (false) {}
-/***/ }),
-
-/***/ "s4NR":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-exports.decode = exports.parse = __webpack_require__("kd2E");
-exports.encode = exports.stringify = __webpack_require__("4JlD");
-
-
/***/ }),
/***/ "sXyB":
Diff for de003c3a9d30..b6.module.js
@@ -114,11 +114,16 @@ module.exports = _interopRequireWildcard;
/***/ }),
-/***/ "4JlD":
+/***/ "HG3D":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-// Copyright Joyent, Inc. and other Node contributors.
+
+
+exports.__esModule = true;
+exports.encode = encode;
+exports.decode = decode;
+exports.stringify = exports.parse = void 0; // Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
@@ -138,10 +143,18 @@ module.exports = _interopRequireWildcard;
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
+// If obj.hasOwnProperty has been overridden, then calling
+// obj.hasOwnProperty(prop) will break.
+// See: https://github.com/joyent/node/issues/1707
+// This is a modified version of querystring-es3 to allow passing
+// an option for custom decodeURIComponent logic which matches
+// the built-in node options https://nodejs.org/api/querystring.html#querystring_querystring_parse_str_sep_eq_options
+function hasOwnProperty(obj, prop) {
+ return Object.prototype.hasOwnProperty.call(obj, prop);
+}
-
-var stringifyPrimitive = function(v) {
+var stringifyPrimitive = function stringifyPrimitive(v) {
switch (typeof v) {
case 'string':
return v;
@@ -157,53 +170,117 @@ var stringifyPrimitive = function(v) {
}
};
-module.exports = function(obj, sep, eq, name) {
+function encode(obj, sep, eq, name) {
sep = sep || '&';
eq = eq || '=';
+
if (obj === null) {
obj = undefined;
}
if (typeof obj === 'object') {
- return map(objectKeys(obj), function(k) {
+ return map(objectKeys(obj), function (k) {
var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
+
if (isArray(obj[k])) {
- return map(obj[k], function(v) {
+ return map(obj[k], function (v) {
return ks + encodeURIComponent(stringifyPrimitive(v));
}).join(sep);
} else {
return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
}
}).join(sep);
-
}
if (!name) return '';
- return encodeURIComponent(stringifyPrimitive(name)) + eq +
- encodeURIComponent(stringifyPrimitive(obj));
-};
+ return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));
+}
var isArray = Array.isArray || function (xs) {
return Object.prototype.toString.call(xs) === '[object Array]';
};
-function map (xs, f) {
+function map(xs, f) {
if (xs.map) return xs.map(f);
var res = [];
+
for (var i = 0; i < xs.length; i++) {
res.push(f(xs[i], i));
}
+
return res;
}
var objectKeys = Object.keys || function (obj) {
var res = [];
+
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
}
+
return res;
};
+function decode(qs, sep, eq, options) {
+ sep = sep || '&';
+ eq = eq || '=';
+ var obj = {};
+ options = options || {};
+ var decodeComponent = options.decodeURIComponent || decodeURIComponent;
+
+ if (typeof qs !== 'string' || qs.length === 0) {
+ return obj;
+ }
+
+ var regexp = /\+/g;
+ qs = qs.split(sep);
+ var maxKeys = 1000;
+
+ if (options && typeof options.maxKeys === 'number') {
+ maxKeys = options.maxKeys;
+ }
+
+ var len = qs.length; // maxKeys <= 0 means that we should not limit keys count
+
+ if (maxKeys > 0 && len > maxKeys) {
+ len = maxKeys;
+ }
+
+ for (var i = 0; i < len; ++i) {
+ var x = qs[i].replace(regexp, '%20'),
+ idx = x.indexOf(eq),
+ kstr,
+ vstr,
+ k,
+ v;
+
+ if (idx >= 0) {
+ kstr = x.substr(0, idx);
+ vstr = x.substr(idx + 1);
+ } else {
+ kstr = x;
+ vstr = '';
+ }
+
+ k = decodeComponent(kstr);
+ v = decodeComponent(vstr);
+
+ if (!hasOwnProperty(obj, k)) {
+ obj[k] = v;
+ } else if (isArray(obj[k])) {
+ obj[k].push(v);
+ } else {
+ obj[k] = [obj[k], v];
+ }
+ }
+
+ return obj;
+}
+
+var parse = decode;
+exports.parse = parse;
+var stringify = encode;
+exports.stringify = stringify;
/***/ }),
@@ -218,7 +295,7 @@ var assign=Object.assign.bind(Object);module.exports=assign;module.exports.defau
/***/ "QmWs":
/***/ (function(module, exports, __webpack_require__) {
-var e,t=(e=__webpack_require__("s4NR"))&&"object"==typeof e&&"default"in e?e.default:e,r=/https?|ftp|gopher|file/;function o(e){"string"==typeof e&&(e=g(e));var o=function(e,t,r){var o=e.auth,a=e.hostname,s=e.protocol||"",c=e.pathname||"",h=e.hash||"",p=e.query||"",n=!1;o=o?encodeURIComponent(o).replace(/%3A/i,":")+"@":"",e.host?n=o+e.host:a&&(n=o+(~a.indexOf(":")?"["+a+"]":a),e.port&&(n+=":"+e.port)),p&&"object"==typeof p&&(p=t.encode(p));var l=e.search||p&&"?"+p||"";return s&&":"!==s.substr(-1)&&(s+=":"),e.slashes||(!s||r.test(s))&&!1!==n?(n="//"+(n||""),c&&"/"!==c[0]&&(c="/"+c)):n||(n=""),h&&"#"!==h[0]&&(h="#"+h),l&&"?"!==l[0]&&(l="?"+l),{protocol:s,host:n,pathname:c=c.replace(/[?#]/g,encodeURIComponent),search:l=l.replace("#","%23"),hash:h}}(e,t,r);return""+o.protocol+o.host+o.pathname+o.search+o.hash}var a="http://",s="w.w",c=a+s,h=/^([a-z0-9.+-]*:\/\/\/)([a-z0-9.+-]:\/*)?/i,p=/https?|ftp|gopher|file/;function n(e,t){var r="string"==typeof e?g(e):e;e="object"==typeof e?o(e):e;var s=g(t),n="";r.protocol&&!r.slashes&&(n=r.protocol,e=e.replace(r.protocol,""),n+="/"===t[0]||"/"===e[0]?"/":""),n&&s.protocol&&(n="",s.slashes||(n=s.protocol,t=t.replace(s.protocol,"")));var l=e.match(h);l&&!s.protocol&&(e=e.substr((n=l[1]+(l[2]||"")).length),/^\/\/[^/]/.test(t)&&(n=n.slice(0,-1)));var i=new URL(e,c+"/"),f=new URL(t,i).toString().replace(c,""),u=s.protocol||r.protocol;return u+=r.slashes||s.slashes?"//":"",!n&&u?f=f.replace(a,u):n&&(f=f.replace(a,"")),p.test(f)||~t.indexOf(".")||"/"===e.slice(-1)||"/"===t.slice(-1)||"/"!==f.slice(-1)||(f=f.slice(0,-1)),n&&(f=n+("/"===f[0]?f.substr(1):f)),f}function l(){}l.parse=g,l.format=o,l.resolve=n,l.resolveObject=n;var i=/^https?|ftp|gopher|file/,f=/^(.*?)([#?].*)/,u=/^([a-z0-9.+-]*:)(\/{0,3})(.*)/i,m=/^([a-z0-9.+-]*:)?\/\/\/*/i,v=/^([a-z0-9.+-]*:)(\/{0,2})\[(.*)\]$/i;function d(e){try{return decodeURI(e)}catch(t){return e}}function g(e,r,a){if(void 0===r&&(r=!1),void 0===a&&(a=!1),e&&"object"==typeof e&&e instanceof l)return e;var h=(e=e.trim()).match(f);e=h?d(h[1]).replace(/\\/g,"/")+h[2]:d(e).replace(/\\/g,"/"),v.test(e)&&"/"!==e.slice(-1)&&(e+="/");var p=!/(^javascript)/.test(e)&&e.match(u),n=m.test(e),g="";p&&(i.test(p[1])||(g=p[1].toLowerCase(),e=""+p[2]+p[3]),p[2]||(n=!1,i.test(p[1])?(g=p[1],e=""+p[3]):e="//"+p[3]),3!==p[2].length&&1!==p[2].length||(g=p[1],e="/"+p[3]));var b,y=(h?h[1]:e).match(/(:[0-9]+)/),j="";y&&y[1]&&3===y[1].length&&(e=e.replace(j=y[1],j+"00"));var w=new l,x="",U="";try{b=new URL(e)}catch(t){x=t,g||a||!/^\/\//.test(e)||/^\/\/.+[@.]/.test(e)||(U="/",e=e.substr(1));try{b=new URL(e,c)}catch(e){return w.protocol=g,w.href=g,w}}w.slashes=n&&!U,w.host=b.host===s?"":b.host,w.hostname=b.hostname===s?"":b.hostname.replace(/(\[|\])/g,""),w.protocol=x?g||null:b.protocol,w.search=b.search.replace(/\\/g,"%5C"),w.hash=b.hash.replace(/\\/g,"%5C");var R=e.split("#");!w.search&&~R[0].indexOf("?")&&(w.search="?"),w.hash||""!==R[1]||(w.hash="#"),w.query=r?t.decode(b.search.substr(1)):w.search.substr(1),w.pathname=U+d(b.pathname).replace(/"/g,"%22"),"about:"===w.protocol&&"blank"===w.pathname&&(w.protocol="",w.pathname=""),x&&"/"!==e[0]&&(w.pathname=w.pathname.substr(1)),g&&!i.test(g)&&"/"!==e.slice(-1)&&"/"===w.pathname&&(w.pathname=""),w.path=w.pathname+w.search,w.auth=[b.username,b.password].map(decodeURIComponent).filter(Boolean).join(":"),w.port=b.port,j&&(w.host=w.host.replace(j+"00",j),w.port=w.port.slice(0,-2)),w.href=U?""+w.pathname+w.search+w.hash:o(w);var O=/^(file)/.test(w.href)?["host","hostname"]:[];return Object.keys(w).forEach(function(e){~O.indexOf(e)||(w[e]=w[e]||null)}),w}exports.parse=g,exports.format=o,exports.resolve=n,exports.resolveObject=function(e,t){return g(n(e,t))},exports.Url=l;
+var e,t=(e=__webpack_require__("HG3D"))&&"object"==typeof e&&"default"in e?e.default:e,r=/https?|ftp|gopher|file/;function o(e){"string"==typeof e&&(e=g(e));var o=function(e,t,r){var o=e.auth,a=e.hostname,s=e.protocol||"",c=e.pathname||"",h=e.hash||"",p=e.query||"",n=!1;o=o?encodeURIComponent(o).replace(/%3A/i,":")+"@":"",e.host?n=o+e.host:a&&(n=o+(~a.indexOf(":")?"["+a+"]":a),e.port&&(n+=":"+e.port)),p&&"object"==typeof p&&(p=t.encode(p));var l=e.search||p&&"?"+p||"";return s&&":"!==s.substr(-1)&&(s+=":"),e.slashes||(!s||r.test(s))&&!1!==n?(n="//"+(n||""),c&&"/"!==c[0]&&(c="/"+c)):n||(n=""),h&&"#"!==h[0]&&(h="#"+h),l&&"?"!==l[0]&&(l="?"+l),{protocol:s,host:n,pathname:c=c.replace(/[?#]/g,encodeURIComponent),search:l=l.replace("#","%23"),hash:h}}(e,t,r);return""+o.protocol+o.host+o.pathname+o.search+o.hash}var a="http://",s="w.w",c=a+s,h=/^([a-z0-9.+-]*:\/\/\/)([a-z0-9.+-]:\/*)?/i,p=/https?|ftp|gopher|file/;function n(e,t){var r="string"==typeof e?g(e):e;e="object"==typeof e?o(e):e;var s=g(t),n="";r.protocol&&!r.slashes&&(n=r.protocol,e=e.replace(r.protocol,""),n+="/"===t[0]||"/"===e[0]?"/":""),n&&s.protocol&&(n="",s.slashes||(n=s.protocol,t=t.replace(s.protocol,"")));var l=e.match(h);l&&!s.protocol&&(e=e.substr((n=l[1]+(l[2]||"")).length),/^\/\/[^/]/.test(t)&&(n=n.slice(0,-1)));var i=new URL(e,c+"/"),f=new URL(t,i).toString().replace(c,""),u=s.protocol||r.protocol;return u+=r.slashes||s.slashes?"//":"",!n&&u?f=f.replace(a,u):n&&(f=f.replace(a,"")),p.test(f)||~t.indexOf(".")||"/"===e.slice(-1)||"/"===t.slice(-1)||"/"!==f.slice(-1)||(f=f.slice(0,-1)),n&&(f=n+("/"===f[0]?f.substr(1):f)),f}function l(){}l.parse=g,l.format=o,l.resolve=n,l.resolveObject=n;var i=/^https?|ftp|gopher|file/,f=/^(.*?)([#?].*)/,u=/^([a-z0-9.+-]*:)(\/{0,3})(.*)/i,m=/^([a-z0-9.+-]*:)?\/\/\/*/i,v=/^([a-z0-9.+-]*:)(\/{0,2})\[(.*)\]$/i;function d(e){try{return decodeURI(e)}catch(t){return e}}function g(e,r,a){if(void 0===r&&(r=!1),void 0===a&&(a=!1),e&&"object"==typeof e&&e instanceof l)return e;var h=(e=e.trim()).match(f);e=h?d(h[1]).replace(/\\/g,"/")+h[2]:d(e).replace(/\\/g,"/"),v.test(e)&&"/"!==e.slice(-1)&&(e+="/");var p=!/(^javascript)/.test(e)&&e.match(u),n=m.test(e),g="";p&&(i.test(p[1])||(g=p[1].toLowerCase(),e=""+p[2]+p[3]),p[2]||(n=!1,i.test(p[1])?(g=p[1],e=""+p[3]):e="//"+p[3]),3!==p[2].length&&1!==p[2].length||(g=p[1],e="/"+p[3]));var b,y=(h?h[1]:e).match(/(:[0-9]+)/),j="";y&&y[1]&&3===y[1].length&&(e=e.replace(j=y[1],j+"00"));var w=new l,x="",U="";try{b=new URL(e)}catch(t){x=t,g||a||!/^\/\//.test(e)||/^\/\/.+[@.]/.test(e)||(U="/",e=e.substr(1));try{b=new URL(e,c)}catch(e){return w.protocol=g,w.href=g,w}}w.slashes=n&&!U,w.host=b.host===s?"":b.host,w.hostname=b.hostname===s?"":b.hostname.replace(/(\[|\])/g,""),w.protocol=x?g||null:b.protocol,w.search=b.search.replace(/\\/g,"%5C"),w.hash=b.hash.replace(/\\/g,"%5C");var R=e.split("#");!w.search&&~R[0].indexOf("?")&&(w.search="?"),w.hash||""!==R[1]||(w.hash="#"),w.query=r?t.decode(b.search.substr(1)):w.search.substr(1),w.pathname=U+d(b.pathname).replace(/"/g,"%22"),"about:"===w.protocol&&"blank"===w.pathname&&(w.protocol="",w.pathname=""),x&&"/"!==e[0]&&(w.pathname=w.pathname.substr(1)),g&&!i.test(g)&&"/"!==e.slice(-1)&&"/"===w.pathname&&(w.pathname=""),w.path=w.pathname+w.search,w.auth=[b.username,b.password].map(decodeURIComponent).filter(Boolean).join(":"),w.port=b.port,j&&(w.host=w.host.replace(j+"00",j),w.port=w.port.slice(0,-2)),w.href=U?""+w.pathname+w.search+w.hash:o(w);var O=/^(file)/.test(w.href)?["host","hostname"]:[];return Object.keys(w).forEach(function(e){~O.indexOf(e)||(w[e]=w[e]||null)}),w}exports.parse=g,exports.format=o,exports.resolve=n,exports.resolveObject=function(e,t){return g(n(e,t))},exports.Url=l;
//# sourceMappingURL=index.js.map
@@ -1210,98 +1287,6 @@ function getRouteMatcher(routeRegex) {
exports.getRouteMatcher = getRouteMatcher;
-/***/ }),
-
-/***/ "kd2E":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-
-// If obj.hasOwnProperty has been overridden, then calling
-// obj.hasOwnProperty(prop) will break.
-// See: https://github.com/joyent/node/issues/1707
-function hasOwnProperty(obj, prop) {
- return Object.prototype.hasOwnProperty.call(obj, prop);
-}
-
-module.exports = function(qs, sep, eq, options) {
- sep = sep || '&';
- eq = eq || '=';
- var obj = {};
-
- if (typeof qs !== 'string' || qs.length === 0) {
- return obj;
- }
-
- var regexp = /\+/g;
- qs = qs.split(sep);
-
- var maxKeys = 1000;
- if (options && typeof options.maxKeys === 'number') {
- maxKeys = options.maxKeys;
- }
-
- var len = qs.length;
- // maxKeys <= 0 means that we should not limit keys count
- if (maxKeys > 0 && len > maxKeys) {
- len = maxKeys;
- }
-
- for (var i = 0; i < len; ++i) {
- var x = qs[i].replace(regexp, '%20'),
- idx = x.indexOf(eq),
- kstr, vstr, k, v;
-
- if (idx >= 0) {
- kstr = x.substr(0, idx);
- vstr = x.substr(idx + 1);
- } else {
- kstr = x;
- vstr = '';
- }
-
- k = decodeURIComponent(kstr);
- v = decodeURIComponent(vstr);
-
- if (!hasOwnProperty(obj, k)) {
- obj[k] = v;
- } else if (isArray(obj[k])) {
- obj[k].push(v);
- } else {
- obj[k] = [obj[k], v];
- }
- }
-
- return obj;
-};
-
-var isArray = Array.isArray || function (xs) {
- return Object.prototype.toString.call(xs) === '[object Array]';
-};
-
-
/***/ }),
/***/ "nOHt":
@@ -1490,18 +1475,6 @@ exports.RouterContext = React.createContext(null);
if (false) {}
-/***/ }),
-
-/***/ "s4NR":
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-exports.decode = exports.parse = __webpack_require__("kd2E");
-exports.encode = exports.stringify = __webpack_require__("4JlD");
-
-
/***/ })
}]);
\ No newline at end of file
Diff for main-HASH.js
@@ -233,7 +233,7 @@ var _headManagerContext = __webpack_require__("FYa8");
var _routerContext = __webpack_require__("qOIg");
-var _querystring = __webpack_require__("s4NR");
+var _querystring = __webpack_require__("HG3D");
var _isDynamic = __webpack_require__("/jkW");
@@ -325,8 +325,27 @@ var Container = /*#__PURE__*/function (_react$default$Compon) {
if (router.isSsr && (isFallback || data.nextExport && ((0, _isDynamic.isDynamicRoute)(router.pathname) || location.search) || props.__N_SSG && location.search)) {
- // update query on mount for exported pages
- router.replace(router.pathname + '?' + (0, _querystring.stringify)((0, _extends2["default"])({}, router.query, {}, (0, _querystring.parse)(location.search.substr(1)))), asPath, {
+ var parsedQuery = (0, _querystring.parse)(location.search.substr(1), '&', '=', {
+ decodeURIComponent: function (_decodeURIComponent) {
+ function decodeURIComponent(_x) {
+ return _decodeURIComponent.apply(this, arguments);
+ }
+
+ decodeURIComponent.toString = function () {
+ return _decodeURIComponent.toString();
+ };
+
+ return decodeURIComponent;
+ }(function (str) {
+ try {
+ return decodeURIComponent(str);
+ } catch (err) {
+ return str;
+ }
+ })
+ }); // update query on mount for exported pages
+
+ router.replace(router.pathname + '?' + (0, _querystring.stringify)((0, _extends2["default"])({}, router.query, {}, parsedQuery)), asPath, {
// WARNING: `_h` is an internal option for handing Next.js
// client-side hydration. Your app should _never_ use this property.
// It may change at any time without notice.
Diff for main-HASH.module.js
@@ -193,7 +193,7 @@ var _headManagerContext = __webpack_require__("FYa8");
var _routerContext = __webpack_require__("qOIg");
-var _querystring = __webpack_require__("s4NR");
+var _querystring = __webpack_require__("HG3D");
var _isDynamic = __webpack_require__("/jkW");
@@ -271,8 +271,27 @@ class Container extends _react.default.Component {
if (router.isSsr && (isFallback || data.nextExport && ((0, _isDynamic.isDynamicRoute)(router.pathname) || location.search) || props.__N_SSG && location.search)) {
- // update query on mount for exported pages
- router.replace(router.pathname + '?' + (0, _querystring.stringify)((0, _extends2.default)({}, router.query, {}, (0, _querystring.parse)(location.search.substr(1)))), asPath, {
+ var parsedQuery = (0, _querystring.parse)(location.search.substr(1), '&', '=', {
+ decodeURIComponent: function (_decodeURIComponent) {
+ function decodeURIComponent(_x) {
+ return _decodeURIComponent.apply(this, arguments);
+ }
+
+ decodeURIComponent.toString = function () {
+ return _decodeURIComponent.toString();
+ };
+
+ return decodeURIComponent;
+ }(str => {
+ try {
+ return decodeURIComponent(str);
+ } catch (err) {
+ return str;
+ }
+ })
+ }); // update query on mount for exported pages
+
+ router.replace(router.pathname + '?' + (0, _querystring.stringify)((0, _extends2.default)({}, router.query, {}, parsedQuery)), asPath, {
// WARNING: `_h` is an internal option for handing Next.js
// client-side hydration. Your app should _never_ use this property.
// It may change at any time without notice.
Diff for index.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/index.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.e33c31df63c7bd08d3b6.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-f77bc7795f1b604d4867.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next">Hello world 👋</div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"BUILD_ID","isFallback":false,"gip":true}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-51838dc5b2b8e0705281.js"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3ae202e2988e23ef6016.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.e33c31df63c7bd08d3b6.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-53fa6ff5b47debf41437.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-f77bc7795f1b604d4867.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_ssgManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_ssgManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/index.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.162526e009e26504b896.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-00f1ee44b583a0888426.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next">Hello world 👋</div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"BUILD_ID","isFallback":false,"gip":true}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-51838dc5b2b8e0705281.js"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/" src="/_next/static/BUILD_ID/pages/index.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.e4397b5a3cf74bc6412c.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.162526e009e26504b896.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-190a919bac7ebe1c5a01.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-00f1ee44b583a0888426.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_ssgManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_ssgManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
Diff for link.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/link.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.e33c31df63c7bd08d3b6.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-f77bc7795f1b604d4867.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div><h3>A Link page!</h3><a href="/">Go to /</a></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/link","query":{},"buildId":"BUILD_ID","isFallback":false,"gip":true}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-51838dc5b2b8e0705281.js"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3ae202e2988e23ef6016.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.e33c31df63c7bd08d3b6.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-53fa6ff5b47debf41437.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-f77bc7795f1b604d4867.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_ssgManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_ssgManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/link.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.162526e009e26504b896.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-00f1ee44b583a0888426.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div><h3>A Link page!</h3><a href="/">Go to /</a></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/link","query":{},"buildId":"BUILD_ID","isFallback":false,"gip":true}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-51838dc5b2b8e0705281.js"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/link" src="/_next/static/BUILD_ID/pages/link.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.e4397b5a3cf74bc6412c.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.162526e009e26504b896.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-190a919bac7ebe1c5a01.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-00f1ee44b583a0888426.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_ssgManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_ssgManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
Diff for withRouter.html
@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/withRouter.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.e33c31df63c7bd08d3b6.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-f77bc7795f1b604d4867.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div>I use withRouter</div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/withRouter","query":{},"buildId":"BUILD_ID","isFallback":false,"gip":true}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-51838dc5b2b8e0705281.js"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3ae202e2988e23ef6016.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.e33c31df63c7bd08d3b6.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-53fa6ff5b47debf41437.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-f77bc7795f1b604d4867.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_ssgManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_ssgManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/BUILD_ID/pages/_app.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/BUILD_ID/pages/withRouter.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.162526e009e26504b896.module.js" as="script" crossorigin="anonymous"/><link rel="preload" href="/_next/static/runtime/main-00f1ee44b583a0888426.module.js" as="script" crossorigin="anonymous"/></head><body><div id="__next"><div>I use withRouter</div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="anonymous">{"props":{"pageProps":{}},"page":"/withRouter","query":{},"buildId":"BUILD_ID","isFallback":false,"gip":true}</script><script crossorigin="anonymous" nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" nomodule="" src="/_next/static/runtime/polyfills-51838dc5b2b8e0705281.js"></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/_app" src="/_next/static/BUILD_ID/pages/_app.module.js" crossorigin="anonymous" type="module"></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.js" crossorigin="anonymous" nomodule=""></script><script async="" data-next-page="/withRouter" src="/_next/static/BUILD_ID/pages/withRouter.module.js" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/webpack-4d739ac7b0d8f888ab18.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/webpack-d629b83a65f3e33fa99e.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/framework.5bb7f30f859f5f31359f.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.e4397b5a3cf74bc6412c.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.162526e009e26504b896.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/runtime/main-190a919bac7ebe1c5a01.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/runtime/main-00f1ee44b583a0888426.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_buildManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_buildManifest.module.js" async="" crossorigin="anonymous" type="module"></script><script src="/_next/static/BUILD_ID/_ssgManifest.js" async="" crossorigin="anonymous" nomodule=""></script><script src="/_next/static/BUILD_ID/_ssgManifest.module.js" async="" crossorigin="anonymous" type="module"></script></body></html>
\ No newline at end of file
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
buildDuration | 12.2s | 12.7s | |
nodeModulesSize | 55.2 MB | 55.2 MB |
Client Bundles (main, webpack, commons) Overall increase ⚠️
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.js gzip | 6.25 kB | 6.31 kB | |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..45d6.js gzip | 10.3 kB | N/A | N/A |
framework.a1..NSE.txt gzip | 220 B | 220 B | ✓ |
framework.a1..NSE.txt gzip | 220 B | 220 B | ✓ |
framework.HASH.js gzip | 39 kB | 39 kB | ✓ |
de003c3a9d30..ed83.js gzip | N/A | 10.3 kB | N/A |
Overall change | 56.7 kB | 56.8 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.module.js gzip | 4.79 kB | 4.85 kB | |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.87 kB | N/A | N/A |
framework.HA..dule.js gzip | 39 kB | 39 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 6.86 kB | N/A |
Overall change | 51.4 kB | 51.5 kB |
Legacy Client Bundles (polyfills)
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.2 kB | 26.2 kB | ✓ |
Overall change | 26.2 kB | 26.2 kB | ✓ |
Client Pages
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_app.js gzip | 1.23 kB | 1.23 kB | ✓ |
_error.js gzip | 3.12 kB | 3.12 kB | ✓ |
hooks.js gzip | 663 B | 663 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.06 kB | 2.06 kB | ✓ |
routerDirect.js gzip | 280 B | 280 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 7.85 kB | 7.85 kB | ✓ |
Client Pages Modern
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_app.module.js gzip | 598 B | 598 B | ✓ |
_error.module.js gzip | 2.09 kB | 2.09 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
routerDirect..dule.js gzip | 279 B | 279 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.37 kB | 5.37 kB | ✓ |
Client Build Manifests
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 122 B | 122 B | ✓ |
Serverless bundles
zeit/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_error.js | 558 kB | 558 kB | ✓ |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 558 kB | 558 kB | ✓ |
link.js | 595 kB | 595 kB | ✓ |
routerDirect.js | 587 kB | 587 kB | ✓ |
withRouter.js | 587 kB | 587 kB | ✓ |
Overall change | 2.89 MB | 2.89 MB | ✓ |
I think we should probably just catch the error and render a proper error screen instead of handling it |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This code looks way too overkill IMO. Is there a tiny npm module or something that we can adapt that handles this? Not a fan of stubbing querystring
either really.
I think we should just handle the error being thrown, that's the overarching issue it seems. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's render /_error
with the Bad Request error instead of gracefully handling.
@Timer rendering an error during CSR for this will differ from SSR since during SSR it works without error, note the added test here https://github.com/vercel/next.js/pull/12154/files#diff-69f7e9194d478ccba109389dc3578e3cR378 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please test more complex cases:
> querystring.parse('b=%2sf%2a')
[Object: null prototype] { b: '%2sf*' }
> querystring.parse('b=%2%2af%2a')
[Object: null prototype] { b: '%2%2af*' }
> querystring.parse('b=%2%2a%2af%2a')
[Object: null prototype] { b: '%2%2a*f*' }
> querystring.parse('b=%%2a')
[Object: null prototype] { b: '%%2a' }
> querystring.parse('b=%%2a%2a')
[Object: null prototype] { b: '%%2a*' }
Do we want to match the We can match |
Let's see what the weight increase is of C+P the Node impl to match it exact. |
Stats from current PRDefault Server Mode (Increase detected
|
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
buildDuration | 11.5s | 12.5s | |
nodeModulesSize | 65.3 MB | 65.3 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 1.993 | 2.077 | |
/ avg req/sec | 1254.32 | 1203.41 | -50.91 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.336 | 1.258 | -0.08 |
/error-in-render avg req/sec | 1871.86 | 1987.07 |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..6c2a.js gzip | 10.5 kB | N/A | N/A |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..ef61.js gzip | N/A | 18.1 kB | N/A |
Overall change | 57 kB | 64.6 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.93 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 14.4 kB | N/A |
Overall change | 52.5 kB | 60 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | 2.05 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.21 kB | 8.21 kB | ✓ |
Client Pages Modern
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.51 kB | 1.51 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.32 kB | 5.32 kB | ✓ |
Client Build Manifests
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 122 B | 122 B | ✓ |
Rendered Page Sizes Overall decrease ✓
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
index.html gzip | 925 B | 925 B | ✓ |
link.html gzip | 935 B | 935 B | ✓ |
withRouter.html gzip | 923 B | 922 B | -1 B |
Overall change | 2.78 kB | 2.78 kB | -1 B |
Diffs
Diff for de003c3a9d30..8a09594e6.js
Diff too large to display
Diff for de003c3a9d30..34.module.js
deleted
Diff for de003c3a9d30..e6.module.js
Diff too large to display
Diff for main-HASH.js
@@ -252,7 +252,7 @@
var _router = __webpack_require__("nOHt");
- var _querystring = __webpack_require__("s4NR");
+ var _querystring = __webpack_require__("HG3D");
var _react = _interopRequireDefault(__webpack_require__("q1tI"));
Diff for main-HASH.module.js
@@ -172,7 +172,7 @@
var _router = __webpack_require__("nOHt");
- var _querystring = __webpack_require__("s4NR");
+ var _querystring = __webpack_require__("HG3D");
var _react = _interopRequireDefault(__webpack_require__("q1tI"));
Diff for index.html
@@ -30,13 +30,13 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2a9df3ecdcd8c7823f34.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3c80bb2585780eac15e6.module.js"
as="script"
crossorigin="anonymous"
/>
<link
rel="preload"
- href="/_next/static/runtime/main-4b42eee9e2c6700187bd.module.js"
+ href="/_next/static/runtime/main-e4dc39a0a4c730b2c346.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -133,25 +133,25 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.133d5a9780b8a09594e6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.e09c373fa6cd0f7db853.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2a9df3ecdcd8c7823f34.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3c80bb2585780eac15e6.module.js"
async=""
crossorigin="anonymous"
type="module"
></script>
<script
- src="/_next/static/runtime/main-ade021272639fc39635d.js"
+ src="/_next/static/runtime/main-565b3ca68e174691f56b.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/runtime/main-4b42eee9e2c6700187bd.module.js"
+ src="/_next/static/runtime/main-e4dc39a0a4c730b2c346.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for link.html
@@ -30,13 +30,13 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2a9df3ecdcd8c7823f34.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3c80bb2585780eac15e6.module.js"
as="script"
crossorigin="anonymous"
/>
<link
rel="preload"
- href="/_next/static/runtime/main-4b42eee9e2c6700187bd.module.js"
+ href="/_next/static/runtime/main-e4dc39a0a4c730b2c346.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -138,25 +138,25 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.133d5a9780b8a09594e6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.e09c373fa6cd0f7db853.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2a9df3ecdcd8c7823f34.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3c80bb2585780eac15e6.module.js"
async=""
crossorigin="anonymous"
type="module"
></script>
<script
- src="/_next/static/runtime/main-ade021272639fc39635d.js"
+ src="/_next/static/runtime/main-565b3ca68e174691f56b.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/runtime/main-4b42eee9e2c6700187bd.module.js"
+ src="/_next/static/runtime/main-e4dc39a0a4c730b2c346.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for withRouter.html
@@ -30,13 +30,13 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2a9df3ecdcd8c7823f34.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3c80bb2585780eac15e6.module.js"
as="script"
crossorigin="anonymous"
/>
<link
rel="preload"
- href="/_next/static/runtime/main-4b42eee9e2c6700187bd.module.js"
+ href="/_next/static/runtime/main-e4dc39a0a4c730b2c346.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -133,25 +133,25 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.133d5a9780b8a09594e6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.e09c373fa6cd0f7db853.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2a9df3ecdcd8c7823f34.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.3c80bb2585780eac15e6.module.js"
async=""
crossorigin="anonymous"
type="module"
></script>
<script
- src="/_next/static/runtime/main-ade021272639fc39635d.js"
+ src="/_next/static/runtime/main-565b3ca68e174691f56b.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/runtime/main-4b42eee9e2c6700187bd.module.js"
+ src="/_next/static/runtime/main-e4dc39a0a4c730b2c346.module.js"
async=""
crossorigin="anonymous"
type="module"
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
buildDuration | 12.7s | 13.3s | |
nodeModulesSize | 65.3 MB | 65.3 MB |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..6c2a.js gzip | 10.5 kB | N/A | N/A |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..ef61.js gzip | N/A | 18.1 kB | N/A |
Overall change | 57 kB | 64.6 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.93 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 14.4 kB | N/A |
Overall change | 52.5 kB | 60 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | 2.05 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.21 kB | 8.21 kB | ✓ |
Client Pages Modern
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.51 kB | 1.51 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.32 kB | 5.32 kB | ✓ |
Client Build Manifests
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 122 B | 122 B | ✓ |
Serverless bundles
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_error.js | 877 kB | 877 kB | ✓ |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 877 kB | 877 kB | ✓ |
link.js | 915 kB | 915 kB | ✓ |
routerDirect.js | 908 kB | 908 kB | ✓ |
withRouter.js | 908 kB | 908 kB | ✓ |
Overall change | 4.49 MB | 4.49 MB | ✓ |
Failing test suitestest/integration/size-limit/test/index.test.js
Expand output● Production response size › should not increase the overall response size of default build
● Production response size › should not increase the overall response size of modern build
|
Stats from current PRDefault Server Mode (Increase detected
|
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
buildDuration | 12.4s | 14.6s | |
nodeModulesSize | 65.3 MB | 65.3 MB |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.292 | 2.575 | |
/ avg req/sec | 1090.55 | 970.86 | -119.69 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.285 | 1.552 | |
/error-in-render avg req/sec | 1945.79 | 1610.85 | -334.94 |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..6c2a.js gzip | 10.5 kB | N/A | N/A |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..f860.js gzip | N/A | 18.1 kB | N/A |
Overall change | 57 kB | 64.6 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.93 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 14.4 kB | N/A |
Overall change | 52.5 kB | 60 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | 2.05 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.21 kB | 8.21 kB | ✓ |
Client Pages Modern
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.51 kB | 1.51 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.32 kB | 5.32 kB | ✓ |
Client Build Manifests
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 122 B | 122 B | ✓ |
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
index.html gzip | 925 B | 928 B | |
link.html gzip | 935 B | 937 B | |
withRouter.html gzip | 923 B | 925 B | |
Overall change | 2.78 kB | 2.79 kB |
Diffs
Diff for de003c3a9d30..8a09594e6.js
Diff too large to display
Diff for de003c3a9d30..34.module.js
deleted
Diff for de003c3a9d30..58.module.js
Diff too large to display
Diff for main-HASH.js
@@ -252,7 +252,7 @@
var _router = __webpack_require__("nOHt");
- var _querystring = __webpack_require__("s4NR");
+ var _querystring = __webpack_require__("HG3D");
var _react = _interopRequireDefault(__webpack_require__("q1tI"));
Diff for main-HASH.module.js
@@ -172,7 +172,7 @@
var _router = __webpack_require__("nOHt");
- var _querystring = __webpack_require__("s4NR");
+ var _querystring = __webpack_require__("HG3D");
var _react = _interopRequireDefault(__webpack_require__("q1tI"));
Diff for index.html
@@ -30,13 +30,13 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2a9df3ecdcd8c7823f34.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.aef395d7a49b93143558.module.js"
as="script"
crossorigin="anonymous"
/>
<link
rel="preload"
- href="/_next/static/runtime/main-4b42eee9e2c6700187bd.module.js"
+ href="/_next/static/runtime/main-e4dc39a0a4c730b2c346.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -133,25 +133,25 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.133d5a9780b8a09594e6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.fc37d4583578211eaf6b.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2a9df3ecdcd8c7823f34.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.aef395d7a49b93143558.module.js"
async=""
crossorigin="anonymous"
type="module"
></script>
<script
- src="/_next/static/runtime/main-ade021272639fc39635d.js"
+ src="/_next/static/runtime/main-565b3ca68e174691f56b.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/runtime/main-4b42eee9e2c6700187bd.module.js"
+ src="/_next/static/runtime/main-e4dc39a0a4c730b2c346.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for link.html
@@ -30,13 +30,13 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2a9df3ecdcd8c7823f34.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.aef395d7a49b93143558.module.js"
as="script"
crossorigin="anonymous"
/>
<link
rel="preload"
- href="/_next/static/runtime/main-4b42eee9e2c6700187bd.module.js"
+ href="/_next/static/runtime/main-e4dc39a0a4c730b2c346.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -138,25 +138,25 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.133d5a9780b8a09594e6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.fc37d4583578211eaf6b.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2a9df3ecdcd8c7823f34.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.aef395d7a49b93143558.module.js"
async=""
crossorigin="anonymous"
type="module"
></script>
<script
- src="/_next/static/runtime/main-ade021272639fc39635d.js"
+ src="/_next/static/runtime/main-565b3ca68e174691f56b.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/runtime/main-4b42eee9e2c6700187bd.module.js"
+ src="/_next/static/runtime/main-e4dc39a0a4c730b2c346.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for withRouter.html
@@ -30,13 +30,13 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2a9df3ecdcd8c7823f34.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.aef395d7a49b93143558.module.js"
as="script"
crossorigin="anonymous"
/>
<link
rel="preload"
- href="/_next/static/runtime/main-4b42eee9e2c6700187bd.module.js"
+ href="/_next/static/runtime/main-e4dc39a0a4c730b2c346.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -133,25 +133,25 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.133d5a9780b8a09594e6.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.fc37d4583578211eaf6b.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2a9df3ecdcd8c7823f34.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.aef395d7a49b93143558.module.js"
async=""
crossorigin="anonymous"
type="module"
></script>
<script
- src="/_next/static/runtime/main-ade021272639fc39635d.js"
+ src="/_next/static/runtime/main-565b3ca68e174691f56b.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/runtime/main-4b42eee9e2c6700187bd.module.js"
+ src="/_next/static/runtime/main-e4dc39a0a4c730b2c346.module.js"
async=""
crossorigin="anonymous"
type="module"
Serverless Mode (Increase detected ⚠️ )
General Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
buildDuration | 12.3s | 12.9s | |
nodeModulesSize | 65.3 MB | 65.3 MB |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.js gzip | 6.59 kB | 6.59 kB | |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..6c2a.js gzip | 10.5 kB | N/A | N/A |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..f860.js gzip | N/A | 18.1 kB | N/A |
Overall change | 57 kB | 64.6 kB |
Client Bundles (main, webpack, commons) Modern Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.67 kB | 5.67 kB | |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.93 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 14.4 kB | N/A |
Overall change | 52.5 kB | 60 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
_error.js gzip | 3.25 kB | 3.25 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | 2.05 kB | ✓ |
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
Overall change | 8.21 kB | 8.21 kB | ✓ |
Client Pages Modern
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_app.module.js gzip | 604 B | 604 B | ✓ |
_error.module.js gzip | 2.04 kB | 2.04 kB | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
index.module.js gzip | 223 B | 223 B | ✓ |
link.module.js gzip | 1.51 kB | 1.51 kB | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
Overall change | 5.32 kB | 5.32 kB | ✓ |
Client Build Manifests
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_buildManifest.js gzip | 61 B | 61 B | ✓ |
_buildManife..dule.js gzip | 61 B | 61 B | ✓ |
Overall change | 122 B | 122 B | ✓ |
Serverless bundles
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_error.js | 877 kB | 877 kB | ✓ |
404.html | 4.18 kB | 4.18 kB | ✓ |
hooks.html | 3.81 kB | 3.81 kB | ✓ |
index.js | 877 kB | 877 kB | ✓ |
link.js | 915 kB | 915 kB | ✓ |
routerDirect.js | 908 kB | 908 kB | ✓ |
withRouter.js | 908 kB | 908 kB | ✓ |
Overall change | 4.49 MB | 4.49 MB | ✓ |
Failing test suitestest/integration/size-limit/test/index.test.js
Expand output● Production response size › should not increase the overall response size of default build
● Production response size › should not increase the overall response size of modern build
|
@Timer took another look at this with using Per https://url.spec.whatwg.org/#percent-encoded-bytes, if byte is 0x25 (%) and the next two bytes after byte in input are not in the ranges 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F), and 0x61 (a) to 0x66 (f), all inclusive, append byte to output. Which Object.fromEntries(new URLSearchParams('id=0&value=%')) // should be {id: "0", value: "%"}
Object.fromEntries(new URLSearchParams('b=%2sf%2a')) // should be {b: "%2sf*"}
Object.fromEntries(new URLSearchParams('b=%2%2af%2a')) // should be {b: "%2*f*"} in |
Interesting... if you haven't done so already, can you open an issue on the nodejs/node issue tracker for the discrepancy? |
@jasnell opened an issue in node for this here nodejs/node#33892 |
Stats from current PRDefault Server Mode (Increase detected
|
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
buildDuration | 13.4s | 13.4s | -82ms |
nodeModulesSize | 67 MB | 67 MB |
Page Load Tests Overall increase ✓
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.276 | 2.289 | |
/ avg req/sec | 1098.27 | 1092.2 | -6.07 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.549 | 1.534 | -0.01 |
/error-in-render avg req/sec | 1613.75 | 1629.98 |
Client Bundles (main, webpack, commons) Overall decrease ✓
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.js gzip | 6.51 kB | 6.51 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..4dd5.js gzip | 10.5 kB | 10.5 kB | -80 B |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 56.9 kB | 56.9 kB | -80 B |
Client Bundles (main, webpack, commons) Modern Overall decrease ✓
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.6 kB | 5.6 kB | -1 B |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 6.84 kB | N/A |
Overall change | 52.4 kB | 52.3 kB | -87 B |
Legacy Client Bundles (polyfills)
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
_error.js gzip | 3.37 kB | 3.37 kB | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | 2.05 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
Overall change | 8.34 kB | 8.34 kB | ✓ |
Client Pages Modern
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
index.module.js gzip | 223 B | 223 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
_error.module.js gzip | 2.21 kB | 2.21 kB | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
_app.module.js gzip | 604 B | 604 B | ✓ |
Overall change | 5.49 kB | 5.49 kB | ✓ |
Client Build Manifests
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_buildManifest.js gzip | 270 B | 270 B | ✓ |
_buildManife..dule.js gzip | 274 B | 274 B | ✓ |
Overall change | 544 B | 544 B | ✓ |
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
index.html gzip | 953 B | 954 B | |
link.html gzip | 960 B | 960 B | ✓ |
withRouter.html gzip | 947 B | 947 B | ✓ |
Overall change | 2.86 kB | 2.86 kB |
Diffs
Diff for de003c3a9d30..ce095b7e0.js
@@ -121,30 +121,13 @@
/***/
},
- /***/ "4JlD": /***/ function(module, exports, __webpack_require__) {
+ /***/ HG3D: /***/ function(module, exports, __webpack_require__) {
"use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- var stringifyPrimitive = function(v) {
+
+ exports.__esModule = true;
+ exports.encode = exports.stringify = exports.decode = exports.parse = void 0;
+
+ function stringifyPrimitive(v) {
switch (typeof v) {
case "string":
return v;
@@ -158,26 +141,28 @@
default:
return "";
}
- };
+ }
- module.exports = function(obj, sep, eq, name) {
+ var stringify = function stringify(obj, sep, eq, name) {
sep = sep || "&";
eq = eq || "=";
- if (obj === null) {
- obj = undefined;
- }
- if (typeof obj === "object") {
- return map(objectKeys(obj), function(k) {
- var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
- if (isArray(obj[k])) {
- return map(obj[k], function(v) {
- return ks + encodeURIComponent(stringifyPrimitive(v));
- }).join(sep);
- } else {
- return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
- }
- }).join(sep);
+ if (obj && typeof obj === "object") {
+ return Object.keys(obj)
+ .map(function(k) {
+ var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
+
+ if (Array.isArray(obj[k])) {
+ return obj[k]
+ .map(function(v) {
+ return ks + encodeURIComponent(stringifyPrimitive(v));
+ })
+ .join(sep);
+ } else {
+ return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
+ }
+ })
+ .join(sep);
}
if (!name) return "";
@@ -188,30 +173,72 @@
);
};
- var isArray =
- Array.isArray ||
- function(xs) {
- return Object.prototype.toString.call(xs) === "[object Array]";
- };
+ exports.encode = exports.stringify = stringify;
- function map(xs, f) {
- if (xs.map) return xs.map(f);
- var res = [];
- for (var i = 0; i < xs.length; i++) {
- res.push(f(xs[i], i));
- }
- return res;
+ function hasOwnProperty(obj, prop) {
+ return Object.prototype.hasOwnProperty.call(obj, prop);
}
- var objectKeys =
- Object.keys ||
- function(obj) {
- var res = [];
- for (var key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
+ var parse = function parse(qs, sep, eq, options) {
+ // use URLSearchParams if no legacy options provided
+ if (!sep && !eq && !options) {
+ return Object.fromEntries(new URLSearchParams(qs));
+ }
+
+ sep = sep || "&";
+ eq = eq || "=";
+ var obj = {};
+
+ if (typeof qs !== "string" || qs.length === 0) {
+ return obj;
+ }
+
+ var regexp = /\+/g;
+ var qsParts = qs.split(sep);
+ var maxKeys = 1000;
+
+ if (options && typeof options.maxKeys === "number") {
+ maxKeys = options.maxKeys;
+ }
+
+ var len = qsParts.length; // maxKeys <= 0 means that we should not limit keys count
+
+ if (maxKeys > 0 && len > maxKeys) {
+ len = maxKeys;
+ }
+
+ for (var i = 0; i < len; ++i) {
+ var x = qsParts[i].replace(regexp, "%20"),
+ idx = x.indexOf(eq),
+ kstr,
+ vstr,
+ k,
+ v;
+
+ if (idx >= 0) {
+ kstr = x.substr(0, idx);
+ vstr = x.substr(idx + 1);
+ } else {
+ kstr = x;
+ vstr = "";
}
- return res;
- };
+
+ k = decodeURIComponent(kstr);
+ v = decodeURIComponent(vstr);
+
+ if (!hasOwnProperty(obj, k)) {
+ obj[k] = v;
+ } else if (Array.isArray(obj[k])) {
+ obj[k].push(v);
+ } else {
+ obj[k] = [obj[k], v];
+ }
+ }
+
+ return obj;
+ };
+
+ exports.decode = exports.parse = parse;
/***/
},
@@ -252,7 +279,7 @@
/***/ QmWs: /***/ function(module, exports, __webpack_require__) {
var e,
t =
- (e = __webpack_require__("s4NR")) &&
+ (e = __webpack_require__("HG3D")) &&
"object" == typeof e &&
"default" in e
? e.default
@@ -1910,99 +1937,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ kd2E: /***/ function(module, exports, __webpack_require__) {
- "use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- // If obj.hasOwnProperty has been overridden, then calling
- // obj.hasOwnProperty(prop) will break.
- // See: https://github.com/joyent/node/issues/1707
- function hasOwnProperty(obj, prop) {
- return Object.prototype.hasOwnProperty.call(obj, prop);
- }
-
- module.exports = function(qs, sep, eq, options) {
- sep = sep || "&";
- eq = eq || "=";
- var obj = {};
-
- if (typeof qs !== "string" || qs.length === 0) {
- return obj;
- }
-
- var regexp = /\+/g;
- qs = qs.split(sep);
-
- var maxKeys = 1000;
- if (options && typeof options.maxKeys === "number") {
- maxKeys = options.maxKeys;
- }
-
- var len = qs.length;
- // maxKeys <= 0 means that we should not limit keys count
- if (maxKeys > 0 && len > maxKeys) {
- len = maxKeys;
- }
-
- for (var i = 0; i < len; ++i) {
- var x = qs[i].replace(regexp, "%20"),
- idx = x.indexOf(eq),
- kstr,
- vstr,
- k,
- v;
-
- if (idx >= 0) {
- kstr = x.substr(0, idx);
- vstr = x.substr(idx + 1);
- } else {
- kstr = x;
- vstr = "";
- }
-
- k = decodeURIComponent(kstr);
- v = decodeURIComponent(vstr);
-
- if (!hasOwnProperty(obj, k)) {
- obj[k] = v;
- } else if (isArray(obj[k])) {
- obj[k].push(v);
- } else {
- obj[k] = [obj[k], v];
- }
- }
-
- return obj;
- };
-
- var isArray =
- Array.isArray ||
- function(xs) {
- return Object.prototype.toString.call(xs) === "[object Array]";
- };
-
- /***/
- },
-
/***/ ls82: /***/ function(module, exports, __webpack_require__) {
/**
* Copyright (c) 2014-present, Facebook, Inc.
@@ -3110,15 +3044,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ s4NR: /***/ function(module, exports, __webpack_require__) {
- "use strict";
-
- exports.decode = exports.parse = __webpack_require__("kd2E");
- exports.encode = exports.stringify = __webpack_require__("4JlD");
-
- /***/
- },
-
/***/ sXyB: /***/ function(module, exports, __webpack_require__) {
var setPrototypeOf = __webpack_require__("SksO");
Diff for de003c3a9d30..84.module.js
@@ -121,30 +121,13 @@
/***/
},
- /***/ "4JlD": /***/ function(module, exports, __webpack_require__) {
+ /***/ HG3D: /***/ function(module, exports, __webpack_require__) {
"use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- var stringifyPrimitive = function(v) {
+
+ exports.__esModule = true;
+ exports.encode = exports.stringify = exports.decode = exports.parse = void 0;
+
+ function stringifyPrimitive(v) {
switch (typeof v) {
case "string":
return v;
@@ -158,26 +141,28 @@
default:
return "";
}
- };
+ }
- module.exports = function(obj, sep, eq, name) {
+ var stringify = (obj, sep, eq, name) => {
sep = sep || "&";
eq = eq || "=";
- if (obj === null) {
- obj = undefined;
- }
- if (typeof obj === "object") {
- return map(objectKeys(obj), function(k) {
- var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
- if (isArray(obj[k])) {
- return map(obj[k], function(v) {
- return ks + encodeURIComponent(stringifyPrimitive(v));
- }).join(sep);
- } else {
- return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
- }
- }).join(sep);
+ if (obj && typeof obj === "object") {
+ return Object.keys(obj)
+ .map(function(k) {
+ var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
+
+ if (Array.isArray(obj[k])) {
+ return obj[k]
+ .map(function(v) {
+ return ks + encodeURIComponent(stringifyPrimitive(v));
+ })
+ .join(sep);
+ } else {
+ return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
+ }
+ })
+ .join(sep);
}
if (!name) return "";
@@ -188,30 +173,72 @@
);
};
- var isArray =
- Array.isArray ||
- function(xs) {
- return Object.prototype.toString.call(xs) === "[object Array]";
- };
+ exports.encode = exports.stringify = stringify;
- function map(xs, f) {
- if (xs.map) return xs.map(f);
- var res = [];
- for (var i = 0; i < xs.length; i++) {
- res.push(f(xs[i], i));
- }
- return res;
+ function hasOwnProperty(obj, prop) {
+ return Object.prototype.hasOwnProperty.call(obj, prop);
}
- var objectKeys =
- Object.keys ||
- function(obj) {
- var res = [];
- for (var key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
+ var parse = (qs, sep, eq, options) => {
+ // use URLSearchParams if no legacy options provided
+ if (!sep && !eq && !options) {
+ return Object.fromEntries(new URLSearchParams(qs));
+ }
+
+ sep = sep || "&";
+ eq = eq || "=";
+ var obj = {};
+
+ if (typeof qs !== "string" || qs.length === 0) {
+ return obj;
+ }
+
+ var regexp = /\+/g;
+ var qsParts = qs.split(sep);
+ var maxKeys = 1000;
+
+ if (options && typeof options.maxKeys === "number") {
+ maxKeys = options.maxKeys;
+ }
+
+ var len = qsParts.length; // maxKeys <= 0 means that we should not limit keys count
+
+ if (maxKeys > 0 && len > maxKeys) {
+ len = maxKeys;
+ }
+
+ for (var i = 0; i < len; ++i) {
+ var x = qsParts[i].replace(regexp, "%20"),
+ idx = x.indexOf(eq),
+ kstr,
+ vstr,
+ k,
+ v;
+
+ if (idx >= 0) {
+ kstr = x.substr(0, idx);
+ vstr = x.substr(idx + 1);
+ } else {
+ kstr = x;
+ vstr = "";
}
- return res;
- };
+
+ k = decodeURIComponent(kstr);
+ v = decodeURIComponent(vstr);
+
+ if (!hasOwnProperty(obj, k)) {
+ obj[k] = v;
+ } else if (Array.isArray(obj[k])) {
+ obj[k].push(v);
+ } else {
+ obj[k] = [obj[k], v];
+ }
+ }
+
+ return obj;
+ };
+
+ exports.decode = exports.parse = parse;
/***/
},
@@ -229,7 +256,7 @@
/***/ QmWs: /***/ function(module, exports, __webpack_require__) {
var e,
t =
- (e = __webpack_require__("s4NR")) &&
+ (e = __webpack_require__("HG3D")) &&
"object" == typeof e &&
"default" in e
? e.default
@@ -1558,99 +1585,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ kd2E: /***/ function(module, exports, __webpack_require__) {
- "use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- // If obj.hasOwnProperty has been overridden, then calling
- // obj.hasOwnProperty(prop) will break.
- // See: https://github.com/joyent/node/issues/1707
- function hasOwnProperty(obj, prop) {
- return Object.prototype.hasOwnProperty.call(obj, prop);
- }
-
- module.exports = function(qs, sep, eq, options) {
- sep = sep || "&";
- eq = eq || "=";
- var obj = {};
-
- if (typeof qs !== "string" || qs.length === 0) {
- return obj;
- }
-
- var regexp = /\+/g;
- qs = qs.split(sep);
-
- var maxKeys = 1000;
- if (options && typeof options.maxKeys === "number") {
- maxKeys = options.maxKeys;
- }
-
- var len = qs.length;
- // maxKeys <= 0 means that we should not limit keys count
- if (maxKeys > 0 && len > maxKeys) {
- len = maxKeys;
- }
-
- for (var i = 0; i < len; ++i) {
- var x = qs[i].replace(regexp, "%20"),
- idx = x.indexOf(eq),
- kstr,
- vstr,
- k,
- v;
-
- if (idx >= 0) {
- kstr = x.substr(0, idx);
- vstr = x.substr(idx + 1);
- } else {
- kstr = x;
- vstr = "";
- }
-
- k = decodeURIComponent(kstr);
- v = decodeURIComponent(vstr);
-
- if (!hasOwnProperty(obj, k)) {
- obj[k] = v;
- } else if (isArray(obj[k])) {
- obj[k].push(v);
- } else {
- obj[k] = [obj[k], v];
- }
- }
-
- return obj;
- };
-
- var isArray =
- Array.isArray ||
- function(xs) {
- return Object.prototype.toString.call(xs) === "[object Array]";
- };
-
- /***/
- },
-
/***/ nOHt: /***/ function(module, exports, __webpack_require__) {
"use strict";
@@ -1855,15 +1789,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
if (false) {
}
- /***/
- },
-
- /***/ s4NR: /***/ function(module, exports, __webpack_require__) {
- "use strict";
-
- exports.decode = exports.parse = __webpack_require__("kd2E");
- exports.encode = exports.stringify = __webpack_require__("4JlD");
-
/***/
}
}
Diff for main-HASH.js
@@ -257,7 +257,7 @@
var _router = __webpack_require__("nOHt");
- var _querystring = __webpack_require__("s4NR");
+ var _querystring = __webpack_require__("HG3D");
var _react = _interopRequireDefault(__webpack_require__("q1tI"));
Diff for main-HASH.module.js
@@ -175,7 +175,7 @@
var _router = __webpack_require__("nOHt");
- var _querystring = __webpack_require__("s4NR");
+ var _querystring = __webpack_require__("HG3D");
var _react = _interopRequireDefault(__webpack_require__("q1tI"));
Diff for index.html
@@ -6,7 +6,7 @@
<meta name="next-head-count" content="2" />
<link
rel="preload"
- href="/_next/static/runtime/main-59c45a8be830c5f95780.module.js"
+ href="/_next/static/runtime/main-b03757c88a9376a8b33e.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2429968ba738ade6edda.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -81,13 +81,13 @@
src="/_next/static/runtime/polyfills-eaf5488e20ec921d713f.js"
></script>
<script
- src="/_next/static/runtime/main-d371df75a64e2540b042.js"
+ src="/_next/static/runtime/main-70f45d9dae81ed5a0134.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/runtime/main-59c45a8be830c5f95780.module.js"
+ src="/_next/static/runtime/main-b03757c88a9376a8b33e.module.js"
async=""
crossorigin="anonymous"
type="module"
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c055dea44cbce095b7e0.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.da7b64cf9083be220dde.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2429968ba738ade6edda.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for link.html
@@ -6,7 +6,7 @@
<meta name="next-head-count" content="2" />
<link
rel="preload"
- href="/_next/static/runtime/main-59c45a8be830c5f95780.module.js"
+ href="/_next/static/runtime/main-b03757c88a9376a8b33e.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2429968ba738ade6edda.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -86,13 +86,13 @@
src="/_next/static/runtime/polyfills-eaf5488e20ec921d713f.js"
></script>
<script
- src="/_next/static/runtime/main-d371df75a64e2540b042.js"
+ src="/_next/static/runtime/main-70f45d9dae81ed5a0134.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/runtime/main-59c45a8be830c5f95780.module.js"
+ src="/_next/static/runtime/main-b03757c88a9376a8b33e.module.js"
async=""
crossorigin="anonymous"
type="module"
@@ -122,13 +122,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c055dea44cbce095b7e0.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.da7b64cf9083be220dde.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2429968ba738ade6edda.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for withRouter.html
@@ -6,7 +6,7 @@
<meta name="next-head-count" content="2" />
<link
rel="preload"
- href="/_next/static/runtime/main-59c45a8be830c5f95780.module.js"
+ href="/_next/static/runtime/main-b03757c88a9376a8b33e.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2429968ba738ade6edda.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -81,13 +81,13 @@
src="/_next/static/runtime/polyfills-eaf5488e20ec921d713f.js"
></script>
<script
- src="/_next/static/runtime/main-d371df75a64e2540b042.js"
+ src="/_next/static/runtime/main-70f45d9dae81ed5a0134.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/runtime/main-59c45a8be830c5f95780.module.js"
+ src="/_next/static/runtime/main-b03757c88a9376a8b33e.module.js"
async=""
crossorigin="anonymous"
type="module"
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c055dea44cbce095b7e0.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.da7b64cf9083be220dde.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.2429968ba738ade6edda.module.js"
async=""
crossorigin="anonymous"
type="module"
Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
buildDuration | 14s | 14.2s | |
nodeModulesSize | 67 MB | 67 MB |
Client Bundles (main, webpack, commons) Overall decrease ✓
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.js gzip | 6.51 kB | 6.51 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..4dd5.js gzip | 10.5 kB | N/A | N/A |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..6f34.js gzip | N/A | 10.5 kB | N/A |
Overall change | 56.9 kB | 56.9 kB | -80 B |
Client Bundles (main, webpack, commons) Modern Overall decrease ✓
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.6 kB | 5.6 kB | -1 B |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 6.84 kB | N/A |
Overall change | 52.4 kB | 52.3 kB | -87 B |
Legacy Client Bundles (polyfills)
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
_error.js gzip | 3.37 kB | 3.37 kB | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | 2.05 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
Overall change | 8.34 kB | 8.34 kB | ✓ |
Client Pages Modern
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
index.module.js gzip | 223 B | 223 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
_error.module.js gzip | 2.21 kB | 2.21 kB | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
_app.module.js gzip | 604 B | 604 B | ✓ |
Overall change | 5.49 kB | 5.49 kB | ✓ |
Client Build Manifests
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_buildManifest.js gzip | 270 B | 270 B | ✓ |
_buildManife..dule.js gzip | 274 B | 274 B | ✓ |
Overall change | 544 B | 544 B | ✓ |
Serverless bundles
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_error.js | 875 kB | 875 kB | ✓ |
404.html | 4.17 kB | 4.17 kB | ✓ |
hooks.html | 3.79 kB | 3.79 kB | ✓ |
index.js | 875 kB | 875 kB | ✓ |
link.js | 914 kB | 914 kB | ✓ |
routerDirect.js | 906 kB | 906 kB | ✓ |
withRouter.js | 906 kB | 906 kB | ✓ |
Overall change | 4.48 MB | 4.48 MB | ✓ |
Failing test suitestest/integration/preload-viewport/test/index.test.js
Expand output● Prefetching Links in viewport › should prefetch data files when mismatched
|
Stats from current PRDefault Server Mode (Decrease detected ✓)General Overall increase
|
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
buildDuration | 12.5s | 12.3s | -221ms |
nodeModulesSize | 67 MB | 67 MB |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.2 | 2.259 | |
/ avg req/sec | 1136.17 | 1106.74 | -29.43 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.48 | 1.464 | -0.02 |
/error-in-render avg req/sec | 1689.45 | 1708.22 |
Client Bundles (main, webpack, commons) Overall decrease ✓
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.js gzip | 6.51 kB | 6.51 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..4dd5.js gzip | 10.5 kB | 10.5 kB | -42 B |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
Overall change | 56.9 kB | 56.9 kB | -42 B |
Client Bundles (main, webpack, commons) Modern Overall decrease ✓
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.6 kB | 5.6 kB | -1 B |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 6.87 kB | N/A |
Overall change | 52.4 kB | 52.4 kB | -54 B |
Legacy Client Bundles (polyfills)
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
_error.js gzip | 3.37 kB | 3.37 kB | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | 2.05 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
Overall change | 8.34 kB | 8.34 kB | ✓ |
Client Pages Modern
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
index.module.js gzip | 223 B | 223 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
_error.module.js gzip | 2.21 kB | 2.21 kB | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
_app.module.js gzip | 604 B | 604 B | ✓ |
Overall change | 5.49 kB | 5.49 kB | ✓ |
Client Build Manifests
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_buildManifest.js gzip | 270 B | 270 B | ✓ |
_buildManife..dule.js gzip | 274 B | 274 B | ✓ |
Overall change | 544 B | 544 B | ✓ |
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
index.html gzip | 953 B | 954 B | |
link.html gzip | 960 B | 961 B | |
withRouter.html gzip | 947 B | 947 B | ✓ |
Overall change | 2.86 kB | 2.86 kB |
Diffs
Diff for de003c3a9d30..ce095b7e0.js
@@ -121,30 +121,13 @@
/***/
},
- /***/ "4JlD": /***/ function(module, exports, __webpack_require__) {
+ /***/ HG3D: /***/ function(module, exports, __webpack_require__) {
"use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- var stringifyPrimitive = function(v) {
+
+ exports.__esModule = true;
+ exports.encode = exports.stringify = exports.decode = exports.parse = void 0;
+
+ function stringifyPrimitive(v) {
switch (typeof v) {
case "string":
return v;
@@ -158,26 +141,28 @@
default:
return "";
}
- };
+ }
- module.exports = function(obj, sep, eq, name) {
+ var stringify = function stringify(obj, sep, eq, name) {
sep = sep || "&";
eq = eq || "=";
- if (obj === null) {
- obj = undefined;
- }
- if (typeof obj === "object") {
- return map(objectKeys(obj), function(k) {
- var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
- if (isArray(obj[k])) {
- return map(obj[k], function(v) {
- return ks + encodeURIComponent(stringifyPrimitive(v));
- }).join(sep);
- } else {
- return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
- }
- }).join(sep);
+ if (obj && typeof obj === "object") {
+ return Object.keys(obj)
+ .map(function(k) {
+ var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
+
+ if (Array.isArray(obj[k])) {
+ return obj[k]
+ .map(function(v) {
+ return ks + encodeURIComponent(stringifyPrimitive(v));
+ })
+ .join(sep);
+ } else {
+ return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
+ }
+ })
+ .join(sep);
}
if (!name) return "";
@@ -188,30 +173,81 @@
);
};
- var isArray =
- Array.isArray ||
- function(xs) {
- return Object.prototype.toString.call(xs) === "[object Array]";
- };
+ exports.encode = exports.stringify = stringify;
- function map(xs, f) {
- if (xs.map) return xs.map(f);
- var res = [];
- for (var i = 0; i < xs.length; i++) {
- res.push(f(xs[i], i));
- }
- return res;
+ function hasOwnProperty(obj, prop) {
+ return Object.prototype.hasOwnProperty.call(obj, prop);
}
- var objectKeys =
- Object.keys ||
- function(obj) {
- var res = [];
- for (var key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
+ var parse = function parse(qs, sep, eq, options) {
+ // use URLSearchParams if no legacy options provided
+ if (!sep && !eq && !options) {
+ var parsed = new URLSearchParams(qs);
+ return Array.from(parsed.keys()).reduce(function(prev, key) {
+ prev[key] = parsed.getAll(key);
+
+ if (prev[key].length === 1) {
+ prev[key] = prev[key].pop();
+ }
+
+ return prev;
+ }, {});
+ }
+
+ sep = sep || "&";
+ eq = eq || "=";
+ var obj = {};
+
+ if (typeof qs !== "string" || qs.length === 0) {
+ return obj;
+ }
+
+ var regexp = /\+/g;
+ var qsParts = qs.split(sep);
+ var maxKeys = 1000;
+
+ if (options && typeof options.maxKeys === "number") {
+ maxKeys = options.maxKeys;
+ }
+
+ var len = qsParts.length; // maxKeys <= 0 means that we should not limit keys count
+
+ if (maxKeys > 0 && len > maxKeys) {
+ len = maxKeys;
+ }
+
+ for (var i = 0; i < len; ++i) {
+ var x = qsParts[i].replace(regexp, "%20"),
+ idx = x.indexOf(eq),
+ kstr,
+ vstr,
+ k,
+ v;
+
+ if (idx >= 0) {
+ kstr = x.substr(0, idx);
+ vstr = x.substr(idx + 1);
+ } else {
+ kstr = x;
+ vstr = "";
}
- return res;
- };
+
+ k = decodeURIComponent(kstr);
+ v = decodeURIComponent(vstr);
+
+ if (!hasOwnProperty(obj, k)) {
+ obj[k] = v;
+ } else if (Array.isArray(obj[k])) {
+ obj[k].push(v);
+ } else {
+ obj[k] = [obj[k], v];
+ }
+ }
+
+ return obj;
+ };
+
+ exports.decode = exports.parse = parse;
/***/
},
@@ -252,7 +288,7 @@
/***/ QmWs: /***/ function(module, exports, __webpack_require__) {
var e,
t =
- (e = __webpack_require__("s4NR")) &&
+ (e = __webpack_require__("HG3D")) &&
"object" == typeof e &&
"default" in e
? e.default
@@ -1910,99 +1946,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ kd2E: /***/ function(module, exports, __webpack_require__) {
- "use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- // If obj.hasOwnProperty has been overridden, then calling
- // obj.hasOwnProperty(prop) will break.
- // See: https://github.com/joyent/node/issues/1707
- function hasOwnProperty(obj, prop) {
- return Object.prototype.hasOwnProperty.call(obj, prop);
- }
-
- module.exports = function(qs, sep, eq, options) {
- sep = sep || "&";
- eq = eq || "=";
- var obj = {};
-
- if (typeof qs !== "string" || qs.length === 0) {
- return obj;
- }
-
- var regexp = /\+/g;
- qs = qs.split(sep);
-
- var maxKeys = 1000;
- if (options && typeof options.maxKeys === "number") {
- maxKeys = options.maxKeys;
- }
-
- var len = qs.length;
- // maxKeys <= 0 means that we should not limit keys count
- if (maxKeys > 0 && len > maxKeys) {
- len = maxKeys;
- }
-
- for (var i = 0; i < len; ++i) {
- var x = qs[i].replace(regexp, "%20"),
- idx = x.indexOf(eq),
- kstr,
- vstr,
- k,
- v;
-
- if (idx >= 0) {
- kstr = x.substr(0, idx);
- vstr = x.substr(idx + 1);
- } else {
- kstr = x;
- vstr = "";
- }
-
- k = decodeURIComponent(kstr);
- v = decodeURIComponent(vstr);
-
- if (!hasOwnProperty(obj, k)) {
- obj[k] = v;
- } else if (isArray(obj[k])) {
- obj[k].push(v);
- } else {
- obj[k] = [obj[k], v];
- }
- }
-
- return obj;
- };
-
- var isArray =
- Array.isArray ||
- function(xs) {
- return Object.prototype.toString.call(xs) === "[object Array]";
- };
-
- /***/
- },
-
/***/ ls82: /***/ function(module, exports, __webpack_require__) {
/**
* Copyright (c) 2014-present, Facebook, Inc.
@@ -3110,15 +3053,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ s4NR: /***/ function(module, exports, __webpack_require__) {
- "use strict";
-
- exports.decode = exports.parse = __webpack_require__("kd2E");
- exports.encode = exports.stringify = __webpack_require__("4JlD");
-
- /***/
- },
-
/***/ sXyB: /***/ function(module, exports, __webpack_require__) {
var setPrototypeOf = __webpack_require__("SksO");
Diff for de003c3a9d30..84.module.js
@@ -121,30 +121,13 @@
/***/
},
- /***/ "4JlD": /***/ function(module, exports, __webpack_require__) {
+ /***/ HG3D: /***/ function(module, exports, __webpack_require__) {
"use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- var stringifyPrimitive = function(v) {
+
+ exports.__esModule = true;
+ exports.encode = exports.stringify = exports.decode = exports.parse = void 0;
+
+ function stringifyPrimitive(v) {
switch (typeof v) {
case "string":
return v;
@@ -158,26 +141,28 @@
default:
return "";
}
- };
+ }
- module.exports = function(obj, sep, eq, name) {
+ var stringify = (obj, sep, eq, name) => {
sep = sep || "&";
eq = eq || "=";
- if (obj === null) {
- obj = undefined;
- }
- if (typeof obj === "object") {
- return map(objectKeys(obj), function(k) {
- var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
- if (isArray(obj[k])) {
- return map(obj[k], function(v) {
- return ks + encodeURIComponent(stringifyPrimitive(v));
- }).join(sep);
- } else {
- return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
- }
- }).join(sep);
+ if (obj && typeof obj === "object") {
+ return Object.keys(obj)
+ .map(function(k) {
+ var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
+
+ if (Array.isArray(obj[k])) {
+ return obj[k]
+ .map(function(v) {
+ return ks + encodeURIComponent(stringifyPrimitive(v));
+ })
+ .join(sep);
+ } else {
+ return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
+ }
+ })
+ .join(sep);
}
if (!name) return "";
@@ -188,30 +173,81 @@
);
};
- var isArray =
- Array.isArray ||
- function(xs) {
- return Object.prototype.toString.call(xs) === "[object Array]";
- };
+ exports.encode = exports.stringify = stringify;
- function map(xs, f) {
- if (xs.map) return xs.map(f);
- var res = [];
- for (var i = 0; i < xs.length; i++) {
- res.push(f(xs[i], i));
- }
- return res;
+ function hasOwnProperty(obj, prop) {
+ return Object.prototype.hasOwnProperty.call(obj, prop);
}
- var objectKeys =
- Object.keys ||
- function(obj) {
- var res = [];
- for (var key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
+ var parse = (qs, sep, eq, options) => {
+ // use URLSearchParams if no legacy options provided
+ if (!sep && !eq && !options) {
+ var parsed = new URLSearchParams(qs);
+ return Array.from(parsed.keys()).reduce((prev, key) => {
+ prev[key] = parsed.getAll(key);
+
+ if (prev[key].length === 1) {
+ prev[key] = prev[key].pop();
+ }
+
+ return prev;
+ }, {});
+ }
+
+ sep = sep || "&";
+ eq = eq || "=";
+ var obj = {};
+
+ if (typeof qs !== "string" || qs.length === 0) {
+ return obj;
+ }
+
+ var regexp = /\+/g;
+ var qsParts = qs.split(sep);
+ var maxKeys = 1000;
+
+ if (options && typeof options.maxKeys === "number") {
+ maxKeys = options.maxKeys;
+ }
+
+ var len = qsParts.length; // maxKeys <= 0 means that we should not limit keys count
+
+ if (maxKeys > 0 && len > maxKeys) {
+ len = maxKeys;
+ }
+
+ for (var i = 0; i < len; ++i) {
+ var x = qsParts[i].replace(regexp, "%20"),
+ idx = x.indexOf(eq),
+ kstr,
+ vstr,
+ k,
+ v;
+
+ if (idx >= 0) {
+ kstr = x.substr(0, idx);
+ vstr = x.substr(idx + 1);
+ } else {
+ kstr = x;
+ vstr = "";
+ }
+
+ k = decodeURIComponent(kstr);
+ v = decodeURIComponent(vstr);
+
+ if (!hasOwnProperty(obj, k)) {
+ obj[k] = v;
+ } else if (Array.isArray(obj[k])) {
+ obj[k].push(v);
+ } else {
+ obj[k] = [obj[k], v];
}
- return res;
- };
+ }
+
+ return obj;
+ };
+
+ exports.decode = exports.parse = parse;
/***/
},
@@ -229,7 +265,7 @@
/***/ QmWs: /***/ function(module, exports, __webpack_require__) {
var e,
t =
- (e = __webpack_require__("s4NR")) &&
+ (e = __webpack_require__("HG3D")) &&
"object" == typeof e &&
"default" in e
? e.default
@@ -1558,99 +1594,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ kd2E: /***/ function(module, exports, __webpack_require__) {
- "use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- // If obj.hasOwnProperty has been overridden, then calling
- // obj.hasOwnProperty(prop) will break.
- // See: https://github.com/joyent/node/issues/1707
- function hasOwnProperty(obj, prop) {
- return Object.prototype.hasOwnProperty.call(obj, prop);
- }
-
- module.exports = function(qs, sep, eq, options) {
- sep = sep || "&";
- eq = eq || "=";
- var obj = {};
-
- if (typeof qs !== "string" || qs.length === 0) {
- return obj;
- }
-
- var regexp = /\+/g;
- qs = qs.split(sep);
-
- var maxKeys = 1000;
- if (options && typeof options.maxKeys === "number") {
- maxKeys = options.maxKeys;
- }
-
- var len = qs.length;
- // maxKeys <= 0 means that we should not limit keys count
- if (maxKeys > 0 && len > maxKeys) {
- len = maxKeys;
- }
-
- for (var i = 0; i < len; ++i) {
- var x = qs[i].replace(regexp, "%20"),
- idx = x.indexOf(eq),
- kstr,
- vstr,
- k,
- v;
-
- if (idx >= 0) {
- kstr = x.substr(0, idx);
- vstr = x.substr(idx + 1);
- } else {
- kstr = x;
- vstr = "";
- }
-
- k = decodeURIComponent(kstr);
- v = decodeURIComponent(vstr);
-
- if (!hasOwnProperty(obj, k)) {
- obj[k] = v;
- } else if (isArray(obj[k])) {
- obj[k].push(v);
- } else {
- obj[k] = [obj[k], v];
- }
- }
-
- return obj;
- };
-
- var isArray =
- Array.isArray ||
- function(xs) {
- return Object.prototype.toString.call(xs) === "[object Array]";
- };
-
- /***/
- },
-
/***/ nOHt: /***/ function(module, exports, __webpack_require__) {
"use strict";
@@ -1855,15 +1798,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
if (false) {
}
- /***/
- },
-
- /***/ s4NR: /***/ function(module, exports, __webpack_require__) {
- "use strict";
-
- exports.decode = exports.parse = __webpack_require__("kd2E");
- exports.encode = exports.stringify = __webpack_require__("4JlD");
-
/***/
}
}
Diff for main-HASH.js
@@ -257,7 +257,7 @@
var _router = __webpack_require__("nOHt");
- var _querystring = __webpack_require__("s4NR");
+ var _querystring = __webpack_require__("HG3D");
var _react = _interopRequireDefault(__webpack_require__("q1tI"));
Diff for main-HASH.module.js
@@ -175,7 +175,7 @@
var _router = __webpack_require__("nOHt");
- var _querystring = __webpack_require__("s4NR");
+ var _querystring = __webpack_require__("HG3D");
var _react = _interopRequireDefault(__webpack_require__("q1tI"));
Diff for index.html
@@ -6,7 +6,7 @@
<meta name="next-head-count" content="2" />
<link
rel="preload"
- href="/_next/static/runtime/main-59c45a8be830c5f95780.module.js"
+ href="/_next/static/runtime/main-b03757c88a9376a8b33e.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b86219e908329b76ecaf.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -81,13 +81,13 @@
src="/_next/static/runtime/polyfills-eaf5488e20ec921d713f.js"
></script>
<script
- src="/_next/static/runtime/main-d371df75a64e2540b042.js"
+ src="/_next/static/runtime/main-70f45d9dae81ed5a0134.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/runtime/main-59c45a8be830c5f95780.module.js"
+ src="/_next/static/runtime/main-b03757c88a9376a8b33e.module.js"
async=""
crossorigin="anonymous"
type="module"
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c055dea44cbce095b7e0.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.a92c54a959ff0cdbb7ca.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b86219e908329b76ecaf.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for link.html
@@ -6,7 +6,7 @@
<meta name="next-head-count" content="2" />
<link
rel="preload"
- href="/_next/static/runtime/main-59c45a8be830c5f95780.module.js"
+ href="/_next/static/runtime/main-b03757c88a9376a8b33e.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b86219e908329b76ecaf.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -86,13 +86,13 @@
src="/_next/static/runtime/polyfills-eaf5488e20ec921d713f.js"
></script>
<script
- src="/_next/static/runtime/main-d371df75a64e2540b042.js"
+ src="/_next/static/runtime/main-70f45d9dae81ed5a0134.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/runtime/main-59c45a8be830c5f95780.module.js"
+ src="/_next/static/runtime/main-b03757c88a9376a8b33e.module.js"
async=""
crossorigin="anonymous"
type="module"
@@ -122,13 +122,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c055dea44cbce095b7e0.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.a92c54a959ff0cdbb7ca.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b86219e908329b76ecaf.module.js"
async=""
crossorigin="anonymous"
type="module"
Diff for withRouter.html
@@ -6,7 +6,7 @@
<meta name="next-head-count" content="2" />
<link
rel="preload"
- href="/_next/static/runtime/main-59c45a8be830c5f95780.module.js"
+ href="/_next/static/runtime/main-b03757c88a9376a8b33e.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -24,7 +24,7 @@
/>
<link
rel="preload"
- href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ href="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b86219e908329b76ecaf.module.js"
as="script"
crossorigin="anonymous"
/>
@@ -81,13 +81,13 @@
src="/_next/static/runtime/polyfills-eaf5488e20ec921d713f.js"
></script>
<script
- src="/_next/static/runtime/main-d371df75a64e2540b042.js"
+ src="/_next/static/runtime/main-70f45d9dae81ed5a0134.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/runtime/main-59c45a8be830c5f95780.module.js"
+ src="/_next/static/runtime/main-b03757c88a9376a8b33e.module.js"
async=""
crossorigin="anonymous"
type="module"
@@ -117,13 +117,13 @@
type="module"
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.c055dea44cbce095b7e0.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.a92c54a959ff0cdbb7ca.js"
async=""
crossorigin="anonymous"
nomodule=""
></script>
<script
- src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.deb50154f80a4044eb84.module.js"
+ src="/_next/static/chunks/de003c3a9d308750aa009870a5926f9b18ab31f4.b86219e908329b76ecaf.module.js"
async=""
crossorigin="anonymous"
type="module"
Serverless Mode (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
buildDuration | 13.2s | 17.1s | |
nodeModulesSize | 67 MB | 67 MB |
Client Bundles (main, webpack, commons) Overall decrease ✓
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.js gzip | 6.51 kB | 6.51 kB | ✓ |
webpack-HASH.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..4dd5.js gzip | 10.5 kB | N/A | N/A |
framework.HASH.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..5680.js gzip | N/A | 10.5 kB | N/A |
Overall change | 56.9 kB | 56.9 kB | -42 B |
Client Bundles (main, webpack, commons) Modern Overall decrease ✓
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
main-HASH.module.js gzip | 5.6 kB | 5.6 kB | -1 B |
webpack-HASH..dule.js gzip | 746 B | 746 B | ✓ |
de003c3a9d30..dule.js gzip | 6.92 kB | N/A | N/A |
framework.HA..dule.js gzip | 39.1 kB | 39.1 kB | ✓ |
de003c3a9d30..dule.js gzip | N/A | 6.87 kB | N/A |
Overall change | 52.4 kB | 52.4 kB | -54 B |
Legacy Client Bundles (polyfills)
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 26.3 kB | 26.3 kB | ✓ |
Overall change | 26.3 kB | 26.3 kB | ✓ |
Client Pages
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
routerDirect.js gzip | 279 B | 279 B | ✓ |
withRouter.js gzip | 278 B | 278 B | ✓ |
_error.js gzip | 3.37 kB | 3.37 kB | ✓ |
index.js gzip | 222 B | 222 B | ✓ |
link.js gzip | 2.05 kB | 2.05 kB | ✓ |
hooks.js gzip | 881 B | 881 B | ✓ |
_app.js gzip | 1.26 kB | 1.26 kB | ✓ |
Overall change | 8.34 kB | 8.34 kB | ✓ |
Client Pages Modern
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
index.module.js gzip | 223 B | 223 B | ✓ |
routerDirect..dule.js gzip | 281 B | 281 B | ✓ |
withRouter.m..dule.js gzip | 278 B | 278 B | ✓ |
hooks.module.js gzip | 383 B | 383 B | ✓ |
_error.module.js gzip | 2.21 kB | 2.21 kB | ✓ |
link.module.js gzip | 1.52 kB | 1.52 kB | ✓ |
_app.module.js gzip | 604 B | 604 B | ✓ |
Overall change | 5.49 kB | 5.49 kB | ✓ |
Client Build Manifests
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_buildManifest.js gzip | 270 B | 270 B | ✓ |
_buildManife..dule.js gzip | 274 B | 274 B | ✓ |
Overall change | 544 B | 544 B | ✓ |
Serverless bundles
vercel/next.js canary | ijjk/next.js fix/unencoded-query | Change | |
---|---|---|---|
_error.js | 875 kB | 875 kB | ✓ |
404.html | 4.17 kB | 4.17 kB | ✓ |
hooks.html | 3.79 kB | 3.79 kB | ✓ |
index.js | 875 kB | 875 kB | ✓ |
link.js | 914 kB | 914 kB | ✓ |
routerDirect.js | 906 kB | 906 kB | ✓ |
withRouter.js | 906 kB | 906 kB | ✓ |
Overall change | 4.48 MB | 4.48 MB | ✓ |
@Timer @ijjk if you want, you can take a look at |
Closing as this has been fixed upstream |
This updates to match query parsing behavior between the client and in node following the
URLSearchParams
spec. After investigation it seems the major browsers are following the spec correctly although node is not.Closes: #12145
x-ref: nodejs/node#33892
x-ref: web-platform-tests/wpt#24152
Note: ie11 tests are currently failing due to the
url-polyfill
incorrectly usingdecodeURIComponent
which doesn't match spec forURLSearchParams