-
Notifications
You must be signed in to change notification settings - Fork 27.3k
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
Move code shared between server/client to "shared" folder #26734
Move code shared between server/client to "shared" folder #26734
Conversation
Since most of these modules are shared between the client-side code and server-side code it makes more sense to move these to a "shared" directory
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
…ed-modules # Conflicts: # packages/next/server/next-dev-server.ts
Stats from current PRDefault Server Mode (Increase detected
|
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
buildDuration | 15.5s | 15.3s | -201ms |
buildDurationCached | 3.7s | 3.7s | |
nodeModulesSize | 49.2 MB | 49.2 MB | -506 B |
Page Load Tests Overall increase ✓
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.826 | 2.801 | -0.02 |
/ avg req/sec | 884.8 | 892.44 | +7.64 |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.831 | 1.777 | -0.05 |
/error-in-render avg req/sec | 1365.5 | 1406.76 | +41.26 |
Client Bundles (main, webpack, commons) Overall decrease ✓
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
framework-HASH.js gzip | 42 kB | 42 kB | ✓ |
main-HASH.js gzip | 20.2 kB | 20.2 kB | -1 B |
webpack-HASH.js gzip | 810 B | 810 B | ✓ |
Overall change | 63 kB | 63 kB | -1 B |
Legacy Client Bundles (polyfills)
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31.1 kB | 31.1 kB | ✓ |
Overall change | 31.1 kB | 31.1 kB | ✓ |
Client Pages Overall increase ⚠️
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
_app-HASH.js gzip | 801 B | 803 B | |
_error-HASH.js gzip | 3.17 kB | 3.17 kB | |
amp-HASH.js gzip | 527 B | 526 B | -1 B |
css-HASH.js gzip | 329 B | 329 B | ✓ |
hooks-HASH.js gzip | 903 B | 903 B | ✓ |
index-HASH.js gzip | 263 B | 263 B | ✓ |
link-HASH.js gzip | 1.65 kB | 1.65 kB | ✓ |
routerDirect..HASH.js gzip | 322 B | 322 B | ✓ |
withRouter-HASH.js gzip | 320 B | 320 B | ✓ |
bb14e60e810b..30f.css gzip | 125 B | 125 B | ✓ |
Overall change | 8.41 kB | 8.42 kB |
Client Build Manifests
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
_buildManifest.js gzip | 391 B | 391 B | ✓ |
Overall change | 391 B | 391 B | ✓ |
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
index.html gzip | 523 B | 524 B | |
link.html gzip | 534 B | 536 B | |
withRouter.html gzip | 515 B | 516 B | |
Overall change | 1.57 kB | 1.58 kB |
Diffs
Diff for _buildManifest.js
@@ -2,9 +2,9 @@ self.__BUILD_MANIFEST = {
__rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
"/": ["static\u002Fchunks\u002Fpages\u002Findex-96d821e908dd023681e4.js"],
"/_error": [
- "static\u002Fchunks\u002Fpages\u002F_error-a9b3a05c6c7f15ca24a9.js"
+ "static\u002Fchunks\u002Fpages\u002F_error-c606d3b8579a00983b58.js"
],
- "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-7f1c918feab47667356f.js"],
+ "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-99a85859b8a93cc45609.js"],
"/css": [
"static\u002Fcss\u002F59de118426c393f58653.css",
"static\u002Fchunks\u002Fpages\u002Fcss-fc196f2ef04da4c7630f.js"
@@ -12,7 +12,7 @@ self.__BUILD_MANIFEST = {
"/hooks": [
"static\u002Fchunks\u002Fpages\u002Fhooks-4e38b05900fed34fcf34.js"
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-811992c79c17865c8834.js"],
+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-85498ea2b4b5c36453c0.js"],
"/routerDirect": [
"static\u002Fchunks\u002Fpages\u002FrouterDirect-406413a9f8b683e210e8.js"
],
Diff for _app-HASH.js
@@ -58,7 +58,7 @@
var _react = _interopRequireDefault(__webpack_require__(7294));
- var _utils = __webpack_require__(4755);
+ var _utils = __webpack_require__(9664);
exports.AppInitialProps = _utils.AppInitialProps;
exports.NextWebVitalsMetric = _utils.NextWebVitalsMetric;
Diff for _error-HASH.js
@@ -88,7 +88,219 @@
/***/
},
- /***/ 3398: /***/ function(
+ /***/ 3359: /***/ function(
+ __unused_webpack_module,
+ exports,
+ __webpack_require__
+ ) {
+ "use strict";
+
+ var _classCallCheck = __webpack_require__(4575);
+
+ var _createClass = __webpack_require__(3913);
+
+ var _inherits = __webpack_require__(2205);
+
+ var _possibleConstructorReturn = __webpack_require__(8585);
+
+ var _getPrototypeOf = __webpack_require__(9754);
+
+ function _createSuper(Derived) {
+ var hasNativeReflectConstruct = _isNativeReflectConstruct();
+ return function _createSuperInternal() {
+ var Super = _getPrototypeOf(Derived),
+ result;
+ if (hasNativeReflectConstruct) {
+ var NewTarget = _getPrototypeOf(this).constructor;
+ result = Reflect.construct(Super, arguments, NewTarget);
+ } else {
+ result = Super.apply(this, arguments);
+ }
+ return _possibleConstructorReturn(this, result);
+ };
+ }
+
+ function _isNativeReflectConstruct() {
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+ if (Reflect.construct.sham) return false;
+ if (typeof Proxy === "function") return true;
+ try {
+ Date.prototype.toString.call(
+ Reflect.construct(Date, [], function() {})
+ );
+ return true;
+ } catch (e) {
+ return false;
+ }
+ }
+
+ var _interopRequireDefault = __webpack_require__(5318);
+
+ exports.__esModule = true;
+ exports.default = void 0;
+
+ var _react = _interopRequireDefault(__webpack_require__(7294));
+
+ var _head = _interopRequireDefault(__webpack_require__(639));
+
+ var statusCodes = {
+ 400: "Bad Request",
+ 404: "This page could not be found",
+ 405: "Method Not Allowed",
+ 500: "Internal Server Error"
+ };
+
+ function _getInitialProps(_ref) {
+ var res = _ref.res,
+ err = _ref.err;
+ var statusCode =
+ res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
+ return {
+ statusCode: statusCode
+ };
+ }
+ /**
+ * `Error` component used for handling errors.
+ */
+
+ var Error = /*#__PURE__*/ (function(_react$default$Compon) {
+ _inherits(Error, _react$default$Compon);
+
+ var _super = _createSuper(Error);
+
+ function Error() {
+ _classCallCheck(this, Error);
+
+ return _super.apply(this, arguments);
+ }
+
+ _createClass(Error, [
+ {
+ key: "render",
+ value: function render() {
+ var statusCode = this.props.statusCode;
+ var title =
+ this.props.title ||
+ statusCodes[statusCode] ||
+ "An unexpected error has occurred";
+ return /*#__PURE__*/ _react["default"].createElement(
+ "div",
+ {
+ style: styles.error
+ },
+ /*#__PURE__*/ _react["default"].createElement(
+ _head["default"],
+ null,
+ /*#__PURE__*/ _react["default"].createElement(
+ "title",
+ null,
+ statusCode
+ ? "".concat(statusCode, ": ").concat(title)
+ : "Application error: a client-side exception has occurred"
+ )
+ ),
+ /*#__PURE__*/ _react["default"].createElement(
+ "div",
+ null,
+ /*#__PURE__*/ _react["default"].createElement("style", {
+ dangerouslySetInnerHTML: {
+ __html: "body { margin: 0 }"
+ }
+ }),
+ statusCode
+ ? /*#__PURE__*/ _react["default"].createElement(
+ "h1",
+ {
+ style: styles.h1
+ },
+ statusCode
+ )
+ : null,
+ /*#__PURE__*/ _react["default"].createElement(
+ "div",
+ {
+ style: styles.desc
+ },
+ /*#__PURE__*/ _react["default"].createElement(
+ "h2",
+ {
+ style: styles.h2
+ },
+ this.props.title || statusCode
+ ? title
+ : /*#__PURE__*/ _react["default"].createElement(
+ _react["default"].Fragment,
+ null,
+ "Application error: a client-side exception has occurred (",
+ /*#__PURE__*/ _react["default"].createElement(
+ "a",
+ {
+ href:
+ "https://nextjs.org/docs/messages/client-side-exception-occurred"
+ },
+ "developer guidance"
+ ),
+ ")"
+ ),
+ "."
+ )
+ )
+ )
+ );
+ }
+ }
+ ]);
+
+ return Error;
+ })(_react["default"].Component);
+
+ exports.default = Error;
+ Error.displayName = "ErrorPage";
+ Error.getInitialProps = _getInitialProps;
+ Error.origGetInitialProps = _getInitialProps;
+ var styles = {
+ error: {
+ color: "#000",
+ background: "#fff",
+ fontFamily:
+ '-apple-system, BlinkMacSystemFont, Roboto, "Segoe UI", "Fira Sans", Avenir, "Helvetica Neue", "Lucida Grande", sans-serif',
+ height: "100vh",
+ textAlign: "center",
+ display: "flex",
+ flexDirection: "column",
+ alignItems: "center",
+ justifyContent: "center"
+ },
+ desc: {
+ display: "inline-block",
+ textAlign: "left",
+ lineHeight: "49px",
+ height: "49px",
+ verticalAlign: "middle"
+ },
+ h1: {
+ display: "inline-block",
+ borderRight: "1px solid rgba(0, 0, 0,.3)",
+ margin: 0,
+ marginRight: "20px",
+ padding: "10px 23px 10px 0",
+ fontSize: "24px",
+ fontWeight: 500,
+ verticalAlign: "top"
+ },
+ h2: {
+ fontSize: "14px",
+ fontWeight: "normal",
+ lineHeight: "inherit",
+ margin: 0,
+ padding: 0
+ }
+ };
+
+ /***/
+ },
+
+ /***/ 6046: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -118,7 +330,7 @@
/***/
},
- /***/ 6393: /***/ function(
+ /***/ 3237: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -131,7 +343,7 @@
var _react = _interopRequireDefault(__webpack_require__(7294));
- var _ampContext = __webpack_require__(3398);
+ var _ampContext = __webpack_require__(6046);
function _interopRequireDefault(obj) {
return obj && obj.__esModule
@@ -166,7 +378,7 @@
/***/
},
- /***/ 2775: /***/ function(
+ /***/ 639: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -219,13 +431,13 @@
var _react = _interopRequireWildcard(__webpack_require__(7294));
- var _sideEffect = _interopRequireDefault(__webpack_require__(3244));
+ var _sideEffect = _interopRequireDefault(__webpack_require__(4766));
- var _ampContext = __webpack_require__(3398);
+ var _ampContext = __webpack_require__(6046);
- var _headManagerContext = __webpack_require__(1165);
+ var _headManagerContext = __webpack_require__(699);
- var _amp = __webpack_require__(6393);
+ var _amp = __webpack_require__(3237);
function _interopRequireDefault(obj) {
return obj && obj.__esModule
@@ -493,7 +705,7 @@ Also adds support for deduplicated `key` properties
/***/
},
- /***/ 3244: /***/ function(
+ /***/ 4766: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -631,218 +843,6 @@ Also adds support for deduplicated `key` properties
/***/
},
- /***/ 3359: /***/ function(
- __unused_webpack_module,
- exports,
- __webpack_require__
- ) {
- "use strict";
-
- var _classCallCheck = __webpack_require__(4575);
-
- var _createClass = __webpack_require__(3913);
-
- var _inherits = __webpack_require__(2205);
-
- var _possibleConstructorReturn = __webpack_require__(8585);
-
- var _getPrototypeOf = __webpack_require__(9754);
-
- function _createSuper(Derived) {
- var hasNativeReflectConstruct = _isNativeReflectConstruct();
- return function _createSuperInternal() {
- var Super = _getPrototypeOf(Derived),
- result;
- if (hasNativeReflectConstruct) {
- var NewTarget = _getPrototypeOf(this).constructor;
- result = Reflect.construct(Super, arguments, NewTarget);
- } else {
- result = Super.apply(this, arguments);
- }
- return _possibleConstructorReturn(this, result);
- };
- }
-
- function _isNativeReflectConstruct() {
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
- if (Reflect.construct.sham) return false;
- if (typeof Proxy === "function") return true;
- try {
- Date.prototype.toString.call(
- Reflect.construct(Date, [], function() {})
- );
- return true;
- } catch (e) {
- return false;
- }
- }
-
- var _interopRequireDefault = __webpack_require__(5318);
-
- exports.__esModule = true;
- exports.default = void 0;
-
- var _react = _interopRequireDefault(__webpack_require__(7294));
-
- var _head = _interopRequireDefault(__webpack_require__(2775));
-
- var statusCodes = {
- 400: "Bad Request",
- 404: "This page could not be found",
- 405: "Method Not Allowed",
- 500: "Internal Server Error"
- };
-
- function _getInitialProps(_ref) {
- var res = _ref.res,
- err = _ref.err;
- var statusCode =
- res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
- return {
- statusCode: statusCode
- };
- }
- /**
- * `Error` component used for handling errors.
- */
-
- var Error = /*#__PURE__*/ (function(_react$default$Compon) {
- _inherits(Error, _react$default$Compon);
-
- var _super = _createSuper(Error);
-
- function Error() {
- _classCallCheck(this, Error);
-
- return _super.apply(this, arguments);
- }
-
- _createClass(Error, [
- {
- key: "render",
- value: function render() {
- var statusCode = this.props.statusCode;
- var title =
- this.props.title ||
- statusCodes[statusCode] ||
- "An unexpected error has occurred";
- return /*#__PURE__*/ _react["default"].createElement(
- "div",
- {
- style: styles.error
- },
- /*#__PURE__*/ _react["default"].createElement(
- _head["default"],
- null,
- /*#__PURE__*/ _react["default"].createElement(
- "title",
- null,
- statusCode
- ? "".concat(statusCode, ": ").concat(title)
- : "Application error: a client-side exception has occurred"
- )
- ),
- /*#__PURE__*/ _react["default"].createElement(
- "div",
- null,
- /*#__PURE__*/ _react["default"].createElement("style", {
- dangerouslySetInnerHTML: {
- __html: "body { margin: 0 }"
- }
- }),
- statusCode
- ? /*#__PURE__*/ _react["default"].createElement(
- "h1",
- {
- style: styles.h1
- },
- statusCode
- )
- : null,
- /*#__PURE__*/ _react["default"].createElement(
- "div",
- {
- style: styles.desc
- },
- /*#__PURE__*/ _react["default"].createElement(
- "h2",
- {
- style: styles.h2
- },
- this.props.title || statusCode
- ? title
- : /*#__PURE__*/ _react["default"].createElement(
- _react["default"].Fragment,
- null,
- "Application error: a client-side exception has occurred (",
- /*#__PURE__*/ _react["default"].createElement(
- "a",
- {
- href:
- "https://nextjs.org/docs/messages/client-side-exception-occurred"
- },
- "developer guidance"
- ),
- ")"
- ),
- "."
- )
- )
- )
- );
- }
- }
- ]);
-
- return Error;
- })(_react["default"].Component);
-
- exports.default = Error;
- Error.displayName = "ErrorPage";
- Error.getInitialProps = _getInitialProps;
- Error.origGetInitialProps = _getInitialProps;
- var styles = {
- error: {
- color: "#000",
- background: "#fff",
- fontFamily:
- '-apple-system, BlinkMacSystemFont, Roboto, "Segoe UI", "Fira Sans", Avenir, "Helvetica Neue", "Lucida Grande", sans-serif',
- height: "100vh",
- textAlign: "center",
- display: "flex",
- flexDirection: "column",
- alignItems: "center",
- justifyContent: "center"
- },
- desc: {
- display: "inline-block",
- textAlign: "left",
- lineHeight: "49px",
- height: "49px",
- verticalAlign: "middle"
- },
- h1: {
- display: "inline-block",
- borderRight: "1px solid rgba(0, 0, 0,.3)",
- margin: 0,
- marginRight: "20px",
- padding: "10px 23px 10px 0",
- fontSize: "24px",
- fontWeight: 500,
- verticalAlign: "top"
- },
- h2: {
- fontSize: "14px",
- fontWeight: "normal",
- lineHeight: "inherit",
- margin: 0,
- padding: 0
- }
- };
-
- /***/
- },
-
/***/ 4977: /***/ function(
__unused_webpack_module,
__unused_webpack_exports,
Diff for amp-HASH.js
@@ -6,12 +6,12 @@
__unused_webpack_exports,
__webpack_require__
) {
- module.exports = __webpack_require__(6393);
+ module.exports = __webpack_require__(3237);
/***/
},
- /***/ 3398: /***/ function(
+ /***/ 6046: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -41,7 +41,7 @@
/***/
},
- /***/ 6393: /***/ function(
+ /***/ 3237: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -54,7 +54,7 @@
var _react = _interopRequireDefault(__webpack_require__(7294));
- var _ampContext = __webpack_require__(3398);
+ var _ampContext = __webpack_require__(6046);
function _interopRequireDefault(obj) {
return obj && obj.__esModule
Diff for link-HASH.js
@@ -18,7 +18,7 @@
var _react = _interopRequireWildcard(__webpack_require__(7294));
- var _router = __webpack_require__(9414);
+ var _router = __webpack_require__(1063);
var _router2 = __webpack_require__(4651);
Diff for main-HASH.js
@@ -826,21 +826,21 @@
var _reactDom = _interopRequireDefault(__webpack_require__(3935));
- var _headManagerContext = __webpack_require__(1165);
+ var _headManagerContext = __webpack_require__(699);
- var _mitt = _interopRequireDefault(__webpack_require__(8119));
+ var _mitt = _interopRequireDefault(__webpack_require__(1436));
- var _routerContext = __webpack_require__(6171);
+ var _routerContext = __webpack_require__(3751);
- var _router = __webpack_require__(9414);
+ var _router = __webpack_require__(1063);
- var _isDynamic = __webpack_require__(8073);
+ var _isDynamic = __webpack_require__(6234);
- var querystring = _interopRequireWildcard(__webpack_require__(8187));
+ var querystring = _interopRequireWildcard(__webpack_require__(9824));
- var envConfig = _interopRequireWildcard(__webpack_require__(3584));
+ var envConfig = _interopRequireWildcard(__webpack_require__(2594));
- var _utils = __webpack_require__(4755);
+ var _utils = __webpack_require__(9664);
var _portal = __webpack_require__(6579);
@@ -1856,15 +1856,15 @@
exports.__esModule = true;
exports.default = void 0;
- var _router = __webpack_require__(9414);
+ var _router = __webpack_require__(1063);
var _getAssetPathFromRoute = _interopRequireDefault(
- __webpack_require__(5292)
+ __webpack_require__(7055)
);
- var _isDynamic = __webpack_require__(8073);
+ var _isDynamic = __webpack_require__(6234);
- var _parseRelativeUrl = __webpack_require__(3900);
+ var _parseRelativeUrl = __webpack_require__(7658);
var _normalizeTrailingSlash = __webpack_require__(5965);
@@ -2256,7 +2256,7 @@
exports.default = void 0;
var _getAssetPathFromRoute = _interopRequireDefault(
- __webpack_require__(5292)
+ __webpack_require__(7055)
);
var _requestIdleCallback = __webpack_require__(3447); // 3.8s was arbitrarily chosen as it's what https://web.dev/interactive
@@ -2704,12 +2704,12 @@
var _react = _interopRequireDefault(__webpack_require__(7294));
- var _router2 = _interopRequireWildcard(__webpack_require__(9414));
+ var _router2 = _interopRequireWildcard(__webpack_require__(1063));
exports.Router = _router2["default"];
exports.NextRouter = _router2.NextRouter;
- var _routerContext = __webpack_require__(6171);
+ var _routerContext = __webpack_require__(3751);
var _withRouter = _interopRequireDefault(__webpack_require__(7413));
@@ -2914,7 +2914,7 @@
var _react = __webpack_require__(7294);
- var _headManagerContext = __webpack_require__(1165);
+ var _headManagerContext = __webpack_require__(699);
var _headManager = __webpack_require__(6792);
@@ -3145,7 +3145,7 @@
/***/
},
- /***/ 1165: /***/ function(
+ /***/ 699: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -3177,7 +3177,7 @@
/***/
},
- /***/ 6813: /***/ function(__unused_webpack_module, exports) {
+ /***/ 8820: /***/ function(__unused_webpack_module, exports) {
"use strict";
exports.__esModule = true;
@@ -3206,7 +3206,7 @@
/***/
},
- /***/ 8119: /***/ function(__unused_webpack_module, exports) {
+ /***/ 1436: /***/ function(__unused_webpack_module, exports) {
"use strict";
exports.__esModule = true;
@@ -3255,7 +3255,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ 6171: /***/ function(
+ /***/ 3751: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -3285,7 +3285,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ 9414: /***/ function(
+ /***/ 1063: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -3320,23 +3320,23 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
var _denormalizePagePath = __webpack_require__(9320);
- var _normalizeLocalePath = __webpack_require__(6813);
+ var _normalizeLocalePath = __webpack_require__(8820);
- var _mitt = _interopRequireDefault(__webpack_require__(8119));
+ var _mitt = _interopRequireDefault(__webpack_require__(1436));
- var _utils = __webpack_require__(4755);
+ var _utils = __webpack_require__(9664);
- var _isDynamic = __webpack_require__(8073);
+ var _isDynamic = __webpack_require__(6234);
- var _parseRelativeUrl = __webpack_require__(3900);
+ var _parseRelativeUrl = __webpack_require__(7658);
- var _querystring = __webpack_require__(8187);
+ var _querystring = __webpack_require__(9824);
- var _resolveRewrites = _interopRequireDefault(__webpack_require__(4453));
+ var _resolveRewrites = _interopRequireDefault(__webpack_require__(2431));
- var _routeMatcher = __webpack_require__(8085);
+ var _routeMatcher = __webpack_require__(3990);
- var _routeRegex = __webpack_require__(4550);
+ var _routeRegex = __webpack_require__(6979);
function _interopRequireDefault(obj) {
return obj && obj.__esModule
@@ -5425,7 +5425,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ 2960: /***/ function(
+ /***/ 2065: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -5435,7 +5435,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
exports.__esModule = true;
exports.formatUrl = formatUrl;
- var querystring = _interopRequireWildcard(__webpack_require__(8187));
+ var querystring = _interopRequireWildcard(__webpack_require__(9824));
function _getRequireWildcardCache() {
if (typeof WeakMap !== "function") return null;
@@ -5571,7 +5571,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ 5292: /***/ function(__unused_webpack_module, exports) {
+ /***/ 7055: /***/ function(__unused_webpack_module, exports) {
"use strict";
exports.__esModule = true;
@@ -5595,7 +5595,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ 8073: /***/ function(__unused_webpack_module, exports) {
+ /***/ 6234: /***/ function(__unused_webpack_module, exports) {
"use strict";
exports.__esModule = true;
@@ -5610,7 +5610,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ 3900: /***/ function(
+ /***/ 7658: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -5620,9 +5620,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
exports.__esModule = true;
exports.parseRelativeUrl = parseRelativeUrl;
- var _utils = __webpack_require__(4755);
+ var _utils = __webpack_require__(9664);
- var _querystring = __webpack_require__(8187);
+ var _querystring = __webpack_require__(9824);
/**
* Parses path-relative urls (e.g. `/hello/world?foo=bar`). If url isn't path-relative
* (e.g. `./hello`) then at least base must be.
@@ -5660,7 +5660,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ 8187: /***/ function(
+ /***/ 9824: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -5743,7 +5743,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ 8085: /***/ function(__unused_webpack_module, exports) {
+ /***/ 3990: /***/ function(__unused_webpack_module, exports) {
"use strict";
exports.__esModule = true;
@@ -5791,7 +5791,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ 4550: /***/ function(__unused_webpack_module, exports) {
+ /***/ 6979: /***/ function(__unused_webpack_module, exports) {
"use strict";
exports.__esModule = true;
@@ -5870,7 +5870,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ 3584: /***/ function(__unused_webpack_module, exports) {
+ /***/ 2594: /***/ function(__unused_webpack_module, exports) {
"use strict";
exports.__esModule = true;
@@ -5891,7 +5891,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ 4755: /***/ function(
+ /***/ 9664: /***/ function(
__unused_webpack_module,
exports,
__webpack_require__
@@ -5912,7 +5912,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
exports.formatWithValidation = formatWithValidation;
exports.ST = exports.SP = exports.urlObjectKeys = void 0;
- var _formatUrl = __webpack_require__(2960);
+ var _formatUrl = __webpack_require__(2065);
/**
* Utils
*/
@@ -7153,7 +7153,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
/***/
},
- /***/ 4453: /***/ function() {
+ /***/ 2431: /***/ function() {
/* (ignored) */
/***/
}
Diff for index.html
@@ -19,11 +19,11 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-8f906611271bee13dd61.js"
+ src="/_next/static/chunks/main-4bbd306c4351c0299964.js"
defer=""
></script>
<script
- src="/_next/static/chunks/pages/_app-28769756f9a0c21b149b.js"
+ src="/_next/static/chunks/pages/_app-f52f3534def65eae2253.js"
defer=""
></script>
<script
Diff for link.html
@@ -19,15 +19,15 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-8f906611271bee13dd61.js"
+ src="/_next/static/chunks/main-4bbd306c4351c0299964.js"
defer=""
></script>
<script
- src="/_next/static/chunks/pages/_app-28769756f9a0c21b149b.js"
+ src="/_next/static/chunks/pages/_app-f52f3534def65eae2253.js"
defer=""
></script>
<script
- src="/_next/static/chunks/pages/link-811992c79c17865c8834.js"
+ src="/_next/static/chunks/pages/link-85498ea2b4b5c36453c0.js"
defer=""
></script>
<script src="/_next/static/BUILD_ID/_buildManifest.js" defer=""></script>
Diff for withRouter.html
@@ -19,11 +19,11 @@
defer=""
></script>
<script
- src="/_next/static/chunks/main-8f906611271bee13dd61.js"
+ src="/_next/static/chunks/main-4bbd306c4351c0299964.js"
defer=""
></script>
<script
- src="/_next/static/chunks/pages/_app-28769756f9a0c21b149b.js"
+ src="/_next/static/chunks/pages/_app-f52f3534def65eae2253.js"
defer=""
></script>
<script
Serverless Mode (Increase detected ⚠️ )
General Overall decrease ✓
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
buildDuration | 17.5s | 17.4s | -81ms |
buildDurationCached | 5s | 5s | |
nodeModulesSize | 49.2 MB | 49.2 MB | -506 B |
Client Bundles (main, webpack, commons) Overall decrease ✓
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
framework-HASH.js gzip | 42 kB | 42 kB | ✓ |
main-HASH.js gzip | 20.2 kB | 20.2 kB | -1 B |
webpack-HASH.js gzip | 810 B | 810 B | ✓ |
Overall change | 63 kB | 63 kB | -1 B |
Legacy Client Bundles (polyfills)
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31.1 kB | 31.1 kB | ✓ |
Overall change | 31.1 kB | 31.1 kB | ✓ |
Client Pages Overall increase ⚠️
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
_app-HASH.js gzip | 801 B | 803 B | |
_error-HASH.js gzip | 3.17 kB | 3.17 kB | |
amp-HASH.js gzip | 527 B | 526 B | -1 B |
css-HASH.js gzip | 329 B | 329 B | ✓ |
hooks-HASH.js gzip | 903 B | 903 B | ✓ |
index-HASH.js gzip | 263 B | 263 B | ✓ |
link-HASH.js gzip | 1.65 kB | 1.65 kB | ✓ |
routerDirect..HASH.js gzip | 322 B | 322 B | ✓ |
withRouter-HASH.js gzip | 320 B | 320 B | ✓ |
bb14e60e810b..30f.css gzip | 125 B | 125 B | ✓ |
Overall change | 8.41 kB | 8.42 kB |
Client Build Manifests
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
_buildManifest.js gzip | 391 B | 391 B | ✓ |
Overall change | 391 B | 391 B | ✓ |
Serverless bundles Overall decrease ✓
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
_error.js | 16.9 kB | 16.9 kB | |
404.html | 1.98 kB | 1.98 kB | ✓ |
500.html | 1.96 kB | 1.96 kB | ✓ |
amp.amp.html | 10.8 kB | 10.8 kB | ✓ |
amp.html | 1.17 kB | 1.17 kB | ✓ |
css.html | 1.35 kB | 1.35 kB | ✓ |
hooks.html | 1.23 kB | 1.23 kB | ✓ |
index.js | 17.2 kB | 17.2 kB | ✓ |
link.js | 17.5 kB | 17.5 kB | -2 B |
routerDirect.js | 17.3 kB | 17.3 kB | -2 B |
withRouter.js | 17.3 kB | 17.3 kB | -2 B |
Overall change | 105 kB | 105 kB | -4 B |
Webpack 4 Mode (Increase detected ⚠️ )
General Overall decrease ✓
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
buildDuration | 13.5s | 13.4s | -55ms |
buildDurationCached | 5.4s | 5.4s | -64ms |
nodeModulesSize | 49.2 MB | 49.2 MB | -506 B |
Page Load Tests Overall decrease ⚠️
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
/ failed reqs | 0 | 0 | ✓ |
/ total time (seconds) | 2.746 | 2.831 | |
/ avg req/sec | 910.37 | 882.95 | |
/error-in-render failed reqs | 0 | 0 | ✓ |
/error-in-render total time (seconds) | 1.83 | 1.797 | -0.03 |
/error-in-render avg req/sec | 1366.45 | 1390.84 | +24.39 |
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
677f882d2ed8..HASH.js gzip | 13.3 kB | 13.4 kB | |
framework.HASH.js gzip | 41.8 kB | 41.8 kB | ✓ |
main-HASH.js gzip | 7.99 kB | 7.99 kB | -3 B |
webpack-HASH.js gzip | 757 B | 757 B | ✓ |
Overall change | 63.9 kB | 63.9 kB |
Legacy Client Bundles (polyfills)
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
polyfills-HASH.js gzip | 31.3 kB | 31.3 kB | ✓ |
Overall change | 31.3 kB | 31.3 kB | ✓ |
Client Pages Overall decrease ✓
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
_app-HASH.js gzip | 1.07 kB | 1.07 kB | ✓ |
_error-HASH.js gzip | 3.84 kB | 3.83 kB | -16 B |
amp-HASH.js gzip | 536 B | 531 B | -5 B |
css-HASH.js gzip | 333 B | 333 B | ✓ |
hooks-HASH.js gzip | 910 B | 910 B | ✓ |
index-HASH.js gzip | 227 B | 227 B | ✓ |
link-HASH.js gzip | 1.64 kB | 1.64 kB | ✓ |
routerDirect..HASH.js gzip | 295 B | 295 B | ✓ |
withRouter-HASH.js gzip | 292 B | 292 B | ✓ |
e025d2764813..52f.css gzip | 125 B | 125 B | ✓ |
Overall change | 9.28 kB | 9.26 kB | -21 B |
Client Build Manifests Overall increase ⚠️
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
_buildManifest.js gzip | 420 B | 422 B | |
Overall change | 420 B | 422 B |
Rendered Page Sizes
vercel/next.js canary | timneutkens/next.js add/move-shared-modules | Change | |
---|---|---|---|
index.html gzip | 568 B | 568 B | ✓ |
link.html gzip | 581 B | 581 B | ✓ |
withRouter.html gzip | 561 B | 561 B | ✓ |
Overall change | 1.71 kB | 1.71 kB | ✓ |
Diffs
Diff for _buildManifest.js
@@ -2,9 +2,9 @@ self.__BUILD_MANIFEST = {
__rewrites: { beforeFiles: [], afterFiles: [], fallback: [] },
"/": ["static\u002Fchunks\u002Fpages\u002Findex-b460df3d63326fbb06a1.js"],
"/_error": [
- "static\u002Fchunks\u002Fpages\u002F_error-a195cc394aa8ad172947.js"
+ "static\u002Fchunks\u002Fpages\u002F_error-5225b5d6d91905cc2b11.js"
],
- "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-27f75ad11120c5cdedd1.js"],
+ "/amp": ["static\u002Fchunks\u002Fpages\u002Famp-5b1703f6b64f268c0fdc.js"],
"/css": [
"static\u002Fcss\u002Fe025d27648136bbd252f.css",
"static\u002Fchunks\u002Fpages\u002Fcss-18fb61bd16b12bc4dfa3.js"
@@ -12,7 +12,7 @@ self.__BUILD_MANIFEST = {
"/hooks": [
"static\u002Fchunks\u002Fpages\u002Fhooks-fdb4ee79a7c3f53f3fd0.js"
],
- "/link": ["static\u002Fchunks\u002Fpages\u002Flink-9b289bb7adfade3f5c5e.js"],
+ "/link": ["static\u002Fchunks\u002Fpages\u002Flink-82dfc40407196ef8b751.js"],
"/routerDirect": [
"static\u002Fchunks\u002Fpages\u002FrouterDirect-8f35c7ae67919ca0caa3.js"
],
Diff for _app-HASH.js
@@ -86,7 +86,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
var _react = _interopRequireDefault(__webpack_require__("q1tI"));
- var _utils = __webpack_require__("g/15");
+ var _utils = __webpack_require__("52bY");
exports.AppInitialProps = _utils.AppInitialProps;
exports.NextWebVitalsMetric = _utils.NextWebVitalsMetric;
Diff for _error-HASH.js
@@ -1,50 +1,6 @@
_N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
[5],
{
- /***/ "/0+H": /***/ function(module, exports, __webpack_require__) {
- "use strict";
-
- exports.__esModule = true;
- exports.isInAmpMode = isInAmpMode;
- exports.useAmp = useAmp;
-
- var _react = _interopRequireDefault(__webpack_require__("q1tI"));
-
- var _ampContext = __webpack_require__("lwAK");
-
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule
- ? obj
- : {
- default: obj
- };
- }
-
- function isInAmpMode() {
- var _ref =
- arguments.length > 0 && arguments[0] !== undefined
- ? arguments[0]
- : {},
- _ref$ampFirst = _ref.ampFirst,
- ampFirst = _ref$ampFirst === void 0 ? false : _ref$ampFirst,
- _ref$hybrid = _ref.hybrid,
- hybrid = _ref$hybrid === void 0 ? false : _ref$hybrid,
- _ref$hasQuery = _ref.hasQuery,
- hasQuery = _ref$hasQuery === void 0 ? false : _ref$hasQuery;
-
- return ampFirst || (hybrid && hasQuery);
- }
-
- function useAmp() {
- // Don't assign the context value to a variable to save bytes
- return isInAmpMode(
- _react["default"].useContext(_ampContext.AmpStateContext)
- );
- }
-
- /***/
- },
-
/***/ "/a9y": /***/ function(module, exports, __webpack_require__) {
"use strict";
@@ -94,7 +50,7 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
var _react = _interopRequireDefault(__webpack_require__("q1tI"));
- var _head = _interopRequireDefault(__webpack_require__("8Kt/"));
+ var _head = _interopRequireDefault(__webpack_require__("mLbm"));
var statusCodes = {
400: "Bad Request",
@@ -289,324 +245,135 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
/***/
},
- /***/ "8Kt/": /***/ function(module, exports, __webpack_require__) {
+ /***/ BdAR: /***/ function(module, exports, __webpack_require__) {
"use strict";
- var _defineProperty = __webpack_require__("lSNA");
-
- function ownKeys(object, enumerableOnly) {
- var keys = Object.keys(object);
- if (Object.getOwnPropertySymbols) {
- var symbols = Object.getOwnPropertySymbols(object);
- if (enumerableOnly)
- symbols = symbols.filter(function(sym) {
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
- });
- keys.push.apply(keys, symbols);
- }
- return keys;
- }
-
- function _objectSpread(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i] != null ? arguments[i] : {};
- if (i % 2) {
- ownKeys(Object(source), true).forEach(function(key) {
- _defineProperty(target, key, source[key]);
- });
- } else if (Object.getOwnPropertyDescriptors) {
- Object.defineProperties(
- target,
- Object.getOwnPropertyDescriptors(source)
- );
- } else {
- ownKeys(Object(source)).forEach(function(key) {
- Object.defineProperty(
- target,
- key,
- Object.getOwnPropertyDescriptor(source, key)
- );
- });
- }
- }
- return target;
- }
-
- exports.__esModule = true;
- exports.defaultHead = defaultHead;
- exports["default"] = void 0;
-
- var _react = _interopRequireWildcard(__webpack_require__("q1tI"));
-
- var _sideEffect = _interopRequireDefault(__webpack_require__("Xuae"));
-
- var _ampContext = __webpack_require__("lwAK");
-
- var _headManagerContext = __webpack_require__("FYa8");
-
- var _amp = __webpack_require__("/0+H");
-
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule
- ? obj
- : {
- default: obj
- };
- }
-
- function _getRequireWildcardCache() {
- if (typeof WeakMap !== "function") return null;
- var cache = new WeakMap();
-
- _getRequireWildcardCache = function _getRequireWildcardCache() {
- return cache;
- };
-
- return cache;
- }
+ var _toConsumableArray = __webpack_require__("RIqP");
- function _interopRequireWildcard(obj) {
- if (obj && obj.__esModule) {
- return obj;
- }
+ var _classCallCheck = __webpack_require__("lwsE");
- if (
- obj === null ||
- (typeof obj !== "object" && typeof obj !== "function")
- ) {
- return {
- default: obj
- };
- }
+ var _createClass = __webpack_require__("W8MJ");
- var cache = _getRequireWildcardCache();
+ var _assertThisInitialized = __webpack_require__("PJYZ");
- if (cache && cache.has(obj)) {
- return cache.get(obj);
- }
+ var _inherits = __webpack_require__("7W2i");
- var newObj = {};
- var hasPropertyDescriptor =
- Object.defineProperty && Object.getOwnPropertyDescriptor;
+ var _possibleConstructorReturn = __webpack_require__("a1gu");
- for (var key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
- var desc = hasPropertyDescriptor
- ? Object.getOwnPropertyDescriptor(obj, key)
- : null;
+ var _getPrototypeOf = __webpack_require__("Nsbk");
- if (desc && (desc.get || desc.set)) {
- Object.defineProperty(newObj, key, desc);
- } else {
- newObj[key] = obj[key];
- }
+ function _createSuper(Derived) {
+ var hasNativeReflectConstruct = _isNativeReflectConstruct();
+ return function _createSuperInternal() {
+ var Super = _getPrototypeOf(Derived),
+ result;
+ if (hasNativeReflectConstruct) {
+ var NewTarget = _getPrototypeOf(this).constructor;
+ result = Reflect.construct(Super, arguments, NewTarget);
+ } else {
+ result = Super.apply(this, arguments);
}
- }
-
- newObj["default"] = obj;
-
- if (cache) {
- cache.set(obj, newObj);
- }
-
- return newObj;
- }
-
- function defaultHead() {
- var inAmpMode =
- arguments.length > 0 && arguments[0] !== undefined
- ? arguments[0]
- : false;
- var head = [
- /*#__PURE__*/ _react["default"].createElement("meta", {
- charSet: "utf-8"
- })
- ];
-
- if (!inAmpMode) {
- head.push(
- /*#__PURE__*/ _react["default"].createElement("meta", {
- name: "viewport",
- content: "width=device-width"
- })
- );
- }
-
- return head;
+ return _possibleConstructorReturn(this, result);
+ };
}
- function onlyReactElement(list, child) {
- // React children can be "string" or "number" in this case we ignore them for backwards compat
- if (typeof child === "string" || typeof child === "number") {
- return list;
- } // Adds support for React.Fragment
-
- if (child.type === _react["default"].Fragment) {
- return list.concat(
- _react["default"].Children.toArray(child.props.children).reduce(
- function(fragmentList, fragmentChild) {
- if (
- typeof fragmentChild === "string" ||
- typeof fragmentChild === "number"
- ) {
- return fragmentList;
- }
-
- return fragmentList.concat(fragmentChild);
- },
- []
- )
+ function _isNativeReflectConstruct() {
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+ if (Reflect.construct.sham) return false;
+ if (typeof Proxy === "function") return true;
+ try {
+ Date.prototype.toString.call(
+ Reflect.construct(Date, [], function() {})
);
+ return true;
+ } catch (e) {
+ return false;
}
-
- return list.concat(child);
}
- var METATYPES = ["name", "httpEquiv", "charSet", "itemProp"];
- /*
-returns a function for filtering head child elements
-which shouldn't be duplicated, like <title/>
-Also adds support for deduplicated `key` properties
-*/
-
- function unique() {
- var keys = new Set();
- var tags = new Set();
- var metaTypes = new Set();
- var metaCategories = {};
- return function(h) {
- var isUnique = true;
- var hasKey = false;
+ exports.__esModule = true;
+ exports["default"] = void 0;
- if (h.key && typeof h.key !== "number" && h.key.indexOf("$") > 0) {
- hasKey = true;
- var key = h.key.slice(h.key.indexOf("$") + 1);
+ var _react = __webpack_require__("q1tI");
- if (keys.has(key)) {
- isUnique = false;
- } else {
- keys.add(key);
- }
- } // eslint-disable-next-line default-case
+ var isServer = false;
- switch (h.type) {
- case "title":
- case "base":
- if (tags.has(h.type)) {
- isUnique = false;
- } else {
- tags.add(h.type);
- }
+ var _default = /*#__PURE__*/ (function(_react$Component) {
+ _inherits(_default, _react$Component);
- break;
+ var _super = _createSuper(_default);
- case "meta":
- for (var i = 0, len = METATYPES.length; i < len; i++) {
- var metatype = METATYPES[i];
- if (!h.props.hasOwnProperty(metatype)) continue;
+ function _default(props) {
+ var _this;
- if (metatype === "charSet") {
- if (metaTypes.has(metatype)) {
- isUnique = false;
- } else {
- metaTypes.add(metatype);
- }
- } else {
- var category = h.props[metatype];
- var categories = metaCategories[metatype] || new Set();
+ _classCallCheck(this, _default);
- if (
- (metatype !== "name" || !hasKey) &&
- categories.has(category)
- ) {
- isUnique = false;
- } else {
- categories.add(category);
- metaCategories[metatype] = categories;
- }
- }
- }
+ _this = _super.call(this, props);
+ _this._hasHeadManager = void 0;
- break;
- }
+ _this.emitChange = function() {
+ if (_this._hasHeadManager) {
+ _this.props.headManager.updateHead(
+ _this.props.reduceComponentsToState(
+ _toConsumableArray(_this.props.headManager.mountedInstances),
+ _this.props
+ )
+ );
+ }
+ };
- return isUnique;
- };
- }
- /**
- *
- * @param headElements List of multiple <Head> instances
- */
+ _this._hasHeadManager =
+ _this.props.headManager && _this.props.headManager.mountedInstances;
- function reduceComponents(headElements, props) {
- return headElements
- .reduce(function(list, headElement) {
- var headElementChildren = _react["default"].Children.toArray(
- headElement.props.children
+ if (isServer && _this._hasHeadManager) {
+ _this.props.headManager.mountedInstances.add(
+ _assertThisInitialized(_this)
);
- return list.concat(headElementChildren);
- }, [])
- .reduce(onlyReactElement, [])
- .reverse()
- .concat(defaultHead(props.inAmpMode))
- .filter(unique())
- .reverse()
- .map(function(c, i) {
- var key = c.key || i;
-
- if (true && !props.inAmpMode) {
- if (
- c.type === "link" &&
- c.props["href"] && // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works.
- [
- "https://fonts.googleapis.com/css",
- "https://use.typekit.net/"
- ].some(function(url) {
- return c.props["href"].startsWith(url);
- })
- ) {
- var newProps = _objectSpread({}, c.props || {});
+ _this.emitChange();
+ }
- newProps["data-href"] = newProps["href"];
- newProps["href"] = undefined; // Add this attribute to make it easy to identify optimized tags
+ return _this;
+ }
- newProps["data-optimized-fonts"] = true;
- return /*#__PURE__*/ _react["default"].cloneElement(
- c,
- newProps
- );
+ _createClass(_default, [
+ {
+ key: "componentDidMount",
+ value: function componentDidMount() {
+ if (this._hasHeadManager) {
+ this.props.headManager.mountedInstances.add(this);
}
- }
- return /*#__PURE__*/ _react["default"].cloneElement(c, {
- key: key
- });
- });
- }
- /**
- * This component injects elements to `<head>` of your page.
- * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
- */
-
- function Head(_ref) {
- var children = _ref.children;
- var ampState = (0, _react.useContext)(_ampContext.AmpStateContext);
- var headManager = (0, _react.useContext)(
- _headManagerContext.HeadManagerContext
- );
- return /*#__PURE__*/ _react["default"].createElement(
- _sideEffect["default"],
+ this.emitChange();
+ }
+ },
{
- reduceComponentsToState: reduceComponents,
- headManager: headManager,
- inAmpMode: (0, _amp.isInAmpMode)(ampState)
+ key: "componentDidUpdate",
+ value: function componentDidUpdate() {
+ this.emitChange();
+ }
},
- children
- );
- }
+ {
+ key: "componentWillUnmount",
+ value: function componentWillUnmount() {
+ if (this._hasHeadManager) {
+ this.props.headManager.mountedInstances["delete"](this);
+ }
+
+ this.emitChange();
+ }
+ },
+ {
+ key: "render",
+ value: function render() {
+ return null;
+ }
+ }
+ ]);
+
+ return _default;
+ })(_react.Component);
- var _default = Head;
exports["default"] = _default;
/***/
@@ -624,18 +391,7 @@ Also adds support for deduplicated `key` properties
/***/
},
- /***/ EbDI: /***/ function(module, exports) {
- function _iterableToArray(iter) {
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter))
- return Array.from(iter);
- }
-
- module.exports = _iterableToArray;
-
- /***/
- },
-
- /***/ FYa8: /***/ function(module, exports, __webpack_require__) {
+ /***/ CM2u: /***/ function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
@@ -663,6 +419,17 @@ Also adds support for deduplicated `key` properties
/***/
},
+ /***/ EbDI: /***/ function(module, exports) {
+ function _iterableToArray(iter) {
+ if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter))
+ return Array.from(iter);
+ }
+
+ module.exports = _iterableToArray;
+
+ /***/
+ },
+
/***/ Ijbi: /***/ function(module, exports, __webpack_require__) {
var arrayLikeToArray = __webpack_require__("WkPL");
@@ -808,140 +575,6 @@ Also adds support for deduplicated `key` properties
/***/
},
- /***/ Xuae: /***/ function(module, exports, __webpack_require__) {
- "use strict";
-
- var _toConsumableArray = __webpack_require__("RIqP");
-
- var _classCallCheck = __webpack_require__("lwsE");
-
- var _createClass = __webpack_require__("W8MJ");
-
- var _assertThisInitialized = __webpack_require__("PJYZ");
-
- var _inherits = __webpack_require__("7W2i");
-
- var _possibleConstructorReturn = __webpack_require__("a1gu");
-
- var _getPrototypeOf = __webpack_require__("Nsbk");
-
- function _createSuper(Derived) {
- var hasNativeReflectConstruct = _isNativeReflectConstruct();
- return function _createSuperInternal() {
- var Super = _getPrototypeOf(Derived),
- result;
- if (hasNativeReflectConstruct) {
- var NewTarget = _getPrototypeOf(this).constructor;
- result = Reflect.construct(Super, arguments, NewTarget);
- } else {
- result = Super.apply(this, arguments);
- }
- return _possibleConstructorReturn(this, result);
- };
- }
-
- function _isNativeReflectConstruct() {
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
- if (Reflect.construct.sham) return false;
- if (typeof Proxy === "function") return true;
- try {
- Date.prototype.toString.call(
- Reflect.construct(Date, [], function() {})
- );
- return true;
- } catch (e) {
- return false;
- }
- }
-
- exports.__esModule = true;
- exports["default"] = void 0;
-
- var _react = __webpack_require__("q1tI");
-
- var isServer = false;
-
- var _default = /*#__PURE__*/ (function(_react$Component) {
- _inherits(_default, _react$Component);
-
- var _super = _createSuper(_default);
-
- function _default(props) {
- var _this;
-
- _classCallCheck(this, _default);
-
- _this = _super.call(this, props);
- _this._hasHeadManager = void 0;
-
- _this.emitChange = function() {
- if (_this._hasHeadManager) {
- _this.props.headManager.updateHead(
- _this.props.reduceComponentsToState(
- _toConsumableArray(_this.props.headManager.mountedInstances),
- _this.props
- )
- );
- }
- };
-
- _this._hasHeadManager =
- _this.props.headManager && _this.props.headManager.mountedInstances;
-
- if (isServer && _this._hasHeadManager) {
- _this.props.headManager.mountedInstances.add(
- _assertThisInitialized(_this)
- );
-
- _this.emitChange();
- }
-
- return _this;
- }
-
- _createClass(_default, [
- {
- key: "componentDidMount",
- value: function componentDidMount() {
- if (this._hasHeadManager) {
- this.props.headManager.mountedInstances.add(this);
- }
-
- this.emitChange();
- }
- },
- {
- key: "componentDidUpdate",
- value: function componentDidUpdate() {
- this.emitChange();
- }
- },
- {
- key: "componentWillUnmount",
- value: function componentWillUnmount() {
- if (this._hasHeadManager) {
- this.props.headManager.mountedInstances["delete"](this);
- }
-
- this.emitChange();
- }
- },
- {
- key: "render",
- value: function render() {
- return null;
- }
- }
- ]);
-
- return _default;
- })(_react.Component);
-
- exports["default"] = _default;
-
- /***/
- },
-
/***/ ZhPi: /***/ function(module, exports, __webpack_require__) {
var arrayLikeToArray = __webpack_require__("WkPL");
@@ -1014,6 +647,50 @@ Also adds support for deduplicated `key` properties
/***/
},
+ /***/ dTAc: /***/ function(module, exports, __webpack_require__) {
+ "use strict";
+
+ exports.__esModule = true;
+ exports.isInAmpMode = isInAmpMode;
+ exports.useAmp = useAmp;
+
+ var _react = _interopRequireDefault(__webpack_require__("q1tI"));
+
+ var _ampContext = __webpack_require__("r55Z");
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule
+ ? obj
+ : {
+ default: obj
+ };
+ }
+
+ function isInAmpMode() {
+ var _ref =
+ arguments.length > 0 && arguments[0] !== undefined
+ ? arguments[0]
+ : {},
+ _ref$ampFirst = _ref.ampFirst,
+ ampFirst = _ref$ampFirst === void 0 ? false : _ref$ampFirst,
+ _ref$hybrid = _ref.hybrid,
+ hybrid = _ref$hybrid === void 0 ? false : _ref$hybrid,
+ _ref$hasQuery = _ref.hasQuery,
+ hasQuery = _ref$hasQuery === void 0 ? false : _ref$hasQuery;
+
+ return ampFirst || (hybrid && hasQuery);
+ }
+
+ function useAmp() {
+ // Don't assign the context value to a variable to save bytes
+ return isInAmpMode(
+ _react["default"].useContext(_ampContext.AmpStateContext)
+ );
+ }
+
+ /***/
+ },
+
/***/ lSNA: /***/ function(module, exports) {
function _defineProperty(obj, key, value) {
if (key in obj) {
@@ -1035,13 +712,74 @@ Also adds support for deduplicated `key` properties
/***/
},
- /***/ lwAK: /***/ function(module, exports, __webpack_require__) {
+ /***/ lwsE: /***/ function(module, exports) {
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ module.exports = _classCallCheck;
+
+ /***/
+ },
+
+ /***/ mLbm: /***/ function(module, exports, __webpack_require__) {
"use strict";
+ var _defineProperty = __webpack_require__("lSNA");
+
+ function ownKeys(object, enumerableOnly) {
+ var keys = Object.keys(object);
+ if (Object.getOwnPropertySymbols) {
+ var symbols = Object.getOwnPropertySymbols(object);
+ if (enumerableOnly)
+ symbols = symbols.filter(function(sym) {
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+ });
+ keys.push.apply(keys, symbols);
+ }
+ return keys;
+ }
+
+ function _objectSpread(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i] != null ? arguments[i] : {};
+ if (i % 2) {
+ ownKeys(Object(source), true).forEach(function(key) {
+ _defineProperty(target, key, source[key]);
+ });
+ } else if (Object.getOwnPropertyDescriptors) {
+ Object.defineProperties(
+ target,
+ Object.getOwnPropertyDescriptors(source)
+ );
+ } else {
+ ownKeys(Object(source)).forEach(function(key) {
+ Object.defineProperty(
+ target,
+ key,
+ Object.getOwnPropertyDescriptor(source, key)
+ );
+ });
+ }
+ }
+ return target;
+ }
+
exports.__esModule = true;
- exports.AmpStateContext = void 0;
+ exports.defaultHead = defaultHead;
+ exports["default"] = void 0;
- var _react = _interopRequireDefault(__webpack_require__(
Post job cleanup.
[command]/usr/bin/git version
git version 2.32.0
[command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
[command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :
[command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
http.https://github.com/.extraheader
[command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
[command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :
Cleaning up orphan processes
Commit: 92d2a3dc3ae6bd1ab5709c773bb637e25b63ae3a
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.
LGTM, good to see no imports from next-server in next/client anymore
* [WIP] Add cms notion integration example - index page * Add cover images for pages * Add post page * Remove preview functionality * Add module.exports to security headers documentation (vercel#26466) Without `module.exports`, the provided code won't work if just pasted into `next.config.js` ## Documentation / Examples - [x] Make sure the linting passes * fix: ignore invalid accept-language header (vercel#26476) Fixes vercel#22329 ## Bug - [x] Related issues linked using fixes vercel#22329 - [x] Integration tests added ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. ## Documentation / Examples - [ ] Make sure the linting passes * chore: Add Alex to lint documentation (vercel#26354) This Pull Request adds [Alex](https://alexjs.com/) to our documentation. It catches insensitive, inconsiderate writing. The original PR (vercel#25821) is too large so I have decided to break it down into smaller PRs. This PR is the first part. Then I will continue to add the rest of the documentation in smaller PRs. ## More Information on Alex: https://alexjs.com/ https://github.com/get-alex/alex ## Documentation / Examples - [x] Make sure the linting passes * Fix domain locales not available on client (vercel#26083) * bug: Fix domain locales not available on client * Add test case * update tests Co-authored-by: JJ Kasper <[email protected]> * Update to only add image import types when enabled (vercel#26485) * Update to only add image import types when enabled * add type check to test * Update i18n fields in docs (vercel#26492) Closes: vercel#24991 ## Documentation / Examples - [x] Make sure the linting passes * v11.0.1-canary.7 * Strongly type `Router.events.on` and `Router.events.off` (vercel#26456) This strongly types `Router.events.on` and `Router.events.off`. Previously the event type was `string` but now it's `'routeChangeStart' | 'beforeHistoryChange' | 'routeChangeComplete' | 'routeChangeError' | 'hashChangeStart' | 'hashChangeComplete'` ## Bug - ~[ ] Related issues linked using `fixes #number`~ - [x] Integration tests added Closes vercel#25679 Closes vercel#23753 Closes vercel#15497 * Update next Link & Image components * Ensure image-types file is included (vercel#26495) * Update react & react-dom to v17 * Update tailwind to use jit * v11.0.1-canary.8 * v11.0.1 * Don't test image domains in test env (vercel#26502) fixes vercel#21549 Co-authored-by: JJ Kasper <[email protected]> * docs: updated minimum Node.js version (vercel#26528) ## Documentation / Examples - [x] Make sure the linting passes According to new requirements in `package.json` minimum Node.js version for now is 12.0 * Update next-env note in docs (vercel#26536) This ensures we don't recommend editing the `next-env` file since we need to be able to tweak it to accept future types we add in Next.js ## Documentation / Examples - [x] Make sure the linting passes Closes: vercel#26533 * [examples] Fix ssr-caching example. (vercel#26540) Closes vercel#12019 with a better example of proper SSR caching. * Fix props not updating when changing the locale and keeping hash (vercel#26205) Currently, there is only a `hashChangeStart` and subsequent `hashChangeComplete` event and no props update (which would be used to get translations, etc.). Happy for any feedback fixes vercel#23467 ## Bug - [x] Related issues linked using `fixes #number` - [x] Integration tests added ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. ## Documentation / Examples - [ ] Make sure the linting passes * Add note about adding additional types (vercel#26545) * Add note about adding additional types * Update to bold edit also * Apply suggestions from code review Co-authored-by: Steven <[email protected]> * Allow user to override next-image-loader (vercel#26548) In PR vercel#26281, we solved one use case but broke another. This PR will allow the user to [override the built-in loader](vercel#26281 (comment)) via custom webpack config. * v11.0.2-canary.0 * chore: Enable Alex documentation linting for error pages (vercel#26526) * Update SWR example to include fetcher function. (vercel#26520) * Previous example doesn't work * Apply suggestions from code review * Update docs/basic-features/data-fetching.md * lint-fix Co-authored-by: Lee Robinson <[email protected]> Co-authored-by: JJ Kasper <[email protected]> * tailwind examps upgraded to v2.2 (vercel#26549) ## Documentation / Examples - [x] Make sure the linting passes * doc: prettify docs for next script (vercel#26572) x-ref: vercel#26518 (comment) ## Documentation / Examples - [x] Make sure the linting passes * Add logging when a custom babelrc is loaded (vercel#26570) Partially solves vercel#26539 by adding back the log output when a config file is used ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. ## Documentation / Examples - [ ] Make sure the linting passes * Add comment to not edit in next-env file (vercel#26573) This adds a comment to the generated `next-env.d.ts` to mention it should not be edited pointing to the documentation which contains an example of adding custom types separately. x-ref: vercel#26560 ## Documentation / Examples - [x] Make sure the linting passes * Separate node polyfill test from basic suite (vercel#26550) * Separate node polyfill test from basic suite * update test * fix with-loading example for next 11 (vercel#26569) ## Documentation / Examples - [X] Make sure the linting passes This PR updates the with-loading example to follow the documentation of router events for next 11 * v11.0.2-canary.1 * Add trace url on bootup (vercel#26594) * Add trace url on bootup * Update whitelist -> accesslist * Add name to webpack-invalidated * v11.0.2-canary.2 * Add check for ObjectExpression when iterating on <link> tags for font optimization (vercel#26608) Fixes vercel#26547 ## Bug - [x] Related issues linked using `fixes #number` - [x] Integration tests added ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. ## Documentation / Examples - [ ] Make sure the linting passes * Enable Alex documentation linting for docs (vercel#26598) * Add link to live demo already hosted (vercel#25718) * Add link to live demo already hosted To make it easier for people to simply see the live example without having to deploy a whole new project * update link Co-authored-by: JJ Kasper <[email protected]> * Update next/image docs for relative parent with layout=fill. (vercel#26615) vercel#18739 (reply in thread) * Fix GSP redirect cache error (vercel#26627) This makes sure we don't attempt flushing cache info to disk for `getStaticProps` `redirect` items with `revalidate` Fixes: vercel#20816 ## Bug - [x] Related issues linked using `fixes #number` - [x] Integration tests added * Correct statusCode when visiting _error directly (vercel#26610) This fixes non-stop reloading when visiting `_error` directly in development caused by the `statusCode` being 200 unexpectedly while HMR returns the page as `invalid` which triggers `on-demand-entries` to reload the page. ## Bug - [x] Related issues linked using `fixes #number` - [x] Integration tests added Fixes: vercel#8036 x-ref: vercel#8033 * fix: next dynamic with jest (vercel#26614) Fixes vercel#19862 Avoid executing `webpack` property on `loadableGenerated` of loadable component compiled from `next/dynamic` when `require.resolveWeak` is unavailable due to jest runtime missing `require.resolveWeak`. ## Bug - [x] Related issues linked using `fixes #number` - [x] unit tests added * Ensure API routes are not available under the locale (vercel#26629) This ensures API routes are not available under the locale path since API routes don't need to be localized and we don't provide the locale to the API in any way currently so the user wouldn't be aware if the localized API route was visited instead of the non-localized. Fixes: vercel#25790 ## Bug - [x] Related issues linked using `fixes #number` - [x] Integration tests added * v11.0.2-canary.3 * Fix image content type octet stream 400 (vercel#26705) Fixes vercel#23523 by adding image content type detection ## Bug - [x] Related issues linked using `fixes #number` - [x] Integration tests added * Update layouts example to persist state across client-side transitions. (vercel#26706) * Update layouts example * Update examples/layout-component/components/layout.js Co-authored-by: JJ Kasper <[email protected]> * Fix typo on "occured" to "occurred" (vercel#26709) * fix: typo occured -> occurred * fix: typo occured -> occurred * fix: typo occured -> occurred * fix: typo occured -> occurred * lint-fix Co-authored-by: JJ Kasper <[email protected]> * [ESLint] Adds --max-warnings flag to `next lint` (vercel#26697) Adds `--max-warnings` flag to `next lint` to enable setting of a maximum warning threshold. Fixes vercel#26671 * update with-redux-toolkit-typescript (vercel#26714) ## Bug - [X] Related issues linked using `fixes vercel#26713 ` ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. ## Documentation / Examples - [X] Make sure the linting passes ## Screenshots After this small change the warning disappears. ![image](https://user-images.githubusercontent.com/47717492/123749377-fd56fb80-d8d2-11eb-8b70-dbb7f6f16050.png) * Simplify `next-dev-server` implementation (vercel#26230) `next-dev-server` having its own implementations of `renderToHTML` and `renderErrorToHTML` has historically made reasoning about streaming hard, as it adds additional places where status codes are explicitly set and the full HTML is blocked on. Instead, this PR simplifies things considerably by moving the majority of the custom logic for e.g. hot reloading and on-demand compilation to when we're resolving the page to be loaded, rather than upfront when handling the request. It also cleans up a few other details (e.g. default error page rendering) that managed to creep into the base implementation over time. One unfortunate side effect is that this makes compilation errors slightly more difficult. Previously, we'd render them directly. Now, we have to rethrow them. But since they've already been logged (by the watch pipeline), we have to make sure they don't get logged again. * Update PR labeler action * Simplify stats action (vercel#26751) * Move code shared between server/client to "shared" folder (vercel#26734) * Move next-server directory files to server directory (vercel#26756) * Move next-server directory files to server directory * Update tests * Update paths in other places * Support new hydrate API in latest react 18 alpha release (vercel#26664) * fix: react 18 new hydration API * support react 18 * compat latest react only, fix resolved version * fix tests * Some changes based on reactwg/react-18#5 * fix test Co-authored-by: Tim Neutkens <[email protected]> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> * Disable build-output size specific tests (vercel#26769) * Disable build-output size specific tests * remove size-limit test * lint-fix * Add upstream `max-age` to optimized image (vercel#26739) This solves the main use case from Issue vercel#19914. Previously, we would set the `Cache-Control` header to a constant and rely on the server cache. This would mean the browser would always request the image and the server could response with 304 Not Modified to omit the response body. This PR changes the behavior such that the `max-age` will propagate from the upstream server to the Next.js Image Optimization Server and allow browser caching. ("upstream" meaning external server or just an internal route to an image) This PR does not change the `max-age` for static imports which will remain `public, max-age=315360000, immutable`. #### Pros: - Fewer HTTP requests after initial browser visit - User configurable `max-age` via the upstream image `Cache-Control` header #### Cons: - ~~Might be annoying for `next dev` when modifying a source image~~ (solved: use `max-age=0` for dev) - Might cause browser to cache longer than expected (up to 2x longer than the server cache if requested in the last second before expiration) ## Bug - [x] Related issues linked using `fixes #number` * Fix blurred image position when using objectPosition (vercel#26590) ## Bug fixes vercel#26309 ## Documentation / Examples see vercel#26309 - [ ] Make sure the linting passes * Update azure tests (vercel#26779) * Stabilize relay-analytics test (vercel#26782) * Leverage blocked page for _error (vercel#26748) ## Enhance simplify detection for visiting `_error` x-ref: vercel#26610 * Update codeowners to add new maintainers (vercel#26770) * examples: fix typo `lunix` → `linux` (vercel#26796) ## Bug - [ ] ~~Related issues linked using `fixes #number`~~ - [ ] ~~Integration tests added~~ ## Feature - [ ] ~~Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.~~ - [ ] ~~Related issues linked using `fixes #number`~~ - [ ] ~~Integration tests added~~ - [ ] ~~Documentation added~~ - [ ] ~~Telemetry added. In case of a feature if it's used or not.~~ ## Documentation / Examples - [x] Make sure the linting passes * Update repo scripts to separate folder (vercel#26787) * fix: detect loop in client error page (vercel#26567) Co-authored-by: Tobias Koppers <[email protected]> Co-authored-by: Tim Neutkens <[email protected]> * Update snapshot for font-optimization test (vercel#26823) This fixes the `font-optimization` test failing from the links/content changing slightly in the snapshot. ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. ## Documentation / Examples - [ ] Make sure the linting passes * Add `onLoadingComplete()` prop to Image component (vercel#26824) This adds a new prop, `onLoadingComplete()`, to handle the most common use case of `ref`. I also added docs and a warning when using `ref` so we recommend the new prop instead. - Fixes vercel#18398 - Fixes vercel#22482 * Add "Vary: Accept" header to /_next/image responses (vercel#26788) This pull request adds "Vary: Accept" header to responses from the image optimizer (i.e. the /_next/image endpoint). The image optimizer prefers re-encoding JPG files to WebP, but some browsers (such as Safari 14 on Catalina) do not yet support WebP. In such cases the optimizer uses the Accept header sent by the browser to send out a JPG response. Thus the optimizer's response may depend on the Accept header. Potential caching proxies can be informed of this fact by adding "Vary: Accept" to the response headers. Otherwise WebP data may be served to browsers that do not support it, for example in the following scenario: * A browser that supports WebP requests the JPG. The optimizer re-encodes it to WebP. The proxy caches the WebP data. * After this another browser that doesn't support WebP requests the JPG. The proxy sends the WebP data to the browser. - [x] Integration tests added - [x] Make sure the linting passes * Fix using-preact example deps (vercel#26821) Fix after vercel#26133 * Add additional tests for image type detection (vercel#26832) Adding additional tests. Follow up to vercel#26705 * Fix immutable header for image with static import & unoptimized (vercel#26836) Fixes vercel#26587 * Update `publish-canary` script to include checkout (vercel#26840) * Update `publish-canary` script to include checkout * Update contrib with publishing section * v11.0.2-canary.4 * Make sure 404 pages do not get cached by a CDN when using next start (vercel#24983) Co-authored-by: Jiachi Liu <[email protected]> Co-authored-by: JJ Kasper <[email protected]> * Update to environment-variable.md (vercel#26863) ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [x] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. ## Documentation / Examples - [ ] Make sure the linting passes ## Why the change I lost quite a few hours figuring out why my environment variable was `undefined` in the browser. I read about the built-in support and was like: "Oh nice" and didn't read much further. I missed the part about how you need to prefix your variables with `NEXT_PUBLIC_` in order to expose them to the browser. I think a hint to this in the anchor link to that section will make it more discoverable as it's then mentioned near the top and will save people who are like me some time and a headache. * Don't emit duplicate image files (vercel#26843) fixes vercel#26607 This change makes it so the image loader plugin only emits a file while processing an image import for the client. The final generated image URL was already the same in SSR and CSR anyway, so this change doesn't have any functional impact. I also changed the name of the static page in the image component tests, since it was causing some conflicts with the static assets folder. * Add instructions on how to add nextjs.org/docs/messages urls (vercel#26865) Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> * Rename example folder to with-notion * Update references of example * Reorder docs manifest and rename to Script Optimization. (vercel#26874) So there's _conformance_ between the other docs / optimizations. * Fix typo on "occured" to "occurred" (vercel#26876) - Fix typo on "occured" to "occurred" * Update README Co-authored-by: Sam Robbins <[email protected]> Co-authored-by: Jiachi Liu <[email protected]> Co-authored-by: Peter Mekhaeil <[email protected]> Co-authored-by: Rob Vermeer <[email protected]> Co-authored-by: JJ Kasper <[email protected]> Co-authored-by: Brandon Bayer <[email protected]> Co-authored-by: Alex Castle <[email protected]> Co-authored-by: Vitaly Baev <[email protected]> Co-authored-by: Lee Robinson <[email protected]> Co-authored-by: destruc7i0n <[email protected]> Co-authored-by: Steven <[email protected]> Co-authored-by: Joshua Byrd <[email protected]> Co-authored-by: Pranav P <[email protected]> Co-authored-by: Tim Neutkens <[email protected]> Co-authored-by: John <[email protected]> Co-authored-by: Tim Neutkens <[email protected]> Co-authored-by: Vadorequest <[email protected]> Co-authored-by: hiro <[email protected]> Co-authored-by: Houssein Djirdeh <[email protected]> Co-authored-by: Soham Shah <[email protected]> Co-authored-by: Gerald Monaco <[email protected]> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> Co-authored-by: Nils Schönwald <[email protected]> Co-authored-by: D. Kasi Pavan Kumar <[email protected]> Co-authored-by: Tobias Koppers <[email protected]> Co-authored-by: Joachim Viide <[email protected]> Co-authored-by: Artur Sedlukha <[email protected]> Co-authored-by: Paul van den Dool <[email protected]> Co-authored-by: hiro <[email protected]>
hi @timneutkens our developers had to move from
to
this change is unacceptable on minor versions. thanks for your understanding. I will open an issue. |
This is not a breaking change as the files that you're referring to are Next.js internals that should not be imported. Anything in the |
@timneutkens thanks for the clarification. |
Bug
fixes #number
Feature
fixes #number
Documentation / Examples