mirror of
https://github.com/reduxjs/redux-devtools.git
synced 2025-07-27 00:19:55 +03:00
stash
This commit is contained in:
parent
d8ddaa4056
commit
75b01378e9
|
@ -21,16 +21,20 @@
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "webpack-dev-server --hot --inline --env.development --env.platform=web --progress",
|
"start": "webpack-dev-server --hot --inline --env.development --env.platform=web --progress",
|
||||||
|
"build": "npm run build:types && npm run build:js && npm run build:web && npm run build:umd && npm run build:umd:min",
|
||||||
|
"build:types": "tsc --emitDeclarationOnly",
|
||||||
|
"build:js": "babel src --out-dir lib --extensions \".ts,.tsx\" --source-maps inline",
|
||||||
"build:web": "rimraf ./build/web && webpack -p --env.platform=web --progress",
|
"build:web": "rimraf ./build/web && webpack -p --env.platform=web --progress",
|
||||||
"build:umd": "rimraf ./umd && webpack --progress --config webpack.config.umd.js",
|
"build:umd": "rimraf ./umd && webpack --progress --config webpack.config.umd.js",
|
||||||
"build:umd:min": "webpack --env.production --progress --config webpack.config.umd.js",
|
"build:umd:min": "webpack --env.production --progress --config webpack.config.umd.js",
|
||||||
"build": "rimraf ./lib && babel ./src/app --out-dir lib",
|
|
||||||
"clean": "rimraf lib",
|
"clean": "rimraf lib",
|
||||||
"test": "jest --no-cache",
|
"test": "jest",
|
||||||
"prepare": "npm run build && npm run build:umd && npm run build:umd:min",
|
"lint": "eslint . --ext .ts,.tsx",
|
||||||
"prepublishOnly": "npm run test && npm run build && npm run build:umd && npm run build:umd:min"
|
"lint:fix": "eslint . --ext .ts,.tsx --fix",
|
||||||
},
|
"type-check": "tsc --noEmit",
|
||||||
"jest": {
|
"type-check:watch": "npm run type-check -- --watch",
|
||||||
|
"preversion": "npm run type-check && npm run lint && npm run test",
|
||||||
|
"prepublishOnly": "npm run clean && npm run build"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"d3-state-visualizer": "^1.3.4",
|
"d3-state-visualizer": "^1.3.4",
|
||||||
|
@ -66,6 +70,9 @@
|
||||||
"@babel/plugin-proposal-class-properties": "^7.10.4",
|
"@babel/plugin-proposal-class-properties": "^7.10.4",
|
||||||
"@babel/preset-env": "^7.11.0",
|
"@babel/preset-env": "^7.11.0",
|
||||||
"@babel/preset-react": "^7.10.4",
|
"@babel/preset-react": "^7.10.4",
|
||||||
|
"@rjsf/core": "^2.4.0",
|
||||||
|
"@types/json-schema": "^7.0.6",
|
||||||
|
"@types/socketcluster-client": "^13.0.3",
|
||||||
"babel-loader": "^8.1.0",
|
"babel-loader": "^8.1.0",
|
||||||
"css-loader": "^4.2.1",
|
"css-loader": "^4.2.1",
|
||||||
"enzyme": "^3.11.0",
|
"enzyme": "^3.11.0",
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { Scheme, Theme } from 'devui';
|
||||||
|
import { AuthStates, States } from 'socketcluster-client/lib/scclientsocket';
|
||||||
import {
|
import {
|
||||||
CHANGE_SECTION,
|
CHANGE_SECTION,
|
||||||
CHANGE_THEME,
|
CHANGE_THEME,
|
||||||
|
@ -14,8 +16,24 @@ import {
|
||||||
GET_REPORT_REQUEST,
|
GET_REPORT_REQUEST,
|
||||||
SHOW_NOTIFICATION,
|
SHOW_NOTIFICATION,
|
||||||
CLEAR_NOTIFICATION,
|
CLEAR_NOTIFICATION,
|
||||||
|
UPDATE_STATE,
|
||||||
|
UPDATE_REPORTS,
|
||||||
} from '../constants/actionTypes';
|
} from '../constants/actionTypes';
|
||||||
import { RECONNECT } from '../constants/socketActionTypes';
|
import {
|
||||||
|
AUTH_ERROR,
|
||||||
|
AUTH_REQUEST,
|
||||||
|
AUTH_SUCCESS,
|
||||||
|
CONNECT_ERROR,
|
||||||
|
CONNECT_REQUEST,
|
||||||
|
CONNECT_SUCCESS,
|
||||||
|
DEAUTHENTICATE,
|
||||||
|
DISCONNECTED,
|
||||||
|
RECONNECT,
|
||||||
|
SUBSCRIBE_ERROR,
|
||||||
|
SUBSCRIBE_REQUEST,
|
||||||
|
SUBSCRIBE_SUCCESS,
|
||||||
|
UNSUBSCRIBE,
|
||||||
|
} from '../constants/socketActionTypes';
|
||||||
|
|
||||||
let monitorReducer;
|
let monitorReducer;
|
||||||
let monitorProps = {};
|
let monitorProps = {};
|
||||||
|
@ -29,8 +47,8 @@ export function changeSection(section: string): ChangeSectionAction {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ChangeThemeFormData {
|
interface ChangeThemeFormData {
|
||||||
readonly theme: 'default' | 'material';
|
readonly theme: Theme;
|
||||||
readonly scheme: string;
|
readonly scheme: Scheme;
|
||||||
readonly dark: boolean;
|
readonly dark: boolean;
|
||||||
}
|
}
|
||||||
interface ChangeThemeData {
|
interface ChangeThemeData {
|
||||||
|
@ -38,8 +56,8 @@ interface ChangeThemeData {
|
||||||
}
|
}
|
||||||
interface ChangeThemeAction {
|
interface ChangeThemeAction {
|
||||||
readonly type: typeof CHANGE_THEME;
|
readonly type: typeof CHANGE_THEME;
|
||||||
readonly theme: 'default' | 'material';
|
readonly theme: Theme;
|
||||||
readonly scheme: string;
|
readonly scheme: Scheme;
|
||||||
readonly dark: boolean;
|
readonly dark: boolean;
|
||||||
}
|
}
|
||||||
export function changeTheme(data: ChangeThemeData): ChangeThemeAction {
|
export function changeTheme(data: ChangeThemeData): ChangeThemeAction {
|
||||||
|
@ -138,8 +156,9 @@ export function toggleDispatcher(): ToggleDispatcherAction {
|
||||||
return { type: TOGGLE_DISPATCHER };
|
return { type: TOGGLE_DISPATCHER };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type ConnectionType = 'disabled' | 'remotedev' | 'custom';
|
||||||
interface ConnectionOptions {
|
interface ConnectionOptions {
|
||||||
readonly type: 'disabled' | 'remotedev' | 'custom';
|
readonly type: ConnectionType;
|
||||||
readonly hostname: string;
|
readonly hostname: string;
|
||||||
readonly port: number;
|
readonly port: number;
|
||||||
readonly secure: boolean;
|
readonly secure: boolean;
|
||||||
|
@ -177,6 +196,72 @@ export function getReport(report) {
|
||||||
return { type: GET_REPORT_REQUEST, report };
|
return { type: GET_REPORT_REQUEST, report };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ConnectRequestAction {
|
||||||
|
type: typeof CONNECT_REQUEST;
|
||||||
|
options: ConnectionOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ConnectSuccessPayload {
|
||||||
|
id: string;
|
||||||
|
authState: AuthStates;
|
||||||
|
socketState: States;
|
||||||
|
}
|
||||||
|
interface ConnectSuccessAction {
|
||||||
|
type: typeof CONNECT_SUCCESS;
|
||||||
|
payload: ConnectSuccessPayload;
|
||||||
|
error: Error | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ConnectErrorAction {
|
||||||
|
type: typeof CONNECT_ERROR;
|
||||||
|
error: Error | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface AuthRequestAction {
|
||||||
|
type: typeof AUTH_REQUEST;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface AuthSuccessAction {
|
||||||
|
type: typeof AUTH_SUCCESS;
|
||||||
|
baseChannel: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface AuthErrorAction {
|
||||||
|
type: typeof AUTH_ERROR;
|
||||||
|
error: Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface DisconnectedAction {
|
||||||
|
type: typeof DISCONNECTED;
|
||||||
|
code: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface DeauthenticateAction {
|
||||||
|
type: typeof DEAUTHENTICATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface SubscribeRequestAction {
|
||||||
|
type: typeof SUBSCRIBE_REQUEST;
|
||||||
|
channel: string;
|
||||||
|
subscription: typeof UPDATE_STATE | typeof UPDATE_REPORTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface SubscribeSuccessAction {
|
||||||
|
type: typeof SUBSCRIBE_SUCCESS;
|
||||||
|
channel: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface SubscribeErrorAction {
|
||||||
|
type: typeof SUBSCRIBE_ERROR;
|
||||||
|
error: Error;
|
||||||
|
status: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface UnsubscribeAction {
|
||||||
|
type: typeof UNSUBSCRIBE;
|
||||||
|
channel: string;
|
||||||
|
}
|
||||||
|
|
||||||
export type StoreAction =
|
export type StoreAction =
|
||||||
| ChangeSectionAction
|
| ChangeSectionAction
|
||||||
| ChangeThemeAction
|
| ChangeThemeAction
|
||||||
|
@ -187,4 +272,16 @@ export type StoreAction =
|
||||||
| ToggleDispatcherAction
|
| ToggleDispatcherAction
|
||||||
| ReconnectAction
|
| ReconnectAction
|
||||||
| ShowNotificationAction
|
| ShowNotificationAction
|
||||||
| ClearNotificationAction;
|
| ClearNotificationAction
|
||||||
|
| ConnectRequestAction
|
||||||
|
| ConnectSuccessAction
|
||||||
|
| ConnectErrorAction
|
||||||
|
| AuthRequestAction
|
||||||
|
| AuthSuccessAction
|
||||||
|
| AuthErrorAction
|
||||||
|
| DisconnectedAction
|
||||||
|
| DeauthenticateAction
|
||||||
|
| SubscribeRequestAction
|
||||||
|
| SubscribeSuccessAction
|
||||||
|
| SubscribeErrorAction
|
||||||
|
| UnsubscribeAction;
|
||||||
|
|
|
@ -1,11 +1,32 @@
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import { connect, ResolveThunks } from 'react-redux';
|
import { connect, ResolveThunks } from 'react-redux';
|
||||||
import { Container, Form } from 'devui';
|
import { Container, Form } from 'devui';
|
||||||
import { saveSocketSettings } from '../../actions';
|
import {
|
||||||
|
JSONSchema7,
|
||||||
|
JSONSchema7Definition,
|
||||||
|
JSONSchema7Type,
|
||||||
|
JSONSchema7TypeName,
|
||||||
|
} from 'json-schema';
|
||||||
|
import { ConnectionType, saveSocketSettings } from '../../actions';
|
||||||
import { StoreState } from '../../reducers';
|
import { StoreState } from '../../reducers';
|
||||||
|
import { ConnectionOptions } from '../../reducers/connection';
|
||||||
|
import { IChangeEvent, ISubmitEvent } from '@rjsf/core';
|
||||||
|
|
||||||
const defaultSchema = {
|
declare module 'json-schema' {
|
||||||
|
export interface JSONSchema7 {
|
||||||
|
enumNames?: JSONSchema7Type[];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Schema {
|
||||||
|
type: JSONSchema7TypeName;
|
||||||
|
required?: string[];
|
||||||
|
properties: {
|
||||||
|
[key: string]: JSONSchema7Definition;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const defaultSchema: Schema = {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
required: [],
|
required: [],
|
||||||
properties: {
|
properties: {
|
||||||
|
@ -41,31 +62,20 @@ type StateProps = ReturnType<typeof mapStateToProps>;
|
||||||
type DispatchProps = ResolveThunks<typeof actionCreators>;
|
type DispatchProps = ResolveThunks<typeof actionCreators>;
|
||||||
type Props = StateProps & DispatchProps;
|
type Props = StateProps & DispatchProps;
|
||||||
|
|
||||||
class Connection extends Component<Props> {
|
interface FormData extends ConnectionOptions {
|
||||||
constructor(props) {
|
readonly type: ConnectionType;
|
||||||
super(props);
|
|
||||||
this.state = this.setFormData(props.type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldComponentUpdate(nextProps: Props, nextState) {
|
interface State {
|
||||||
return this.state !== nextState;
|
readonly formData: FormData;
|
||||||
|
readonly type: ConnectionType;
|
||||||
|
readonly schema: Schema;
|
||||||
|
readonly changed: boolean | undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
UNSAFE_componentWillReceiveProps(nextProps) {
|
export class Connection extends Component<Props, State> {
|
||||||
if (this.props.options !== nextProps.options) {
|
setFormData = (type: ConnectionType, changed?: boolean) => {
|
||||||
this.setState({
|
let schema: Schema;
|
||||||
formData: { ...nextProps.options, type: nextProps.type },
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
handleSave = (data) => {
|
|
||||||
this.props.saveSettings(data.formData);
|
|
||||||
this.setState({ changed: false });
|
|
||||||
};
|
|
||||||
|
|
||||||
setFormData = (type, changed) => {
|
|
||||||
let schema;
|
|
||||||
if (type !== 'custom') {
|
if (type !== 'custom') {
|
||||||
schema = {
|
schema = {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
|
@ -85,7 +95,26 @@ class Connection extends Component<Props> {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
handleChange = (data) => {
|
state: State = this.setFormData(this.props.type);
|
||||||
|
|
||||||
|
shouldComponentUpdate(nextProps: Props, nextState: State) {
|
||||||
|
return this.state !== nextState;
|
||||||
|
}
|
||||||
|
|
||||||
|
UNSAFE_componentWillReceiveProps(nextProps: Props) {
|
||||||
|
if (this.props.options !== nextProps.options) {
|
||||||
|
this.setState({
|
||||||
|
formData: { ...nextProps.options, type: nextProps.type },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
handleSave = (data: ISubmitEvent<FormData>) => {
|
||||||
|
this.props.saveSettings(data.formData);
|
||||||
|
this.setState({ changed: false });
|
||||||
|
};
|
||||||
|
|
||||||
|
handleChange = (data: IChangeEvent<FormData>) => {
|
||||||
const formData = data.formData;
|
const formData = data.formData;
|
||||||
const type = formData.type;
|
const type = formData.type;
|
||||||
if (type !== this.state.type) {
|
if (type !== this.state.type) {
|
||||||
|
|
|
@ -9,7 +9,7 @@ type StateProps = ReturnType<typeof mapStateToProps>;
|
||||||
type DispatchProps = ResolveThunks<typeof actionCreators>;
|
type DispatchProps = ResolveThunks<typeof actionCreators>;
|
||||||
type Props = StateProps & DispatchProps;
|
type Props = StateProps & DispatchProps;
|
||||||
|
|
||||||
class Themes extends Component<Props> {
|
export class Themes extends Component<Props> {
|
||||||
render() {
|
render() {
|
||||||
const theme = this.props.theme;
|
const theme = this.props.theme;
|
||||||
const formData = {
|
const formData = {
|
||||||
|
|
|
@ -3,17 +3,19 @@ import { Tabs } from 'devui';
|
||||||
import Connection from './Connection';
|
import Connection from './Connection';
|
||||||
import Themes from './Themes';
|
import Themes from './Themes';
|
||||||
|
|
||||||
class Settings extends Component {
|
interface State {
|
||||||
constructor(props) {
|
selected: string;
|
||||||
super(props);
|
}
|
||||||
this.tabs = [
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
||||||
|
class Settings extends Component<{}, State> {
|
||||||
|
tabs = [
|
||||||
{ name: 'Connection', component: Connection },
|
{ name: 'Connection', component: Connection },
|
||||||
{ name: 'Themes', component: Themes },
|
{ name: 'Themes', component: Themes },
|
||||||
];
|
];
|
||||||
this.state = { selected: 'Connection' };
|
state: State = { selected: 'Connection' };
|
||||||
}
|
|
||||||
|
|
||||||
handleSelect = (selected) => {
|
handleSelect = (selected: string) => {
|
||||||
this.setState({ selected });
|
this.setState({ selected });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import { connect, ResolveThunks } from 'react-redux';
|
import { connect, ResolveThunks } from 'react-redux';
|
||||||
import { Container, Notification } from 'devui';
|
import { Container, Notification } from 'devui';
|
||||||
import { clearNotification } from '../actions';
|
import { clearNotification } from '../actions';
|
||||||
|
@ -41,16 +40,6 @@ class App extends Component<Props> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
App.propTypes = {
|
|
||||||
section: PropTypes.string.isRequired,
|
|
||||||
theme: PropTypes.object.isRequired,
|
|
||||||
notification: PropTypes.shape({
|
|
||||||
message: PropTypes.string,
|
|
||||||
type: PropTypes.string,
|
|
||||||
}),
|
|
||||||
clearNotification: PropTypes.func,
|
|
||||||
};
|
|
||||||
|
|
||||||
const mapStateToProps = (state: StoreState) => ({
|
const mapStateToProps = (state: StoreState) => ({
|
||||||
section: state.section,
|
section: state.section,
|
||||||
theme: state.theme,
|
theme: state.theme,
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import socketCluster from 'socketcluster-client';
|
import socketCluster, { SCClientSocket } from 'socketcluster-client';
|
||||||
import { stringify } from 'jsan';
|
import { stringify } from 'jsan';
|
||||||
|
import { Dispatch, Middleware, MiddlewareAPI, Store } from 'redux';
|
||||||
import socketOptions from '../constants/socketOptions';
|
import socketOptions from '../constants/socketOptions';
|
||||||
import * as actions from '../constants/socketActionTypes';
|
import * as actions from '../constants/socketActionTypes';
|
||||||
import { getActiveInstance } from '../reducers/instances';
|
import { getActiveInstance } from '../reducers/instances';
|
||||||
|
@ -12,11 +13,12 @@ import {
|
||||||
GET_REPORT_ERROR,
|
GET_REPORT_ERROR,
|
||||||
GET_REPORT_SUCCESS,
|
GET_REPORT_SUCCESS,
|
||||||
} from '../constants/actionTypes';
|
} from '../constants/actionTypes';
|
||||||
import { showNotification, importState } from '../actions';
|
import { showNotification, importState, StoreAction } from '../actions';
|
||||||
import { nonReduxDispatch } from '../utils/monitorActions';
|
import { nonReduxDispatch } from '../utils/monitorActions';
|
||||||
|
import { StoreState } from '../reducers';
|
||||||
|
|
||||||
let socket;
|
let socket: SCClientSocket;
|
||||||
let store;
|
let store: MiddlewareAPI<Dispatch<StoreAction>, StoreState>;
|
||||||
|
|
||||||
function emit({ message: type, id, instanceId, action, state }) {
|
function emit({ message: type, id, instanceId, action, state }) {
|
||||||
socket.emit(id ? 'sc-' + id : 'respond', { type, action, state, instanceId });
|
socket.emit(id ? 'sc-' + id : 'respond', { type, action, state, instanceId });
|
||||||
|
@ -163,7 +165,7 @@ function disconnect() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function login() {
|
function login() {
|
||||||
socket.emit('login', {}, (error, baseChannel) => {
|
socket.emit('login', {}, (error: Error, baseChannel: string) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
store.dispatch({ type: actions.AUTH_ERROR, error });
|
store.dispatch({ type: actions.AUTH_ERROR, error });
|
||||||
return;
|
return;
|
||||||
|
@ -193,13 +195,13 @@ function getReport(reportId) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function api(inStore) {
|
export default function api(
|
||||||
store = inStore;
|
inStore: MiddlewareAPI<Dispatch<StoreAction>, StoreState>
|
||||||
return (next) => (action) => {
|
|
||||||
const result = next(action);
|
|
||||||
switch (
|
|
||||||
action.type // eslint-disable-line default-case
|
|
||||||
) {
|
) {
|
||||||
|
store = inStore;
|
||||||
|
return (next: Dispatch<StoreAction>) => (action: StoreAction) => {
|
||||||
|
const result = next(action);
|
||||||
|
switch (action.type) {
|
||||||
case actions.CONNECT_REQUEST:
|
case actions.CONNECT_REQUEST:
|
||||||
connect();
|
connect();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
import { RECONNECT } from '../constants/socketActionTypes';
|
import { RECONNECT } from '../constants/socketActionTypes';
|
||||||
import { StoreAction } from '../actions';
|
import { ConnectionType, StoreAction } from '../actions';
|
||||||
|
|
||||||
interface ConnectionOptions {
|
export interface ConnectionOptions {
|
||||||
readonly hostname: string;
|
readonly hostname: string;
|
||||||
readonly port: number;
|
readonly port: number;
|
||||||
readonly secure: boolean;
|
readonly secure: boolean;
|
||||||
}
|
}
|
||||||
export interface ConnectionState {
|
export interface ConnectionState {
|
||||||
readonly options: ConnectionOptions;
|
readonly options: ConnectionOptions;
|
||||||
readonly type: 'disabled' | 'remotedev' | 'custom';
|
readonly type: ConnectionType;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function connection(
|
export default function connection(
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { combineReducers } from 'redux';
|
import { combineReducers } from 'redux';
|
||||||
import section, { SectionState } from './section';
|
import section, { SectionState } from './section';
|
||||||
import connection, { ConnectionState } from './connection';
|
import connection, { ConnectionState } from './connection';
|
||||||
import socket from './socket';
|
import socket, { SocketState } from './socket';
|
||||||
import monitor from './monitor';
|
import monitor from './monitor';
|
||||||
import notification, { NotificationState } from './notification';
|
import notification, { NotificationState } from './notification';
|
||||||
import instances from './instances';
|
import instances from './instances';
|
||||||
|
@ -13,6 +13,7 @@ export interface StoreState {
|
||||||
readonly section: SectionState;
|
readonly section: SectionState;
|
||||||
readonly theme: ThemeState;
|
readonly theme: ThemeState;
|
||||||
readonly connection: ConnectionState;
|
readonly connection: ConnectionState;
|
||||||
|
readonly socket: SocketState;
|
||||||
readonly notification: NotificationState;
|
readonly notification: NotificationState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ import {
|
||||||
import { DISCONNECTED } from '../constants/socketActionTypes';
|
import { DISCONNECTED } from '../constants/socketActionTypes';
|
||||||
import parseJSON from '../utils/parseJSON';
|
import parseJSON from '../utils/parseJSON';
|
||||||
import { recompute } from '../utils/updateState';
|
import { recompute } from '../utils/updateState';
|
||||||
|
import { StoreAction } from '../actions';
|
||||||
|
|
||||||
interface InstancesState {}
|
interface InstancesState {}
|
||||||
|
|
||||||
|
@ -236,7 +237,7 @@ function init({ type, action, name, libConfig = {} }, connectionId, current) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function instances(state = initialState, action) {
|
export default function instances(state = initialState, action: StoreAction) {
|
||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
case UPDATE_STATE: {
|
case UPDATE_STATE: {
|
||||||
const { request } = action;
|
const { request } = action;
|
||||||
|
|
|
@ -1,12 +1,20 @@
|
||||||
|
import { AuthStates, States } from 'socketcluster-client/lib/scclientsocket';
|
||||||
import * as actions from '../constants/socketActionTypes';
|
import * as actions from '../constants/socketActionTypes';
|
||||||
import { StoreAction } from '../actions';
|
import { StoreAction } from '../actions';
|
||||||
|
|
||||||
const initialState = {
|
export interface SocketState {
|
||||||
|
id: string | null;
|
||||||
|
channels: string[];
|
||||||
|
socketState: States;
|
||||||
|
authState: AuthStates;
|
||||||
|
error: Error | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
const initialState: SocketState = {
|
||||||
id: null,
|
id: null,
|
||||||
channels: [],
|
channels: [],
|
||||||
socketState: actions.CLOSED,
|
socketState: actions.CLOSED,
|
||||||
authState: actions.PENDING,
|
authState: actions.PENDING,
|
||||||
authToken: null,
|
|
||||||
error: undefined,
|
error: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -40,7 +48,6 @@ export default function socket(state = initialState, action: StoreAction) {
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
authState: actions.AUTHENTICATED,
|
authState: actions.AUTHENTICATED,
|
||||||
authToken: action.authToken,
|
|
||||||
baseChannel: action.baseChannel,
|
baseChannel: action.baseChannel,
|
||||||
};
|
};
|
||||||
case actions.AUTH_ERROR:
|
case actions.AUTH_ERROR:
|
||||||
|
@ -58,13 +65,13 @@ export default function socket(state = initialState, action: StoreAction) {
|
||||||
case actions.SUBSCRIBE_SUCCESS:
|
case actions.SUBSCRIBE_SUCCESS:
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
channels: [...state.channels, action.channelName],
|
channels: [...state.channels, action.channel],
|
||||||
};
|
};
|
||||||
case actions.UNSUBSCRIBE:
|
case actions.UNSUBSCRIBE:
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
channels: state.channels.filter(
|
channels: state.channels.filter(
|
||||||
(channel) => channel !== action.channelName
|
(channel) => channel !== action.channel
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
case actions.DISCONNECTED:
|
case actions.DISCONNECTED:
|
||||||
|
|
|
@ -1,14 +1,19 @@
|
||||||
|
import { Scheme, Theme } from 'devui';
|
||||||
import { CHANGE_THEME } from '../constants/actionTypes';
|
import { CHANGE_THEME } from '../constants/actionTypes';
|
||||||
import { StoreAction } from '../actions';
|
import { StoreAction } from '../actions';
|
||||||
|
|
||||||
export interface ThemeState {
|
export interface ThemeState {
|
||||||
readonly theme: 'default' | 'material';
|
readonly theme: Theme;
|
||||||
readonly scheme: string;
|
readonly scheme: Scheme;
|
||||||
readonly light: boolean;
|
readonly light: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function theme(
|
export default function theme(
|
||||||
state = { theme: 'default', scheme: 'default', light: true },
|
state: ThemeState = {
|
||||||
|
theme: 'default' as const,
|
||||||
|
scheme: 'default' as const,
|
||||||
|
light: true,
|
||||||
|
},
|
||||||
action: StoreAction
|
action: StoreAction
|
||||||
) {
|
) {
|
||||||
if (action.type === CHANGE_THEME) {
|
if (action.type === CHANGE_THEME) {
|
||||||
|
|
114
yarn.lock
114
yarn.lock
|
@ -3361,6 +3361,11 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
|
resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
|
||||||
integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==
|
integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==
|
||||||
|
|
||||||
|
"@types/async@*":
|
||||||
|
version "3.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/async/-/async-3.2.3.tgz#c56f5e0fc02f8b37196f79239cc857e789b97bb4"
|
||||||
|
integrity sha512-deXFjLZc1h6SOh3hicVgD+S2EAkhSBGX/vdlD4nTzCjjOFQ+bfNiXocQ21xJjFAUwqaCeyvOQMgrnbg4QEV63A==
|
||||||
|
|
||||||
"@types/babel__code-frame@^7.0.2":
|
"@types/babel__code-frame@^7.0.2":
|
||||||
version "7.0.2"
|
version "7.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@types/babel__code-frame/-/babel__code-frame-7.0.2.tgz#e0c0f1648cbc09a9d4e5b4ed2ae9a6f7c8f5aeb0"
|
resolved "https://registry.yarnpkg.com/@types/babel__code-frame/-/babel__code-frame-7.0.2.tgz#e0c0f1648cbc09a9d4e5b4ed2ae9a6f7c8f5aeb0"
|
||||||
|
@ -3463,6 +3468,11 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/color-convert" "*"
|
"@types/color-convert" "*"
|
||||||
|
|
||||||
|
"@types/component-emitter@*":
|
||||||
|
version "1.2.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.10.tgz#ef5b1589b9f16544642e473db5ea5639107ef3ea"
|
||||||
|
integrity sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==
|
||||||
|
|
||||||
"@types/connect-history-api-fallback@*":
|
"@types/connect-history-api-fallback@*":
|
||||||
version "1.3.3"
|
version "1.3.3"
|
||||||
resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.3.tgz#4772b79b8b53185f0f4c9deab09236baf76ee3b4"
|
resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.3.tgz#4772b79b8b53185f0f4c9deab09236baf76ee3b4"
|
||||||
|
@ -3545,6 +3555,11 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884"
|
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884"
|
||||||
integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==
|
integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==
|
||||||
|
|
||||||
|
"@types/expirymanager@*":
|
||||||
|
version "0.9.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/expirymanager/-/expirymanager-0.9.0.tgz#b2ca7610e517924e26b27221603cbe5f92c0e8fc"
|
||||||
|
integrity sha512-xulG8b5SiBhpRE1Arfx3ji428mfhwQdas6/i+1IJhTLkyFifJ4rF+vve522ds2ZTiBKCUv9WHNuVF/V9PJCa2Q==
|
||||||
|
|
||||||
"@types/express-serve-static-core@*", "@types/express-serve-static-core@4.17.9":
|
"@types/express-serve-static-core@*", "@types/express-serve-static-core@4.17.9":
|
||||||
version "4.17.9"
|
version "4.17.9"
|
||||||
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz#2d7b34dcfd25ec663c25c85d76608f8b249667f1"
|
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz#2d7b34dcfd25ec663c25c85d76608f8b249667f1"
|
||||||
|
@ -3576,6 +3591,11 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.28.tgz#c054e8af4d9dd75db4e63abc76f885168714d4b3"
|
resolved "https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.28.tgz#c054e8af4d9dd75db4e63abc76f885168714d4b3"
|
||||||
integrity sha1-wFTor02d11205jq8dviFFocU1LM=
|
integrity sha1-wFTor02d11205jq8dviFFocU1LM=
|
||||||
|
|
||||||
|
"@types/fleximap@*":
|
||||||
|
version "0.9.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/fleximap/-/fleximap-0.9.0.tgz#8f084b26bf7284800ee82d960df97324888f555d"
|
||||||
|
integrity sha512-7VsHgMM7l3jY+MXptDgzvROcEoikVgIxu+8d/qT0WijDl6RXdwAbAQYxu5sBCwUvlf0cEQwiDC4rOvkcm3h+hw==
|
||||||
|
|
||||||
"@types/fs-capacitor@*":
|
"@types/fs-capacitor@*":
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz#17113e25817f584f58100fb7a08eed288b81956e"
|
resolved "https://registry.yarnpkg.com/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz#17113e25817f584f58100fb7a08eed288b81956e"
|
||||||
|
@ -3734,6 +3754,18 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
|
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
|
||||||
integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==
|
integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==
|
||||||
|
|
||||||
|
"@types/json-schema@^7.0.6":
|
||||||
|
version "7.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0"
|
||||||
|
integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==
|
||||||
|
|
||||||
|
"@types/jsonwebtoken@*":
|
||||||
|
version "8.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz#2531d5e300803aa63279b232c014acf780c981c5"
|
||||||
|
integrity sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/keygrip@*":
|
"@types/keygrip@*":
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72"
|
resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72"
|
||||||
|
@ -3827,6 +3859,13 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6"
|
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6"
|
||||||
integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
|
integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
|
||||||
|
|
||||||
|
"@types/ncom@*":
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/ncom/-/ncom-1.0.0.tgz#8e33d06fc4914c941ba40ceca042081b947ba699"
|
||||||
|
integrity sha512-9fmYuP/lvEVfzY+5nZ61ewM/ub9mDINn88BBflTyHX6D7wH5b8oFR3GXrmYjelx79shuogHhHMOtXODDBatVPQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/node-fetch@2.5.7", "@types/node-fetch@^2.5.4":
|
"@types/node-fetch@2.5.7", "@types/node-fetch@^2.5.4":
|
||||||
version "2.5.7"
|
version "2.5.7"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c"
|
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c"
|
||||||
|
@ -4036,6 +4075,47 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
redux "^4.0.0"
|
redux "^4.0.0"
|
||||||
|
|
||||||
|
"@types/sc-auth@*":
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/sc-auth/-/sc-auth-5.0.0.tgz#b9bca82783419233ed938f59e37ae940bfdb454a"
|
||||||
|
integrity sha512-V+wuOweEJDrVCMduXmS7zc60O6HGyd5Xm3ClzEXKJfQdrSuhoqvhDjOwbtRZAXCjHll12lBXECb2sht5Glp/6A==
|
||||||
|
dependencies:
|
||||||
|
"@types/jsonwebtoken" "*"
|
||||||
|
|
||||||
|
"@types/sc-broker-cluster@^6":
|
||||||
|
version "6.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/sc-broker-cluster/-/sc-broker-cluster-6.1.3.tgz#b6b0c3cedb635b1ee5098ebd1453e121c6a3d2cc"
|
||||||
|
integrity sha512-ttxBDnqq+Kcd3lMRQKW471sbv8KBXhJNaKHfFGrRRjWnSpSMa/zhhyAf/ew7/r8S7ZKuR4MFYmKYOwMXv5mm3g==
|
||||||
|
dependencies:
|
||||||
|
"@types/async" "*"
|
||||||
|
"@types/expirymanager" "*"
|
||||||
|
"@types/fleximap" "*"
|
||||||
|
"@types/sc-broker" "*"
|
||||||
|
"@types/sc-channel" "^1"
|
||||||
|
"@types/socketcluster" "*"
|
||||||
|
"@types/socketcluster-server" "^14"
|
||||||
|
|
||||||
|
"@types/sc-broker@*":
|
||||||
|
version "8.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/sc-broker/-/sc-broker-8.0.1.tgz#7dcf741386ab08ca9ca39ea6eb9af7fbb77faff2"
|
||||||
|
integrity sha512-JacbIkcjKs3PIMyw8yuM3rrJf2kw39GMoT83tNyJfvhF0DBLU26OBsO4kxmi82SdnVUubeiSN4/whC4lhOpAYg==
|
||||||
|
dependencies:
|
||||||
|
"@types/expirymanager" "*"
|
||||||
|
"@types/fleximap" "*"
|
||||||
|
"@types/ncom" "*"
|
||||||
|
|
||||||
|
"@types/sc-channel@^1":
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/sc-channel/-/sc-channel-1.2.1.tgz#82e7f50155699b751a7150b679960ca363bfa0b1"
|
||||||
|
integrity sha512-RYT2V1XlViii3CmPqlZQfv3ADaCzxGPhZfk6MWPfnv3z1dR9wCE/c9lehLtuCz0TYPJYPV48PoocvIdaPAMsUA==
|
||||||
|
dependencies:
|
||||||
|
"@types/component-emitter" "*"
|
||||||
|
|
||||||
|
"@types/sc-errors@*":
|
||||||
|
version "1.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/sc-errors/-/sc-errors-1.4.0.tgz#dba1309b695ee8aafc3f574dfedfe4f3c5153419"
|
||||||
|
integrity sha512-WfBEiw/SVja1ZvJRdt37dOJFxp2llV35n9cPiDCDsFRSvTTYlO4iMFg+NyeEhiWBk1O4bvmyYpAEYzJx1DbHHQ==
|
||||||
|
|
||||||
"@types/serve-static@*":
|
"@types/serve-static@*":
|
||||||
version "1.13.5"
|
version "1.13.5"
|
||||||
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.5.tgz#3d25d941a18415d3ab092def846e135a08bbcf53"
|
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.5.tgz#3d25d941a18415d3ab092def846e135a08bbcf53"
|
||||||
|
@ -4054,6 +4134,38 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/simple-element-resize-detector/-/simple-element-resize-detector-1.3.0.tgz#19b40d71fefa1876ac5d4ba585197ef438946353"
|
resolved "https://registry.yarnpkg.com/@types/simple-element-resize-detector/-/simple-element-resize-detector-1.3.0.tgz#19b40d71fefa1876ac5d4ba585197ef438946353"
|
||||||
integrity sha512-z89ForrCNg+4uwTHjwBCM9LjcsXYC/4O8u3tSi+82v2LCbfiYFpkjH/qQVkDewFBK6FUG7RRV7jw78EGs2maoQ==
|
integrity sha512-z89ForrCNg+4uwTHjwBCM9LjcsXYC/4O8u3tSi+82v2LCbfiYFpkjH/qQVkDewFBK6FUG7RRV7jw78EGs2maoQ==
|
||||||
|
|
||||||
|
"@types/socketcluster-client@^13.0.3":
|
||||||
|
version "13.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/socketcluster-client/-/socketcluster-client-13.0.4.tgz#945593f0a67d09d51b8fb39ea1f750fb6c19aea1"
|
||||||
|
integrity sha512-kJcm1V+iu09O7+zHY+zkdokNsvu2D965yqs8NhswgWxWU9ctk5f3IcbqMWnNqIe28aEFhvseJrlNM+NCjAEIwQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/component-emitter" "*"
|
||||||
|
"@types/sc-auth" "*"
|
||||||
|
"@types/sc-channel" "^1"
|
||||||
|
"@types/sc-errors" "*"
|
||||||
|
"@types/socketcluster-server" "^14"
|
||||||
|
"@types/ws" "*"
|
||||||
|
|
||||||
|
"@types/socketcluster-server@^14":
|
||||||
|
version "14.2.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/socketcluster-server/-/socketcluster-server-14.2.5.tgz#ed323b27e29de8a68dee851096d5fe2d164a8fd1"
|
||||||
|
integrity sha512-mDdLtv8R43mh6K4w/HmHEkZZMlCKN/B1Cm/seh6NSPBtVxbHhH0hN0KV4em4eY+2+S7FoNi9sFYINDPitOaBwA==
|
||||||
|
dependencies:
|
||||||
|
"@types/component-emitter" "*"
|
||||||
|
"@types/jsonwebtoken" "*"
|
||||||
|
"@types/sc-auth" "*"
|
||||||
|
"@types/sc-broker-cluster" "^6"
|
||||||
|
"@types/ws" "*"
|
||||||
|
|
||||||
|
"@types/socketcluster@*":
|
||||||
|
version "14.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/socketcluster/-/socketcluster-14.0.3.tgz#62a89c3c08c2ee0fca5c265263e3a15fb544dd83"
|
||||||
|
integrity sha512-E+myXJK1zKtqydI+qWUxthvi4Z76+Ovzz5ijIa/yR8hfOvk1K7VhsbyNrnrk8KWLtJFpostisbPp8eLBAQrnkA==
|
||||||
|
dependencies:
|
||||||
|
"@types/sc-auth" "*"
|
||||||
|
"@types/sc-broker-cluster" "^6"
|
||||||
|
"@types/socketcluster-server" "^14"
|
||||||
|
|
||||||
"@types/source-list-map@*":
|
"@types/source-list-map@*":
|
||||||
version "0.1.2"
|
version "0.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
|
resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
|
||||||
|
@ -4140,7 +4252,7 @@
|
||||||
"@types/webpack-sources" "*"
|
"@types/webpack-sources" "*"
|
||||||
source-map "^0.6.0"
|
source-map "^0.6.0"
|
||||||
|
|
||||||
"@types/ws@^7.0.0":
|
"@types/ws@*", "@types/ws@^7.0.0":
|
||||||
version "7.2.7"
|
version "7.2.7"
|
||||||
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.2.7.tgz#362ad1a1d62721bdb725e72c8cccf357078cf5a3"
|
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.2.7.tgz#362ad1a1d62721bdb725e72c8cccf357078cf5a3"
|
||||||
integrity sha512-UUFC/xxqFLP17hTva8/lVT0SybLUrfSD9c+iapKb0fEiC8uoDbA+xuZ3pAN603eW+bY8ebSMLm9jXdIPnD0ZgA==
|
integrity sha512-UUFC/xxqFLP17hTva8/lVT0SybLUrfSD9c+iapKb0fEiC8uoDbA+xuZ3pAN603eW+bY8ebSMLm9jXdIPnD0ZgA==
|
||||||
|
|
Loading…
Reference in New Issue
Block a user