mirror of
https://github.com/reduxjs/redux-devtools.git
synced 2025-02-07 15:10:45 +03:00
chore(*): upgrade react-router (#581)
* stash * stash * stash * stash * fix * fix * fix
This commit is contained in:
parent
795af8092c
commit
925ed9e3f7
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"import": true
|
||||
}
|
|
@ -12,7 +12,7 @@ import InputGroup from 'react-bootstrap/lib/InputGroup';
|
|||
import * as base16 from 'base16';
|
||||
import * as inspectorThemes from '../../../src/themes';
|
||||
import getOptions from './getOptions';
|
||||
import { push as pushRoute } from 'react-router-redux';
|
||||
import { push as pushRoute } from 'connected-react-router';
|
||||
|
||||
const styles = {
|
||||
wrapper: {
|
||||
|
@ -85,7 +85,7 @@ function buildUrl(options) {
|
|||
|
||||
class DemoApp extends React.Component {
|
||||
render() {
|
||||
const options = getOptions();
|
||||
const options = getOptions(this.props.router.location);
|
||||
|
||||
return (
|
||||
<div style={styles.wrapper}>
|
||||
|
@ -193,7 +193,7 @@ class DemoApp extends React.Component {
|
|||
<div style={styles.links}>
|
||||
<a onClick={this.toggleExtension} style={styles.link}>
|
||||
{(options.useExtension ? 'Disable' : 'Enable') +
|
||||
' Chrome Extension'}
|
||||
' Chrome Extension (will reload this page)'}
|
||||
</a>
|
||||
<a onClick={this.toggleImmutableSupport} style={styles.link}>
|
||||
{(options.supportImmutable ? 'Disable' : 'Enable') +
|
||||
|
@ -205,15 +205,16 @@ class DemoApp extends React.Component {
|
|||
}
|
||||
|
||||
toggleExtension = () => {
|
||||
const options = getOptions();
|
||||
const options = getOptions(this.props.router.location);
|
||||
|
||||
this.props.pushRoute(
|
||||
buildUrl({ ...options, useExtension: !options.useExtension })
|
||||
);
|
||||
window.location.href = buildUrl({
|
||||
...options,
|
||||
useExtension: !options.useExtension,
|
||||
});
|
||||
};
|
||||
|
||||
toggleImmutableSupport = () => {
|
||||
const options = getOptions();
|
||||
const options = getOptions(this.props.router.location);
|
||||
|
||||
this.props.pushRoute(
|
||||
buildUrl({ ...options, supportImmutable: !options.supportImmutable })
|
||||
|
@ -221,7 +222,7 @@ class DemoApp extends React.Component {
|
|||
};
|
||||
|
||||
toggleTheme = () => {
|
||||
const options = getOptions();
|
||||
const options = getOptions(this.props.router.location);
|
||||
|
||||
this.props.pushRoute(buildUrl({ ...options, dark: !options.dark }));
|
||||
};
|
||||
|
|
56
packages/redux-devtools-inspector/demo/src/js/DevTools.jsx
Normal file
56
packages/redux-devtools-inspector/demo/src/js/DevTools.jsx
Normal file
|
@ -0,0 +1,56 @@
|
|||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { createDevTools } from 'redux-devtools';
|
||||
import DockMonitor from 'redux-devtools-dock-monitor';
|
||||
import DevtoolsInspector from '../../../src/DevtoolsInspector';
|
||||
import getOptions from './getOptions';
|
||||
|
||||
const CustomComponent = () => (
|
||||
<div
|
||||
style={{
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
minHeight: '20rem',
|
||||
}}
|
||||
>
|
||||
<div>Custom Tab Content</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
export const getDevTools = (location) =>
|
||||
createDevTools(
|
||||
<DockMonitor
|
||||
defaultIsVisible
|
||||
toggleVisibilityKey="ctrl-h"
|
||||
changePositionKey="ctrl-q"
|
||||
changeMonitorKey="ctrl-m"
|
||||
>
|
||||
<DevtoolsInspector
|
||||
theme={getOptions(location).theme}
|
||||
shouldPersistState
|
||||
invertTheme={!getOptions(location).dark}
|
||||
supportImmutable={getOptions(location).supportImmutable}
|
||||
tabs={(defaultTabs) => [
|
||||
{
|
||||
name: 'Custom Tab',
|
||||
component: CustomComponent,
|
||||
},
|
||||
...defaultTabs,
|
||||
]}
|
||||
/>
|
||||
</DockMonitor>
|
||||
);
|
||||
|
||||
const UnconnectedDevTools = ({ location }) => {
|
||||
const DevTools = getDevTools(location);
|
||||
return <DevTools />;
|
||||
};
|
||||
|
||||
const mapStateToProps = (state) => ({
|
||||
location: state.router.location,
|
||||
});
|
||||
|
||||
export const ConnectedDevTools = connect(mapStateToProps)(UnconnectedDevTools);
|
|
@ -1,11 +1,11 @@
|
|||
export default function getOptions() {
|
||||
export default function getOptions(location) {
|
||||
return {
|
||||
useExtension: window.location.search.indexOf('ext') !== -1,
|
||||
supportImmutable: window.location.search.indexOf('immutable') !== -1,
|
||||
useExtension: location.search.indexOf('ext') !== -1,
|
||||
supportImmutable: location.search.indexOf('immutable') !== -1,
|
||||
theme: do {
|
||||
const match = window.location.search.match(/theme=([^&]+)/);
|
||||
const match = location.search.match(/theme=([^&]+)/);
|
||||
match ? match[1] : 'inspector';
|
||||
},
|
||||
dark: window.location.search.indexOf('dark') !== -1,
|
||||
dark: location.search.indexOf('dark') !== -1,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -3,76 +3,35 @@ import React from 'react';
|
|||
import { render } from 'react-dom';
|
||||
import DemoApp from './DemoApp';
|
||||
import { Provider } from 'react-redux';
|
||||
import reducers from './reducers';
|
||||
import { createStore, applyMiddleware, compose, combineReducers } from 'redux';
|
||||
import createRootReducer from './reducers';
|
||||
import { createStore, applyMiddleware, compose } from 'redux';
|
||||
import logger from 'redux-logger';
|
||||
import { Router, Route, browserHistory } from 'react-router';
|
||||
import {
|
||||
syncHistoryWithStore,
|
||||
routerReducer,
|
||||
routerMiddleware,
|
||||
} from 'react-router-redux';
|
||||
import { createDevTools, persistState } from 'redux-devtools';
|
||||
import DevtoolsInspector from '../../../src/DevtoolsInspector';
|
||||
import DockMonitor from 'redux-devtools-dock-monitor';
|
||||
import { Route } from 'react-router';
|
||||
import { createBrowserHistory } from 'history';
|
||||
import { ConnectedRouter, routerMiddleware } from 'connected-react-router';
|
||||
import { persistState } from 'redux-devtools';
|
||||
import getOptions from './getOptions';
|
||||
import { ConnectedDevTools, getDevTools } from './DevTools';
|
||||
|
||||
function getDebugSessionKey() {
|
||||
const matches = window.location.href.match(/[?&]debug_session=([^&#]+)\b/);
|
||||
return matches && matches.length > 0 ? matches[1] : null;
|
||||
}
|
||||
|
||||
const CustomComponent = () => (
|
||||
<div
|
||||
style={{
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
minHeight: '20rem',
|
||||
}}
|
||||
>
|
||||
<div>Custom Tab Content</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
const getDevTools = (options) =>
|
||||
createDevTools(
|
||||
<DockMonitor
|
||||
defaultIsVisible
|
||||
toggleVisibilityKey="ctrl-h"
|
||||
changePositionKey="ctrl-q"
|
||||
changeMonitorKey="ctrl-m"
|
||||
>
|
||||
<DevtoolsInspector
|
||||
theme={options.theme}
|
||||
shouldPersistState
|
||||
invertTheme={!options.dark}
|
||||
supportImmutable={options.supportImmutable}
|
||||
tabs={(defaultTabs) => [
|
||||
{
|
||||
name: 'Custom Tab',
|
||||
component: CustomComponent,
|
||||
},
|
||||
...defaultTabs,
|
||||
]}
|
||||
/>
|
||||
</DockMonitor>
|
||||
);
|
||||
|
||||
const ROOT =
|
||||
process.env.NODE_ENV === 'production' ? '/redux-devtools-inspector/' : '/';
|
||||
|
||||
let DevTools = getDevTools(getOptions());
|
||||
const DevTools = getDevTools(window.location);
|
||||
|
||||
const reduxRouterMiddleware = routerMiddleware(browserHistory);
|
||||
const history = createBrowserHistory();
|
||||
|
||||
const useDevtoolsExtension =
|
||||
!!window.__REDUX_DEVTOOLS_EXTENSION__ &&
|
||||
getOptions(window.location).useExtension;
|
||||
|
||||
const enhancer = compose(
|
||||
applyMiddleware(logger, reduxRouterMiddleware),
|
||||
applyMiddleware(logger, routerMiddleware(history)),
|
||||
(...args) => {
|
||||
const useDevtoolsExtension =
|
||||
!!window.__REDUX_DEVTOOLS_EXTENSION__ && getOptions().useExtension;
|
||||
const instrument = useDevtoolsExtension
|
||||
? window.__REDUX_DEVTOOLS_EXTENSION__()
|
||||
: DevTools.instrument();
|
||||
|
@ -81,41 +40,16 @@ const enhancer = compose(
|
|||
persistState(getDebugSessionKey())
|
||||
);
|
||||
|
||||
const store = createStore(
|
||||
combineReducers({
|
||||
...reducers,
|
||||
routing: routerReducer,
|
||||
}),
|
||||
{},
|
||||
enhancer
|
||||
const store = createStore(createRootReducer(history), {}, enhancer);
|
||||
|
||||
render(
|
||||
<Provider store={store}>
|
||||
<ConnectedRouter history={history}>
|
||||
<Route path={ROOT}>
|
||||
<DemoApp />
|
||||
</Route>
|
||||
{!useDevtoolsExtension && <ConnectedDevTools />}
|
||||
</ConnectedRouter>
|
||||
</Provider>,
|
||||
document.getElementById('root')
|
||||
);
|
||||
|
||||
const history = syncHistoryWithStore(browserHistory, store);
|
||||
|
||||
const handleRouterUpdate = () => {
|
||||
renderApp(getOptions());
|
||||
};
|
||||
|
||||
const router = (
|
||||
<Router history={history} onUpdate={handleRouterUpdate}>
|
||||
<Route path={ROOT} component={DemoApp} />
|
||||
</Router>
|
||||
);
|
||||
|
||||
const renderApp = (options) => {
|
||||
DevTools = getDevTools(options);
|
||||
const useDevtoolsExtension =
|
||||
!!window.__REDUX_DEVTOOLS_EXTENSION__ && options.useExtension;
|
||||
|
||||
return render(
|
||||
<Provider store={store}>
|
||||
<div>
|
||||
{router}
|
||||
{!useDevtoolsExtension && <DevTools />}
|
||||
</div>
|
||||
</Provider>,
|
||||
document.getElementById('root')
|
||||
);
|
||||
};
|
||||
|
||||
renderApp(getOptions());
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import Immutable from 'immutable';
|
||||
import shuffle from 'lodash.shuffle';
|
||||
import { combineReducers } from 'redux';
|
||||
import { connectRouter } from 'connected-react-router';
|
||||
|
||||
const NESTED = {
|
||||
long: {
|
||||
|
@ -77,66 +79,70 @@ function createIterator() {
|
|||
|
||||
const DEFAULT_SHUFFLE_ARRAY = [0, 1, null, { id: 1 }, { id: 2 }, 'string'];
|
||||
|
||||
export default {
|
||||
timeoutUpdateEnabled: (state = false, action) =>
|
||||
action.type === 'TOGGLE_TIMEOUT_UPDATE'
|
||||
? action.timeoutUpdateEnabled
|
||||
: state,
|
||||
store: (state = 0, action) =>
|
||||
action.type === 'INCREMENT' ? state + 1 : state,
|
||||
undefined: (state = { val: undefined }) => state,
|
||||
null: (state = null) => state,
|
||||
func: (state = () => {}) => state,
|
||||
array: (state = [], action) =>
|
||||
action.type === 'PUSH'
|
||||
? [...state, Math.random()]
|
||||
: action.type === 'POP'
|
||||
? state.slice(0, state.length - 1)
|
||||
: action.type === 'REPLACE'
|
||||
? [Math.random(), ...state.slice(1)]
|
||||
: state,
|
||||
hugeArrays: (state = [], action) =>
|
||||
action.type === 'PUSH_HUGE_ARRAY' ? [...state, ...HUGE_ARRAY] : state,
|
||||
hugeObjects: (state = [], action) =>
|
||||
action.type === 'ADD_HUGE_OBJECT' ? [...state, HUGE_OBJECT] : state,
|
||||
iterators: (state = [], action) =>
|
||||
action.type === 'ADD_ITERATOR' ? [...state, createIterator()] : state,
|
||||
nested: (state = NESTED, action) =>
|
||||
action.type === 'CHANGE_NESTED'
|
||||
? {
|
||||
...state,
|
||||
long: {
|
||||
nested: [
|
||||
{
|
||||
path: {
|
||||
to: {
|
||||
a: state.long.nested[0].path.to.a + '!',
|
||||
const createRootReducer = (history) =>
|
||||
combineReducers({
|
||||
router: connectRouter(history),
|
||||
timeoutUpdateEnabled: (state = false, action) =>
|
||||
action.type === 'TOGGLE_TIMEOUT_UPDATE'
|
||||
? action.timeoutUpdateEnabled
|
||||
: state,
|
||||
store: (state = 0, action) =>
|
||||
action.type === 'INCREMENT' ? state + 1 : state,
|
||||
undefined: (state = { val: undefined }) => state,
|
||||
null: (state = null) => state,
|
||||
func: (state = () => {}) => state,
|
||||
array: (state = [], action) =>
|
||||
action.type === 'PUSH'
|
||||
? [...state, Math.random()]
|
||||
: action.type === 'POP'
|
||||
? state.slice(0, state.length - 1)
|
||||
: action.type === 'REPLACE'
|
||||
? [Math.random(), ...state.slice(1)]
|
||||
: state,
|
||||
hugeArrays: (state = [], action) =>
|
||||
action.type === 'PUSH_HUGE_ARRAY' ? [...state, ...HUGE_ARRAY] : state,
|
||||
hugeObjects: (state = [], action) =>
|
||||
action.type === 'ADD_HUGE_OBJECT' ? [...state, HUGE_OBJECT] : state,
|
||||
iterators: (state = [], action) =>
|
||||
action.type === 'ADD_ITERATOR' ? [...state, createIterator()] : state,
|
||||
nested: (state = NESTED, action) =>
|
||||
action.type === 'CHANGE_NESTED'
|
||||
? {
|
||||
...state,
|
||||
long: {
|
||||
nested: [
|
||||
{
|
||||
path: {
|
||||
to: {
|
||||
a: state.long.nested[0].path.to.a + '!',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
: state,
|
||||
recursive: (state = [], action) =>
|
||||
action.type === 'ADD_RECURSIVE' ? [...state, { ...RECURSIVE }] : state,
|
||||
immutables: (state = [], action) =>
|
||||
action.type === 'ADD_IMMUTABLE_MAP' ? [...state, IMMUTABLE_MAP] : state,
|
||||
maps: (state = [], action) =>
|
||||
action.type === 'ADD_NATIVE_MAP' ? [...state, NATIVE_MAP] : state,
|
||||
immutableNested: (state = IMMUTABLE_NESTED, action) =>
|
||||
action.type === 'CHANGE_IMMUTABLE_NESTED'
|
||||
? state.updateIn(
|
||||
['long', 'nested', 0, 'path', 'to', 'a'],
|
||||
(str) => str + '!'
|
||||
)
|
||||
: state,
|
||||
addFunction: (state = null, action) =>
|
||||
action.type === 'ADD_FUNCTION' ? { f: FUNC } : state,
|
||||
addSymbol: (state = null, action) =>
|
||||
action.type === 'ADD_SYMBOL'
|
||||
? { s: window.Symbol('symbol'), error: new Error('TEST') }
|
||||
: state,
|
||||
shuffleArray: (state = DEFAULT_SHUFFLE_ARRAY, action) =>
|
||||
action.type === 'SHUFFLE_ARRAY' ? shuffle(state) : state,
|
||||
};
|
||||
],
|
||||
},
|
||||
}
|
||||
: state,
|
||||
recursive: (state = [], action) =>
|
||||
action.type === 'ADD_RECURSIVE' ? [...state, { ...RECURSIVE }] : state,
|
||||
immutables: (state = [], action) =>
|
||||
action.type === 'ADD_IMMUTABLE_MAP' ? [...state, IMMUTABLE_MAP] : state,
|
||||
maps: (state = [], action) =>
|
||||
action.type === 'ADD_NATIVE_MAP' ? [...state, NATIVE_MAP] : state,
|
||||
immutableNested: (state = IMMUTABLE_NESTED, action) =>
|
||||
action.type === 'CHANGE_IMMUTABLE_NESTED'
|
||||
? state.updateIn(
|
||||
['long', 'nested', 0, 'path', 'to', 'a'],
|
||||
(str) => str + '!'
|
||||
)
|
||||
: state,
|
||||
addFunction: (state = null, action) =>
|
||||
action.type === 'ADD_FUNCTION' ? { f: FUNC } : state,
|
||||
addSymbol: (state = null, action) =>
|
||||
action.type === 'ADD_SYMBOL'
|
||||
? { s: window.Symbol('symbol'), error: new Error('TEST') }
|
||||
: state,
|
||||
shuffleArray: (state = DEFAULT_SHUFFLE_ARRAY, action) =>
|
||||
action.type === 'SHUFFLE_ARRAY' ? shuffle(state) : state,
|
||||
});
|
||||
|
||||
export default createRootReducer;
|
||||
|
|
|
@ -33,21 +33,24 @@
|
|||
"babel-loader": "^8.1.0",
|
||||
"base16": "^1.0.0",
|
||||
"clean-webpack-plugin": "^3.0.0",
|
||||
"connected-react-router": "^6.8.0",
|
||||
"cross-env": "^7.0.2",
|
||||
"history": "^4.10.1",
|
||||
"html-webpack-plugin": "^4.3.0",
|
||||
"immutable": "^4.0.0-rc.12",
|
||||
"lodash.isequalwith": "^4.4.0",
|
||||
"lodash.shuffle": "^4.2.0",
|
||||
"react": "^16.13.1",
|
||||
"react-bootstrap": "^0.30.10",
|
||||
"react-dom": "^16.13.1",
|
||||
"react-redux": "^7.2.1",
|
||||
"react-router": "^3.2.6",
|
||||
"react-router-redux": "^4.0.8",
|
||||
"react-router": "^5.2.0",
|
||||
"react-transform-hmr": "^1.0.4",
|
||||
"redux": "^4.0.5",
|
||||
"redux-devtools": "^3.6.0",
|
||||
"redux-devtools-dock-monitor": "^1.1.3",
|
||||
"redux-logger": "^3.0.6",
|
||||
"seamless-immutable": "^7.1.4",
|
||||
"webpack": "^4.44.1",
|
||||
"webpack-cli": "^3.3.12",
|
||||
"webpack-dev-server": "^3.11.0"
|
||||
|
|
|
@ -3,7 +3,7 @@ import { connect } from 'react-redux';
|
|||
import pkg from '../../../package.json';
|
||||
import { Button, Toolbar, Spacer } from 'devui';
|
||||
import getOptions from './getOptions';
|
||||
import { push as pushRoute } from 'react-router-redux';
|
||||
import { push as pushRoute } from 'connected-react-router';
|
||||
|
||||
const styles = {
|
||||
wrapper: {
|
||||
|
@ -26,7 +26,7 @@ const ROOT = '/'; // process.env.NODE_ENV === 'production' ? '/' : '/';
|
|||
|
||||
class DemoApp extends React.Component {
|
||||
render() {
|
||||
const options = getOptions();
|
||||
const options = getOptions(this.props.router.location);
|
||||
|
||||
return (
|
||||
<div style={styles.wrapper}>
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { createDevTools } from 'redux-devtools';
|
||||
import DevtoolsInspector from 'redux-devtools-inspector';
|
||||
import DockMonitor from 'redux-devtools-dock-monitor';
|
||||
import getOptions from './getOptions';
|
||||
import TestGenerator from '../../../src';
|
||||
|
||||
export const getDevTools = (location) =>
|
||||
createDevTools(
|
||||
<DockMonitor
|
||||
defaultIsVisible
|
||||
toggleVisibilityKey="ctrl-h"
|
||||
changePositionKey="ctrl-q"
|
||||
changeMonitorKey="ctrl-m"
|
||||
>
|
||||
<DevtoolsInspector
|
||||
theme={getOptions(location).theme}
|
||||
shouldPersistState
|
||||
invertTheme={!getOptions(location).dark}
|
||||
supportImmutable={getOptions(location).supportImmutable}
|
||||
tabs={(defaultTabs) => [
|
||||
{
|
||||
name: 'Test',
|
||||
component: TestGenerator,
|
||||
},
|
||||
...defaultTabs,
|
||||
]}
|
||||
/>
|
||||
</DockMonitor>
|
||||
);
|
||||
|
||||
const UnconnectedDevTools = ({ location }) => {
|
||||
const DevTools = getDevTools(location);
|
||||
return <DevTools />;
|
||||
};
|
||||
|
||||
const mapStateToProps = (state) => ({
|
||||
location: state.router.location,
|
||||
});
|
||||
|
||||
export const ConnectedDevTools = connect(mapStateToProps)(UnconnectedDevTools);
|
|
@ -1,11 +1,11 @@
|
|||
export default function getOptions() {
|
||||
export default function getOptions(location) {
|
||||
return {
|
||||
useExtension: window.location.search.indexOf('ext') !== -1,
|
||||
supportImmutable: window.location.search.indexOf('immutable') !== -1,
|
||||
useExtension: location.search.indexOf('ext') !== -1,
|
||||
supportImmutable: location.search.indexOf('immutable') !== -1,
|
||||
theme: do {
|
||||
const match = window.location.search.match(/theme=([^&]+)/);
|
||||
const match = location.search.match(/theme=([^&]+)/);
|
||||
match ? match[1] : 'inspector';
|
||||
},
|
||||
dark: window.location.search.indexOf('dark') !== -1,
|
||||
dark: location.search.indexOf('dark') !== -1,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -5,62 +5,37 @@ import { render } from 'react-dom';
|
|||
import { Container } from 'devui';
|
||||
import DemoApp from './DemoApp';
|
||||
import { Provider } from 'react-redux';
|
||||
import reducers from './reducers';
|
||||
import { createStore, applyMiddleware, compose, combineReducers } from 'redux';
|
||||
import createRootReducer from './reducers';
|
||||
import { createStore, applyMiddleware, compose } from 'redux';
|
||||
import logger from 'redux-logger';
|
||||
import { Router, Route, browserHistory } from 'react-router';
|
||||
import {
|
||||
syncHistoryWithStore,
|
||||
routerReducer,
|
||||
routerMiddleware,
|
||||
} from 'react-router-redux';
|
||||
import { createDevTools, persistState } from 'redux-devtools';
|
||||
import DevtoolsInspector from 'redux-devtools-inspector';
|
||||
import DockMonitor from 'redux-devtools-dock-monitor';
|
||||
import { Route } from 'react-router';
|
||||
import { createBrowserHistory } from 'history';
|
||||
import { ConnectedRouter, routerMiddleware } from 'connected-react-router';
|
||||
import { persistState } from 'redux-devtools';
|
||||
import getOptions from './getOptions';
|
||||
import TestGenerator from '../../../src';
|
||||
import { ConnectedDevTools, getDevTools } from './DevTools';
|
||||
|
||||
function getDebugSessionKey() {
|
||||
const matches = window.location.href.match(/[?&]debug_session=([^&#]+)\b/);
|
||||
return matches && matches.length > 0 ? matches[1] : null;
|
||||
}
|
||||
|
||||
const getDevTools = (options) =>
|
||||
createDevTools(
|
||||
<DockMonitor
|
||||
defaultIsVisible
|
||||
toggleVisibilityKey="ctrl-h"
|
||||
changePositionKey="ctrl-q"
|
||||
changeMonitorKey="ctrl-m"
|
||||
>
|
||||
<DevtoolsInspector
|
||||
theme={options.theme}
|
||||
shouldPersistState
|
||||
invertTheme={!options.dark}
|
||||
supportImmutable={options.supportImmutable}
|
||||
tabs={(defaultTabs) => [
|
||||
{
|
||||
name: 'Test',
|
||||
component: TestGenerator,
|
||||
},
|
||||
...defaultTabs,
|
||||
]}
|
||||
/>
|
||||
</DockMonitor>
|
||||
);
|
||||
|
||||
const ROOT =
|
||||
process.env.NODE_ENV === 'production' ? '/redux-devtools-inspector/' : '/';
|
||||
process.env.NODE_ENV === 'production'
|
||||
? '/redux-devtools-test-generator/'
|
||||
: '/';
|
||||
|
||||
let DevTools = getDevTools(getOptions());
|
||||
const DevTools = getDevTools(window.location);
|
||||
|
||||
const reduxRouterMiddleware = routerMiddleware(browserHistory);
|
||||
const history = createBrowserHistory();
|
||||
|
||||
const useDevtoolsExtension =
|
||||
!!window.__REDUX_DEVTOOLS_EXTENSION__ &&
|
||||
getOptions(window.location).useExtension;
|
||||
|
||||
const enhancer = compose(
|
||||
applyMiddleware(logger, reduxRouterMiddleware),
|
||||
applyMiddleware(logger, routerMiddleware(history)),
|
||||
(...args) => {
|
||||
const useDevtoolsExtension =
|
||||
!!window.__REDUX_DEVTOOLS_EXTENSION__ && getOptions().useExtension;
|
||||
const instrument = useDevtoolsExtension
|
||||
? window.__REDUX_DEVTOOLS_EXTENSION__()
|
||||
: DevTools.instrument();
|
||||
|
@ -69,43 +44,20 @@ const enhancer = compose(
|
|||
persistState(getDebugSessionKey())
|
||||
);
|
||||
|
||||
const store = createStore(
|
||||
combineReducers({
|
||||
...reducers,
|
||||
routing: routerReducer,
|
||||
}),
|
||||
{},
|
||||
enhancer
|
||||
);
|
||||
const store = createStore(createRootReducer(history), {}, enhancer);
|
||||
|
||||
const history = syncHistoryWithStore(browserHistory, store);
|
||||
|
||||
const handleRouterUpdate = () => {
|
||||
renderApp(getOptions());
|
||||
};
|
||||
|
||||
const router = (
|
||||
<Router history={history} onUpdate={handleRouterUpdate}>
|
||||
<Route path={ROOT} component={DemoApp} />
|
||||
</Router>
|
||||
);
|
||||
|
||||
const renderApp = (options) => {
|
||||
DevTools = getDevTools(options);
|
||||
const useDevtoolsExtension =
|
||||
!!window.__REDUX_DEVTOOLS_EXTENSION__ && options.useExtension;
|
||||
|
||||
return render(
|
||||
<Provider store={store}>
|
||||
render(
|
||||
<Provider store={store}>
|
||||
<ConnectedRouter history={history}>
|
||||
<Container
|
||||
themeData={{ theme: 'default', scheme: 'default', light: true }}
|
||||
>
|
||||
{router}
|
||||
{!useDevtoolsExtension && <DevTools />}
|
||||
<Route path={ROOT}>
|
||||
<DemoApp />
|
||||
</Route>
|
||||
{!useDevtoolsExtension && <ConnectedDevTools />}
|
||||
</Container>
|
||||
</Provider>,
|
||||
document.getElementById('root')
|
||||
);
|
||||
};
|
||||
|
||||
renderApp(getOptions());
|
||||
</ConnectedRouter>
|
||||
</Provider>,
|
||||
document.getElementById('root')
|
||||
);
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import Immutable from 'immutable';
|
||||
import shuffle from 'lodash.shuffle';
|
||||
import { combineReducers } from 'redux';
|
||||
import { connectRouter } from 'connected-react-router';
|
||||
|
||||
const NESTED = {
|
||||
long: {
|
||||
|
@ -58,62 +60,66 @@ function createIterator() {
|
|||
|
||||
const DEFAULT_SHUFFLE_ARRAY = [0, 1, null, { id: 1 }, { id: 2 }, 'string'];
|
||||
|
||||
export default {
|
||||
timeoutUpdateEnabled: (state = false, action) =>
|
||||
action.type === 'TOGGLE_TIMEOUT_UPDATE'
|
||||
? action.timeoutUpdateEnabled
|
||||
: state,
|
||||
store: (state = 0, action) =>
|
||||
action.type === 'INCREMENT' ? state + 1 : state,
|
||||
undefined: (state = { val: undefined }) => state,
|
||||
null: (state = null) => state,
|
||||
func: (state = () => {}) => state,
|
||||
array: (state = [], action) =>
|
||||
action.type === 'PUSH'
|
||||
? [...state, Math.random()]
|
||||
: action.type === 'POP'
|
||||
? state.slice(0, state.length - 1)
|
||||
: action.type === 'REPLACE'
|
||||
? [Math.random(), ...state.slice(1)]
|
||||
: state,
|
||||
hugeArrays: (state = [], action) =>
|
||||
action.type === 'PUSH_HUGE_ARRAY' ? [...state, ...HUGE_ARRAY] : state,
|
||||
hugeObjects: (state = [], action) =>
|
||||
action.type === 'ADD_HUGE_OBJECT' ? [...state, HUGE_OBJECT] : state,
|
||||
iterators: (state = [], action) =>
|
||||
action.type === 'ADD_ITERATOR' ? [...state, createIterator()] : state,
|
||||
nested: (state = NESTED, action) =>
|
||||
action.type === 'CHANGE_NESTED'
|
||||
? {
|
||||
...state,
|
||||
long: {
|
||||
nested: [
|
||||
{
|
||||
path: {
|
||||
to: {
|
||||
a: state.long.nested[0].path.to.a + '!',
|
||||
const createRootReducer = (history) =>
|
||||
combineReducers({
|
||||
router: connectRouter(history),
|
||||
timeoutUpdateEnabled: (state = false, action) =>
|
||||
action.type === 'TOGGLE_TIMEOUT_UPDATE'
|
||||
? action.timeoutUpdateEnabled
|
||||
: state,
|
||||
store: (state = 0, action) =>
|
||||
action.type === 'INCREMENT' ? state + 1 : state,
|
||||
undefined: (state = { val: undefined }) => state,
|
||||
null: (state = null) => state,
|
||||
func: (state = () => {}) => state,
|
||||
array: (state = [], action) =>
|
||||
action.type === 'PUSH'
|
||||
? [...state, Math.random()]
|
||||
: action.type === 'POP'
|
||||
? state.slice(0, state.length - 1)
|
||||
: action.type === 'REPLACE'
|
||||
? [Math.random(), ...state.slice(1)]
|
||||
: state,
|
||||
hugeArrays: (state = [], action) =>
|
||||
action.type === 'PUSH_HUGE_ARRAY' ? [...state, ...HUGE_ARRAY] : state,
|
||||
hugeObjects: (state = [], action) =>
|
||||
action.type === 'ADD_HUGE_OBJECT' ? [...state, HUGE_OBJECT] : state,
|
||||
iterators: (state = [], action) =>
|
||||
action.type === 'ADD_ITERATOR' ? [...state, createIterator()] : state,
|
||||
nested: (state = NESTED, action) =>
|
||||
action.type === 'CHANGE_NESTED'
|
||||
? {
|
||||
...state,
|
||||
long: {
|
||||
nested: [
|
||||
{
|
||||
path: {
|
||||
to: {
|
||||
a: state.long.nested[0].path.to.a + '!',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
: state,
|
||||
recursive: (state = [], action) =>
|
||||
action.type === 'ADD_RECURSIVE' ? [...state, { ...RECURSIVE }] : state,
|
||||
immutables: (state = [], action) =>
|
||||
action.type === 'ADD_IMMUTABLE_MAP' ? [...state, IMMUTABLE_MAP] : state,
|
||||
immutableNested: (state = IMMUTABLE_NESTED, action) =>
|
||||
action.type === 'CHANGE_IMMUTABLE_NESTED'
|
||||
? state.updateIn(
|
||||
['long', 'nested', 0, 'path', 'to', 'a'],
|
||||
(str) => str + '!'
|
||||
)
|
||||
: state,
|
||||
addFunction: (state = null, action) =>
|
||||
action.type === 'ADD_FUNCTION' ? { f: FUNC } : state,
|
||||
addSymbol: (state = null, action) =>
|
||||
action.type === 'ADD_SYMBOL' ? { s: window.Symbol('symbol') } : state,
|
||||
shuffleArray: (state = DEFAULT_SHUFFLE_ARRAY, action) =>
|
||||
action.type === 'SHUFFLE_ARRAY' ? shuffle(state) : state,
|
||||
};
|
||||
],
|
||||
},
|
||||
}
|
||||
: state,
|
||||
recursive: (state = [], action) =>
|
||||
action.type === 'ADD_RECURSIVE' ? [...state, { ...RECURSIVE }] : state,
|
||||
immutables: (state = [], action) =>
|
||||
action.type === 'ADD_IMMUTABLE_MAP' ? [...state, IMMUTABLE_MAP] : state,
|
||||
immutableNested: (state = IMMUTABLE_NESTED, action) =>
|
||||
action.type === 'CHANGE_IMMUTABLE_NESTED'
|
||||
? state.updateIn(
|
||||
['long', 'nested', 0, 'path', 'to', 'a'],
|
||||
(str) => str + '!'
|
||||
)
|
||||
: state,
|
||||
addFunction: (state = null, action) =>
|
||||
action.type === 'ADD_FUNCTION' ? { f: FUNC } : state,
|
||||
addSymbol: (state = null, action) =>
|
||||
action.type === 'ADD_SYMBOL' ? { s: window.Symbol('symbol') } : state,
|
||||
shuffleArray: (state = DEFAULT_SHUFFLE_ARRAY, action) =>
|
||||
action.type === 'SHUFFLE_ARRAY' ? shuffle(state) : state,
|
||||
});
|
||||
|
||||
export default createRootReducer;
|
||||
|
|
|
@ -44,26 +44,29 @@
|
|||
"@babel/preset-react": "^7.10.4",
|
||||
"babel-loader": "^8.1.0",
|
||||
"clean-webpack-plugin": "^3.0.0",
|
||||
"connected-react-router": "^6.8.0",
|
||||
"css-loader": "^4.2.1",
|
||||
"enzyme": "^3.11.0",
|
||||
"enzyme-adapter-react-16": "^1.15.3",
|
||||
"enzyme-to-json": "^3.5.0",
|
||||
"expect": "^26.2.0",
|
||||
"file-loader": "^6.0.0",
|
||||
"history": "^4.10.1",
|
||||
"html-webpack-plugin": "^4.3.0",
|
||||
"immutable": "^4.0.0-rc.12",
|
||||
"jest": "^26.2.2",
|
||||
"lodash.isequalwith": "^4.4.0",
|
||||
"lodash.shuffle": "^4.2.0",
|
||||
"react-dom": "^16.13.1",
|
||||
"react-redux": "^7.2.1",
|
||||
"react-router": "^3.2.6",
|
||||
"react-router-redux": "^4.0.8",
|
||||
"react-router": "^5.2.0",
|
||||
"redux": "^4.0.5",
|
||||
"redux-devtools": "^3.6.0",
|
||||
"redux-devtools-dock-monitor": "^1.1.3",
|
||||
"redux-devtools-inspector": "^0.13.0",
|
||||
"redux-logger": "^3.0.6",
|
||||
"rimraf": "^3.0.2",
|
||||
"seamless-immutable": "^7.1.4",
|
||||
"style-loader": "^1.2.1",
|
||||
"webpack": "^4.44.1",
|
||||
"webpack-dev-server": "^3.11.0"
|
||||
|
|
118
yarn.lock
118
yarn.lock
|
@ -5443,6 +5443,13 @@ connect-history-api-fallback@^1.6.0:
|
|||
resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
|
||||
integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
|
||||
|
||||
connected-react-router@^6.8.0:
|
||||
version "6.8.0"
|
||||
resolved "https://registry.yarnpkg.com/connected-react-router/-/connected-react-router-6.8.0.tgz#ddc687b31d498322445d235d660798489fa56cae"
|
||||
integrity sha512-E64/6krdJM3Ag3MMmh2nKPtMbH15s3JQDuaYJvOVXzu6MbHbDyIvuwLOyhQIuP4Om9zqEfZYiVyflROibSsONg==
|
||||
dependencies:
|
||||
prop-types "^15.7.2"
|
||||
|
||||
console-browserify@^1.1.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
|
||||
|
@ -5708,7 +5715,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
|
|||
safe-buffer "^5.0.1"
|
||||
sha.js "^2.4.8"
|
||||
|
||||
create-react-class@^15.5.1, create-react-class@^15.6.2:
|
||||
create-react-class@^15.6.2:
|
||||
version "15.6.3"
|
||||
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
|
||||
integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==
|
||||
|
@ -8364,15 +8371,17 @@ hex-rgba@^1.0.2:
|
|||
resolved "https://registry.yarnpkg.com/hex-rgba/-/hex-rgba-1.0.2.tgz#b7cfbd24c6c736277cf88dd6d41b672ea336574c"
|
||||
integrity sha512-MKla68wFGv+i7zU3Q4giWN74f+zWdkuf2Tk21fISV7aw55r8dH/noBbH5JsVlM4Z2WRTYCEmSxsoZ1QR/o68jg==
|
||||
|
||||
history@^3.0.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/history/-/history-3.3.0.tgz#fcedcce8f12975371545d735461033579a6dae9c"
|
||||
integrity sha1-/O3M6PEpdTcVRdc1RhAzV5ptrpw=
|
||||
history@^4.10.1, history@^4.9.0:
|
||||
version "4.10.1"
|
||||
resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3"
|
||||
integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==
|
||||
dependencies:
|
||||
invariant "^2.2.1"
|
||||
"@babel/runtime" "^7.1.2"
|
||||
loose-envify "^1.2.0"
|
||||
query-string "^4.2.2"
|
||||
warning "^3.0.0"
|
||||
resolve-pathname "^3.0.0"
|
||||
tiny-invariant "^1.0.2"
|
||||
tiny-warning "^1.0.0"
|
||||
value-equal "^1.0.1"
|
||||
|
||||
hmac-drbg@^1.0.0:
|
||||
version "1.0.1"
|
||||
|
@ -8388,7 +8397,7 @@ hoist-non-react-statics@1.x.x, hoist-non-react-statics@^1.2.0:
|
|||
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb"
|
||||
integrity sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=
|
||||
|
||||
hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2:
|
||||
hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0:
|
||||
version "3.3.2"
|
||||
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
|
||||
integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
|
||||
|
@ -10534,6 +10543,11 @@ lodash.isequal@^4.5.0:
|
|||
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
|
||||
integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
|
||||
|
||||
lodash.isequalwith@^4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.isequalwith/-/lodash.isequalwith-4.4.0.tgz#266726ddd528f854f21f4ea98a065606e0fbc6b0"
|
||||
integrity sha1-Jmcm3dUo+FTyH06pigZWBuD7xrA=
|
||||
|
||||
lodash.isinteger@^4.0.4:
|
||||
version "4.0.4"
|
||||
resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343"
|
||||
|
@ -11028,6 +11042,14 @@ min-indent@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
|
||||
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
|
||||
|
||||
mini-create-react-context@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz#df60501c83151db69e28eac0ef08b4002efab040"
|
||||
integrity sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.5.5"
|
||||
tiny-warning "^1.0.3"
|
||||
|
||||
mini-css-extract-plugin@^0.4.4:
|
||||
version "0.4.5"
|
||||
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz#c99e9e78d54f3fa775633aee5933aeaa4e80719a"
|
||||
|
@ -12230,6 +12252,13 @@ path-to-regexp@0.1.7:
|
|||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
|
||||
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
|
||||
|
||||
path-to-regexp@^1.7.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
|
||||
integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
|
||||
dependencies:
|
||||
isarray "0.0.1"
|
||||
|
||||
path-type@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
|
||||
|
@ -12839,14 +12868,6 @@ qs@~6.5.2:
|
|||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
|
||||
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
||||
|
||||
query-string@^4.2.2:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
|
||||
integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s=
|
||||
dependencies:
|
||||
object-assign "^4.1.0"
|
||||
strict-uri-encode "^1.0.0"
|
||||
|
||||
querystring-es3@^0.2.0:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
|
||||
|
@ -13127,7 +13148,7 @@ react-inspector@^2.3.0:
|
|||
is-dom "^1.0.9"
|
||||
prop-types "^15.6.1"
|
||||
|
||||
react-is@^16.12.0, react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0:
|
||||
react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0:
|
||||
version "16.13.1"
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
|
||||
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
||||
|
@ -13202,24 +13223,21 @@ react-redux@^7.2.1:
|
|||
prop-types "^15.7.2"
|
||||
react-is "^16.9.0"
|
||||
|
||||
react-router-redux@^4.0.8:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-4.0.8.tgz#227403596b5151e182377dab835b5d45f0f8054e"
|
||||
integrity sha1-InQDWWtRUeGCN32rg1tdRfD4BU4=
|
||||
|
||||
react-router@^3.2.6:
|
||||
version "3.2.6"
|
||||
resolved "https://registry.yarnpkg.com/react-router/-/react-router-3.2.6.tgz#cad202796a7bba3efc2100da453b3379c9d4aeb4"
|
||||
integrity sha512-nlxtQE8B22hb/JxdaslI1tfZacxFU8x8BJryXOnR2RxB4vc01zuHYAHAIgmBkdk1kzXaA25hZxK6KAH/+CXArw==
|
||||
react-router@^5.2.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293"
|
||||
integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==
|
||||
dependencies:
|
||||
create-react-class "^15.5.1"
|
||||
history "^3.0.0"
|
||||
hoist-non-react-statics "^3.3.2"
|
||||
invariant "^2.2.1"
|
||||
loose-envify "^1.2.0"
|
||||
prop-types "^15.7.2"
|
||||
react-is "^16.13.0"
|
||||
warning "^3.0.0"
|
||||
"@babel/runtime" "^7.1.2"
|
||||
history "^4.9.0"
|
||||
hoist-non-react-statics "^3.1.0"
|
||||
loose-envify "^1.3.1"
|
||||
mini-create-react-context "^0.4.0"
|
||||
path-to-regexp "^1.7.0"
|
||||
prop-types "^15.6.2"
|
||||
react-is "^16.6.0"
|
||||
tiny-invariant "^1.0.2"
|
||||
tiny-warning "^1.0.0"
|
||||
|
||||
react-select@^1.3.0:
|
||||
version "1.3.0"
|
||||
|
@ -13801,6 +13819,11 @@ resolve-from@^5.0.0:
|
|||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
|
||||
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
|
||||
|
||||
resolve-pathname@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd"
|
||||
integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==
|
||||
|
||||
resolve-url@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
||||
|
@ -14083,6 +14106,11 @@ schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0:
|
|||
ajv "^6.12.2"
|
||||
ajv-keywords "^3.4.1"
|
||||
|
||||
seamless-immutable@^7.1.4:
|
||||
version "7.1.4"
|
||||
resolved "https://registry.yarnpkg.com/seamless-immutable/-/seamless-immutable-7.1.4.tgz#6e9536def083ddc4dea0207d722e0e80d0f372f8"
|
||||
integrity sha512-XiUO1QP4ki4E2PHegiGAlu6r82o5A+6tRh7IkGGTVg/h+UoeX4nFBeCGPOhb4CYjvkqsfm/TUtvOMYC1xmV30A==
|
||||
|
||||
select-hose@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
|
||||
|
@ -14795,11 +14823,6 @@ stream-shift@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
|
||||
integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
|
||||
|
||||
strict-uri-encode@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
|
||||
integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
|
||||
|
||||
string-argv@0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
|
||||
|
@ -15470,6 +15493,16 @@ timers-browserify@^2.0.4:
|
|||
dependencies:
|
||||
setimmediate "^1.0.4"
|
||||
|
||||
tiny-invariant@^1.0.2:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875"
|
||||
integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==
|
||||
|
||||
tiny-warning@^1.0.0, tiny-warning@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
|
||||
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
|
||||
|
||||
tinycolor2@^1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
|
||||
|
@ -16007,6 +16040,11 @@ validate-npm-package-name@^3.0.0:
|
|||
dependencies:
|
||||
builtins "^1.0.3"
|
||||
|
||||
value-equal@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"
|
||||
integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==
|
||||
|
||||
vary@^1, vary@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
|
||||
|
|
Loading…
Reference in New Issue
Block a user