Skip to content

Commit 2dcc7ef

Browse files
fix: handle invalid values in arrays (#61)
1 parent 6f4ed9d commit 2dcc7ef

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

src/shared/config.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff 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
}

test/config.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff 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,

0 commit comments

Comments
 (0)