diff --git a/.eslintrc.js b/.eslintrc.js index 67ad652..7b9e7e4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -10,12 +10,10 @@ module.exports = { 'airbnb-base', 'plugin:prettier/recommended', // We added this 'plugin:cypress/recommended', - // 'plugin:@typescript-eslint/recommended', // Use recommended rules from the @typescript-eslint/eslint-plugin ], parser: '@typescript-eslint/parser', // Specify the TypeScript parser parserOptions: { - // parser: 'babel-eslint', ecmaVersion: 13, sourceType: 'module', }, @@ -25,10 +23,11 @@ module.exports = { node: { extensions: ['.js', '.jsx', '.ts', '.tsx'], }, + typescript: {}, }, }, rules: { - 'no-console': 'warn', + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', camelcase: ['error', { properties: 'never', ignoreDestructuring: true }], 'no-param-reassign': ['error', { props: false }], @@ -47,7 +46,7 @@ module.exports = { 'warn', 'ignorePackages', { - js: 'never', + js: 'off', jsx: 'never', ts: 'never', tsx: 'never', diff --git a/app/package.json b/app/package.json index 4b11853..677f708 100644 --- a/app/package.json +++ b/app/package.json @@ -37,10 +37,11 @@ "@vitejs/plugin-vue": "^4.5.2", "@vue/compiler-sfc": "^3.3.13", "autoprefixer": "^10.4.14", + "eslint-import-resolver-typescript": "^3.6.1", "postcss": "^8.4.31", "tailwindcss": "^3.3.3", - "vite": "^4.5.2", "typescript": "^5.3.3", + "vite": "^4.5.2", "vue-tsc": "^1.8.25" } } diff --git a/package.json b/package.json index 4b6a856..89777d4 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-cypress": "^2.15.1", "eslint-plugin-import": "^2.29.0", + "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-vue": "^9.15.1", "prettier": "^3.0.0", diff --git a/server/src/config.js b/server/src/config.js index d532306..5473d57 100644 --- a/server/src/config.js +++ b/server/src/config.js @@ -1,8 +1,8 @@ import validator from 'validator' +import dotenv from 'dotenv' import { get } from './utils/env.js' // Import dotenv and load ../.env -import dotenv from 'dotenv' dotenv.config({ path: '../.env' }) function getTrustProxies(key) { diff --git a/tsconfig.json b/tsconfig.json index cf2d1ac..3695271 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,33 +1,4 @@ { - // "compilerOptions": { - // "target": "ESNext", - // "module": "ESNext", - // "moduleResolution": "Bundler", - // "strict": true, - // "moduleDetection": "force", - // "skipLibCheck": true, - // "esModuleInterop": true, - // "declaration": true, - // "sourceMap": true, - // "allowJs": true, - // "resolveJsonModule": true, - // "isolatedModules": true, - // "lib": ["ESNext"] - // } - // "compilerOptions": { - // "esModuleInterop": true, - // "skipLibCheck": true, - // "target": "ESNext", - // "resolveJsonModule": true, - // "isolatedModules": true, - // "moduleDetection": "force", - // "strict": false, - // "noUncheckedIndexedAccess": true, - // "moduleResolution": "NodeNext", - // "module": "NodeNext", - // "noEmit": true, - // "lib": ["es2022", "dom", "dom.iterable"] - // } "compilerOptions": { "target": "ESNext", // 要編譯成的 JS 目標版本 "module": "NodeNext", // 要編譯成的 module diff --git a/yarn.lock b/yarn.lock index 871e068..8d2f1a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3213,6 +3213,14 @@ eslint-plugin-cypress@^2.15.1: dependencies: globals "^13.20.0" +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + eslint-plugin-import@^2.29.0: version "2.29.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" @@ -3236,6 +3244,18 @@ eslint-plugin-import@^2.29.0: semver "^6.3.1" tsconfig-paths "^3.14.2" +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + eslint-plugin-prettier@^4.0.0: version "4.2.1" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" @@ -3272,6 +3292,18 @@ eslint-scope@^7.1.1, eslint-scope@^7.2.0: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" @@ -4164,6 +4196,11 @@ ignore-by-default@^1.0.1: resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== +ignore@^5.1.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + ignore@^5.2.0: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" @@ -6299,6 +6336,11 @@ regexp.prototype.flags@^1.5.1: define-properties "^1.2.0" set-function-name "^2.0.0" +regexpp@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + request-progress@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" @@ -6343,7 +6385,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.1.7, resolve@^1.22.2, resolve@^1.22.4: +resolve@^1.1.7, resolve@^1.10.1, resolve@^1.22.2, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -6453,7 +6495,7 @@ safe-stable-stringify@^2.3.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.0.0, semver@^6.1.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==