diff --git a/extension/src/app/reducers/panel/index.ts b/extension/src/app/reducers/panel/index.ts index 1b72a59c..14e40425 100644 --- a/extension/src/app/reducers/panel/index.ts +++ b/extension/src/app/reducers/panel/index.ts @@ -1,23 +1,46 @@ import { combineReducers, Reducer } from 'redux'; -import instances from '@redux-devtools/app/lib/reducers/instances'; -import monitor from '@redux-devtools/app/lib/reducers/monitor'; -import notification from '@redux-devtools/app/lib/reducers/notification'; -import reports from '@redux-devtools/app/lib/reducers/reports'; -import section from '@redux-devtools/app/lib/reducers/section'; -import theme from '@redux-devtools/app/lib/reducers/theme'; -import connection from '@redux-devtools/app/lib/reducers/connection'; -import { StoreState } from '@redux-devtools/app/lib/reducers'; +import instances, { + InstancesState, +} from '@redux-devtools/app/lib/reducers/instances'; +import monitor, { + MonitorState, +} from '@redux-devtools/app/lib/reducers/monitor'; +import notification, { + NotificationState, +} from '@redux-devtools/app/lib/reducers/notification'; +import reports, { + ReportsState, +} from '@redux-devtools/app/lib/reducers/reports'; +import section, { + SectionState, +} from '@redux-devtools/app/lib/reducers/section'; +import theme, { ThemeState } from '@redux-devtools/app/lib/reducers/theme'; +import connection, { + ConnectionState, +} from '@redux-devtools/app/lib/reducers/connection'; import { StoreAction } from '@redux-devtools/app/lib/src/actions'; -const rootReducer: Reducer = - combineReducers({ - instances, - monitor, - reports, - notification, - section, - theme, - connection, - }); +export interface StoreStateWithoutSocket { + readonly section: SectionState; + readonly theme: ThemeState; + readonly connection: ConnectionState; + readonly monitor: MonitorState; + readonly instances: InstancesState; + readonly reports: ReportsState; + readonly notification: NotificationState; +} + +const rootReducer: Reducer< + StoreStateWithoutSocket, + StoreAction +> = combineReducers({ + instances, + monitor, + reports, + notification, + section, + theme, + connection, +}); export default rootReducer; diff --git a/extension/src/browser/extension/background/contextMenus.ts b/extension/src/browser/extension/background/contextMenus.ts index 070a1a3b..d8a30145 100644 --- a/extension/src/browser/extension/background/contextMenus.ts +++ b/extension/src/browser/extension/background/contextMenus.ts @@ -1,4 +1,4 @@ -import openDevToolsWindow from './openWindow'; +import openDevToolsWindow, { DevToolsPosition } from './openWindow'; export function createMenu() { const menus = [ @@ -33,5 +33,5 @@ export function removeMenu() { } chrome.contextMenus.onClicked.addListener(({ menuItemId }) => { - openDevToolsWindow(menuItemId); + openDevToolsWindow(menuItemId as DevToolsPosition); }); diff --git a/extension/src/browser/extension/devpanel/index.tsx b/extension/src/browser/extension/devpanel/index.tsx index cdf6fbd2..5b263417 100644 --- a/extension/src/browser/extension/devpanel/index.tsx +++ b/extension/src/browser/extension/devpanel/index.tsx @@ -11,6 +11,7 @@ import { Action, PreloadedState, Store } from 'redux'; import { StoreState } from '@redux-devtools/app/lib/reducers'; import { StoreAction } from '@redux-devtools/app/lib/src/actions'; import { PanelMessage } from '../../../app/middlewares/api'; +import { StoreStateWithoutSocket } from '../../../app/reducers/panel'; const position = location.hash; const messageStyle: CSSProperties = { @@ -20,7 +21,9 @@ const messageStyle: CSSProperties = { }; let rendered: boolean | undefined; -let store: Store | undefined; +let store: + | Store + | undefined; let bgConnection: chrome.runtime.Port; let naTimeout: NodeJS.Timeout; let preloadedState: PreloadedState; diff --git a/extension/webpack/base.config.js b/extension/webpack/base.config.js index f6ce54a5..0fde60d6 100644 --- a/extension/webpack/base.config.js +++ b/extension/webpack/base.config.js @@ -1,6 +1,7 @@ import path from 'path'; import webpack from 'webpack'; import CopyPlugin from 'copy-webpack-plugin'; +import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; const extpath = path.join(__dirname, '../src/browser/extension/'); const mock = `${extpath}chromeAPIMock`; @@ -31,7 +32,15 @@ const baseConfig = (params) => ({ }, plugins: [ new webpack.DefinePlugin(params.globals), - ...(params.plugins ? params.plugins : []), + ...(params.plugins + ? params.plugins + : [ + new ForkTsCheckerWebpackPlugin({ + typescript: { + configFile: 'tsconfig.json', + }, + }), + ]), ].concat( params.copy ? new CopyPlugin({ diff --git a/packages/redux-devtools-app/.eslintrc.js b/packages/redux-devtools-app/.eslintrc.js index ce28cd35..d5331241 100644 --- a/packages/redux-devtools-app/.eslintrc.js +++ b/packages/redux-devtools-app/.eslintrc.js @@ -9,6 +9,14 @@ module.exports = { project: ['./tsconfig.json'], }, }, + { + files: ['demo/*.ts', 'demo/*.tsx'], + extends: '../../eslintrc.ts.react.base.json', + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./tsconfig.demo.json'], + }, + }, { files: ['test/*.ts', 'test/*.tsx'], extends: '../../eslintrc.ts.react.jest.base.json', diff --git a/packages/redux-devtools-app/tsconfig.demo.json b/packages/redux-devtools-app/tsconfig.demo.json new file mode 100644 index 00000000..fe7c960f --- /dev/null +++ b/packages/redux-devtools-app/tsconfig.demo.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.react.base.json", + "include": ["demo", "src"] +} diff --git a/packages/redux-devtools-app/tsconfig.json b/packages/redux-devtools-app/tsconfig.json index b742078e..7b7d1492 100644 --- a/packages/redux-devtools-app/tsconfig.json +++ b/packages/redux-devtools-app/tsconfig.json @@ -3,5 +3,5 @@ "compilerOptions": { "outDir": "lib" }, - "include": ["demo", "src"] + "include": ["src"] } diff --git a/packages/redux-devtools-app/webpack.config.ts b/packages/redux-devtools-app/webpack.config.ts index c419bcc5..7831a152 100644 --- a/packages/redux-devtools-app/webpack.config.ts +++ b/packages/redux-devtools-app/webpack.config.ts @@ -65,7 +65,7 @@ module.exports = (env: { development?: boolean; platform?: string } = {}) => ({ }), new ForkTsCheckerWebpackPlugin({ typescript: { - configFile: 'tsconfig.json', + configFile: 'tsconfig.demo.json', }, }), ], diff --git a/packages/redux-devtools-utils/package.json b/packages/redux-devtools-utils/package.json index b613a458..93df3ad8 100644 --- a/packages/redux-devtools-utils/package.json +++ b/packages/redux-devtools-utils/package.json @@ -34,6 +34,7 @@ "dependencies": { "@redux-devtools/core": "^3.9.0", "@redux-devtools/serialize": "^0.3.0", + "@types/get-params": "^0.1.0", "get-params": "^0.1.2", "immutable": "^4.0.0-rc.14", "jsan": "^3.1.13", diff --git a/packages/redux-devtools-utils/src/get-params.ts b/packages/redux-devtools-utils/src/get-params.ts deleted file mode 100644 index 417ec500..00000000 --- a/packages/redux-devtools-utils/src/get-params.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module 'get-params' { - function getParams(func: (...args: any[]) => unknown): string[]; - export default getParams; -} diff --git a/yarn.lock b/yarn.lock index 6a6365db..f14cbc3d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5254,6 +5254,7 @@ __metadata: dependencies: "@redux-devtools/core": ^3.9.0 "@redux-devtools/serialize": ^0.3.0 + "@types/get-params": ^0.1.0 get-params: ^0.1.2 immutable: ^4.0.0-rc.14 jsan: ^3.1.13 @@ -6894,6 +6895,13 @@ __metadata: languageName: node linkType: hard +"@types/get-params@npm:^0.1.0": + version: 0.1.0 + resolution: "@types/get-params@npm:0.1.0" + checksum: be378a08606c975c05faa1a64e73bfec3e98a924bda282109e4a6fe222cffab087ee47277aadf3dbe77e999b4bb5153553e073f008d6b9518862dc924c85ccff + languageName: node + linkType: hard + "@types/glob-base@npm:^0.3.0": version: 0.3.0 resolution: "@types/glob-base@npm:0.3.0"