Refactor project for typescript support

Update and move tsconfig.json from client/ to the root folder.
Update docker-compose.yml and .dockerignore.
Update client/webpack.config.js for better typescript support.

Change-Id: I3b0cc88f7c828dc5bfa5ac129352bf3d40189af3
diff --git a/client/webpack.config.js b/client/webpack.config.js
index 7da8fb5..f5aeab5 100644
--- a/client/webpack.config.js
+++ b/client/webpack.config.js
@@ -1,25 +1,33 @@
 'use strict'
 
-import { fileURLToPath } from 'url';
-import { dirname } from 'path';
+import {dirname, resolve} from 'path'
+import dotenv from 'dotenv'
+import HtmlWebpackPlugin from 'html-webpack-plugin'
+import CopyWebpackPlugin from 'copy-webpack-plugin'
+import webpack from 'webpack'
+import {fileURLToPath} from 'url';
+
 const __filename = fileURLToPath(import.meta.url);
 const __dirname = dirname(__filename);
 
-import dotenv from 'dotenv'
 dotenv.config({ path: resolve(__dirname, '..', '.env') })
 
-import { resolve } from 'path'
-import HtmlWebpackPlugin from 'html-webpack-plugin'
-import CopyWebpackPlugin from 'copy-webpack-plugin'
 const mode = process.env.NODE_ENV || 'development'
 
 let entry = [resolve(__dirname, 'src', 'index.js')]
 let plugins = [
-  new HtmlWebpackPlugin({ template: '!!raw-loader!' + resolve(__dirname, 'src', 'index.ejs'), filename: 'index.ejs' }),
+  new HtmlWebpackPlugin({
+    template: '!!raw-loader!' + resolve(__dirname, 'src', 'index.ejs'),
+    filename: 'index.ejs'
+  }),
   new CopyWebpackPlugin({
-    patterns: [{ from: resolve(__dirname, 'public'), to: resolve(__dirname, 'dist') }]
+    patterns: [{
+      from: resolve(__dirname, 'public'),
+      to: resolve(__dirname, 'dist')
+    }]
   })
 ]
+
 let devtool = undefined
 let babelLoaderPlugins = ["@babel/plugin-transform-runtime"]
 
@@ -45,10 +53,10 @@
   module: {
     rules: [
       {
-        // test: /\.jsx?/,
-        test: /\.(js|jsx|ts|tsx)?$/,
+        test: /\.[tj]sx?$/,
         resolve: {
           fullySpecified: false,
+          extensions: ['.ts', '.tsx', '.js', '.jsx', '.json'],
         },
         exclude: /node_modules/,
         use: {
@@ -69,6 +77,9 @@
                   runtime: "automatic",
                 },
               ],
+              [
+                "@babel/preset-typescript"
+              ],
             ],
           },
         },
@@ -94,4 +105,4 @@
     extensions: [".ts", ".tsx", ".js", ".jsx"],
   },
   plugins,
-};
\ No newline at end of file
+};