From f9c99350213325b6bf34853528d5c883f5033aad Mon Sep 17 00:00:00 2001 From: mshchukin Date: Mon, 11 Sep 2023 12:38:32 +0300 Subject: [PATCH 1/2] homework 9 js -> ts --- package-lock.json | 61 +++++++--- package.json | 6 + src/components/{App.js => App.tsx} | 25 ++-- src/components/Loading.js | 15 --- src/components/Loading.tsx | 21 ++++ src/components/{Nav.js => Nav.tsx} | 6 +- src/components/battle/Battle.js | 62 ---------- src/components/battle/Battle.tsx | 87 ++++++++++++++ src/components/battle/BattleResult.js | 49 -------- src/components/battle/BattleResult.tsx | 71 +++++++++++ .../{PlayerDetails.js => PlayerDetails.tsx} | 28 +++-- src/components/battle/PlayerInput.js | 43 ------- src/components/battle/PlayerInput.tsx | 51 ++++++++ src/components/battle/PlayerPreview.js | 14 --- src/components/battle/PlayerPreview.tsx | 15 +++ src/components/battle/PlayerPreviewProps.ts | 6 + src/components/home/Home.js | 25 ---- src/components/home/Home.tsx | 27 +++++ src/components/home/LeaderboardTable.js | 32 ----- src/components/home/LeaderboardTable.tsx | 42 +++++++ ...nguageSelector.js => LanguageSelector.tsx} | 12 +- src/components/popular/Popular.js | 50 -------- src/components/popular/Popular.tsx | 47 ++++++++ .../{Repositories.js => Repositories.tsx} | 6 +- src/components/redux/RootState.ts | 9 ++ src/components/redux/battle/BattleState.ts | 9 ++ src/components/redux/battle/battle.actions.js | 25 ---- src/components/redux/battle/battle.actions.ts | 26 +++++ ...attle.constants.js => battle.constants.ts} | 0 .../{battle.reducer.js => battle.reducer.ts} | 3 +- src/components/redux/home/Profiles.ts | 3 + .../home/{home.actions.js => home.actions.ts} | 2 +- .../{home.constants.js => home.constants.ts} | 0 .../home/{home.reducer.js => home.reducer.ts} | 5 +- .../home/{home.thunks.js => home.thunks.ts} | 2 +- src/components/redux/index.js | 7 -- src/components/redux/index.ts | 14 +++ src/components/redux/popular/PopularState.ts | 6 + ...{popular.actions.js => popular.actions.ts} | 8 +- ...ular.constants.js => popular.constants.ts} | 0 ...{popular.reducer.js => popular.reducer.ts} | 5 +- src/components/redux/root.reducer.js | 10 -- src/index.js | 17 --- src/index.tsx | 12 ++ src/reportWebVitals.js | 13 --- src/utils/{api.js => api.ts} | 20 ++-- tsconfig.json | 110 ++++++++++++++++++ 47 files changed, 674 insertions(+), 433 deletions(-) rename src/components/{App.js => App.tsx} (60%) delete mode 100644 src/components/Loading.js create mode 100644 src/components/Loading.tsx rename src/components/{Nav.js => Nav.tsx} (76%) delete mode 100644 src/components/battle/Battle.js create mode 100644 src/components/battle/Battle.tsx delete mode 100644 src/components/battle/BattleResult.js create mode 100644 src/components/battle/BattleResult.tsx rename src/components/battle/{PlayerDetails.js => PlayerDetails.tsx} (53%) delete mode 100644 src/components/battle/PlayerInput.js create mode 100644 src/components/battle/PlayerInput.tsx delete mode 100644 src/components/battle/PlayerPreview.js create mode 100644 src/components/battle/PlayerPreview.tsx create mode 100644 src/components/battle/PlayerPreviewProps.ts delete mode 100644 src/components/home/Home.js create mode 100644 src/components/home/Home.tsx delete mode 100644 src/components/home/LeaderboardTable.js create mode 100644 src/components/home/LeaderboardTable.tsx rename src/components/popular/{LanguageSelector.js => LanguageSelector.tsx} (53%) delete mode 100644 src/components/popular/Popular.js create mode 100644 src/components/popular/Popular.tsx rename src/components/popular/{Repositories.js => Repositories.tsx} (86%) create mode 100644 src/components/redux/RootState.ts create mode 100644 src/components/redux/battle/BattleState.ts delete mode 100644 src/components/redux/battle/battle.actions.js create mode 100644 src/components/redux/battle/battle.actions.ts rename src/components/redux/battle/{battle.constants.js => battle.constants.ts} (100%) rename src/components/redux/battle/{battle.reducer.js => battle.reducer.ts} (94%) create mode 100644 src/components/redux/home/Profiles.ts rename src/components/redux/home/{home.actions.js => home.actions.ts} (68%) rename src/components/redux/home/{home.constants.js => home.constants.ts} (100%) rename src/components/redux/home/{home.reducer.js => home.reducer.ts} (71%) rename src/components/redux/home/{home.thunks.js => home.thunks.ts} (86%) delete mode 100644 src/components/redux/index.js create mode 100644 src/components/redux/index.ts create mode 100644 src/components/redux/popular/PopularState.ts rename src/components/redux/popular/{popular.actions.js => popular.actions.ts} (62%) rename src/components/redux/popular/{popular.constants.js => popular.constants.ts} (100%) rename src/components/redux/popular/{popular.reducer.js => popular.reducer.ts} (85%) delete mode 100644 src/components/redux/root.reducer.js delete mode 100644 src/index.js create mode 100644 src/index.tsx delete mode 100644 src/reportWebVitals.js rename src/utils/{api.js => api.ts} (72%) create mode 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json index 9f8c976..8a4d1bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,9 +11,14 @@ "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@mui/material": "^5.14.2", + "@reduxjs/toolkit": "^1.9.5", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "@types/jest": "^29.5.4", + "@types/node": "^20.5.9", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", "axios": "^1.4.0", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -23,6 +28,7 @@ "redux": "^4.2.1", "redux-logger": "^3.0.6", "redux-thunk": "^2.4.2", + "typescript": "^5.2.2", "web-vitals": "^2.1.4" } }, @@ -3661,6 +3667,29 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@reduxjs/toolkit": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.9.5.tgz", + "integrity": "sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ==", + "dependencies": { + "immer": "^9.0.21", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", + "reselect": "^4.1.8" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.0.2" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, "node_modules/@remix-run/router": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.8.0.tgz", @@ -4483,9 +4512,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz", - "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==", + "version": "29.5.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", + "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -4735,9 +4764,9 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "node_modules/@types/node": { - "version": "20.4.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.4.tgz", - "integrity": "sha512-CukZhumInROvLq3+b5gLev+vgpsIqC2D0deQr/yS1WnxvmYLlJXZpaQrQiseMY+6xusl79E04UjWoqyr+t1/Ew==" + "version": "20.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz", + "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -4770,9 +4799,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/react": { - "version": "18.2.16", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.16.tgz", - "integrity": "sha512-LLFWr12ZhBJ4YVw7neWLe6Pk7Ey5R9OCydfuMsz1L8bZxzaawJj2p06Q8/EFEHDeTBQNFLF62X+CG7B2zIyu0Q==", + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", + "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -15391,6 +15420,11 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, + "node_modules/reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" + }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", @@ -16984,16 +17018,15 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "peer": true, + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/unbox-primitive": { diff --git a/package.json b/package.json index 71e4df7..55849db 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,14 @@ "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@mui/material": "^5.14.2", + "@reduxjs/toolkit": "^1.9.5", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "@types/jest": "^29.5.4", + "@types/node": "^20.5.9", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", "axios": "^1.4.0", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -18,6 +23,7 @@ "redux": "^4.2.1", "redux-logger": "^3.0.6", "redux-thunk": "^2.4.2", + "typescript": "^5.2.2", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/src/components/App.js b/src/components/App.tsx similarity index 60% rename from src/components/App.js rename to src/components/App.tsx index bb2402c..40bc46a 100644 --- a/src/components/App.js +++ b/src/components/App.tsx @@ -1,33 +1,34 @@ -import '../index.css' -import {createBrowserRouter, RouterProvider} from "react-router-dom"; +import '../index.css'; +import { createBrowserRouter, RouterProvider } from "react-router-dom"; import Home from "./home/Home"; import Popular from "./popular/Popular"; import Battle from "./battle/Battle"; import Nav from "./Nav"; import BattleResult from "./battle/BattleResult"; -import {Provider} from "react-redux"; +import { Provider } from "react-redux"; import store from "./redux"; +import React from "react"; const router = createBrowserRouter([ { path: "/", - element: