From 1d5090a739f57727e54b11976d2a43db9523692d Mon Sep 17 00:00:00 2001 From: Daniel Perez Alvarez Date: Fri, 2 Nov 2018 16:16:07 -0400 Subject: [PATCH 1/8] [prompts] infer answers types ``` const answers = await prompts({ name: "hello" }) answers.asdf // error answers.name // good ``` --- types/prompts/index.d.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/types/prompts/index.d.ts b/types/prompts/index.d.ts index 152d6326e8..498a6b0c33 100644 --- a/types/prompts/index.d.ts +++ b/types/prompts/index.d.ts @@ -6,7 +6,7 @@ export = prompts; -declare function prompts(questions: prompts.PromptObject | prompts.PromptObject[], options?: prompts.Options): any; +declare function prompts(questions: prompts.PromptObject | prompts.PromptObject[], options?: prompts.Options): prompts.Answers; declare namespace prompts { // Circular reference from prompts @@ -51,9 +51,9 @@ declare namespace prompts { onCancel: (prompt: PromptObject, answers: any) => void; } - interface PromptObject { + interface PromptObject { type: string | ((prev: any, values: any, prompt: PromptObject) => void); - name: string | ((prev: any, values: any, prompt: PromptObject) => void); + name: T | ((prev: any, values: any, prompt: PromptObject) => void); message?: string | ((prev: any, values: any, prompt: PromptObject) => void); initial?: string; style?: string; @@ -73,4 +73,6 @@ declare namespace prompts { suggest?: ((prev: any, values: any, prompt: PromptObject) => void); limit?: number; } + + type Answers = { [id in T]: string }; } From 1596d8fa41b3f4ead68a9dfc9d299ace430bd375 Mon Sep 17 00:00:00 2001 From: Daniel Perez Alvarez Date: Fri, 2 Nov 2018 16:22:38 -0400 Subject: [PATCH 2/8] [prompts] upgrade ts version --- types/prompts/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/prompts/index.d.ts b/types/prompts/index.d.ts index 498a6b0c33..cbec1d3ed7 100644 --- a/types/prompts/index.d.ts +++ b/types/prompts/index.d.ts @@ -2,7 +2,7 @@ // Project: https://github.com/terkelg/prompts // Definitions by: Berkay GURSOY // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.1 +// TypeScript Version: 2.3 export = prompts; From 3f661f9239153ec881f8545266b241f0ace9f6f1 Mon Sep 17 00:00:00 2001 From: Daniel Perez Alvarez Date: Fri, 2 Nov 2018 16:36:20 -0400 Subject: [PATCH 3/8] Update index.d.ts --- types/prompts/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/prompts/index.d.ts b/types/prompts/index.d.ts index cbec1d3ed7..1bc9c0ca66 100644 --- a/types/prompts/index.d.ts +++ b/types/prompts/index.d.ts @@ -6,7 +6,7 @@ export = prompts; -declare function prompts(questions: prompts.PromptObject | prompts.PromptObject[], options?: prompts.Options): prompts.Answers; +declare function prompts(questions: prompts.PromptObject | Array>, options?: prompts.Options): prompts.Answers; declare namespace prompts { // Circular reference from prompts @@ -73,6 +73,6 @@ declare namespace prompts { suggest?: ((prev: any, values: any, prompt: PromptObject) => void); limit?: number; } - + type Answers = { [id in T]: string }; } From d8b9276ec0b8fd5a4fb74dae2aa4951f4483f170 Mon Sep 17 00:00:00 2001 From: Daniel Perez Alvarez Date: Fri, 2 Nov 2018 17:45:48 -0400 Subject: [PATCH 4/8] Update index.d.ts --- types/prompts/index.d.ts | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/types/prompts/index.d.ts b/types/prompts/index.d.ts index 1bc9c0ca66..b5b9f38285 100644 --- a/types/prompts/index.d.ts +++ b/types/prompts/index.d.ts @@ -6,7 +6,10 @@ export = prompts; -declare function prompts(questions: prompts.PromptObject | Array>, options?: prompts.Options): prompts.Answers; +declare function prompts( + questions: prompts.PromptObject | Array>, + options?: prompts.Options +): Promise>; declare namespace prompts { // Circular reference from prompts @@ -15,8 +18,7 @@ declare namespace prompts { function inject(obj: any): void; namespace inject { - const prototype: { - }; + const prototype: {}; } namespace prompts { @@ -52,14 +54,14 @@ declare namespace prompts { } interface PromptObject { - type: string | ((prev: any, values: any, prompt: PromptObject) => void); - name: T | ((prev: any, values: any, prompt: PromptObject) => void); - message?: string | ((prev: any, values: any, prompt: PromptObject) => void); + type: ValueOrFunc; + name: ValueOrFunc; + message?: ValueOrFunc; initial?: string; style?: string; - format?: ((prev: any, values: any, prompt: PromptObject) => void); - validate?: ((prev: any, values: any, prompt: PromptObject) => void); - onState?: ((prev: any, values: any, prompt: PromptObject) => void); + format?: PrevCaller; + validate?: PrevCaller; + onState?: PrevCaller; min?: number; max?: number; float?: boolean; @@ -74,5 +76,13 @@ declare namespace prompts { limit?: number; } - type Answers = { [id in T]: string }; + type Answers = { [id in T]: any }; + + type PrevCaller = ( + prev: any, + values: Answers, + prompt: PromptObject + ) => R; + + type ValueOrFunc = T | PrevCaller; } From be502a6c4bbd853dd10f7eb14bf371e40110c12e Mon Sep 17 00:00:00 2001 From: Daniel Perez Alvarez Date: Fri, 2 Nov 2018 18:04:02 -0400 Subject: [PATCH 5/8] Update prompts-tests.ts --- types/prompts/prompts-tests.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/types/prompts/prompts-tests.ts b/types/prompts/prompts-tests.ts index 0b89cb3721..bd35868c66 100644 --- a/types/prompts/prompts-tests.ts +++ b/types/prompts/prompts-tests.ts @@ -1,8 +1,14 @@ import prompts = require("prompts"); -const response = prompts({ - type: 'number', - name: 'value', - message: 'Input value to double:', - validate: (value: any) => value < 0 ? `Cant be less than zero` : true -}); +type HasProperty = K extends keyof T ? true : false; + +(async () => { + const response = await prompts({ + type: "number", + name: "value", + message: "Input value to double:", + validate: (value: any) => (value < 0 ? `Cant be less than zero` : true) + }); + const HasPropValue: HasProperty = true; + const DoesntHavePropAsdf: HasProperty = false; +})(); From 76cb0a95c9ec11e43ba79a074d808be8e7944726 Mon Sep 17 00:00:00 2001 From: Daniel Perez Alvarez Date: Fri, 2 Nov 2018 18:07:39 -0400 Subject: [PATCH 6/8] Update index.d.ts --- types/prompts/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/types/prompts/index.d.ts b/types/prompts/index.d.ts index b5b9f38285..9155ded98b 100644 --- a/types/prompts/index.d.ts +++ b/types/prompts/index.d.ts @@ -1,6 +1,7 @@ // Type definitions for prompts 1.1 // Project: https://github.com/terkelg/prompts // Definitions by: Berkay GURSOY +// Daniel Perez Alvarez // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 From a341af86b1685e2b45b100da1cd580a6d05193a6 Mon Sep 17 00:00:00 2001 From: Daniel Perez Alvarez Date: Fri, 2 Nov 2018 18:33:51 -0400 Subject: [PATCH 7/8] Update index.d.ts --- types/prompts/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/prompts/index.d.ts b/types/prompts/index.d.ts index 9155ded98b..6982173159 100644 --- a/types/prompts/index.d.ts +++ b/types/prompts/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: Berkay GURSOY // Daniel Perez Alvarez // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.8 export = prompts; From 2ab4320c9c34aff98377268c996dfee2852a58d7 Mon Sep 17 00:00:00 2001 From: Daniel Perez Alvarez Date: Fri, 2 Nov 2018 18:48:39 -0400 Subject: [PATCH 8/8] Update index.d.ts --- types/prompts/index.d.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/types/prompts/index.d.ts b/types/prompts/index.d.ts index 6982173159..7aa3f2ea63 100644 --- a/types/prompts/index.d.ts +++ b/types/prompts/index.d.ts @@ -77,13 +77,13 @@ declare namespace prompts { limit?: number; } - type Answers = { [id in T]: any }; + type Answers = { [id in T]: any }; - type PrevCaller = ( + type PrevCaller = ( prev: any, values: Answers, prompt: PromptObject ) => R; - type ValueOrFunc = T | PrevCaller; + type ValueOrFunc = T | PrevCaller; }