From d61f17a0f3952e80d68e1df18a56b960bb9f3827 Mon Sep 17 00:00:00 2001 From: Antonio De Lucreziis Date: Tue, 15 Nov 2022 02:53:16 +0100 Subject: [PATCH] Refactoring to Typescript... --- client/{App.jsx => App.tsx} | 14 +- client/components/Header.jsx | 11 +- client/components/Problem.jsx | 7 +- client/components/Solution.jsx | 6 +- client/entry-client.jsx | 4 - client/entry-client.tsx | 4 + client/{entry-server.jsx => entry-server.tsx} | 10 +- client/{hooks.jsx => hooks.tsx} | 0 client/pages/{Admin.jsx => Admin.tsx} | 3 +- client/pages/{Home.jsx => Home.tsx} | 2 + client/pages/{Login.jsx => Login.tsx} | 2 +- client/pages/{Problem.jsx => Problem.tsx} | 2 +- client/pages/{Profile.jsx => Profile.tsx} | 6 +- client/styles/main.scss | 25 +- index.html | 2 +- package.json | 20 +- pnpm-lock.yaml | 106 ++++++-- server.js => server.ts | 9 +- server/db/{database.js => database.ts} | 137 ++++++---- server/db/example-data.js | 7 - server/db/example-data.ts | 17 ++ server/middlewares.js | 47 ---- server/middlewares.ts | 61 +++++ server/routes.js | 170 ------------ server/routes.ts | 249 ++++++++++++++++++ shared/db-refs.ts | 25 ++ shared/model.ts | 62 +++++ shared/ssr.ts | 6 + tsconfig.json | 23 ++ tsconfig.node.json | 10 + 30 files changed, 702 insertions(+), 345 deletions(-) rename client/{App.jsx => App.tsx} (63%) delete mode 100644 client/entry-client.jsx create mode 100644 client/entry-client.tsx rename client/{entry-server.jsx => entry-server.tsx} (53%) rename client/{hooks.jsx => hooks.tsx} (100%) rename client/pages/{Admin.jsx => Admin.tsx} (91%) rename client/pages/{Home.jsx => Home.tsx} (97%) rename client/pages/{Login.jsx => Login.tsx} (97%) rename client/pages/{Problem.jsx => Problem.tsx} (98%) rename client/pages/{Profile.jsx => Profile.tsx} (87%) rename server.js => server.ts (91%) rename server/db/{database.js => database.ts} (50%) delete mode 100644 server/db/example-data.js create mode 100644 server/db/example-data.ts delete mode 100644 server/middlewares.js create mode 100644 server/middlewares.ts delete mode 100644 server/routes.js create mode 100644 server/routes.ts create mode 100644 shared/db-refs.ts create mode 100644 shared/model.ts create mode 100644 shared/ssr.ts create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json diff --git a/client/App.jsx b/client/App.tsx similarity index 63% rename from client/App.jsx rename to client/App.tsx index 77863e2..28dace6 100644 --- a/client/App.jsx +++ b/client/App.tsx @@ -1,14 +1,14 @@ import Router from 'preact-router' import { route } from 'preact-router' import { useEffect } from 'preact/hooks' -import { AdminPage } from './pages/Admin.jsx' +import { AdminPage } from './pages/Admin' -import { HomePage } from './pages/Home.jsx' -import { LoginPage } from './pages/Login.jsx' -import { ProblemPage } from './pages/Problem.jsx' -import { ProfilePage } from './pages/Profile.jsx' +import { HomePage } from './pages/Home' +import { LoginPage } from './pages/Login' +import { ProblemPage } from './pages/Problem' +import { ProfilePage } from './pages/Profile' -const Redirect = ({ to }) => { +const Redirect = ({ to }: { default: boolean; to: string }) => { useEffect(() => { route(to, true) }, []) @@ -20,7 +20,7 @@ const Redirect = ({ to }) => { ) } -export const App = ({ url }) => { +export const App = ({ url }: { url?: string }) => { return ( diff --git a/client/components/Header.jsx b/client/components/Header.jsx index 005a09c..bd08868 100644 --- a/client/components/Header.jsx +++ b/client/components/Header.jsx @@ -1,8 +1,9 @@ import { Link } from 'preact-router/match' +import { isAdministrator, USER_ROLE_ADMIN, USER_ROLE_MODERATOR } from '../../shared/constants.js' const ROLE_LABEL = { - admin: 'Admin', - moderator: 'Moderatore', + [USER_ROLE_ADMIN]: 'Admin', + [USER_ROLE_MODERATOR]: 'Moderatore', } export const Header = ({ user, noLogin }) => ( @@ -13,7 +14,7 @@ export const Header = ({ user, noLogin }) => (