Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/smooth-horses-greet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"eslint-plugin-import-x": minor
---

Expose flat configs in `configs` object to allow use of ESLint `extends`
52 changes: 32 additions & 20 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,42 +131,23 @@ const rules = {
'imports-first': importsFirst,
} satisfies Record<string, TSESLint.RuleModule<string, readonly unknown[]>>

const configs = {
recommended,

errors,
warnings,

// shhhh... work in progress "secret" rules
'stage-0': stage0,

// useful stuff for folks using various environments
react,
'react-native': reactNative,
electron,
typescript,
} satisfies Record<string, PluginConfig>

// Base Plugin Object
const plugin_ = {
meta,
configs,
rules,
cjsRequire,
importXResolverCompat,
createNodeResolver,
}

const plugin = plugin_ as typeof plugin_ & { flatConfigs: typeof flatConfigs }

// Create flat configs (Only ones that declare plugins and parser options need to be different from the legacy config)
const createFlatConfig = (
baseConfig: PluginFlatBaseConfig,
configName: string,
): PluginFlatConfig => ({
...baseConfig,
name: `import-x/${configName}`,
plugins: { 'import-x': plugin },
plugins: { 'import-x': plugin_ },
})

const flatConfigs = {
Expand All @@ -185,7 +166,38 @@ const flatConfigs = {
typescript: createFlatConfig(typescriptFlat, 'typescript'),
} satisfies Record<string, PluginFlatConfig>

const configs = {
recommended,

errors,
warnings,

// shhhh... work in progress "secret" rules
'stage-0': stage0,

// useful stuff for folks using various environments
react,
'react-native': reactNative,
electron,
typescript,

'flat/recommended': flatConfigs.recommended,
'flat/errors': flatConfigs.errors,
'flat/warnings': flatConfigs.warnings,
'flat/stage-0': flatConfigs['stage-0'],
'flat/react': flatConfigs.react,
'flat/react-native': flatConfigs['react-native'],
'flat/electron': flatConfigs.electron,
'flat/typescript': flatConfigs.typescript,
} satisfies Record<string, PluginConfig | PluginFlatConfig>

const plugin = plugin_ as typeof plugin_ & {
flatConfigs: typeof flatConfigs
configs: typeof configs
}

plugin.flatConfigs = flatConfigs
plugin.configs = configs

export default plugin

Expand Down
Loading