Skip to content

Commit

Permalink
feat: more relax types for merging
Browse files Browse the repository at this point in the history
  • Loading branch information
antfu committed Mar 28, 2024
1 parent 3f0993a commit ac1b726
Show file tree
Hide file tree
Showing 29 changed files with 88 additions and 89 deletions.
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -93,7 +93,7 @@
"@typescript-eslint/eslint-plugin": "^7.4.0",
"@typescript-eslint/parser": "^7.4.0",
"eslint-config-flat-gitignore": "^0.1.3",
"eslint-flat-config-utils": "^0.1.0",
"eslint-flat-config-utils": "^0.1.1",
"eslint-merge-processors": "^0.1.0",
"eslint-plugin-antfu": "^2.1.2",
"eslint-plugin-eslint-comments": "^3.2.0",
Expand Down
8 changes: 4 additions & 4 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/configs/astro.ts
@@ -1,10 +1,10 @@
import type { FlatConfigItem, OptionsFiles, OptionsOverrides, OptionsStylistic } from '../types'
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
import { GLOB_ASTRO } from '../globs'
import { interopDefault } from '../utils'

export async function astro(
options: OptionsOverrides & OptionsStylistic & OptionsFiles = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
files = [GLOB_ASTRO],
overrides = {},
Expand Down
4 changes: 2 additions & 2 deletions src/configs/comments.ts
@@ -1,7 +1,7 @@
import type { FlatConfigItem } from '../types'
import type { TypedFlatConfigItem } from '../types'
import { pluginComments } from '../plugins'

export async function comments(): Promise<FlatConfigItem[]> {
export async function comments(): Promise<TypedFlatConfigItem[]> {
return [
{
name: 'antfu:eslint-comments',
Expand Down
6 changes: 3 additions & 3 deletions src/configs/formatters.ts
Expand Up @@ -2,13 +2,13 @@ import { isPackageExists } from 'local-pkg'
import { GLOB_ASTRO, GLOB_CSS, GLOB_GRAPHQL, GLOB_LESS, GLOB_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS } from '../globs'
import type { VendoredPrettierOptions } from '../vender/prettier-types'
import { ensurePackages, interopDefault, parserPlain } from '../utils'
import type { FlatConfigItem, OptionsFormatters, StylisticConfig } from '../types'
import type { OptionsFormatters, StylisticConfig, TypedFlatConfigItem } from '../types'
import { StylisticConfigDefaults } from './stylistic'

export async function formatters(
options: OptionsFormatters | true = {},
stylistic: StylisticConfig = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
if (options === true) {
options = {
astro: isPackageExists('astro'),
Expand Down Expand Up @@ -61,7 +61,7 @@ export async function formatters(

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

const configs: FlatConfigItem[] = [
const configs: TypedFlatConfigItem[] = [
{
name: 'antfu:formatters:setup',
plugins: {
Expand Down
4 changes: 2 additions & 2 deletions src/configs/ignores.ts
@@ -1,7 +1,7 @@
import type { FlatConfigItem } from '../types'
import type { TypedFlatConfigItem } from '../types'
import { GLOB_EXCLUDE } from '../globs'

export async function ignores(): Promise<FlatConfigItem[]> {
export async function ignores(): Promise<TypedFlatConfigItem[]> {
return [
{
ignores: GLOB_EXCLUDE,
Expand Down
4 changes: 2 additions & 2 deletions src/configs/imports.ts
@@ -1,8 +1,8 @@
import type { FlatConfigItem, OptionsStylistic } from '../types'
import type { OptionsStylistic, TypedFlatConfigItem } from '../types'
import { pluginAntfu, pluginImport } from '../plugins'
import { GLOB_SRC_EXT } from '../globs'

export async function imports(options: OptionsStylistic = {}): Promise<FlatConfigItem[]> {
export async function imports(options: OptionsStylistic = {}): Promise<TypedFlatConfigItem[]> {
const {
stylistic = true,
} = options
Expand Down
4 changes: 2 additions & 2 deletions src/configs/javascript.ts
@@ -1,11 +1,11 @@
import globals from 'globals'
import type { FlatConfigItem, OptionsIsInEditor, OptionsOverrides } from '../types'
import type { OptionsIsInEditor, OptionsOverrides, TypedFlatConfigItem } from '../types'
import { pluginAntfu, pluginUnusedImports } from '../plugins'
import { GLOB_SRC, GLOB_SRC_EXT } from '../globs'

export async function javascript(
options: OptionsIsInEditor & OptionsOverrides = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
isInEditor = false,
overrides = {},
Expand Down
4 changes: 2 additions & 2 deletions src/configs/jsdoc.ts
@@ -1,7 +1,7 @@
import { interopDefault } from '../utils'
import type { FlatConfigItem, OptionsStylistic } from '../types'
import type { OptionsStylistic, TypedFlatConfigItem } from '../types'

export async function jsdoc(options: OptionsStylistic = {}): Promise<FlatConfigItem[]> {
export async function jsdoc(options: OptionsStylistic = {}): Promise<TypedFlatConfigItem[]> {
const {
stylistic = true,
} = options
Expand Down
4 changes: 2 additions & 2 deletions src/configs/jsonc.ts
@@ -1,10 +1,10 @@
import type { FlatConfigItem, OptionsFiles, OptionsOverrides, OptionsStylistic } from '../types'
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
import { GLOB_JSON, GLOB_JSON5, GLOB_JSONC } from '../globs'
import { interopDefault } from '../utils'

export async function jsonc(
options: OptionsFiles & OptionsStylistic & OptionsOverrides = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
files = [GLOB_JSON, GLOB_JSON5, GLOB_JSONC],
overrides = {},
Expand Down
4 changes: 2 additions & 2 deletions src/configs/markdown.ts
@@ -1,11 +1,11 @@
import { mergeProcessors, processorPassThrough } from 'eslint-merge-processors'
import type { FlatConfigItem, OptionsComponentExts, OptionsFiles, OptionsOverrides } from '../types'
import type { OptionsComponentExts, OptionsFiles, OptionsOverrides, TypedFlatConfigItem } from '../types'
import { GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN } from '../globs'
import { interopDefault, parserPlain } from '../utils'

export async function markdown(
options: OptionsFiles & OptionsComponentExts & OptionsOverrides = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
componentExts = [],
files = [GLOB_MARKDOWN],
Expand Down
4 changes: 2 additions & 2 deletions src/configs/node.ts
@@ -1,7 +1,7 @@
import type { FlatConfigItem } from '../types'
import type { TypedFlatConfigItem } from '../types'
import { pluginNode } from '../plugins'

export async function node(): Promise<FlatConfigItem[]> {
export async function node(): Promise<TypedFlatConfigItem[]> {
return [
{
name: 'antfu:node',
Expand Down
4 changes: 2 additions & 2 deletions src/configs/perfectionist.ts
@@ -1,12 +1,12 @@
import type { FlatConfigItem } from '../types'
import type { TypedFlatConfigItem } from '../types'
import { pluginPerfectionist } from '../plugins'

/**
* Optional perfectionist plugin for props and items sorting.
*
* @see https://github.com/azat-io/eslint-plugin-perfectionist
*/
export async function perfectionist(): Promise<FlatConfigItem[]> {
export async function perfectionist(): Promise<TypedFlatConfigItem[]> {
return [
{
name: 'antfu:perfectionist',
Expand Down
4 changes: 2 additions & 2 deletions src/configs/react.ts
@@ -1,6 +1,6 @@
import { isPackageExists } from 'local-pkg'
import { ensurePackages, interopDefault } from '../utils'
import type { FlatConfigItem, OptionsFiles, OptionsHasTypeScript, OptionsOverrides } from '../types'
import type { OptionsFiles, OptionsHasTypeScript, OptionsOverrides, TypedFlatConfigItem } from '../types'
import { GLOB_JSX, GLOB_TSX } from '../globs'

// react refresh
Expand All @@ -10,7 +10,7 @@ const ReactRefreshAllowConstantExportPackages = [

export async function react(
options: OptionsHasTypeScript & OptionsOverrides & OptionsFiles = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
files = [GLOB_JSX, GLOB_TSX],
overrides = {},
Expand Down
6 changes: 3 additions & 3 deletions src/configs/sort.ts
@@ -1,11 +1,11 @@
import type { FlatConfigItem } from '../types'
import type { TypedFlatConfigItem } from '../types'

/**
* Sort package.json
*
* Requires `jsonc` config
*/
export async function sortPackageJson(): Promise<FlatConfigItem[]> {
export async function sortPackageJson(): Promise<TypedFlatConfigItem[]> {
return [
{
files: ['**/package.json'],
Expand Down Expand Up @@ -112,7 +112,7 @@ export async function sortPackageJson(): Promise<FlatConfigItem[]> {
* Requires `jsonc` config
*/

export function sortTsconfig(): FlatConfigItem[] {
export function sortTsconfig(): TypedFlatConfigItem[] {
return [
{
files: ['**/tsconfig.json', '**/tsconfig.*.json'],
Expand Down
4 changes: 2 additions & 2 deletions src/configs/stylistic.ts
@@ -1,5 +1,5 @@
import { interopDefault } from '../utils'
import type { FlatConfigItem, OptionsOverrides, StylisticConfig } from '../types'
import type { OptionsOverrides, StylisticConfig, TypedFlatConfigItem } from '../types'
import { pluginAntfu } from '../plugins'

export const StylisticConfigDefaults: StylisticConfig = {
Expand All @@ -11,7 +11,7 @@ export const StylisticConfigDefaults: StylisticConfig = {

export async function stylistic(
options: StylisticConfig & OptionsOverrides = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
indent,
jsx,
Expand Down
4 changes: 2 additions & 2 deletions src/configs/svelte.ts
@@ -1,10 +1,10 @@
import { ensurePackages, interopDefault } from '../utils'
import type { FlatConfigItem, OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic } from '../types'
import type { OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
import { GLOB_SVELTE } from '../globs'

export async function svelte(
options: OptionsHasTypeScript & OptionsOverrides & OptionsStylistic & OptionsFiles = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
files = [GLOB_SVELTE],
overrides = {},
Expand Down
4 changes: 2 additions & 2 deletions src/configs/test.ts
@@ -1,10 +1,10 @@
import { interopDefault } from '../utils'
import type { FlatConfigItem, OptionsFiles, OptionsIsInEditor, OptionsOverrides } from '../types'
import type { OptionsFiles, OptionsIsInEditor, OptionsOverrides, TypedFlatConfigItem } from '../types'
import { GLOB_TESTS } from '../globs'

export async function test(
options: OptionsFiles & OptionsIsInEditor & OptionsOverrides = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
files = GLOB_TESTS,
isInEditor = false,
Expand Down
4 changes: 2 additions & 2 deletions src/configs/toml.ts
@@ -1,10 +1,10 @@
import type { FlatConfigItem, OptionsFiles, OptionsOverrides, OptionsStylistic } from '../types'
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
import { GLOB_TOML } from '../globs'
import { interopDefault } from '../utils'

export async function toml(
options: OptionsOverrides & OptionsStylistic & OptionsFiles = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
files = [GLOB_TOML],
overrides = {},
Expand Down
8 changes: 4 additions & 4 deletions src/configs/typescript.ts
@@ -1,12 +1,12 @@
import process from 'node:process'
import { GLOB_SRC, GLOB_TS, GLOB_TSX } from '../globs'
import type { FlatConfigItem, OptionsComponentExts, OptionsFiles, OptionsOverrides, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes } from '../types'
import type { OptionsComponentExts, OptionsFiles, OptionsOverrides, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, TypedFlatConfigItem } from '../types'
import { pluginAntfu } from '../plugins'
import { interopDefault, renameRules, toArray } from '../utils'

export async function typescript(
options: OptionsFiles & OptionsComponentExts & OptionsOverrides & OptionsTypeScriptWithTypes & OptionsTypeScriptParserOptions = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
componentExts = [],
overrides = {},
Expand All @@ -24,7 +24,7 @@ export async function typescript(
: undefined
const isTypeAware = !!tsconfigPath

const typeAwareRules: FlatConfigItem['rules'] = {
const typeAwareRules: TypedFlatConfigItem['rules'] = {
'dot-notation': 'off',
'no-implied-eval': 'off',
'no-throw-literal': 'off',
Expand Down Expand Up @@ -54,7 +54,7 @@ export async function typescript(
interopDefault(import('@typescript-eslint/parser')),
] as const)

function makeParser(typeAware: boolean, files: string[], ignores?: string[]): FlatConfigItem {
function makeParser(typeAware: boolean, files: string[], ignores?: string[]): TypedFlatConfigItem {
return {
files,
...ignores ? { ignores } : {},
Expand Down
4 changes: 2 additions & 2 deletions src/configs/unicorn.ts
@@ -1,7 +1,7 @@
import type { FlatConfigItem } from '../types'
import type { TypedFlatConfigItem } from '../types'
import { pluginUnicorn } from '../plugins'

export async function unicorn(): Promise<FlatConfigItem[]> {
export async function unicorn(): Promise<TypedFlatConfigItem[]> {
return [
{
name: 'antfu:unicorn',
Expand Down
4 changes: 2 additions & 2 deletions src/configs/unocss.ts
@@ -1,9 +1,9 @@
import { ensurePackages, interopDefault } from '../utils'
import type { FlatConfigItem, OptionsUnoCSS } from '../types'
import type { OptionsUnoCSS, TypedFlatConfigItem } from '../types'

export async function unocss(
options: OptionsUnoCSS = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
attributify = true,
strict = false,
Expand Down
4 changes: 2 additions & 2 deletions src/configs/vue.ts
@@ -1,11 +1,11 @@
import { mergeProcessors } from 'eslint-merge-processors'
import { interopDefault } from '../utils'
import type { FlatConfigItem, OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic, OptionsVue } from '../types'
import type { OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic, OptionsVue, TypedFlatConfigItem } from '../types'
import { GLOB_VUE } from '../globs'

export async function vue(
options: OptionsVue & OptionsHasTypeScript & OptionsOverrides & OptionsStylistic & OptionsFiles = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
files = [GLOB_VUE],
overrides = {},
Expand Down
4 changes: 2 additions & 2 deletions src/configs/yaml.ts
@@ -1,10 +1,10 @@
import type { FlatConfigItem, OptionsFiles, OptionsOverrides, OptionsStylistic } from '../types'
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
import { GLOB_YAML } from '../globs'
import { interopDefault } from '../utils'

export async function yaml(
options: OptionsOverrides & OptionsStylistic & OptionsFiles = {},
): Promise<FlatConfigItem[]> {
): Promise<TypedFlatConfigItem[]> {
const {
files = [GLOB_YAML],
overrides = {},
Expand Down

0 comments on commit ac1b726

Please sign in to comment.