|
6 | 6 | import eslint from "@eslint/js"; |
7 | 7 | import eslintConfigPrettier from "eslint-config-prettier"; |
8 | 8 | import chaiFriendly from "eslint-plugin-chai-friendly"; |
| 9 | +import importX from "eslint-plugin-import-x"; |
9 | 10 | import jsdoc from "eslint-plugin-jsdoc"; |
| 11 | +import tsdoc from "eslint-plugin-tsdoc"; |
10 | 12 | import unicorn from "eslint-plugin-unicorn"; |
11 | 13 | import tseslint from "typescript-eslint"; |
12 | 14 |
|
@@ -99,6 +101,39 @@ export const unicornConfig = [ |
99 | 101 | }, |
100 | 102 | ]; |
101 | 103 |
|
| 104 | +/** |
| 105 | + * Import-x plugin configuration for import/export linting. |
| 106 | + * Uses the recommended and typescript configs from eslint-plugin-import-x. |
| 107 | + */ |
| 108 | +export const importXConfig = [ |
| 109 | + importX.flatConfigs.recommended, |
| 110 | + importX.flatConfigs.typescript, |
| 111 | + { |
| 112 | + settings: { |
| 113 | + "import-x/resolver": { |
| 114 | + typescript: true, |
| 115 | + }, |
| 116 | + }, |
| 117 | + rules: { |
| 118 | + // Disable rules that are too strict for CLI tools |
| 119 | + "import-x/no-named-as-default-member": "off", |
| 120 | + "import-x/no-default-export": "off", |
| 121 | + }, |
| 122 | + }, |
| 123 | +]; |
| 124 | + |
| 125 | +/** |
| 126 | + * TSDoc plugin configuration for TypeScript documentation comments. |
| 127 | + */ |
| 128 | +export const tsdocConfig = { |
| 129 | + plugins: { |
| 130 | + tsdoc, |
| 131 | + }, |
| 132 | + rules: { |
| 133 | + "tsdoc/syntax": "warn", |
| 134 | + }, |
| 135 | +}; |
| 136 | + |
102 | 137 | /** |
103 | 138 | * Chai-friendly configuration for test files. |
104 | 139 | */ |
@@ -145,15 +180,28 @@ export function createConfig({ |
145 | 180 | additionalConfigs = [], |
146 | 181 | jsdoc: includeJsdoc = false, |
147 | 182 | unicorn: includeUnicorn = false, |
| 183 | + importX: includeImportX = false, |
| 184 | + tsdoc: includeTsdoc = true, |
148 | 185 | } = {}) { |
149 | 186 | return tseslint.config( |
150 | 187 | ignores, |
151 | 188 | ...recommendedConfigs, |
152 | 189 | ...(includeJsdoc ? jsdocConfig : []), |
153 | 190 | ...(includeUnicorn ? unicornConfig : []), |
| 191 | + ...(includeImportX ? importXConfig : []), |
| 192 | + ...(includeTsdoc ? [tsdocConfig] : []), |
154 | 193 | baseConfig(project), |
155 | 194 | ...additionalConfigs, |
156 | 195 | ); |
157 | 196 | } |
158 | 197 |
|
159 | | -export { tseslint, eslint, eslintConfigPrettier, jsdoc, unicorn, chaiFriendly }; |
| 198 | +export { |
| 199 | + tseslint, |
| 200 | + eslint, |
| 201 | + eslintConfigPrettier, |
| 202 | + jsdoc, |
| 203 | + unicorn, |
| 204 | + chaiFriendly, |
| 205 | + importX, |
| 206 | + tsdoc, |
| 207 | +}; |
0 commit comments