@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/dist/index.d.cts CHANGED
@@ -1,99 +1,136 @@
1
+ //#region src/validators.d.ts
1
2
  type ValidResponseObject = {
2
- isValid?: true;
3
+ isValid?: true;
3
4
  };
4
5
  type InvalidResponseObject = {
5
- isValid: false;
6
- error: string;
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
- validate: (input: T) => ValidationResponse;
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
- #private;
19
- /**
20
- * The prompts answers queue.
21
- * When not empty, any prompt will be answered by the first answer in this list.
22
- */
23
- nextAnswers: T[];
24
- static agent<T>(): PromptAgent<T>;
25
- constructor(instancier: symbol);
26
- /**
27
- * Programmatically set the next answer for any prompt (`question()`, `confirm()`, `select()`)
28
- *
29
- * This is useful for testing.
30
- *
31
- * @example
32
- * ```js
33
- * const promptAgent = PromptAgent.agent();
34
- * promptAgent.nextAnswer("toto");
35
- *
36
- * const input = await question("what is your name?");
37
- * assert.equal(input, "toto");
38
- * ```
39
- */
40
- nextAnswer(value: T): void;
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
- value: T;
45
- label: string;
46
- description?: string;
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
- fd: 0;
72
+ fd: 0;
51
73
  };
52
74
  type Stdout = NodeJS.WriteStream & {
53
- fd: 1;
75
+ fd: 1;
54
76
  };
55
77
  interface AbstractPromptOptions {
56
- stdin?: Stdin;
57
- stdout?: Stdout;
58
- message: string;
59
- skip?: boolean;
60
- signal?: AbortSignal;
78
+ stdin?: Stdin;
79
+ stdout?: Stdout;
80
+ message: string;
81
+ skip?: boolean;
82
+ signal?: AbortSignal;
61
83
  }
62
-
63
- interface QuestionOptions extends AbstractPromptOptions {
64
- defaultValue?: string;
65
- validators?: PromptValidator<string>[];
66
- secure?: boolean | {
67
- placeholder: string;
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
- initial?: boolean;
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
- choices: (Choice<T> | T)[];
77
- maxVisible?: number;
78
- ignoreValues?: (T | number | boolean)[];
79
- validators?: PromptValidator<string>[];
80
- autocomplete?: boolean;
81
- caseSensitive?: boolean;
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
- choices: (Choice<T> | T)[];
86
- maxVisible?: number;
87
- preSelectedChoices?: (Choice<T> | T)[];
88
- validators?: PromptValidator<string[]>[];
89
- autocomplete?: boolean;
90
- caseSensitive?: boolean;
91
- showHint?: boolean;
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
- declare function question(message: string, options?: Omit<QuestionOptions, "message">): Promise<string>;
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
- export { type AbstractPromptOptions, type Choice, type ConfirmOptions, type InvalidResponse, type InvalidResponseObject, type MultiselectOptions, PromptAgent, type PromptValidator, type QuestionOptions, type SelectOptions, type ValidResponse, type ValidResponseObject, type ValidationResponse, type ValidationResponseObject, confirm, multiselect, question, required, select };
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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"}
@@ -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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"}