diff --git a/packages/redux-devtools-core/package.json b/packages/redux-devtools-core/package.json index 9d4b8085..f17cc8bc 100644 --- a/packages/redux-devtools-core/package.json +++ b/packages/redux-devtools-core/package.json @@ -21,16 +21,20 @@ }, "scripts": { "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:umd": "rimraf ./umd && webpack --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", - "test": "jest --no-cache", - "prepare": "npm run build && npm run build:umd && npm run build:umd:min", - "prepublishOnly": "npm run test && npm run build && npm run build:umd && npm run build:umd:min" - }, - "jest": { + "test": "jest", + "lint": "eslint . --ext .ts,.tsx", + "lint:fix": "eslint . --ext .ts,.tsx --fix", + "type-check": "tsc --noEmit", + "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": { "d3-state-visualizer": "^1.3.4", @@ -66,6 +70,9 @@ "@babel/plugin-proposal-class-properties": "^7.10.4", "@babel/preset-env": "^7.11.0", "@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", "css-loader": "^4.2.1", "enzyme": "^3.11.0", diff --git a/packages/redux-devtools-core/src/app/actions/index.ts b/packages/redux-devtools-core/src/app/actions/index.ts index 9a88dec0..9b46f24c 100644 --- a/packages/redux-devtools-core/src/app/actions/index.ts +++ b/packages/redux-devtools-core/src/app/actions/index.ts @@ -1,3 +1,5 @@ +import { Scheme, Theme } from 'devui'; +import { AuthStates, States } from 'socketcluster-client/lib/scclientsocket'; import { CHANGE_SECTION, CHANGE_THEME, @@ -14,8 +16,24 @@ import { GET_REPORT_REQUEST, SHOW_NOTIFICATION, CLEAR_NOTIFICATION, + UPDATE_STATE, + UPDATE_REPORTS, } 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 monitorProps = {}; @@ -29,8 +47,8 @@ export function changeSection(section: string): ChangeSectionAction { } interface ChangeThemeFormData { - readonly theme: 'default' | 'material'; - readonly scheme: string; + readonly theme: Theme; + readonly scheme: Scheme; readonly dark: boolean; } interface ChangeThemeData { @@ -38,8 +56,8 @@ interface ChangeThemeData { } interface ChangeThemeAction { readonly type: typeof CHANGE_THEME; - readonly theme: 'default' | 'material'; - readonly scheme: string; + readonly theme: Theme; + readonly scheme: Scheme; readonly dark: boolean; } export function changeTheme(data: ChangeThemeData): ChangeThemeAction { @@ -138,8 +156,9 @@ export function toggleDispatcher(): ToggleDispatcherAction { return { type: TOGGLE_DISPATCHER }; } +export type ConnectionType = 'disabled' | 'remotedev' | 'custom'; interface ConnectionOptions { - readonly type: 'disabled' | 'remotedev' | 'custom'; + readonly type: ConnectionType; readonly hostname: string; readonly port: number; readonly secure: boolean; @@ -177,6 +196,72 @@ export function getReport(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 = | ChangeSectionAction | ChangeThemeAction @@ -187,4 +272,16 @@ export type StoreAction = | ToggleDispatcherAction | ReconnectAction | ShowNotificationAction - | ClearNotificationAction; + | ClearNotificationAction + | ConnectRequestAction + | ConnectSuccessAction + | ConnectErrorAction + | AuthRequestAction + | AuthSuccessAction + | AuthErrorAction + | DisconnectedAction + | DeauthenticateAction + | SubscribeRequestAction + | SubscribeSuccessAction + | SubscribeErrorAction + | UnsubscribeAction; diff --git a/packages/redux-devtools-core/src/app/components/Settings/Connection.tsx b/packages/redux-devtools-core/src/app/components/Settings/Connection.tsx index f6ce3f6b..9b1e1ac9 100644 --- a/packages/redux-devtools-core/src/app/components/Settings/Connection.tsx +++ b/packages/redux-devtools-core/src/app/components/Settings/Connection.tsx @@ -1,11 +1,32 @@ import React, { Component } from 'react'; -import PropTypes from 'prop-types'; import { connect, ResolveThunks } from 'react-redux'; 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 { 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', required: [], properties: { @@ -41,31 +62,20 @@ type StateProps = ReturnType; type DispatchProps = ResolveThunks; type Props = StateProps & DispatchProps; -class Connection extends Component { - constructor(props) { - super(props); - this.state = this.setFormData(props.type); - } +interface FormData extends ConnectionOptions { + readonly type: ConnectionType; +} - shouldComponentUpdate(nextProps: Props, nextState) { - return this.state !== nextState; - } +interface State { + readonly formData: FormData; + readonly type: ConnectionType; + readonly schema: Schema; + readonly changed: boolean | undefined; +} - UNSAFE_componentWillReceiveProps(nextProps) { - if (this.props.options !== nextProps.options) { - this.setState({ - formData: { ...nextProps.options, type: nextProps.type }, - }); - } - } - - handleSave = (data) => { - this.props.saveSettings(data.formData); - this.setState({ changed: false }); - }; - - setFormData = (type, changed) => { - let schema; +export class Connection extends Component { + setFormData = (type: ConnectionType, changed?: boolean) => { + let schema: Schema; if (type !== 'custom') { schema = { type: 'object', @@ -85,7 +95,26 @@ class Connection extends Component { }; }; - 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) => { + this.props.saveSettings(data.formData); + this.setState({ changed: false }); + }; + + handleChange = (data: IChangeEvent) => { const formData = data.formData; const type = formData.type; if (type !== this.state.type) { diff --git a/packages/redux-devtools-core/src/app/components/Settings/Themes.tsx b/packages/redux-devtools-core/src/app/components/Settings/Themes.tsx index cd19906a..7762454e 100644 --- a/packages/redux-devtools-core/src/app/components/Settings/Themes.tsx +++ b/packages/redux-devtools-core/src/app/components/Settings/Themes.tsx @@ -9,7 +9,7 @@ type StateProps = ReturnType; type DispatchProps = ResolveThunks; type Props = StateProps & DispatchProps; -class Themes extends Component { +export class Themes extends Component { render() { const theme = this.props.theme; const formData = { diff --git a/packages/redux-devtools-core/src/app/components/Settings/index.tsx b/packages/redux-devtools-core/src/app/components/Settings/index.tsx index 47b62874..f50e95df 100644 --- a/packages/redux-devtools-core/src/app/components/Settings/index.tsx +++ b/packages/redux-devtools-core/src/app/components/Settings/index.tsx @@ -3,17 +3,19 @@ import { Tabs } from 'devui'; import Connection from './Connection'; import Themes from './Themes'; -class Settings extends Component { - constructor(props) { - super(props); - this.tabs = [ - { name: 'Connection', component: Connection }, - { name: 'Themes', component: Themes }, - ]; - this.state = { selected: 'Connection' }; - } +interface State { + selected: string; +} - handleSelect = (selected) => { +// eslint-disable-next-line @typescript-eslint/ban-types +class Settings extends Component<{}, State> { + tabs = [ + { name: 'Connection', component: Connection }, + { name: 'Themes', component: Themes }, + ]; + state: State = { selected: 'Connection' }; + + handleSelect = (selected: string) => { this.setState({ selected }); }; diff --git a/packages/redux-devtools-core/src/app/containers/App.tsx b/packages/redux-devtools-core/src/app/containers/App.tsx index 39e148d2..9417bd5c 100644 --- a/packages/redux-devtools-core/src/app/containers/App.tsx +++ b/packages/redux-devtools-core/src/app/containers/App.tsx @@ -1,5 +1,4 @@ import React, { Component } from 'react'; -import PropTypes from 'prop-types'; import { connect, ResolveThunks } from 'react-redux'; import { Container, Notification } from 'devui'; import { clearNotification } from '../actions'; @@ -41,16 +40,6 @@ class App extends Component { } } -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) => ({ section: state.section, theme: state.theme, diff --git a/packages/redux-devtools-core/src/app/middlewares/api.ts b/packages/redux-devtools-core/src/app/middlewares/api.ts index 7a6bedd4..27394c44 100644 --- a/packages/redux-devtools-core/src/app/middlewares/api.ts +++ b/packages/redux-devtools-core/src/app/middlewares/api.ts @@ -1,5 +1,6 @@ -import socketCluster from 'socketcluster-client'; +import socketCluster, { SCClientSocket } from 'socketcluster-client'; import { stringify } from 'jsan'; +import { Dispatch, Middleware, MiddlewareAPI, Store } from 'redux'; import socketOptions from '../constants/socketOptions'; import * as actions from '../constants/socketActionTypes'; import { getActiveInstance } from '../reducers/instances'; @@ -12,11 +13,12 @@ import { GET_REPORT_ERROR, GET_REPORT_SUCCESS, } from '../constants/actionTypes'; -import { showNotification, importState } from '../actions'; +import { showNotification, importState, StoreAction } from '../actions'; import { nonReduxDispatch } from '../utils/monitorActions'; +import { StoreState } from '../reducers'; -let socket; -let store; +let socket: SCClientSocket; +let store: MiddlewareAPI, StoreState>; function emit({ message: type, id, instanceId, action, state }) { socket.emit(id ? 'sc-' + id : 'respond', { type, action, state, instanceId }); @@ -163,7 +165,7 @@ function disconnect() { } function login() { - socket.emit('login', {}, (error, baseChannel) => { + socket.emit('login', {}, (error: Error, baseChannel: string) => { if (error) { store.dispatch({ type: actions.AUTH_ERROR, error }); return; @@ -193,13 +195,13 @@ function getReport(reportId) { }); } -export default function api(inStore) { +export default function api( + inStore: MiddlewareAPI, StoreState> +) { store = inStore; - return (next) => (action) => { + return (next: Dispatch) => (action: StoreAction) => { const result = next(action); - switch ( - action.type // eslint-disable-line default-case - ) { + switch (action.type) { case actions.CONNECT_REQUEST: connect(); break; diff --git a/packages/redux-devtools-core/src/app/reducers/connection.ts b/packages/redux-devtools-core/src/app/reducers/connection.ts index 531dc08b..65c609a8 100644 --- a/packages/redux-devtools-core/src/app/reducers/connection.ts +++ b/packages/redux-devtools-core/src/app/reducers/connection.ts @@ -1,14 +1,14 @@ import { RECONNECT } from '../constants/socketActionTypes'; -import { StoreAction } from '../actions'; +import { ConnectionType, StoreAction } from '../actions'; -interface ConnectionOptions { +export interface ConnectionOptions { readonly hostname: string; readonly port: number; readonly secure: boolean; } export interface ConnectionState { readonly options: ConnectionOptions; - readonly type: 'disabled' | 'remotedev' | 'custom'; + readonly type: ConnectionType; } export default function connection( diff --git a/packages/redux-devtools-core/src/app/reducers/index.ts b/packages/redux-devtools-core/src/app/reducers/index.ts index 272de44b..52fb0f57 100644 --- a/packages/redux-devtools-core/src/app/reducers/index.ts +++ b/packages/redux-devtools-core/src/app/reducers/index.ts @@ -1,7 +1,7 @@ import { combineReducers } from 'redux'; import section, { SectionState } from './section'; import connection, { ConnectionState } from './connection'; -import socket from './socket'; +import socket, { SocketState } from './socket'; import monitor from './monitor'; import notification, { NotificationState } from './notification'; import instances from './instances'; @@ -13,6 +13,7 @@ export interface StoreState { readonly section: SectionState; readonly theme: ThemeState; readonly connection: ConnectionState; + readonly socket: SocketState; readonly notification: NotificationState; } diff --git a/packages/redux-devtools-core/src/app/reducers/instances.ts b/packages/redux-devtools-core/src/app/reducers/instances.ts index 617a17ce..f2303f47 100644 --- a/packages/redux-devtools-core/src/app/reducers/instances.ts +++ b/packages/redux-devtools-core/src/app/reducers/instances.ts @@ -10,6 +10,7 @@ import { import { DISCONNECTED } from '../constants/socketActionTypes'; import parseJSON from '../utils/parseJSON'; import { recompute } from '../utils/updateState'; +import { StoreAction } from '../actions'; 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) { case UPDATE_STATE: { const { request } = action; diff --git a/packages/redux-devtools-core/src/app/reducers/socket.ts b/packages/redux-devtools-core/src/app/reducers/socket.ts index 4148875d..b8cae6bf 100644 --- a/packages/redux-devtools-core/src/app/reducers/socket.ts +++ b/packages/redux-devtools-core/src/app/reducers/socket.ts @@ -1,12 +1,20 @@ +import { AuthStates, States } from 'socketcluster-client/lib/scclientsocket'; import * as actions from '../constants/socketActionTypes'; 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, channels: [], socketState: actions.CLOSED, authState: actions.PENDING, - authToken: null, error: undefined, }; @@ -40,7 +48,6 @@ export default function socket(state = initialState, action: StoreAction) { return { ...state, authState: actions.AUTHENTICATED, - authToken: action.authToken, baseChannel: action.baseChannel, }; case actions.AUTH_ERROR: @@ -58,13 +65,13 @@ export default function socket(state = initialState, action: StoreAction) { case actions.SUBSCRIBE_SUCCESS: return { ...state, - channels: [...state.channels, action.channelName], + channels: [...state.channels, action.channel], }; case actions.UNSUBSCRIBE: return { ...state, channels: state.channels.filter( - (channel) => channel !== action.channelName + (channel) => channel !== action.channel ), }; case actions.DISCONNECTED: diff --git a/packages/redux-devtools-core/src/app/reducers/theme.ts b/packages/redux-devtools-core/src/app/reducers/theme.ts index 75353a84..1c6618ad 100644 --- a/packages/redux-devtools-core/src/app/reducers/theme.ts +++ b/packages/redux-devtools-core/src/app/reducers/theme.ts @@ -1,14 +1,19 @@ +import { Scheme, Theme } from 'devui'; import { CHANGE_THEME } from '../constants/actionTypes'; import { StoreAction } from '../actions'; export interface ThemeState { - readonly theme: 'default' | 'material'; - readonly scheme: string; + readonly theme: Theme; + readonly scheme: Scheme; readonly light: boolean; } 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 ) { if (action.type === CHANGE_THEME) { diff --git a/yarn.lock b/yarn.lock index daf18650..80e9176d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3361,6 +3361,11 @@ resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" 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": version "7.0.2" resolved "https://registry.yarnpkg.com/@types/babel__code-frame/-/babel__code-frame-7.0.2.tgz#e0c0f1648cbc09a9d4e5b4ed2ae9a6f7c8f5aeb0" @@ -3463,6 +3468,11 @@ dependencies: "@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@*": version "1.3.3" 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" 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": version "4.17.9" 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" 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@*": version "2.0.0" 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" 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@*": version "1.0.2" 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" 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": version "2.5.7" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" @@ -4036,6 +4075,47 @@ dependencies: 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@*": version "1.13.5" 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" 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@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" @@ -4140,7 +4252,7 @@ "@types/webpack-sources" "*" source-map "^0.6.0" -"@types/ws@^7.0.0": +"@types/ws@*", "@types/ws@^7.0.0": version "7.2.7" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.2.7.tgz#362ad1a1d62721bdb725e72c8cccf357078cf5a3" integrity sha512-UUFC/xxqFLP17hTva8/lVT0SybLUrfSD9c+iapKb0fEiC8uoDbA+xuZ3pAN603eW+bY8ebSMLm9jXdIPnD0ZgA==