Skip to content
This repository was archived by the owner on Feb 2, 2024. It is now read-only.

vangware/prompts

Repository files navigation

This repository's code was moved to lou.codes.


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