UNPKG

@nivinjoseph/n-ject

Version:
592 lines (584 loc) 25.8 kB
import eslint from "@eslint/js"; import tsEslint from "typescript-eslint"; import { defineConfig } from "eslint/config"; import importPlugin from "eslint-plugin-import"; import tsParser from "@typescript-eslint/parser"; import stylistic from "@stylistic/eslint-plugin"; export default defineConfig( eslint.configs.recommended, tsEslint.configs.recommended, importPlugin.flatConfigs.recommended, { ignores: ["dist/**", "node_modules/**", "**/*.js", "**/*.map", "**/*d.ts"] }, { files: ["**/*.ts"], extends: [importPlugin.flatConfigs.recommended, importPlugin.flatConfigs.typescript], languageOptions: { parser: tsParser, ecmaVersion: "latest", sourceType: "module" }, settings: { "import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx"] }, // "import/resolver": { // "node": { // "extensions": [".js", ".jsx"], // "moduleDirectory": ["node_modules"] // } // }, "import/resolver": { node: { extensions: [".js", ".jsx", ".ts", ".tsx"] }, typescript: { // Point to your tsconfig if needed: project: "./tsconfig.json" } }, }, rules: { // "import/no-unresolved": "off", "import/no-extraneous-dependencies": ["error"] } }, { files: ["**/*.ts"], languageOptions: { parserOptions: { project: [ "./tsconfig.json" ], tsconfigRootDir: import.meta.dirname, projectService: true } }, plugins: { "@stylistic/ts": stylistic }, "rules": { "import/extensions": [ "error", "always", { "ts": "never", "js": "always" } ], // "quotes": "off", "quotes": [ "error", "double", { "allowTemplateLiterals": true } ], "no-eval": "error", "no-void": "error", "no-with": "error", "@typescript-eslint/adjacent-overload-signatures": "error", "@typescript-eslint/array-type": [ "error", { "default": "generic", "readonly": "generic" } ], // "@typescript-eslint/consistent-type-assertions": ["error", { // assertionStyle: "as", // objectLiteralTypeAssertions: "allow-as-parameter" // }], "@typescript-eslint/await-thenable": "error", "@typescript-eslint/ban-ts-comment": [ "error", { "ts-expect-error": "allow-with-description", "ts-ignore": "allow-with-description", "ts-nocheck": true, "ts-check": true } ], "@typescript-eslint/ban-tslint-comment": "error", "@typescript-eslint/no-empty-object-type": "error", "@typescript-eslint/no-unsafe-function-type": "error", "@typescript-eslint/no-wrapper-object-types": "off", "@typescript-eslint/no-restricted-types": [ "error", { "types": { "String": { "message": "Use string instead", "fixWith": "string" }, "Boolean": { "message": "Use boolean instead", "fixWith": "boolean" }, "Number": { "message": "Use number instead", "fixWith": "number" }, "Symbol": { "message": "Use symbol instead", "fixWith": "symbol" } } } ], "brace-style": "off", "@stylistic/ts/brace-style": [ "error", "allman", { "allowSingleLine": true } ], "@typescript-eslint/class-literal-property-style": [ "off", "getters" ], "comma-dangle": "off", "@stylistic/ts/comma-dangle": [ "error", { "arrays": "never", "objects": "only-multiline", "imports": "never", "exports": "never", "functions": "never", "enums": "only-multiline" } ], "default-param-last": "off", "@typescript-eslint/default-param-last": "error", "@typescript-eslint/explicit-function-return-type": "error", "@typescript-eslint/explicit-member-accessibility": "error", "@typescript-eslint/explicit-module-boundary-types": "error", "func-call-spacing": "off", "@stylistic/ts/function-call-spacing": [ "error", "never" ], "@stylistic/ts/member-delimiter-style": [ "error", { "multiline": { "delimiter": "semi", "requireLast": true }, "singleline": { "delimiter": "semi", "requireLast": true }, "multilineDetection": "brackets" } ], "@typescript-eslint/member-ordering": [ "error", { "default": [ // Index signature "signature", // Fields "private-static-field", "protected-static-field", "public-static-field", // "private-decorated-field", // "protected-decorated-field", // "public-decorated-field", "private-instance-field", "protected-instance-field", "public-instance-field", // "public-abstract-field", // "protected-abstract-field", // "private-abstract-field", // "private-field", // "protected-field", // "public-field", // "static-field", // "instance-field", // "abstract-field", // "decorated-field", // "field", // Getters // "public-static-get", // "protected-static-get", // "private-static-get", // "public-decorated-get", // "protected-decorated-get", // "private-decorated-get", // "public-instance-get", // "protected-instance-get", // "private-instance-get", // "public-abstract-get", // "protected-abstract-get", // "private-abstract-get", // "public-get", // "protected-get", // "private-get", // "static-get", // "instance-get", // "abstract-get", // "decorated-get", // "get", // Setters // "public-static-set", // "protected-static-set", // "private-static-set", // "public-decorated-set", // "protected-decorated-set", // "private-decorated-set", // "public-instance-set", // "protected-instance-set", // "private-instance-set", // "public-abstract-set", // "protected-abstract-set", // "private-abstract-set", // "public-set", // "protected-set", // "private-set", // "static-set", // "instance-set", // "abstract-set", // "decorated-set", // "set", // [ // "get", // "set" // ], [ "private-static-get", "private-static-set" ], [ "protected-static-get", "protected-static-set" ], [ "public-static-get", "public-static-set" ], [ "private-instance-get", "private-instance-set" ], [ "protected-instance-get", "protected-instance-set" ], [ "public-instance-get", "public-instance-set" ], // Constructors "public-constructor", "protected-constructor", "private-constructor", // "constructor", // Methods "public-static-method", "protected-static-method", "private-static-method", // "public-decorated-method", // "protected-decorated-method", // "private-decorated-method", "public-instance-method", "protected-instance-method", "private-instance-method" // "public-abstract-method", // "protected-abstract-method", // "private-abstract-method", // "public-method", // "protected-method", // "private-method", // "static-method", // "instance-method", // "abstract-method", // "decorated-method", // "method" ] } ], "@typescript-eslint/method-signature-style": [ "error", "method" ], "@typescript-eslint/naming-convention": [ "error", { "selector": "memberLike", "modifiers": [ "private" ], "format": [ "camelCase" ], "leadingUnderscore": "require" } ], "@typescript-eslint/no-confusing-non-null-assertion": "error", "@typescript-eslint/no-confusing-void-expression": [ "error", { "ignoreArrowShorthand": true } ], "no-dupe-class-members": "off", "@typescript-eslint/no-dupe-class-members": "error", "@typescript-eslint/no-duplicate-enum-values": "error", "no-duplicate-imports": "error", "no-empty-function": "off", "@typescript-eslint/no-empty-function": [ "error", { "allow": [ "private-constructors" ] } ], "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-extra-non-null-assertion": "error", "no-extra-parens": "off", "@stylistic/ts/no-extra-parens": [ "error", "all", { "nestedBinaryExpressions": false } ], "no-extra-semi": "off", "@stylistic/ts/no-extra-semi": "error", "@typescript-eslint/no-floating-promises": "error", "@typescript-eslint/no-for-in-array": "error", "no-implied-eval": "off", "@typescript-eslint/no-implied-eval": "error", "no-invalid-this": "off", "@typescript-eslint/no-invalid-this": "error", "@typescript-eslint/no-invalid-void-type": "error", "no-loop-func": "off", "@typescript-eslint/no-loop-func": "error", "no-loss-of-precision": "off", "@typescript-eslint/no-loss-of-precision": "error", "@typescript-eslint/no-meaningless-void-operator": "error", "@typescript-eslint/no-misused-new": "error", "@typescript-eslint/no-misused-promises": "error", "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error", "@typescript-eslint/no-non-null-asserted-optional-chain": "error", "@typescript-eslint/no-non-null-assertion": "off", "no-redeclare": "off", "@typescript-eslint/no-redeclare": "error", "@typescript-eslint/no-this-alias": "error", "no-throw-literal": "error", "@typescript-eslint/no-unnecessary-condition": [ "error", { "allowConstantLoopConditions": true } ], "@typescript-eslint/no-unnecessary-type-assertion": "error", "@typescript-eslint/no-unnecessary-type-constraint": "error", "@typescript-eslint/no-unsafe-call": "error", "@typescript-eslint/no-unsafe-return": "error", "no-unused-expressions": "off", "@typescript-eslint/no-unused-expressions": "error", "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": "off", "no-use-before-define": "off", "@typescript-eslint/no-use-before-define": "off", "no-useless-constructor": "off", "@typescript-eslint/no-useless-constructor": "error", "@typescript-eslint/no-useless-empty-export": "error", "@typescript-eslint/no-var-requires": "off", "@typescript-eslint/parameter-properties": "error", "@typescript-eslint/prefer-enum-initializers": "error", "@typescript-eslint/prefer-includes": "error", "@typescript-eslint/prefer-literal-enum-member": "error", "@typescript-eslint/prefer-readonly": "error", "@typescript-eslint/prefer-reduce-type-parameter": "error", "@typescript-eslint/prefer-string-starts-ends-with": "error", "@typescript-eslint/prefer-ts-expect-error": "error", "@typescript-eslint/require-array-sort-compare": "error", "no-return-await": "off", "@typescript-eslint/return-await": "error", "semi": "off", "@stylistic/ts/semi": "error", "@typescript-eslint/unbound-method": "error", "@typescript-eslint/no-require-imports": [ "error", { allow: ["/.*-view.html$"] } ] } } ); // export default [ // { // ignores: ["dist/**", "node_modules/**", "**/*.js", "**/*.map"] // }, // { // files: ["**/*.ts"], // languageOptions: { // parser: tsParser, // parserOptions: { // project: "./tsconfig.json", // ecmaVersion: "latest", // sourceType: "module" // } // }, // plugins: { // "@typescript-eslint": tsEslint, // "require-extensions": requireExtensions // }, // rules: { // // Base ESLint recommended rules // ...js.configs.recommended.rules, // // TypeScript ESLint recommended rules // ...tsEslint.configs.recommended.rules, // ...tsEslint.configs["eslint-recommended"].overrides[0].rules, // // Require extensions recommended rules // ...requireExtensions.configs.recommended.rules, // // Your custom rules // "quotes": "off", // "@typescript-eslint/quotes": ["error", "double", { allowTemplateLiterals: true }], // "no-eval": "error", // "no-void": "error", // "no-with": "error", // "@typescript-eslint/adjacent-overload-signatures": "error", // "@typescript-eslint/array-type": ["error", { default: "generic", readonly: "generic" }], // "@typescript-eslint/await-thenable": "error", // "@typescript-eslint/ban-ts-comment": ["error", { // "ts-expect-error": "allow-with-description", // "ts-ignore": "allow-with-description", // "ts-nocheck": true, // "ts-check": true // }], // "@typescript-eslint/ban-tslint-comment": "error", // "@typescript-eslint/ban-types": ["error", { // extendDefaults: false, // types: { // "String": { message: "Use string instead", fixWith: "string" }, // "Boolean": { message: "Use boolean instead", fixWith: "boolean" }, // "Number": { message: "Use number instead", fixWith: "number" }, // "Symbol": { message: "Use symbol instead", fixWith: "symbol" } // } // }], // "brace-style": "off", // "@typescript-eslint/brace-style": ["error", "allman", { allowSingleLine: true }], // "@typescript-eslint/class-literal-property-style": ["off", "getters"], // "comma-dangle": "off", // "@typescript-eslint/comma-dangle": ["error", "never"], // "default-param-last": "off", // "@typescript-eslint/default-param-last": "error", // "@typescript-eslint/explicit-function-return-type": "error", // "@typescript-eslint/explicit-member-accessibility": "error", // "@typescript-eslint/explicit-module-boundary-types": "error", // "func-call-spacing": "off", // "@typescript-eslint/func-call-spacing": ["error", "never"], // "@typescript-eslint/member-delimiter-style": ["error", { // multiline: { delimiter: "semi", requireLast: true }, // singleline: { delimiter: "semi", requireLast: true }, // multilineDetection: "brackets" // }], // "@typescript-eslint/member-ordering": ["error", { // default: [ // "signature", // "private-static-field", // "protected-static-field", // "public-static-field", // "private-instance-field", // "protected-instance-field", // "public-instance-field", // ["private-static-get", "private-static-set"], // ["protected-static-get", "protected-static-set"], // ["public-static-get", "public-static-set"], // ["private-instance-get", "private-instance-set"], // ["protected-instance-get", "protected-instance-set"], // ["public-instance-get", "public-instance-set"], // "public-constructor", // "protected-constructor", // "private-constructor", // "public-static-method", // "protected-static-method", // "private-static-method", // "public-instance-method", // "protected-instance-method", // "private-instance-method" // ] // }], // "@typescript-eslint/method-signature-style": ["error", "method"], // "@typescript-eslint/naming-convention": ["error", { // selector: "memberLike", // modifiers: ["private"], // format: ["camelCase"], // leadingUnderscore: "require" // }], // "@typescript-eslint/no-confusing-non-null-assertion": "error", // "@typescript-eslint/no-confusing-void-expression": ["error", { ignoreArrowShorthand: true }], // "no-dupe-class-members": "off", // "@typescript-eslint/no-dupe-class-members": "error", // "@typescript-eslint/no-duplicate-enum-values": "error", // "no-duplicate-imports": "error", // "no-empty-function": "off", // "@typescript-eslint/no-empty-function": ["error", { allow: ["private-constructors"] }], // "@typescript-eslint/no-explicit-any": "off", // "@typescript-eslint/no-extra-non-null-assertion": "error", // "no-extra-parens": "off", // "@typescript-eslint/no-extra-parens": ["error", "all", { nestedBinaryExpressions: false }], // "no-extra-semi": "off", // "@typescript-eslint/no-extra-semi": "error", // "@typescript-eslint/no-floating-promises": "error", // "@typescript-eslint/no-for-in-array": "error", // "no-implied-eval": "off", // "@typescript-eslint/no-implied-eval": "error", // "no-invalid-this": "off", // "@typescript-eslint/no-invalid-this": "error", // "@typescript-eslint/no-invalid-void-type": "error", // "no-loop-func": "off", // "@typescript-eslint/no-loop-func": "error", // "no-loss-of-precision": "off", // "@typescript-eslint/no-loss-of-precision": "error", // "@typescript-eslint/no-meaningless-void-operator": "error", // "@typescript-eslint/no-misused-new": "error", // "@typescript-eslint/no-misused-promises": "error", // "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error", // "@typescript-eslint/no-non-null-asserted-optional-chain": "error", // "@typescript-eslint/no-non-null-assertion": "off", // "no-redeclare": "off", // "@typescript-eslint/no-redeclare": "error", // "@typescript-eslint/no-this-alias": "error", // "@typescript-eslint/no-throw-literal": "error", // "@typescript-eslint/no-unnecessary-condition": ["error", { allowConstantLoopConditions: true }], // "@typescript-eslint/no-unnecessary-type-assertion": "error", // "@typescript-eslint/no-unnecessary-type-constraint": "error", // "@typescript-eslint/no-unsafe-call": "error", // "@typescript-eslint/no-unsafe-return": "error", // "no-unused-expressions": "off", // "@typescript-eslint/no-unused-expressions": "error", // "no-unused-vars": "off", // "@typescript-eslint/no-unused-vars": "off", // "no-use-before-define": "off", // "@typescript-eslint/no-use-before-define": "off", // "no-useless-constructor": "off", // "@typescript-eslint/no-useless-constructor": "error", // "@typescript-eslint/no-useless-empty-export": "error", // "@typescript-eslint/no-var-requires": "off", // "@typescript-eslint/parameter-properties": "error", // "@typescript-eslint/prefer-enum-initializers": "error", // "@typescript-eslint/prefer-includes": "error", // "@typescript-eslint/prefer-literal-enum-member": "error", // "@typescript-eslint/prefer-readonly": "error", // "@typescript-eslint/prefer-reduce-type-parameter": "error", // "@typescript-eslint/prefer-string-starts-ends-with": "error", // "@typescript-eslint/prefer-ts-expect-error": "error", // "@typescript-eslint/require-array-sort-compare": "error", // "no-return-await": "off", // "@typescript-eslint/return-await": "error", // "semi": "off", // "@typescript-eslint/semi": "error", // "@typescript-eslint/unbound-method": "error" // } // } // ];