@topcli/prompts 3.0.0 → 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,121 +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;
12
13
  type ValidTransformationResponse<T> = {
13
- isValid: true;
14
- transformed: T;
14
+ isValid: true;
15
+ transformed: T;
15
16
  };
16
17
  type TransformationResponse<T> = InvalidResponse | ValidTransformationResponse<T>;
17
18
  interface PromptValidator<T extends string | string[]> {
18
- validate: (input: T) => ValidationResponse | Promise<ValidationResponse>;
19
+ validate: (input: T) => ValidationResponse | Promise<ValidationResponse>;
19
20
  }
20
21
  interface PromptTransformer<T> {
21
- transform: (input: string) => TransformationResponse<T> | Promise<TransformationResponse<T>>;
22
+ transform: (input: string) => TransformationResponse<T> | Promise<TransformationResponse<T>>;
22
23
  }
23
24
  declare function required(): PromptValidator<any>;
24
-
25
+ //#endregion
26
+ //#region src/prompt-agent.d.ts
25
27
  declare class PromptAgent<T = string> {
26
- #private;
27
- /**
28
- * The prompts answers queue.
29
- * When not empty, any prompt will be answered by the first answer in this list.
30
- */
31
- nextAnswers: T[];
32
- static agent<T>(): PromptAgent<T>;
33
- constructor(instancier: symbol);
34
- /**
35
- * Programmatically set the next answer for any prompt (`question()`, `confirm()`, `select()`)
36
- *
37
- * This is useful for testing.
38
- *
39
- * @example
40
- * ```js
41
- * const promptAgent = PromptAgent.agent();
42
- * promptAgent.nextAnswer("toto");
43
- *
44
- * const input = await question("what is your name?");
45
- * assert.equal(input, "toto");
46
- * ```
47
- */
48
- 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;
49
51
  }
50
-
52
+ //#endregion
53
+ //#region src/transformers.d.ts
51
54
  declare function number(): PromptTransformer<number>;
52
55
  declare function integer(): PromptTransformer<number>;
53
56
  declare function url(): PromptTransformer<URL>;
54
-
57
+ //#endregion
58
+ //#region src/types.d.ts
55
59
  interface Choice<T extends string> {
56
- value: T;
57
- label: string;
58
- description?: string;
60
+ value: T;
61
+ label: string;
62
+ description?: string;
63
+ disabled?: boolean | string;
59
64
  }
60
-
65
+ interface Separator {
66
+ type: "separator";
67
+ label?: string;
68
+ }
69
+ //#endregion
70
+ //#region src/prompts/abstract.d.ts
61
71
  type Stdin = NodeJS.ReadStream & {
62
- fd: 0;
72
+ fd: 0;
63
73
  };
64
74
  type Stdout = NodeJS.WriteStream & {
65
- fd: 1;
75
+ fd: 1;
66
76
  };
67
77
  interface AbstractPromptOptions {
68
- stdin?: Stdin;
69
- stdout?: Stdout;
70
- message: string;
71
- skip?: boolean;
72
- signal?: AbortSignal;
78
+ stdin?: Stdin;
79
+ stdout?: Stdout;
80
+ message: string;
81
+ skip?: boolean;
82
+ signal?: AbortSignal;
73
83
  }
74
-
84
+ //#endregion
85
+ //#region src/prompts/question.d.ts
75
86
  interface QuestionOptions<T = string> extends AbstractPromptOptions {
76
- defaultValue?: string;
77
- validators?: PromptValidator<string>[];
78
- transformer?: PromptTransformer<T>;
79
- secure?: boolean | {
80
- placeholder: string;
81
- };
87
+ defaultValue?: string;
88
+ validators?: PromptValidator<string>[];
89
+ transformer?: PromptTransformer<T>;
90
+ secure?: boolean | {
91
+ placeholder: string;
92
+ };
82
93
  }
83
-
94
+ //#endregion
95
+ //#region src/prompts/confirm.d.ts
84
96
  interface ConfirmOptions extends AbstractPromptOptions {
85
- initial?: boolean;
97
+ initial?: boolean;
86
98
  }
87
-
99
+ //#endregion
100
+ //#region src/prompts/select.d.ts
88
101
  interface SelectOptions<T extends string> extends AbstractPromptOptions {
89
- choices: (Choice<T> | T)[];
90
- maxVisible?: number;
91
- ignoreValues?: (T | number | boolean)[];
92
- validators?: PromptValidator<string>[];
93
- autocomplete?: boolean;
94
- 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;
95
108
  }
96
-
109
+ //#endregion
110
+ //#region src/prompts/multiselect.d.ts
97
111
  interface MultiselectOptions<T extends string> extends AbstractPromptOptions {
98
- choices: (Choice<T> | T)[];
99
- maxVisible?: number;
100
- preSelectedChoices?: (Choice<T> | T)[];
101
- validators?: PromptValidator<string[]>[];
102
- autocomplete?: boolean;
103
- caseSensitive?: boolean;
104
- 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;
105
119
  }
106
-
120
+ //#endregion
121
+ //#region src/index.d.ts
107
122
  declare function question<T = string>(message: string, options?: Omit<QuestionOptions<T>, "message">): Promise<T>;
108
123
  declare function select<T extends string>(message: string, options: Omit<SelectOptions<T>, "message">): Promise<T>;
109
124
  declare function confirm(message: string, options?: Omit<ConfirmOptions, "message">): Promise<boolean>;
110
125
  declare function multiselect<T extends string>(message: string, options: Omit<MultiselectOptions<T>, "message">): Promise<T[]>;
111
-
112
126
  declare const validators: {
113
- required: typeof required;
127
+ required: typeof required;
114
128
  };
115
129
  declare const transformers: {
116
- number: typeof number;
117
- integer: typeof integer;
118
- url: typeof url;
130
+ number: typeof number;
131
+ integer: typeof integer;
132
+ url: typeof url;
119
133
  };
120
-
121
- export { type AbstractPromptOptions, type Choice, type ConfirmOptions, type InvalidResponse, type InvalidResponseObject, type MultiselectOptions, PromptAgent, type PromptTransformer, type PromptValidator, type QuestionOptions, type SelectOptions, type TransformationResponse, type ValidResponse, type ValidResponseObject, type ValidTransformationResponse, type ValidationResponse, type ValidationResponseObject, confirm, multiselect, question, select, transformers, validators };
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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"}