1+ import path from 'node:path' ;
12import { addViteConfig , defineWxtModule } from '../modules' ;
23import type {
34 EslintGlobalsPropValue ,
@@ -49,16 +50,16 @@ export default defineWxtModule({
4950 // Only create global types when user has enabled auto-imports
5051 entries . push ( await getImportsDeclarationEntry ( unimport ) ) ;
5152
53+ // Only generate ESLint config if that feature is enabled
5254 if ( wxt . config . imports . eslintrc . enabled === false ) return ;
5355
54- // Only generate ESLint config if that feature is enabled
55- entries . push (
56- await getEslintConfigEntry (
57- unimport ,
58- wxt . config . imports . eslintrc . enabled ,
59- wxt . config . imports ,
60- ) ,
56+ const eslintConfigEntries = await getEslintConfigEntry (
57+ unimport ,
58+ wxt . config . imports . eslintrc . enabled ,
59+ wxt . config . imports ,
6160 ) ;
61+
62+ entries . push ( ...eslintConfigEntries ) ;
6263 } ) ;
6364
6465 // Add vite plugin
@@ -105,7 +106,7 @@ async function getEslintConfigEntry(
105106 unimport : Unimport ,
106107 version : 8 | 9 ,
107108 options : WxtResolvedUnimportOptions ,
108- ) : Promise < WxtDirFileEntry > {
109+ ) : Promise < WxtDirFileEntry [ ] > {
109110 const globals = ( await unimport . getImports ( ) )
110111 . map ( ( i ) => i . as ?? i . name )
111112 . filter ( Boolean )
@@ -115,7 +116,7 @@ async function getEslintConfigEntry(
115116 return globals ;
116117 } , { } ) ;
117118
118- if ( version <= 8 ) return getEslint8ConfigEntry ( options , globals ) ;
119+ if ( version <= 8 ) return [ getEslint8ConfigEntry ( options , globals ) ] ;
119120 else return getEslint9ConfigEntry ( options , globals ) ;
120121}
121122
@@ -132,8 +133,8 @@ export function getEslint8ConfigEntry(
132133export function getEslint9ConfigEntry (
133134 options : WxtResolvedUnimportOptions ,
134135 globals : Record < string , EslintGlobalsPropValue > ,
135- ) : WxtDirFileEntry {
136- return {
136+ ) : WxtDirFileEntry [ ] {
137+ const javaScriptFileEntry : WxtDirFileEntry = {
137138 path : options . eslintrc . filePath ,
138139 text : `const globals = ${ JSON . stringify ( globals , null , 2 ) }
139140
@@ -147,4 +148,26 @@ export default {
147148};
148149` ,
149150 } ;
151+
152+ const javaScriptFileDirname = path . dirname ( options . eslintrc . filePath ) ;
153+ const javaScriptFileExtension = path . extname ( options . eslintrc . filePath ) ;
154+ const javaScriptFileBasename = path . basename (
155+ options . eslintrc . filePath ,
156+ javaScriptFileExtension ,
157+ ) ;
158+
159+ const typeScriptFilePath = path . join (
160+ javaScriptFileDirname ,
161+ `${ javaScriptFileBasename } .d.ts` ,
162+ ) ;
163+
164+ const typeScriptFileEntry : WxtDirFileEntry = {
165+ path : typeScriptFilePath ,
166+ text : `import type { ConfigObject } from "@eslint/core";
167+ declare const config: ConfigObject;
168+ export default config;
169+ ` ,
170+ } ;
171+
172+ return [ javaScriptFileEntry , typeScriptFileEntry ] ;
150173}
0 commit comments