@inquirer/confirm
Advanced tools
| 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}`; | ||
| }); |
+14
-30
| { | ||
| "name": "@inquirer/confirm", | ||
| "version": "5.1.21", | ||
| "version": "6.0.0", | ||
| "description": "Inquirer confirm prompt", | ||
@@ -55,16 +55,4 @@ "keywords": [ | ||
| "./package.json": "./package.json", | ||
| ".": { | ||
| "import": { | ||
| "types": "./dist/esm/index.d.ts", | ||
| "default": "./dist/esm/index.js" | ||
| }, | ||
| "require": { | ||
| "types": "./dist/commonjs/index.d.ts", | ||
| "default": "./dist/commonjs/index.js" | ||
| } | ||
| } | ||
| ".": "./src/index.ts" | ||
| }, | ||
| "main": "./dist/commonjs/index.js", | ||
| "module": "./dist/esm/index.js", | ||
| "types": "./dist/commonjs/index.d.ts", | ||
| "files": [ | ||
@@ -74,28 +62,24 @@ "dist" | ||
| "scripts": { | ||
| "attw": "attw --pack", | ||
| "tsc": "tshy" | ||
| "tsc": "tsc" | ||
| }, | ||
| "dependencies": { | ||
| "@inquirer/core": "^10.3.2", | ||
| "@inquirer/type": "^3.0.10" | ||
| "@inquirer/core": "^11.0.0", | ||
| "@inquirer/type": "^4.0.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@arethetypeswrong/cli": "^0.18.2", | ||
| "@inquirer/testing": "^2.1.53", | ||
| "@inquirer/testing": "^3.0.0", | ||
| "@repo/tsconfig": "0.0.0", | ||
| "tshy": "^3.0.3" | ||
| "typescript": "^5.9.3" | ||
| }, | ||
| "engines": { | ||
| "node": ">=18" | ||
| "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" | ||
| }, | ||
| "publishConfig": { | ||
| "access": "public" | ||
| }, | ||
| "tshy": { | ||
| "exclude": [ | ||
| "src/**/*.test.ts" | ||
| ], | ||
| "access": "public", | ||
| "exports": { | ||
| "./package.json": "./package.json", | ||
| ".": "./src/index.ts" | ||
| ".": { | ||
| "types": "./dist/index.d.ts", | ||
| "default": "./dist/index.js" | ||
| } | ||
| } | ||
@@ -111,3 +95,3 @@ }, | ||
| }, | ||
| "gitHead": "4731a373881368e2f701c41adc67bc83244bf89f" | ||
| "gitHead": "676685d33374a30340c1b9f0831c7eae2b2357dd" | ||
| } |
11219
17.62%3
-25%11
22.22%176
49.15%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated