Просмотр исходного кода

chore: Set-up eslint

eslint is a static analysis tool that tries to identify bugs and
mistakes in the code. We have quite a variety of code in this repo so
the config is a little complicated, but I've tried to make it clear.
It's found a *lot* of issues (over 1700), and while many of which will
not be actual problems, (it doesn't like us using window properties
without `window.`,) but some definitely are.
Sam Atkins 1 год назад
Родитель
Сommit
25b35769c5
3 измененных файлов с 709 добавлено и 136 удалено
  1. 106 0
      eslint.config.js
  2. 600 136
      package-lock.json
  3. 3 0
      package.json

+ 106 - 0
eslint.config.js

@@ -0,0 +1,106 @@
+import js from "@eslint/js";
+import globals from "globals";
+
+export default [
+    js.configs.recommended,
+
+    {
+        // Global ignores
+        ignores: [
+            "**/*.min.js",
+            "**/src/lib/**",
+            "**/dist/",
+            "packages/backend/src/public/assets/**",
+        ],
+    },
+    {
+        // Top-level and tools use Node
+        files: [
+            "tools/**/*.js",
+        ],
+        languageOptions: {
+            globals: {
+                ...globals.node,
+            }
+        }
+    },
+    {
+        // Back end
+        files: [
+            "packages/backend/**/*.js",
+            "dev-server.js",
+            "utils.js",
+        ],
+        languageOptions: {
+            globals: {
+                ...globals.node,
+                "kv": true,
+            }
+        }
+    },
+    {
+        // Front end
+        files: [
+            "index.js",
+            "initgui.js",
+            "src/**/*.js",
+            "packages/**/*.js",
+        ],
+        ignores: [
+            "packages/backend/**/*.js",
+        ],
+        languageOptions: {
+            globals: {
+                ...globals.browser,
+                ...globals.commonjs,
+                "puter": true,
+                "i18n": true,
+                "html_encode": true,
+                "html_decode": true,
+                "isMobile": true,
+                // Libraries
+                "saveAs": true,         // FileSaver
+                "iro": true,            // iro.js color picker
+                "$": true,              // jQuery
+                "jQuery": true,         // jQuery
+                "JSZip": true,          // JSZip
+                "_": true,              // lodash
+                "QRCode": true,         // qrcode
+                "io": true,             // socket.io
+                "timeago": true,        // timeago
+                "SelectionArea": true,  // viselect
+            }
+        }
+    },
+    {
+        // Tests
+        files: [
+            "**/test/**/*.js",
+        ],
+        languageOptions: {
+            globals: {
+                ...globals.mocha,
+            }
+        }
+    },
+    {
+        // Phoenix
+        files: [
+            "packages/phoenix/**/*.js",
+        ],
+        languageOptions: {
+            globals: {
+                ...globals.node,
+            }
+        }
+    },
+    {
+        // Global rule settings
+        rules: {
+            "no-prototype-builtins": "off", // Complains about any use of hasOwnProperty()
+            "no-unused-vars": "off", // Temporary, we just have a lot of these
+            "no-debugger": "warn",
+            "no-async-promise-executor": "off",  // We do this quite often and it's fine
+        }
+    },
+];

Разница между файлами не показана из-за своего большого размера
+ 600 - 136
package-lock.json


+ 3 - 0
package.json

@@ -11,10 +11,13 @@
     "lib": "lib"
   },
   "devDependencies": {
+    "@eslint/js": "^9.1.1",
     "chalk": "^4.1.0",
     "clean-css": "^5.3.2",
     "dotenv": "^16.4.5",
+    "eslint": "^9.1.1",
     "express": "^4.18.2",
+    "globals": "^15.0.0",
     "html-entities": "^2.3.3",
     "nodemon": "^3.1.0",
     "uglify-js": "^3.17.4",

Некоторые файлы не были показаны из-за большого количества измененных файлов