From 68777ec421d41be0da27013afd4165ae7d658d26 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Mon, 13 Jul 2026 23:17:25 +0530 Subject: refactor: added linting with esling and also resolved warnings for it --- eslint.config.js | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 eslint.config.js (limited to 'eslint.config.js') diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..4f528f4 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,96 @@ +import js from "@eslint/js"; +import stylistic from "@stylistic/eslint-plugin"; +import importX from "eslint-plugin-import-x"; +import globals from "globals"; +import tseslint from "typescript-eslint"; + +export default tseslint.config( + { + ignores: [ + "**/dist/**", + "**/node_modules/**", + "**/*.wasm.js", + "**/static/**" + ] + }, + + js.configs.recommended, + + ...tseslint.configs.strictTypeChecked, + ...tseslint.configs.stylisticTypeChecked, + + stylistic.configs.recommended, + + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.webextensions + }, + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname + } + }, + + plugins: { + "import-x": importX + }, + + rules: { + "@stylistic/indent": ["error", "tab"], + "@stylistic/quotes": ["error", "double"], + "@stylistic/semi": ["error", "always"], + "@stylistic/comma-dangle": ["error", "never"], + "@stylistic/max-len": ["warn", { code: 120, ignoreUrls: true, ignoreStrings: true, ignoreTemplateLiterals: true }], + "@stylistic/arrow-parens": ["error", "always"], + "@stylistic/brace-style": ["error", "1tbs", { allowSingleLine: true }], + "@stylistic/no-multiple-empty-lines": ["error", { max: 1, maxEOF: 1 }], + "@stylistic/no-trailing-spaces": "error", + "@stylistic/eol-last": ["error", "always"], + "@stylistic/no-tabs": "off", + "@stylistic/space-before-function-paren": ["error", "never"], + "@stylistic/member-delimiter-style": ["error", { multiline: { delimiter: "semi", requireLast: false }, singleline: { delimiter: "semi", requireLast: false } }], + + "@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_", destructuredArrayIgnorePattern: "^_" }], + "@typescript-eslint/explicit-function-return-type": ["warn", { allowExpressions: true, allowTypedFunctionExpressions: true }], + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/prefer-readonly": "warn", + "@typescript-eslint/consistent-type-definitions": ["error", "type"], + "@typescript-eslint/method-signature-style": ["error", "property"], + + "no-console": "warn", + "no-alert": "error", + + "import-x/order": ["error", { + "groups": ["builtin", "external", "internal", ["parent", "sibling"], "index"], + "newlines-between": "always", + "alphabetize": { order: "asc", orderImportKind: "asc" } + }], + "import-x/no-duplicates": "error", + "import-x/first": "error", + "import-x/newline-after-import": "error" + } + }, + + { + files: ["**/*.js"], + ...tseslint.configs.disableTypeChecked + }, + + { + files: ["webpack.config.js", "config/**/*.js"], + languageOptions: { + globals: { + ...globals.node, + ROOT_DIR: "writable", + CONFIG_DIR: "writable", + SOURCE_DIR: "writable", + production: "writable" + } + }, + rules: { + "no-console": "off" + } + } +); -- cgit v1.2.3