From 980bac6265d8349fbc7f66d02e637cbadfc113d3 Mon Sep 17 00:00:00 2001 From: Florian Keller Date: Sun, 23 Sep 2018 18:45:09 +0200 Subject: [PATCH] Add types for cli-interact --- types/cli-interact/cli-interact-tests.ts | 22 +++++++++++++++++++ types/cli-interact/index.d.ts | 27 ++++++++++++++++++++++++ types/cli-interact/tsconfig.json | 23 ++++++++++++++++++++ types/cli-interact/tslint.json | 1 + 4 files changed, 73 insertions(+) create mode 100644 types/cli-interact/cli-interact-tests.ts create mode 100644 types/cli-interact/index.d.ts create mode 100644 types/cli-interact/tsconfig.json create mode 100644 types/cli-interact/tslint.json diff --git a/types/cli-interact/cli-interact-tests.ts b/types/cli-interact/cli-interact-tests.ts new file mode 100644 index 0000000000..89e55ee46f --- /dev/null +++ b/types/cli-interact/cli-interact-tests.ts @@ -0,0 +1,22 @@ +import * as cliInteract from 'cli-interact'; + +cliInteract.getChar('Tell me one of', 'abcdef'); +cliInteract.getChoiceByChar('frequency', ['daily', 'weekly', 'monthly']); +cliInteract.getChoiceByChar('frequency', ['daily', 'weekly', 'monthly'], true); +cliInteract.getChoice('frequency', ['daily', 'weekly', 'monthly']); +cliInteract.getChoice('frequency', ['daily', 'weekly', 'monthly'], { + returnNumeric: true, +}); +cliInteract.getIPversion(true); +cliInteract.getNumber('Case 1: You MAY give me a number: ', {allowNoAnswer: true}); +cliInteract.getNumber('Case 2: You MUST give me a number: '); +cliInteract.getNumber('Case 3: You MUST give me an integer: ', true); +cliInteract.getNumber('Case 4: You MAY give me an answer. If you do, it MUST be an integer', { + allowNoAnswer: true, + requireInteger: true, +}); +cliInteract.getYesNo('Is it true', true); +cliInteract.getYesNo('Is it true'); +cliInteract.question('Tell me what do you want: ', { + charlist: 'yn' +}); diff --git a/types/cli-interact/index.d.ts b/types/cli-interact/index.d.ts new file mode 100644 index 0000000000..eb05aa682e --- /dev/null +++ b/types/cli-interact/index.d.ts @@ -0,0 +1,27 @@ +// Type definitions for cli-interact 0.1 +// Project: https://github.com/zhami/cli-interact +// Definitions by: Florian Keller +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import { BasicOptions } from 'readline-sync'; + +export interface ChoiceOptions { + allowNoAnswer?: boolean; + returnNumeric?: boolean; +} + +export interface NumberOptions { + allowNoAnswer?: boolean; + requireInteger?: boolean; +} + +export function getChar(promptText: string, allowedCharsAsString: string, flagAllowNoAnswer?: boolean): string; +export function getChoice(title: string, choices: string[], opts: ChoiceOptions & {returnNumeric: true}): number; +export function getChoice(title: string, choices: string[], opts?: ChoiceOptions): string; +export function getChoiceByChar(title: string, choices: string[], flagAllowNoAnswer?: boolean): string; +export function getInteger(promptText: string): number; +export function getIPversion(flagAllowNoAnswer?: boolean): string; +export function getNumber(promptText: string, opts?: boolean | NumberOptions): number; +export function getYesNo(title: string, flagAllowNoAnswer: true): boolean | undefined; +export function getYesNo(title: string, flagAllowNoAnswer?: false): boolean; +export function question(prompt: string, options?: BasicOptions): string; diff --git a/types/cli-interact/tsconfig.json b/types/cli-interact/tsconfig.json new file mode 100644 index 0000000000..76750910d6 --- /dev/null +++ b/types/cli-interact/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "cli-interact-tests.ts" + ] +} diff --git a/types/cli-interact/tslint.json b/types/cli-interact/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/cli-interact/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }