@pmmmwh/react-refresh-webpack-plugin
Advanced tools
Comparing version 0.3.0-beta.0 to 0.3.0-beta.1
{ | ||
"name": "@pmmmwh/react-refresh-webpack-plugin", | ||
"version": "0.3.0-beta.0", | ||
"version": "0.3.0-beta.1", | ||
"description": "An **EXPERIMENTAL** Webpack plugin to enable \"Fast Refresh\" (also previously known as _Hot Reloading_) for React components.", | ||
@@ -35,22 +35,22 @@ "keywords": [ | ||
"lint:fix": "yarn lint --fix", | ||
"format": "prettier --write \"**/*.{js,jsx,json,md}\"", | ||
"format:check": "prettier --check \"**/*.{js,jsx,json,md}\"" | ||
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\"", | ||
"format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,md}\"" | ||
}, | ||
"dependencies": { | ||
"ansi-html": "^0.0.7", | ||
"error-stack-parser": "^2.0.4", | ||
"error-stack-parser": "^2.0.6", | ||
"html-entities": "^1.2.1", | ||
"lodash.debounce": "^4.0.8", | ||
"react-dev-utils": "^9.1.0" | ||
"native-url": "^0.2.6" | ||
}, | ||
"devDependencies": { | ||
"eslint": "^6.7.2", | ||
"eslint-config-prettier": "^6.7.0", | ||
"prettier": "^1.18.2", | ||
"react-refresh": "^0.7.0", | ||
"webpack": "^4.41.2", | ||
"eslint": "^6.8.0", | ||
"eslint-config-prettier": "^6.10.1", | ||
"prettier": "^2.0.2", | ||
"react-refresh": "^0.8.1", | ||
"webpack": "^4.42.1", | ||
"webpack-hot-middleware": "^2.25.0" | ||
}, | ||
"peerDependencies": { | ||
"react-refresh": ">= 0.7", | ||
"react-refresh": "^0.8.1", | ||
"sockjs-client": "^1.4.0", | ||
@@ -57,0 +57,0 @@ "webpack-hot-middleware": "^2.25.0" |
# React Refresh Webpack Plugin | ||
[![NPM Version](https://img.shields.io/npm/v/@pmmmwh/react-refresh-webpack-plugin)](https://www.npmjs.com/package/@pmmmwh/react-refresh-webpack-plugin) | ||
[![Latest Version](https://img.shields.io/npm/v/@pmmmwh/react-refresh-webpack-plugin/latest)](https://www.npmjs.com/package/@pmmmwh/react-refresh-webpack-plugin/v/latest) | ||
[![Next Version](https://img.shields.io/npm/v/@pmmmwh/react-refresh-webpack-plugin/next)](https://www.npmjs.com/package/@pmmmwh/react-refresh-webpack-plugin/v/next) | ||
[![License](https://img.shields.io/github/license/pmmmwh/react-refresh-webpack-plugin)](./LICENSE) | ||
@@ -91,3 +92,3 @@ | ||
```js | ||
module.exports = api => { | ||
module.exports = (api) => { | ||
// This caches the Babel config by environment. | ||
@@ -106,14 +107,36 @@ api.cache.using(() => process.env.NODE_ENV); | ||
## Options | ||
More sample projects for common Webpack development setups are available in the [examples](https://github.com/pmmmwh/react-refresh-webpack-plugin/tree/master/examples) folder. | ||
This plugin accepts a few options that are specifically targeted for advanced users. | ||
> Note: If you are using TypeScript (instead of Babel) as a transpiler, you will still need to use `babel-loader` to process your source code. | ||
> Check out this [sample project](https://github.com/pmmmwh/react-refresh-webpack-plugin/tree/master/examples/typescript-without-babel) on how to set this up. | ||
### `options.disableRefreshCheck` | ||
### Polyfill for Older Browsers (WDS Only) | ||
Type: `boolean` | ||
Default: `false` | ||
If you need to develop on IE11, you will need to polyfill the DOM URL API. | ||
This can be done by adding the following before any of your code in the main entry (either one is fine): | ||
Disables detection of react-refresh's Babel plugin. | ||
Useful if you do not parse JS files within `node_modules`, or if you have a Babel setup not entirely controlled by Webpack. | ||
**Using `url-polyfill`** | ||
```js | ||
import 'url-polyfill'; | ||
``` | ||
**Using `core-js`** | ||
```js | ||
import 'core-js/features/url'; | ||
import 'core-js/features/url-search-params'; | ||
``` | ||
**Using `react-app-polyfill`** | ||
```js | ||
import 'react-app-polyfill/ie11'; | ||
import 'react-app-polyfill/stable'; | ||
``` | ||
## Options | ||
This plugin accepts a few options that are specifically targeted for advanced users. | ||
### `options.forceEnable` | ||
@@ -168,2 +191,21 @@ | ||
### `options.sockHost` | ||
Type: `string` | ||
Default: effectively `window.location.hostname` | ||
Set this if you are running webpack on a host other than `window.location.hostname`. This is used by the error overlay module. | ||
### `options.sockPort` | ||
Type: `number` | ||
Default: effectively `window.location.port` | ||
Set this if you are running webpack on a port other than `window.location.port` | ||
### `options.sockPath` | ||
Type: `string` | ||
Default: `/sockjs-node` | ||
### `options.useLegacyWDSSockets` | ||
@@ -170,0 +212,0 @@ |
@@ -47,3 +47,3 @@ const { Template } = require('webpack'); | ||
// Webpack generates this line whenever the mainTemplate is called | ||
const moduleInitializationLineNumber = lines.findIndex(line => | ||
const moduleInitializationLineNumber = lines.findIndex((line) => | ||
line.startsWith('modules[moduleId].call') | ||
@@ -50,0 +50,0 @@ ); |
@@ -11,2 +11,6 @@ /** @typedef {string | string[] | import('webpack').Entry} StaticEntry */ | ||
const injectRefreshEntry = (originalEntry, options) => { | ||
const sockHost = options.sockHost ? `&sockHost=${options.sockHost}` : ''; | ||
const sockPort = options.sockPort ? `&sockPort=${options.sockPort}` : ''; | ||
const sockPath = options.sockPath ? `&sockPath=${options.sockPath}` : ''; | ||
const queryParams = `?options${sockHost}${sockPort}${sockPath}`; | ||
const entryInjects = [ | ||
@@ -18,5 +22,3 @@ // Legacy WDS SockJS integration | ||
// Error overlay runtime | ||
options.overlay && options.overlay.entry, | ||
// React-refresh Babel transform detection | ||
require.resolve('../runtime/BabelDetectComponent'), | ||
options.overlay && options.overlay.entry + queryParams, | ||
].filter(Boolean); | ||
@@ -45,3 +47,3 @@ | ||
return (...args) => | ||
Promise.resolve(originalEntry(...args)).then(resolvedEntry => | ||
Promise.resolve(originalEntry(...args)).then((resolvedEntry) => | ||
injectRefreshEntry(resolvedEntry, options) | ||
@@ -48,0 +50,0 @@ ); |
/** @type {import('../types').ReactRefreshPluginOptions} */ | ||
const defaultOptions = { | ||
disableRefreshCheck: false, | ||
forceEnable: false, | ||
@@ -22,2 +21,12 @@ useLegacyWDSSockets: false, | ||
if (typeof validatedOptions.disableRefreshCheck !== 'undefined') { | ||
console.warn( | ||
[ | ||
'The "disableRefreshCheck" option has been deprecated and will not have any effect on how the plugin parses files.', | ||
'Please remove it from your configuration.', | ||
].join(' ') | ||
); | ||
delete validatedOptions.disableRefreshCheck; | ||
} | ||
if ( | ||
@@ -24,0 +33,0 @@ typeof validatedOptions.overlay !== 'undefined' && |
@@ -39,8 +39,10 @@ const path = require('path'); | ||
const providePlugin = new webpack.ProvidePlugin({ | ||
[errorOverlay]: this.options.overlay && require.resolve(this.options.overlay.module), | ||
[refreshUtils]: require.resolve('./runtime/utils'), | ||
[refreshUtils]: require.resolve('./runtime/refreshUtils'), | ||
...(!!this.options.overlay && { | ||
[errorOverlay]: require.resolve(this.options.overlay.module), | ||
}), | ||
}); | ||
providePlugin.apply(compiler); | ||
compiler.hooks.beforeRun.tap(this.constructor.name, compiler => { | ||
compiler.hooks.beforeRun.tap(this.constructor.name, (compiler) => { | ||
// Check for existence of HotModuleReplacementPlugin in the plugin list | ||
@@ -52,3 +54,3 @@ // It is the foundation to this plugin working correctly | ||
// because a project might contain multiple references to Webpack | ||
plugin => plugin.constructor.name === 'HotModuleReplacementPlugin' | ||
(plugin) => plugin.constructor.name === 'HotModuleReplacementPlugin' | ||
) | ||
@@ -62,4 +64,4 @@ ) { | ||
compiler.hooks.normalModuleFactory.tap(this.constructor.name, nmf => { | ||
nmf.hooks.afterResolve.tap(this.constructor.name, data => { | ||
compiler.hooks.normalModuleFactory.tap(this.constructor.name, (nmf) => { | ||
nmf.hooks.afterResolve.tap(this.constructor.name, (data) => { | ||
// Inject refresh loader to all JavaScript-like files | ||
@@ -85,3 +87,3 @@ if ( | ||
compiler.hooks.compilation.tap(this.constructor.name, compilation => { | ||
compiler.hooks.compilation.tap(this.constructor.name, (compilation) => { | ||
compilation.mainTemplate.hooks.require.tap( | ||
@@ -105,3 +107,3 @@ this.constructor.name, | ||
contentHashType: 'javascript', | ||
hashWithLength: length => mainTemplate.renderCurrentHashCode(hash, length), | ||
hashWithLength: (length) => mainTemplate.renderCurrentHashCode(hash, length), | ||
noChunkHash: mainTemplate.useChunkHash(chunk), | ||
@@ -123,40 +125,2 @@ }); | ||
); | ||
compilation.hooks.finishModules.tap(this.constructor.name, modules => { | ||
if (!this.options.disableRefreshCheck) { | ||
for (const module of modules) { | ||
const refreshPluginInjection = /\$RefreshReg\$/; | ||
/** @type {undefined | null | string} */ | ||
const moduleSource = module._source && module._source.source(); | ||
// Some module might not have the _source property, | ||
// so we have to gracefully skip them. | ||
if (!moduleSource) { | ||
continue; | ||
} | ||
// Check for the function transform by the Babel plugin. | ||
if ( | ||
module.resource === require.resolve('./runtime/BabelDetectComponent.js') && | ||
!refreshPluginInjection.test(moduleSource) | ||
) { | ||
const transformNotDetectedError = new Error( | ||
[ | ||
'React Refresh Plugin:', | ||
'The plugin is unable to detect transformed code from react-refresh.', | ||
'Did you forget to include "react-refresh/babel" in your list of Babel plugins?', | ||
'Note: you can disable this check by setting "disableRefreshCheck: true".', | ||
].join(' ') | ||
); | ||
// We cannot throw here as it will halt compilation. | ||
// Warnings/Errors will get swallowed unless we explicitly push it to the stack. | ||
compilation.warnings.push(transformNotDetectedError); | ||
// Early exit for performance | ||
break; | ||
} | ||
} | ||
} | ||
}); | ||
}); | ||
@@ -163,0 +127,0 @@ } |
@@ -173,3 +173,3 @@ const debounce = require('lodash.debounce'); | ||
function render() { | ||
ensureRootExists(function() { | ||
ensureRootExists(function () { | ||
const currentFocus = rootDocument.activeElement; | ||
@@ -313,3 +313,3 @@ let currentFocusId; | ||
function isWebpackCompileError(error) { | ||
return /Module [A-z ]+\(from/.test(error.message); | ||
return /Module [A-z ]+\(from/.test(error.message) || /Cannot find module/.test(error.message); | ||
} | ||
@@ -316,0 +316,0 @@ |
// eslint-disable-next-line no-unused-vars | ||
/* global __resourceQuery, __webpack_dev_server_client__ */ | ||
const url = require('url'); | ||
const url = require('native-url'); | ||
const loadWHMEventSource = require('./WHMEventSource'); | ||
@@ -11,3 +11,3 @@ | ||
*/ | ||
function createSocket(messageHandler) { | ||
function createSocket(messageHandler, options) { | ||
// This adds support for custom WDS socket transportModes | ||
@@ -18,11 +18,9 @@ // In the future, we should add support for custom clients to better support WDM | ||
const connection = new SocketClient( | ||
// TODO: Dynamically generate this to handle resourceQuery | ||
// TODO: Use resourceQuery to fix servers under proxies | ||
url.format({ | ||
protocol: window.location.protocol, | ||
hostname: window.location.hostname, | ||
port: window.location.port, | ||
hostname: options.sockHost || window.location.hostname, | ||
port: options.sockPort || window.location.port, | ||
// TODO: Support usage of custom sockets after WDS 4.0 is released | ||
// Ref: https://github.com/webpack/webpack-dev-server/pull/2055 | ||
pathname: '/sockjs-node', | ||
pathname: options.sockPath || '/sockjs-node', | ||
}) | ||
@@ -29,0 +27,0 @@ ); |
@@ -1,7 +0,4 @@ | ||
// TODO: Implement handling of this | ||
// eslint-disable-next-line no-unused-vars | ||
/* global __resourceQuery */ | ||
/* global __resourceQuery, __react_refresh_error_overlay__ */ | ||
const formatWebpackMessages = require('react-dev-utils/formatWebpackMessages'); | ||
const ErrorOverlay = require('../overlay'); | ||
const formatWebpackErrors = require('./formatWebpackErrors'); | ||
const createSocket = require('./createSocket'); | ||
@@ -24,4 +21,4 @@ const { | ||
function tryDismissErrorOverlay() { | ||
ErrorOverlay.clearCompileError(); | ||
ErrorOverlay.clearRuntimeErrors(!hasRuntimeErrors); | ||
__react_refresh_error_overlay__.clearCompileError(); | ||
__react_refresh_error_overlay__.clearRuntimeErrors(!hasRuntimeErrors); | ||
hasRuntimeErrors = false; | ||
@@ -50,9 +47,6 @@ } | ||
const formatted = formatWebpackMessages({ | ||
errors: errors, | ||
warnings: [], | ||
}); | ||
const formattedErrors = formatWebpackErrors(errors); | ||
// Only show the first error | ||
ErrorOverlay.showCompileError(formatted.errors[0]); | ||
__react_refresh_error_overlay__.showCompileError(formattedErrors[0]); | ||
} | ||
@@ -69,2 +63,5 @@ | ||
case 'ok': | ||
case 'still-ok': | ||
case 'warnings': | ||
// TODO: Implement handling for warnings | ||
handleCompileSuccess(); | ||
@@ -80,12 +77,17 @@ break; | ||
let overrides = {}; | ||
if (__resourceQuery) { | ||
overrides = require('querystring').parse(__resourceQuery.slice(1)); | ||
} | ||
// Registers handlers for compile errors | ||
createSocket(compileMessageHandler); | ||
createSocket(compileMessageHandler, overrides); | ||
// Registers handlers for runtime errors | ||
registerErrorHandler(function handleError(error) { | ||
hasRuntimeErrors = true; | ||
ErrorOverlay.handleRuntimeError(error); | ||
__react_refresh_error_overlay__.handleRuntimeError(error); | ||
}); | ||
registerUnhandledRejectionHandler(function handleUnhandledPromiseRejection(error) { | ||
hasRuntimeErrors = true; | ||
ErrorOverlay.handleRuntimeError(error); | ||
__react_refresh_error_overlay__.handleRuntimeError(error); | ||
}); |
@@ -8,5 +8,5 @@ if (process.env.NODE_ENV !== 'production' && typeof window !== 'undefined') { | ||
// Setup placeholder functions | ||
window.$RefreshReg$ = function() {}; | ||
window.$RefreshSig$ = function() { | ||
return function(type) { | ||
window.$RefreshReg$ = function () {}; | ||
window.$RefreshSig$ = function () { | ||
return function (type) { | ||
return type; | ||
@@ -32,3 +32,3 @@ }; | ||
*/ | ||
window.$RefreshReg$ = function(type, id) { | ||
window.$RefreshReg$ = function (type, id) { | ||
const typeId = moduleId + ' ' + id; | ||
@@ -35,0 +35,0 @@ Refresh.register(type, typeId); |
@@ -9,6 +9,11 @@ /** | ||
* @typedef {Object} ReactRefreshPluginOptions | ||
* @property {boolean} [disableRefreshCheck] Disables detection of react-refresh's Babel plugin. | ||
* @property {boolean} [disableRefreshCheck] Disables detection of react-refresh's Babel plugin. (Deprecated since v0.3.0) | ||
* @property {boolean} [forceEnable] Enables the plugin forcefully. | ||
* @property {boolean | ErrorOverlayOptions} [overlay] Modifies how the error overlay integration works in the plugin. | ||
* @property {string} [sockHost] The socket host to use for the error overlay integration. | ||
* @property {string} [sockPath] The socket path to use for the error overlay integration. | ||
* @property {number} [sockPort] The socket port to use for the error overlay integration. | ||
* @property {boolean} [useLegacyWDSSockets] Uses a custom SocketJS implementation for older versions of webpack-dev-server. | ||
*/ | ||
module.exports = {}; |
66476
1599
219
+ Addednative-url@^0.2.6
+ Addednative-url@0.2.6(transitive)
+ Addedquerystring@0.2.1(transitive)
+ Addedreact-refresh@0.8.3(transitive)
+ Addedsafe-buffer@5.2.1(transitive)
- Removedreact-dev-utils@^9.1.0
- Removed@babel/code-frame@7.5.5(transitive)
- Removed@babel/helper-validator-identifier@7.24.5(transitive)
- Removed@babel/highlight@7.24.5(transitive)
- Removed@mrmlnc/readdir-enhanced@2.2.1(transitive)
- Removed@nodelib/fs.stat@1.1.3(transitive)
- Removedaddress@1.1.2(transitive)
- Removedansi-escapes@3.2.0(transitive)
- Removedansi-regex@2.1.13.0.14.1.1(transitive)
- Removedansi-styles@2.2.13.2.1(transitive)
- Removedanymatch@2.0.0(transitive)
- Removedarr-diff@4.0.0(transitive)
- Removedarr-flatten@1.1.0(transitive)
- Removedarr-union@3.1.0(transitive)
- Removedarray-union@1.0.2(transitive)
- Removedarray-uniq@1.0.3(transitive)
- Removedarray-unique@0.3.2(transitive)
- Removedarrify@1.0.1(transitive)
- Removedassign-symbols@1.0.0(transitive)
- Removedasync-each@1.0.6(transitive)
- Removedatob@2.1.2(transitive)
- Removedbabel-code-frame@6.26.0(transitive)
- Removedbalanced-match@1.0.2(transitive)
- Removedbase@0.11.2(transitive)
- Removedbig.js@5.2.2(transitive)
- Removedbinary-extensions@1.13.1(transitive)
- Removedbindings@1.5.0(transitive)
- Removedbrace-expansion@1.1.11(transitive)
- Removedbraces@2.3.2(transitive)
- Removedbrowserslist@4.7.0(transitive)
- Removedcache-base@1.0.1(transitive)
- Removedcall-me-maybe@1.0.2(transitive)
- Removedcaniuse-lite@1.0.30001618(transitive)
- Removedchalk@1.1.32.4.2(transitive)
- Removedchardet@0.7.0(transitive)
- Removedchokidar@2.1.8(transitive)
- Removedclass-utils@0.3.6(transitive)
- Removedcli-cursor@2.1.0(transitive)
- Removedcli-width@2.2.1(transitive)
- Removedcollection-visit@1.0.0(transitive)
- Removedcolor-convert@1.9.3(transitive)
- Removedcolor-name@1.1.3(transitive)
- Removedcomponent-emitter@1.3.1(transitive)
- Removedconcat-map@0.0.1(transitive)
- Removedcopy-descriptor@0.1.1(transitive)
- Removedcore-util-is@1.0.3(transitive)
- Removedcross-spawn@6.0.5(transitive)
- Removeddebug@2.6.9(transitive)
- Removeddecode-uri-component@0.2.2(transitive)
- Removeddefine-property@0.2.51.0.02.0.2(transitive)
- Removeddetect-port-alt@1.1.6(transitive)
- Removeddir-glob@2.0.0(transitive)
- Removedduplexer@0.1.2(transitive)
- Removedemojis-list@2.1.0(transitive)
- Removedescape-string-regexp@1.0.5(transitive)
- Removedesutils@2.0.3(transitive)
- Removedeventsource@1.1.2(transitive)
- Removedexpand-brackets@2.1.4(transitive)
- Removedextend-shallow@2.0.13.0.2(transitive)
- Removedexternal-editor@3.1.0(transitive)
- Removedextglob@2.0.4(transitive)
- Removedfast-glob@2.2.7(transitive)
- Removedfigures@2.0.0(transitive)
- Removedfile-uri-to-path@1.0.0(transitive)
- Removedfilesize@3.6.1(transitive)
- Removedfill-range@4.0.0(transitive)
- Removedfind-up@2.1.03.0.0(transitive)
- Removedfor-in@1.0.2(transitive)
- Removedfork-ts-checker-webpack-plugin@1.5.0(transitive)
- Removedfragment-cache@0.2.1(transitive)
- Removedfs.realpath@1.0.0(transitive)
- Removedfsevents@1.2.13(transitive)
- Removedfunction-bind@1.1.2(transitive)
- Removedget-value@2.0.6(transitive)
- Removedglob@7.2.3(transitive)
- Removedglob-parent@3.1.0(transitive)
- Removedglob-to-regexp@0.3.0(transitive)
- Removedglobal-modules@2.0.0(transitive)
- Removedglobal-prefix@3.0.0(transitive)
- Removedglobby@8.0.2(transitive)
- Removedgraceful-fs@4.2.11(transitive)
- Removedgzip-size@5.1.1(transitive)
- Removedhas-ansi@2.0.0(transitive)
- Removedhas-flag@3.0.0(transitive)
- Removedhas-value@0.3.11.0.0(transitive)
- Removedhas-values@0.1.41.0.0(transitive)
- Removedhasown@2.0.2(transitive)
- Removediconv-lite@0.4.24(transitive)
- Removedignore@3.3.10(transitive)
- Removedimmer@1.10.0(transitive)
- Removedinflight@1.0.6(transitive)
- Removedini@1.3.8(transitive)
- Removedinquirer@6.5.0(transitive)
- Removedis-accessor-descriptor@1.0.1(transitive)
- Removedis-binary-path@1.0.1(transitive)
- Removedis-buffer@1.1.6(transitive)
- Removedis-data-descriptor@1.0.1(transitive)
- Removedis-descriptor@0.1.71.0.3(transitive)
- Removedis-extendable@0.1.11.0.1(transitive)
- Removedis-extglob@2.1.1(transitive)
- Removedis-fullwidth-code-point@2.0.0(transitive)
- Removedis-glob@3.1.04.0.3(transitive)
- Removedis-number@3.0.0(transitive)
- Removedis-plain-object@2.0.4(transitive)
- Removedis-root@2.1.0(transitive)
- Removedis-windows@1.0.2(transitive)
- Removedis-wsl@1.1.0(transitive)
- Removedisarray@1.0.0(transitive)
- Removedisexe@2.0.0(transitive)
- Removedisobject@2.1.03.0.1(transitive)
- Removedjs-tokens@3.0.24.0.0(transitive)
- Removedjson3@3.3.3(transitive)
- Removedjson5@1.0.2(transitive)
- Removedkind-of@3.2.24.0.06.0.3(transitive)
- Removedloader-utils@1.2.3(transitive)
- Removedlocate-path@2.0.03.0.0(transitive)
- Removedlodash@4.17.21(transitive)
- Removedmap-cache@0.2.2(transitive)
- Removedmap-visit@1.0.0(transitive)
- Removedmerge2@1.4.1(transitive)
- Removedmicroevent.ts@0.1.1(transitive)
- Removedmicromatch@3.1.10(transitive)
- Removedmimic-fn@1.2.0(transitive)
- Removedminimatch@3.0.43.1.2(transitive)
- Removedminimist@1.2.8(transitive)
- Removedmixin-deep@1.3.2(transitive)
- Removedms@2.0.0(transitive)
- Removedmute-stream@0.0.7(transitive)
- Removednan@2.19.0(transitive)
- Removednanomatch@1.2.13(transitive)
- Removednice-try@1.0.5(transitive)
- Removednode-releases@1.1.77(transitive)
- Removednormalize-path@2.1.13.0.0(transitive)
- Removedobject-copy@0.1.0(transitive)
- Removedobject-visit@1.0.1(transitive)
- Removedobject.pick@1.3.0(transitive)
- Removedonce@1.4.0(transitive)
- Removedonetime@2.0.1(transitive)
- Removedopen@6.4.0(transitive)
- Removedos-tmpdir@1.0.2(transitive)
- Removedp-limit@1.3.02.3.0(transitive)
- Removedp-locate@2.0.03.0.0(transitive)
- Removedp-try@1.0.02.2.0(transitive)
- Removedpascalcase@0.1.1(transitive)
- Removedpath-dirname@1.0.2(transitive)
- Removedpath-exists@3.0.0(transitive)
- Removedpath-is-absolute@1.0.1(transitive)
- Removedpath-key@2.0.1(transitive)
- Removedpath-type@3.0.0(transitive)
- Removedpicocolors@1.0.1(transitive)
- Removedpify@3.0.04.0.1(transitive)
- Removedpkg-up@2.0.0(transitive)
- Removedposix-character-classes@0.1.1(transitive)
- Removedprocess-nextick-args@2.0.1(transitive)
- Removedreact-dev-utils@9.1.0(transitive)
- Removedreact-error-overlay@6.0.11(transitive)
- Removedreact-refresh@0.14.2(transitive)
- Removedreadable-stream@2.3.8(transitive)
- Removedreaddirp@2.2.1(transitive)
- Removedrecursive-readdir@2.2.2(transitive)
- Removedregex-not@1.0.2(transitive)
- Removedremove-trailing-separator@1.1.0(transitive)
- Removedrepeat-element@1.1.4(transitive)
- Removedrepeat-string@1.6.1(transitive)
- Removedresolve-url@0.2.1(transitive)
- Removedrestore-cursor@2.0.0(transitive)
- Removedret@0.1.15(transitive)
- Removedrun-async@2.4.1(transitive)
- Removedrxjs@6.6.7(transitive)
- Removedsafe-buffer@5.1.2(transitive)
- Removedsafe-regex@1.1.0(transitive)
- Removedsafer-buffer@2.1.2(transitive)
- Removedsemver@5.7.2(transitive)
- Removedset-value@2.0.1(transitive)
- Removedshebang-command@1.2.0(transitive)
- Removedshebang-regex@1.0.0(transitive)
- Removedshell-quote@1.7.2(transitive)
- Removedsignal-exit@3.0.7(transitive)
- Removedslash@1.0.0(transitive)
- Removedsnapdragon@0.8.2(transitive)
- Removedsnapdragon-node@2.1.1(transitive)
- Removedsnapdragon-util@3.0.1(transitive)
- Removedsockjs-client@1.4.0(transitive)
- Removedsource-map@0.5.7(transitive)
- Removedsource-map-resolve@0.5.3(transitive)
- Removedsource-map-url@0.4.1(transitive)
- Removedsplit-string@3.1.0(transitive)
- Removedstatic-extend@0.1.2(transitive)
- Removedstring-width@2.1.1(transitive)
- Removedstring_decoder@1.1.1(transitive)
- Removedstrip-ansi@3.0.14.0.05.2.0(transitive)
- Removedsupports-color@2.0.05.5.0(transitive)
- Removedtapable@1.1.3(transitive)
- Removedtext-table@0.2.0(transitive)
- Removedthrough@2.3.8(transitive)
- Removedtmp@0.0.33(transitive)
- Removedto-object-path@0.3.0(transitive)
- Removedto-regex@3.0.2(transitive)
- Removedto-regex-range@2.1.1(transitive)
- Removedtslib@1.14.1(transitive)
- Removedunion-value@1.0.1(transitive)
- Removedunset-value@1.0.0(transitive)
- Removedupath@1.2.0(transitive)
- Removedurix@0.1.0(transitive)
- Removeduse@3.1.1(transitive)
- Removedutil-deprecate@1.0.2(transitive)
- Removedwhich@1.3.1(transitive)
- Removedworker-rpc@0.1.1(transitive)
- Removedwrappy@1.0.2(transitive)
Updatederror-stack-parser@^2.0.6