@ix-xs/node-comfort 1.2.0 → 2.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.
Files changed (78) hide show
  1. package/CHANGELOG.md +340 -0
  2. package/README.md +137 -548
  3. package/index.js +80 -35
  4. package/package.json +161 -33
  5. package/src/Arr.js +1050 -418
  6. package/src/Async.js +817 -0
  7. package/src/Cache.js +433 -0
  8. package/src/Checker.js +1202 -539
  9. package/src/Cli.js +1293 -0
  10. package/src/Color.js +556 -0
  11. package/src/Crypto.js +1082 -0
  12. package/src/Emitter.js +356 -0
  13. package/src/Env.js +689 -0
  14. package/src/FS.js +1626 -894
  15. package/src/Func.js +823 -356
  16. package/src/Http.js +700 -0
  17. package/src/Id.js +568 -200
  18. package/src/Logger.js +963 -378
  19. package/src/Num.js +965 -360
  20. package/src/Obj.js +1077 -379
  21. package/src/SQLite.js +1629 -1005
  22. package/src/Schema.js +2101 -0
  23. package/src/Str.js +1209 -432
  24. package/src/Sys.js +654 -0
  25. package/src/Time.js +1533 -440
  26. package/src/Utils.js +342 -325
  27. package/src/errors.js +335 -0
  28. package/src/internal/shared.js +415 -0
  29. package/types/index.d.ts +735 -526
  30. package/types/src/Arr.d.ts +533 -145
  31. package/types/src/Arr.d.ts.map +1 -1
  32. package/types/src/Async.d.ts +372 -0
  33. package/types/src/Async.d.ts.map +1 -0
  34. package/types/src/Cache.d.ts +221 -0
  35. package/types/src/Cache.d.ts.map +1 -0
  36. package/types/src/Checker.d.ts +651 -232
  37. package/types/src/Checker.d.ts.map +1 -1
  38. package/types/src/Cli.d.ts +664 -0
  39. package/types/src/Cli.d.ts.map +1 -0
  40. package/types/src/Color.d.ts +300 -0
  41. package/types/src/Color.d.ts.map +1 -0
  42. package/types/src/Crypto.d.ts +620 -0
  43. package/types/src/Crypto.d.ts.map +1 -0
  44. package/types/src/Emitter.d.ts +189 -0
  45. package/types/src/Emitter.d.ts.map +1 -0
  46. package/types/src/Env.d.ts +412 -0
  47. package/types/src/Env.d.ts.map +1 -0
  48. package/types/src/FS.d.ts +717 -238
  49. package/types/src/FS.d.ts.map +1 -1
  50. package/types/src/Func.d.ts +508 -135
  51. package/types/src/Func.d.ts.map +1 -1
  52. package/types/src/Http.d.ts +444 -0
  53. package/types/src/Http.d.ts.map +1 -0
  54. package/types/src/Id.d.ts +199 -66
  55. package/types/src/Id.d.ts.map +1 -1
  56. package/types/src/Logger.d.ts +414 -46
  57. package/types/src/Logger.d.ts.map +1 -1
  58. package/types/src/Num.d.ts +514 -137
  59. package/types/src/Num.d.ts.map +1 -1
  60. package/types/src/Obj.d.ts +453 -104
  61. package/types/src/Obj.d.ts.map +1 -1
  62. package/types/src/SQLite.d.ts +754 -308
  63. package/types/src/SQLite.d.ts.map +1 -1
  64. package/types/src/Schema.d.ts +1189 -0
  65. package/types/src/Schema.d.ts.map +1 -0
  66. package/types/src/Str.d.ts +617 -166
  67. package/types/src/Str.d.ts.map +1 -1
  68. package/types/src/Sys.d.ts +314 -0
  69. package/types/src/Sys.d.ts.map +1 -0
  70. package/types/src/Time.d.ts +759 -204
  71. package/types/src/Time.d.ts.map +1 -1
  72. package/types/src/Utils.d.ts +158 -102
  73. package/types/src/Utils.d.ts.map +1 -1
  74. package/types/src/errors.d.ts +316 -0
  75. package/types/src/errors.d.ts.map +1 -0
  76. package/types/src/internal/shared.d.ts +123 -0
  77. package/types/src/internal/shared.d.ts.map +1 -0
  78. package/types/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Checker.d.ts","sourceRoot":"","sources":["../../src/Checker.js"],"names":[],"mappings":"AAUE;;;;;;;;;GASG;AACH,+BAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;;GAUG;AACH,gCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,gCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,iCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,+BAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;;GAUG;AACH,kCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,uCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;;;;;GAaG;AACH,gCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;;;;GAYG;AACH,qCAHW,GAAC,GACC,OAAO,CAMnB;AAED;;;;;;;;;;GAUG;AACH,iCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,gCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;GAQG;AACH,gCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,gCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,mCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,8BAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;;GAUG;AACH,6BAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,mCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;;GAUG;AACH,iCAHW,GAAC,GACC,OAAO,CASnB;AAED;;;;;;;;;GASG;AACH,gCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;;;GAWG;AACH,8BAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,mCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,6BAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,6BAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;GAKG;AACH,iCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;GAKG;AACH,iCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;;;;GAYG;AACH,kCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;GAKG;AACH,gCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;GAKG;AACH,oCAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;;;;GAYG;AACH,+BAHW,GAAC,GACC,OAAO,CAInB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,+BAHW,GAAC,GACC,OAAO,CAQnB;AAED;;;;;;;;;;;;GAYG;AACH,+BAHW,GAAC,GACC,OAAO,CAKnB;AAED;;;;;;;;;;GAUG;AACH,6BAJW,GAAC,YACD;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACtB,OAAO,CAWnB;AAED;;;;;;;;GAQG;AACH,8BAHW,GAAC,GACC,OAAO,CAKnB;AAED;;;;;;;;;GASG;AACH,8BAHW,GAAC,GACC,OAAO,CAUnB;AAED;;;;;;;;;;;GAWG;AACH,iCAHW,GAAC,GACC,OAAO,CAMnB"}
