11import type { Args } from '../../types/args.ts' ;
22import type { IsPluginEnabled , Plugin , ResolveConfig } from '../../types/config.ts' ;
3- import { toDeferResolve , toDependency } from '../../util/input.ts' ;
3+ import { toDeferResolve , toDependency , type Input } from '../../util/input.ts' ;
44import { hasDependency } from '../../util/plugin.ts' ;
5- import type { PrettierConfig } from './types.ts' ;
5+ import type { PrettierConfig , PrettierOptions } from './types.ts' ;
66
77// https://prettier.io/docs/en/configuration.html
88// https://github.com/prettier/prettier/blob/main/src/config/prettier-config/config-searcher.js
@@ -23,9 +23,28 @@ const config = [
2323const resolveConfig : ResolveConfig < PrettierConfig > = config => {
2424 if ( typeof config === 'string' ) return [ toDeferResolve ( config ) ] ;
2525
26- return Array . isArray ( config . plugins )
27- ? config . plugins . filter ( ( plugin ) : plugin is string => typeof plugin === 'string' ) . map ( id => toDependency ( id ) )
28- : [ ] ;
26+ const result = new Set < Input > ( ) ;
27+
28+ const processOptions = ( options : PrettierOptions ) => {
29+ if ( Array . isArray ( options . plugins ) ) {
30+ for ( const plugin of options . plugins ) {
31+ if ( typeof plugin === 'string' ) {
32+ result . add ( toDependency ( plugin ) ) ;
33+ }
34+ }
35+ }
36+ } ;
37+
38+ processOptions ( config ) ;
39+ if ( config . overrides ) {
40+ for ( const override of config . overrides ) {
41+ if ( override . options ) {
42+ processOptions ( override . options ) ;
43+ }
44+ }
45+ }
46+
47+ return Array . from ( result ) ;
2948} ;
3049
3150const args : Args = {
0 commit comments