Skip to content

Commit c3c02ec

Browse files
committed
build: add TypeScript blocks to eslint.config.cjs
Add TypeScript-specific flat config blocks for `**/*.d.ts` and `**/test/**/*.ts` files: - Configure `@typescript-eslint/parser` with `parserOptions.project` pointing to the root `tsconfig.json` - Register `@typescript-eslint`, `@stylistic/ts`, `jsdoc`, `import`, `expect-type`, and `stdlib` plugins - Reuse the existing TypeScript rules from `etc/eslint/rules/typescript.js` - Disable `jsdoc/require-jsdoc` for TypeScript test files Ref: stdlib-js/metr-issue-tracker#54
1 parent 47afeab commit c3c02ec

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

eslint.config.cjs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,19 @@
2020

2121
// MODULES //
2222

23+
var path = require( 'path' );
2324
var globals = require( 'globals' );
25+
var tsParser = require( '@typescript-eslint/parser' );
26+
var tsPlugin = require( '@typescript-eslint/eslint-plugin' );
27+
var stylisticTs = require( '@stylistic/eslint-plugin-ts' );
2428
var pluginN = require( 'eslint-plugin-n' );
2529
var pluginCspell = require( '@cspell/eslint-plugin' );
2630
var pluginJsdoc = require( 'eslint-plugin-jsdoc' );
31+
var pluginImport = require( 'eslint-plugin-import' );
32+
var pluginExpectType = require( 'eslint-plugin-expect-type' );
2733
var stdlibPlugin = require( './lib/node_modules/@stdlib/_tools/eslint/rules/scripts/plugin.js' );
2834
var allRules = require( './etc/eslint/rules' );
35+
var tsRules = require( './etc/eslint/rules/typescript.js' );
2936
var overrides = require( './etc/eslint/overrides' );
3037

3138

@@ -158,5 +165,38 @@ module.exports = [
158165
}],
159166
'no-restricted-syntax': restrictedSyntaxConfig
160167
}
168+
},
169+
170+
// TypeScript declarations:
171+
{
172+
'files': [ '**/*.d.ts' ],
173+
'languageOptions': {
174+
'parser': tsParser,
175+
'sourceType': 'module',
176+
'parserOptions': {
177+
'project': path.join( __dirname, 'tsconfig.json' )
178+
},
179+
'globals': {
180+
...globals.browser,
181+
...globals.node
182+
}
183+
},
184+
'plugins': {
185+
'@typescript-eslint': tsPlugin,
186+
'@stylistic/ts': stylisticTs,
187+
'jsdoc': pluginJsdoc,
188+
'import': pluginImport,
189+
'expect-type': pluginExpectType,
190+
'stdlib': stdlibPlugin
191+
},
192+
'rules': tsRules
193+
},
194+
195+
// TypeScript test files:
196+
{
197+
'files': [ '**/test/**/*.ts' ],
198+
'rules': {
199+
'jsdoc/require-jsdoc': 'off'
200+
}
161201
}
162202
];

0 commit comments

Comments
 (0)