@inquirer/input
Advanced tools
+10
-15
| { | ||
| "name": "@inquirer/input", | ||
| "version": "5.0.0", | ||
| "version": "5.0.1", | ||
| "description": "Inquirer input text 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 InputTheme = { | ||
| validationFailureMode: 'keep' | 'clear'; | ||
| }; | ||
| type InputConfig = { | ||
| message: string; | ||
| default?: string; | ||
| prefill?: 'tab' | 'editable'; | ||
| required?: boolean; | ||
| transformer?: (value: string, { isFinal }: { | ||
| isFinal: boolean; | ||
| }) => string; | ||
| validate?: (value: string) => boolean | string | Promise<string | boolean>; | ||
| theme?: PartialDeep<Theme<InputTheme>>; | ||
| pattern?: RegExp; | ||
| patternError?: string; | ||
| }; | ||
| declare const _default: import("@inquirer/type").Prompt<string, InputConfig>; | ||
| export default _default; |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const core_1 = require("@inquirer/core"); | ||
| const inputTheme = { | ||
| validationFailureMode: 'keep', | ||
| }; | ||
| exports.default = (0, core_1.createPrompt)((config, done) => { | ||
| const { prefill = 'tab' } = config; | ||
| const theme = (0, core_1.makeTheme)(inputTheme, config.theme); | ||
| const [status, setStatus] = (0, core_1.useState)('idle'); | ||
| const [defaultValue = '', setDefaultValue] = (0, core_1.useState)(config.default); | ||
| const [errorMsg, setError] = (0, core_1.useState)(); | ||
| const [value, setValue] = (0, core_1.useState)(''); | ||
| const prefix = (0, core_1.usePrefix)({ status, theme }); | ||
| async function validate(value) { | ||
| const { required, pattern, patternError = 'Invalid input' } = config; | ||
| if (required && !value) { | ||
| return 'You must provide a value'; | ||
| } | ||
| if (pattern && !pattern.test(value)) { | ||
| return patternError; | ||
| } | ||
| if (typeof config.validate === 'function') { | ||
| return (await config.validate(value)) || 'You must provide a valid value'; | ||
| } | ||
| return true; | ||
| } | ||
| (0, core_1.useKeypress)(async (key, rl) => { | ||
| // Ignore keypress while our prompt is doing other processing. | ||
| if (status !== 'idle') { | ||
| return; | ||
| } | ||
| if ((0, core_1.isEnterKey)(key)) { | ||
| const answer = value || defaultValue; | ||
| setStatus('loading'); | ||
| const isValid = await validate(answer); | ||
| if (isValid === true) { | ||
| setValue(answer); | ||
| setStatus('done'); | ||
| done(answer); | ||
| } | ||
| else { | ||
| if (theme.validationFailureMode === 'clear') { | ||
| setValue(''); | ||
| } | ||
| else { | ||
| // Reset the readline line value to the previous value. On line event, the value | ||
| // get cleared, forcing the user to re-enter the value instead of fixing it. | ||
| rl.write(value); | ||
| } | ||
| setError(isValid); | ||
| setStatus('idle'); | ||
| } | ||
| } | ||
| else if ((0, core_1.isBackspaceKey)(key) && !value) { | ||
| setDefaultValue(undefined); | ||
| } | ||
| else if ((0, core_1.isTabKey)(key) && !value) { | ||
| setDefaultValue(undefined); | ||
| rl.clearLine(0); // Remove the tab character. | ||
| rl.write(defaultValue); | ||
| setValue(defaultValue); | ||
| } | ||
| else { | ||
| setValue(rl.line); | ||
| setError(undefined); | ||
| } | ||
| }); | ||
| // If prefill is set to 'editable' cut out the default value and paste into current state and the user's cli buffer | ||
| // They can edit the value immediately instead of needing to press 'tab' | ||
| (0, core_1.useEffect)((rl) => { | ||
| if (prefill === 'editable' && defaultValue) { | ||
| rl.write(defaultValue); | ||
| setValue(defaultValue); | ||
| } | ||
| }, []); | ||
| const message = theme.style.message(config.message, status); | ||
| let formattedValue = value; | ||
| if (typeof config.transformer === 'function') { | ||
| formattedValue = config.transformer(value, { isFinal: status === 'done' }); | ||
| } | ||
| else if (status === 'done') { | ||
| formattedValue = theme.style.answer(value); | ||
| } | ||
| let defaultStr; | ||
| if (defaultValue && status !== 'done' && !value) { | ||
| defaultStr = theme.style.defaultAnswer(defaultValue); | ||
| } | ||
| let error = ''; | ||
| if (errorMsg) { | ||
| error = theme.style.error(errorMsg); | ||
| } | ||
| return [ | ||
| [prefix, message, defaultStr, formattedValue] | ||
| .filter((v) => v !== undefined) | ||
| .join(' '), | ||
| error, | ||
| ]; | ||
| }); |
| { | ||
| "type": "commonjs" | ||
| } |
| import { type Theme } from '@inquirer/core'; | ||
| import type { PartialDeep } from '@inquirer/type'; | ||
| type InputTheme = { | ||
| validationFailureMode: 'keep' | 'clear'; | ||
| }; | ||
| type InputConfig = { | ||
| message: string; | ||
| default?: string; | ||
| prefill?: 'tab' | 'editable'; | ||
| required?: boolean; | ||
| transformer?: (value: string, { isFinal }: { | ||
| isFinal: boolean; | ||
| }) => string; | ||
| validate?: (value: string) => boolean | string | Promise<string | boolean>; | ||
| theme?: PartialDeep<Theme<InputTheme>>; | ||
| pattern?: RegExp; | ||
| patternError?: string; | ||
| }; | ||
| declare const _default: import("@inquirer/type").Prompt<string, InputConfig>; | ||
| export default _default; |
| import { createPrompt, useState, useKeypress, useEffect, usePrefix, isBackspaceKey, isEnterKey, isTabKey, makeTheme, } from '@inquirer/core'; | ||
| const inputTheme = { | ||
| validationFailureMode: 'keep', | ||
| }; | ||
| export default createPrompt((config, done) => { | ||
| const { prefill = 'tab' } = config; | ||
| const theme = makeTheme(inputTheme, config.theme); | ||
| const [status, setStatus] = useState('idle'); | ||
| const [defaultValue = '', setDefaultValue] = useState(config.default); | ||
| const [errorMsg, setError] = useState(); | ||
| const [value, setValue] = useState(''); | ||
| const prefix = usePrefix({ status, theme }); | ||
| async function validate(value) { | ||
| const { required, pattern, patternError = 'Invalid input' } = config; | ||
| if (required && !value) { | ||
| return 'You must provide a value'; | ||
| } | ||
| if (pattern && !pattern.test(value)) { | ||
| return patternError; | ||
| } | ||
| if (typeof config.validate === 'function') { | ||
| return (await config.validate(value)) || 'You must provide a valid value'; | ||
| } | ||
| return true; | ||
| } | ||
| useKeypress(async (key, rl) => { | ||
| // Ignore keypress while our prompt is doing other processing. | ||
| if (status !== 'idle') { | ||
| return; | ||
| } | ||
| if (isEnterKey(key)) { | ||
| const answer = value || defaultValue; | ||
| setStatus('loading'); | ||
| const isValid = await validate(answer); | ||
| if (isValid === true) { | ||
| setValue(answer); | ||
| setStatus('done'); | ||
| done(answer); | ||
| } | ||
| else { | ||
| if (theme.validationFailureMode === 'clear') { | ||
| setValue(''); | ||
| } | ||
| else { | ||
| // Reset the readline line value to the previous value. On line event, the value | ||
| // get cleared, forcing the user to re-enter the value instead of fixing it. | ||
| rl.write(value); | ||
| } | ||
| setError(isValid); | ||
| setStatus('idle'); | ||
| } | ||
| } | ||
| else if (isBackspaceKey(key) && !value) { | ||
| setDefaultValue(undefined); | ||
| } | ||
| else if (isTabKey(key) && !value) { | ||
| setDefaultValue(undefined); | ||
| rl.clearLine(0); // Remove the tab character. | ||
| rl.write(defaultValue); | ||
| setValue(defaultValue); | ||
| } | ||
| else { | ||
| setValue(rl.line); | ||
| setError(undefined); | ||
| } | ||
| }); | ||
| // If prefill is set to 'editable' cut out the default value and paste into current state and the user's cli buffer | ||
| // They can edit the value immediately instead of needing to press 'tab' | ||
| useEffect((rl) => { | ||
| if (prefill === 'editable' && defaultValue) { | ||
| rl.write(defaultValue); | ||
| setValue(defaultValue); | ||
| } | ||
| }, []); | ||
| const message = theme.style.message(config.message, status); | ||
| let formattedValue = value; | ||
| if (typeof config.transformer === 'function') { | ||
| formattedValue = config.transformer(value, { isFinal: status === 'done' }); | ||
| } | ||
| else if (status === 'done') { | ||
| formattedValue = theme.style.answer(value); | ||
| } | ||
| let defaultStr; | ||
| if (defaultValue && status !== 'done' && !value) { | ||
| defaultStr = theme.style.defaultAnswer(defaultValue); | ||
| } | ||
| let error = ''; | ||
| if (errorMsg) { | ||
| error = theme.style.error(errorMsg); | ||
| } | ||
| return [ | ||
| [prefix, message, defaultStr, formattedValue] | ||
| .filter((v) => v !== undefined) | ||
| .join(' '), | ||
| error, | ||
| ]; | ||
| }); |
| { | ||
| "type": "module" | ||
| } |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
2
-33.33%12143
-42%5
-54.55%117
-66.86%1
Infinity%Updated
Updated