@topcli/prompts 2.4.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +13 -13
- package/README.md +387 -275
- package/dist/index.cjs +1166 -1042
- package/dist/index.d.cts +105 -68
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +139 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +1175 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +68 -55
- package/dist/index.d.ts +0 -99
- package/dist/index.js +0 -1039
package/dist/index.d.cts
CHANGED
|
@@ -1,99 +1,136 @@
|
|
|
1
|
+
//#region src/validators.d.ts
|
|
1
2
|
type ValidResponseObject = {
|
|
2
|
-
|
|
3
|
+
isValid?: true;
|
|
3
4
|
};
|
|
4
5
|
type InvalidResponseObject = {
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
isValid: false;
|
|
7
|
+
error: string;
|
|
7
8
|
};
|
|
8
9
|
type ValidationResponseObject = ValidResponseObject | InvalidResponseObject;
|
|
9
10
|
type ValidationResponse = InvalidResponse | ValidResponse;
|
|
10
11
|
type InvalidResponse = string | InvalidResponseObject;
|
|
11
12
|
type ValidResponse = null | undefined | true | ValidResponseObject;
|
|
13
|
+
type ValidTransformationResponse<T> = {
|
|
14
|
+
isValid: true;
|
|
15
|
+
transformed: T;
|
|
16
|
+
};
|
|
17
|
+
type TransformationResponse<T> = InvalidResponse | ValidTransformationResponse<T>;
|
|
12
18
|
interface PromptValidator<T extends string | string[]> {
|
|
13
|
-
|
|
19
|
+
validate: (input: T) => ValidationResponse | Promise<ValidationResponse>;
|
|
20
|
+
}
|
|
21
|
+
interface PromptTransformer<T> {
|
|
22
|
+
transform: (input: string) => TransformationResponse<T> | Promise<TransformationResponse<T>>;
|
|
14
23
|
}
|
|
15
24
|
declare function required(): PromptValidator<any>;
|
|
16
|
-
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/prompt-agent.d.ts
|
|
17
27
|
declare class PromptAgent<T = string> {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
28
|
+
#private;
|
|
29
|
+
/**
|
|
30
|
+
* The prompts answers queue.
|
|
31
|
+
* When not empty, any prompt will be answered by the first answer in this list.
|
|
32
|
+
*/
|
|
33
|
+
nextAnswers: T[];
|
|
34
|
+
static agent<T>(): PromptAgent<T>;
|
|
35
|
+
constructor(instancier: symbol);
|
|
36
|
+
/**
|
|
37
|
+
* Programmatically set the next answer for any prompt (`question()`, `confirm()`, `select()`)
|
|
38
|
+
*
|
|
39
|
+
* This is useful for testing.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```js
|
|
43
|
+
* const promptAgent = PromptAgent.agent();
|
|
44
|
+
* promptAgent.nextAnswer("toto");
|
|
45
|
+
*
|
|
46
|
+
* const input = await question("what is your name?");
|
|
47
|
+
* assert.equal(input, "toto");
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
nextAnswer(value: T): void;
|
|
41
51
|
}
|
|
42
|
-
|
|
52
|
+
//#endregion
|
|
53
|
+
//#region src/transformers.d.ts
|
|
54
|
+
declare function number(): PromptTransformer<number>;
|
|
55
|
+
declare function integer(): PromptTransformer<number>;
|
|
56
|
+
declare function url(): PromptTransformer<URL>;
|
|
57
|
+
//#endregion
|
|
58
|
+
//#region src/types.d.ts
|
|
43
59
|
interface Choice<T extends string> {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
60
|
+
value: T;
|
|
61
|
+
label: string;
|
|
62
|
+
description?: string;
|
|
63
|
+
disabled?: boolean | string;
|
|
64
|
+
}
|
|
65
|
+
interface Separator {
|
|
66
|
+
type: "separator";
|
|
67
|
+
label?: string;
|
|
47
68
|
}
|
|
48
|
-
|
|
69
|
+
//#endregion
|
|
70
|
+
//#region src/prompts/abstract.d.ts
|
|
49
71
|
type Stdin = NodeJS.ReadStream & {
|
|
50
|
-
|
|
72
|
+
fd: 0;
|
|
51
73
|
};
|
|
52
74
|
type Stdout = NodeJS.WriteStream & {
|
|
53
|
-
|
|
75
|
+
fd: 1;
|
|
54
76
|
};
|
|
55
77
|
interface AbstractPromptOptions {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
78
|
+
stdin?: Stdin;
|
|
79
|
+
stdout?: Stdout;
|
|
80
|
+
message: string;
|
|
81
|
+
skip?: boolean;
|
|
82
|
+
signal?: AbortSignal;
|
|
61
83
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
84
|
+
//#endregion
|
|
85
|
+
//#region src/prompts/question.d.ts
|
|
86
|
+
interface QuestionOptions<T = string> extends AbstractPromptOptions {
|
|
87
|
+
defaultValue?: string;
|
|
88
|
+
validators?: PromptValidator<string>[];
|
|
89
|
+
transformer?: PromptTransformer<T>;
|
|
90
|
+
secure?: boolean | {
|
|
91
|
+
placeholder: string;
|
|
92
|
+
};
|
|
69
93
|
}
|
|
70
|
-
|
|
94
|
+
//#endregion
|
|
95
|
+
//#region src/prompts/confirm.d.ts
|
|
71
96
|
interface ConfirmOptions extends AbstractPromptOptions {
|
|
72
|
-
|
|
97
|
+
initial?: boolean;
|
|
73
98
|
}
|
|
74
|
-
|
|
99
|
+
//#endregion
|
|
100
|
+
//#region src/prompts/select.d.ts
|
|
75
101
|
interface SelectOptions<T extends string> extends AbstractPromptOptions {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
102
|
+
choices: (Choice<T> | T | Separator)[];
|
|
103
|
+
maxVisible?: number;
|
|
104
|
+
ignoreValues?: (T | number | boolean)[];
|
|
105
|
+
validators?: PromptValidator<string>[];
|
|
106
|
+
autocomplete?: boolean;
|
|
107
|
+
caseSensitive?: boolean;
|
|
82
108
|
}
|
|
83
|
-
|
|
109
|
+
//#endregion
|
|
110
|
+
//#region src/prompts/multiselect.d.ts
|
|
84
111
|
interface MultiselectOptions<T extends string> extends AbstractPromptOptions {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
112
|
+
choices: (Choice<T> | T | Separator)[];
|
|
113
|
+
maxVisible?: number;
|
|
114
|
+
preSelectedChoices?: (Choice<T> | T)[];
|
|
115
|
+
validators?: PromptValidator<string[]>[];
|
|
116
|
+
autocomplete?: boolean;
|
|
117
|
+
caseSensitive?: boolean;
|
|
118
|
+
showHint?: boolean;
|
|
92
119
|
}
|
|
93
|
-
|
|
94
|
-
|
|
120
|
+
//#endregion
|
|
121
|
+
//#region src/index.d.ts
|
|
122
|
+
declare function question<T = string>(message: string, options?: Omit<QuestionOptions<T>, "message">): Promise<T>;
|
|
95
123
|
declare function select<T extends string>(message: string, options: Omit<SelectOptions<T>, "message">): Promise<T>;
|
|
96
124
|
declare function confirm(message: string, options?: Omit<ConfirmOptions, "message">): Promise<boolean>;
|
|
97
125
|
declare function multiselect<T extends string>(message: string, options: Omit<MultiselectOptions<T>, "message">): Promise<T[]>;
|
|
98
|
-
|
|
99
|
-
|
|
126
|
+
declare const validators: {
|
|
127
|
+
required: typeof required;
|
|
128
|
+
};
|
|
129
|
+
declare const transformers: {
|
|
130
|
+
number: typeof number;
|
|
131
|
+
integer: typeof integer;
|
|
132
|
+
url: typeof url;
|
|
133
|
+
};
|
|
134
|
+
//#endregion
|
|
135
|
+
export { type AbstractPromptOptions, type Choice, type ConfirmOptions, type InvalidResponse, type InvalidResponseObject, type MultiselectOptions, PromptAgent, type PromptTransformer, type PromptValidator, type QuestionOptions, type SelectOptions, type Separator, type TransformationResponse, type ValidResponse, type ValidResponseObject, type ValidTransformationResponse, type ValidationResponse, type ValidationResponseObject, confirm, multiselect, question, select, transformers, validators };
|
|
136
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/validators.ts","../src/prompt-agent.ts","../src/transformers.ts","../src/types.ts","../src/prompts/abstract.ts","../src/prompts/question.ts","../src/prompts/confirm.ts","../src/prompts/select.ts","../src/prompts/multiselect.ts","../src/index.ts"],"mappings":"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"}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import EventEmitter from "node:events";
|
|
2
|
+
import readline from "node:readline";
|
|
3
|
+
|
|
4
|
+
//#region src/validators.d.ts
|
|
5
|
+
type ValidResponseObject = {
|
|
6
|
+
isValid?: true;
|
|
7
|
+
};
|
|
8
|
+
type InvalidResponseObject = {
|
|
9
|
+
isValid: false;
|
|
10
|
+
error: string;
|
|
11
|
+
};
|
|
12
|
+
type ValidationResponseObject = ValidResponseObject | InvalidResponseObject;
|
|
13
|
+
type ValidationResponse = InvalidResponse | ValidResponse;
|
|
14
|
+
type InvalidResponse = string | InvalidResponseObject;
|
|
15
|
+
type ValidResponse = null | undefined | true | ValidResponseObject;
|
|
16
|
+
type ValidTransformationResponse<T> = {
|
|
17
|
+
isValid: true;
|
|
18
|
+
transformed: T;
|
|
19
|
+
};
|
|
20
|
+
type TransformationResponse<T> = InvalidResponse | ValidTransformationResponse<T>;
|
|
21
|
+
interface PromptValidator<T extends string | string[]> {
|
|
22
|
+
validate: (input: T) => ValidationResponse | Promise<ValidationResponse>;
|
|
23
|
+
}
|
|
24
|
+
interface PromptTransformer<T> {
|
|
25
|
+
transform: (input: string) => TransformationResponse<T> | Promise<TransformationResponse<T>>;
|
|
26
|
+
}
|
|
27
|
+
declare function required(): PromptValidator<any>;
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/prompt-agent.d.ts
|
|
30
|
+
declare class PromptAgent<T = string> {
|
|
31
|
+
#private;
|
|
32
|
+
/**
|
|
33
|
+
* The prompts answers queue.
|
|
34
|
+
* When not empty, any prompt will be answered by the first answer in this list.
|
|
35
|
+
*/
|
|
36
|
+
nextAnswers: T[];
|
|
37
|
+
static agent<T>(): PromptAgent<T>;
|
|
38
|
+
constructor(instancier: symbol);
|
|
39
|
+
/**
|
|
40
|
+
* Programmatically set the next answer for any prompt (`question()`, `confirm()`, `select()`)
|
|
41
|
+
*
|
|
42
|
+
* This is useful for testing.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```js
|
|
46
|
+
* const promptAgent = PromptAgent.agent();
|
|
47
|
+
* promptAgent.nextAnswer("toto");
|
|
48
|
+
*
|
|
49
|
+
* const input = await question("what is your name?");
|
|
50
|
+
* assert.equal(input, "toto");
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
nextAnswer(value: T): void;
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
//#region src/transformers.d.ts
|
|
57
|
+
declare function number(): PromptTransformer<number>;
|
|
58
|
+
declare function integer(): PromptTransformer<number>;
|
|
59
|
+
declare function url(): PromptTransformer<URL>;
|
|
60
|
+
//#endregion
|
|
61
|
+
//#region src/types.d.ts
|
|
62
|
+
interface Choice<T extends string> {
|
|
63
|
+
value: T;
|
|
64
|
+
label: string;
|
|
65
|
+
description?: string;
|
|
66
|
+
disabled?: boolean | string;
|
|
67
|
+
}
|
|
68
|
+
interface Separator {
|
|
69
|
+
type: "separator";
|
|
70
|
+
label?: string;
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
//#region src/prompts/abstract.d.ts
|
|
74
|
+
type Stdin = NodeJS.ReadStream & {
|
|
75
|
+
fd: 0;
|
|
76
|
+
};
|
|
77
|
+
type Stdout = NodeJS.WriteStream & {
|
|
78
|
+
fd: 1;
|
|
79
|
+
};
|
|
80
|
+
interface AbstractPromptOptions {
|
|
81
|
+
stdin?: Stdin;
|
|
82
|
+
stdout?: Stdout;
|
|
83
|
+
message: string;
|
|
84
|
+
skip?: boolean;
|
|
85
|
+
signal?: AbortSignal;
|
|
86
|
+
}
|
|
87
|
+
//#endregion
|
|
88
|
+
//#region src/prompts/question.d.ts
|
|
89
|
+
interface QuestionOptions<T = string> extends AbstractPromptOptions {
|
|
90
|
+
defaultValue?: string;
|
|
91
|
+
validators?: PromptValidator<string>[];
|
|
92
|
+
transformer?: PromptTransformer<T>;
|
|
93
|
+
secure?: boolean | {
|
|
94
|
+
placeholder: string;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
//#endregion
|
|
98
|
+
//#region src/prompts/confirm.d.ts
|
|
99
|
+
interface ConfirmOptions extends AbstractPromptOptions {
|
|
100
|
+
initial?: boolean;
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
103
|
+
//#region src/prompts/select.d.ts
|
|
104
|
+
interface SelectOptions<T extends string> extends AbstractPromptOptions {
|
|
105
|
+
choices: (Choice<T> | T | Separator)[];
|
|
106
|
+
maxVisible?: number;
|
|
107
|
+
ignoreValues?: (T | number | boolean)[];
|
|
108
|
+
validators?: PromptValidator<string>[];
|
|
109
|
+
autocomplete?: boolean;
|
|
110
|
+
caseSensitive?: boolean;
|
|
111
|
+
}
|
|
112
|
+
//#endregion
|
|
113
|
+
//#region src/prompts/multiselect.d.ts
|
|
114
|
+
interface MultiselectOptions<T extends string> extends AbstractPromptOptions {
|
|
115
|
+
choices: (Choice<T> | T | Separator)[];
|
|
116
|
+
maxVisible?: number;
|
|
117
|
+
preSelectedChoices?: (Choice<T> | T)[];
|
|
118
|
+
validators?: PromptValidator<string[]>[];
|
|
119
|
+
autocomplete?: boolean;
|
|
120
|
+
caseSensitive?: boolean;
|
|
121
|
+
showHint?: boolean;
|
|
122
|
+
}
|
|
123
|
+
//#endregion
|
|
124
|
+
//#region src/index.d.ts
|
|
125
|
+
declare function question<T = string>(message: string, options?: Omit<QuestionOptions<T>, "message">): Promise<T>;
|
|
126
|
+
declare function select<T extends string>(message: string, options: Omit<SelectOptions<T>, "message">): Promise<T>;
|
|
127
|
+
declare function confirm(message: string, options?: Omit<ConfirmOptions, "message">): Promise<boolean>;
|
|
128
|
+
declare function multiselect<T extends string>(message: string, options: Omit<MultiselectOptions<T>, "message">): Promise<T[]>;
|
|
129
|
+
declare const validators: {
|
|
130
|
+
required: typeof required;
|
|
131
|
+
};
|
|
132
|
+
declare const transformers: {
|
|
133
|
+
number: typeof number;
|
|
134
|
+
integer: typeof integer;
|
|
135
|
+
url: typeof url;
|
|
136
|
+
};
|
|
137
|
+
//#endregion
|
|
138
|
+
export { type AbstractPromptOptions, type Choice, type ConfirmOptions, type InvalidResponse, type InvalidResponseObject, type MultiselectOptions, PromptAgent, type PromptTransformer, type PromptValidator, type QuestionOptions, type SelectOptions, type Separator, type TransformationResponse, type ValidResponse, type ValidResponseObject, type ValidTransformationResponse, type ValidationResponse, type ValidationResponseObject, confirm, multiselect, question, select, transformers, validators };
|
|
139
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/validators.ts","../src/prompt-agent.ts","../src/transformers.ts","../src/types.ts","../src/prompts/abstract.ts","../src/prompts/question.ts","../src/prompts/confirm.ts","../src/prompts/select.ts","../src/prompts/multiselect.ts","../src/index.ts"],"mappings":"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"}
|