diff --git a/.eslintignore b/.eslintignore index 65bea899..b8937bc4 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,6 +7,3 @@ build coverage node_modules __snapshots__ - -# Ignore until TS linting is configured in redux-devtools package -packages/redux-devtools/index.d.ts diff --git a/package.json b/package.json index 41b77f38..c21a3c04 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,11 @@ "raw-loader": "^4.0.1", "rimraf": "^3.0.2", "style-loader": "^1.2.1", + "stylelint": "^13.6.1", + "stylelint-config-prettier": "^8.0.2", + "stylelint-config-standard": "^20.0.0", + "stylelint-config-styled-components": "^0.1.1", + "stylelint-processor-styled-components": "^1.10.0", "ts-jest": "^26.2.0", "ts-node": "^9.0.0", "typescript": "^3.9.7", @@ -40,14 +45,11 @@ }, "scripts": { "lerna": "lerna", - "build": "lerna run prepare --since master --stream --sort -- --scripts-prepend-node-path", "build:all": "lerna run build", "publish": "lerna publish", "canary": "lerna publish --canary preminor --npm-tag alpha", "next": "lerna publish --bump prerelease --npm-tag next", - "lint": "eslint \"**/*.{js,jsx,ts,tsx}\" --cache", - "lint:fix": "eslint \"**/*.{js,jsx,ts,tsx}\" --fix --cache", - "lint:all": "eslint \"**/*.{js,jsx,ts,tsx}\"", + "lint:all": "lerna run lint", "prettify": "prettier --write .", "prettier:check": "prettier --check .", "test": "jest --onlyChanged", diff --git a/packages/d3-state-visualizer/CHANGELOG.md b/packages/d3-state-visualizer/CHANGELOG.md index 5936520d..8a689588 100644 --- a/packages/d3-state-visualizer/CHANGELOG.md +++ b/packages/d3-state-visualizer/CHANGELOG.md @@ -7,10 +7,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package d3-state-visualizer - - - - ## 1.3.3 (2020-08-14) **Note:** Version bump only for package d3-state-visualizer diff --git a/packages/d3-state-visualizer/examples/tree/CHANGELOG.md b/packages/d3-state-visualizer/examples/tree/CHANGELOG.md index 39e1dabd..924d357c 100644 --- a/packages/d3-state-visualizer/examples/tree/CHANGELOG.md +++ b/packages/d3-state-visualizer/examples/tree/CHANGELOG.md @@ -7,10 +7,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package d3-state-visualizer-tree-example - - - - ## 0.0.1 (2020-08-14) **Note:** Version bump only for package d3-state-visualizer-tree-example diff --git a/packages/devui/.babelrc b/packages/devui/.babelrc index 2d8ea82b..0d42ef44 100755 --- a/packages/devui/.babelrc +++ b/packages/devui/.babelrc @@ -1,7 +1,8 @@ { - "presets": ["@babel/preset-env", "@babel/preset-react"], - "plugins": [ - "@babel/plugin-proposal-class-properties", - "@babel/plugin-proposal-export-default-from" - ] + "presets": [ + "@babel/preset-env", + "@babel/preset-react", + "@babel/preset-typescript" + ], + "plugins": ["@babel/plugin-proposal-class-properties"] } diff --git a/packages/devui/.eslintignore b/packages/devui/.eslintignore new file mode 100644 index 00000000..a65b4177 --- /dev/null +++ b/packages/devui/.eslintignore @@ -0,0 +1 @@ +lib diff --git a/packages/devui/.eslintrc.js b/packages/devui/.eslintrc.js new file mode 100644 index 00000000..c7232941 --- /dev/null +++ b/packages/devui/.eslintrc.js @@ -0,0 +1,29 @@ +module.exports = { + extends: '../../.eslintrc', + overrides: [ + { + files: ['*.ts', '*.tsx'], + extends: '../../eslintrc.ts.react.base.json', + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./tsconfig.json'], + }, + }, + { + files: ['tests/*.ts', 'tests/*.tsx'], + extends: '../../eslintrc.ts.react.jest.base.json', + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./tests/tsconfig.json'], + }, + }, + { + files: ['.storybook/tests/*.ts', '.storybook/tests/*.tsx'], + extends: '../../eslintrc.ts.react.jest.base.json', + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./.storybook/tsconfig.json'], + }, + }, + ], +}; diff --git a/packages/devui/.storybook/main.js b/packages/devui/.storybook/main.ts similarity index 100% rename from packages/devui/.storybook/main.js rename to packages/devui/.storybook/main.ts diff --git a/packages/devui/.storybook/preview.js b/packages/devui/.storybook/preview.tsx similarity index 97% rename from packages/devui/.storybook/preview.js rename to packages/devui/.storybook/preview.tsx index 48e5eabc..47b89177 100644 --- a/packages/devui/.storybook/preview.js +++ b/packages/devui/.storybook/preview.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Container } from '../src'; import { listSchemes, listThemes } from '../src/utils/theme'; -import '../src/presets.js'; +import '../src/presets'; export const parameters = { actions: { argTypesRegex: '^on[A-Z].*' }, diff --git a/packages/devui/.storybook/tsconfig.json b/packages/devui/.storybook/tsconfig.json new file mode 100644 index 00000000..ca19def4 --- /dev/null +++ b/packages/devui/.storybook/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../../tsconfig.react.base.json", + "include": ["../src", "."] +} diff --git a/packages/devui/CHANGELOG.md b/packages/devui/CHANGELOG.md index c673e227..989d09c5 100644 --- a/packages/devui/CHANGELOG.md +++ b/packages/devui/CHANGELOG.md @@ -7,10 +7,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package devui - - - - # [1.0.0-5](https://github.com/reduxjs/redux-devtools/compare/devui@1.0.0-4...devui@1.0.0-5) (2020-08-14) **Note:** Version bump only for package devui diff --git a/packages/devui/jest.config.js b/packages/devui/jest.config.js new file mode 100644 index 00000000..afe39ab7 --- /dev/null +++ b/packages/devui/jest.config.js @@ -0,0 +1,4 @@ +module.exports = { + preset: 'ts-jest', + setupFilesAfterEnv: ['/tests/setup.ts'], +}; diff --git a/packages/devui/package.json b/packages/devui/package.json index 30a76941..b09a5b82 100755 --- a/packages/devui/package.json +++ b/packages/devui/package.json @@ -2,79 +2,69 @@ "name": "devui", "version": "1.0.0-6", "description": "Reusable React components for building DevTools monitors and apps.", + "homepage": "https://github.com/reduxjs/redux-devtools/tree/master/packages/devui", + "bugs": { + "url": "https://github.com/reduxjs/redux-devtools/issues" + }, + "license": "MIT", + "author": "Mihail Diordiev (https://github.com/zalmoxisus)", "files": [ "lib", "fonts" ], + "main": "lib/index.js", + "types": "lib/index.d.ts", "repository": { "type": "git", "url": "https://github.com/reduxjs/redux-devtools.git" }, - "author": "Mihail Diordiev (https://github.com/zalmoxisus)", - "license": "MIT", "scripts": { "start": "npm run storybook", - "build": "rimraf ./lib && babel ./src --out-dir ./lib --ignore tests,stories", - "lint:css": "stylelint \"./src/**/*.js\"", - "test:update": "npm run jest -- -u", - "test": "jest --no-cache", "storybook": "start-storybook -p 6006 -s ./fonts", "build-storybook": "build-storybook -s ./fonts", - "prepare": "npm run build", - "prepublishOnly": "npm run test && npm run build" - }, - "bugs": { - "url": "https://github.com/reduxjs/redux-devtools/issues" - }, - "homepage": "https://github.com/reduxjs/redux-devtools", - "devDependencies": { - "@babel/cli": "^7.10.5", - "@babel/core": "^7.11.1", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-decorators": "^7.10.5", - "@babel/plugin-proposal-export-default-from": "^7.10.4", - "@babel/plugin-transform-runtime": "^7.11.0", - "@babel/preset-env": "^7.11.0", - "@babel/preset-react": "^7.10.4", - "@storybook/addon-essentials": "^6.0.21", - "@storybook/react": "^6.0.21", - "babel-loader": "^8.1.0", - "enzyme": "^3.11.0", - "enzyme-adapter-react-16": "^1.15.3", - "enzyme-to-json": "^3.5.0", - "jest": "^26.2.2", - "jsdom": "^16.4.0", - "react": "^16.13.1", - "react-dom": "^16.13.1", - "react-is": "^16.13.1", - "react-test-renderer": "^16.13.1", - "rimraf": "^3.0.2", - "stylelint": "^13.6.1", - "stylelint-config-prettier": "^8.0.2", - "stylelint-config-standard": "^20.0.0", - "stylelint-config-styled-components": "^0.1.1", - "stylelint-processor-styled-components": "^1.10.0" - }, - "peerDependencies": { - "react": "^16.3.0" + "build": "npm run build:types && npm run build:js", + "build:types": "tsc --emitDeclarationOnly", + "build:js": "babel src --out-dir lib --extensions \".ts,.tsx\" --source-maps inline", + "clean": "rimraf lib", + "test": "jest", + "lint": "eslint . --ext .ts,.tsx", + "lint:fix": "eslint . --ext .ts,.tsx --fix", + "lint:css": "stylelint \"./src/**/*.js\"", + "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": { "base16": "^1.0.0", "codemirror": "^5.56.0", "color": "^3.1.2", + "hoist-non-react-statics": "^3.3.2", "prop-types": "^15.7.2", "react-icons": "^3.10.0", - "react-is": "^16.13.1", "react-jsonschema-form": "^1.8.1", "react-select": "^3.1.0", "redux-devtools-themes": "^1.0.0", "simple-element-resize-detector": "^1.3.0", "styled-components": "^5.1.1" }, - "jest": { - "setupFilesAfterEnv": [ - "/tests/setup.js" - ] + "devDependencies": { + "@storybook/addon-essentials": "^6.0.21", + "@storybook/react": "^6.0.21", + "@types/codemirror": "^0.0.97", + "@types/enzyme": "^3.10.5", + "@types/enzyme-adapter-react-16": "^1.0.6", + "@types/react-jsonschema-form": "^1.7.4", + "@types/react-select": "^3.0.19", + "csstype": "^3.0.2", + "enzyme": "^3.11.0", + "enzyme-adapter-react-16": "^1.15.3", + "enzyme-to-json": "^3.5.0", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "react-is": "^16.13.1" }, - "main": "lib/index.js" + "peerDependencies": { + "react": "^16.3.0" + } } diff --git a/packages/devui/src/Button/Button.js b/packages/devui/src/Button/Button.js deleted file mode 100644 index c172f998..00000000 --- a/packages/devui/src/Button/Button.js +++ /dev/null @@ -1,92 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import createStyledComponent from '../utils/createStyledComponent'; -import * as styles from './styles'; -import { commonStyle, tooltipStyle } from './styles/common'; - -const ButtonWrapper = createStyledComponent(styles, 'button'); -const TooltipWrapper = createStyledComponent(tooltipStyle); -const CommonWrapper = createStyledComponent(commonStyle); - -export default class Button extends Component { - shouldComponentUpdate(nextProps) { - return ( - nextProps.children !== this.props.children || - nextProps.disabled !== this.props.disabled || - nextProps.mark !== this.props.mark || - nextProps.size !== this.props.size || - nextProps.primary !== this.props.primary || - nextProps.tooltipPosition !== this.props.tooltipPosition || - nextProps.title !== this.props.title - ); - } - - onMouseUp = (e) => { - e.target.blur(); - }; - - render() { - const button = ( - - {this.props.children} - - ); - - const Wrapper = this.props.title ? TooltipWrapper : CommonWrapper; - return ( - - {button} - - ); - } -} - -Button.propTypes = { - children: PropTypes.any.isRequired, - title: PropTypes.string, - tooltipPosition: PropTypes.oneOf([ - 'top', - 'bottom', - 'left', - 'right', - 'bottom-left', - 'bottom-right', - 'top-left', - 'top-right', - ]), - onClick: PropTypes.func, - type: PropTypes.string, - disabled: PropTypes.bool, - primary: PropTypes.bool, - size: PropTypes.oneOf(['big', 'normal', 'small']), - mark: PropTypes.oneOf([ - false, - 'base08', - 'base09', - 'base0A', - 'base0B', - 'base0C', - 'base0D', - 'base0E', - 'base0F', - ]), - theme: PropTypes.object, -}; - -Button.defaultProps = { - tooltipPosition: 'top', -}; diff --git a/packages/devui/src/Button/Button.stories.js b/packages/devui/src/Button/Button.stories.tsx similarity index 86% rename from packages/devui/src/Button/Button.stories.js rename to packages/devui/src/Button/Button.stories.tsx index f87480f0..3ac47574 100644 --- a/packages/devui/src/Button/Button.stories.js +++ b/packages/devui/src/Button/Button.stories.tsx @@ -1,7 +1,9 @@ import React from 'react'; import styled from 'styled-components'; import { MdFiberManualRecord } from 'react-icons/md'; +import { Story } from '@storybook/react'; import Button from './'; +import { ButtonProps } from './Button'; export default { title: 'Button', @@ -16,7 +18,7 @@ const Container = styled.div` align-items: center; `; -const Template = (args) => ( +const Template: Story = (args) => (