@ix-xs/node-comfort 1.2.0 → 2.0.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/CHANGELOG.md +190 -0
- package/README.md +136 -549
- package/index.js +80 -35
- package/package.json +160 -33
- package/src/Arr.js +887 -419
- package/src/Async.js +585 -0
- package/src/Cache.js +329 -0
- package/src/Checker.js +971 -539
- package/src/Cli.js +1034 -0
- package/src/Color.js +415 -0
- package/src/Crypto.js +707 -0
- package/src/Emitter.js +289 -0
- package/src/Env.js +555 -0
- package/src/FS.js +1483 -894
- package/src/Func.js +670 -353
- package/src/Http.js +538 -0
- package/src/Id.js +384 -201
- package/src/Logger.js +739 -378
- package/src/Num.js +844 -361
- package/src/Obj.js +855 -372
- package/src/SQLite.js +1308 -1005
- package/src/Schema.js +1586 -0
- package/src/Str.js +983 -436
- package/src/Sys.js +511 -0
- package/src/Time.js +1260 -422
- package/src/Utils.js +321 -325
- package/src/errors.js +292 -0
- package/types/index.d.ts +693 -526
- package/types/src/Arr.d.ts +455 -145
- package/types/src/Arr.d.ts.map +1 -1
- package/types/src/Async.d.ts +321 -0
- package/types/src/Async.d.ts.map +1 -0
- package/types/src/Cache.d.ts +195 -0
- package/types/src/Cache.d.ts.map +1 -0
- package/types/src/Checker.d.ts +501 -235
- package/types/src/Checker.d.ts.map +1 -1
- package/types/src/Cli.d.ts +582 -0
- package/types/src/Cli.d.ts.map +1 -0
- package/types/src/Color.d.ts +294 -0
- package/types/src/Color.d.ts.map +1 -0
- package/types/src/Crypto.d.ts +534 -0
- package/types/src/Crypto.d.ts.map +1 -0
- package/types/src/Emitter.d.ts +170 -0
- package/types/src/Emitter.d.ts.map +1 -0
- package/types/src/Env.d.ts +382 -0
- package/types/src/Env.d.ts.map +1 -0
- package/types/src/FS.d.ts +686 -238
- package/types/src/FS.d.ts.map +1 -1
- package/types/src/Func.d.ts +380 -135
- package/types/src/Func.d.ts.map +1 -1
- package/types/src/Http.d.ts +374 -0
- package/types/src/Http.d.ts.map +1 -0
- package/types/src/Id.d.ts +149 -68
- package/types/src/Id.d.ts.map +1 -1
- package/types/src/Logger.d.ts +363 -46
- package/types/src/Logger.d.ts.map +1 -1
- package/types/src/Num.d.ts +473 -137
- package/types/src/Num.d.ts.map +1 -1
- package/types/src/Obj.d.ts +390 -104
- package/types/src/Obj.d.ts.map +1 -1
- package/types/src/SQLite.d.ts +646 -309
- package/types/src/SQLite.d.ts.map +1 -1
- package/types/src/Schema.d.ts +940 -0
- package/types/src/Schema.d.ts.map +1 -0
- package/types/src/Str.d.ts +569 -166
- package/types/src/Str.d.ts.map +1 -1
- package/types/src/Sys.d.ts +269 -0
- package/types/src/Sys.d.ts.map +1 -0
- package/types/src/Time.d.ts +663 -204
- package/types/src/Time.d.ts.map +1 -1
- package/types/src/Utils.d.ts +154 -102
- package/types/src/Utils.d.ts.map +1 -1
- package/types/src/errors.d.ts +292 -0
- package/types/src/errors.d.ts.map +1 -0
- package/types/index.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checker.d.ts","sourceRoot":"","sources":["../../src/Checker.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Checker.d.ts","sourceRoot":"","sources":["../../src/Checker.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,582 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Border styles for `table()` and `box()`.
|
|
3
|
+
*/
|
|
4
|
+
export type BorderStyle = "rounded" | "single" | "double" | "heavy" | "ascii" | "none";
|
|
5
|
+
/**
|
|
6
|
+
* A column of `table()`.
|
|
7
|
+
*/
|
|
8
|
+
export type TableColumn = {
|
|
9
|
+
/**
|
|
10
|
+
* Property name for object rows, index for array rows.
|
|
11
|
+
*/
|
|
12
|
+
key: string | number;
|
|
13
|
+
/**
|
|
14
|
+
* Defaults to the key.
|
|
15
|
+
*/
|
|
16
|
+
header?: string | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Defaults to right for numbers, left otherwise.
|
|
19
|
+
*/
|
|
20
|
+
align?: "left" | "center" | "right" | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Longer values are cut with `…`.
|
|
23
|
+
*/
|
|
24
|
+
maxWidth?: number | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Changes the value before it's shown.
|
|
27
|
+
*/
|
|
28
|
+
format?: ((value: unknown, row: any) => unknown) | undefined;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Options for `table()`.
|
|
32
|
+
*/
|
|
33
|
+
export type TableOptions = {
|
|
34
|
+
/**
|
|
35
|
+
* Which columns, in which order. Defaults to every key found.
|
|
36
|
+
*/
|
|
37
|
+
columns?: (string | TableColumn)[] | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* `"markdown"` gives a Markdown table. Defaults to `"rounded"`.
|
|
40
|
+
*/
|
|
41
|
+
border?: BorderStyle | "markdown" | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Show the header row. Defaults to `true`.
|
|
44
|
+
*/
|
|
45
|
+
header?: boolean | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Bold header and faint borders. Automatic by default.
|
|
48
|
+
*/
|
|
49
|
+
colors?: boolean | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Spaces around cell content. Defaults to `1`.
|
|
52
|
+
*/
|
|
53
|
+
padding?: number | undefined;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Options for `box()`.
|
|
57
|
+
*/
|
|
58
|
+
export type BoxOptions = {
|
|
59
|
+
/**
|
|
60
|
+
* Shown in the top border.
|
|
61
|
+
*/
|
|
62
|
+
title?: string | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Defaults to `"rounded"`.
|
|
65
|
+
*/
|
|
66
|
+
border?: BorderStyle | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Space around the text. Defaults to `{ x: 2, y: 0 }`.
|
|
69
|
+
*/
|
|
70
|
+
padding?: number | {
|
|
71
|
+
x?: number;
|
|
72
|
+
y?: number;
|
|
73
|
+
} | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* Defaults to `"left"`.
|
|
76
|
+
*/
|
|
77
|
+
align?: "left" | "center" | "right" | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* A style name like `"green"`, or a hex code.
|
|
80
|
+
*/
|
|
81
|
+
borderColor?: string | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* Fixed inner width. Defaults to the longest line.
|
|
84
|
+
*/
|
|
85
|
+
width?: number | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Automatic by default.
|
|
88
|
+
*/
|
|
89
|
+
colors?: boolean | undefined;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Options for `spinner()`.
|
|
93
|
+
*/
|
|
94
|
+
export type SpinnerOptions = {
|
|
95
|
+
/**
|
|
96
|
+
* Animation frames. Defaults to braille dots.
|
|
97
|
+
*/
|
|
98
|
+
frames?: string[] | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Milliseconds per frame. Defaults to `80`.
|
|
101
|
+
*/
|
|
102
|
+
interval?: number | undefined;
|
|
103
|
+
/**
|
|
104
|
+
* A style name or hex code. Defaults to `"cyan"`.
|
|
105
|
+
*/
|
|
106
|
+
color?: string | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* Defaults to stderr, which keeps stdout clean for data.
|
|
109
|
+
*/
|
|
110
|
+
stream?: NodeJS.WriteStream | undefined;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* A spinner. Every method returns it.
|
|
114
|
+
*/
|
|
115
|
+
export type Spinner = {
|
|
116
|
+
/**
|
|
117
|
+
* Starts spinning, optionally with new text.
|
|
118
|
+
*/
|
|
119
|
+
start: (text?: string) => Spinner;
|
|
120
|
+
/**
|
|
121
|
+
* Stops and clears the line.
|
|
122
|
+
*/
|
|
123
|
+
stop: () => Spinner;
|
|
124
|
+
/**
|
|
125
|
+
* Stops with a green `✔`.
|
|
126
|
+
*/
|
|
127
|
+
succeed: (text?: string) => Spinner;
|
|
128
|
+
/**
|
|
129
|
+
* Stops with a red `✖`.
|
|
130
|
+
*/
|
|
131
|
+
fail: (text?: string) => Spinner;
|
|
132
|
+
/**
|
|
133
|
+
* Stops with a yellow `⚠`.
|
|
134
|
+
*/
|
|
135
|
+
warn: (text?: string) => Spinner;
|
|
136
|
+
/**
|
|
137
|
+
* Stops with a blue `ℹ`.
|
|
138
|
+
*/
|
|
139
|
+
info: (text?: string) => Spinner;
|
|
140
|
+
/**
|
|
141
|
+
* The text next to the spinner. Change it any time.
|
|
142
|
+
*/
|
|
143
|
+
text: string;
|
|
144
|
+
isSpinning: boolean;
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* Options for `progress()`.
|
|
148
|
+
*/
|
|
149
|
+
export type ProgressOptions = {
|
|
150
|
+
/**
|
|
151
|
+
* The value that means 100%.
|
|
152
|
+
*/
|
|
153
|
+
total: number;
|
|
154
|
+
/**
|
|
155
|
+
* Bar width in characters. Defaults to `30`.
|
|
156
|
+
*/
|
|
157
|
+
width?: number | undefined;
|
|
158
|
+
/**
|
|
159
|
+
* Can use `{bar}`, `{percent}`, `{value}`, `{total}`, `{eta}`, `{elapsed}`, `{rate}` and `{label}`.
|
|
160
|
+
*/
|
|
161
|
+
format?: string | undefined;
|
|
162
|
+
/**
|
|
163
|
+
* Filled character. Defaults to `"█"`.
|
|
164
|
+
*/
|
|
165
|
+
complete?: string | undefined;
|
|
166
|
+
/**
|
|
167
|
+
* Empty character. Defaults to `"░"`.
|
|
168
|
+
*/
|
|
169
|
+
incomplete?: string | undefined;
|
|
170
|
+
/**
|
|
171
|
+
* Text for `{label}`.
|
|
172
|
+
*/
|
|
173
|
+
label?: string | undefined;
|
|
174
|
+
/**
|
|
175
|
+
* Defaults to stderr.
|
|
176
|
+
*/
|
|
177
|
+
stream?: NodeJS.WriteStream | undefined;
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* A progress bar.
|
|
181
|
+
*/
|
|
182
|
+
export type ProgressBar = {
|
|
183
|
+
/**
|
|
184
|
+
* Adds to the value, 1 by default.
|
|
185
|
+
*/
|
|
186
|
+
tick: (amount?: number, label?: string) => ProgressBar;
|
|
187
|
+
/**
|
|
188
|
+
* Sets the value.
|
|
189
|
+
*/
|
|
190
|
+
update: (value: number, label?: string) => ProgressBar;
|
|
191
|
+
/**
|
|
192
|
+
* Draws the final state and frees the line.
|
|
193
|
+
*/
|
|
194
|
+
stop: () => ProgressBar;
|
|
195
|
+
value: number;
|
|
196
|
+
/**
|
|
197
|
+
* You can change it along the way.
|
|
198
|
+
*/
|
|
199
|
+
total: number;
|
|
200
|
+
/**
|
|
201
|
+
* From 0 to 100.
|
|
202
|
+
*/
|
|
203
|
+
percent: number;
|
|
204
|
+
};
|
|
205
|
+
/**
|
|
206
|
+
* Options for `prompt()`.
|
|
207
|
+
*/
|
|
208
|
+
export type PromptOptions = {
|
|
209
|
+
/**
|
|
210
|
+
* Used when the answer is empty.
|
|
211
|
+
*/
|
|
212
|
+
default?: string | undefined;
|
|
213
|
+
/**
|
|
214
|
+
* Return `true` to accept, or a message to ask again.
|
|
215
|
+
*/
|
|
216
|
+
validate?: ((answer: string) => true | string | Promise<true | string>) | undefined;
|
|
217
|
+
/**
|
|
218
|
+
* Defaults to stdin.
|
|
219
|
+
*/
|
|
220
|
+
input?: NodeJS.ReadableStream | undefined;
|
|
221
|
+
/**
|
|
222
|
+
* Defaults to stdout.
|
|
223
|
+
*/
|
|
224
|
+
output?: NodeJS.WritableStream | undefined;
|
|
225
|
+
};
|
|
226
|
+
/**
|
|
227
|
+
* Options for `confirm()`.
|
|
228
|
+
*/
|
|
229
|
+
export type ConfirmOptions = {
|
|
230
|
+
/**
|
|
231
|
+
* The answer when the user just presses Enter. Defaults to `false`.
|
|
232
|
+
*/
|
|
233
|
+
default?: boolean | undefined;
|
|
234
|
+
/**
|
|
235
|
+
* Defaults to stdin.
|
|
236
|
+
*/
|
|
237
|
+
input?: NodeJS.ReadableStream | undefined;
|
|
238
|
+
/**
|
|
239
|
+
* Defaults to stdout.
|
|
240
|
+
*/
|
|
241
|
+
output?: NodeJS.WritableStream | undefined;
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* A choice for `select()` and `multiselect()`: a string, or a label with a
|
|
245
|
+
* value of any type.
|
|
246
|
+
*/
|
|
247
|
+
export type Choice<V = string> = string | {
|
|
248
|
+
label: string;
|
|
249
|
+
value: V;
|
|
250
|
+
hint?: string;
|
|
251
|
+
disabled?: boolean;
|
|
252
|
+
};
|
|
253
|
+
/**
|
|
254
|
+
* Options for `select()` and `multiselect()`.
|
|
255
|
+
*/
|
|
256
|
+
export type SelectOptions = {
|
|
257
|
+
/**
|
|
258
|
+
* Index of the choice highlighted at first. Defaults to `0`.
|
|
259
|
+
*/
|
|
260
|
+
default?: number | undefined;
|
|
261
|
+
/**
|
|
262
|
+
* How many choices are visible at once. Defaults to `10`.
|
|
263
|
+
*/
|
|
264
|
+
pageSize?: number | undefined;
|
|
265
|
+
/**
|
|
266
|
+
* `multiselect()` only: minimum number of choices.
|
|
267
|
+
*/
|
|
268
|
+
min?: number | undefined;
|
|
269
|
+
/**
|
|
270
|
+
* Defaults to stdin.
|
|
271
|
+
*/
|
|
272
|
+
input?: NodeJS.ReadStream | undefined;
|
|
273
|
+
/**
|
|
274
|
+
* Defaults to stdout.
|
|
275
|
+
*/
|
|
276
|
+
output?: NodeJS.WriteStream | undefined;
|
|
277
|
+
};
|
|
278
|
+
/**
|
|
279
|
+
* A flag for `args()`.
|
|
280
|
+
*/
|
|
281
|
+
export type FlagSpec = {
|
|
282
|
+
/**
|
|
283
|
+
* Numbers are checked. Booleans also accept `--no-name`.
|
|
284
|
+
*/
|
|
285
|
+
type: "string" | "number" | "boolean";
|
|
286
|
+
/**
|
|
287
|
+
* One-letter alias, like `"p"` for `-p`.
|
|
288
|
+
*/
|
|
289
|
+
short?: string | undefined;
|
|
290
|
+
/**
|
|
291
|
+
* Used when the flag is missing.
|
|
292
|
+
*/
|
|
293
|
+
default?: unknown;
|
|
294
|
+
/**
|
|
295
|
+
* Can be repeated (`--tag a --tag b`); you get an array.
|
|
296
|
+
*/
|
|
297
|
+
multiple?: boolean | undefined;
|
|
298
|
+
/**
|
|
299
|
+
* Fail if it's missing.
|
|
300
|
+
*/
|
|
301
|
+
required?: boolean | undefined;
|
|
302
|
+
/**
|
|
303
|
+
* Allowed values, for string flags.
|
|
304
|
+
*/
|
|
305
|
+
choices?: readonly string[] | undefined;
|
|
306
|
+
/**
|
|
307
|
+
* Shown in `--help`.
|
|
308
|
+
*/
|
|
309
|
+
description?: string | undefined;
|
|
310
|
+
};
|
|
311
|
+
/**
|
|
312
|
+
* The type of a flag's value.
|
|
313
|
+
*/
|
|
314
|
+
export type FlagValue<F extends FlagSpec> = F["type"] extends "number" ? number : F["type"] extends "boolean" ? boolean : F extends {
|
|
315
|
+
choices: readonly (infer C)[];
|
|
316
|
+
} ? C : string;
|
|
317
|
+
/**
|
|
318
|
+
* The parsed flags, typed from the schema.
|
|
319
|
+
*/
|
|
320
|
+
export type ParsedFlags<S extends Record<string, FlagSpec>> = { [K in keyof S]: S[K] extends {
|
|
321
|
+
multiple: true;
|
|
322
|
+
} ? Array<FlagValue<S[K]>> : S[K] extends {
|
|
323
|
+
default: any;
|
|
324
|
+
} | {
|
|
325
|
+
required: true;
|
|
326
|
+
} | {
|
|
327
|
+
type: "boolean";
|
|
328
|
+
} ? FlagValue<S[K]> : FlagValue<S[K]> | undefined; };
|
|
329
|
+
/**
|
|
330
|
+
* Options for `args()`.
|
|
331
|
+
*/
|
|
332
|
+
export type ArgsOptions = {
|
|
333
|
+
/**
|
|
334
|
+
* What to parse. Defaults to `process.argv.slice(2)`.
|
|
335
|
+
*/
|
|
336
|
+
argv?: string[] | undefined;
|
|
337
|
+
/**
|
|
338
|
+
* Program name in the help. Defaults to the script name.
|
|
339
|
+
*/
|
|
340
|
+
name?: string | undefined;
|
|
341
|
+
/**
|
|
342
|
+
* Shown at the top of the help.
|
|
343
|
+
*/
|
|
344
|
+
description?: string | undefined;
|
|
345
|
+
/**
|
|
346
|
+
* A usage line, like `"<file> [options]"`.
|
|
347
|
+
*/
|
|
348
|
+
usage?: string | undefined;
|
|
349
|
+
/**
|
|
350
|
+
* Answer `--help` and `-h` by printing the help and exiting. Defaults to `true`.
|
|
351
|
+
*/
|
|
352
|
+
help?: boolean | undefined;
|
|
353
|
+
/**
|
|
354
|
+
* Answer `--version` with this version.
|
|
355
|
+
*/
|
|
356
|
+
version?: string | undefined;
|
|
357
|
+
/**
|
|
358
|
+
* Reject unknown flags, with a suggestion. Defaults to `true`.
|
|
359
|
+
*/
|
|
360
|
+
strict?: boolean | undefined;
|
|
361
|
+
};
|
|
362
|
+
/**
|
|
363
|
+
* What `args()` returns.
|
|
364
|
+
*/
|
|
365
|
+
export type ParsedArgs<S extends Record<string, FlagSpec>> = {
|
|
366
|
+
flags: ParsedFlags<S>;
|
|
367
|
+
/**
|
|
368
|
+
* Arguments that aren't flags.
|
|
369
|
+
*/
|
|
370
|
+
positionals: string[];
|
|
371
|
+
/**
|
|
372
|
+
* The generated help text.
|
|
373
|
+
*/
|
|
374
|
+
help: () => string;
|
|
375
|
+
};
|
|
376
|
+
/**
|
|
377
|
+
* One line reader per input stream, shared by every prompt, so piped lines
|
|
378
|
+
* that arrive early are queued instead of lost.
|
|
379
|
+
*/
|
|
380
|
+
export type LineReader = {
|
|
381
|
+
rl: readline.Interface;
|
|
382
|
+
lines: string[];
|
|
383
|
+
waiting: Array<{
|
|
384
|
+
resolve: (line: string) => void;
|
|
385
|
+
reject: (error: Error) => void;
|
|
386
|
+
}>;
|
|
387
|
+
closed: boolean;
|
|
388
|
+
};
|
|
389
|
+
/**
|
|
390
|
+
* Draws a table from an array of objects (keys become columns) or an array
|
|
391
|
+
* of arrays. Colors, emoji and CJK characters line up correctly.
|
|
392
|
+
*
|
|
393
|
+
* @example
|
|
394
|
+
* console.log(cli.table([
|
|
395
|
+
* { name: "Ada", role: "admin", logins: 42 },
|
|
396
|
+
* { name: "Bob", role: "user", logins: 7 },
|
|
397
|
+
* ]));
|
|
398
|
+
* // ╭──────┬───────┬────────╮
|
|
399
|
+
* // │ name │ role │ logins │
|
|
400
|
+
* // ├──────┼───────┼────────┤
|
|
401
|
+
* // │ Ada │ admin │ 42 │
|
|
402
|
+
* // │ Bob │ user │ 7 │
|
|
403
|
+
* // ╰──────┴───────┴────────╯
|
|
404
|
+
*
|
|
405
|
+
* @param {Array<Record<string, unknown>> | unknown[][]} rows
|
|
406
|
+
* @param {TableOptions} [options]
|
|
407
|
+
* @returns {string}
|
|
408
|
+
*/
|
|
409
|
+
export function table(rows: Array<Record<string, unknown>> | unknown[][], options?: TableOptions): string;
|
|
410
|
+
/**
|
|
411
|
+
* Draws a box around text.
|
|
412
|
+
*
|
|
413
|
+
* @example
|
|
414
|
+
* console.log(cli.box("Server ready\nhttp://localhost:3000", { title: "my-app", borderColor: "green" }));
|
|
415
|
+
* // ╭─ my-app ──────────────────╮
|
|
416
|
+
* // │ Server ready │
|
|
417
|
+
* // │ http://localhost:3000 │
|
|
418
|
+
* // ╰───────────────────────────╯
|
|
419
|
+
*
|
|
420
|
+
* @param {string} text
|
|
421
|
+
* @param {BoxOptions} [options]
|
|
422
|
+
* @returns {string}
|
|
423
|
+
*/
|
|
424
|
+
export function box(text: string, options?: BoxOptions): string;
|
|
425
|
+
/**
|
|
426
|
+
* A spinner for work in progress. Call `.start()`, then finish with
|
|
427
|
+
* `.succeed()`, `.fail()`, `.warn()`, `.info()` or `.stop()`.
|
|
428
|
+
*
|
|
429
|
+
* @example
|
|
430
|
+
* const spin = cli.spinner("Downloading").start();
|
|
431
|
+
* try {
|
|
432
|
+
* await download();
|
|
433
|
+
* spin.succeed("Downloaded 12 files");
|
|
434
|
+
* } catch (error) {
|
|
435
|
+
* spin.fail(`Download failed: ${error.message}`);
|
|
436
|
+
* }
|
|
437
|
+
*
|
|
438
|
+
* @param {string} [text=""]
|
|
439
|
+
* @param {SpinnerOptions} [options]
|
|
440
|
+
* @returns {Spinner} Not started yet.
|
|
441
|
+
*/
|
|
442
|
+
export function spinner(text?: string, options?: SpinnerOptions): Spinner;
|
|
443
|
+
/**
|
|
444
|
+
* A progress bar with percentage, ETA and speed. It redraws at most every
|
|
445
|
+
* 50 ms, so calling `tick()` in a tight loop is fine.
|
|
446
|
+
*
|
|
447
|
+
* @example
|
|
448
|
+
* const bar = cli.progress({ total: files.length, format: "{bar} {percent}% {label}" });
|
|
449
|
+
* for (const file of files) {
|
|
450
|
+
* await upload(file);
|
|
451
|
+
* bar.tick(1, file.name);
|
|
452
|
+
* }
|
|
453
|
+
* bar.stop();
|
|
454
|
+
*
|
|
455
|
+
* @param {ProgressOptions} options
|
|
456
|
+
* @returns {ProgressBar}
|
|
457
|
+
*/
|
|
458
|
+
export function progress(options: ProgressOptions): ProgressBar;
|
|
459
|
+
/**
|
|
460
|
+
* Asks a question and returns the answer. With `validate`, it keeps asking
|
|
461
|
+
* until the answer is valid.
|
|
462
|
+
*
|
|
463
|
+
* @example
|
|
464
|
+
* const name = await cli.prompt("Project name?", { default: "my-app" });
|
|
465
|
+
* const age = await cli.prompt("Age?", {
|
|
466
|
+
* validate: (answer) => /^\d+$/.test(answer) || "Please enter a number",
|
|
467
|
+
* });
|
|
468
|
+
*
|
|
469
|
+
* @param {string} question
|
|
470
|
+
* @param {PromptOptions} [options]
|
|
471
|
+
* @returns {Promise<string>} Trimmed.
|
|
472
|
+
*/
|
|
473
|
+
export function prompt(question: string, options?: PromptOptions): Promise<string>;
|
|
474
|
+
/**
|
|
475
|
+
* Asks for a secret without showing it; each character appears as `*`.
|
|
476
|
+
*
|
|
477
|
+
* @example
|
|
478
|
+
* const token = await cli.password("API token?");
|
|
479
|
+
*
|
|
480
|
+
* @param {string} question
|
|
481
|
+
* @param {{ mask?: string, input?: NodeJS.ReadStream, output?: NodeJS.WriteStream }} [options] `mask: ""` shows nothing at all.
|
|
482
|
+
* @returns {Promise<string>}
|
|
483
|
+
*/
|
|
484
|
+
export function password(question: string, options?: {
|
|
485
|
+
mask?: string;
|
|
486
|
+
input?: NodeJS.ReadStream;
|
|
487
|
+
output?: NodeJS.WriteStream;
|
|
488
|
+
}): Promise<string>;
|
|
489
|
+
/**
|
|
490
|
+
* Asks a yes/no question. Understands `y`, `yes`, `o`, `oui`, `true`, `1`
|
|
491
|
+
* and their opposites; an empty answer gives the default.
|
|
492
|
+
*
|
|
493
|
+
* @example
|
|
494
|
+
* if (await cli.confirm("Delete 42 files?")) await cleanup();
|
|
495
|
+
*
|
|
496
|
+
* @param {string} question
|
|
497
|
+
* @param {ConfirmOptions} [options]
|
|
498
|
+
* @returns {Promise<boolean>}
|
|
499
|
+
*/
|
|
500
|
+
export function confirm(question: string, options?: ConfirmOptions): Promise<boolean>;
|
|
501
|
+
/**
|
|
502
|
+
* Lets the user pick one choice with the arrow keys and Enter. Without an
|
|
503
|
+
* interactive terminal, it prints a numbered list and reads a number.
|
|
504
|
+
*
|
|
505
|
+
* @example
|
|
506
|
+
* const framework = await cli.select("Framework?", ["Express", "Fastify", "Koa"]);
|
|
507
|
+
* const plan = await cli.select("Plan?", [
|
|
508
|
+
* { label: "Free", value: "free", hint: "0 €" },
|
|
509
|
+
* { label: "Pro", value: "pro", hint: "9 €/month" },
|
|
510
|
+
* ]);
|
|
511
|
+
*
|
|
512
|
+
* @template [V=string]
|
|
513
|
+
* @param {string} question
|
|
514
|
+
* @param {Array<Choice<V>>} choices
|
|
515
|
+
* @param {SelectOptions} [options]
|
|
516
|
+
* @returns {Promise<V>}
|
|
517
|
+
*/
|
|
518
|
+
export function select<V = string>(question: string, choices: Array<Choice<V>>, options?: SelectOptions): Promise<V>;
|
|
519
|
+
/**
|
|
520
|
+
* Lets the user pick several choices: arrows to move, Space to toggle, `a`
|
|
521
|
+
* for all, Enter to confirm.
|
|
522
|
+
*
|
|
523
|
+
* @example
|
|
524
|
+
* const features = await cli.multiselect("Features?", ["TypeScript", "ESLint", "Tests", "Docker"], { min: 1 });
|
|
525
|
+
*
|
|
526
|
+
* @template [V=string]
|
|
527
|
+
* @param {string} question
|
|
528
|
+
* @param {Array<Choice<V>>} choices
|
|
529
|
+
* @param {SelectOptions} [options]
|
|
530
|
+
* @returns {Promise<V[]>} In list order.
|
|
531
|
+
*/
|
|
532
|
+
export function multiselect<V = string>(question: string, choices: Array<Choice<V>>, options?: SelectOptions): Promise<V[]>;
|
|
533
|
+
/**
|
|
534
|
+
* Parses command-line arguments from a schema, and types the result:
|
|
535
|
+
* `flags.port` is a `number`. Handles short aliases, defaults, required
|
|
536
|
+
* flags, allowed values, repeated flags and `--no-flag`, and generates
|
|
537
|
+
* `--help`. A typo gets a "Did you mean...?" suggestion.
|
|
538
|
+
*
|
|
539
|
+
* @example
|
|
540
|
+
* // node server.js --port 8080 -v --tag api --tag web public/
|
|
541
|
+
* const { flags, positionals } = cli.args({
|
|
542
|
+
* port: { type: "number", short: "p", default: 3000, description: "Port to listen on" },
|
|
543
|
+
* verbose: { type: "boolean", short: "v" },
|
|
544
|
+
* tag: { type: "string", multiple: true },
|
|
545
|
+
* env: { type: "string", choices: ["dev", "prod"], default: "dev" },
|
|
546
|
+
* }, { description: "Start the web server", version: "1.0.0" });
|
|
547
|
+
* // flags: { port: 8080, verbose: true, tag: ["api", "web"], env: "dev" }
|
|
548
|
+
*
|
|
549
|
+
* @template {Record<string, FlagSpec>} S
|
|
550
|
+
* @param {S} schema
|
|
551
|
+
* @param {ArgsOptions} [options]
|
|
552
|
+
* @returns {ParsedArgs<S>}
|
|
553
|
+
* @throws {TypeError} For unknown flags, bad numbers, missing required flags or values not in `choices`. The message is ready to show.
|
|
554
|
+
*/
|
|
555
|
+
export function args<S extends Record<string, FlagSpec>>(schema: S, options?: ArgsOptions): ParsedArgs<S>;
|
|
556
|
+
/**
|
|
557
|
+
* Is someone at the keyboard? True when stdin and stdout are terminals and
|
|
558
|
+
* we're not in CI.
|
|
559
|
+
*
|
|
560
|
+
* @example
|
|
561
|
+
* const name = cli.isInteractive() ? await cli.prompt("Name?") : "default";
|
|
562
|
+
*
|
|
563
|
+
* @returns {boolean}
|
|
564
|
+
*/
|
|
565
|
+
export function isInteractive(): boolean;
|
|
566
|
+
/**
|
|
567
|
+
* The terminal size, or 80x24 when it's unknown.
|
|
568
|
+
*
|
|
569
|
+
* @returns {{ columns: number, rows: number }}
|
|
570
|
+
*/
|
|
571
|
+
export function size(): {
|
|
572
|
+
columns: number;
|
|
573
|
+
rows: number;
|
|
574
|
+
};
|
|
575
|
+
/**
|
|
576
|
+
* Clears the screen. Does nothing when stdout isn't a terminal.
|
|
577
|
+
*
|
|
578
|
+
* @returns {void}
|
|
579
|
+
*/
|
|
580
|
+
export function clear(): void;
|
|
581
|
+
import readline = require("node:readline");
|
|
582
|
+
//# sourceMappingURL=Cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cli.d.ts","sourceRoot":"","sources":["../../src/Cli.js"],"names":[],"mappings":";;;0BAuBa,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM;;;;;;;;SAM3D,MAAM,GAAG,MAAM;;;;;;;;;;;;;;;;sBAIP,OAAO,OAAO,GAAG,KAAK,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAkBtB,MAAM;YAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAmBjC,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO;;;;UAC1B,MAAM,OAAO;;;;aACb,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO;;;;UAC1B,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO;;;;UAC1B,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO;;;;UAC1B,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO;;;;UAC1B,MAAM;gBACN,OAAO;;;;;;;;;WAMP,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAYN,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,WAAW;;;;YAChD,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,WAAW;;;;UAC9C,MAAM,WAAW;WACjB,MAAM;;;;WACN,MAAM;;;;aACN,MAAM;;;;;;;;;;;;;yBAOG,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAgB1D,CAAC,aACF,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAgBtE,QAAQ,GAAG,QAAQ,GAAG,SAAS;;;;;;;;cAE/B,OAAO;;;;;;;;;;;;;;;;;;;;;sBASG,CAAC,SAAX,QAAS,IACV,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GAAG,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,SAAS,GAAG,OAAO,GAAG,CAAC,SAAS;IAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;CAAE,GAAG,CAAC,GAAG,MAAM;;;;wBAK3G,CAAC,SAA3B,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAE,IAC1B,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,GAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAiB5K,CAAC,SAA3B,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAE;WAEzB,WAAW,CAAC,CAAC,CAAC;;;;iBACd,MAAM,EAAE;;;;UACR,MAAM,MAAM;;;;;;yBAqYb;IAAE,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;KAAE,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE;AA3S9J;;;;;;;;;;;;;;;;;;;GAmBG;AACH,4BAJW,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,EAAE,YAC5C,YAAY,GACV,MAAM,CAsDlB;AAED;;;;;;;;;;;;;GAaG;AACH,0BAJW,MAAM,YACN,UAAU,GACR,MAAM,CAsBlB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,+BAJW,MAAM,YACN,cAAc,GACZ,OAAO,CA+DnB;AAED;;;;;;;;;;;;;;GAcG;AACH,kCAHW,eAAe,GACb,WAAW,CA0EvB;AAgED;;;;;;;;;;;;;GAaG;AACH,iCAJW,MAAM,YACN,aAAa,GACX,OAAO,CAAC,MAAM,CAAC,CAc3B;AAED;;;;;;;;;GASG;AACH,mCAJW,MAAM,YACN;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAA;CAAE,GACvE,OAAO,CAAC,MAAM,CAAC,CAiD3B;AAED;;;;;;;;;;GAUG;AACH,kCAJW,MAAM,YACN,cAAc,GACZ,OAAO,CAAC,OAAO,CAAC,CAe5B;AAmGD;;;;;;;;;;;;;;;;GAgBG;AACH,uBANc,CAAC,qBACJ,MAAM,WACN,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAChB,aAAa,GACX,OAAO,CAAC,CAAC,CAAC,CAkBtB;AAED;;;;;;;;;;;;GAYG;AACH,4BANc,CAAC,qBACJ,MAAM,WACN,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAChB,aAAa,GACX,OAAO,CAAC,CAAC,EAAE,CAAC,CAmBxB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBANwC,CAAC,SAA3B,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAE,UAC5B,CAAC,YACD,WAAW,GACT,UAAU,CAAC,CAAC,CAAC,CAgFzB;AAED;;;;;;;;GAQG;AACH,iCAFa,OAAO,CAInB;AAED;;;;GAIG;AACH,wBAFa;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAI7C;AAED;;;;GAIG;AACH,yBAFa,IAAI,CAIhB"}
|