Skip to content

Commit 92b28cc

Browse files
authored
fix: Type exported configs correctly (#95)
* Tighten types on exported configs * Add tests
1 parent 6f01ae2 commit 92b28cc

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

src/main.test.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {describe, it, expect} from 'vitest';
2-
import {ESLint, type Linter} from 'eslint';
2+
import {ESLint} from 'eslint';
33
import * as jsoncParser from 'jsonc-eslint-parser';
44
import json from '@eslint/json';
55
import plugin from './main.js';
@@ -15,7 +15,7 @@ describe('main plugin', () => {
1515
parser: jsoncParser
1616
}
1717
},
18-
plugin.configs!.recommended as Linter.Config
18+
plugin.configs.recommended
1919
]
2020
});
2121

@@ -41,7 +41,7 @@ describe('main plugin', () => {
4141
},
4242
language: 'json/json'
4343
},
44-
plugin.configs!.recommended as Linter.Config
44+
plugin.configs.recommended
4545
]
4646
});
4747

@@ -55,4 +55,11 @@ describe('main plugin', () => {
5555
expect(results[0]!.messages).toHaveLength(0);
5656
expect(results[0]!.filePath).toContain('package.json');
5757
});
58+
59+
it('should export valid config types', () => {
60+
expect(plugin.configs.recommended).toBeDefined();
61+
expect(plugin.configs.modernization).toBeDefined();
62+
expect(plugin.configs.moduleReplacements).toBeDefined();
63+
expect(plugin.configs.performanceImprovements).toBeDefined();
64+
});
5865
});

src/main.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ const plugin: ESLint.Plugin = {
2929
name: 'e18e',
3030
namespace: 'e18e'
3131
},
32-
configs: {},
3332
rules: {
3433
'prefer-array-at': preferArrayAt as never as Rule.RuleModule,
3534
'prefer-array-fill': preferArrayFill,
@@ -55,9 +54,15 @@ const plugin: ESLint.Plugin = {
5554
}
5655
};
5756

58-
plugin.configs!.recommended = recommended(plugin);
59-
plugin.configs!.modernization = modernization(plugin);
60-
plugin.configs!.moduleReplacements = moduleReplacements(plugin);
61-
plugin.configs!.performanceImprovements = performanceImprovements(plugin);
57+
const configs = {
58+
recommended: recommended(plugin),
59+
modernization: modernization(plugin),
60+
moduleReplacements: moduleReplacements(plugin),
61+
performanceImprovements: performanceImprovements(plugin)
62+
} as const;
6263

63-
export default plugin;
64+
plugin.configs = configs;
65+
66+
export default plugin as Omit<ESLint.Plugin, 'configs'> & {
67+
configs: typeof configs;
68+
};

0 commit comments

Comments
 (0)