1
+ {"version":3,"file":"Checker.d.ts","sourceRoot":"","sources":["../../src/Checker.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,664 @@
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.
304
+ */
305
+ choices?: readonly string[] | readonly number[] | undefined;
306
+ /**
307
+ * An environment variable to read when the flag isn't given, like `"PORT"`. The command line wins, then the variable, then `default`.
308
+ */
309
+ env?: string | undefined;
310
+ /**
311
+ * Shown in `--help`.
312
+ */
313
+ description?: string | undefined;
314
+ };
315
+ /**
316
+ * The type of a flag's value.
317
+ */
318
+ export type FlagValue<F extends FlagSpec> = F["type"] extends "boolean" ? boolean : F extends {
319
+ choices: readonly (infer C)[];
320
+ } ? C : F["type"] extends "number" ? number : string;
321
+ /**
322
+ * The parsed flags, typed from the schema.
323
+ */
324
+ export type ParsedFlags<S extends Record<string, FlagSpec>> = { [K in keyof S]: S[K] extends {
325
+ multiple: true;
326
+ } ? Array<FlagValue<S[K]>> : S[K] extends {
327
+ default: any;
328
+ } | {
329
+ required: true;
330
+ } | {
331
+ type: "boolean";
332
+ } ? FlagValue<S[K]> : FlagValue<S[K]> | undefined; };
333
+ /**
334
+ * Options for `args()`.
335
+ */
336
+ export type ArgsOptions = {
337
+ /**
338
+ * What to parse. Defaults to `process.argv.slice(2)`.
339
+ */
340
+ argv?: string[] | undefined;
341
+ /**
342
+ * Program name in the help. Defaults to the script name.
343
+ */
344
+ name?: string | undefined;
345
+ /**
346
+ * Shown at the top of the help.
347
+ */
348
+ description?: string | undefined;
349
+ /**
350
+ * A usage line, like `"<file> [options]"`.
351
+ */
352
+ usage?: string | undefined;
353
+ /**
354
+ * Subcommands and what they do, like `{ build: "Build the project" }`. The first argument, when there is one, must be one of them and comes back as `command`. They share the flags of the program.
355
+ */
356
+ commands?: Record<string, string> | undefined;
357
+ /**
358
+ * Command lines shown at the end of the help.
359
+ */
360
+ examples?: string[] | undefined;
361
+ /**
362
+ * Answer `--help` and `-h` by printing the help and exiting. Defaults to `true`.
363
+ */
364
+ help?: boolean | undefined;
365
+ /**
366
+ * Answer `--version` with this version.
367
+ */
368
+ version?: string | undefined;
369
+ /**
370
+ * Reject unknown flags, with a suggestion. Defaults to `true`.
371
+ */
372
+ strict?: boolean | undefined;
373
+ /**
374
+ * Where `env` flags are read from. Defaults to `process.env`.
375
+ */
376
+ env?: Record<string, string | undefined> | undefined;
377
+ };
378
+ /**
379
+ * What `args()` returns.
380
+ */
381
+ export type ParsedArgs<S extends Record<string, FlagSpec>> = {
382
+ flags: ParsedFlags<S>;
383
+ /**
384
+ * Arguments that aren't flags.
385
+ */
386
+ positionals: string[];
387
+ /**
388
+ * The subcommand, when `commands` was given.
389
+ */
390
+ command: string | undefined;
391
+ /**
392
+ * The generated help text.
393
+ */
394
+ help: () => string;
395
+ };
396
+ /**
397
+ * Options for `spin()`: the spinner's, plus what to say at the end.
398
+ */
399
+ export type SpinOptions<T> = SpinnerOptions & {
400
+ success?: string | ((result: T) => string);
401
+ fail?: string | ((error: unknown) => string);
402
+ };
403
+ /**
404
+ * Options for `tree()`.
405
+ */
406
+ export type TreeOptions = {
407
+ /**
408
+ * Draw with `|`, `+` and `-` instead of box characters.
409
+ */
410
+ ascii?: boolean | undefined;
411
+ };
412
+ /**
413
+ * One line reader per input stream, shared by every prompt, so piped lines
414
+ * that arrive early are queued instead of lost.
415
+ */
416
+ export type _LineReader = {
417
+ rl: import("node:readline").Interface;
418
+ lines: string[];
419
+ waiting: Array<{
420
+ resolve: (line: string) => void;
421
+ reject: (error: Error) => void;
422
+ }>;
423
+ closed: boolean;
424
+ };
425
+ /**
426
+ * Draws a table from an array of objects (keys become columns) or an array
427
+ * of arrays. Colors, emoji and CJK characters line up correctly.
428
+ *
429
+ * @example
430
+ * console.log(cli.table([
431
+ * { name: "Ada", role: "admin", logins: 42 },
432
+ * { name: "Bob", role: "user", logins: 7 },
433
+ * ]));
434
+ * // ╭──────┬───────┬────────╮
435
+ * // │ name │ role │ logins │
436
+ * // ├──────┼───────┼────────┤
437
+ * // │ Ada │ admin │ 42 │
438
+ * // │ Bob │ user │ 7 │
439
+ * // ╰──────┴───────┴────────╯
440
+ *
441
+ * @param {Array<Record<string, unknown>> | unknown[][]} rows
442
+ * @param {TableOptions} [options]
443
+ * @returns {string}
444
+ */
445
+ export function table(rows: Array<Record<string, unknown>> | unknown[][], options?: TableOptions): string;
446
+ /**
447
+ * Draws a box around text.
448
+ *
449
+ * @example
450
+ * console.log(cli.box("Server ready\nhttp://localhost:3000", { title: "my-app", borderColor: "green" }));
451
+ * // ╭─ my-app ────────────────╮
452
+ * // │ Server ready │
453
+ * // │ http://localhost:3000 │
454
+ * // ╰─────────────────────────╯
455
+ *
456
+ * @param {string} text
457
+ * @param {BoxOptions} [options]
458
+ * @returns {string}
459
+ */
460
+ export function box(text: string, options?: BoxOptions): string;
461
+ /**
462
+ * Draws nested data as a tree, like the `tree` command does for folders.
463
+ * Keys are branches. A value that is an object or an array opens a level,
464
+ * `null` or `true` makes a plain leaf, anything else is shown after the key.
465
+ *
466
+ * @example
467
+ * console.log(cli.tree({
468
+ * src: { "index.js": null, lib: ["a.js", "b.js"] },
469
+ * "package.json": "1.2 kB",
470
+ * }));
471
+ * // ├── src
472
+ * // │ ├── index.js
473
+ * // │ └── lib
474
+ * // │ ├── a.js
475
+ * // │ └── b.js
476
+ * // └── package.json: 1.2 kB
477
+ *
478
+ * @param {Record<string, unknown> | unknown[]} data
479
+ * @param {TreeOptions} [options]
480
+ * @returns {string}
481
+ */
482
+ export function tree(data: Record<string, unknown> | unknown[], options?: TreeOptions): string;
483
+ /**
484
+ * A spinner for work in progress. Call `.start()`, then finish with
485
+ * `.succeed()`, `.fail()`, `.warn()`, `.info()` or `.stop()`.
486
+ *
487
+ * @example
488
+ * const spin = cli.spinner("Downloading").start();
489
+ * try {
490
+ * await download();
491
+ * spin.succeed("Downloaded 12 files");
492
+ * } catch (error) {
493
+ * spin.fail(`Download failed: ${error.message}`);
494
+ * }
495
+ *
496
+ * @param {string} [text=""]
497
+ * @param {SpinnerOptions} [options]
498
+ * @returns {Spinner} Not started yet.
499
+ */
500
+ export function spinner(text?: string, options?: SpinnerOptions): Spinner;
501
+ /**
502
+ * Shows a spinner while some work runs, then `✔` or `✖` depending on how it
503
+ * ended. Resolves with the result of the work, or rejects with its error.
504
+ *
505
+ * @example
506
+ * const users = await cli.spin("Loading users", () => db.getAll("users"));
507
+ * await cli.spin("Deploying", deploy(), {
508
+ * success: (url) => `Deployed to ${url}`,
509
+ * fail: (error) => `Deploy failed: ${error.message}`,
510
+ * });
511
+ *
512
+ * @template T
513
+ * @param {string} text
514
+ * @param {Promise<T> | ((spinner: Spinner) => T | Promise<T>)} task A promise, or a function that gets the spinner so it can update the text.
515
+ * @param {SpinOptions<T>} [options]
516
+ * @returns {Promise<T>}
517
+ */
518
+ export function spin<T>(text: string, task: Promise<T> | ((spinner: Spinner) => T | Promise<T>), options?: SpinOptions<T>): Promise<T>;
519
+ /**
520
+ * A progress bar with percentage, ETA and speed. It redraws at most every
521
+ * 50 ms, so calling `tick()` in a tight loop is fine.
522
+ *
523
+ * @example
524
+ * const bar = cli.progress({ total: files.length, format: "{bar} {percent}% {label}" });
525
+ * for (const file of files) {
526
+ * await upload(file);
527
+ * bar.tick(1, file.name);
528
+ * }
529
+ * bar.stop();
530
+ *
531
+ * @param {ProgressOptions} options
532
+ * @returns {ProgressBar}
533
+ */
534
+ export function progress(options: ProgressOptions): ProgressBar;
535
+ /**
536
+ * Asks a question and returns the answer. With `validate`, it keeps asking
537
+ * until the answer is valid.
538
+ *
539
+ * @example
540
+ * const name = await cli.prompt("Project name?", { default: "my-app" });
541
+ * const age = await cli.prompt("Age?", {
542
+ * validate: (answer) => /^\d+$/.test(answer) || "Please enter a number",
543
+ * });
544
+ *
545
+ * @param {string} question
546
+ * @param {PromptOptions} [options]
547
+ * @returns {Promise<string>} Trimmed.
548
+ */
549
+ export function prompt(question: string, options?: PromptOptions): Promise<string>;
550
+ /**
551
+ * Asks for a secret without showing it; each character appears as `*`.
552
+ *
553
+ * @example
554
+ * const token = await cli.password("API token?");
555
+ *
556
+ * @param {string} question
557
+ * @param {{ mask?: string, input?: NodeJS.ReadStream, output?: NodeJS.WriteStream }} [options] `mask: ""` shows nothing at all.
558
+ * @returns {Promise<string>}
559
+ */
560
+ export function password(question: string, options?: {
561
+ mask?: string;
562
+ input?: NodeJS.ReadStream;
563
+ output?: NodeJS.WriteStream;
564
+ }): Promise<string>;
565
+ /**
566
+ * Asks a yes/no question. Understands `y`, `yes`, `o`, `oui`, `true`, `1`
567
+ * and their opposites; an empty answer gives the default.
568
+ *
569
+ * @example
570
+ * if (await cli.confirm("Delete 42 files?")) await cleanup();
571
+ *
572
+ * @param {string} question
573
+ * @param {ConfirmOptions} [options]
574
+ * @returns {Promise<boolean>}
575
+ */
576
+ export function confirm(question: string, options?: ConfirmOptions): Promise<boolean>;
577
+ /**
578
+ * Lets the user pick one choice with the arrow keys and Enter. Without an
579
+ * interactive terminal, it prints a numbered list and reads a number.
580
+ *
581
+ * @example
582
+ * const framework = await cli.select("Framework?", ["Express", "Fastify", "Koa"]);
583
+ * const plan = await cli.select("Plan?", [
584
+ * { label: "Free", value: "free", hint: "0 €" },
585
+ * { label: "Pro", value: "pro", hint: "9 €/month" },
586
+ * ]);
587
+ *
588
+ * @template [V=string]
589
+ * @param {string} question
590
+ * @param {Array<Choice<V>>} choices
591
+ * @param {SelectOptions} [options]
592
+ * @returns {Promise<V>}
593
+ */
594
+ export function select<V = string>(question: string, choices: Array<Choice<V>>, options?: SelectOptions): Promise<V>;
595
+ /**
596
+ * Lets the user pick several choices: arrows to move, Space to toggle, `a`
597
+ * for all, Enter to confirm.
598
+ *
599
+ * @example
600
+ * const features = await cli.multiselect("Features?", ["TypeScript", "ESLint", "Tests", "Docker"], { min: 1 });
601
+ *
602
+ * @template [V=string]
603
+ * @param {string} question
604
+ * @param {Array<Choice<V>>} choices
605
+ * @param {SelectOptions} [options]
606
+ * @returns {Promise<V[]>} In list order.
607
+ */
608
+ export function multiselect<V = string>(question: string, choices: Array<Choice<V>>, options?: SelectOptions): Promise<V[]>;
609
+ /**
610
+ * Parses command-line arguments from a schema, and types the result:
611
+ * `flags.port` is a `number`. Handles short aliases, defaults, required
612
+ * flags, allowed values, repeated flags, `--no-flag`, environment variables
613
+ * as a fallback and subcommands, and generates `--help`. A typo gets a
614
+ * "Did you mean...?" suggestion.
615
+ *
616
+ * @example
617
+ * // node server.js --port 8080 -v --tag api --tag web public/
618
+ * const { flags, positionals } = cli.args({
619
+ * port: { type: "number", short: "p", default: 3000, env: "PORT", description: "Port to listen on" },
620
+ * verbose: { type: "boolean", short: "v" },
621
+ * tag: { type: "string", multiple: true },
622
+ * env: { type: "string", choices: ["dev", "prod"], default: "dev" },
623
+ * }, { description: "Start the web server", version: "1.0.0" });
624
+ * // flags: { port: 8080, verbose: true, tag: ["api", "web"], env: "dev" }
625
+ *
626
+ * // node tool.js build --watch
627
+ * const { command, flags: buildFlags } = cli.args({ watch: { type: "boolean" } }, {
628
+ * commands: { build: "Build the project", serve: "Start the dev server" },
629
+ * });
630
+ * // command: "build"
631
+ *
632
+ * @template {Record<string, FlagSpec>} S
633
+ * @param {S} schema
634
+ * @param {ArgsOptions} [options]
635
+ * @returns {ParsedArgs<S>}
636
+ * @throws {TypeError} For unknown flags or commands, bad numbers, missing required flags or values not in `choices`. The message is ready to show.
637
+ */
638
+ export function args<S extends Record<string, FlagSpec>>(schema: S, options?: ArgsOptions): ParsedArgs<S>;
639
+ /**
640
+ * Is someone at the keyboard? True when stdin and stdout are terminals and
641
+ * we're not in CI.
642
+ *
643
+ * @example
644
+ * const name = cli.isInteractive() ? await cli.prompt("Name?") : "default";
645
+ *
646
+ * @returns {boolean}
647
+ */
648
+ export function isInteractive(): boolean;
649
+ /**
650
+ * The terminal size, or 80x24 when it's unknown.
651
+ *
652
+ * @returns {{ columns: number, rows: number }}
653
+ */
654
+ export function size(): {
655
+ columns: number;
656
+ rows: number;
657
+ };
658
+ /**
659
+ * Clears the screen. Does nothing when stdout isn't a terminal.
660
+ *
661
+ * @returns {void}
662
+ */
663
+ export function clear(): void;
664
+ //# sourceMappingURL=Cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cli.d.ts","sourceRoot":"","sources":["../../src/Cli.js"],"names":[],"mappings":"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"}