From ffe7934ead249941acba24b10354b8e76951b7a7 Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Sun, 30 Aug 2020 17:27:14 -0400 Subject: [PATCH] stash --- package.json | 2 + packages/react-dock/tsconfig.webpack.json | 3 - packages/redux-devtools-inspector/.babelrc | 11 +- .../redux-devtools-inspector/.eslintrc.js | 4 +- .../demo/config/tsconfig.json | 7 + .../{ => demo/config}/webpack.config.ts | 17 +- .../demo/src/js/{DemoApp.jsx => DemoApp.tsx} | 131 ++++++--- .../src/js/{DevTools.jsx => DevTools.tsx} | 12 +- .../demo/src/js/getOptions.js | 11 - .../demo/src/js/getOptions.ts | 20 ++ .../demo/src/js/{index.js => index.tsx} | 28 +- .../demo/src/js/reducers.js | 148 ---------- .../demo/src/js/reducers.ts | 267 ++++++++++++++++++ .../demo/tsconfig.json | 3 + .../redux-devtools-inspector/package.json | 7 +- .../src/DevtoolsInspector.tsx | 45 ++- .../redux-devtools-inspector/tsconfig.json | 3 +- .../tsconfig.webpack.json | 4 - yarn.lock | 109 ++++++- 19 files changed, 586 insertions(+), 246 deletions(-) create mode 100644 packages/redux-devtools-inspector/demo/config/tsconfig.json rename packages/redux-devtools-inspector/{ => demo/config}/webpack.config.ts (74%) rename packages/redux-devtools-inspector/demo/src/js/{DemoApp.jsx => DemoApp.tsx} (67%) rename packages/redux-devtools-inspector/demo/src/js/{DevTools.jsx => DevTools.tsx} (74%) delete mode 100644 packages/redux-devtools-inspector/demo/src/js/getOptions.js create mode 100644 packages/redux-devtools-inspector/demo/src/js/getOptions.ts rename packages/redux-devtools-inspector/demo/src/js/{index.js => index.tsx} (68%) delete mode 100644 packages/redux-devtools-inspector/demo/src/js/reducers.js create mode 100644 packages/redux-devtools-inspector/demo/src/js/reducers.ts delete mode 100644 packages/redux-devtools-inspector/tsconfig.webpack.json diff --git a/package.json b/package.json index 78acddc6..41b77f38 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "@babel/cli": "^7.10.5", "@babel/core": "^7.11.1", "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-transform-runtime": "^7.11.0", "@babel/preset-env": "^7.11.0", "@babel/preset-typescript": "^7.10.4", "@types/jest": "^26.0.9", @@ -22,6 +23,7 @@ "eslint-plugin-jest": "^23.20.0", "eslint-plugin-prettier": "^3.1.4", "eslint-plugin-react": "^7.20.5", + "fork-ts-checker-webpack-plugin": "^5.1.0", "html-webpack-plugin": "^4.3.0", "jest": "^26.2.2", "lerna": "^3.22.1", diff --git a/packages/react-dock/tsconfig.webpack.json b/packages/react-dock/tsconfig.webpack.json index d030bb04..86bc1286 100644 --- a/packages/react-dock/tsconfig.webpack.json +++ b/packages/react-dock/tsconfig.webpack.json @@ -1,7 +1,4 @@ { "extends": "../../tsconfig.base.json", - "compilerOptions": { - "js" - }, "include": ["webpack.config.ts"] } diff --git a/packages/redux-devtools-inspector/.babelrc b/packages/redux-devtools-inspector/.babelrc index 0d42ef44..b5210a00 100644 --- a/packages/redux-devtools-inspector/.babelrc +++ b/packages/redux-devtools-inspector/.babelrc @@ -1,8 +1,7 @@ { - "presets": [ - "@babel/preset-env", - "@babel/preset-react", - "@babel/preset-typescript" - ], - "plugins": ["@babel/plugin-proposal-class-properties"] + "presets": ["@babel/env", "@babel/preset-react", "@babel/preset-typescript"], + "plugins": [ + "@babel/plugin-proposal-class-properties", + "@babel/plugin-transform-runtime" + ] } diff --git a/packages/redux-devtools-inspector/.eslintrc.js b/packages/redux-devtools-inspector/.eslintrc.js index 8cc0f569..7c9be3fd 100644 --- a/packages/redux-devtools-inspector/.eslintrc.js +++ b/packages/redux-devtools-inspector/.eslintrc.js @@ -18,11 +18,11 @@ module.exports = { }, }, { - files: ['webpack.config.ts'], + files: ['demo/config/webpack.config.ts'], extends: '../../eslintrc.ts.base.json', parserOptions: { tsconfigRootDir: __dirname, - project: ['./tsconfig.webpack.json'], + project: ['./demo/config/tsconfig.json'], }, }, ], diff --git a/packages/redux-devtools-inspector/demo/config/tsconfig.json b/packages/redux-devtools-inspector/demo/config/tsconfig.json new file mode 100644 index 00000000..7fd5a7b8 --- /dev/null +++ b/packages/redux-devtools-inspector/demo/config/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "resolveJsonModule": true + }, + "include": ["webpack.config.ts"] +} diff --git a/packages/redux-devtools-inspector/webpack.config.ts b/packages/redux-devtools-inspector/demo/config/webpack.config.ts similarity index 74% rename from packages/redux-devtools-inspector/webpack.config.ts rename to packages/redux-devtools-inspector/demo/config/webpack.config.ts index d383d031..c7b08800 100644 --- a/packages/redux-devtools-inspector/webpack.config.ts +++ b/packages/redux-devtools-inspector/demo/config/webpack.config.ts @@ -1,9 +1,9 @@ import * as path from 'path'; import * as webpack from 'webpack'; -import * as HtmlWebpackPlugin from 'html-webpack-plugin'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; import { CleanWebpackPlugin } from 'clean-webpack-plugin'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const pkg = require('./package.json'); +import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; +import pkg from '../../package.json'; const isProduction = process.env.NODE_ENV === 'production'; @@ -26,14 +26,14 @@ module.exports = { test: /\.(js|ts)x?$/, loader: 'babel-loader', include: [ - path.join(__dirname, 'src'), - path.join(__dirname, 'demo/src/js'), + path.join(__dirname, '../../src'), + path.join(__dirname, '../src/js'), ], }, ], }, resolve: { - extensions: ['*', '.js', '.jsx'], + extensions: ['.js', '.jsx', '.ts', '.tsx'], }, plugins: [ new CleanWebpackPlugin(), @@ -42,6 +42,11 @@ module.exports = { template: 'demo/src/index.html', package: pkg, }), + new ForkTsCheckerWebpackPlugin({ + typescript: { + configFile: 'demo/tsconfig.json', + }, + }), ].concat(isProduction ? [] : [new webpack.HotModuleReplacementPlugin()]), devServer: isProduction ? {} diff --git a/packages/redux-devtools-inspector/demo/src/js/DemoApp.jsx b/packages/redux-devtools-inspector/demo/src/js/DemoApp.tsx similarity index 67% rename from packages/redux-devtools-inspector/demo/src/js/DemoApp.jsx rename to packages/redux-devtools-inspector/demo/src/js/DemoApp.tsx index af3103ab..50061058 100644 --- a/packages/redux-devtools-inspector/demo/src/js/DemoApp.jsx +++ b/packages/redux-devtools-inspector/demo/src/js/DemoApp.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { CSSProperties } from 'react'; import { connect } from 'react-redux'; import pkg from '../../../package.json'; import Button from 'react-bootstrap/Button'; @@ -8,12 +8,45 @@ import FormLabel from 'react-bootstrap/FormLabel'; import Form from 'react-bootstrap/Form'; import Col from 'react-bootstrap/Col'; import InputGroup from 'react-bootstrap/InputGroup'; +import Row from 'react-bootstrap/Row'; import * as base16 from 'base16'; -import * as inspectorThemes from '../../../src/themes'; -import getOptions from './getOptions'; import { push as pushRoute } from 'connected-react-router'; +import { Path } from 'history'; +import * as inspectorThemes from '../../../src/themes'; +import getOptions, { Options } from './getOptions'; +import { + AddFunctionAction, + AddHugeObjectAction, + AddImmutableMapAction, + AddIteratorAction, + AddNativeMapAction, + AddRecursiveAction, + AddSymbolAction, + ChangeImmutableNestedAction, + ChangeNestedAction, + DemoAppState, + HugePayloadAction, + IncrementAction, + PopAction, + PushAction, + PushHugeArrayAction, + ReplaceAction, + ShuffleArrayAction, + TimeoutUpdateAction, + ToggleTimeoutUpdateAction, +} from './reducers'; -const styles = { +const styles: { + wrapper: CSSProperties; + header: CSSProperties; + content: CSSProperties; + buttons: CSSProperties; + muted: CSSProperties; + button: CSSProperties; + links: CSSProperties; + link: CSSProperties; + input: CSSProperties; +} = { wrapper: { height: '100vh', width: '80%', @@ -57,18 +90,21 @@ const styles = { const themeOptions = [ ...Object.keys(inspectorThemes).map((value) => ({ value, - label: inspectorThemes[value].scheme, + label: inspectorThemes[value as keyof typeof inspectorThemes].scheme, })), null, ...Object.keys(base16) - .map((value) => ({ value, label: base16[value].scheme })) + .map((value) => ({ + value, + label: base16[value as keyof typeof base16].scheme, + })) .filter((opt) => opt.label), ]; const ROOT = process.env.NODE_ENV === 'production' ? '/redux-devtools-inspector/' : '/'; -function buildUrl(options) { +function buildUrl(options: Options) { return ( `${ROOT}?` + [ @@ -82,7 +118,32 @@ function buildUrl(options) { ); } -class DemoApp extends React.Component { +interface Props + extends Omit { + toggleTimeoutUpdate: (timeoutUpdateEnabled: boolean) => void; + timeoutUpdate: () => void; + increment: () => void; + push: () => void; + pop: () => void; + replace: () => void; + changeNested: () => void; + pushHugeArray: () => void; + addIterator: () => void; + addHugeObject: () => void; + addRecursive: () => void; + addNativeMap: () => void; + addImmutableMap: () => void; + changeImmutableNested: () => void; + hugePayload: () => void; + addFunction: () => void; + addSymbol: () => void; + shuffleArray: () => void; + pushRoute: (path: Path) => void; +} + +class DemoApp extends React.Component { + timeout?: number; + render() { const options = getOptions(this.props.router.location); @@ -98,8 +159,8 @@ class DemoApp extends React.Component {
-
- + + Theme: @@ -115,7 +176,7 @@ class DemoApp extends React.Component {