Skip to content

Commit ed74e13

Browse files
committed
refactor(prompts): simplify external requires and add checkbox
- Remove intermediate *Export variables (6 lines saved) - Remove unnecessary ?? fallback operators since we control wrappers - Add checkbox prompt export with documentation - Update ActualSeparator to use selectRaw directly - Achieves 100% branch coverage (removed 3 uncovered branches) The external wrappers consistently export via module.exports, so the ?? fallbacks were redundant defensive code.
1 parent 9cccdb6 commit ed74e13

1 file changed

Lines changed: 23 additions & 11 deletions

File tree

src/stdio/prompts.ts

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -260,19 +260,31 @@ export function wrapPrompt<T = unknown>(
260260
}
261261

262262
// c8 ignore start - Third-party inquirer library requires and exports not testable in isolation.
263-
const confirmExport = /*@__PURE__*/ require('../external/@inquirer/confirm')
264-
const inputExport = /*@__PURE__*/ require('../external/@inquirer/input')
265-
const passwordExport = /*@__PURE__*/ require('../external/@inquirer/password')
266-
const searchExport = /*@__PURE__*/ require('../external/@inquirer/search')
267-
const selectExport = /*@__PURE__*/ require('../external/@inquirer/select')
268-
const confirmRaw = confirmExport.default ?? confirmExport
269-
const inputRaw = inputExport.default ?? inputExport
270-
const passwordRaw = passwordExport.default ?? passwordExport
271-
const searchRaw = searchExport.default ?? searchExport
272-
const selectRaw = selectExport.default ?? selectExport
273-
const ActualSeparator = selectExport.Separator
263+
const checkboxRaw = /*@__PURE__*/ require('../external/@inquirer/checkbox')
264+
const confirmRaw = /*@__PURE__*/ require('../external/@inquirer/confirm')
265+
const inputRaw = /*@__PURE__*/ require('../external/@inquirer/input')
266+
const passwordRaw = /*@__PURE__*/ require('../external/@inquirer/password')
267+
const searchRaw = /*@__PURE__*/ require('../external/@inquirer/search')
268+
const selectRaw = /*@__PURE__*/ require('../external/@inquirer/select')
269+
const ActualSeparator = selectRaw.Separator
274270
// c8 ignore stop
275271

272+
/**
273+
* Prompt to select multiple items from a list of choices.
274+
* Wrapped with spinner handling and abort signal support.
275+
*
276+
* @example
277+
* const choices = await checkbox({
278+
* message: 'Select options:',
279+
* choices: [
280+
* { name: 'Option 1', value: 'opt1' },
281+
* { name: 'Option 2', value: 'opt2' },
282+
* { name: 'Option 3', value: 'opt3' }
283+
* ]
284+
* })
285+
*/
286+
export const checkbox: typeof checkboxRaw = wrapPrompt(checkboxRaw)
287+
276288
/**
277289
* Prompt for a yes/no confirmation.
278290
* Wrapped with spinner handling and abort signal support.

0 commit comments

Comments
 (0)