File tree Expand file tree Collapse file tree 2 files changed +28
-4
lines changed
Expand file tree Collapse file tree 2 files changed +28
-4
lines changed Original file line number Diff line number Diff line change @@ -183,6 +183,10 @@ interface HasRequiredConfigMissingOptions {
183183 userConfig ?: DxtUserConfigValues ;
184184}
185185
186+ function isInvalidSingleValue ( value : unknown ) : boolean {
187+ return value === undefined || value === null || value === "" ;
188+ }
189+
186190/**
187191 * Check if an extension has missing required configuration
188192 * @param manifest The extension manifest
@@ -203,10 +207,9 @@ export function hasRequiredConfigMissing({
203207 if ( configOption . required ) {
204208 const value = config [ key ] ;
205209 if (
206- value === undefined ||
207- value === null ||
208- value === "" ||
209- ( Array . isArray ( value ) && value . length === 0 )
210+ isInvalidSingleValue ( value ) ||
211+ ( Array . isArray ( value ) &&
212+ ( value . length === 0 || value . some ( isInvalidSingleValue ) ) )
210213 ) {
211214 return true ;
212215 }
Original file line number Diff line number Diff line change @@ -408,6 +408,27 @@ describe("hasRequiredConfigMissing", () => {
408408 expect ( result ) . toBe ( true ) ;
409409 } ) ;
410410
411+ it ( "should return true when required config is array with invalid values" , ( ) => {
412+ const manifest : DxtManifest = {
413+ ...baseManifest ,
414+ user_config : {
415+ paths : {
416+ type : "string" ,
417+ title : "Paths" ,
418+ description : "File paths" ,
419+ required : true ,
420+ multiple : true ,
421+ } ,
422+ } ,
423+ } ;
424+
425+ const result = hasRequiredConfigMissing ( {
426+ manifest,
427+ userConfig : { paths : [ "" ] } ,
428+ } ) ;
429+ expect ( result ) . toBe ( true ) ;
430+ } ) ;
431+
411432 it ( "should return true when required config is empty array" , ( ) => {
412433 const manifest : DxtManifest = {
413434 ...baseManifest ,
You can’t perform that action at this time.
0 commit comments