* Only install react-scripts in CI mode
* Link locally
* Re-enable all output tests
* 💄 Polish webpack output
* Test sass support message
* Add more tests, but disabled
* Format missing default export error
* Format aliased import
* Why was node-sass required? Odd
* Format webpack rejection error
* Re-enable unknown package test
* Format file not found error and catch module scope plugin error
* Re-disable case sensitive paths
* Intercept and format case sensitive path errors
* Test out of scope message formatting
* Run behavior on macOS
* Run behavior on Node 8 and 10, only Node 8 for macOS
* Add some debugging
* Update matcher
* Only check stderr
* Remove old snapshot
* More debug
* Remove debug
* Add new debug
* Disable test on linux
* Add comment for future
* Switch back to babel-loader
* Preserve existing caller options. Use Object.assign instead of object spread.
* Updated filename in package.json
* Update comment about cache identifier
* Update macro check to use a regex
* Move macro check regex out of function
* Remove runtime alias hack
* Pass absolute path to preset
* Change comment
* Give a relative path to absolute runtime
* Clean up config
* Tweak again
* Make absolute runtime the default
* Remove runtime package from error overlay
* Add workbox service worker functionality
* Remove debug
* Set workboxConfig for when there isn't a cra config file
* Remove workbox configuration options as c-r-a isn't planning on supporting optional configuration
* Remove c-r-a config path from paths
* Add workbox service worker functionality
* Remove c-r-a config path from paths
* Inline the webpack workbox config
* Use settings reccommended by @jeffposnick
https://github.com/facebook/create-react-app/pull/4169/#issuecomment-422963072
* Fallback to public url index.html, not root
* Add one comment
* Update comment
* Correct regex
* Turn on helpers and test importing something with async/await works
* Compiling babel runtime breaks itself
* Add helpers option to babel plugin with defaults
* Make helpers off by default and on in our configuration
* Hit eject and e2e
* meh
* copy'n'paste
* change again
* Turn off helpers by default in /prod, /dev, /test
* oops
* Spread undefined
* Use object assign not object spread
* Put preset in template since it's needed
* Fix e2e tests
This is the best behavior so people have seamless upgrades to new React majors.
This is probably a terrible default warning from the ESLint plugin, and we need to wait for https://github.com/yannickcr/eslint-plugin-react/issues/1955 before changing this hardcoded behavior.
Closes#5034
* Updates to reflect service worker registration being opt-in.
* Fixed an anchor link.
* Updates to SWPrecacheWebpackPlugin config, and corresponding docs.
The `formatter` option is incompatible with with `thread-loader`.
The `formatter` option previously accepted a function which was lost during JSON serialization.
* Update paths.js, rename shadow path variable
This file requires the "path" module and sets it to a variable `path`. The function `ensureSlash` also has a variable `path` that then shadows the `path` module.
* Update paths.js
* - [x] Upgrade to webpack 4.8.X
- [x] Utilize webpack 4 development and production modes
- [x] Upgrade webpack dev server
- [x] Webpack 4 compatible release of thread-loader
- [x] Webpack 4 compatible release of HtmlWebpackPlugin
- [x] Webpack 4 compatible release of SwPrecacheWebpackPlugin
- [x] Webpack 4 compatible release of WebpackManifestPlugin
- [x] Update README
- [x] Update WebpackDevServerUtils
- [x] Update InterpolateHtmlPlugin
- [x] Update ModuleScopePlugin
- [x] Update WatchMissingNodeModulesPlugin
- [x] Move UglifyJS options to webpack 4 optimize
- [x] Move InterpolateHtmlPlugin to make it tapable on HtmlWebpackPlugin
- [x] vendor splitting via splitChunks.splitChunks (https://twitter.com/wSokra/status/969633336732905474)
- [x] long term caching via splitChunks.runtimeChunk (https://twitter.com/wSokra/status/969679223278505985)
- [x] Make sure process.env.NODE_ENV is proxied correctly to `react-error-overlay`
- [x] Implicit webpack.NamedModulesPlugin in dev config as its default in webpack 4
- [x] Disable webpack performance hints as we have our own filesize reporter
- [x] Replace ExtractTextPlugin with MiniCssExtractPlugin
- [x] Switch to css whole file minification via OptimizeCSSAssetsPlugin rather than per module css minification to gain performance
* disable module concatenation
* fix cleanup
* fix optimization
* restore tmp removal
* preserve
* fix css tests
* fix test run
* fix svg test
* revert tmp dir
* fix import
* fix import
* help debugging
* fix tests
* fix sass test
* restore cleanup
- [x] Utilize webpack 4 development and production modes
- [x] Upgrade webpack dev server
- [x] Webpack 4 compatible release of thread-loader
- [x] Webpack 4 compatible release of HtmlWebpackPlugin
- [x] Webpack 4 compatible release of SwPrecacheWebpackPlugin
- [x] Webpack 4 compatible release of WebpackManifestPlugin
- [x] Update README
- [x] Update WebpackDevServerUtils
- [x] Update InterpolateHtmlPlugin
- [x] Update ModuleScopePlugin
- [x] Update WatchMissingNodeModulesPlugin
- [x] Move UglifyJS options to webpack 4 optimize
- [x] Move InterpolateHtmlPlugin to make it tapable on HtmlWebpackPlugin
- [x] vendor splitting via splitChunks.splitChunks (https://twitter.com/wSokra/status/969633336732905474)
- [x] long term caching via splitChunks.runtimeChunk (https://twitter.com/wSokra/status/969679223278505985)
- [x] Make sure process.env.NODE_ENV is proxied correctly to `react-error-overlay`
- [x] Implicit webpack.NamedModulesPlugin in dev config as its default in webpack 4
- [x] Disable webpack performance hints as we have our own filesize reporter
- [x] Replace ExtractTextPlugin with MiniCssExtractPlugin
- [x] Switch to css whole file minification via OptimizeCSSAssetsPlugin rather than per module css minification to gain performance
Summary:
The `hasSlash` method uses `path.substr(path, path.length - 1)` to
remove the last character from `path`. Clearly, the first parameter is
suspect; it should be `0`. The code works as written, but only very
accidentally: the first parameter is coerced by `ToNumber` to `NaN`,
which is then coerced by `ToInteger` to `+0`, per [the spec][1].
[1]: https://www.ecma-international.org/ecma-262/6.0/#sec-string.prototype.substr
Test Plan:
Reading the spec should be sufficient. To verify in the Real World:
```js
const path = "has-slash-but-does-not-need-slash/"
const a = path.substr(path, path.length - 1);
const b = path.substr(0, path.length - 1);
console.log(a === b); // true
console.log(a); // has-slash-but-does-not-need-slash
```
wchargin-branch: ensureslash-accidental-coercion