Skip to content
This repository was archived by the owner on Sep 7, 2025. It is now read-only.

covenengineering/vangware-prompts

Repository files navigation

Important

This library is deprecated. Go to coven.engineering to see what we are doing nowadays.


Coverage License NPM Version Open Issues

⁉️ CLI interactive prompts. Can be used to wrap anything that matches the interface of node:readline/promises.

Usage

📦 Node

Install @vangware/prompts as a dependency:

pnpm add @vangware/prompts
# or
npm install @vangware/prompts
# or
yarn add @vangware/prompts

Import it and use it:

import { question } from "@vangware/prompts";
import { createInterface } from "node:readline/promises";

const exampleQuestion = question(
	createInterface({
		input: process.stdin,
		output: process.stdout,
	}),
);

exampleQuestion({
	format: value => parseInt(value, 18),
	query: "How old are you?",
	validate: value => (value < 18 ? "You must be at least 18 years old." : ""),
})
	.then(console.log)
	.catch(console.error)
	.finally(() => readlineInterface.close());

🦕 Deno

Import @vangware/prompts using the npm: prefix, and use it directly with the native prompt:

import { question } from "npm:@vangware/prompts";

const exampleQuestion = question({
	question: query => Promise.resolve(prompt(query)),
});

exampleQuestion({
	format: value => parseInt(value, 18),
	query: "How old are you?",
	validate: value => (value < 18 ? "You must be at least 18 years old." : ""),
})
	.then(console.log)
	.catch(console.error);

🌎 Browser

Import @vangware/prompts using esm.sh, and use it directly with the native prompt:

import { question } from "https://esm.sh/@vangware/prompts";

const exampleQuestion = question({
	question: query => Promise.resolve(prompt(query)),
});

exampleQuestion({
	format: value => parseInt(value, 18),
	query: "How old are you?",
	validate: value => (value < 18 ? "You must be at least 18 years old." : ""),
})
	.then(console.log)
	.catch(console.error);

Useful links

Contributors