diff --git a/.eslintrc.js b/.eslintrc.js index 304f184e8..5e6e4f3b6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -25,32 +25,34 @@ Copyright (c) OWASP Foundation. All Rights Reserved. */ module.exports = { root: true, - extends: [ - /* see https://github.com/standard/ts-standard */ - 'standard-with-typescript' - ], - parserOptions: { - project: './tsconfig.json' - }, plugins: [ /* see https://github.com/lydell/eslint-plugin-simple-import-sort#readme */ 'simple-import-sort', /* see https://github.com/Stuk/eslint-plugin-header#readme */ - 'header', - /* see https://github.com/microsoft/tsdoc */ - 'eslint-plugin-tsdoc' + 'header' ], env: { commonjs: true, browser: true, node: true }, + rules: { + // region sort imports/exports + /* disable other sorters in favour of `simple-import-sort` */ + 'import/order': 0, + 'sort-imports': 0, + /* see https://github.com/lydell/eslint-plugin-simple-import-sort/ */ + 'simple-import-sort/imports': 'error', + 'simple-import-sort/exports': 'error', + // endregion sort imports/exports + // region license-header + /* see https://github.com/Stuk/eslint-plugin-header#readme */ + 'header/header': ['error', './.license-header.js'] + // endregion license-header + }, overrides: [ { - files: [ - '*.spec.*', - '*.test.*' - ], + files: ['*.spec.*', '*.test.*'], env: { mocha: true, commonjs: true, @@ -59,18 +61,47 @@ module.exports = { } }, { - files: ['*.js', '*.mjs', '*.cjs'], + files: ['*.ts'], + extends: [ + /* see https://github.com/standard/ts-standard */ + 'standard-with-typescript' + ], plugins: [ - /* see https://github.com/gajus/eslint-plugin-jsdoc/ */ - 'jsdoc' + /* see https://github.com/microsoft/tsdoc */ + 'eslint-plugin-tsdoc' ], + parserOptions: { + project: './tsconfig.json' + }, + rules: { + // region override rules from plugin 'standard-with-typescript' + /* @see https://typescript-eslint.io/rules/consistent-type-imports/ */ + '@typescript-eslint/consistent-type-imports': ['error', { + /* we need our generated declaration files backward compatible to TS3.8 + * see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html + */ + fixStyle: 'separate-type-imports' + }], + // endregion override rules from plugin 'standard-with-typescript' + // region docs + /* see https://github.com/microsoft/tsdoc */ + 'tsdoc/syntax': 'error' + // endregion docs + } + }, + { + files: ['*.js', '*.mjs', '*.cjs'], extends: [ + /* see https://www.npmjs.com/package/eslint-config-standard */ + 'standard', /* see https://github.com/gajus/eslint-plugin-jsdoc */ 'plugin:jsdoc/recommended' ], + plugins: [ + /* see https://github.com/gajus/eslint-plugin-jsdoc/ */ + 'jsdoc' + ], rules: { - // region docs - 'tsdoc/syntax': 0, /* see https://github.com/gajus/eslint-plugin-jsdoc */ 'jsdoc/no-undefined-types': 'error', 'jsdoc/check-tag-names': 0, @@ -102,32 +133,5 @@ module.exports = { } } } - ], - rules: { - // region override rules from plugin 'standard-with-typescript' - /* @see https://typescript-eslint.io/rules/consistent-type-imports/ */ - '@typescript-eslint/consistent-type-imports': ['error', { - /* we need our generated declaration files backward compatible to TS3.8 - * see https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html - */ - fixStyle: 'separate-type-imports' - }], - // endregion override rules from plugin 'standard-with-typescript' - // region sort imports/exports - /* disable other sorters in favour of `simple-import-sort` */ - 'import/order': 0, - 'sort-imports': 0, - /* see https://github.com/lydell/eslint-plugin-simple-import-sort/ */ - 'simple-import-sort/imports': 'error', - 'simple-import-sort/exports': 'error', - // endregion sort imports/exports - // region docs - /* see https://github.com/microsoft/tsdoc */ - 'tsdoc/syntax': 'error', - // endregion docs - // region license-header - /* see https://github.com/Stuk/eslint-plugin-header#readme */ - 'header/header': ['error', '.license-header.js'] - // endregion license-header - } + ] } diff --git a/package-lock.json b/package-lock.json index 7e1e59445..0ca69084c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,8 @@ "c8": "^8.0.0", "deepmerge": "^4.2.2", "eslint": "^8.23.0", - "eslint-config-standard-with-typescript": "^35.0.0", + "eslint-config-standard": "^17.1.0", + "eslint-config-standard-with-typescript": "^36.0.0", "eslint-plugin-header": "^3.1.1", "eslint-plugin-jsdoc": "^46.2.0", "eslint-plugin-simple-import-sort": "^10.0.0", @@ -1848,9 +1849,9 @@ } }, "node_modules/eslint-config-standard": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", - "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", "dev": true, "funding": [ { @@ -1866,17 +1867,20 @@ "url": "https://feross.org/support" } ], + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { "eslint": "^8.0.1", "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", "eslint-plugin-promise": "^6.0.0" } }, "node_modules/eslint-config-standard-with-typescript": { - "version": "35.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-35.0.0.tgz", - "integrity": "sha512-Xa7DY9GgduZyp0qmXxBF0/dB+Vm4/DgWu1lGpNLJV2d46aCaUxTKDEnkzjUWX/1O9S0a+Dhnw7A4oI0JpYzwtw==", + "version": "36.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-36.0.0.tgz", + "integrity": "sha512-8ZSEskfrDAkUF2lTQLMT0CBzgRNlx1uIM7l2I7L683dKAXUdHuEL2x+GxuGAsdsoWbx7W7Zv0xF67VCEZXIk0Q==", "dev": true, "dependencies": { "@typescript-eslint/parser": "^5.50.0", @@ -1891,6 +1895,32 @@ "typescript": "*" } }, + "node_modules/eslint-config-standard-with-typescript/node_modules/eslint-config-standard": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-promise": "^6.0.0" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.7", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", @@ -7235,20 +7265,29 @@ } }, "eslint-config-standard": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", - "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", "dev": true, "requires": {} }, "eslint-config-standard-with-typescript": { - "version": "35.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-35.0.0.tgz", - "integrity": "sha512-Xa7DY9GgduZyp0qmXxBF0/dB+Vm4/DgWu1lGpNLJV2d46aCaUxTKDEnkzjUWX/1O9S0a+Dhnw7A4oI0JpYzwtw==", + "version": "36.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-36.0.0.tgz", + "integrity": "sha512-8ZSEskfrDAkUF2lTQLMT0CBzgRNlx1uIM7l2I7L683dKAXUdHuEL2x+GxuGAsdsoWbx7W7Zv0xF67VCEZXIk0Q==", "dev": true, "requires": { "@typescript-eslint/parser": "^5.50.0", "eslint-config-standard": "17.0.0" + }, + "dependencies": { + "eslint-config-standard": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "dev": true, + "requires": {} + } } }, "eslint-import-resolver-node": { diff --git a/package.json b/package.json index 8450acb05..adcb51bb4 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,8 @@ "c8": "^8.0.0", "deepmerge": "^4.2.2", "eslint": "^8.23.0", - "eslint-config-standard-with-typescript": "^35.0.0", + "eslint-config-standard": "^17.1.0", + "eslint-config-standard-with-typescript": "^36.0.0", "eslint-plugin-header": "^3.1.1", "eslint-plugin-jsdoc": "^46.2.0", "eslint-plugin-simple-import-sort": "^10.0.0",