diff --git a/.eslintrc b/.eslintrc index 54031e45..5fb449d3 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,15 +6,22 @@ }, "extends": [ "standard", + "plugin:@typescript-eslint/recommended", "plugin:vue/recommended" ], + "parser": "vue-eslint-parser", "parserOptions": { - "parser": "@babel/eslint-parser", + "parser": "@typescript-eslint/parser", "ecmaVersion": 9, "sourceType": "module", "requireConfigFile": false }, + "plugins": [ + "@typescript-eslint" + ], "rules": { + "space-infix-ops": "off", + "object-curly-newline": "off", "indent": [ "error", 3, @@ -69,6 +76,20 @@ "max": 1 } } - ] + ], + "@typescript-eslint/member-delimiter-style": [ + "warn", + { + "multiline": { + "delimiter": "semi", + "requireLast": true + }, + "singleline": { + "delimiter": "semi", + "requireLast": false + } + } + ], + "@typescript-eslint/no-var-requires": "off" } } \ No newline at end of file diff --git a/package.json b/package.json index 68bbe711..b8396b8e 100644 --- a/package.json +++ b/package.json @@ -134,6 +134,12 @@ "devDependencies": { "@babel/eslint-parser": "^7.15.7", "@babel/preset-env": "^7.15.8", + "@babel/preset-typescript": "^7.16.7", + "@types/better-sqlite3": "^7.5.0", + "@types/node": "^17.0.23", + "@types/pg": "^8.6.5", + "@typescript-eslint/eslint-plugin": "^5.18.0", + "@typescript-eslint/parser": "^5.18.0", "all-contributors-cli": "^6.20.0", "babel-loader": "^8.2.3", "chalk": "^4.1.2", @@ -163,7 +169,10 @@ "stylelint-config-standard": "^22.0.0", "stylelint-scss": "^3.21.0", "tree-kill": "^1.2.2", + "ts-loader": "^9.2.8", + "typescript": "^4.6.3", "vue": "^2.6.14", + "vue-eslint-parser": "^8.3.0", "vue-loader": "^15.9.8", "vue-template-compiler": "^2.6.14", "webpack": "^5.60.0", diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..df9a8d8c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "include": ["./src/main/**/*", "src/common/interfaces/antares.ts"], + "compilerOptions": { + "baseUrl": "./", + "target": "es2021", + "allowJs": true, + "moduleResolution": "node12", + "noImplicitAny": true, + "types": [ + "node" + ], + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "removeComments": true, + "paths": { + "common/*": ["./src/common/*"] + } + } +} \ No newline at end of file diff --git a/webpack.main.config.js b/webpack.main.config.js index dca9bb05..88bacb36 100644 --- a/webpack.main.config.js +++ b/webpack.main.config.js @@ -13,7 +13,7 @@ module.exports = { // Main mode: process.env.NODE_ENV, devtool: isDevMode ? 'eval-source-map' : false, entry: { - main: path.join(__dirname, './src/main/main.js') + main: path.join(__dirname, './src/main/main.ts') }, target: 'electron-main', output: { @@ -28,7 +28,7 @@ module.exports = { // Main }, externals: externals.filter((d) => !whiteListedModules.includes(d)), resolve: { - extensions: ['.js', '.json'], + extensions: ['.js', '.json', '.ts'], alias: { src: path.join(__dirname, 'src/'), common: path.resolve(__dirname, 'src/common') @@ -56,6 +56,11 @@ module.exports = { // Main name: '[path][name].[ext]' } }, + { + test: /\.ts$/, + exclude: /node_modules/, + loader: 'ts-loader' + }, { test: /\.js$/, exclude: /node_modules/,