From 62f0a83c5e1ac4df3d752cb727f648d8096f4110 Mon Sep 17 00:00:00 2001 From: Joshua Wiens Date: Thu, 5 Oct 2017 18:49:07 -0500 Subject: [PATCH 1/9] Update url-loader to 0.6.2 for mime ReDoS vuln (#3246) - Changelog: https://github.com/webpack-contrib/url-loader/blob/master/CHANGELOG.md - Reference issue: https://nodesecurity.io/advisories/535 Fixes #3244 --- packages/react-scripts/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-scripts/package.json b/packages/react-scripts/package.json index 123f966d035..1d8ef515b2f 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -51,7 +51,7 @@ "react-dev-utils": "^4.1.0", "style-loader": "0.18.2", "sw-precache-webpack-plugin": "0.11.4", - "url-loader": "0.5.9", + "url-loader": "0.6.2", "webpack": "3.5.1", "webpack-dev-server": "2.8.2", "webpack-manifest-plugin": "1.2.1", From a0030fcf2df5387577ced165198f1f0264022fbd Mon Sep 17 00:00:00 2001 From: Jonny Buchanan Date: Fri, 6 Oct 2017 10:02:32 +1000 Subject: [PATCH 2/9] Update style-loader and disable inclusion of its HMR code in builds (#3236) --- packages/react-scripts/config/webpack.config.prod.js | 7 ++++++- packages/react-scripts/package.json | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/react-scripts/config/webpack.config.prod.js b/packages/react-scripts/config/webpack.config.prod.js index ef4ea1bc076..124d5b3cbeb 100644 --- a/packages/react-scripts/config/webpack.config.prod.js +++ b/packages/react-scripts/config/webpack.config.prod.js @@ -197,7 +197,12 @@ module.exports = { loader: ExtractTextPlugin.extract( Object.assign( { - fallback: require.resolve('style-loader'), + fallback: { + loader: require.resolve('style-loader'), + options: { + hmr: false, + }, + }, use: [ { loader: require.resolve('css-loader'), diff --git a/packages/react-scripts/package.json b/packages/react-scripts/package.json index 1d8ef515b2f..f5007fbe635 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -49,7 +49,7 @@ "postcss-loader": "2.0.6", "promise": "8.0.1", "react-dev-utils": "^4.1.0", - "style-loader": "0.18.2", + "style-loader": "0.19.0", "sw-precache-webpack-plugin": "0.11.4", "url-loader": "0.6.2", "webpack": "3.5.1", From 00ed100b26adc519fd90e09ebffd83c8d7dc4343 Mon Sep 17 00:00:00 2001 From: Tharaka Wijebandara Date: Fri, 6 Oct 2017 05:51:17 +0530 Subject: [PATCH 3/9] Add click-to-open support for build errors (#3100) * Implement click-to-open for babel syntax errors in build error overlay * Add click-to-open support for lint errors and refactor parser * Reactor code to reuse open-in-editor functionality in both build and runtime error overlays * Fix some eslint warnings * Add a comment about keeping middleware and dev client in sync * Remove es6 features from webpack dev client * Make open-in-editor functionality to work with new iframe script * Rename `openInEditor` to `editorHandler` - Remove indirection of openInEditorListener - Check editorHandler for null before styling error clickable * Fix flow errors --- .../react-dev-utils/webpackHotDevClient.js | 11 +++- .../src/containers/CompileErrorContainer.js | 20 ++++++- .../src/containers/RuntimeError.js | 7 ++- .../src/containers/RuntimeErrorContainer.js | 5 +- .../src/containers/StackFrame.js | 48 +++++++--------- .../src/containers/StackTrace.js | 12 ++-- .../react-error-overlay/src/iframeScript.js | 11 +++- packages/react-error-overlay/src/index.js | 21 ++++++- .../src/utils/parseCompileError.js | 57 +++++++++++++++++++ 9 files changed, 142 insertions(+), 50 deletions(-) create mode 100644 packages/react-error-overlay/src/utils/parseCompileError.js diff --git a/packages/react-dev-utils/webpackHotDevClient.js b/packages/react-dev-utils/webpackHotDevClient.js index 611fc6ba042..e375c3fab8d 100644 --- a/packages/react-dev-utils/webpackHotDevClient.js +++ b/packages/react-dev-utils/webpackHotDevClient.js @@ -23,6 +23,16 @@ var launchEditorEndpoint = require('./launchEditorEndpoint'); var formatWebpackMessages = require('./formatWebpackMessages'); var ErrorOverlay = require('react-error-overlay'); +ErrorOverlay.setEditorHandler(function editorHandler(errorLocation) { + // Keep this sync with errorOverlayMiddleware.js + fetch( + `${launchEditorEndpoint}?fileName=` + + window.encodeURIComponent(errorLocation.fileName) + + '&lineNumber=' + + window.encodeURIComponent(errorLocation.lineNumber || 1) + ); +}); + // We need to keep track of if there has been a runtime error. // Essentially, we cannot guarantee application state was not corrupted by the // runtime error. To prevent confusing behavior, we forcibly reload the entire @@ -31,7 +41,6 @@ var ErrorOverlay = require('react-error-overlay'); // See https://github.com/facebookincubator/create-react-app/issues/3096 var hadRuntimeError = false; ErrorOverlay.startReportingRuntimeErrors({ - launchEditorEndpoint: launchEditorEndpoint, onError: function() { hadRuntimeError = true; }, diff --git a/packages/react-error-overlay/src/containers/CompileErrorContainer.js b/packages/react-error-overlay/src/containers/CompileErrorContainer.js index 5d491a9d47f..9d1e399fd10 100644 --- a/packages/react-error-overlay/src/containers/CompileErrorContainer.js +++ b/packages/react-error-overlay/src/containers/CompileErrorContainer.js @@ -12,18 +12,34 @@ import Footer from '../components/Footer'; import Header from '../components/Header'; import CodeBlock from '../components/CodeBlock'; import generateAnsiHTML from '../utils/generateAnsiHTML'; +import parseCompileError from '../utils/parseCompileError'; +import type { ErrorLocation } from '../utils/parseCompileError'; + +const codeAnchorStyle = { + cursor: 'pointer', +}; type Props = {| error: string, + editorHandler: (errorLoc: ErrorLocation) => void, |}; class CompileErrorContainer extends PureComponent { render() { - const { error } = this.props; + const { error, editorHandler } = this.props; + const errLoc: ?ErrorLocation = parseCompileError(error); + const canOpenInEditor = errLoc !== null && editorHandler !== null; return (
- + editorHandler(errLoc) : null + } + style={canOpenInEditor ? codeAnchorStyle : null} + > + +