Skip to content

Commit ac1b726

Browse files
committedMar 28, 2024
feat: more relax types for merging
1 parent 3f0993a commit ac1b726

29 files changed

+88
-89
lines changed
 

‎package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
"@typescript-eslint/eslint-plugin": "^7.4.0",
9494
"@typescript-eslint/parser": "^7.4.0",
9595
"eslint-config-flat-gitignore": "^0.1.3",
96-
"eslint-flat-config-utils": "^0.1.0",
96+
"eslint-flat-config-utils": "^0.1.1",
9797
"eslint-merge-processors": "^0.1.0",
9898
"eslint-plugin-antfu": "^2.1.2",
9999
"eslint-plugin-eslint-comments": "^3.2.0",

‎pnpm-lock.yaml

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎src/configs/astro.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import type { FlatConfigItem, OptionsFiles, OptionsOverrides, OptionsStylistic } from '../types'
1+
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
22
import { GLOB_ASTRO } from '../globs'
33
import { interopDefault } from '../utils'
44

55
export async function astro(
66
options: OptionsOverrides & OptionsStylistic & OptionsFiles = {},
7-
): Promise<FlatConfigItem[]> {
7+
): Promise<TypedFlatConfigItem[]> {
88
const {
99
files = [GLOB_ASTRO],
1010
overrides = {},

‎src/configs/comments.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import type { FlatConfigItem } from '../types'
1+
import type { TypedFlatConfigItem } from '../types'
22
import { pluginComments } from '../plugins'
33

4-
export async function comments(): Promise<FlatConfigItem[]> {
4+
export async function comments(): Promise<TypedFlatConfigItem[]> {
55
return [
66
{
77
name: 'antfu:eslint-comments',

‎src/configs/formatters.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import { isPackageExists } from 'local-pkg'
22
import { GLOB_ASTRO, GLOB_CSS, GLOB_GRAPHQL, GLOB_LESS, GLOB_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS } from '../globs'
33
import type { VendoredPrettierOptions } from '../vender/prettier-types'
44
import { ensurePackages, interopDefault, parserPlain } from '../utils'
5-
import type { FlatConfigItem, OptionsFormatters, StylisticConfig } from '../types'
5+
import type { OptionsFormatters, StylisticConfig, TypedFlatConfigItem } from '../types'
66
import { StylisticConfigDefaults } from './stylistic'
77

88
export async function formatters(
99
options: OptionsFormatters | true = {},
1010
stylistic: StylisticConfig = {},
11-
): Promise<FlatConfigItem[]> {
11+
): Promise<TypedFlatConfigItem[]> {
1212
if (options === true) {
1313
options = {
1414
astro: isPackageExists('astro'),
@@ -61,7 +61,7 @@ export async function formatters(
6161

6262
const pluginFormat = await interopDefault(import('eslint-plugin-format'))
6363

64-
const configs: FlatConfigItem[] = [
64+
const configs: TypedFlatConfigItem[] = [
6565
{
6666
name: 'antfu:formatters:setup',
6767
plugins: {

‎src/configs/ignores.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import type { FlatConfigItem } from '../types'
1+
import type { TypedFlatConfigItem } from '../types'
22
import { GLOB_EXCLUDE } from '../globs'
33

4-
export async function ignores(): Promise<FlatConfigItem[]> {
4+
export async function ignores(): Promise<TypedFlatConfigItem[]> {
55
return [
66
{
77
ignores: GLOB_EXCLUDE,

‎src/configs/imports.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import type { FlatConfigItem, OptionsStylistic } from '../types'
1+
import type { OptionsStylistic, TypedFlatConfigItem } from '../types'
22
import { pluginAntfu, pluginImport } from '../plugins'
33
import { GLOB_SRC_EXT } from '../globs'
44

5-
export async function imports(options: OptionsStylistic = {}): Promise<FlatConfigItem[]> {
5+
export async function imports(options: OptionsStylistic = {}): Promise<TypedFlatConfigItem[]> {
66
const {
77
stylistic = true,
88
} = options

‎src/configs/javascript.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import globals from 'globals'
2-
import type { FlatConfigItem, OptionsIsInEditor, OptionsOverrides } from '../types'
2+
import type { OptionsIsInEditor, OptionsOverrides, TypedFlatConfigItem } from '../types'
33
import { pluginAntfu, pluginUnusedImports } from '../plugins'
44
import { GLOB_SRC, GLOB_SRC_EXT } from '../globs'
55

66
export async function javascript(
77
options: OptionsIsInEditor & OptionsOverrides = {},
8-
): Promise<FlatConfigItem[]> {
8+
): Promise<TypedFlatConfigItem[]> {
99
const {
1010
isInEditor = false,
1111
overrides = {},

‎src/configs/jsdoc.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { interopDefault } from '../utils'
2-
import type { FlatConfigItem, OptionsStylistic } from '../types'
2+
import type { OptionsStylistic, TypedFlatConfigItem } from '../types'
33

4-
export async function jsdoc(options: OptionsStylistic = {}): Promise<FlatConfigItem[]> {
4+
export async function jsdoc(options: OptionsStylistic = {}): Promise<TypedFlatConfigItem[]> {
55
const {
66
stylistic = true,
77
} = options

‎src/configs/jsonc.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import type { FlatConfigItem, OptionsFiles, OptionsOverrides, OptionsStylistic } from '../types'
1+
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
22
import { GLOB_JSON, GLOB_JSON5, GLOB_JSONC } from '../globs'
33
import { interopDefault } from '../utils'
44

55
export async function jsonc(
66
options: OptionsFiles & OptionsStylistic & OptionsOverrides = {},
7-
): Promise<FlatConfigItem[]> {
7+
): Promise<TypedFlatConfigItem[]> {
88
const {
99
files = [GLOB_JSON, GLOB_JSON5, GLOB_JSONC],
1010
overrides = {},

‎src/configs/markdown.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { mergeProcessors, processorPassThrough } from 'eslint-merge-processors'
2-
import type { FlatConfigItem, OptionsComponentExts, OptionsFiles, OptionsOverrides } from '../types'
2+
import type { OptionsComponentExts, OptionsFiles, OptionsOverrides, TypedFlatConfigItem } from '../types'
33
import { GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN } from '../globs'
44
import { interopDefault, parserPlain } from '../utils'
55

66
export async function markdown(
77
options: OptionsFiles & OptionsComponentExts & OptionsOverrides = {},
8-
): Promise<FlatConfigItem[]> {
8+
): Promise<TypedFlatConfigItem[]> {
99
const {
1010
componentExts = [],
1111
files = [GLOB_MARKDOWN],

‎src/configs/node.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import type { FlatConfigItem } from '../types'
1+
import type { TypedFlatConfigItem } from '../types'
22
import { pluginNode } from '../plugins'
33

4-
export async function node(): Promise<FlatConfigItem[]> {
4+
export async function node(): Promise<TypedFlatConfigItem[]> {
55
return [
66
{
77
name: 'antfu:node',

‎src/configs/perfectionist.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import type { FlatConfigItem } from '../types'
1+
import type { TypedFlatConfigItem } from '../types'
22
import { pluginPerfectionist } from '../plugins'
33

44
/**
55
* Optional perfectionist plugin for props and items sorting.
66
*
77
* @see https://github.com/azat-io/eslint-plugin-perfectionist
88
*/
9-
export async function perfectionist(): Promise<FlatConfigItem[]> {
9+
export async function perfectionist(): Promise<TypedFlatConfigItem[]> {
1010
return [
1111
{
1212
name: 'antfu:perfectionist',

‎src/configs/react.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { isPackageExists } from 'local-pkg'
22
import { ensurePackages, interopDefault } from '../utils'
3-
import type { FlatConfigItem, OptionsFiles, OptionsHasTypeScript, OptionsOverrides } from '../types'
3+
import type { OptionsFiles, OptionsHasTypeScript, OptionsOverrides, TypedFlatConfigItem } from '../types'
44
import { GLOB_JSX, GLOB_TSX } from '../globs'
55

66
// react refresh
@@ -10,7 +10,7 @@ const ReactRefreshAllowConstantExportPackages = [
1010

1111
export async function react(
1212
options: OptionsHasTypeScript & OptionsOverrides & OptionsFiles = {},
13-
): Promise<FlatConfigItem[]> {
13+
): Promise<TypedFlatConfigItem[]> {
1414
const {
1515
files = [GLOB_JSX, GLOB_TSX],
1616
overrides = {},

‎src/configs/sort.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import type { FlatConfigItem } from '../types'
1+
import type { TypedFlatConfigItem } from '../types'
22

33
/**
44
* Sort package.json
55
*
66
* Requires `jsonc` config
77
*/
8-
export async function sortPackageJson(): Promise<FlatConfigItem[]> {
8+
export async function sortPackageJson(): Promise<TypedFlatConfigItem[]> {
99
return [
1010
{
1111
files: ['**/package.json'],
@@ -112,7 +112,7 @@ export async function sortPackageJson(): Promise<FlatConfigItem[]> {
112112
* Requires `jsonc` config
113113
*/
114114

115-
export function sortTsconfig(): FlatConfigItem[] {
115+
export function sortTsconfig(): TypedFlatConfigItem[] {
116116
return [
117117
{
118118
files: ['**/tsconfig.json', '**/tsconfig.*.json'],

‎src/configs/stylistic.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { interopDefault } from '../utils'
2-
import type { FlatConfigItem, OptionsOverrides, StylisticConfig } from '../types'
2+
import type { OptionsOverrides, StylisticConfig, TypedFlatConfigItem } from '../types'
33
import { pluginAntfu } from '../plugins'
44

55
export const StylisticConfigDefaults: StylisticConfig = {
@@ -11,7 +11,7 @@ export const StylisticConfigDefaults: StylisticConfig = {
1111

1212
export async function stylistic(
1313
options: StylisticConfig & OptionsOverrides = {},
14-
): Promise<FlatConfigItem[]> {
14+
): Promise<TypedFlatConfigItem[]> {
1515
const {
1616
indent,
1717
jsx,

‎src/configs/svelte.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { ensurePackages, interopDefault } from '../utils'
2-
import type { FlatConfigItem, OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic } from '../types'
2+
import type { OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
33
import { GLOB_SVELTE } from '../globs'
44

55
export async function svelte(
66
options: OptionsHasTypeScript & OptionsOverrides & OptionsStylistic & OptionsFiles = {},
7-
): Promise<FlatConfigItem[]> {
7+
): Promise<TypedFlatConfigItem[]> {
88
const {
99
files = [GLOB_SVELTE],
1010
overrides = {},

‎src/configs/test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { interopDefault } from '../utils'
2-
import type { FlatConfigItem, OptionsFiles, OptionsIsInEditor, OptionsOverrides } from '../types'
2+
import type { OptionsFiles, OptionsIsInEditor, OptionsOverrides, TypedFlatConfigItem } from '../types'
33
import { GLOB_TESTS } from '../globs'
44

55
export async function test(
66
options: OptionsFiles & OptionsIsInEditor & OptionsOverrides = {},
7-
): Promise<FlatConfigItem[]> {
7+
): Promise<TypedFlatConfigItem[]> {
88
const {
99
files = GLOB_TESTS,
1010
isInEditor = false,

‎src/configs/toml.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import type { FlatConfigItem, OptionsFiles, OptionsOverrides, OptionsStylistic } from '../types'
1+
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
22
import { GLOB_TOML } from '../globs'
33
import { interopDefault } from '../utils'
44

55
export async function toml(
66
options: OptionsOverrides & OptionsStylistic & OptionsFiles = {},
7-
): Promise<FlatConfigItem[]> {
7+
): Promise<TypedFlatConfigItem[]> {
88
const {
99
files = [GLOB_TOML],
1010
overrides = {},

‎src/configs/typescript.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import process from 'node:process'
22
import { GLOB_SRC, GLOB_TS, GLOB_TSX } from '../globs'
3-
import type { FlatConfigItem, OptionsComponentExts, OptionsFiles, OptionsOverrides, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes } from '../types'
3+
import type { OptionsComponentExts, OptionsFiles, OptionsOverrides, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, TypedFlatConfigItem } from '../types'
44
import { pluginAntfu } from '../plugins'
55
import { interopDefault, renameRules, toArray } from '../utils'
66

77
export async function typescript(
88
options: OptionsFiles & OptionsComponentExts & OptionsOverrides & OptionsTypeScriptWithTypes & OptionsTypeScriptParserOptions = {},
9-
): Promise<FlatConfigItem[]> {
9+
): Promise<TypedFlatConfigItem[]> {
1010
const {
1111
componentExts = [],
1212
overrides = {},
@@ -24,7 +24,7 @@ export async function typescript(
2424
: undefined
2525
const isTypeAware = !!tsconfigPath
2626

27-
const typeAwareRules: FlatConfigItem['rules'] = {
27+
const typeAwareRules: TypedFlatConfigItem['rules'] = {
2828
'dot-notation': 'off',
2929
'no-implied-eval': 'off',
3030
'no-throw-literal': 'off',
@@ -54,7 +54,7 @@ export async function typescript(
5454
interopDefault(import('@typescript-eslint/parser')),
5555
] as const)
5656

57-
function makeParser(typeAware: boolean, files: string[], ignores?: string[]): FlatConfigItem {
57+
function makeParser(typeAware: boolean, files: string[], ignores?: string[]): TypedFlatConfigItem {
5858
return {
5959
files,
6060
...ignores ? { ignores } : {},

‎src/configs/unicorn.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import type { FlatConfigItem } from '../types'
1+
import type { TypedFlatConfigItem } from '../types'
22
import { pluginUnicorn } from '../plugins'
33

4-
export async function unicorn(): Promise<FlatConfigItem[]> {
4+
export async function unicorn(): Promise<TypedFlatConfigItem[]> {
55
return [
66
{
77
name: 'antfu:unicorn',

‎src/configs/unocss.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { ensurePackages, interopDefault } from '../utils'
2-
import type { FlatConfigItem, OptionsUnoCSS } from '../types'
2+
import type { OptionsUnoCSS, TypedFlatConfigItem } from '../types'
33

44
export async function unocss(
55
options: OptionsUnoCSS = {},
6-
): Promise<FlatConfigItem[]> {
6+
): Promise<TypedFlatConfigItem[]> {
77
const {
88
attributify = true,
99
strict = false,

‎src/configs/vue.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { mergeProcessors } from 'eslint-merge-processors'
22
import { interopDefault } from '../utils'
3-
import type { FlatConfigItem, OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic, OptionsVue } from '../types'
3+
import type { OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic, OptionsVue, TypedFlatConfigItem } from '../types'
44
import { GLOB_VUE } from '../globs'
55

66
export async function vue(
77
options: OptionsVue & OptionsHasTypeScript & OptionsOverrides & OptionsStylistic & OptionsFiles = {},
8-
): Promise<FlatConfigItem[]> {
8+
): Promise<TypedFlatConfigItem[]> {
99
const {
1010
files = [GLOB_VUE],
1111
overrides = {},

‎src/configs/yaml.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import type { FlatConfigItem, OptionsFiles, OptionsOverrides, OptionsStylistic } from '../types'
1+
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
22
import { GLOB_YAML } from '../globs'
33
import { interopDefault } from '../utils'
44

55
export async function yaml(
66
options: OptionsOverrides & OptionsStylistic & OptionsFiles = {},
7-
): Promise<FlatConfigItem[]> {
7+
): Promise<TypedFlatConfigItem[]> {
88
const {
99
files = [GLOB_YAML],
1010
overrides = {},

‎src/factory.ts

+13-12
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import process from 'node:process'
22
import fs from 'node:fs'
33
import { isPackageExists } from 'local-pkg'
44
import { FlatConfigPipeline } from 'eslint-flat-config-utils'
5-
import type { Awaitable, FlatConfigItem, OptionsConfig } from './types'
5+
import type { Linter } from 'eslint'
6+
import type { Awaitable, OptionsConfig, TypedFlatConfigItem } from './types'
67
import {
78
astro,
89
comments,
@@ -30,7 +31,7 @@ import {
3031
import { interopDefault } from './utils'
3132
import { formatters } from './configs/formatters'
3233

33-
const flatConfigProps: (keyof FlatConfigItem)[] = [
34+
const flatConfigProps: (keyof TypedFlatConfigItem)[] = [
3435
'name',
3536
'files',
3637
'ignores',
@@ -61,17 +62,17 @@ export const defaultPluginRenaming = {
6162
/**
6263
* Construct an array of ESLint flat config items.
6364
*
64-
* @param {OptionsConfig & FlatConfigItem} options
65+
* @param {OptionsConfig & TypedFlatConfigItem} options
6566
* The options for generating the ESLint configurations.
66-
* @param {Awaitable<FlatConfigItem | FlatConfigItem[]>[]} userConfigs
67+
* @param {Awaitable<TypedFlatConfigItem | TypedFlatConfigItem[]>[]} userConfigs
6768
* The user configurations to be merged with the generated configurations.
68-
* @returns {Promise<FlatConfigItem[]>}
69+
* @returns {Promise<TypedFlatConfigItem[]>}
6970
* The merged ESLint configurations.
7071
*/
7172
export function antfu(
72-
options: OptionsConfig & FlatConfigItem = {},
73-
...userConfigs: Awaitable<FlatConfigItem | FlatConfigItem[]>[]
74-
): FlatConfigPipeline<FlatConfigItem> {
73+
options: OptionsConfig & TypedFlatConfigItem = {},
74+
...userConfigs: Awaitable<TypedFlatConfigItem | TypedFlatConfigItem[] | FlatConfigPipeline<any> | Linter.FlatConfig[]>[]
75+
): FlatConfigPipeline<TypedFlatConfigItem> {
7576
const {
7677
astro: enableAstro = false,
7778
autoRenamePlugins = true,
@@ -94,7 +95,7 @@ export function antfu(
9495
if (stylisticOptions && !('jsx' in stylisticOptions))
9596
stylisticOptions.jsx = options.jsx ?? true
9697

97-
const configs: Awaitable<FlatConfigItem[]>[] = []
98+
const configs: Awaitable<TypedFlatConfigItem[]>[] = []
9899

99100
if (enableGitignore) {
100101
if (typeof enableGitignore !== 'boolean') {
@@ -239,16 +240,16 @@ export function antfu(
239240
if (key in options)
240241
acc[key] = options[key] as any
241242
return acc
242-
}, {} as FlatConfigItem)
243+
}, {} as TypedFlatConfigItem)
243244
if (Object.keys(fusedConfig).length)
244245
configs.push([fusedConfig])
245246

246-
let pipeline = new FlatConfigPipeline<FlatConfigItem>()
247+
let pipeline = new FlatConfigPipeline<TypedFlatConfigItem>()
247248

248249
pipeline = pipeline
249250
.append(
250251
...configs,
251-
...userConfigs,
252+
...userConfigs as any,
252253
)
253254

254255
if (autoRenamePlugins) {

‎src/types.ts

+14-16
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export type Awaitable<T> = T | Promise<T>
1010

1111
export type Rules = RuleOptions
1212

13-
export type FlatConfigItem = Omit<Linter.FlatConfig, 'plugins' | 'rules'> & {
13+
export type TypedFlatConfigItem = Omit<Linter.FlatConfig, 'plugins'> & {
1414
/**
1515
* Custom name of each config item
1616
*/
@@ -27,9 +27,7 @@ export type FlatConfigItem = Omit<Linter.FlatConfig, 'plugins' | 'rules'> & {
2727
/**
2828
* An object containing a name-value mapping of rules to use.
2929
*/
30-
rules?: {
31-
[key: string]: Linter.RuleEntry
32-
} & Rules
30+
rules?: Linter.RulesRecord & Rules
3331
}
3432

3533
export interface OptionsFiles {
@@ -163,7 +161,7 @@ export interface StylisticConfig extends Pick<StylisticCustomizeOptions, 'indent
163161
}
164162

165163
export interface OptionsOverrides {
166-
overrides?: FlatConfigItem['rules']
164+
overrides?: TypedFlatConfigItem['rules']
167165
}
168166

169167
export interface OptionsIsInEditor {
@@ -344,16 +342,16 @@ export interface OptionsConfig extends OptionsComponentExts {
344342
* @deprecated use `overrides` option in each integration key instead
345343
*/
346344
overrides?: {
347-
stylistic?: FlatConfigItem['rules']
348-
javascript?: FlatConfigItem['rules']
349-
typescript?: FlatConfigItem['rules']
350-
test?: FlatConfigItem['rules']
351-
vue?: FlatConfigItem['rules']
352-
jsonc?: FlatConfigItem['rules']
353-
markdown?: FlatConfigItem['rules']
354-
yaml?: FlatConfigItem['rules']
355-
toml?: FlatConfigItem['rules']
356-
react?: FlatConfigItem['rules']
357-
svelte?: FlatConfigItem['rules']
345+
stylistic?: TypedFlatConfigItem['rules']
346+
javascript?: TypedFlatConfigItem['rules']
347+
typescript?: TypedFlatConfigItem['rules']
348+
test?: TypedFlatConfigItem['rules']
349+
vue?: TypedFlatConfigItem['rules']
350+
jsonc?: TypedFlatConfigItem['rules']
351+
markdown?: TypedFlatConfigItem['rules']
352+
yaml?: TypedFlatConfigItem['rules']
353+
toml?: TypedFlatConfigItem['rules']
354+
react?: TypedFlatConfigItem['rules']
355+
svelte?: TypedFlatConfigItem['rules']
358356
}
359357
}

‎src/utils.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import process from 'node:process'
22
import { isPackageExists } from 'local-pkg'
3-
import type { Awaitable, FlatConfigItem } from './types'
3+
import type { Awaitable, TypedFlatConfigItem } from './types'
44

55
export const parserPlain = {
66
meta: {
@@ -26,7 +26,7 @@ export const parserPlain = {
2626
/**
2727
* Combine array and non-array configs into a single array.
2828
*/
29-
export async function combine(...configs: Awaitable<FlatConfigItem | FlatConfigItem[]>[]): Promise<FlatConfigItem[]> {
29+
export async function combine(...configs: Awaitable<TypedFlatConfigItem | TypedFlatConfigItem[]>[]): Promise<TypedFlatConfigItem[]> {
3030
const resolved = await Promise.all(configs)
3131
return resolved.flat()
3232
}
@@ -76,7 +76,7 @@ export function renameRules(rules: Record<string, any>, map: Record<string, stri
7676
* })
7777
* ```
7878
*/
79-
export function renamePluginInConfigs(configs: FlatConfigItem[], map: Record<string, string>): FlatConfigItem[] {
79+
export function renamePluginInConfigs(configs: TypedFlatConfigItem[], map: Record<string, string>): TypedFlatConfigItem[] {
8080
return configs.map((i) => {
8181
const clone = { ...i }
8282
if (clone.rules)

‎test/fixtures.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { afterAll, beforeAll, it } from 'vitest'
33
import fs from 'fs-extra'
44
import { execa } from 'execa'
55
import fg from 'fast-glob'
6-
import type { FlatConfigItem, OptionsConfig } from '../src/types'
6+
import type { OptionsConfig, TypedFlatConfigItem } from '../src/types'
77

88
beforeAll(async () => {
99
await fs.rm('_fixtures', { recursive: true, force: true })
@@ -79,7 +79,7 @@ runWithConfig(
7979
},
8080
)
8181

82-
function runWithConfig(name: string, configs: OptionsConfig, ...items: FlatConfigItem[]) {
82+
function runWithConfig(name: string, configs: OptionsConfig, ...items: TypedFlatConfigItem[]) {
8383
it.concurrent(name, async ({ expect }) => {
8484
const from = resolve('fixtures/input')
8585
const output = resolve('fixtures/output', name)

‎test/types.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { Linter } from 'eslint'
2-
import type { FlatConfigItem } from '../src';
2+
import type { TypedFlatConfigItem } from '../src';
33

44
// Make sure they are compatible
5-
((): Linter.FlatConfig => ({} as FlatConfigItem))();
6-
((): FlatConfigItem => ({} as Linter.FlatConfig))()
5+
((): Linter.FlatConfig => ({} as TypedFlatConfigItem))();
6+
((): TypedFlatConfigItem => ({} as Linter.FlatConfig))()

0 commit comments

Comments
 (0)
Please sign in to comment.