From b32f9820f8f14f3af29c15d92759933da79f07bb Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Tue, 12 Dec 2023 09:48:14 +0100 Subject: [PATCH] enable relative parsing --- .eslintrc.cjs | 164 +++++++++++++++++++++++++++++++++++++++++++++++ .eslintrc.json | 168 ------------------------------------------------- package.json | 2 +- 3 files changed, 165 insertions(+), 169 deletions(-) create mode 100644 .eslintrc.cjs delete mode 100644 .eslintrc.json diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..7eab6d6 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,164 @@ +// eslint-disable-next-line import/no-commonjs +module.exports = { + env: { + browser: true, + es2021: true, + }, + extends: [ + 'standard', + 'eslint:recommended', + 'plugin:@eslint-community/eslint-comments/recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:import/recommended', + 'plugin:import/typescript', + 'plugin:promise/recommended', + 'plugin:security/recommended', + ], + parserOptions: { + ecmaVersion: 'latest', + parser: '@typescript-eslint/parser', + sourceType: 'module', + }, + plugins: ['@typescript-eslint', 'import', 'promise', 'security'], + settings: { + 'import/resolver': { + typescript: true, + node: true, + }, + }, + rules: { + 'no-console': 'error', + 'no-debugger': 'error', + camelcase: 'error', + indent: ['error', 2], + 'linebreak-style': ['error', 'unix'], + semi: ['error', 'never'], + // Optional eslint-comments rule + '@eslint-community/eslint-comments/no-unused-disable': 'error', + '@eslint-community/eslint-comments/disable-enable-pair': ['error', { allowWholeFile: true }], + // import + 'import/export': 'error', + 'import/no-deprecated': 'error', + 'import/no-empty-named-blocks': 'error', + 'import/no-extraneous-dependencies': 'error', + 'import/no-mutable-exports': 'error', + 'import/no-unused-modules': 'error', + 'import/no-named-as-default': 'error', + 'import/no-named-as-default-member': 'error', + 'import/no-amd': 'error', + 'import/no-commonjs': 'error', + 'import/no-import-module-exports': 'error', + 'import/no-nodejs-modules': 'off', + 'import/unambiguous': 'off', // not compatible with scriptless vue files + 'import/default': 'error', + 'import/named': 'error', + 'import/namespace': 'error', + 'import/no-absolute-path': 'error', + 'import/no-cycle': 'error', + 'import/no-dynamic-require': 'error', + 'import/no-internal-modules': 'off', + 'import/no-relative-packages': 'error', + 'import/no-relative-parent-imports': [ + 'error', + { ignore: ['#[src,root,components,pages,assets,layouts,stores,plugins,context,types]/*'] }, + ], + 'import/no-self-import': 'error', + 'import/no-unresolved': 'error', + 'import/no-useless-path-segments': 'error', + 'import/no-webpack-loader-syntax': 'error', + 'import/consistent-type-specifier-style': 'error', + 'import/exports-last': 'off', + 'import/extensions': [ + 'error', + 'never', + { + json: 'always', + }, + ], + 'import/first': 'error', + 'import/group-exports': 'off', + 'import/newline-after-import': 'error', + 'import/no-anonymous-default-export': 'off', // todo - consider to enable again + 'import/no-default-export': 'off', // incompatible with vite & vike + 'import/no-duplicates': 'error', + 'import/no-named-default': 'error', + 'import/no-namespace': 'error', + 'import/no-unassigned-import': 'error', + 'import/order': [ + 'error', + { + groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type'], + 'newlines-between': 'always', + alphabetize: { + order: 'asc', // sort in ascending order. Options: ["ignore", "asc", "desc"] + caseInsensitive: true, // ignore case. Options: [true, false] + }, + distinctGroup: true, + }, + ], + 'import/prefer-default-export': 'off', + // promise + 'promise/catch-or-return': 'error', + 'promise/no-return-wrap': 'error', + 'promise/param-names': 'error', + 'promise/always-return': 'error', + 'promise/no-native': 'off', + 'promise/no-nesting': 'warn', + 'promise/no-promise-in-callback': 'warn', + 'promise/no-callback-in-promise': 'warn', + 'promise/avoid-new': 'warn', + 'promise/no-new-statics': 'error', + 'promise/no-return-in-finally': 'warn', + 'promise/valid-params': 'warn', + 'promise/prefer-await-to-callbacks': 'error', + 'promise/no-multiple-resolved': 'error', + }, + overrides: [ + { + files: ['*.ts', '*.tsx'], + parser: '@typescript-eslint/parser', + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./tsconfig.json', '**/tsconfig.json'], + ecmaVersion: 'latest', + parser: '@typescript-eslint/parser', + sourceType: 'module', + }, + plugins: ['@typescript-eslint'], + extends: [ + 'plugin:@typescript-eslint/recommended', + 'plugin:@typescript-eslint/recommended-requiring-type-checking', + 'plugin:@typescript-eslint/strict', + ], + rules: { + // allow explicitly defined dangling promises + '@typescript-eslint/no-floating-promises': ['error', { ignoreVoid: true }], + 'no-void': ['error', { allowAsStatement: true }], + }, + }, + { + files: ['!*.json'], + plugins: ['prettier'], + extends: ['plugin:prettier/recommended'], + rules: { + 'prettier/prettier': 'error', + }, + }, + { + files: ['*.json'], + plugins: ['json'], + extends: ['plugin:json/recommended-with-comments'], + }, + { + files: ['*.[test,spec].[tj]s'], + plugins: ['jest'], + extends: ['plugin:jest/all'], + }, + { + files: ['*.yaml', '*.yml'], + parser: 'yaml-eslint-parser', + plugins: ['yml'], + extends: ['plugin:yml/prettier'], + }, + ], +} diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 3e95956..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,168 +0,0 @@ -{ - "env": { - "browser": true, - "es2021": true - }, - "extends": [ - "standard", - "eslint:recommended", - "plugin:@eslint-community/eslint-comments/recommended", - "plugin:@typescript-eslint/recommended", - "plugin:import/recommended", - "plugin:import/typescript", - "plugin:promise/recommended", - "plugin:security/recommended" - ], - "parserOptions": { - "ecmaVersion": "latest", - "parser": "@typescript-eslint/parser", - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint", - "import", - "promise", - "security" - ], - "settings": { - "import/resolver": { - "typescript": true, - "node": true - } - }, - "rules": { - "no-console": "error", - "no-debugger": "error", - "camelcase": "error", - "indent": ["error", 2], - "linebreak-style": ["error", "unix"], - "semi": ["error", "never"], - // Optional eslint-comments rule - "@eslint-community/eslint-comments/no-unused-disable": "error", - "@eslint-community/eslint-comments/disable-enable-pair": ["error", { "allowWholeFile": true }], - // import - "import/export": "error", - "import/no-deprecated": "error", - "import/no-empty-named-blocks": "error", - "import/no-extraneous-dependencies": "error", - "import/no-mutable-exports": "error", - "import/no-unused-modules": "error", - "import/no-named-as-default": "error", - "import/no-named-as-default-member": "error", - "import/no-amd": "error", - "import/no-commonjs": "error", - "import/no-import-module-exports": "error", - "import/no-nodejs-modules": "off", - "import/unambiguous": "off", // not compatible with scriptless vue files - "import/default": "error", - "import/named": "error", - "import/namespace": "error", - "import/no-absolute-path": "error", - "import/no-cycle": "error", - "import/no-dynamic-require": "error", - "import/no-internal-modules": "off", - "import/no-relative-packages": "error", - "import/no-relative-parent-imports": [ - "error", - { "ignore": ["#[src,root,components,pages,assets,layouts,stores,plugins,context,types]/*"] } - ], - "import/no-self-import": "error", - "import/no-unresolved": "error", - "import/no-useless-path-segments": "error", - "import/no-webpack-loader-syntax": "error", - "import/consistent-type-specifier-style": "error", - "import/exports-last": "off", - "import/extensions": [ - "error", - "never", - { - "json": "always" - } - ], - "import/first": "error", - "import/group-exports": "off", - "import/newline-after-import": "error", - "import/no-anonymous-default-export": "off", // todo - consider to enable again - "import/no-default-export": "off", // incompatible with vite & vike - "import/no-duplicates": "error", - "import/no-named-default": "error", - "import/no-namespace": "error", - "import/no-unassigned-import": "error", - "import/order": [ - "error", - { - "groups": ["builtin", "external", "internal", "parent", "sibling", "index", "object", "type"], - "newlines-between": "always", - "alphabetize": { - "order": "asc", // sort in ascending order. Options: ["ignore", "asc", "desc"] - "caseInsensitive": true // ignore case. Options: [true, false] - }, - "distinctGroup": true - } - ], - "import/prefer-default-export": "off", - // promise - "promise/catch-or-return": "error", - "promise/no-return-wrap": "error", - "promise/param-names": "error", - "promise/always-return": "error", - "promise/no-native": "off", - "promise/no-nesting": "warn", - "promise/no-promise-in-callback": "warn", - "promise/no-callback-in-promise": "warn", - "promise/avoid-new": "warn", - "promise/no-new-statics": "error", - "promise/no-return-in-finally": "warn", - "promise/valid-params": "warn", - "promise/prefer-await-to-callbacks": "error", - "promise/no-multiple-resolved": "error" - }, - "overrides": [ - { - "files": ["*.ts", "*.tsx"], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "tsconfigRootDir": ".", - "project": ["./tsconfig.json", "**/tsconfig.json"], - "ecmaVersion": "latest", - "parser": "@typescript-eslint/parser", - "sourceType": "module" - }, - "plugins": ["@typescript-eslint"], - "extends": [ - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:@typescript-eslint/strict" - ], - "rules": { - // allow explicitly defined dangling promises - "@typescript-eslint/no-floating-promises": ["error", { "ignoreVoid": true }], - "no-void": ["error", { "allowAsStatement": true }] - } - }, - { - "files": ["!*.json"], - "plugins": ["prettier"], - "extends": ["plugin:prettier/recommended"], - "rules": { - "prettier/prettier": "error" - } - }, - { - "files": ["*.json"], - "plugins": ["json"], - "extends": ["plugin:json/recommended-with-comments"] - }, - { - "files": ["*.[test,spec].[tj]s"], - "plugins": ["jest"], - "extends": ["plugin:jest/all"] - }, - { - "files": ["*.yaml", "*.yml"], - "parser": "yaml-eslint-parser", - "plugins": ["yml"], - "extends": ["plugin:yml/prettier"] - } - ] -} diff --git a/package.json b/package.json index f8c4319..96773f6 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "db:reset": "TZ=UTC npx prisma migrate reset --force", "db:seed": "TZ=UTC npx prisma db seed", "test:lint": "npm run test:lint:eslint && npm run test:lint:remark", - "test:lint:eslint": "eslint --ext .ts,.tsx,.js,.jsx,.json,.yml,.yaml --max-warnings 0 .", + "test:lint:eslint": "eslint --ext .ts,.tsx,.js,.jsx,.cjs,.mjs,.json,.yml,.yaml --max-warnings 0 .", "test:lint:remark": "remark . --quiet --frail", "test:unit": "TZ=UTC jest --runInBand --forceExit --detectOpenHandles", "test": "npm run test:lint && npm run test:unit",