@@ -4,14 +4,21 @@ import type { Import } from 'unimport'
44import type { Nuxt } from '@nuxt/schema'
55import { relative , resolve } from 'pathe'
66import { getPort } from 'get-port-please'
7- import type { ESLintPluginAddon } from '../types'
7+ import type { ESLintConfigGenAddon } from '../types'
88import type { NuxtESLintConfigOptions } from '@nuxt/eslint-config/flat'
99import { ConfigGenOptions , ModuleOptions } from '../module'
10+ import { createAddonGlobals } from '../config-addons/globals'
1011
11- export function setupConfigGen ( options : ModuleOptions , nuxt : Nuxt ) {
12- const addons : ESLintPluginAddon [ ] = [ ]
12+ export async function setupConfigGen ( options : ModuleOptions , nuxt : Nuxt ) {
13+ const addons : ESLintConfigGenAddon [ ] = [
14+ createAddonGlobals ( nuxt ) ,
15+ ]
1316
1417 // TODO: hook to add more addons
18+ // nuxt.hook('app:resolve', async () => {
19+ // await nuxt.callHook('eslint:config:addons', addons)
20+ // })
21+
1522 addTemplate ( {
1623 filename : 'eslint.config.mjs' ,
1724 write : true ,
@@ -23,9 +30,9 @@ export function setupConfigGen(options: ModuleOptions, nuxt: Nuxt) {
2330 setupDevToolsIntegration ( nuxt )
2431}
2532
26- function generateESLintConfig ( options : ModuleOptions , nuxt : Nuxt , addons : ESLintPluginAddon [ ] ) {
33+ async function generateESLintConfig ( options : ModuleOptions , nuxt : Nuxt , addons : ESLintConfigGenAddon [ ] ) {
2734 const importLines : Import [ ] = [ ]
28- const configLines : string [ ] = [ ]
35+ const configItems : string [ ] = [ ]
2936
3037 const config : ConfigGenOptions = {
3138 standalone : true ,
@@ -46,22 +53,27 @@ function generateESLintConfig(options: ModuleOptions, nuxt: Nuxt, addons: ESLint
4653 dirs : getDirs ( nuxt ) ,
4754 }
4855
49- configLines . push ( `...createConfigForNuxt(\n ${ JSON . stringify ( basicOptions , null , 2 ) } \n), ` )
56+ configItems . push ( `// Nuxt Configs\n ...createConfigForNuxt(${ JSON . stringify ( basicOptions , null , 2 ) } ) ` )
5057
51- for ( const mod of addons ) {
52- importLines . push ( ...mod . imports )
53- configLines . push ( ...mod . configs )
58+ for ( const addon of addons ) {
59+ const resolved = await addon ( )
60+ if ( resolved ?. imports )
61+ importLines . push ( ...resolved . imports )
62+ if ( resolved ?. configs )
63+ configItems . push ( ...resolved . configs )
5464 }
5565
5666 return [
5767 '// ESLint config generated by Nuxt' ,
5868 stringifyImports ( importLines , false ) ,
69+ '' ,
5970 `export default [` ,
60- ... configLines ,
71+ configItems . join ( ',\n\n' ) ,
6172 `]` ,
6273 '' ,
6374 ] . join ( '\n' )
6475}
76+
6577function setupDevToolsIntegration ( nuxt : Nuxt ) {
6678 let viewerProcess : ReturnType < typeof import ( '@nuxt/devtools-kit' ) [ 'startSubprocess' ] > | undefined
6779 let viewerPort : number | undefined
@@ -124,6 +136,7 @@ function setupDevToolsIntegration(nuxt: Nuxt) {
124136 } )
125137 } )
126138}
139+
127140function getDirs ( nuxt : Nuxt ) : NuxtESLintConfigOptions [ 'dirs' ] {
128141 const dirs : Required < NuxtESLintConfigOptions [ 'dirs' ] > = {
129142 pages : [ ] ,
0 commit comments