diff --git a/.copier-answers.yaml b/.copier-answers.yaml index 05c6322..ebbc2ed 100644 --- a/.copier-answers.yaml +++ b/.copier-answers.yaml @@ -1,5 +1,5 @@ # Changes here will be overwritten by Copier; NEVER EDIT MANUALLY -_commit: 0.9.0 +_commit: 0.10.0 _src_path: gh:quickplates/meta accountname: quickplates description: Helm charts template ⛵ diff --git a/src/{% if docs %}docs{% endif %}/eslint.config.mjs b/src/{% if docs %}docs{% endif %}/eslint.config.mjs index 13ebad5..babb08f 100644 --- a/src/{% if docs %}docs{% endif %}/eslint.config.mjs +++ b/src/{% if docs %}docs{% endif %}/eslint.config.mjs @@ -1,19 +1,26 @@ -import docusauruseslint from "@docusaurus/eslint-plugin"; +import { FlatCompat } from "@eslint/eslintrc"; import eslint from "@eslint/js"; import perfectionisteslint from "eslint-plugin-perfectionist"; import globals from "globals"; import tseslint from "typescript-eslint"; +const compat = new FlatCompat({ + baseDirectory: import.meta.dirname, +}); + export default tseslint.config( // Use recommended eslint rules eslint.configs.recommended, - // Use strict type-checked typescript-eslint rules - tseslint.configs.strictTypeChecked, + // Use recommended type-checked typescript-eslint rules + tseslint.configs.recommendedTypeChecked, // Use stylistic type-checked typescript-eslint rules tseslint.configs.stylisticTypeChecked, + // Use recommended Docusaurus rules + ...compat.extends("plugin:@docusaurus/recommended"), + // Use recommended perfectionist rules perfectionisteslint.configs["recommended-alphabetical"], @@ -24,6 +31,9 @@ export default tseslint.config( // Support browser globals ...globals.browser, + // Support ES2023 globals + ...globals.es2023, + // Support node globals ...globals.node, }, @@ -33,20 +43,63 @@ export default tseslint.config( // Needed for type-aware linting projectService: true, + // Allow ES2022 syntax + sourceType: "module", + // Set the root directory of the project // Needed for type-aware linting tsconfigRootDir: import.meta.dirname, }, }, - plugins: { - // Enable docusaurus plugin - "@docusaurus": docusauruseslint, - }, - rules: { - // Use recommended docusaurus rules - ...docusauruseslint.configs.recommended.rules, + // Use objects instead of records for empty types + "@typescript-eslint/consistent-indexed-object-style": [ + "error", + "index-signature", + ], + + // Use types instead of interfaces + "@typescript-eslint/consistent-type-definitions": ["error", "type"], + + // Allow promises in callbacks + "@typescript-eslint/no-misused-promises": [ + "error", + { + checksVoidReturn: false, + }, + ], + + // Allow nullish coalescing operator for primitive types + "@typescript-eslint/prefer-nullish-coalescing": [ + "error", + { + ignorePrimitives: true, + }, + ], + + // Allow async functions without await + "@typescript-eslint/require-await": "off", + + // Skip checking whether static methods are bound + "@typescript-eslint/unbound-method": [ + "error", + { + ignoreStatic: true, + }, + ], + + // Allow anonymous default exports + "import/no-anonymous-default-export": "off", + + // Allow empty block statements + "no-empty": "off", + + // Allow empty destructuring patterns + "no-empty-pattern": "off", + + // Don't sort module members + "perfectionist/sort-modules": "off", }, }, ); diff --git a/src/{% if docs %}docs{% endif %}/package-lock.json b/src/{% if docs %}docs{% endif %}/package-lock.json index d0d269b..e90f12c 100644 --- a/src/{% if docs %}docs{% endif %}/package-lock.json +++ b/src/{% if docs %}docs{% endif %}/package-lock.json @@ -18,6 +18,7 @@ "@docusaurus/module-type-aliases": "^3.7.0", "@docusaurus/tsconfig": "^3.7.0", "@docusaurus/types": "^3.7.0", + "@eslint/eslintrc": "^3.3.0", "@eslint/js": "^9.21.0", "@types/react": "^18.3.18", "eslint-plugin-perfectionist": "^4.9.0", @@ -3862,17 +3863,16 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "devOptional": true, + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -3880,7 +3880,7 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -3890,26 +3890,52 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "devOptional": true, + "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "devOptional": true, - "license": "MIT", - "peer": true, + "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "type-fest": "^0.20.2" + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3919,9 +3945,8 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "devOptional": true, + "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3929,20 +3954,6 @@ "node": "*" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "devOptional": true, - "license": "(MIT OR CC0-1.0)", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@eslint/js": { "version": "9.21.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", @@ -8131,6 +8142,31 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint/node_modules/@eslint/js": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", diff --git a/src/{% if docs %}docs{% endif %}/package.json b/src/{% if docs %}docs{% endif %}/package.json index a4748d3..4e599c6 100644 --- a/src/{% if docs %}docs{% endif %}/package.json +++ b/src/{% if docs %}docs{% endif %}/package.json @@ -21,6 +21,7 @@ "@docusaurus/module-type-aliases": "^3.7.0", "@docusaurus/tsconfig": "^3.7.0", "@docusaurus/types": "^3.7.0", + "@eslint/eslintrc": "^3.3.0", "@eslint/js": "^9.21.0", "@types/react": "^18.3.18", "eslint-plugin-perfectionist": "^4.9.0",