@inquirer/confirm
Advanced tools
+10
-15
| { | ||
| "name": "@inquirer/confirm", | ||
| "version": "6.0.0", | ||
| "version": "6.0.1", | ||
| "description": "Inquirer confirm prompt", | ||
@@ -55,3 +55,6 @@ "keywords": [ | ||
| "./package.json": "./package.json", | ||
| ".": "./src/index.ts" | ||
| ".": { | ||
| "types": "./dist/index.d.ts", | ||
| "default": "./dist/index.js" | ||
| } | ||
| }, | ||
@@ -65,8 +68,7 @@ "files": [ | ||
| "dependencies": { | ||
| "@inquirer/core": "^11.0.0", | ||
| "@inquirer/type": "^4.0.0" | ||
| "@inquirer/core": "^11.0.1", | ||
| "@inquirer/type": "^4.0.1" | ||
| }, | ||
| "devDependencies": { | ||
| "@inquirer/testing": "^3.0.0", | ||
| "@repo/tsconfig": "0.0.0", | ||
| "@inquirer/testing": "^3.0.1", | ||
| "typescript": "^5.9.3" | ||
@@ -78,10 +80,3 @@ }, | ||
| "publishConfig": { | ||
| "access": "public", | ||
| "exports": { | ||
| "./package.json": "./package.json", | ||
| ".": { | ||
| "types": "./dist/index.d.ts", | ||
| "default": "./dist/index.js" | ||
| } | ||
| } | ||
| "access": "public" | ||
| }, | ||
@@ -96,3 +91,3 @@ "peerDependencies": { | ||
| }, | ||
| "gitHead": "676685d33374a30340c1b9f0831c7eae2b2357dd" | ||
| "gitHead": "cce79ce3b9bbdfb4dbb798078cf3b94b9adc7d1b" | ||
| } |
| import { type Theme } from '@inquirer/core'; | ||
| import type { PartialDeep } from '@inquirer/type'; | ||
| type ConfirmConfig = { | ||
| message: string; | ||
| default?: boolean; | ||
| transformer?: (value: boolean) => string; | ||
| theme?: PartialDeep<Theme>; | ||
| }; | ||
| declare const _default: import("@inquirer/type").Prompt<boolean, ConfirmConfig>; | ||
| export default _default; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const core_1 = require("@inquirer/core"); | ||
| function getBooleanValue(value, defaultValue) { | ||
| let answer = defaultValue !== false; | ||
| if (/^(y|yes)/i.test(value)) | ||
| answer = true; | ||
| else if (/^(n|no)/i.test(value)) | ||
| answer = false; | ||
| return answer; | ||
| } | ||
| function boolToString(value) { | ||
| return value ? 'Yes' : 'No'; | ||
| } | ||
| exports.default = (0, core_1.createPrompt)((config, done) => { | ||
| const { transformer = boolToString } = config; | ||
| const [status, setStatus] = (0, core_1.useState)('idle'); | ||
| const [value, setValue] = (0, core_1.useState)(''); | ||
| const theme = (0, core_1.makeTheme)(config.theme); | ||
| const prefix = (0, core_1.usePrefix)({ status, theme }); | ||
| (0, core_1.useKeypress)((key, rl) => { | ||
| if (status !== 'idle') | ||
| return; | ||
| if ((0, core_1.isEnterKey)(key)) { | ||
| const answer = getBooleanValue(value, config.default); | ||
| setValue(transformer(answer)); | ||
| setStatus('done'); | ||
| done(answer); | ||
| } | ||
| else if ((0, core_1.isTabKey)(key)) { | ||
| const answer = boolToString(!getBooleanValue(value, config.default)); | ||
| rl.clearLine(0); // Remove the tab character. | ||
| rl.write(answer); | ||
| setValue(answer); | ||
| } | ||
| else { | ||
| setValue(rl.line); | ||
| } | ||
| }); | ||
| let formattedValue = value; | ||
| let defaultValue = ''; | ||
| if (status === 'done') { | ||
| formattedValue = theme.style.answer(value); | ||
| } | ||
| else { | ||
| defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? 'y/N' : 'Y/n')}`; | ||
| } | ||
| const message = theme.style.message(config.message, status); | ||
| return `${prefix} ${message}${defaultValue} ${formattedValue}`; | ||
| }); |
| { | ||
| "type": "commonjs" | ||
| } |
| import { type Theme } from '@inquirer/core'; | ||
| import type { PartialDeep } from '@inquirer/type'; | ||
| type ConfirmConfig = { | ||
| message: string; | ||
| default?: boolean; | ||
| transformer?: (value: boolean) => string; | ||
| theme?: PartialDeep<Theme>; | ||
| }; | ||
| declare const _default: import("@inquirer/type").Prompt<boolean, ConfirmConfig>; | ||
| export default _default; |
| import { createPrompt, useState, useKeypress, isEnterKey, isTabKey, usePrefix, makeTheme, } from '@inquirer/core'; | ||
| function getBooleanValue(value, defaultValue) { | ||
| let answer = defaultValue !== false; | ||
| if (/^(y|yes)/i.test(value)) | ||
| answer = true; | ||
| else if (/^(n|no)/i.test(value)) | ||
| answer = false; | ||
| return answer; | ||
| } | ||
| function boolToString(value) { | ||
| return value ? 'Yes' : 'No'; | ||
| } | ||
| export default createPrompt((config, done) => { | ||
| const { transformer = boolToString } = config; | ||
| const [status, setStatus] = useState('idle'); | ||
| const [value, setValue] = useState(''); | ||
| const theme = makeTheme(config.theme); | ||
| const prefix = usePrefix({ status, theme }); | ||
| useKeypress((key, rl) => { | ||
| if (status !== 'idle') | ||
| return; | ||
| if (isEnterKey(key)) { | ||
| const answer = getBooleanValue(value, config.default); | ||
| setValue(transformer(answer)); | ||
| setStatus('done'); | ||
| done(answer); | ||
| } | ||
| else if (isTabKey(key)) { | ||
| const answer = boolToString(!getBooleanValue(value, config.default)); | ||
| rl.clearLine(0); // Remove the tab character. | ||
| rl.write(answer); | ||
| setValue(answer); | ||
| } | ||
| else { | ||
| setValue(rl.line); | ||
| } | ||
| }); | ||
| let formattedValue = value; | ||
| let defaultValue = ''; | ||
| if (status === 'done') { | ||
| formattedValue = theme.style.answer(value); | ||
| } | ||
| else { | ||
| defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? 'y/N' : 'Y/n')}`; | ||
| } | ||
| const message = theme.style.message(config.message, status); | ||
| return `${prefix} ${message}${defaultValue} ${formattedValue}`; | ||
| }); |
| { | ||
| "type": "module" | ||
| } |
2
-33.33%6859
-38.86%5
-54.55%58
-67.05%Updated
Updated